PAC (Proxy auto-config) 文法
備考
文書にエラーがある場合、または提案がある場合は、メッセージを Mudfish フォーラム (https://forums.mudfish.net) に残してください。ここに記載されている例や説明は、以下のサイトの内容を翻訳または参照して作成されています。
Mudfish ブラウザ拡張機能の場合、PAC (Proxy auto-config) ファイル形式をサポートします。
PAC関数
PACフォーマットをサポートするブラウザは、通常、Netscape社によって指定された標準フォーマットで提示された関数をサポートするようになっています。
が通常これらの機能はsandbox内で動作するため、厳密に制限された環境で実行されます。たとえば、User Agent の情報を調べるなどの行為が源泉封鎖されています。
以下は sandbox 環境内で許容される関数について記述しました。
dnsDomainIs
Hostnameを調べて互いに一致する場合はtrueを返します。通常、例外的な個々のhostnameを調べるときに使用されます。
// 만약 hostname 이 google.com 과 같거나 하위 주소들이 매치된다면
// (예를 들어 maps.google.com, www.google.com),
// 브라우저로 하여금 proxy 을 거치지 않고 직접 접속하게 합니다.
if (dnsDomainIs(host, "google.com"))
return "DIRECT";
shExpMatch
HostnameまたはURLをシェル式で指定された文字列と比較して一致する場合はtrueを返します。
// 모든 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
この関数は、hostnameのIPアドレスを調べて特定のサブネットの下に存在する場合はtrueを返します。 hostnameが引数に渡されると、DNS resolvingを介してIP変換操作が行われます。
// 만약 요청한 hostname 의 IP 주소가 (DNS resolving 후) 인자로 넘겨진
// IP 대역에 포함되는 것이면 직접 접속합니다.
if (isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0"))
return "DIRECT";
myIpAddress
現在私のコンピュータのIPアドレスを返します。
// 만약 나의 컴퓨터가 특정 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";