proxy_pac_rb 0.2.6 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/README.md +1 -1
- data/bin/pprb +11 -3
- data/features/resolve_proxy.feature +13 -0
- data/lib/proxy_pac_rb/version.rb +1 -1
- data/script/acceptance_test +4 -1
- data/script/ci +4 -0
- data/script/test_web +15 -0
- data/script/unit_test +4 -0
- metadata +2 -4
- data/bin/parsepac +0 -110
- data/tmp/aruba/.keep +0 -0
data/Gemfile
CHANGED
@@ -35,6 +35,7 @@ gem 'fedux_org-stdlib', group: [:development, :test], require: false
|
|
35
35
|
gem 'bundler', '~> 1.3', group: [:development, :test], require: false
|
36
36
|
gem 'erubis', group: [:development, :test]
|
37
37
|
gem 'versionomy', group: [:development, :test], require: false
|
38
|
+
gem 'sinatra', group: [:development, :test], require: 'sinatra/base'
|
38
39
|
gem 'activesupport', '~> 4.0.0', group: [:development, :test], require: false
|
39
40
|
|
40
41
|
gem 'awesome_print', group: [:development, :test], require: 'ap'
|
data/README.md
CHANGED
@@ -55,7 +55,7 @@ After installing the `proxy_pac_rb` gem you must install a JavaScript runtime. C
|
|
55
55
|
curl -L -o sample.pac https://github.com/dg-vrnetze/proxy_pac_rb/raw/master/files/sample.pac
|
56
56
|
|
57
57
|
# Parse pac
|
58
|
-
|
58
|
+
pprb -c 127.0.0.1 -t "2014-03-09 12:00:00" -p sample.pac https://github.com
|
59
59
|
|
60
60
|
# => url: result
|
61
61
|
# => https://github.com: DIRECT
|
data/bin/pprb
CHANGED
@@ -6,6 +6,8 @@ require 'proxy_pac_rb'
|
|
6
6
|
require 'ostruct'
|
7
7
|
require 'ipaddr'
|
8
8
|
require 'optparse'
|
9
|
+
require 'addressable/uri'
|
10
|
+
require 'open-uri'
|
9
11
|
|
10
12
|
module ProxyPacRb
|
11
13
|
class Cli
|
@@ -52,7 +54,7 @@ module ProxyPacRb
|
|
52
54
|
Validator.new(cli.options).validate
|
53
55
|
|
54
56
|
environment = ProxyPacRb::Environment.new(client_ip: cli.options.client_ip, time: cli.options.time)
|
55
|
-
file = ProxyPacRb::Parser.new(environment).
|
57
|
+
file = ProxyPacRb::Parser.new(environment).source(cli.options.proxy_pac_file)
|
56
58
|
|
57
59
|
$stderr.printf("%30s: %-s\n", 'url', 'result')
|
58
60
|
cli.options.urls.each do |u|
|
@@ -83,8 +85,14 @@ module ProxyPacRb
|
|
83
85
|
options.time = Time.parse(t)
|
84
86
|
end
|
85
87
|
|
86
|
-
opts.on('-p', '--proxy-pac FILE', 'Proxy.pac-file') do |f|
|
87
|
-
|
88
|
+
opts.on('-p', '--proxy-pac FILE|URL', 'Proxy.pac-file') do |f|
|
89
|
+
uri = Addressable::URI.parse(f)
|
90
|
+
|
91
|
+
if uri.host.nil?
|
92
|
+
uri.path = ::File.expand_path(uri.path)
|
93
|
+
end
|
94
|
+
|
95
|
+
options.proxy_pac_file = open(uri, { proxy: false }).read
|
88
96
|
end
|
89
97
|
|
90
98
|
opts.on_tail("-h", "--help", "Show this message") do
|
@@ -30,6 +30,19 @@ Feature: Resolve proxy
|
|
30
30
|
PROXY localhost:3128
|
31
31
|
"""
|
32
32
|
|
33
|
+
Scenario: Existing proxy.pac with url
|
34
|
+
Given a file named "proxy.pac" with:
|
35
|
+
"""
|
36
|
+
function FindProxyForURL(url, host) {
|
37
|
+
return 'PROXY localhost:3128';
|
38
|
+
}
|
39
|
+
"""
|
40
|
+
When I successfully run `pprb -p http://127.0.0.1:4567/proxy.pac www.example.org`
|
41
|
+
Then the output should contain:
|
42
|
+
"""
|
43
|
+
PROXY localhost:3128
|
44
|
+
"""
|
45
|
+
|
33
46
|
Scenario: Non-Existing proxy.pac
|
34
47
|
When I run `pprb -p proxy.pac www.example.org`
|
35
48
|
Then the output should contain:
|
data/lib/proxy_pac_rb/version.rb
CHANGED
data/script/acceptance_test
CHANGED
data/script/ci
CHANGED
data/script/test_web
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'bundler'
|
4
|
+
Bundler.require :default, :test, :development
|
5
|
+
|
6
|
+
require 'sinatra/base'
|
7
|
+
|
8
|
+
class Server < Sinatra::Base
|
9
|
+
get '/:name' do
|
10
|
+
root_directory = Pathname.new(File.expand_path('../../tmp/aruba', __FILE__))
|
11
|
+
File.read(File.join(root_directory, params[:name]))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
Server.run!
|
data/script/unit_test
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: proxy_pac_rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -55,7 +55,6 @@ description: ! 'This gem uses a JavaScript runtime to evaulate a proxy auto-conf
|
|
55
55
|
email:
|
56
56
|
- dg1@vrnetze.de
|
57
57
|
executables:
|
58
|
-
- parsepac
|
59
58
|
- pprb
|
60
59
|
extensions: []
|
61
60
|
extra_rdoc_files: []
|
@@ -70,7 +69,6 @@ files:
|
|
70
69
|
- LICENSE.md
|
71
70
|
- README.md
|
72
71
|
- Rakefile
|
73
|
-
- bin/parsepac
|
74
72
|
- bin/pprb
|
75
73
|
- features/.keep
|
76
74
|
- features/resolve_proxy.feature
|
@@ -97,6 +95,7 @@ files:
|
|
97
95
|
- script/ci
|
98
96
|
- script/console
|
99
97
|
- script/release
|
98
|
+
- script/test_web
|
100
99
|
- script/unit_test
|
101
100
|
- spec/environment_spec.rb
|
102
101
|
- spec/file_spec.rb
|
@@ -107,7 +106,6 @@ files:
|
|
107
106
|
- spec/support/reporting.rb
|
108
107
|
- spec/support/rspec.rb
|
109
108
|
- spec/support/string.rb
|
110
|
-
- tmp/aruba/.keep
|
111
109
|
- tmp/functions.js
|
112
110
|
- tmp/functions.rb
|
113
111
|
- tmp/sample.pac
|
data/bin/parsepac
DELETED
@@ -1,110 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
$LOAD_PATH << File.expand_path('../../lib', __FILE__)
|
4
|
-
|
5
|
-
require 'proxy_pac_rb'
|
6
|
-
require 'ostruct'
|
7
|
-
require 'ipaddr'
|
8
|
-
require 'optparse'
|
9
|
-
|
10
|
-
module ProxyPacRb
|
11
|
-
class Cli
|
12
|
-
|
13
|
-
class Validator
|
14
|
-
private
|
15
|
-
|
16
|
-
attr_reader :options
|
17
|
-
|
18
|
-
public
|
19
|
-
|
20
|
-
def initialize(options)
|
21
|
-
@options = options
|
22
|
-
end
|
23
|
-
|
24
|
-
def validate
|
25
|
-
exit_with_message 'You need to provide at least one url. Multiple urls need to be separated by a space.' if empty_url?
|
26
|
-
exit_with_message 'You need to provide a proxy pac file.' if empty_pac_file?
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
def empty_url?
|
32
|
-
options.urls.empty?
|
33
|
-
end
|
34
|
-
|
35
|
-
def empty_pac_file?
|
36
|
-
options.proxy_pac_file.nil?
|
37
|
-
end
|
38
|
-
|
39
|
-
def exit_with_message(msg)
|
40
|
-
$stderr.puts msg
|
41
|
-
exit 1
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
attr_accessor :options
|
47
|
-
|
48
|
-
def self.start(argv = $*)
|
49
|
-
cli = new
|
50
|
-
cli.parse(argv)
|
51
|
-
|
52
|
-
Validator.new(cli.options).validate
|
53
|
-
|
54
|
-
environment = ProxyPacRb::Environment.new(client_ip: cli.options.client_ip, time: cli.options.time)
|
55
|
-
file = ProxyPacRb::Parser.new(environment).read(cli.options.proxy_pac_file)
|
56
|
-
|
57
|
-
$stderr.printf("%30s: %-s\n", 'url', 'result')
|
58
|
-
cli.options.urls.each do |u|
|
59
|
-
begin
|
60
|
-
$stderr.printf("%30s: %-s\n", u, file.find(u))
|
61
|
-
rescue Exceptions::UrlInvalid
|
62
|
-
$stderr.puts "You provide an invalid url \"#{u}\". Please use a correct one."
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def initialize
|
68
|
-
@options = OpenStruct.new
|
69
|
-
|
70
|
-
@options.client_ip = IPAddr.new('127.0.0.1')
|
71
|
-
@options.time = Time.now
|
72
|
-
end
|
73
|
-
|
74
|
-
def parse(argv)
|
75
|
-
parser = OptionParser.new do |opts|
|
76
|
-
opts.banner = "Usage: parsepac [options] url1 [url2..urln]"
|
77
|
-
|
78
|
-
opts.on('-c', '--client-ip IP', 'Client ip address') do |i|
|
79
|
-
options.client_ip = IPAddr.new(i)
|
80
|
-
end
|
81
|
-
|
82
|
-
opts.on('-t', '--time YYYY-MM-DD HH:MM:SS', 'Time to use during lookup url') do |t|
|
83
|
-
options.time = Time.parse(t)
|
84
|
-
end
|
85
|
-
|
86
|
-
opts.on('-p', '--proxy-pac FILE', 'Proxy.pac-file') do |f|
|
87
|
-
options.proxy_pac_file = ::File.expand_path(::File.join(Dir.getwd, f))
|
88
|
-
end
|
89
|
-
|
90
|
-
opts.on_tail("-h", "--help", "Show this message") do
|
91
|
-
$stderr.puts opts
|
92
|
-
exit
|
93
|
-
end
|
94
|
-
|
95
|
-
opts.on_tail("--version", "Show version") do
|
96
|
-
$stderr.puts ProxyPacRb::VERSION
|
97
|
-
exit
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
$stderr.puts parser.help if argv.empty?
|
102
|
-
|
103
|
-
parser.parse!(argv)
|
104
|
-
options.urls = argv
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
ProxyPacRb::Cli.start
|
110
|
-
exit 0
|
data/tmp/aruba/.keep
DELETED
File without changes
|