Langkau ke kandungan utama

Sintaks PAC (Proxy auto-config)

Maklumat

Jika terdapat ralat dalam dokumen atau anda mempunyai cadangan, tinggalkan mesej dalam forum Mudfish (https://forums.mudfish.net). Contoh dan penerangan di sini ditulis dengan menterjemah atau merujuk kandungan laman berikut.

Sambungan pelayar Mudfish menyokong format fail PAC (Proxy auto-config).

Fungsi PAC​

Pelayar yang menyokong format PAC biasanya menyokong fungsi yang dinyatakan dalam format standard yang ditetapkan oleh Netscape.

Namun, fungsi ini biasanya berjalan dalam sandbox, iaitu persekitaran yang sangat terhad. Contohnya, akses kepada maklumat User Agent disekat sepenuhnya.

Fungsi yang dibenarkan dalam persekitaran sandbox diterangkan di bawah.

dnsDomainIs​

Memeriksa nama hos dan mengembalikan true jika sepadan. Biasanya digunakan untuk memeriksa nama hos tertentu yang ingin dikecualikan.

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

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

shExpMatch​

Membandingkan nama hos atau URL dengan rentetan yang ditentukan sebagai ungkapan shell dan mengembalikan true jika sepadan.

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

Fungsi ini memeriksa alamat IP nama hos dan mengembalikan true jika alamat itu berada dalam subnet tertentu. Jika nama hos diberikan sebagai argumen, penyelesaian DNS digunakan untuk menukarnya kepada IP.

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

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

myIpAddress​

Mengembalikan alamat IP komputer semasa.

   // 만약 나의 컴퓨터가 특정 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​

Menukar nama hos kepada alamat IP melalui penyelesaian DNS.

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

Mengembalikan true jika nama hos tidak mengandungi sebarang aksara . (titik). Contohnya, http://intranet. Fungsi ini biasanya boleh digunakan ketika mengakses alamat web rangkaian dalaman.

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

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

localHostOrDomainIs​

Memeriksa nama hos dan mengembalikan true jika bahagian nama hos sepadan.

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

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

isResolvable​

Menukar nama hos kepada alamat IP dan mengembalikan true jika berjaya.

Jika nama domain tidak dapat diselesaikan dengan betul, pelayar mungkin terhenti seketika. Gunakan fungsi ini dengan berhati-hati.

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

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

dnsDomainLevels​

Memeriksa nama hos dan mengembalikan bilangan aksara . (titik) dalam rentetan tersebut. Contohnya, ia boleh digunakan untuk mengecualikan pelayan web rangkaian dalaman.

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

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

weekdayRange​

Boleh digunakan untuk mencipta peraturan berdasarkan masa, contohnya mengembalikan tetapan proksi hanya pada hari tertentu.

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

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

dateRange​

Boleh digunakan untuk mencipta peraturan berdasarkan masa, contohnya menggunakan proksi hanya pada bulan tertentu.


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

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

timeRange​

Boleh digunakan apabila anda ingin menggunakan proksi hanya pada waktu tertentu.

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

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

alert​

Fungsi ini tiada ketika format PAC mula ditakrifkan, tetapi disediakan oleh pelayar Internet Explorer dan Firefox untuk penyelesaian masalah.

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

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