Liigu põhisisu juurde

PAC (Proxy auto-config) süntaks

Teave

Kui leiate dokumentatsioonis vea või teil on ettepanekuid, jätke teade Mudfishi foorumisse (https://forums.mudfish.net). Siinsed näited ja selgitused on koostatud järgmiste lehtede tõlkimise või nendele tuginemise teel.

Mudfishi brauserilaiendus toetab PAC-failivormingut (Proxy auto-config).

PAC-funktsioonid​

PAC-vormingut toetavad brauserid pakuvad tavaliselt Netscape'i standardvormingu määratletud funktsioone.

Need funktsioonid töötavad aga tavaliselt liivakastis ehk rangelt piiratud keskkonnas. Näiteks User Agent teabe vaatamine on täielikult välistatud.

Allpool kirjeldatakse liivakastis lubatud funktsioone. Koodinäited ja nende algsed koreakeelsed kommentaarid on säilitatud muutmata; iga näite ees on kommentaaride sisu selgitatud eesti keeles.

dnsDomainIs​

Kontrollib hostinime ja tagastab sobivuse korral true. Tavaliselt kasutatakse seda üksikute erandina käsitletavate hostinimede kontrollimiseks.

Näide: kui hostinimi on google.com või selle alamdomeen, näiteks maps.google.com või www.google.com, loob brauser ühenduse otse, puhverserverit läbimata.

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

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

shExpMatch​

Võrdleb hostinime või URL-i shelli avaldisena määratud stringiga ning tagastab sobivuse korral true.

Näited: kõik .local lõpuga hostinimede päringud saadetakse otse. Samuti ühendutakse otse aadressiga vpn.domain.com ning kõigi http://abcdomain.com/folder/ all olevate kaustade ja failidega.

   // 모든 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​

Kontrollib hostinime IP-aadressi ning tagastab true, kui see kuulub määratud alamvõrku. Hostinime argumendina saamisel teisendatakse see DNS-i abil IP-aadressiks.

Näide: kui päritud hostinime IP-aadress kuulub pärast DNS-lahendust argumendina antud IP-vahemikku, ühendutakse otse.

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

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

myIpAddress​

Tagastab teie arvuti praeguse IP-aadressi.

Näide: kui arvuti kuulub määratud IP-vahemikku, saadetakse päring puhverserveri 10.10.5.1 kaudu pordile 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​

Teisendab hostinime DNS-lahenduse abil IP-aadressiks.

Näide: kui päritud hosti IP-aadress kuulub ühte määratud vahemikest, ühendutakse otse.

   // 만약 요청한 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​

Tagastab true, kui hostinimes pole ühtegi punkti. Näiteks http://intranet on selline nimi. Funktsiooni kasutatakse tavaliselt sisevõrgu veebiaadressidele juurdepääsuks.

Näide: lihtsa hostinime, näiteks http://intranet/ või http://webserver-name01/ pärimisel ühendutakse otse.

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

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

localHostOrDomainIs​

Kontrollib hostinime ning tagastab true, kui hostinime osa sobib.

Näide: kui päritud hostinimi on „www” või „www.google.com”, ühendutakse otse.

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

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

isResolvable​

Proovib teisendada hostinime IP-aadressiks ja tagastab õnnestumisel true.

Kui domeeninime lahendamine ei toimi, võib brauser ajutiselt hanguda. Kasutage seda funktsiooni ettevaatlikult.

Näide: kui DNS-server suudab päritud hostinime lahendada, saadetakse päring puhverserveri proxy1.example.com kaudu.

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

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

dnsDomainLevels​

Kontrollib hostinime ja tagastab selles olevate punktide arvu. Seda saab kasutada näiteks sisevõrgu veebiserverite erandiks määramisel.

Näide: kui hostinimes on vähemalt üks punkt, ühendutakse puhverserveri proxy1.example.com kaudu; vastasel juhul otse.

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

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

weekdayRange​

Võimaldab koostada ajapõhiseid reegleid, näiteks tagastada puhverserveri seadistuse ainult kindlatel nädalapäevadel.

Näide: esmaspäevast reedeni kasutatakse puhverserverit proxy1.example.com, muudel päevadel ühendutakse otse.

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

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

dateRange​

Võimaldab koostada ajapõhiseid reegleid, näiteks kasutada puhverserverit ainult kindlatel kuudel.

Näide: jaanuarist märtsini kasutatakse puhverserverit proxy1.example.com, muul ajal ühendutakse otse.


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

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

timeRange​

Võimaldab kasutada puhverserverit ainult kindlal kellaajavahemikul.

Näide: puhverserverit proxy1.example.com kasutatakse ainult kella 8-st hommikul kuni 18-ni õhtul, muul ajal ühendutakse otse.

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

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

alert​

Seda funktsiooni PAC-vormingu esialgses määratluses ei olnud, kuid Internet Explorer ja Firefox määratlevad selle tõrkeotsingu jaoks.

Näide: DNS-lahenduse tulemus väljastatakse brauseri veakonsooli.

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

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