pac is a gem to parse proxy auto-config files. pac uses a JavaScript runtime to evaulate a proxy auto-config file the same way a browser does to determine what proxy (if any at all) should a program use to connect to a server. You must install on of the supported JavaScript runtimes: therubyracer, therubyrhino, johnson or mustang.
Big thanks to sstephenson's execjs for the runtime wrapper code.
gem install pac
git clone https://github.com/samuelkadolph/ruby-pac
cd ruby-pac && rake install
After installing the pac
gem you must install a JavaScript runtime. Compatible runtimes include:
- therubyracer Google V8 embedded within Ruby
- therubyrhino Mozilla Rhino embedded within JRuby
- johnson Mozilla SpiderMonkey embedded within Ruby 1.8
- mustang Mustang V8 embedded within Ruby
parsepac http://cloud.github.com/downloads/samuelkadolph/ruby-pac/sample.pac https://github.com
parsepac http://cloud.github.com/downloads/samuelkadolph/ruby-pac/sample.pac http://ruby-lang.com
parsepac http://cloud.github.com/downloads/samuelkadolph/ruby-pac/sample.pac http://samuel.kadolph.com
require "rubygems"
require "pac"
pac = PAC.load("http://cloud.github.com/downloads/samuelkadolph/ruby-pac/sample.pac")
pac.find("https://github.com") # => "PROXY proxy:8080"
pac.find("http://ruby-lang.com") # => "PROXY proxy:8080; DIRECT"
pac.find("http://samuel.kadolph.com") # => "DIRECT"
pac = PAC.read("sample.pac")
pac = PAC.source <<-JS
function FindProxyForURL(url, host) {
return "DIRECT";
}
JS
pac.find("http://localhost") # => "DIRECT"
- isPlainHostName(host)
- dnsDomainIs(host, domain)
- localHostOrDomainIs(host, hostdom)
- isResolvable(host)
- isInNet(host, pattern, mask)
- dnsResolve(host)
- myIpAddress()
- dnsDomainLevels(host)
- shExpMatch(str, shexp)
- weekdayRange(wd1, wd2, gmt)
- dateRange(*args)
- timeRange(*args)
If you want to contribute: fork, branch & pull request.
bundle install
rake test
rake test:rubyracer