Прокси - файл Pac - ipv6 с myAdresse ()?

Я - tryig для создания прокси pac файлом для моего Сквида. Я предполагаю для изменения перенаправления, если пользователь находится в моей сети или если он дома, например, и я пытаюсь сделать его с myAdress () функцией.

Я имею, тестируют этот PAC, с большей частью функции, которую мы можем использовать в PAC: http://findproxyforurl.com/debug-pac-file/.

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";
}

Но на выводе, у меня есть адрес 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

Это нормально? Или там другой метод для получения ipv4 адрес пользователя? Если так, я не могу сделать тест как:

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

Спасибо за помощь

1
задан 12 May 2015 в 13:55
1 ответ

Функция myIpAddress основана на предположении, что хост имеет только один адрес. Это никогда не было правильным предположением.

Лучшей альтернативой будет функция, возвращающая список IP-адресов. Похоже, что Microsoft ввела свое собственное расширение , делая именно это.

Для функции myIpAddress имеет смысл возвращать адрес, содержащий наиболее полезную информацию. Однако на это нельзя положиться. Есть сообщения о том, что myIpAddress иногда возвращает 127.0.0.1, что в большинстве случаев бесполезно.

В вашем случае он явно не сделал оптимального выбора также, потому что link-local адрес содержит менее полезную информацию для PAC скрипта, чем локальный или глобальный адрес. И я предполагаю, что в вашем случае хост имеет по крайней мере один локальный или глобальный адрес, который он может быть возвращен вместо этого.

В целом, моя лучшая рекомендация заключается в том, чтобы написать FindProxyForURL так, чтобы ему не нужно было знать IP-адрес хоста (или чтобы сервер, обслуживающий PAC-скрипт встроить IP-адрес клиента в скрипт с помощью серверной стороны скриптинга).

Если значительная часть ваших пользователей запустить браузер с поддержкой Microsoft расширение вы также можете добавить FindProxyForURLEx функция, которая использует myIPAddressEx

Также не рекомендуется использовать dnsResolve в PAC-скрипте из-за возможного блокирования браузера в то время как DNS резолюции происходит.

.
1
ответ дан 4 December 2019 в 00:08

Теги

Похожие вопросы