PAC (Proxy auto-config) 문법
문서에 오류가 있거나 건의 사항이 있으시면 메세지를 미꾸라지 포럼 (https://forums.mudfish.net) 에 남겨주세요.
미꾸라지의 웹 가속 서비스는 WPAD(Web Proxy Auto-Discovery) 프로토콜을 기반으로 실행이 되는데, 그 중 PAC (Proxy auto-config) 파일 포맷에 따라 작동을 하게 됩니다.
여기에 언급된 예제나 설명들은 아래의 사이트의 내용을 번역하거나 참고하여 작성되었습니다.
PAC 함수들
PAC 포맷을 지원하는 브라우저들은 보통 Netscape 사에 지정한 표준 포맷에서 제시된 함수들을 지원하도록 되어 있습니다.
하지만 보통 이러한 기능들은 sandbox 내에서 작동하기 때문에 엄격히 제한된 환경에서 실행되게 됩니다. 예를 들어 User Agent 정보를 살펴본다거나 하는 행위가 원천 봉쇄되어 있습니다.
아래는 sandbox 환경내에서 허용되는 함수에 대해서 기술을 하였습니다.
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 표현식으로 지정된 문자열과 비교를 하여 매치가 된다면 true 을 리턴합니다.
// 모든 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";