مرکزی مواد پر جائیں

PAC (Proxy auto-config) نحو

معلومات

اگر دستاویز میں کوئی غلطی ہو یا کوئی تجویز ہو تو براہِ کرم Mudfish فورم (https://forums.mudfish.net) پر پیغام چھوڑیں۔ یہاں مذکور مثالیں اور وضاحتیں درج ذیل سائٹس کے مواد کا ترجمہ کر کے یا ان سے رجوع کر کے لکھی گئی ہیں۔

Mudfish براؤزر ایکسٹینشن PAC (Proxy auto-config) فائل فارمیٹ کو سپورٹ کرتی ہے۔

PAC فنکشنز​

PAC فارمیٹ کو سپورٹ کرنے والے براؤزرز عموماً Netscape کی مقرر کردہ معیاری فارمیٹ میں پیش کیے گئے فنکشنز کو سپورٹ کرتے ہیں۔

تاہم یہ فنکشنز عام طور پر sandbox کے اندر چلتے ہیں، اس لیے سخت پابندیوں والے ماحول میں عمل میں آتے ہیں۔ مثال کے طور پر User Agent کی معلومات دیکھنے جیسے اعمال بالکل بلاک ہوتے ہیں۔

نیچے sandbox ماحول میں اجازت یافتہ فنکشنز بیان کیے گئے ہیں۔

dnsDomainIs​

Hostname کو جانچتا ہے اور مماثلت ہونے پر true واپس کرتا ہے۔ عموماً مخصوص استثنائی hostnames کو جانچنے کے لیے استعمال ہوتا ہے۔

   // اگر hostname، google.com کے برابر ہو یا اس کے ذیلی ایڈریسز سے میل کھائے
// (مثلاً maps.google.com، www.google.com)،
// تو براؤزر proxy سے گزرے بغیر براہِ راست کنیکٹ ہوگا۔

if (dnsDomainIs(host, "google.com"))
return "DIRECT";

shExpMatch​

Hostname یا URL کا موازنہ shell ایکسپریشن کے طور پر دی گئی سٹرنگ سے کرتا ہے اور مماثلت ہونے پر true واپس کرتا ہے۔

   // تمام requests (.local پر ختم ہونے والے تمام hostnames) کے لیے
// براؤزر proxy سے گزرے بغیر براہِ راست کنیکٹ ہوگا۔

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

// vpn.domain.com تک رسائی کی کوشش، یا
// http://abcdomain.com/folder/ کے تحت تمام فولڈرز یا فائلوں تک رسائی کی
// requests proxy سے گزرے بغیر براہِ راست کنیکٹ ہوں گی۔

if (shExpMatch(host, "vpn.domain.com") ||
shExpMatch(url, "http://abcdomain.com/folder/*"))
return "DIRECT";

isInNet​

یہ فنکشن hostname کا IP address جانچتا ہے اور اگر وہ کسی مخصوص subnet میں ہو تو true واپس کرتا ہے۔ اگر hostname بطور آرگومنٹ دیا جائے تو 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 رینج میں ہو تو proxy 10.10.5.1 (پورٹ 8080)
// کے ذریعے request کریں۔

if (isInNet(myIpAddress(), "10.10.1.0", "255.255.255.0"))
return "PROXY 10.10.5.1:8080";

dnsResolve​

DNS resolving کے ذریعے hostname کو 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​

اگر hostname میں کوئی . (ڈاٹ) کریکٹر نہ ہو تو true واپس کرتا ہے۔ مثلاً http://intranet جیسا ایڈریس، جو عموماً اندرونی نیٹ ورک کے ویب ایڈریسز تک رسائی کے لیے استعمال ہو سکتا ہے۔

   // اگر صارف plain hostname (مثلاً http://intranet/ یا
// http://webserver-name01/) کی request کرے تو براہِ راست کنیکٹ کریں۔

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

localHostOrDomainIs​

Hostname کو جانچتا ہے اور hostname کا حصہ مماثل ہونے پر true واپس کرتا ہے۔

   // اگر درخواست کردہ hostname "www" یا "www.google.com" ہو تو براہِ راست
// کنیکٹ کریں۔

if (localHostOrDomainIs(host, "www.google.com"))
return "DIRECT";

isResolvable​

Hostname کو IP ایڈریس میں تبدیل کرنے کی کوشش کرتا ہے اور کامیاب ہونے پر true واپس کرتا ہے۔

اگر domain ایڈریس کی resolving درست طریقے سے نہ ہو تو براؤزر خود کچھ دیر کے لیے فریز ہو سکتا ہے (رک سکتا ہے)۔ اسے احتیاط سے استعمال کرنا چاہیے۔

   // اگر درخواست کردہ hostname DNS سرور سے resolve ہو سکتا ہو تو
// proxy1.example.com پروکسی کے ذریعے request کریں۔

if (isResolvable(host))
return "PROXY proxy1.example.com:8080";

dnsDomainLevels​

Hostname کو جانچتا ہے اور واپس کرتا ہے کہ اس سٹرنگ میں کتنے . (ڈاٹ) موجود ہیں۔ مثلاً اندرونی نیٹ ورک کے ویب سرورز کو استثنا بنانے کے لیے استعمال ہو سکتا ہے۔

   // اگر hostname میں ایک بھی . (ڈاٹ) ہو تو proxy1.example.com پروکسی کے ذریعے
// کنیکٹ کریں، ورنہ براہِ راست کنیکٹ کریں۔

if (dnsDomainLevels(host) > 0)
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";

weekdayRange​

وقت کی بنیاد پر rule بناتے وقت استعمال ہو سکتا ہے، مثلاً جب آپ چاہیں کہ proxy سیٹنگ صرف مخصوص دنوں میں واپس ہو۔

   // اگر پیر سے جمعہ کے درمیان ہو تو proxy1.example.com پروکسی استعمال کریں،
// ورنہ براہِ راست انٹرنیٹ سے کنیکٹ کریں۔

if (weekdayRange("MON", "FRI"))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";

dateRange​

وقت کی بنیاد پر rule بناتے وقت استعمال ہو سکتا ہے، مثلاً جب آپ proxy صرف مخصوص مہینوں میں لاگو کرنا چاہیں۔


// اگر جنوری سے مارچ تک ہو تو proxy1.example.com پروکسی استعمال کریں،
// ورنہ براہِ راست کنیکٹ کریں۔

if (dateRange("JAN", "MAR"))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";

timeRange​

جب آپ proxy کو صرف مخصوص اوقات میں استعمال کرنا چاہیں تو یہ استعمال ہو سکتا ہے۔

   // صرف صبح 8 بجے سے شام 6 بجے تک proxy1.example.com استعمال کریں،
// ورنہ براہِ راست کنیکٹ کریں۔

if (timeRange(8, 18))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";

alert​

یہ فنکشن PAC فارمیٹ کی ابتدائی تعریف میں موجود نہیں تھا، لیکن troubleshooting کے لیے Internet Explorer اور Firefox براؤزرز میں اسے متعارف کرایا گیا ہے۔

   // براؤزر کی error کنسول ونڈو میں DNS resolving کا نتیجہ پرنٹ کریں۔

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