Proxy - arquivo Pac - ipv6 com myAdresse ()?

1

Estou tentando fazer um arquivo proxy para o meu Squid. Suponho que para alterar o redirecionamento se o usuário está na minha rede ou se ele está em casa, por exemplo, e eu tento fazê-lo com a função myAdress () .

Eu testei este PAC, com a maior parte das funções que podemos usar em um PAC: link .

function FindProxyForURL(url, host) {

   debugPAC ="PAC Debug Information\n";
   debugPAC +="-----------------------------------\n";
   debugPAC +="Machine IP: " + myIpAddress() + "\n";        <-----|
   debugPAC +="Hostname: " + host + "\n";
   if (isResolvable(host)) {resolvableHost = "True"} else {resolvableHost = "False"};
    debugPAC +="Host Resolvable: " + resolvableHost + "\n";
    debugPAC +="Hostname IP: " + dnsResolve(host) + "\n";
    if (isPlainHostName(host)) {plainHost = "True"} else {plainHost = "False"};
    debugPAC +="Plain Hostname: " + plainHost + "\n";
    debugPAC +="Domain Levels: " + dnsDomainLevels(host) + "\n";
    debugPAC +="URL: " + url + "\n";

    // Protocol can only be determined by reading the entire URL.
    if (url.substring(0,5)=="http:") {protocol="HTTP";} else
        if (url.substring(0,6)=="https:") {protocol="HTTPS";} else
           if (url.substring(0,4)=="ftp:") {protocol="FTP";}
                else {protocol="Unknown";}
    debugPAC +="Protocol: " + protocol + "\n";

    // Reduce volume of alerts to a useable level, e.g. only alert on static text pages.
    if (!shExpMatch(url,"*.(js|xml|ico|gif|png|jpg|jpeg|css|swf)*")) {alert(debugPAC);}

   return "DIRECT";
}

Mas na saída, eu tenho endereço ipv6?!

PAC-alert: PAC Debug Information
-----------------------------------
Machine IP: fe80::xxx:xxx:xxxx:xxxx        <-----|
Hostname: download.cdn.mozilla.net
Host Resolvable: True
Hostname IP: 93.184.221.133
Plain Hostname: False
Domain Levels: 3
URL:     http://download.cdn.mozilla.net/pub/firefox/releases/37.0.2/update/win32/fr/firefox-37.0.2.complete.mar
Protocol: HTTP

Isso é normal? Ou existe outro método para obter o endereço ipv4 do usuário? Se assim for, não posso fazer teste como:

if ( isInNet(myAddress, "10.0.0.0","255.0.0.0") )   ?

Obrigado pela sua ajuda

    
por user63946 12.05.2015 / 11:22

1 resposta

1

A função myIpAddress é baseada na suposição de que um host possui apenas um único endereço. Isso nunca foi uma suposição válida.

Uma alternativa melhor seria uma função retornando uma lista de endereços IP. Parece que a Microsoft introduziu sua própria extensão fazendo exatamente isso.

Faz sentido que myIpAddress retorne o endereço fornecendo as informações mais úteis. No entanto, você não pode confiar nisso. Há relatórios sobre myIpAddress às vezes retornando 127.0.0.1 , o que é praticamente inútil.

No seu caso, também não foi uma escolha ideal, porque um endereço de link local contém menos informações úteis para um script PAC do que um endereço local ou global. E estou supondo que, no seu caso, o host tenha pelo menos um endereço local ou global que poderia estar retornando.

Em geral, minha melhor recomendação é escrever FindProxyForURL de tal forma que não seja necessário saber o endereço IP do host (ou fazer com que o servidor que serve o script PAC insira o endereço IP do cliente no script por meio do servidor scripting).

Se uma fração significativa de seus usuários executar um navegador com suporte para extension você também pode adicionar uma função FindProxyForURLEx , que aproveita myIPAddressEx

Também não é aconselhável usar dnsResolve em um script PAC devido a um possível bloqueio do navegador enquanto uma resolução de DNS está acontecendo.

    
por 12.05.2015 / 13:13

Tags