Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JS] Proxy string bepalen adhv pac-file?

Pagina: 1
Acties:

  • ToMaSZ
  • Registratie: Januari 2000
  • Laatst online: 20-11 20:54
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:
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...


  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10 12:59
Opzich staat er in je voorbeeld niets spannends inderdaad, maar als dit de hele file is dan is het logisch dat het niet werkt. Waar zijn de functies shExpMatch en isInNet gedefinieerd? Mocht je in je echte code deze functies wel in javascript hebben staan, dan zou ik de fout eerder in een van deze twee functies zoeken. In de bovenstaande code kan ik namelijk niks ontdekken.

  • ToMaSZ
  • Registratie: Januari 2000
  • Laatst online: 20-11 20:54
Amras schreef op maandag 18 februari 2008 @ 17:54:
Opzich staat er in je voorbeeld niets spannends inderdaad, maar als dit de hele file is dan is het logisch dat het niet werkt. Waar zijn de functies shExpMatch en isInNet gedefinieerd? Mocht je in je echte code deze functies wel in javascript hebben staan, dan zou ik de fout eerder in een van deze twee functies zoeken. In de bovenstaande code kan ik namelijk niks ontdekken.
Jep, die 2 zijn het probleem zie ik nue (leuk een debugger, moet je hem ook gebruiken he...) :)

Die isInNet fout ben ik kwijt met een import java.net.*; (overkill, maar het juiste pakketje zoek ik later wel even uit.) Nu nog vinden wat ik nodig heb voor die shExpMatch.... iemand een suggestie?(browsers vreten meteen proxy-files, dus het moet iets standaard-achtigs zijn...)

Edit:
Er is een klasse EvalPAC in com.sun.portal.util. Is het mogelijk die vanuit dit javascriptje te gebruiken? Daarin zitten namelijk alle benodigde functies, maar ik loop hopeloos vast.

[ Voor 9% gewijzigd door ToMaSZ op 18-02-2008 19:35 ]

What the eyes see, and the ears hear, the mind believes...


  • ToMaSZ
  • Registratie: Januari 2000
  • Laatst online: 20-11 20:54
Fixed. Herschrijven en implementeren van nsProxyAutoConfig.js (netscape/mozilla) zorgt voor de bruikbare functies.

[ Voor 3% gewijzigd door ToMaSZ op 18-02-2008 23:23 ]

What the eyes see, and the ears hear, the mind believes...