Негізгі мазмұнға өту

PAC (Proxy auto-config) синтаксисі

Ақпарат

Құжатта қате байқасаңыз немесе ұсыныстарыңыз болса, Mudfish форумында (https://forums.mudfish.net) хабарлама қалдырыңыз. Мұнда келтірілген мысалдар мен сипаттамалар келесі сайттардың мазмұнына сүйеніп жазылған:

Mudfish браузер кеңейтімдері PAC (Proxy auto-config) файл пішімін қолдайды.

PAC функциялары​

PAC пішімін қолдайтын браузерлер әдетте Netscape компаниясы бекіткен стандартты сипаттамада көрсетілген функцияларды қолдайды.

Алайда, бұл функциялар құмсалғыш (sandbox) ішінде орындалатындықтан, қатаң шектелген ортада жұмыс істейді. Мысалы, User Agent ақпаратын қарау сияқты әрекеттерге түбегейлі тыйым салынған.

Төменде sandbox ортасында рұқсат етілген функциялар сипатталған:

dnsDomainIs​

Hostname мәнін тексеріп, сәйкес келсе true қайтарады. Әдетте ерекшелік ретінде жеке хост атауларын тексеру үшін қолданылады.

   // Егер хост атауы google.com-ға тең болса немесе оның қосалқы мекенжайлары сәйкес келсе
// (мысалы, maps.google.com, www.google.com),
// браузерге проксиді айналып өтіп, тікелей қосылуға нұсқау береді.

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

shExpMatch​

Hostname немесе URL мекенжайын shell үлгісінде көрсетілген жолмен салыстырып, сәйкес келсе true қайтарады.

   // .local-мен аяқталатын барлық сұраулар мен хост атаулары
// браузер арқылы проксисіз тікелей жіберіледі.

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

// vpn.domain.com сайтына немесе
// http://abcdomain.com/folder/ астындағы кез келген қалтаға не файлға бағытталған
// сұраулар проксисіз тікелей орындалады.

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

isInNet​

Бұл функция хосттың IP мекенжайын тексеріп, ол белгілі бір ішкі желіде (subnet) орналасқан жағдайда, true қайтарады. Егер аргумент ретінде hostname берілсе, DNS шешу арқылы оны IP-ге түрлендіреді.

   // Егер сұралған хосттың IP мекенжайы (DNS шешілген соң) аргументте көрсетілген
// IP желісіне кірсе, тікелей қосылады.

if (isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0"))
return "DIRECT";

myIpAddress​

Ағымдағы компьютердің IP мекенжайын қайтарады.

   // Егер менің компьютерім белгілі бір IP диапазонына жататын болса,
// 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 шешуі арқылы хост атауын IP мекенжайына айналдырады.

   // Егер сұралған хосттың 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/), тікелей қосылады.

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

localHostOrDomainIs​

Hostname атауын тексеріп, олар дәл сәйкес келсе true қайтарады.

   // Егер сұралған хост "www" немесе "www.google.com" болса,
// тікелей қосылады.

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

isResolvable​

Хост атауын IP мекенжайына сәтті айналдыра алса, true қайтарады.

Егер домендік мекенжай дұрыс анықталмаса, браузер біраз уақытқа қатып қалуы мүмкін. Сондықтан мұқият қолдану қажет.

   // Егер сұралған хост атауы DNS серверінен табылып шешілсе,
// proxy1.example.com:8080 проксиі арқылы сұрау жасалады.

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

dnsDomainLevels​

Hostname ішінде неше нүкте . бар екенін санайды. Мысалы, ішкі веб-серверлерді ерекшелік ретінде көрсету кезінде қолданылады.

   // Егер хост атауында кемінде бір нүкте болса, proxy1.example.com:8080
// арқылы өтеді, әйтпесе тікелей қосылады.

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

weekdayRange​

Уақытқа негізделген ережелерді жасау үшін қолданылады. Мысалы, белгілі бір апта күндерінде ғана проксиді іске қосу қажет болғанда.

   // Дүйсенбіден жұмаға дейін proxy1.example.com:8080 қолданылады,
// ал қалған күндері тікелей қосылады.

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

dateRange​

Уақытқа негізделген ереже құру үшін қолданылады. Мысалы, белгілі бір айларда ғана проксиді іске қосу қажет болғанда.

   // Қаңтардан наурызға дейін proxy1.example.com:8080 проксиі қолданылады,
// ал қалған айларда тікелей қосылады.

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

timeRange​

Тек тәуліктің белгілі бір уақыт аралығында ғана проксиді пайдалану үшін қолданылады.

   // Тек таңғы 08:00 мен кешкі 18:00 аралығында ғана proxy1.example.com қолданылады,
// қалған уақытта тікелей байланыс орнатылады.

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

alert​

Бұл функция PAC пішімі алғаш рет жасалғанда болмаған, бірақ ақаулықтарды жөндеу (troubleshooting) мақсатында Internet Explorer мен Firefox браузерлерінде анықталған.

   // Браузердің қателер консолінде DNS шешімінің нәтижесін шығарады.

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