PAC (Proxy auto-config) sintakse
Ja dokumentā atrodat kļūdu vai vēlaties ko ierosināt, rakstiet Mudfish forumā (https://forums.mudfish.net). Piemēri un skaidrojumi sagatavoti, tulkojot vai izmantojot šādu vietņu materiālus:
Mudfish pārlūka paplašinājums atbalsta PAC (Proxy auto-config) faila formātu.
PAC funkcijas
Pārlūki ar PAC atbalstu parasti nodrošina Netscape standarta formātā noteiktās funkcijas.
Tās darbojas smilškastē ar stingri ierobežotām iespējām. Piemēram, User Agent informāciju apskatīt nevar.
Tālāk aprakstītas smilškastē atļautās funkcijas. Koda piemēri saglabāti oriģinālajā formā; to korejiešu komentāru nozīme paskaidrota latviski tieši pirms katra piemēra.
dnsDomainIs
Pārbauda resursdatora nosaukumu un atgriež true, ja tas atbilst. Parasti izmanto atsevišķu izņēmuma resursdatoru pārbaudei.
Piemēra komentāru skaidrojums: Ja nosaukums ir google.com vai atbilstošs apakšdomēns, piemēram, maps.google.com vai www.google.com, pārlūks savienojas tieši bez starpniekservera.
// 만약 hostname 이 google.com 과 같거나 하위 주소들이 매치된다면
// (예를 들어 maps.google.com, www.google.com),
// 브라우저로 하여금 proxy 을 거치지 않고 직접 접속하게 합니다.
if (dnsDomainIs(host, "google.com"))
return "DIRECT";
shExpMatch
Salīdzina resursdatora nosaukumu vai URL ar čaulas izteiksmes virkni un atgriež true, ja tā atbilst.
Piemēra komentāru skaidrojums: Visi pieprasījumi ar resursdatora nosaukumu, kas beidzas ar .local, tiek veikti tieši. Arī vpn.domain.com un visi faili vai mapes zem http://abcdomain.com/folder/ tiek sasniegti bez starpniekservera.
// 모든 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
Pārbauda resursdatora IP adresi un atgriež true, ja tā atrodas norādītajā apakštīklā. Ja nodots nosaukums, tas ar DNS tiek pārvērsts IP adresē.
Piemēra komentāru skaidrojums: Ja pieprasītā resursdatora IP adrese pēc DNS atrisināšanas ir norādītajā IP diapazonā, savienojums ir tiešs.
// 만약 요청한 hostname 의 IP 주소가 (DNS resolving 후) 인자로 넘겨진
// IP 대역에 포함되는 것이면 직접 접속합니다.
if (isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0"))
return "DIRECT";
myIpAddress
Atgriež šī datora IP adresi.
Piemēra komentāru skaidrojums: Ja dators atrodas norādītajā IP diapazonā, pieprasījums izmanto starpniekserveri 10.10.5.1 un portu 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
Ar DNS atrisināšanu pārvērš resursdatora nosaukumu IP adresē.
Piemēra komentāru skaidrojums: Ja pieprasītā resursdatora IP adrese atrodas kādā no norādītajiem diapazoniem, savienojums ir tiešs.
// 만약 요청한 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
Atgriež true, ja resursdatora nosaukumā nav punkta (.). Piemēram, http://intranet. To var izmantot iekšējā tīkla vietnēm.
Piemēra komentāru skaidrojums: Ja pieprasīts vienkāršs resursdatora nosaukums, piemēram, http://intranet/ vai http://webserver-name01/, savienojums ir tiešs.
// 만약 사용자가 plain hostname (예를 들면, http://intranet/ 혹은
// http://webserver-name01/) 를 요청할 경우, 직접 접속하도록 합니다.
if (isPlainHostName(host))
return "DIRECT";
localHostOrDomainIs
Pārbauda nosaukumu un atgriež true, ja resursdatora nosaukuma daļa sakrīt.
Piemēra komentāru skaidrojums: Ja pieprasītais nosaukums ir «www» vai «www.google.com», savienojums ir tiešs.
// 만약 요청한 hostname 이 "www" 혹은 "www.google.com" 일 경우, 직접
// 접속합니다.
if (localHostOrDomainIs(host, "www.google.com"))
return "DIRECT";
isResolvable
Mēģina pārvērst resursdatora nosaukumu IP adresē un atgriež true, ja tas izdodas.
Ja domēna atrisināšana neizdodas, pārlūks var uz brīdi sastingt. Izmantojiet uzmanīgi.
Piemēra komentāru skaidrojums: Ja DNS serveris var atrisināt pieprasīto nosaukumu, pieprasījums izmanto starpniekserveri proxy1.example.com.
// 만약 요청한 hostname 이 DNS 서버로 부터 resolving 이 될 수 있다면,
// proxy1.example.com 프록시를 통해 요청합니다.
if (isResolvable(host))
return "PROXY proxy1.example.com:8080";
dnsDomainLevels
Saskaita punktus (.) resursdatora nosaukumā. To var izmantot, piemēram, lai izņēmumos iekļautu iekšējā tīkla tīmekļa serveri.
Piemēra komentāru skaidrojums: Ja nosaukumā ir vismaz viens punkts, izmanto proxy1.example.com; pretējā gadījumā savienojas tieši.
// 만약 hostname 이 . (dot) 을 하나라도 포함하고 있으면 proxy1.example.com
// 프록시를 통해 접속하고 그렇지 않으면 직접 접속합니다.
if (dnsDomainLevels(host) > 0)
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
weekdayRange
Ļauj veidot noteikumus pēc laika, piemēram, izmantot starpniekserveri tikai noteiktās nedēļas dienās.
Piemēra komentāru skaidrojums: No pirmdienas līdz piektdienai izmanto proxy1.example.com, pārējās dienās savienojas ar internetu tieši.
// 만약 월요일부터 금요일 사이에는 proxy1.example.com 프록시를 사용하도록
// 하고 그렇지 않을 경우는 직접 인터넷에 접속하도록 합니다.
if (weekdayRange("MON", "FRI"))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
dateRange
Ļauj veidot noteikumus pēc datuma, piemēram, izmantot starpniekserveri tikai noteiktos mēnešos.
Piemēra komentāru skaidrojums: No janvāra līdz martam izmanto proxy1.example.com, pārējā laikā savienojas tieši.
// 만약 1월부터 3월까지는 proxy1.example.com 프록시를 사용하도록 설정하고
// 그렇지 않을 경우는 직접 접속하도록 조치합니다.
if (dateRange("JAN", "MAR"))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
timeRange
Ļauj izmantot starpniekserveri tikai noteiktā diennakts laikā.
Piemēra komentāru skaidrojums: Tikai no plkst. 8 līdz plkst. 18 izmanto proxy1.example.com, pārējā laikā savienojas tieši.
// 오직 아침 8 시부터 오후 6 시까지만 proxy1.example.com 을 사용하도록
// 하고 그렇지 않을 경우는 직접 접속합니다.
if (timeRange(8, 18))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
alert
Sākotnējā PAC formātā šīs funkcijas nebija, taču Internet Explorer un Firefox to nodrošina problēmu diagnostikai.
Piemēra komentāru skaidrojums: Pārlūka kļūdu konsolē izvada DNS atrisināšanas rezultātu.
// 브라우저의 error 콘솔창에 DNS resolving 한 결과를 출력하도록 합니다.
resolved_host = dnsResolve(host);
alert(resolved_host);