pacproxy 0.0.7 → 0.0.8

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: 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: []