Sintaks PAC (Proxy auto-config)
Jika ada kesalahan atau saran, tinggalkan pesan di Forum Mudfish (https://forums.mudfish.net). Contoh dan penjelasan di sini diterjemahkan atau disusun dengan merujuk situs berikut.
Ekstensi browser Mudfish mendukung format berkas PAC (Proxy auto-config).
Fungsi PAC
Browser yang mendukung PAC umumnya menyediakan fungsi yang ditetapkan dalam format standar Netscape.
Fungsi ini biasanya berjalan dalam sandbox yang sangat dibatasi. Misalnya, mengakses informasi User Agent tidak diperbolehkan.
Berikut fungsi yang diizinkan dalam sandbox.
dnsDomainIs
Memeriksa hostname dan mengembalikan true jika cocok. Biasanya digunakan untuk mengecualikan hostname tertentu.
// Jika hostname cocok dengan google.com atau subdomainnya
// (misalnya maps.google.com, www.google.com),
// browser terhubung langsung tanpa proxy.
if (dnsDomainIs(host, "google.com"))
return "DIRECT";
shExpMatch
Membandingkan hostname atau URL dengan pola ekspresi shell dan mengembalikan true jika cocok.
// Semua permintaan dengan hostname berakhiran .local
// dihubungkan langsung oleh browser tanpa proxy.
if (shExpMatch(url, "*.local"))
return "DIRECT";
// Permintaan ke vpn.domain.com atau semua folder dan berkas
// di bawah http://abcdomain.com/folder/
// dihubungkan langsung tanpa proxy.
if (shExpMatch(host, "vpn.domain.com") ||
shExpMatch(url, "http://abcdomain.com/folder/*"))
return "DIRECT";
isInNet
Memeriksa alamat IP hostname dan mengembalikan true jika berada dalam subnet tertentu. Jika argumennya hostname, resolusi DNS dilakukan untuk memperoleh IP.
// Jika IP hostname yang diminta (setelah resolusi DNS)
// berada dalam rentang IP argumen, hubungkan langsung.
if (isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0"))
return "DIRECT";
myIpAddress
Mengembalikan alamat IP komputer Anda saat ini.
// Jika komputer berada dalam rentang IP tertentu,
// kirim permintaan melalui proxy 10.10.5.1 (port 8080).
if (isInNet(myIpAddress(), "10.10.1.0", "255.255.255.0"))
return "PROXY 10.10.5.1:8080";
dnsResolve
Mengubah hostname menjadi IP melalui resolusi DNS.
// Jika IP host yang diminta berada dalam rentang yang ditentukan,
// hubungkan langsung.
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 hostname tidak mengandung titik (.). Contohnya http://intranet; berguna untuk alamat web jaringan internal.
// Jika pengguna meminta hostname sederhana (misalnya http://intranet/
// atau http://webserver-name01/), hubungkan langsung.
if (isPlainHostName(host))
return "DIRECT";
localHostOrDomainIs
Memeriksa hostname dan mengembalikan true jika bagian hostname cocok.
// Jika hostname yang diminta adalah "www" atau "www.google.com",
// hubungkan langsung.
if (localHostOrDomainIs(host, "www.google.com"))
return "DIRECT";
isResolvable
Mengubah hostname menjadi IP dan mengembalikan true jika berhasil.
Jika resolusi domain gagal, browser dapat membeku atau berhenti sementara. Gunakan dengan hati-hati.
// Jika hostname dapat diresolusikan oleh server DNS,
// kirim permintaan melalui proxy1.example.com.
if (isResolvable(host))
return "PROXY proxy1.example.com:8080";
dnsDomainLevels
Mengembalikan jumlah titik (.) dalam hostname. Dapat digunakan untuk mengecualikan server web internal.
// Jika hostname mengandung setidaknya satu titik,
// gunakan proxy1.example.com; jika tidak, hubungkan langsung.
if (dnsDomainLevels(host) > 0)
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
weekdayRange
Membuat aturan berdasarkan waktu, misalnya hanya mengembalikan pengaturan proxy pada hari tertentu.
// Gunakan proxy1.example.com dari Senin sampai Jumat;
// pada hari lainnya, hubungkan langsung ke internet.
if (weekdayRange("MON", "FRI"))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
dateRange
Membuat aturan berdasarkan waktu, misalnya menerapkan proxy hanya pada bulan tertentu.
// Gunakan proxy1.example.com dari Januari sampai Maret;
// pada bulan lainnya, hubungkan langsung.
if (dateRange("JAN", "MAR"))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
timeRange
Menggunakan proxy hanya pada rentang jam tertentu.
// Gunakan proxy1.example.com hanya pukul 08.00 sampai 18.00;
// di luar itu, hubungkan langsung.
if (timeRange(8, 18))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
alert
Fungsi ini tidak ada pada definisi awal PAC, tetapi disediakan Internet Explorer dan Firefox untuk pemecahan masalah.
// Tampilkan hasil resolusi DNS pada konsol kesalahan browser.
resolved_host = dnsResolve(host);
alert(resolved_host);