pacproxy 0.0.7 → 0.0.8

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: a592de5e8ef2da33cd52d19f4ca3360a6204cbdf
4
- data.tar.gz: 00e5f8e3243b2f608c40f82df2afb7d90529debd
3
+ metadata.gz: 939a5cb325172af7871512401d56ff751cd1967d
4
+ data.tar.gz: b34263afc3967ac616ff91934a5ce27d494fbd1d
5
5
  SHA512:
6
- metadata.gz: 504b321afecb58a6b42a985df6057ec628c84ad19e8dd8a16fa81262a84a33865e6b2aa5d3432c87b905c8d48e662b3e50b08ad6929d937dc8bcbc050ff38fc7
7
- data.tar.gz: 9422b0603fa43f68ac991f32ca19114ef9d7e0214405799fb94b11340d033f7f95fa14f40e3463292e97d980150426e1dcd7e17589618294d0f87675b513389c
6
+ metadata.gz: 5110e58d398e43ed60cbe71b020bdf248e196deb4f4c6c34987313e4741666459c3b00e68521fb95de2763056f0447c5b0e94125e6391f6db6f88dcf2fadf95f
7
+ data.tar.gz: 29f7152972637a36a4436d788a8a8da309daf067db15cce4409f2d5382b22cb1a2ba756dd1fcfe106f4659ed3571597c7f579fd27b1acb415b3bb2e06a0c6ad0
@@ -20,7 +20,8 @@ module Pacproxy
20
20
  end
21
21
 
22
22
  def shutdown
23
- @runtime.shutdown
23
+ @update_thread.kill if @update_thread
24
+ @runtime.shutdown if @runtime
24
25
  end
25
26
 
26
27
  def find(uri)
@@ -32,7 +33,7 @@ module Pacproxy
32
33
 
33
34
  def begin_update
34
35
  is_updated = false
35
- Thread.new do
36
+ @update_thread = Thread.new do
36
37
  loop do
37
38
  @runtime.update(@file_location)
38
39
  is_updated = true
@@ -4,6 +4,7 @@ require 'pacproxy/runtimes/base'
4
4
  require 'open-uri'
5
5
  require 'dnode'
6
6
  require 'thread'
7
+ require 'monitor'
7
8
  require 'os'
8
9
 
9
10
  module Pacproxy
@@ -41,6 +42,8 @@ module Pacproxy
41
42
  Process.detach(@server_pid)
42
43
  end
43
44
  sleep 0.01 until port_open?
45
+
46
+ initialize_client
44
47
  end
45
48
  rescue Timeout::Error
46
49
  shutdown
@@ -56,6 +59,7 @@ module Pacproxy
56
59
  end
57
60
 
58
61
  def shutdown
62
+ @client_thread.kill if @client_thread
59
63
  if OS.windows?
60
64
  stop_server(@server_pid)
61
65
  else
@@ -77,6 +81,18 @@ module Pacproxy
77
81
 
78
82
  private
79
83
 
84
+ def initialize_client
85
+ @queue = Queue.new
86
+ @client_thread = Thread.new do
87
+ DNode.new.connect('127.0.0.1', @port) do |remote|
88
+ q = @queue.pop
89
+ if q[:uri] && q[:uri].host && q[:call_back]
90
+ remote.find(@source, q[:uri], q[:uri].host, q[:call_back])
91
+ end
92
+ end
93
+ end
94
+ end
95
+
80
96
  def port_open?
81
97
  Timeout.timeout(TIMEOUT_JS_CALL) do
82
98
  begin
@@ -93,13 +109,16 @@ module Pacproxy
93
109
  def call_find(uri, retries = 3)
94
110
  proxy = nil
95
111
  begin
112
+ mon = Monitor.new
113
+ cond = mon.new_cond
96
114
  thread = Thread.new do
97
- DNode.new.connect('127.0.0.1', @port) do |remote|
98
- remote.find(@source, uri, uri.host,
99
- proc do |p|
115
+ mon.synchronize do
116
+ @queue.push(uri: uri,
117
+ call_back: proc do |p|
100
118
  proxy = p
101
- EM.stop
119
+ cond.signal
102
120
  end)
121
+ cond.wait
103
122
  end
104
123
  end
105
124
  thread.join(TIMEOUT_JS_CALL)
@@ -30,8 +30,10 @@ module Pacproxy
30
30
  end
31
31
 
32
32
  def update(file_location)
33
- tmp = PAC.load(file_location)
34
- @pac = tmp if @pac.nil? || @pac.source != tmp.source
33
+ Pac.js_lock.synchronize do
34
+ tmp = PAC.load(file_location)
35
+ @pac = tmp if @pac.nil? || @pac.source != tmp.source
36
+ end
35
37
  rescue => e
36
38
  error("#{file_location} update error: #{e}")
37
39
  end
@@ -1,4 +1,4 @@
1
1
  # Pacproxy provides http/https proxy routed with proxy.pac.
2
2
  module Pacproxy
3
- VERSION = '0.0.7'
3
+ VERSION = '0.0.8'
4
4
  end
data/pacproxy.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.name = "pacproxy"
8
8
  spec.version = Pacproxy::VERSION
9
9
  spec.authors = ["OTA Hiroshi"]
10
- spec.email = ["ota_h@nifty.com"]
10
+ spec.email = ["otahi.pub@gmail.com"]
11
11
  spec.summary = %q{A proxy server works with proxy.pac}
12
12
  spec.description = %q{A proxy server works with proxy.pac}
13
13
  spec.homepage = "https://github.com/otahi/pacproxy"
@@ -21,7 +21,9 @@ Gem::Specification.new do |spec|
21
21
  spec.add_dependency 'pac', '~> 1.0.0'
22
22
  spec.add_dependency 'dnode', '~> 0.0.2'
23
23
  spec.add_dependency 'os', '~> 0.9.6'
24
- spec.add_dependency 'win32-process', '~> 0.7.4'
24
+ if /cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM
25
+ spec.add_dependency 'win32-process', '~> 0.7.4'
26
+ end
25
27
 
26
28
  spec.add_development_dependency 'bundler', '~> 1.6'
27
29
  spec.add_development_dependency 'rspec', '~> 3.0.0'
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.7
4
+ version: 0.0.8
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-11-08 00:00:00.000000000 Z
11
+ date: 2014-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pac
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.9.6
55
- - !ruby/object:Gem::Dependency
56
- name: win32-process
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 0.7.4
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 0.7.4
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: bundler
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -180,7 +166,7 @@ dependencies:
180
166
  version: 3.4.0
181
167
  description: A proxy server works with proxy.pac
182
168
  email:
183
- - ota_h@nifty.com
169
+ - otahi.pub@gmail.com
184
170
  executables:
185
171
  - pacproxy
186
172
  extensions: []