I asked this in the ISA forum but they said since the WPAD file isn't generated by ISA to cross-post over here.
We have an ISA 2006 build 5.0.5712 operating as our web proxy. We have WPAD configured both in DNS and in DHCP to point to this ISA server. There are two sites (rentsentinel.com and epmsonline.com) which when we use the 'Automatically detect settings' option in IE8, it either gives red X's in part of the homepage (rentsentinel), or doesn't show the page at all (epms). If we manually specify the proxy settings for this same server, it works fine. It would also appear that one can browse fine on random sites, but once we attempt to browse to one of these two sites, that further browsing to other sites no longer works, even those we visited in the same browsing session.
If I manually specify the http://wpad/wpad.dat file in the config field, no change in behavior. But if I use that same entry in Firefox, both websites render fine. Our wpad.dat is included below, with our internal domain name switched to domain.com.
I'm looking for help on getting these sites working correctly with automatic detection. Thanks!
//Copyright (c) 1997-2006 Microsoft Corporation BackupRoute="DIRECT"; UseDirectForLocal=true; function MakeIPs(){ this[0]="127.0.0.0"; this[1]="255.0.0.0"; this[2]="127.0.0.1"; this[3]="255.255.255.255"; this[4]="159.10.3.201"; this[5]="255.255.255.255"; this[6]="159.10.3.202"; this[7]="255.255.255.254"; this[8]="159.10.3.204"; this[9]="255.255.255.252"; this[10]="159.10.3.208"; this[11]="255.255.255.254"; this[12]="64.244.122.129"; this[13]="255.255.255.255"; this[14]="66.45.70.181"; this[15]="255.255.255.255"; this[16]="10.0.0.0"; this[17]="255.0.0.0"; this[18]="128.0.0.0"; this[19]="192.0.0.0"; this[20]="192.0.0.0"; this[21]="224.0.0.0"; this[22]="240.0.0.0"; this[23]="248.0.0.0"; this[24]="248.0.0.0"; this[25]="252.0.0.0"; this[26]="252.0.0.0"; this[27]="254.0.0.0"; this[28]="254.0.0.0"; this[29]="255.0.0.0"; this[30]="255.0.0.0"; this[31]="255.128.0.0"; this[32]="255.128.0.0"; this[33]="255.192.0.0"; this[34]="255.192.0.0"; this[35]="255.224.0.0"; this[36]="255.224.0.0"; this[37]="255.240.0.0"; this[38]="255.240.0.0"; this[39]="255.248.0.0"; this[40]="255.248.0.0"; this[41]="255.252.0.0"; this[42]="255.252.0.0"; this[43]="255.254.0.0"; this[44]="255.254.0.0"; this[45]="255.255.0.0"; this[46]="255.255.0.0"; this[47]="255.255.128.0"; this[48]="255.255.128.0"; this[49]="255.255.192.0"; this[50]="255.255.192.0"; this[51]="255.255.224.0"; this[52]="255.255.224.0"; this[53]="255.255.240.0"; this[54]="255.255.240.0"; this[55]="255.255.248.0"; this[56]="255.255.248.0"; this[57]="255.255.252.0"; this[58]="255.255.252.0"; this[59]="255.255.254.0"; this[60]="255.255.254.0"; this[61]="255.255.255.0"; this[62]="255.255.255.0"; this[63]="255.255.255.128"; this[64]="255.255.255.128"; this[65]="255.255.255.192"; this[66]="255.255.255.192"; this[67]="255.255.255.224"; this[68]="255.255.255.224"; this[69]="255.255.255.240"; this[70]="255.255.255.240"; this[71]="255.255.255.248"; this[72]="255.255.255.248"; this[73]="255.255.255.252"; this[74]="255.255.255.252"; this[75]="255.255.255.254"; this[76]="255.255.255.254"; this[77]="255.255.255.255"; } DirectIPs=new MakeIPs(); cDirectIPs=78; function MakeCARPExceptions(){ } CARPExceptions=new MakeCARPExceptions(); cCARPExceptions=0; function MakeNames(){ this[0]="gracehill.com"; this[1]="*.cna.com"; this[2]="*.itsolutions.com"; this[3]="*.rentsentinel.com"; this[4]="domain.com"; } DirectNames=new MakeNames(); cDirectNames=5; HttpPort="8080"; cNodes=1; function MakeProxies(){ this[0]=new Node("hades-1.domain.com",0,1.000000); } Proxies = new MakeProxies(); function Node(name, hash, load){ this.name = name; this.hash = hash; this.load = load; this.score = 0; return this; } function FindProxyForURL(url, host){ var hash=0, urllower, i, fIp=false, ip, nocarp=false, skiphost=false; var list="", pl, j, score, ibest, bestscore; urllower = url.toLowerCase(); if((urllower.substring(0,5)=="rtsp:") || (urllower.substring(0,6)=="rtspt:") || (urllower.substring(0,6)=="rtspu:") || (urllower.substring(0,4)=="mms:") || (urllower.substring(0,5)=="mmst:") || (urllower.substring(0,5)=="mmsu:")) return "DIRECT"; if(UseDirectForLocal){ if(isPlainHostName(host)) fIp = true;} for(i=0; i<cDirectNames; i++){ if(shExpMatch(host, DirectNames[i])){ fIp = true; break;} if(shExpMatch(url, DirectNames[i])) return "DIRECT"; } if(cDirectIPs == 0){ if(fIp) return "DIRECT";} else{ ip = host; if(fIp) ip = dnsResolve(host); var isIpAddr = /^(\d+.){3}\d+$/; if(isIpAddr.test(ip)){ for(i=0; i<cDirectIPs; i += 2){ if(isInNet(ip, DirectIPs[i], DirectIPs[i+1])) return "DIRECT";}} else if(isPlainHostName(host)) return "DIRECT"; } if(cCARPExceptions > 0){ for(i = 0; i < cCARPExceptions; i++){ if(shExpMatch(host, CARPExceptions[i])){ nocarp = true;} if(shExpMatch(url, CARPExceptions[i])){ nocarp = true; skiphost = true; break; }}} if(!skiphost) hash = HashString(host,hash); if(nocarp) hash = HashString(myIpAddress(), hash); pl = new Array(); for(i = 0; i<cNodes; i++){ Proxies[i].score = Proxies[i].load * Scramble(hash ^ Proxies[i].hash); pl[i] = i; } for(j = 0; j < cNodes; j++){ bestscore = -1; for(i = 0; i < cNodes-j; i++){ score = Proxies[pl[i]].score; if(score > bestscore){ bestscore = score; ibest = i; }} list = list + "PROXY " + Proxies[pl[ibest]].name + ":" + HttpPort + "; "; pl[ibest] = pl[cNodes-j-1]; } list = list + BackupRoute; return list; } var h_tbl = new Array(0,0x10D01913,0x21A03226,0x31702B35,0x4340644C,0x53907D5F,0x62E0566A,0x72304F79,0x8680C898,0x9650D18B,0xA720FABE,0xB7F0E3AD,0xC5C0ACD4,0xD510B5C7,0xE4609EF2,0xF4B087E1); function HashString(str, h){ for(var i=0; i<str.length; i++){ var c = str.charAt(i); if(c ==':' || c == '/') break; c = CharToAscii(c.toLowerCase()); h = (h >>> 4) ^ h_tbl[(h ^ c) & 15]; h = (h >>> 4) ^ h_tbl[(h ^ (c>>>4)) & 15]; h = MakeInt(h); } return h; } function Scramble(h){ h += ((h & 0xffff) * 0x1965) + ((((h >> 16) & 0xffff) * 0x1965) << 16) + (((h & 0xffff) * 0x6253) << 16); h = MakeInt(h); h += (((h & 0x7ff) << 21) | ((h >> 11) & 0x1fffff)); return MakeInt(h); } var Chars =" !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€???????????Ž????????????ž? ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ "; function CharToAscii(c){ return Chars.indexOf(c) + 32; } function MakeInt(x){ x %= 4294967296; if(x < 0) x += 4294967296; return x; }