tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

constants.sub.js (2593B)


      1 const __SERVER__NAME = "{{host}}";
      2 const __PATH = "echo";
      3 
      4 let __SCHEME;
      5 let __PORT;
      6 if (url_has_flag('h2')) {
      7  __SCHEME = 'wss';
      8  __PORT = "{{ports[h2][0]}}";
      9 } else if (url_has_variant('wss') || location.protocol === 'https:') {
     10  __SCHEME = 'wss';
     11  __PORT = "{{ports[wss][0]}}";
     12 } else {
     13  __SCHEME = 'ws';
     14  __PORT = "{{ports[ws][0]}}";
     15 }
     16 
     17 const SCHEME_DOMAIN_PORT = __SCHEME + '://' + __SERVER__NAME + ':' + __PORT;
     18 const SCHEME_CROSSDOMAIN_PORT = __SCHEME + '://' + '{{hosts[alt][www]}}' + ':' + __PORT;
     19 
     20 function url_has_variant(variant) {
     21  const params = new URLSearchParams(location.search);
     22  return params.get(variant) === "";
     23 }
     24 
     25 function url_has_flag(flag) {
     26  const params = new URLSearchParams(location.search);
     27  return params.getAll("wpt_flags").indexOf(flag) !== -1;
     28 }
     29 
     30 function IsWebSocket() {
     31  if (!self.WebSocket) {
     32    assert_true(false, "Browser does not support WebSocket");
     33  }
     34 }
     35 
     36 function CreateWebSocketNonAsciiProtocol(nonAsciiProtocol) {
     37  IsWebSocket();
     38  const url = SCHEME_DOMAIN_PORT + "/" + __PATH;
     39  return new WebSocket(url, nonAsciiProtocol);
     40 }
     41 
     42 function CreateWebSocketWithAsciiSep(asciiWithSep) {
     43  IsWebSocket();
     44  const url = SCHEME_DOMAIN_PORT + "/" + __PATH;
     45  return new WebSocket(url, asciiWithSep);
     46 }
     47 
     48 function CreateWebSocketWithBlockedPort(blockedPort) {
     49  IsWebSocket();
     50  const url = __SCHEME + "://" + __SERVER__NAME + ":" + blockedPort + "/" + __PATH;
     51  return new WebSocket(url);
     52 }
     53 
     54 function CreateWebSocketWithSpaceInUrl(urlWithSpace) {
     55  IsWebSocket();
     56  const url = __SCHEME + "://" + urlWithSpace + ":" + __PORT + "/" + __PATH;
     57  return new WebSocket(url);
     58 }
     59 
     60 function CreateWebSocketWithSpaceInProtocol(protocolWithSpace) {
     61  IsWebSocket();
     62  const url = SCHEME_DOMAIN_PORT + "/" + __PATH;
     63  return new WebSocket(url, protocolWithSpace);
     64 }
     65 
     66 function CreateWebSocketWithRepeatedProtocols() {
     67  IsWebSocket();
     68  const url = SCHEME_DOMAIN_PORT + "/" + __PATH;
     69  return new WebSocket(url, ["echo", "echo"]);
     70 }
     71 
     72 function CreateWebSocketWithRepeatedProtocolsCaseInsensitive() {
     73  IsWebSocket();
     74  const url = SCHEME_DOMAIN_PORT + "/" + __PATH;
     75  wsocket = new WebSocket(url, ["echo", "eCho"]);
     76 }
     77 
     78 function CreateInsecureWebSocket() {
     79  IsWebSocket();
     80  const url = `ws://${__SERVER__NAME}:{{ports[ws][0]}}/${__PATH}`;
     81  return new WebSocket(url);
     82 }
     83 
     84 function CreateWebSocket(isProtocol, isProtocols) {
     85  IsWebSocket();
     86  const url = SCHEME_DOMAIN_PORT + "/" + __PATH;
     87 
     88  if (isProtocol) {
     89    return new WebSocket(url, "echo");
     90  }
     91  if (isProtocols) {
     92    return new WebSocket(url, ["echo", "chat"]);
     93  }
     94  return new WebSocket(url);
     95 }