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.

   // Jika nama hos ialah google.com atau subdomainnya
// (contohnya maps.google.com atau www.google.com),
// sambungkan pelayar secara terus tanpa proksi.

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.

   // Semua permintaan yang sepadan dengan nama hos berakhir .local
// disambungkan secara terus tanpa proksi.

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

// Permintaan ke vpn.domain.com atau mana-mana fail dan folder
// di bawah http://abcdomain.com/folder/
// disambungkan secara terus tanpa proksi.

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.

   // Jika IP nama hos selepas penyelesaian DNS berada dalam
// julat IP yang diberikan, sambungkan secara terus.

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

myIpAddress​

Mengembalikan alamat IP komputer semasa.

   // Jika komputer berada dalam julat IP ini, hantar permintaan
// melalui proksi 10.10.5.1 pada port 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.

   // Jika IP hos yang diminta berada dalam julat yang ditentukan,
// sambungkan secara terus.

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.

   // Jika pengguna meminta nama hos biasa, contohnya http://intranet/
// atau http://webserver-name01/, sambungkan secara terus.

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

localHostOrDomainIs​

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

   // Jika nama hos yang diminta ialah "www" atau "www.google.com",
// sambungkan secara terus.

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.

   // Jika nama hos dapat diselesaikan oleh pelayan DNS,
// hantar permintaan melalui proksi 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.

   // Jika nama hos mengandungi sekurang-kurangnya satu titik, gunakan
// proksi proxy1.example.com. Jika tidak, sambungkan secara terus.

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.

   // Gunakan proksi proxy1.example.com dari Isnin hingga Jumaat.
// Pada hari lain, sambungkan terus ke Internet.

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.


// Gunakan proksi proxy1.example.com dari Januari hingga Mac.
// Pada bulan lain, sambungkan secara terus.

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.

   // Gunakan proxy1.example.com hanya dari pukul 08:00 hingga 18:00.
// Pada waktu lain, sambungkan secara terus.

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.

   // Paparkan hasil penyelesaian DNS dalam konsol ralat pelayar.

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