socket_duplex 1.1.7 → 1.1.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: 396d97092eb58854d336f76c7058737967201b95
4
- data.tar.gz: b28000e38753d974e7442f0209b28dc6efe4a3e3
3
+ metadata.gz: f2b398ca7958f3ac91f2e8ad88c287ae4a529e4a
4
+ data.tar.gz: 0a75de5c20bf83771e1b5e8890a67afcb8da039d
5
5
  SHA512:
6
- metadata.gz: 9a53ca6192b230c303f6f0e2bc9069fcd30cf27f1436af1fcab07f62f0b044cc23598f707903a73cccca9afc53bd70b2250d7b7290c030a686b650593312ef4f
7
- data.tar.gz: e9728db7f2ba14f3d78101753b6c12f094ff6bca5c50983780e36b2fd735b5672fe08c95bf4409818056cffa4d0f2988ea47e5cf28b5a865bbea62acf98eee89
6
+ metadata.gz: c79fff5c1468edc7eb0a1466fabf42035dcf9aeb994c252b7012e57ec8274f2195127ac7e301c08bc8c86212f0193877ec66680c27929ba03ace7dc117541b6a
7
+ data.tar.gz: 915e4c13027ced61b6511253ce2443432f9f33e57ed9dda092f93a4584f6034e98500a27f669c5af675b7321796fa2f0c258507c1ddaff5dd95b927a8ade7087
data/lib/socket_duplex.rb CHANGED
@@ -12,32 +12,24 @@ module Rack
12
12
  def initialize(app, socket_path, secful_key, verify_mode=OpenSSL::SSL::VERIFY_PEER)
13
13
  @app, @socket_path, @verify_mode = app, socket_path, verify_mode
14
14
  begin
15
- puts 'secful: initialize'
16
15
  @secful_key = secful_key
17
- puts 'secful: secful_key'
18
16
  @agent_identifier = SecureRandom.hex
19
- puts 'secful: agent_identifier'
20
17
  @machine_ip = Socket.ip_address_list.detect(&:ipv4_private?).try(:ip_address)
21
- puts 'secful: machine_ip'
22
- @queue = SizedQueue.new(MAX_QUEUE_SIZE)
23
- puts 'secful: queue init ' + @queue.__id__.to_s
18
+ #@queue = SizedQueue.new(MAX_QUEUE_SIZE)
24
19
  @threads_to_sockets = {}
25
- puts 'secful: threads_to_sockets'
26
- Thread.new { activate_workers() }
27
- puts 'secful: activate_workers()'
28
- rescue Exception => e
29
- puts 'secful: init-exception: ' + e.message
30
- puts 'secful: init-trace: ' + e.backtrace.inspect
20
+ #Thread.new { activate_workers() }
21
+ rescue nil
31
22
  end
32
23
  end
33
24
 
34
25
  def call(env)
35
26
  begin
36
- puts 'secful: call'
27
+ if !defined? @queue
28
+ @queue = SizedQueue.new(MAX_QUEUE_SIZE)
29
+ activate_workers()
30
+ end
37
31
  dup._call(env)
38
- rescue Exception => e
39
- puts 'secful: call-exception: ' + e.message
40
- puts 'secful: call-trace: ' + e.backtrace.inspect
32
+ rescue nil
41
33
  @app.call(env)
42
34
  end
43
35
  end
@@ -45,59 +37,42 @@ module Rack
45
37
  protected
46
38
 
47
39
  def _call(env)
48
- puts 'secful: _call'
49
40
  status, headers, body = @app.call(env)
50
- puts 'secful: app.call'
51
- puts 'secful: queue.len = ' + @queue.length.to_s + ' id: ' + @queue.__id__.to_s
52
- if @queue.length < MAX_QUEUE_SIZE
53
- puts 'secful: about to put in queue'
41
+ if @queue.length < MAX_QUEUE_SIZE - 5
54
42
  @queue << env
55
- puts 'secful: put in queue'
56
43
  end
57
44
  return [status, headers, body]
58
45
  end
59
46
 
60
47
  def activate_workers
61
- puts 'secful: activate_workers'
62
48
  NUM_OF_THREADS.times do
63
- puts 'secful: new thread'
64
49
  thr = Thread.new {worker()}
65
- puts 'secful: thread started ' + thr.__id__.to_s
66
50
  end
67
51
  end
68
52
 
69
53
  def worker
70
54
  loop do
71
55
  begin
72
- puts 'secful: worker start: ' + Thread.current.__id__.to_s + 'queue: ' + @queue.__id__.to_s
73
56
  env = @queue.pop
74
- puts 'secful: worker poped'
75
57
  if env
76
- puts 'secful: env'
77
58
  connect_to_ws(Thread.current)
78
59
  handle_request(env)
79
- puts 'scful: worker done'
80
60
  end
81
- rescue Exception => e
82
- puts 'secful: worker-exception: ' + e.message
83
- puts 'secful: worker-trace: ' + e.backtrace.inspect
61
+ rescue nil
84
62
  end
85
63
  end
86
64
  end
87
65
 
88
66
  def connect_to_ws(thr)
89
67
  begin
90
- puts 'secful: connect_to_ws'
91
68
  ws = @threads_to_sockets[thr]
92
69
  if !ws
93
- puts 'secful: creating ws'
94
70
  headers = { 'Agent-Type' => 'Ruby',
95
71
  'Agent-Version' => '1.0',
96
72
  'Agent-Identifier' => @agent_identifier,
97
73
  'Authorization' => 'Bearer ' + @secful_key }
98
74
  ws = WebSocket::Client::Simple.connect @socket_path, verify_mode: @verify_mode, headers: headers
99
75
  sleep(3)
100
- puts 'secful: connected to ws'
101
76
  end
102
77
  if !ws.open?
103
78
  sleep(60)
@@ -114,16 +89,11 @@ module Rack
114
89
  def handle_request(env)
115
90
  request_hash = {}
116
91
  if env['rack.url_scheme'] == 'http'
117
- puts 'secful: writing env'
118
92
  write_env(request_hash, env)
119
93
  ws = @threads_to_sockets[Thread.current]
120
94
  begin
121
- puts 'secful: sending'
122
95
  ws.send request_hash.to_json
123
- puts 'secful: sent'
124
96
  rescue Exception => e
125
- puts 'secful: handle_request-exception: ' + e.message
126
- puts 'secful: handle_request-trace: ' + e.backtrace.inspect
127
97
  if ws
128
98
  ws.close()
129
99
  end rescue nil
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "socket_duplex"
6
- spec.version = '1.1.7'
6
+ spec.version = '1.1.8'
7
7
  spec.authors = ["Secful"]
8
8
  spec.description = %q{Rack middleware that duplexes HTTP traffic}
9
9
  spec.summary = spec.description
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: socket_duplex
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.7
4
+ version: 1.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Secful
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-25 00:00:00.000000000 Z
11
+ date: 2016-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler