Sintaks PAC (Proxy auto-config)
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);