'use strict';
/** Support comparison of current location to known locations
* @module domains
*/
import {host} from './host';
import hashCode from './hash-code';
/** Set DEBUG variable from environmental variable */
window.DEBUG = process.env.DEBUG === 'true'; // eslint-disable-line no-process-env
// NOTE: Unit tests use the exported class, while Site.js uses the exported instance
//
// Exports
//
/** An object that knows how to interpret the hostname of the current site.
*
* We serve our website on multiple domains, and sometimes we do things
* differently based on which domain.
*/
export class Domains {
/** A list of domains (uses hash references for security by obfuscation)
* Primary domain must be first in the array.
* @type {array.<string>}
* @private
* @see [Domains](https://confluence.ad.datafoundry.com/x/SICoAw)
*/
_domainHashes = [
/* eslint-disable no-magic-numbers, capitalized-comments */
2132732992, // goldenfrog.com
-774515750, // goldenfrog.website
-1048367172, // goldenfrog.company
2132731858, // goldenfrog.biz
-2009412154, // goldenfrog.ch
1140055860, // goldenfrog.online
1606025698, // vyprvpn.com
-2025777710, // vypr-accelerator.net
-2025787978, // vypr-accelerator.com
-1209649860, // waiguoaccelerator.com
-1209639592, // waiguoaccelerator.net
-1519882327, // acceleratorcn.com
-1519872059, // acceleratorcn.net
-360599621, // fanqiangchina.com
-360589353, // fanqiangchina.net
1879149894, // gf-app.com
1798951468, // gf-official.com
106728242, // jinwa-official.com
1650151320, // fanqiang-cn.net
-1519883461, // acceleratorcn.biz
-1321475586, // vypr-accelerator.online
403994334, // escapewall.com
1625259801, // vypr-accelerator.info
-360588002, // fanqiangchina.org
128465798, // acceleratorcn.info
-425610071, // acceleraorcn.net
1752086852, // acceleratorcn.co
-1519870708, // acceleratorcn.org
-412255549, // acceleratorcn.website
-926468309, // acceleratorcn.online
1874314647, // vypr-accelerator.co
-567400999, // fanqiangchina.online
2128896469, // fanqiangchina.website
-704368910, // fanqiangchina.co
-316115631, // waiguoaccelerator.co
-1209638241, // waiguoaccelerator.org
-1560664904, // waiguoaccelerator.online
1402486486, // waiguoaccelerator.website
1607519536, // fanqiangcn.org
1607518185, // fanqiangcn.net
725705863, // fanqiangcn.online
-734463769, // fanqiangcn.website
1575875744, // fanqiangcn.co
1650141052, // fanqiang-cn.com
1671019043, // vyprfq.com
-963337945, // vyprfanqiang.com
-2027748829, // vyprescapewall.com
-1520878322, // vyprescapewallcn.com
-715277810, // vyprcnescapewall.com
1927897668, // vypracceleratorcn.com
-421313970, // vyprcnaccelerator.com
1403050709, // vyproverthewall.com
-860020662, // vyprcnoverthewall.com
1237561664, // vyproverthewallcn.com
1830391804, // vyprtizi.com
282767521, // vyprtizichina.com
-404506457, // vyprtizicn.com
1671029311, // vyprfq.net
-963327677, // vyprfanqiang.net
-2027738561, // vyprescapewall.net
-1520868054, // vyprescapewallcn.net
-715267542, // vyprcnescapewall.net
1927907936, // vypracceleratorcn.net
-421303702, // vyprcnaccelerator.net
1403060977, // vyproverthewall.net
-860010394, // vyprcnoverthewall.net
1237571932, // vyproverthewallcn.net
1830402072, // vyprtizi.net
282777789, // vyprtizichina.net
-404496189, // vyprtizicn.net
1671030662, // vyprfq.org
-963326326, // vyprfanqiang.org
-2027737210, // vyprescapewall.org
-1520866703, // vyprescapewallcn.org
-715266191, // vyprcnescapewall.org
1927909287, // vypracceleratorcn.org
-421302351, // vyprcnaccelerator.org
1403062328, // vyproverthewall.org
-860009043, // vyprcnoverthewall.org
1237573283, // vyproverthewallcn.org
1830403423, // vyprtizi.org
282779140, // vyprtizichina.org
-404494838, // vyprtizicn.org
-498405378, // getvyprcn1.com
-497481857, // getvyprcn2.com
-496558336, // getvyprcn3.com
1624615400, // getvyprchina1.com
1625538921, // getvyprchina2.com
1626462442, // getvyprchina3.com
98592553, // vyprescapewallcn1.com
99516074, // vyprescapewallcn2.com
100439595, // vyprescapewallcn3.com
101363116, // vyprescapewallcn4.com
103210158, // vyprescapewallcn6.com
2125409691, // unblockwallcn1.com
2126333212, // unblockwallcn2.com
2127256733, // unblockwallcn3.com
908751355, // vyprtizi1.com
909674876, // vyprtizi2.com
910598397, // vyprtizi3.com
346382000, // vyprtizicn1.com
347305521, // vyprtizicn2.com
102286637, // vyprescapewallcn5.com
1022565535, // getvyprcn-vkh.com
-836811113, // getvyprcn-omi.com
824603166, // getvyprcn-qij.com
751645007, // getvyprcn-qfx.com
-838392384, // getvyprcn-ewf.com
308354927, // getvyprcn-pvi.com
-271021615, // getvyprcn-kga.com
1664412630, // getvyprcn-wbu.com
1351224695, // getvyprchina-dgx.com
302167943, // getvyprchina-qrf.com
-87292148, // getvyprchina-gnq.com
-1648638822, // getchinavypr-zui.com
504949046, // getchinavypr-nrn.com
-145475509, // getchinavypr-wpx.com
-1531148988, // getchinavypr-bsi.com
335678932, // getchinavypr-xbr.com
-1982750757, // getchinavypr-bcp.com
1446109661, // unblockwallcn-tsm.com
-874103966, // unblockwallcn-mek.com
1467350644, // unblockwallcn-tte.com
-244920394, // unblockwallcn-dfi.com
-1510675706, // unblockwallcn-vde.com
-583209360, // unblockwall-xfz.com
-183324767, // unblockwall-xty.com
1888664378, // unblockwall-gtc.com
526142028, // unblockwall-aho.com
-1488651919, // unblockwall-czd.com
-56802390, // unblockwall-xyg.com
-1158006496, // unblockcnwall-hzc.com
1050397986, // unblockcnwall-atf.com
1362282313, // unblockcnwall-kud.com
-883063009, // unblockcnwall-ryw.com
-1747149790, // unblockcnwall-vur.com
-968090045, // unblockcnwall-dfv.com
-490071692, // unblockchinawall-ukw.com
-605772043, // takebackyourinternet.com
-605761775, // takebackyourinternet.net
-605760424, // takebackyourinternet.org
134247926, // bondwidth.com
-1522139144, // killstreak.io
872426206, // realclearprivacy.biz
-941687949, // realclearprivacy.us
-1990649791, // dtruck.info
-1172587279, // dtruck.org
-824933949, // cloudfront.net
-1213134776, // netrule.net
-255563400, // accelerator-vy.com
-255551781, // accelerator-vy.org
-52700926, // app-vy.com
2103838973, // buy-vy.com
218728952, // buyvy.net
2103850592, // buy-vy.org
87533741, // choosevy.com
-1962894260, // choose-vy.com
87544009, // choosevy.net
-1962883992, // choose-vy.net
-1962882641, // choose-vy.org
-148345299, // get-vy.com
1808645832, // getvy.net
-148333680, // get-vy.org
1697647353, // gotovy.com
1697657621, // gotovy.net
350344451, // gpnservice.com
-641520293, // join-vypr.com
-641510025, // join-vypr.net
1609159884, // phmgmt.com
-1722621929, // purchasevy.com
2051822114, // purchase-vy.com
-1722610310, // purchasevy.org
2051833733, // purchase-vy.org
-306008024, // try-vy.com
1110823277, // tryvy.net
-305996405, // try-vy.org
475964445, // usevy.com
475976064, // usevy.org
1719232701, // vipervpn.com
-770619167, // visitvy.com
1499136664, // visit-vy.com
-770608899, // visitvy.net
1499148283, // visit-vy.org
-1050449110, // vy-app.com
150176242, // vyprapp.org
1914942626, // vypr-china.com
2107687457, // vyprchina.net
-773967741, // vyprofficial.com
-773957473, // vyprofficial.net
-195539846, // vyprofficialchina.com
-195529578, // vyprofficialchina.net
-195528227, // vyprofficialchina.org
619877439, // vysupport.com
/* eslint-enable */
];
/** An instance of the host utility class
* @type {module:host.Host}
* @private
*/
_host;
/** Store private reference to the provided host
* @param {module:host.Host} _host - An instance of the host utility class
*/
constructor(_host) {
this._host = _host;
}
/** Whether the hostname is in one of our known domains
* @param {external:Location.hostname} hostname - URL domain
* @return {boolean}
*/
isOurDomain(hostname) {
const domain = hostname.split('.').splice(-2).join('.').toLowerCase();
// FE-2673/FE-2674: Use `includes`, instead of `indexOf`.
// - Add `!String.includes` to list in `…/templates-hidden/_site.js.html`.
const isOurDomain = (this._domainHashes.indexOf(hashCode(domain)) > -1);
// This is for testing hash code
DEBUG && domain && console.log('Utility: Domains.isAlternateDomain(\"' + domain + '\")', isOurDomain); // eslint-disable-line
return isOurDomain;
}
}
/** Instance of the class of this module
* @type {module:domains.Domains}
*/
export const domains = new Domains(host);