• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Proxy Pac File mit IPv6

keamas

New member
Hi,
ich will ein Proxy Pac File schreiben mit Javascript:


Wenn der Host aus einem der unten aufgelisteten IPv6 Netzen kommt dann soll er es direkt schicken:

Code:
function FindProxyForURL(url, host)
{
/* DirectAccess */
if (isInNet(myIPAddressEx(), "2001:0:1::/48")
||isInNet(myIPAddressEx(), "2002:0:173::/48"))
{
return "DIRECT";
}
}

Ich versuche das ganze zu testen mit einem Pactester und bekomme folgenden Output:
Code:
$ pactester -p ipv6.pac -c 2001:0:1::1 -u http://www.google.com
JSERROR: PAC script:4:
ReferenceError: myIPAddressEx is not defined
pacparser.c: pacparser_find_proxy: Problem in executing FindProxyForURL.
pactester.c: Problem in finding proxy for http://www.google.com.



Ihm passt irgenwie die Funktion nicht. Auch wenn ich das "Ex" weglasse. Kann mir jemand sagen wie ich so etwas schreibe? Ich habe in Google leider nichts zu dem Thema gefunden.
 
hi,
also ich konnte das Ganze etwas umbauen, jedoch weiss ich nicht wie ich das Ganze so umbaue, damit ich zwei functions in dem selben PAC File verwenden kann.
Ich benötige eine function für IPv4 und eine function für IPv6.
Wie kann ich das in einem File verwenden ich vermute hier liegt noch der Fehler.
Kann mir bitte hier jemand helfen?


Code:
function FindProxyForURL(url, host)
{

        if (isInNet(myIpAddress(), "10.10.103.0", "255.255.255.0")
            || isInNet(myIpAddress(), "10.10.104.0", "255.255.255.128")
            || isInNet(myIpAddress(), "10.10.104.192", "255.255.255.192"))
        {
            return "PROXY proxy.proxy.com:8080;"
        }
		
        else return "PROXY proxy2.proxy.com:8080";    
}

/* IPv6 function Ressource: [url]https://msdn.microsoft.com/en-us/library/windows/desktop/gg308478%28v=vs.85%29.aspx[/url] */
function FindProxyForURLEx(url, host)
{

	if (isInNetEx(myIpAddressEx(), "2001:0:99c2::/48")
		||isInNetEx(myIpAddressEx(), "2002:99c2:173::/48"))
	{
		return "DIRECT";
	}
}
 
Warum brauchst du zwei Funktionen? Du kannst doch in der Funktion abprüfen, ob es sich um IPv4 oder IPv6 handelt.
 
Hi,
wie genau könnte dies aussehen? Ich bin leider nicht sehr bewandt mit Javascript.

Ich glaube er meinte nur, warum du nicht alles in eine Funktion packst - sonst macht es ja keinen Sinn.
Also wie hier zb mit "else if". Wobei ich mir den Code von dir nicht näher angesehen habe und ich ich ein wenig Frage wozu die die Funktionsparameter benötigst... aber ist ja vermutlich nur ein Teil des Codes.


Code:
function FindProxyForURL(url, host)
{

        if (isInNet(myIpAddress(), "10.10.103.0", "255.255.255.0")
            || isInNet(myIpAddress(), "10.10.104.0", "255.255.255.128")
            || isInNet(myIpAddress(), "10.10.104.192", "255.255.255.192"))
        {
            return "PROXY proxy.proxy.com:8080;"
        }
	else if (isInNetEx(myIpAddressEx(), "2001:0:99c2::/48")
		||isInNetEx(myIpAddressEx(), "2002:99c2:173::/48"))
        {
		return "DIRECT";
        }
		
        else return "PROXY proxy2.proxy.com:8080";    
}
 
myIpAddressEx() liefert:
Code:
[fe80::***];[fe80::***];[2a03:db80:XXXX:XXXX::*];10.0.0.5
aber 
isInNetEx(myIpAddressEx(), "2a03:db80:XXXX::/48")
wird nicht true, auch "fe80::/16" nicht.
Woran liegt das?
 
Zuletzt bearbeitet von einem Moderator:
Laut MSDN Spec sollte myIpAddressEx() die Adressen in der Form fe80:...;2a00:abcd:...;10.0.0.. liefern.
Und darauf kann man dann die Funktion isInNetEx(adr,net/mask) ansetzen.
myIpAddress() liefert aber [fe80:...];[2a00:abcd:...];10.0.0..
Und bei nicht passender Syntax liefert isInNetEx immer FALSE.
Das funktioniert also nicht.
Hier haben die Programmierer bei Microsoft nicht aufgepasst (haben selber wahrscheinlich kein IPv6).
Ganz zu schweigen von Firefox, wo es die ...Ex() Funktionen gar nicht gibt.
 
Zurück
Oben