Lewati ke konten utama

Sintaks PAC (Proxy auto-config)

info

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);