'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);