PAC (Proxy auto-config) सिंटैक्स
गलती या सुझाव हो तो Mudfish फ़ोरम (https://forums.mudfish.net) पर संदेश दें। उदाहरण और विवरण इन स्रोतों का अनुवाद या संदर्भ लेकर लिखे गए हैं:
Mudfish ब्राउज़र एक्सटेंशन PAC (Proxy auto-config) फ़ाइल प्रारूप समर्थित करता है।
PAC फ़ंक्शन
PAC समर्थित ब्राउज़र सामान्यतः Netscape के मानक प्रारूप में दिए गए फ़ंक्शन उपलब्ध कराते हैं। ये sandbox के कड़े सीमित वातावरण में चलते हैं। उदाहरण के लिए User Agent जानकारी देखना संभव नहीं है।
नीचे sandbox में उपलब्ध फ़ंक्शन हैं। कोड और उसकी मूल कोरियाई टिप्पणियाँ सुरक्षित रखी गई हैं; हर उदाहरण का अर्थ ठीक पहले हिंदी में दिया गया है।
dnsDomainIs
होस्ट नाम जाँचकर मेल होने पर true लौटाता है। आमतौर पर किसी विशेष होस्ट को अपवाद बनाने के लिए उपयोग होता है।
उदाहरण: होस्ट google.com या उसका उपडोमेन, जैसे maps.google.com या www.google.com, हो तो ब्राउज़र बिना प्रॉक्सी सीधे जुड़ता है।
// 만약 hostname 이 google.com 과 같거나 하위 주소들이 매치된다면
// (예를 들어 maps.google.com, www.google.com),
// 브라우저로 하여금 proxy 을 거치지 않고 직접 접속하게 합니다.
if (dnsDomainIs(host, "google.com"))
return "DIRECT";
shExpMatch
होस्ट नाम या URL को shell अभिव्यक्ति से मिलाकर मेल होने पर true लौटाता है।
पहला उदाहरण .local पर समाप्त अनुरोधों को सीधे भेजता है। दूसरा vpn.domain.com तथा http://abcdomain.com/folder/ के नीचे सभी फ़ोल्डरों और फ़ाइलों को बिना प्रॉक्सी भेजता है।
// 모든 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
होस्ट का IP किसी subnet में हो तो true लौटाता है। होस्ट नाम द िए जाने पर DNS resolving से IP में बदलता है।
उदाहरण में DNS resolving के बाद IP दिए गए नेटवर्क क्षेत्र में हो तो सीधा कनेक्शन होता है।
// 만약 요청한 hostname 의 IP 주소가 (DNS resolving 후) 인자로 넘겨진
// IP 대역에 포함되는 것이면 직접 접속합니다.
if (isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0"))
return "DIRECT";
myIpAddress
वर्तमान कंप्यूटर का IP लौटाता है।
कंप्यूटर दिए गए IP क्षेत्र में हो तो अनुरोध 10.10.5.1 प्रॉक्सी के पोर्ट 8080 से जाता है।
// 만약 나의 컴퓨터가 특정 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
DNS resolving से होस्ट नाम को IP में बदलता है।
अनुरोधित होस्ट का IP दिए गए क्षेत्रों में हो तो सीधा कनेक्शन होता है।
// 만약 요청한 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
होस्ट नाम में कोई . (डॉट) न हो तो true लौटाता है। उदाहरण http://intranet है; आंतरिक वेब पते के लिए उपयोगी है।
उदाहरण में http://intranet/ या http://webserver-name01/ जैसे साधारण होस्ट नाम सीधे खुलते हैं।
// 만약 사용자가 plain hostname (예를 들면, http://intranet/ 혹은
// http://webserver-name01/) 를 요청할 경우, 직접 접속하도록 합니다.
if (isPlainHostName(host))
return "DIRECT";
localHostOrDomainIs
होस्ट नाम का भाग मेल खाए तो true लौटाता है।
अनुरोधित होस्ट "www" या "www.google.com" हो तो सीधा कनेक्शन होता है।
// 만약 요청한 hostname 이 "www" 혹은 "www.google.com" 일 경우, 직접
// 접속합니다.
if (localHostOrDomainIs(host, "www.google.com"))
return "DIRECT";
isResolvable
होस्ट नाम सफलतापूर्वक IP में बदले तो true लौटाता है।
डोमेन resolve न हो सके तो ब्राउज़र कुछ देर अटक सकता है। सावधानी से इस्तेमाल करें।
DNS से होस्ट resolve हो सके तो अनुरोध proxy1.example.com प्रॉक्सी से जाता है।
// 만약 요청한 hostname 이 DNS 서버로 부터 resolving 이 될 수 있다면,
// proxy1.example.com 프록시를 통해 요청합니다.
if (isResolvable(host))
return "PROXY proxy1.example.com:8080";
dnsDomainLevels
होस्ट नाम में . (डॉट) की संख्या लौटाता है। आंतरिक वेब सर्वर को अपवाद बनाने के लिए उपयोग कर सकते हैं।
होस्ट में कम से कम एक डॉट हो तो proxy1.example.com प्रॉक्सी इस्तेमाल होती है; नहीं तो सीधा कनेक्शन होता है।
// 만약 hostname 이 . (dot) 을 하나라도 포함하고 있으면 proxy1.example.com
// 프록시를 통해 접속하고 그렇지 않으면 직접 접속합니다.
if (dnsDomainLevels(host) > 0)
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
weekdayRange
समय-आधारित नियम बनाने के लिए, जैसे केवल कुछ दिनों में प्रॉक्सी इस्तेमाल करना।
सोमवार से शुक्रवार proxy1.example.com इस्तेमाल होता है, बाकी दिनों में सीधा इंटरनेट कनेक्शन।
// 만약 월요일부터 금요일 사이에는 proxy1.example.com 프록시를 사용하도록
// 하고 그렇지 않을 경우는 직접 인터넷에 접속하도록 합니다.
if (weekdayRange("MON", "FRI"))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
dateRange
समय-आधारित नियम बनाने के लिए, जैसे केवल कुछ महीनों में प्रॉक्सी इस्तेमाल करना।
जनवरी से मार्च proxy1.example.com इस्तेमाल होता है; बाकी समय सीधा कनेक्शन।
// 만약 1월부터 3월까지는 proxy1.example.com 프록시를 사용하도록 설정하고
// 그렇지 않을 경우는 직접 접속하도록 조치합니다.
if (dateRange("JAN", "MAR"))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
timeRange
दिन के विशेष समय पर ही प्रॉक्सी इस्तेमाल करने के लिए।
सुबह 8 से शाम 6 बजे तक proxy1.example.com इस्तेमाल होता है; बाकी समय सीधा कनेक्शन।
// 오직 아침 8 시부터 오후 6 시까지만 proxy1.example.com 을 사용하도록
// 하고 그렇지 않을 경우는 직접 접속합니다.
if (timeRange(8, 18))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
alert
मूल PAC प्रारूप में यह फ़ंक्शन नहीं था। Internet Explorer और Firefox में समस्या निवारण के लिए परिभाषित है।
ब्राउज़र के error console में DNS resolving का परिणाम दिखाता है।
// 브라우저의 error 콘솔창에 DNS resolving 한 결과를 출력하도록 합니다.
resolved_host = dnsResolve(host);
alert(resolved_host);