Preskoči na glavno vsebino

Sintaksa PAC (Proxy auto-config)

Informacije

Če v dokumentaciji najdete napako ali imate predlog, pustite sporočilo na forumu Mudfish (https://forums.mudfish.net). Primeri in razlage v izvirniku so bili pripravljeni s prevajanjem ali upoštevanjem vsebine naslednjih strani.

Razširitev Mudfish za brskalnik podpira obliko datotek PAC (Proxy auto-config).

Funkcije PAC​

Brskalniki s podporo PAC običajno podpirajo funkcije standardne oblike, ki jo je določil Netscape.

Ker se te funkcije običajno izvajajo v peskovniku, je okolje strogo omejeno. Tako na primer ni mogoče pregledovati podatkov User Agent.

Spodaj so opisane funkcije, dovoljene v peskovniku. Koda in njeni izvirni komentarji so ohranjeni; pomen komentarjev je pojasnjen pred vsakim primerom.

dnsDomainIs​

Preveri ime gostitelja in ob ujemanju vrne true. Običajno se uporablja za preverjanje posameznih izjemnih imen gostiteljev.

Primer brskalniku naroči neposredno povezavo brez posredniškega strežnika, če je ime gostitelja google.com ali se ujema s poddomenami, kot sta maps.google.com in www.google.com.

   // 만약 hostname 이 google.com 과 같거나 하위 주소들이 매치된다면
// (예를 들어 maps.google.com, www.google.com),
// 브라우저로 하여금 proxy 을 거치지 않고 직접 접속하게 합니다.

if (dnsDomainIs(host, "google.com"))
return "DIRECT";

shExpMatch​

Primerja ime gostitelja ali URL z nizom, določenim z izrazom lupine, in ob ujemanju vrne true.

Prvi primer neposredno poveže vse zahteve za imena gostiteljev, ki se končajo z .local. Drugi neposredno poveže vpn.domain.com ter zahteve za vse datoteke in podmape pod http://abcdomain.com/folder/.

   // 모든 request 들 (.local 로 끝나는 모든 hostname 에 해당) 이
// 브라우저로 하여금 proxy 을 거치지 않고 직접 접속하게 합니다.

if (shExpMatch(url, "*.local"))
return "DIRECT";

// vpn.domain.com 에 접속할려고 하거나
// http://abcdomain.com/folder/ 하위의 모든 폴더 혹은 파일에 접속하는
// 요청들을 proxy 경유없이 직접 접속합니다.

if (shExpMatch(host, "vpn.domain.com") ||
shExpMatch(url, "http://abcdomain.com/folder/*"))
return "DIRECT";

isInNet​

Preveri naslov IP gostitelja in vrne true, če je v določenem podomrežju. Če je argument ime gostitelja, ga z razreševanjem DNS pretvori v IP.

Primer omogoči neposredno povezavo, če naslov IP zahtevanega gostitelja po razrešitvi DNS spada v podano območje IP.

   // 만약 요청한 hostname 의 IP 주소가 (DNS resolving 후) 인자로 넘겨진
// IP 대역에 포함되는 것이면 직접 접속합니다.

if (isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0"))
return "DIRECT";

myIpAddress​

Vrne naslov IP trenutnega računalnika.

Če je računalnik v določenem območju IP, se zahteva pošlje prek posredniškega strežnika 10.10.5.1 na vratih 8080.

   // 만약 나의 컴퓨터가 특정 IP 대역에 속할 경우 proxy 10.10.5.1 (포트는 8080)
// 를 통해 요청하도록 합니다.

if (isInNet(myIpAddress(), "10.10.1.0", "255.255.255.0"))
return "PROXY 10.10.5.1:8080";

dnsResolve​

Z razreševanjem DNS pretvori ime gostitelja v naslov IP.

Če naslov IP zahtevanega gostitelja spada v eno od navedenih območij, se uporabi neposredna povezava.

   // 만약 요청한 host 의 IP 가 지정한 범위에 속할 경우 직접 접속하도록
// 합니다.

if (isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") ||
isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0"))
return "DIRECT";

isPlainHostName​

Vrne true, če ime gostitelja ne vsebuje pike (.). Primer je http://intranet; uporabno je pri dostopu do spletnih naslovov notranjega omrežja.

Za zahtevo z enostavnim imenom gostitelja, kot je http://intranet/ ali http://webserver-name01/, se uporabi neposredna povezava.

   // 만약 사용자가 plain hostname (예를 들면, http://intranet/ 혹은
// http://webserver-name01/) 를 요청할 경우, 직접 접속하도록 합니다.

if (isPlainHostName(host))
return "DIRECT";

localHostOrDomainIs​

Preveri ime gostitelja in vrne true, če se del imena gostitelja ujema.

Če je zahtevano ime gostitelja »www« ali »www.google.com«, se vzpostavi neposredna povezava.

   // 만약 요청한 hostname 이 "www" 혹은 "www.google.com" 일 경우, 직접
// 접속합니다.

if (localHostOrDomainIs(host, "www.google.com"))
return "DIRECT";

isResolvable​

Poskusi pretvoriti ime gostitelja v naslov IP in ob uspehu vrne true.

Če razreševanje domene ne uspe pravilno, lahko sam brskalnik za trenutek zamrzne oziroma se ustavi. Funkcijo uporabljajte previdno.

Če lahko strežnik DNS razreši zahtevano ime gostitelja, se zahteva pošlje prek posredniškega strežnika proxy1.example.com.

   // 만약 요청한 hostname 이 DNS 서버로 부터 resolving 이 될 수 있다면,
// proxy1.example.com 프록시를 통해 요청합니다.

if (isResolvable(host))
return "PROXY proxy1.example.com:8080";

dnsDomainLevels​

Preveri ime gostitelja in vrne število pik (.) v nizu. Uporabno je na primer za določanje izjem za spletne strežnike notranjega omrežja.

Če ime gostitelja vsebuje vsaj eno piko, se uporabi posredniški strežnik proxy1.example.com, sicer neposredna povezava.

   // 만약 hostname 이 . (dot) 을 하나라도 포함하고 있으면 proxy1.example.com
// 프록시를 통해 접속하고 그렇지 않으면 직접 접속합니다.

if (dnsDomainLevels(host) > 0)
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";

weekdayRange​

Uporablja se za časovno odvisna pravila, na primer za vrnitev nastavitev posredniškega strežnika samo ob določenih dnevih.

Od ponedeljka do petka se uporablja posredniški strežnik proxy1.example.com, druge dni pa neposredna internetna povezava.

   // 만약 월요일부터 금요일 사이에는 proxy1.example.com 프록시를 사용하도록
// 하고 그렇지 않을 경우는 직접 인터넷에 접속하도록 합니다.

if (weekdayRange("MON", "FRI"))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";

dateRange​

Uporablja se za časovno odvisna pravila, na primer za uporabo posredniškega strežnika samo v določenih mesecih.

Od januarja do marca se uporablja posredniški strežnik proxy1.example.com, sicer neposredna povezava.


// 만약 1월부터 3월까지는 proxy1.example.com 프록시를 사용하도록 설정하고
// 그렇지 않을 경우는 직접 접속하도록 조치합니다.

if (dateRange("JAN", "MAR"))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";

timeRange​

Uporablja se, če želite posredniški strežnik uporabljati samo ob določenih urah.

Posredniški strežnik proxy1.example.com se uporablja samo od 8. ure zjutraj do 18. ure, sicer je povezava neposredna.

   // 오직 아침 8 시부터 오후 6 시까지만 proxy1.example.com 을 사용하도록
// 하고 그렇지 않을 경우는 직접 접속합니다.

if (timeRange(8, 18))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";

alert​

Ta funkcija ni bila del prvotne opredelitve PAC, vendar jo Internet Explorer in Firefox določata za odpravljanje težav.

Primer v konzolo napak brskalnika izpiše rezultat razreševanja DNS.

   // 브라우저의 error 콘솔창에 DNS resolving 한 결과를 출력하도록 합니다.

resolved_host = dnsResolve(host);
alert(resolved_host);