pacproxy 0.0.3 → 0.0.4

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: 544d350a0f41fbbd036432458ec322674a7699a9
4
- data.tar.gz: f719176796dc8ed6e8df8702b704fecd0103e157
3
+ metadata.gz: 3640640110abb9f0a611723777390e1047433198
4
+ data.tar.gz: 98acc0fd1efc7786b7976d1dfea84207c5752fe8
5
5
  SHA512:
6
- metadata.gz: 0e5579ec3c7435b4bd209fba6462809d57e2de1e4d531c6421af2054d7f70d24789583db451648dcb066298431dd0f1a89b6bc3faa9b4d8596efd6add5ef39d0
7
- data.tar.gz: d55a68ce7de1ca3bf24a838eb837e89cc148fc72733752432fd049cedd0c63ef5862615cf769d60aa9c26c128d90a1df512907fa611386b66632cf059d60256e
6
+ metadata.gz: dec5acf4e26b12e0e7c9a0c8e4ad9e6a4993469af55a6c20d099f8995aa0cb09520e8aa9eadc68f86fa0ab23434f4fa72a146f99c819887892e7b28b213bdeac
7
+ data.tar.gz: 0e4579441de1e8399910eba31c323385600270048e1a3de4c3eebe6b2d09eb01d708b8b906a53f452033959b874d73e235cfa038f9156114c3ec48a7acaca581
data/.gitignore CHANGED
@@ -8,6 +8,7 @@
8
8
  /test/tmp/
9
9
  /test/version_tmp/
10
10
  /tmp/
11
+ tags
11
12
 
12
13
  ## Specific to RubyMotion:
13
14
  .dat*
@@ -33,3 +34,6 @@ Gemfile.lock
33
34
 
34
35
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
35
36
  .rvmrc
37
+
38
+ # for log files
39
+ *.log
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 2.0.0
5
+ - 2.1.2
data/README.md CHANGED
@@ -1,8 +1,21 @@
1
1
  # Pacproxy
2
2
 
3
- Pacproxy provides http/https proxy routed with proxy.pac.
3
+ Pacproxy provides http/https proxy routed by proxy.pac.
4
4
 
5
- **:warning:Now Pacproxy is very early stage, so it might have big change.**
5
+ [![Build Status](https://travis-ci.org/otahi/pacproxy.png?branch=master)](https://travis-ci.org/otahi/pacproxy)
6
+ [![Coverage Status](https://coveralls.io/repos/otahi/pacproxy/badge.png?branch=master)](https://coveralls.io/r/otahi/pacproxy?branch=master)
7
+ [![Code Climate](https://codeclimate.com/github/otahi/pacproxy.png)](https://codeclimate.com/github/otahi/pacproxy)
8
+ [![Gem Version](https://badge.fury.io/rb/pacproxy.png)](http://badge.fury.io/rb/pacproxy)
9
+
10
+ **:warning: Now Pacproxy is early stage, so it might have big change.**
11
+
12
+ ## Usage
13
+
14
+ $ bundle exec pacproxy -P proxy.pac -p 3128
15
+
16
+ or
17
+
18
+ $ bundle exec pacproxy -P http://sample.org/proxy.pac -p 3128
6
19
 
7
20
  ## Installation
8
21
 
@@ -17,22 +30,15 @@ And then execute:
17
30
 
18
31
  ## Requirements
19
32
 
20
- After installing the `pacproxy` gem you must install a JavaScript runtime. Compatible runtimes include
21
- (see [pac](https://github.com/samuelkadolph/ruby-pac/blob/master/README.md):
33
+ Before or After installing the `pacproxy` gem,
34
+ you need to install a JavaScript runtime. Compatible runtimes include
35
+ (see [pac](https://github.com/samuelkadolph/ruby-pac/blob/master/README.md)):
22
36
 
23
37
  * [therubyracer](https://rubygems.org/gems/therubyracer) Google V8 embedded within Ruby
24
38
  * [therubyrhino](https://rubygems.org/gems/therubyrhino/) Mozilla Rhino embedded within JRuby
25
39
  * [johnson](https://rubygems.org/gems/johnson/) Mozilla SpiderMonkey embedded within Ruby 1.8
26
40
  * [mustang](https://rubygems.org/gems/mustang/) Mustang V8 embedded within Ruby
27
41
 
28
- ## Usage
29
-
30
- $ bundle exec pacproxy -P proxy.pac -p 3128
31
-
32
- or
33
-
34
- $ bundle exec pacproxy -P http://sample.org/proxy.pac -p 3128
35
-
36
42
  ## Contributing
37
43
 
38
44
  1. Fork it ( https://github.com/otahi/pacproxy/fork )
data/Rakefile CHANGED
@@ -1,2 +1,16 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+ require 'rubocop/rake_task'
3
+ require 'rspec/core/rake_task'
4
+ require 'coveralls/rake/task'
2
5
 
6
+ task default: [:spec, 'coveralls:push', :rubocop]
7
+
8
+ Coveralls::RakeTask.new
9
+
10
+ RSpec::Core::RakeTask.new(:spec) do |t|
11
+ t.pattern = 'spec/**/*_spec.rb'
12
+ end
13
+
14
+ RuboCop::RakeTask.new(:rubocop) do |task|
15
+ task.patterns = %w(lib/**/*.rb spec/**/*.rb)
16
+ end
@@ -0,0 +1,32 @@
1
+ require 'singleton'
2
+ require 'logger'
3
+ require 'webrick/accesslog'
4
+
5
+ module Pacproxy
6
+ # Provide log Function
7
+ class AccessLogger
8
+ include Singleton
9
+
10
+ attr_accessor :logger
11
+
12
+ def initialize
13
+ @logger = Logger.new('proxy_access.log', 7, 10 * 1024 * 1024)
14
+ @format = WEBrick::AccessLog::COMMON_LOG_FORMAT
15
+ end
16
+
17
+ def accesslog(req, res)
18
+ params = setup_params(req, res)
19
+ logger << WEBrick::AccessLog.format(@format, params)
20
+ logger << "\n"
21
+ end
22
+
23
+ private
24
+
25
+ # This format specification is a subset of mod_log_config of Apache:
26
+ # See: https://github.com/ruby/ruby/blob/trunk/lib/webrick/accesslog.rb
27
+
28
+ def setup_params(req, res)
29
+ WEBrick::AccessLog.setup_params({ ServerName: '-' }, req, res)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,16 @@
1
+ require 'singleton'
2
+ require 'logger'
3
+
4
+ module Pacproxy
5
+ # Provide log Function
6
+ class GeneralLogger
7
+ include Singleton
8
+
9
+ attr_accessor :logger
10
+
11
+ def initialize
12
+ @logger = Logger.new('pacproxy.log', 7, 10 * 1024 * 1024)
13
+ @logger.progname = 'pacproxy'
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,39 @@
1
+ require 'pacproxy/general_logger'
2
+ require 'pacproxy/access_logger'
3
+
4
+ module Pacproxy
5
+ # Provide log Function
6
+ module Loggable
7
+ def general_logger
8
+ GeneralLogger.instance.logger
9
+ end
10
+
11
+ def access_logger
12
+ AccessLogger.instance
13
+ end
14
+
15
+ def debug(message)
16
+ general_logger.debug(message)
17
+ end
18
+
19
+ def info(message)
20
+ general_logger.info(message)
21
+ end
22
+
23
+ def lwarn(message)
24
+ general_logger.warn(message)
25
+ end
26
+
27
+ def error(message)
28
+ general_logger.error(message)
29
+ end
30
+
31
+ def fatal(message)
32
+ general_logger.fatal(message)
33
+ end
34
+
35
+ def accesslog(req, res)
36
+ access_logger.accesslog(req, res)
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,40 @@
1
+ require 'pacproxy'
2
+ require 'pac'
3
+ require 'uri'
4
+
5
+ module Pacproxy
6
+ # Pacproxy::PacFile represent proxy.pac file
7
+ class PacFile
8
+ def initialize(file_location, update_interval = 1800)
9
+ @pac = nil
10
+ begin_update(file_location, update_interval)
11
+ end
12
+
13
+ def find(uri)
14
+ return 'DIRECT' unless @pac
15
+ @pac.find(uri)
16
+ end
17
+
18
+ private
19
+
20
+ def begin_update(file_location, update_interval)
21
+ is_updated = false
22
+ Thread.new do
23
+ loop do
24
+ update(file_location)
25
+ is_updated = true
26
+ sleep(update_interval)
27
+ end
28
+ end
29
+ sleep 0.01 until is_updated
30
+ end
31
+
32
+ def update(file_location)
33
+ tmp = PAC.load(file_location)
34
+ @pac = tmp if @pac.nil? || @pac.source != tmp.source
35
+ rescue
36
+ # log
37
+ puts "#{file_location} update error"
38
+ end
39
+ end
40
+ end
@@ -1,35 +1,60 @@
1
+ require 'pacproxy'
1
2
  require 'webrick/httpproxy'
2
- require 'pac'
3
3
  require 'uri'
4
4
 
5
5
  module Pacproxy
6
+ # Pacproxy::Pacproxy represent http/https proxy server
6
7
  class Pacproxy < WEBrick::HTTPProxyServer
7
- def initialize(config={}, default=WEBrick::Config::HTTP)
8
+ include Loggable
9
+
10
+ def initialize(config = {}, default = WEBrick::Config::HTTP)
11
+ config[:Logger] = general_logger
8
12
  super(config, default)
9
- @pac = config[:Proxypac]
13
+ @pac = PacFile.new(config[:Proxypac])
10
14
  end
11
15
 
12
16
  def proxy_uri(req, res)
13
- uri = super(req,res)
17
+ super(req, res)
14
18
  return unless @pac
15
19
 
16
- pac = PAC.load(@pac)
20
+ proxy_line = @pac.find(request_uri(req))
21
+ lookup_proxy_uri(proxy_line)
22
+ end
23
+
24
+ private
17
25
 
18
- request_uri = if 'CONNECT' == req.request_method
19
- "https://#{req.header["host"][0]}/"
20
- else
21
- req.unparsed_uri
22
- end
26
+ def request_uri(request)
27
+ if 'CONNECT' == request.request_method
28
+ "https://#{request.unparsed_uri}/"
29
+ else
30
+ request.unparsed_uri
31
+ end
32
+ end
23
33
 
24
- proxy_line = pac.find(request_uri)
34
+ def lookup_proxy_uri(proxy_line)
25
35
  case proxy_line
26
36
  when /^DIRECT/
27
- uri = nil
37
+ nil
28
38
  when /PROXY/
29
39
  primary_proxy = proxy_line.split(';')[0]
30
40
  proxy = /PROXY (.*)/.match(primary_proxy)[1]
31
- uri = URI.parse("http://#{proxy}")
41
+ URI.parse("http://#{proxy}")
42
+ end
43
+ end
44
+
45
+ def perform_proxy_request(req, res)
46
+ super
47
+ accesslog(req, res)
48
+ end
49
+
50
+ # allow PUT method on proxy server
51
+ # method names for webrick is indicated by rubocop
52
+ # rubocop:disable all
53
+ def do_PUT(req, res)
54
+ perform_proxy_request(req, res) do |http, path, header|
55
+ http.put(path, req.body || '', header)
32
56
  end
33
57
  end
58
+ # rubocop:enable all
34
59
  end
35
60
  end
@@ -1,3 +1,4 @@
1
+ # Pacproxy provides http/https proxy routed with proxy.pac.
1
2
  module Pacproxy
2
- VERSION = "0.0.3"
3
+ VERSION = '0.0.4'
3
4
  end
data/lib/pacproxy.rb CHANGED
@@ -1,6 +1,10 @@
1
- require "pacproxy/version"
2
- require "pacproxy/pacproxy"
1
+ require 'pacproxy/version'
2
+ require 'pacproxy/loggable'
3
+ require 'pacproxy/pacproxy'
4
+ require 'pacproxy/pac_file'
5
+ require 'pacproxy/general_logger'
6
+ require 'pacproxy/access_logger'
3
7
 
8
+ # Pacproxy provides http/https proxy routed with proxy.pac.
4
9
  module Pacproxy
5
- # Your code goes here...
6
10
  end
data/pacproxy.gemspec CHANGED
@@ -24,5 +24,8 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency 'rspec', '~> 3.0.0'
25
25
  spec.add_development_dependency 'rake', '~> 10.3.2'
26
26
  spec.add_development_dependency 'httpclient', '~> 2.4.0'
27
- spec.add_development_dependency 'byebug'
27
+ spec.add_development_dependency 'therubyracer', '~> 0.12.1'
28
+
29
+ spec.add_development_dependency 'rubocop', '0.24.1'
30
+ spec.add_development_dependency 'coveralls', '~> 0.7'
28
31
  end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Pacproxy::AccessLogger do
4
+ describe 'accesslog' do
5
+ it 'write Apache common log format' do
6
+ log = Pacproxy::AccessLogger.instance
7
+ log.logger = ''
8
+ now = Time.now
9
+ now_string = now.strftime('[%d/%b/%Y:%H:%M:%S %Z]')
10
+
11
+ req = double('req')
12
+ allow(req).to receive(:attributes).and_return([])
13
+ allow(req).to receive(:peeraddr).and_return(%w(host-a host-b host-c))
14
+ allow(req).to receive(:port).and_return(80)
15
+ allow(req).to receive(:query_string).and_return('query_string_test')
16
+ allow(req).to receive(:request_line)
17
+ .and_return(req_line = 'GET http://remotehost/abc HTTP/1.1')
18
+ allow(req).to receive(:request_method).and_return('GET')
19
+ allow(req).to receive(:request_time).and_return(now)
20
+ allow(req).to receive(:unparsed_uri).and_return('http://remotehost/abc')
21
+ allow(req).to receive(:user).and_return('user-a')
22
+
23
+ res = double('req')
24
+ allow(res).to receive(:filename).and_return('')
25
+ allow(res).to receive(:sent_size).and_return(128)
26
+ allow(res).to receive(:status).and_return(200)
27
+
28
+ log.accesslog(req, res)
29
+ expect(log.logger)
30
+ .to eq("host-c - user-a #{now_string} \"#{req_line}\" 200 128\n")
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe Pacproxy::GeneralLogger do
4
+
5
+ # Loggable class example
6
+ class LoggableExample
7
+ include Pacproxy::Loggable
8
+ end
9
+
10
+ before(:each) do
11
+ log = StringIO.new
12
+ @logger = Logger.new(log)
13
+ @logger.level = Logger::DEBUG
14
+ Pacproxy::GeneralLogger.instance.logger = @logger
15
+ @loggable = LoggableExample.new
16
+ end
17
+
18
+ describe '#debug' do
19
+ it 'write debug log' do
20
+ message = 'DEBUG LOG'
21
+ expect(@logger).to receive(:debug).with(message)
22
+ @loggable.debug(message)
23
+ end
24
+ end
25
+ describe '#info' do
26
+ it 'write info log' do
27
+ message = 'INFO LOG'
28
+ expect(@logger).to receive(:info).with(message)
29
+ @loggable.info(message)
30
+ end
31
+ end
32
+ describe '#lwarn' do
33
+ it 'write warn log' do
34
+ message = 'WARN LOG'
35
+ expect(@logger).to receive(:warn).with(message)
36
+ @loggable.lwarn(message)
37
+ end
38
+ end
39
+ describe '#error' do
40
+ it 'write error log' do
41
+ message = 'ERROR LOG'
42
+ expect(@logger).to receive(:error).with(message)
43
+ @loggable.error(message)
44
+ end
45
+ end
46
+ describe '#fatal' do
47
+ it 'write fatal log' do
48
+ message = 'FATAL LOG'
49
+ expect(@logger).to receive(:fatal).with(message)
50
+ @loggable.fatal(message)
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe Pacproxy::PacFile do
4
+ describe 'PacFile#find' do
5
+ it 'returns proxyurl in pac file' do
6
+ pac_file = Pacproxy::PacFile.new('spec/all_proxy.pac')
7
+ expect(pac_file.find('http://sample.org/')).to eq('PROXY localhost:13081')
8
+ end
9
+ it 'returns DIRECT when no pac file' do
10
+ pac_file = Pacproxy::PacFile.new('')
11
+ expect(pac_file.find('http://sample.org/')).to eq('DIRECT')
12
+ end
13
+ end
14
+ describe 'PacFile#update' do
15
+ it 'has same pac file if no change' do
16
+ pac_file = Pacproxy::PacFile.new('spec/all_proxy.pac', 0.01)
17
+ expect(pac_file).to receive(:update).at_least(2).times
18
+
19
+ first_pac = pac_file.instance_variable_get(:@pac)
20
+ sleep 0.2
21
+ second_pac = pac_file.instance_variable_get(:@pac)
22
+ expect(second_pac).to eq(first_pac)
23
+ end
24
+ end
25
+ end
@@ -1,11 +1,12 @@
1
1
  require 'spec_helper'
2
2
  require 'httpclient'
3
+ require 'webrick/https'
3
4
 
4
5
  def wait_server_status(servers, status)
5
- return unless (servers or status)
6
+ return unless servers || status
6
7
  servers = [servers] unless servers.respond_to?(:all?)
7
8
  return unless servers.all? { |s| s.respond_to?(:status) }
8
- sleep(0.5) until servers.all? { |s| s.status; s.status == status }
9
+ sleep(0.01) until servers.all? { |s| s.status == status }
9
10
  end
10
11
 
11
12
  describe Pacproxy do
@@ -15,72 +16,93 @@ describe Pacproxy do
15
16
  end
16
17
  end
17
18
 
18
- describe 'Pacproxy#initialize' do
19
+ describe 'Pacproxy#proxy_uri' do
19
20
  before(:each) do
20
21
  $stdout, $stderr = StringIO.new, StringIO.new
22
+ @http_server = WEBrick::HTTPServer.new(Port: 13_080)
23
+ @http_server.define_singleton_method(:service) do |_req, res|
24
+ res.status = 200
25
+ end
26
+
27
+ @https_server = WEBrick::HTTPServer.new(Port: 13_443,
28
+ SSLEnable: true,
29
+ SSLCertName: [%w(CN 127.0.0.1)])
30
+ @https_server.define_singleton_method(:service) do |_req, res|
31
+ res.status = 200
32
+ end
33
+
34
+ @proxy_server = WEBrick::HTTPProxyServer.new(Port: 13_081)
35
+ Thread.new { @http_server.start }
36
+ Thread.new { @https_server.start }
37
+ Thread.new { @proxy_server.start }
38
+ wait_server_status([@http_server, @https_server, @proxy_server], :Running)
21
39
  end
22
40
 
23
41
  after(:each) do
24
42
  $stdout, $stderr = STDOUT, STDERR
43
+ @http_server.shutdown
44
+ @https_server.shutdown
45
+ @proxy_server.shutdown
46
+ @pacproxy_server.shutdown
47
+ wait_server_status([@http_server,
48
+ @https_server,
49
+ @proxy_server,
50
+ @pacproxy_server],
51
+ :Stop)
25
52
  end
26
53
 
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
54
+ it 'transfer request to server directly' do
55
+ @pacproxy_server =
56
+ Pacproxy::Pacproxy.new(Port: 13_128,
57
+ Proxypac: 'spec/all_direct.pac')
58
+ Thread.new { @pacproxy_server.start }
59
+ wait_server_status(@pacproxy_server, :Running)
32
60
 
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
61
+ c = HTTPClient.new('http://127.0.0.1:13128')
62
+ res = c.get('http://127.0.0.1:13080/')
63
+ expect(res.status).to eq(200)
38
64
 
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
65
+ res = c.get('http://127.0.0.1:13080/noproxy/')
66
+ expect(res.status).to eq(200)
44
67
  end
45
- end
46
68
 
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
69
+ it 'transfer request to server directly via HTTPS' do
70
+ @pacproxy_server =
71
+ Pacproxy::Pacproxy.new(Port: 13_128,
72
+ Proxypac: 'spec/all_direct.pac')
73
+ Thread.new { @pacproxy_server.start }
74
+ wait_server_status(@pacproxy_server, :Running)
58
75
 
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)
76
+ c = HTTPClient.new('http://127.0.0.1:13128')
77
+ c.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE
78
+ res = c.get('https://127.0.0.1:13443/')
79
+ expect(res.status).to eq(200)
80
+
81
+ res = c.get('https://127.0.0.1:13443/noproxy/')
82
+ expect(res.status).to eq(200)
65
83
  end
66
84
 
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)
85
+ it 'transfer request to server directly with PUT method' do
86
+ @pacproxy_server =
87
+ Pacproxy::Pacproxy.new(Port: 13_128,
88
+ Proxypac: 'spec/all_direct.pac')
89
+ Thread.new { @pacproxy_server.start }
90
+ wait_server_status(@pacproxy_server, :Running)
71
91
 
72
92
  c = HTTPClient.new('http://127.0.0.1:13128')
73
- res = c.get('http://127.0.0.1:13080/')
93
+ res = c.put('http://127.0.0.1:13080/')
74
94
  expect(res.status).to eq(200)
75
95
 
76
- res = c.get('http://127.0.0.1:13080/noproxy/')
96
+ res = c.put('http://127.0.0.1:13080/noproxy/')
77
97
  expect(res.status).to eq(200)
78
98
  end
79
99
 
80
100
  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)
101
+ @pacproxy_server =
102
+ Pacproxy::Pacproxy.new(Port: 13_128,
103
+ Proxypac: 'spec/all_proxy.pac')
104
+ Thread.new { @pacproxy_server.start }
105
+ wait_server_status(@pacproxy_server, :Running)
84
106
 
85
107
  c = HTTPClient.new('http://127.0.0.1:13128')
86
108
  res = c.get('http://127.0.0.1:13080/')
@@ -91,9 +113,11 @@ describe Pacproxy do
91
113
  end
92
114
 
93
115
  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)
116
+ @pacproxy_server =
117
+ Pacproxy::Pacproxy.new(Port: 13_128,
118
+ Proxypac: 'spec/partial_proxy.pac')
119
+ Thread.new { @pacproxy_server.start }
120
+ wait_server_status(@pacproxy_server, :Running)
97
121
 
98
122
  c = HTTPClient.new('http://127.0.0.1:13128')
99
123
  res = c.get('http://127.0.0.1:13080/')
data/spec/spec_helper.rb CHANGED
@@ -1,2 +1,16 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ require 'simplecov'
5
+
6
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
7
+ SimpleCov::Formatter::HTMLFormatter,
8
+ Coveralls::SimpleCov::Formatter
9
+ ]
10
+ SimpleCov.start do
11
+ add_filter '.bundle/'
12
+ end
13
+
1
14
  $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
15
+
2
16
  require 'pacproxy'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pacproxy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
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-14 00:00:00.000000000 Z
11
+ date: 2014-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pac
@@ -81,19 +81,47 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: 2.4.0
83
83
  - !ruby/object:Gem::Dependency
84
- name: byebug
84
+ name: therubyracer
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 0.12.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 0.12.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
88
102
  - !ruby/object:Gem::Version
89
- version: '0'
103
+ version: 0.24.1
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - '>='
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 0.24.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: coveralls
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '0.7'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
95
123
  - !ruby/object:Gem::Version
96
- version: '0'
124
+ version: '0.7'
97
125
  description: A proxy server works with proxy.pac
98
126
  email:
99
127
  - ota_h@nifty.com
@@ -103,19 +131,27 @@ extensions: []
103
131
  extra_rdoc_files: []
104
132
  files:
105
133
  - .gitignore
134
+ - .travis.yml
106
135
  - Gemfile
107
136
  - LICENSE
108
137
  - README.md
109
138
  - Rakefile
110
139
  - bin/pacproxy
111
140
  - lib/pacproxy.rb
141
+ - lib/pacproxy/access_logger.rb
142
+ - lib/pacproxy/general_logger.rb
143
+ - lib/pacproxy/loggable.rb
144
+ - lib/pacproxy/pac_file.rb
112
145
  - lib/pacproxy/pacproxy.rb
113
146
  - lib/pacproxy/version.rb
114
147
  - pacproxy.gemspec
115
148
  - pacproxy/.gitignore
116
149
  - proxy.pac
150
+ - spec/access_logger_spec.rb
117
151
  - spec/all_direct.pac
118
152
  - spec/all_proxy.pac
153
+ - spec/loggable_spec.rb
154
+ - spec/pac_file_spec.rb
119
155
  - spec/pacproxy_spec.rb
120
156
  - spec/partial_proxy.pac
121
157
  - spec/spec_helper.rb
@@ -144,8 +180,11 @@ signing_key:
144
180
  specification_version: 4
145
181
  summary: A proxy server works with proxy.pac
146
182
  test_files:
183
+ - spec/access_logger_spec.rb
147
184
  - spec/all_direct.pac
148
185
  - spec/all_proxy.pac
186
+ - spec/loggable_spec.rb
187
+ - spec/pac_file_spec.rb
149
188
  - spec/pacproxy_spec.rb
150
189
  - spec/partial_proxy.pac
151
190
  - spec/spec_helper.rb