Waarom? Vraag je je waarschijnlijk af. Korte uitleg:
Ik ben bezig met een php-tooltje dat vanaf een USB stickje moet draaien op PC's in verschillende particuliere en zakelijke omgevingen. Het tooltje moet behalve lokaal, ook naar buiten toe kunnen verbinden om updates te draaien of te synchroniseren.
Nu hebben we dmv een api-call de mogelijkheid een eventueel gebruikte proxyserver of pac-file weg te schrijven. Dat gaat goed en via de gevonden proxy kunnen we ook verbinden indien direct niet werkt.
Dan de uitdaging: de pac-file. PHP interpreteert geen javascript, dus zijn er 2 opties:
Ofwel pac-scriptje draaien in een verborgen geopend paginaatje door de browser (die snapt namelijk wel JS) en de teruggekregen proxy-string ergens wegschrijven, of een standalone JS interpreter a-la spidermonkey meeleveren. Het laatste is log en onnodig groot voor alleen het uitlezen van een pac-file. Eerste optie is beter dus.
Pak ik nu plaintext de FindProxyForUrl(url, host) uit de pac file en plak ik de inhoud daarvan in een simpel html-paginaatje, dan wil dat niet werken.
simpel voorbeeld:
Geeft niets terug.
Comment ik de proxystring = .... regel weg, komt er keurig 'Proxy: ' als output....
Ik ben helemaal groen wat javascript betreft, maar bovenstaande lijkt me niks spannends... Wat zie ik over het hoofd?
Ik ben bezig met een php-tooltje dat vanaf een USB stickje moet draaien op PC's in verschillende particuliere en zakelijke omgevingen. Het tooltje moet behalve lokaal, ook naar buiten toe kunnen verbinden om updates te draaien of te synchroniseren.
Nu hebben we dmv een api-call de mogelijkheid een eventueel gebruikte proxyserver of pac-file weg te schrijven. Dat gaat goed en via de gevonden proxy kunnen we ook verbinden indien direct niet werkt.
Dan de uitdaging: de pac-file. PHP interpreteert geen javascript, dus zijn er 2 opties:
Ofwel pac-scriptje draaien in een verborgen geopend paginaatje door de browser (die snapt namelijk wel JS) en de teruggekregen proxy-string ergens wegschrijven, of een standalone JS interpreter a-la spidermonkey meeleveren. Het laatste is log en onnodig groot voor alleen het uitlezen van een pac-file. Eerste optie is beter dus.
Pak ik nu plaintext de FindProxyForUrl(url, host) uit de pac file en plak ik de inhoud daarvan in een simpel html-paginaatje, dan wil dat niet werken.
simpel voorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <html>
<script>
function FindProxyForURL(url, host) {
// our local URLs from the domains below foo.com don't need a proxy:
if (shExpMatch(url,"*.foo.com/*")) {return "DIRECT";}
if (shExpMatch(url, "*.foo.com:*/*")) {return "DIRECT";}
// URLs within this network are accessed through
// port 8080 on fastproxy.foo.com:
if (isInNet(host, "10.0.0.0", "255.255.248.0")) {
return "PROXY fastproxy.foo.com:8080";
}
// All other requests go through port 8080 of proxy.foo.com.
// should that fail to respond, go directly to the WWW:
return "PROXY proxy.foo.com:8080; DIRECT";
}
proxystring = FindProxyForURL('http://www.host.nl', 'www.host.nl');
document.write('Proxy: ' + proxystring);
</script>
</html> |
Geeft niets terug.
Comment ik de proxystring = .... regel weg, komt er keurig 'Proxy: ' als output....
Ik ben helemaal groen wat javascript betreft, maar bovenstaande lijkt me niks spannends... Wat zie ik over het hoofd?
What the eyes see, and the ears hear, the mind believes...