pacproxy 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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