function FindProxyForURL(url, host) { // our local URLs from the domains below private.com.au don't need a proxy: if (shExpMatch(host,"*.private.com.au") && !shExpMatch(host,"www.private.com.au") && !shExpMatch(host,"ftp.private.com.au") && !shExpMatch(host,"www.abc.private.com.au")) {return "DIRECT";} // Local URLS that should not be load balanced using URLHash: if ((shExpMatch(host,"*.abc.com.au")) || (shExpMatch(host,"abc.com.au")) || (shExpMatch(host,"*.def.com.au")) || (shExpMatch(host,"*.privatelink.com.au")) || (shExpMatch(host,"privatelink.com.au")) || (shExpMatch(host,"*.asdf.com.au")) || (shExpMatch(host,"sdfg.com.au"))) {return "PROXY 192.168.154.22:8080; PROXY 192.168.154.23:8080; PROXY 192.168.154.20:8080; PROXY 192.168.154.21:8080";} // our local URLs from the domains below *asdgfdf.co.nz don't need a proxy: if ((shExpMatch(host,"intranet.sfghdghdgh"))) {return "DIRECT";} // IP address based URLs within this network don't need a proxy if ((shExpMatch(host,"127.0.0.1")) || (shExpMatch(host,"10.*.*.*")) || (shExpMatch(host,"192.168.*.*"))) {return "DIRECT";} // Unqualified names (eg privatenet) must be local. Go direct. if (isPlainHostName(host)) {return "DIRECT";} ret = (URLhash2(url) % 4); if (ret == 0) {return "PROXY 192.168.154.20:8080; PROXY 192.168.154.21:8080; PROXY 192.168.154.22:8080; PROXY 192.168.154.23:8080";} if (ret == 1) {return "PROXY 192.168.154.21:8080; PROXY 192.168.154.22:8080; PROXY 192.168.154.23:8080; PROXY 192.168.154.20:8080";} if (ret == 2) {return "PROXY 192.168.154.22:8080; PROXY 192.168.154.23:8080; PROXY 192.168.154.20:8080; PROXY 192.168.154.21:8080";} if (ret == 3) {return "PROXY 192.168.154.23:8080; PROXY 192.168.154.20:8080; PROXY 192.168.154.21:8080; PROXY 192.168.154.22:8080";} } function URLhash(name) { var cnt=0; var str=name.toLowerCase(name); if ( str.length ==0) { return cnt; } for(var i=0;i < str.length ; i++) { var ch= atoi(str.substring(i,i + 1)); cnt = cnt + ch; } return cnt ; } /* URLhash2( ) for directory name hash computing version. written by SHARP Corp in Feb 1997 Objects in a same directory will be accessed via the same proxy. Use URLhash2( ) instead of URLhash( ) if you prefer to use persistent connection in HTTP 1.1 http://www.sharp.co.jp/sample/test/img/mebius.gif http://www.sharp.co.jp/sample/test/img/zaurus.gif http://www.sharp.co.jp/sample/test/img/wiz.gif <-------------------------------------> directory name hashing here */ function URLhash2(name) { var cnt=0; var dirptr=0; var str=name.toLowerCase(name); if ( str.length ==0) { return cnt; } /* skip filename in directory */ for(var i=str.length - 1;i >=0 ; i--) { if ( str.substring(i,i +1) == '/' ) { dirptr = i+1 ; break; } } for(var i=0;i < dirptr; i++) { var ch= atoi(str.substring(i,i + 1)); cnt = cnt + ch; } return cnt ; } function atoi(charstring) { if ( charstring == "a" ) return 0x61; if ( charstring == "b" ) return 0x62; if ( charstring == "c" ) return 0x63; if ( charstring == "d" ) return 0x64; if ( charstring == "e" ) return 0x65; if ( charstring == "f" ) return 0x66; if ( charstring == "g" ) return 0x67; if ( charstring == "h" ) return 0x68; if ( charstring == "i" ) return 0x69; if ( charstring == "j" ) return 0x6a; if ( charstring == "k" ) return 0x6b; if ( charstring == "l" ) return 0x6c; if ( charstring == "m" ) return 0x6d; if ( charstring == "n" ) return 0x6e; if ( charstring == "o" ) return 0x6f; if ( charstring == "p" ) return 0x70; if ( charstring == "q" ) return 0x71; if ( charstring == "r" ) return 0x72; if ( charstring == "s" ) return 0x73; if ( charstring == "t" ) return 0x74; if ( charstring == "u" ) return 0x75; if ( charstring == "v" ) return 0x76; if ( charstring == "w" ) return 0x77; if ( charstring == "x" ) return 0x78; if ( charstring == "y" ) return 0x79; if ( charstring == "z" ) return 0x7a; if ( charstring == "0" ) return 0x30; if ( charstring == "1" ) return 0x31; if ( charstring == "2" ) return 0x32; if ( charstring == "3" ) return 0x33; if ( charstring == "4" ) return 0x34; if ( charstring == "5" ) return 0x35; if ( charstring == "6" ) return 0x36; if ( charstring == "7" ) return 0x37; if ( charstring == "8" ) return 0x38; if ( charstring == "9" ) return 0x39; if ( charstring == "." ) return 0x2e; return 0x20; }