pacproxy 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 344940c273c8b3d3e9c2fa2be653bd7d9bbc3d77
4
- data.tar.gz: 777d69da2bad17eb52abae7bf9e916aaccb53c84
3
+ metadata.gz: c6a4c4d49256abefe3d1058dc41f485f0cc9bab5
4
+ data.tar.gz: a64708a9332cbe508a0caae11006fd57dbfdba4d
5
5
  SHA512:
6
- metadata.gz: 9619344c5b572ca71a437e639aace729e8a7e5660cda9873ad951e8fd363d8a064f2294cf49ce92059ddabbe7f8467abcfb177c8f9b25ce64ab54737d6ec2592
7
- data.tar.gz: 563eb0de823d1e40777d9bdcd60283aa7c976de1ec1802bece21fa66dec307cb94f38cac4b3c1028a00655eda33ac00305b97ad08e04b9d3f33e8a07bc6cba9b
6
+ metadata.gz: 309c7a012f364fb3116104c274fe8969b6f27fd85f9a67bffadfb82aac10631fb7570099df829b28c90fa0a9e2b1bb56872c46620ec1d94e1c9450c4e3aef18a
7
+ data.tar.gz: b1547a897a53e42b067fb11d8e6ac666f1178d9542b5adf23afb4068da40132324f0ff7f8faeee4d858cb90f55544cd798f97b4171293d209e90df3bbff7cb2e
data/README.md CHANGED
@@ -18,7 +18,7 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- $ bundle exec ruby bin/pacproxy -P proxy.pac -p 3128
21
+ $ bundle exec pacproxy -P proxy.pac -p 3128
22
22
 
23
23
 
24
24
  ## Contributing
File without changes
@@ -26,7 +26,8 @@ module Pacproxy
26
26
  when /^DIRECT/
27
27
  uri = nil
28
28
  when /PROXY/
29
- proxy = /PROXY (.*);/.match(proxy_line)[1]
29
+ primary_proxy = proxy_line.split(';')[0]
30
+ proxy = /PROXY (.*)/.match(primary_proxy)[1]
30
31
  uri = URI.parse("http://#{proxy}")
31
32
  end
32
33
  end
@@ -1,3 +1,3 @@
1
1
  module Pacproxy
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -18,10 +18,12 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency 'webrick', '~> 1.3.1'
22
21
  spec.add_dependency 'therubyracer', '~> 0.12.1'
23
22
  spec.add_dependency 'pac', '~> 1.0.0'
24
23
 
25
24
  spec.add_development_dependency 'bundler', '~> 1.6'
26
- spec.add_development_dependency 'rake'
25
+ spec.add_development_dependency 'rspec', '~> 3.0.0'
26
+ spec.add_development_dependency 'rake', '~> 10.3.2'
27
+ spec.add_development_dependency 'httpclient', '~> 2.4.0'
28
+ spec.add_development_dependency 'byebug'
27
29
  end
data/proxy.pac CHANGED
@@ -1,4 +1,3 @@
1
1
  function FindProxyForURL(url, host) {
2
- return "PROXY localhost:3128; PROXY 7.8.9.10:8080";
3
- // return "DIRECT";
2
+ return "PROXY localhost:3128;
4
3
  }
@@ -0,0 +1,3 @@
1
+ function FindProxyForURL(url, host) {
2
+ return "DIRECT";
3
+ }
@@ -0,0 +1,3 @@
1
+ function FindProxyForURL(url, host) {
2
+ return "PROXY localhost:13081";
3
+ }
@@ -0,0 +1,106 @@
1
+ require 'spec_helper'
2
+ require 'httpclient'
3
+
4
+ def wait_server_status(servers, status)
5
+ return unless (servers or status)
6
+ servers = [servers] unless servers.respond_to?(:all?)
7
+ return unless servers.all? { |s| s.respond_to?(:status) }
8
+ sleep(0.5) until servers.all? { |s| s.status; s.status == status }
9
+ end
10
+
11
+ describe Pacproxy do
12
+ describe 'Pacproxy::VERSION' do
13
+ it 'have a version number' do
14
+ expect(Pacproxy::VERSION).not_to be_nil
15
+ end
16
+ end
17
+
18
+ describe 'Pacproxy#initialize' do
19
+ before(:each) do
20
+ $stdout, $stderr = StringIO.new, StringIO.new
21
+ end
22
+
23
+ after(:each) do
24
+ $stdout, $stderr = STDOUT, STDERR
25
+ end
26
+
27
+ it 'have @pac variable' do
28
+ s = Pacproxy::Pacproxy.new(Port: 3128)
29
+ expect(s.instance_variable_defined?(:@pac)).to eq(true)
30
+ s.shutdown
31
+ end
32
+
33
+ it 'have @pac with nil if not given' do
34
+ s = Pacproxy::Pacproxy.new(Port: 3128)
35
+ expect(s.instance_variable_get(:@pac)).to be_nil
36
+ s.shutdown
37
+ end
38
+
39
+ it 'set @pac by :Proxypac' do
40
+ pacfile = 'proxy.pac'
41
+ s = Pacproxy::Pacproxy.new(Port: 3128, Proxypac: pacfile)
42
+ expect(s.instance_variable_get(:@pac)).to eq(pacfile)
43
+ s.shutdown
44
+ end
45
+ end
46
+
47
+ describe 'Pacproxy#proxy_uri' do
48
+ before(:each) do
49
+ $stdout, $stderr = StringIO.new, StringIO.new
50
+ $http_server = WEBrick::HTTPServer.new(Port: 13080)
51
+ $http_server.mount_proc('/') { |req, res| res.status = 200}
52
+ $http_server.mount_proc('/noproxy/') { |req, res| res.status = 200}
53
+ $proxy_server = WEBrick::HTTPProxyServer.new(Port: 13081)
54
+ Thread.new { $http_server.start }
55
+ Thread.new { $proxy_server.start }
56
+ wait_server_status([$http_server,$proxy_server], :Running)
57
+ end
58
+
59
+ after(:each) do
60
+ $stdout, $stderr = STDOUT, STDERR
61
+ $http_server.shutdown
62
+ $proxy_server.shutdown
63
+ $pacproxy_server.shutdown
64
+ wait_server_status([$http_server,$proxy_server,$pacproxy_server], :Stop)
65
+ end
66
+
67
+ it 'transfer request to server directly' do
68
+ $pacproxy_server = Pacproxy::Pacproxy.new(Port: 13128, Proxypac: 'spec/all_direct.pac')
69
+ Thread.new { $pacproxy_server.start }
70
+ wait_server_status($pacproxy_server, :Running)
71
+
72
+ c = HTTPClient.new('http://127.0.0.1:13128')
73
+ res = c.get('http://127.0.0.1:13080/')
74
+ expect(res.status).to eq(200)
75
+
76
+ res = c.get('http://127.0.0.1:13080/noproxy/')
77
+ expect(res.status).to eq(200)
78
+ end
79
+
80
+ it 'transfer request to server via parent proxy' do
81
+ $pacproxy_server = Pacproxy::Pacproxy.new(Port: 13128, Proxypac: 'spec/all_proxy.pac')
82
+ Thread.new { $pacproxy_server.start }
83
+ wait_server_status($pacproxy_server, :Running)
84
+
85
+ c = HTTPClient.new('http://127.0.0.1:13128')
86
+ res = c.get('http://127.0.0.1:13080/')
87
+ expect(res.status).to eq(200)
88
+
89
+ res = c.get('http://127.0.0.1:13080/noproxy/')
90
+ expect(res.status).to eq(200)
91
+ end
92
+
93
+ it 'transfer request to server via parent proxy partially' do
94
+ $pacproxy_server = Pacproxy::Pacproxy.new(Port: 13128, Proxypac: 'spec/partial_proxy.pac')
95
+ Thread.new { $pacproxy_server.start }
96
+ wait_server_status($pacproxy_server, :Running)
97
+
98
+ c = HTTPClient.new('http://127.0.0.1:13128')
99
+ res = c.get('http://127.0.0.1:13080/')
100
+ expect(res.status).to eq(200)
101
+
102
+ res = c.get('http://127.0.0.1:13080/noproxy/')
103
+ expect(res.status).to eq(200)
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,4 @@
1
+ function FindProxyForURL(url, host) {
2
+ if(shExpMatch ( url, "*noproxy*")) return "DIRECT";
3
+ return "PROXY localhost:13081";
4
+ }
@@ -0,0 +1,2 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'pacproxy'
metadata CHANGED
@@ -1,73 +1,101 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pacproxy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - OTA Hiroshi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-05 00:00:00.000000000 Z
11
+ date: 2014-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: webrick
14
+ name: therubyracer
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 1.3.1
19
+ version: 0.12.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 1.3.1
26
+ version: 0.12.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: therubyracer
28
+ name: pac
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 0.12.1
33
+ version: 1.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: 0.12.1
40
+ version: 1.0.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: pac
42
+ name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.0
48
- type: :runtime
47
+ version: '1.6'
48
+ type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 1.0.0
54
+ version: '1.6'
55
55
  - !ruby/object:Gem::Dependency
56
- name: bundler
56
+ name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '1.6'
61
+ version: 3.0.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '1.6'
68
+ version: 3.0.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 10.3.2
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 10.3.2
83
+ - !ruby/object:Gem::Dependency
84
+ name: httpclient
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 2.4.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 2.4.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: byebug
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
101
  - - '>='
@@ -100,6 +128,11 @@ files:
100
128
  - pacproxy.gemspec
101
129
  - pacproxy/.gitignore
102
130
  - proxy.pac
131
+ - spec/all_direct.pac
132
+ - spec/all_proxy.pac
133
+ - spec/pacproxy_spec.rb
134
+ - spec/partial_proxy.pac
135
+ - spec/spec_helper.rb
103
136
  homepage: ''
104
137
  licenses:
105
138
  - MIT
@@ -124,4 +157,9 @@ rubygems_version: 2.0.14
124
157
  signing_key:
125
158
  specification_version: 4
126
159
  summary: A proxy server works with proxy.pac
127
- test_files: []
160
+ test_files:
161
+ - spec/all_direct.pac
162
+ - spec/all_proxy.pac
163
+ - spec/pacproxy_spec.rb
164
+ - spec/partial_proxy.pac
165
+ - spec/spec_helper.rb