PAC (Proxy auto-config) தொடரியல்
ஆவணத்தில் ஏதேனும் பிழைகள் இருந்தாலோ அல்லது பரிந்துரைகள் இருந்தாலோ Mudfish மன்றத்தில் (https://forums.mudfish.net) செய்தியைப் பகிரவும். இங்கு குறிப்பிடப்பட்டுள்ள எடுத்துக்காட்டுகளும் விளக்கங்களும் பின்வரும் தளங்களின் உள்ளடக்கங்களை மொழிபெயர்த்தோ அல்லது குறிப்புகளாகக் கொண்டோ எழுதப்பட்டவை:
Mudfish உலாவி நீட்டிப்பு PAC (Proxy auto-config) கோப்பு வடிவத்தை ஆதரிக்கிறது.
PAC சார்புகள் (Functions)
PAC வடிவத்தை ஆதரிக்கும் உலாவிகள் பொதுவாக Netscape நிறுவனம் நிர்ணயித்த நிலையான வடிவத்தில் முன்மொழியப்பட்ட சார்புகளை ஆதரிக்கின்றன.
இருப்பினும் வழக்கமாக இந்த அம்சங்கள் சாண்ட்பாக்ஸ் (sandbox) சூழலில் இயங்குவதால் கடுமையான கட்டுப்பாடுகளுக்கு உட்பட்ட சூழலிலேயே செயல்படுத்தப்படுகின்றன. உதாரணமாக User Agent தகவலை ஆய்வு செய்வது போன்ற செயல்கள் முற்றிலும் தடுக்கப்பட்டுள்ளன.
சாண்ட்பாக்ஸ் சூழலில் அனுமதிக்கப்படும் சார்புகள் கீழே விவரிக்கப்பட்டுள்ளன:
dnsDomainIs
Hostname-ஐச் சோதித்து அவை பொருந்தினால் true என்பதைத் திருப்பி அனுப்பும். பொதுவாக விதிவிலக்கான தனிப்பட்ட hostname-களைச் சோதிக்க இது பயன்படுகிறது.
// hostname ஆனது google.com ஆகவோ அல்லது அதன் துணை முகவரிகளாகவோ பொருந்தினால்
// (எடுத்துக்காட்டாக maps.google.com, www.google.com),
// உலாவியை Proxy வழியாகச் செல்லாமல் நேரடியாக இணைக்கச் செய்கிறது.
if (dnsDomainIs(host, "google.com"))
return "DIRECT";
shExpMatch
Hostname அல்லது URL-ஐ ஷெல் கோவையின் (shell expression) சரம் கொண்டு ஒப்பிட்டுப் பொருந்தினால் true என்பதைத் திருப்பியனுப்பும்.
// .local என்று முடியும் அனைத்து கோரிக்கைகளுக்கும்
// உலாவி 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
இந்த சார்பு hostname-இன் IP முகவரியைச் சோதித்து, அது குறிப்பிட்ட சப்நெட்டில் (subnet) இருந்தால் true என்பதைத் திருப்பியனுப்புகிறது. hostname ஒரு வாதமாக (argument) அனுப்பப்பட்டால், அது 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 என்ற Proxy வழியே கோரிக்கையை அனுப்புகிறது.
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 போன்ற உள்ளக நெட்வொர்க் வலை முகவரிகளை அணுகும்போது இது பயன்படுகிறது.
// பயனர் எளிய hostname-ஐக் (உதாரணமாக http://intranet/ அல்லது
// http://webserver-name01/) கோரினால், நேரடியாக இணைக்கச் செய்கிறது.
if (isPlainHostName(host))
return "DIRECT";
localHostOrDomainIs
Hostname-ஐச் சோதித்து அதன் பெயர் பகுதி பொருந்தினால் true என்பதைத் திருப்பியனுப்பும்.
// கோரப்பட்ட hostname "www" அல்லது "www.google.com" எனில்,
// நேரடியாக இணைக்கிறது.
if (localHostOrDomainIs(host, "www.google.com"))
return "DIRECT";
isResolvable
Hostname-ஐ IP முகவரியாக மாற்ற முயற்சி செய்து, வெற்றி பெற்றால் true என்பதைத் திருப்பியனுப்பும்.
டொமைன் முகவரியை DNS மூலம் சரியாகத் தீர்க்க (resolve) முடியாவிட்டால் உலாவி சிறிது நேரம் முடங்கிப் போகலாம் (freeze). இதை மிகவும் கவனமாகப் பயன்படுத்த வேண்டும்.
// கோரப்பட்ட hostname-ஐ DNS சேவையகம் மூலம் தீர்க்க முடிந்தால்,
// proxy1.example.com:8080 என்ற Proxy வழியாகக் கோருகிறது.
if (isResolvable(host))
return "PROXY proxy1.example.com:8080";
dnsDomainLevels
Hostname-இல் எத்தனை . (புள்ளி) எழுத்துகள் உள்ளன என்பதைக் கணக்கிட்டு அந்த எண்ணிக்கையைத் திருப்பித் தரும். உதாரணமாக உள்ளக நெட்வொர்க் இணைய சேவையகங்களை விதிவிலக்காகக் குறிப்பிட இதைப் பயன்படுத்தலாம்.
// hostname-இல் குறைந்தபட்சம் ஒரு புள்ளியாவது (.) இருந்தால் proxy1.example.com:8080
// Proxy வழியே இணைக்கிறது, இல்லையெனில் நேரடியாக இணைக்கிறது.
if (dnsDomainLevels(host) > 0)
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
weekdayRange
வார நாட்களை அடிப்படையாகக் கொண்டு விதிகளை உருவாக்கப் பயன்படுகிறது; உதாரணமாக குறிப்பிட்ட நாட்களில் மட்டுமே Proxy அமைப்பை இயக்க விரும்பும்போது இதைப் பயன்படுத்தலாம்.
// திங்கள் முதல் வெள்ளி வரை proxy1.example.com:8080 Proxy-ஐப் பயன்படுத்துகிறது;
// மற்ற நாட்களில் இணையத்துடன் நேரடியாக இணைகிறது.
if (weekdayRange("MON", "FRI"))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
dateRange
தேதி வரம்பை அடிப்படையாகக் கொண்டு விதிகளை உருவாக்கப் பயன்படுகிறது; உதாரணமாக குறிப்பிட்ட மாதங்களில் மட்டுமே Proxy-ஐப் பயன்படுத்த இதைப் பயன்படுத்தலாம்.
// ஜனவரி முதல் மார்ச் வரை proxy1.example.com:8080 Proxy-ஐப் பயன்படுத்துகிறது;
// மற்ற மாதங்களில் நேரடியாக இணைகிறது.
if (dateRange("JAN", "MAR"))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
timeRange
குறிப்பிட்ட நேர இடைவெளியில் மட்டும் Proxy-ஐப் பயன்படுத்த விரும்பும்போது இதைப் பயன்படுத்தலாம்.
// காலை 8 மணி முதல் மாலை 6 மணி வரை மட்டுமே proxy1.example.com Proxy-ஐப் பயன்படுத்துகிறது;
// மற்ற நேரங்களில் நேரடியாக இணைகிறது.
if (timeRange(8, 18))
return "PROXY proxy1.example.com:8080";
else
return "DIRECT";
alert
ஆரம்பத்தில் PAC வடிவம் வரையறுக்கப்பட்ட போது இந்தச் சார்பு இல்லை; எனினும் Internet Explorer மற்றும் Firefox உலாவிகளில் பிழைத்திருத்தம் (troubleshooting) செய்வதற்காக இது வரையறுக்கப்பட்டுள்ளது.
// உலாவியின் பிழைக் கன்சோலில் DNS resolving முடிவை அச்சிடச் செய்கிறது.
resolved_host = dnsResolve(host);
alert(resolved_host);