mqsink 0.0.6 → 0.0.7

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.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/bin/mqsinkd +1 -1
  3. data/lib/mqsink/server.rb +39 -24
  4. metadata +7 -9
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5077d26b69fd0b8e22cd180af47caf5429d98f5f
4
+ data.tar.gz: cf71ff010117b03cd24309471f29623f7f227bd1
5
+ SHA512:
6
+ metadata.gz: 3e4df588a62f5a1f7d4c4fe0e1b01040003534ce2c04d25f081faaff27036d8f057a6c50913495c07bf321e03980539622d3150cc824f5e080075773cc25ac7e
7
+ data.tar.gz: 0cfa2b5eff7afcf70d52f0fa765d339804bdbed7782a3343ea89c4631941b4ad0315cbc95eb301b816a563c36b1b00805075830e4fc0cff9f6e6b754ab5e6731
data/bin/mqsinkd CHANGED
@@ -18,7 +18,7 @@ def local_boot
18
18
  wr.puts '0.0.0.0'
19
19
  end
20
20
  File.open('/etc/mqsink/classifiers.conf', 'w+') do |wr|
21
- wr.puts '.*'
21
+ wr.puts 'test_queue [.*]'
22
22
  end
23
23
  end
24
24
  end
data/lib/mqsink/server.rb CHANGED
@@ -5,7 +5,7 @@ module MQSink
5
5
  @localhost = cfg['localhost']
6
6
  @localport = cfg['localport']
7
7
  @firewall = cfg['firewall']
8
- @fw_file = cfg['fw_file']
8
+ @fw_file = cfg['fw_file']
9
9
  @mode = cfg['mode']
10
10
  @mqserver = cfg['amqp_server']
11
11
  @classifiers = cfg['classifiers']
@@ -24,33 +24,48 @@ module MQSink
24
24
 
25
25
  def listen
26
26
  @sock = UDPSocket.new
27
+ @queue = Queue.new
27
28
  puts "+ mqsink [debug]: loading server .." if @debug == 1
28
29
  @sock.bind @localhost, @localport
29
30
  count = 1
30
- while true do
31
- r, w, e = IO.select([@sock], nil, nil)
32
- if r[0]
33
- buffer, sockaddr = @sock.recvfrom_nonblock(1500)
34
- if @firewall == "on"
35
- @acl = build_acl @fw_file if count == 5 and @acl_refresh == 'on'
36
- count = 0 if count == 5 and @acl_refresh == 'on'
37
- count += 1
38
- puts "+ mqsink [debug]: verifying authorization for client -> #{sockaddr[3]} .." if @debug == 1
39
- acl = MQSink::ACL.new sockaddr[3], @acl
40
- lookup = acl.lookup
41
- else # do not apply ACL when firewall is disabled #
42
- lookup = 0
43
- end
44
- if lookup == 0
45
- remotehost = Resolv.getname sockaddr[3]
46
- puts "+ mqsink [debug]: buffer accepted -> #{buffer}" if @debug == 1
47
- relay = MQSink::AMQP.new buffer, remotehost, @mode, @mqserver, @classifiers, @static_queue, @debug
48
- relay.publish
49
- else
50
- puts "+ mqsink [debug]: client is not authorized .. ignoring buffer .." if @debug == 1
51
- end
52
- end
31
+ rx_buffer = Thread.new do
32
+ while true do
33
+ r, w, e = IO.select([@sock], nil, nil)
34
+ if r[0]
35
+ buffer, sockaddr = @sock.recvfrom_nonblock(1500)
36
+ new_buff = "#{sockaddr[3]}+#{buffer}"
37
+ @queue << new_buff
38
+ end
39
+ end
53
40
  end
41
+ consumer = Thread.new do
42
+ while true do
43
+ raw_buffer = @queue.pop(true) rescue nil
44
+ puts "+ mqsink [debug]: rx_buffer length = #{@queue.length}" if @debug == 1 and raw_buffer != nil
45
+ next if raw_buffer == nil
46
+ rip = raw_buffer.split('+')[0]
47
+ buffer = raw_buffer.split('+')[1]
48
+ if @firewall == "on" and buffer != nil
49
+ @acl = build_acl @fw_file if count == 5 and @acl_refresh == 'on'
50
+ count = 0 if count == 5 and @acl_refresh == 'on'
51
+ count += 1
52
+ puts "+ mqsink [debug]: verifying authorization for client -> #{rip} .." if @debug == 1
53
+ acl = MQSink::ACL.new rip, @acl
54
+ lookup = acl.lookup
55
+ else # do not apply ACL when firewall is disabled #
56
+ lookup = 0
57
+ end
58
+ if lookup == 0
59
+ remotehost = rip
60
+ puts "+ mqsink [debug]: buffer accepted -> #{buffer}" if @debug == 1
61
+ relay = MQSink::AMQP.new buffer, remotehost, @mode, @mqserver, @classifiers, @static_queue, @debug
62
+ relay.publish
63
+ else
64
+ puts "+ mqsink [debug]: client is not authorized .. ignoring buffer .." if @debug == 1
65
+ end
66
+ end
67
+ end
68
+ consumer.join
54
69
  end
55
70
 
56
71
  end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mqsink
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
5
- prerelease:
4
+ version: 0.0.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - Samer Abdel-Hafez
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-12-30 00:00:00.000000000 Z
11
+ date: 2014-03-18 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: a smart and lightweight udp to amqp translator
15
14
  email:
@@ -26,26 +25,25 @@ files:
26
25
  - bin/mqsinkd
27
26
  homepage: http://github.com/nopedial/mqsink
28
27
  licenses: []
28
+ metadata: {}
29
29
  post_install_message:
30
30
  rdoc_options: []
31
31
  require_paths:
32
32
  - lib
33
33
  required_ruby_version: !ruby/object:Gem::Requirement
34
- none: false
35
34
  requirements:
36
- - - ! '>='
35
+ - - '>='
37
36
  - !ruby/object:Gem::Version
38
37
  version: '0'
39
38
  required_rubygems_version: !ruby/object:Gem::Requirement
40
- none: false
41
39
  requirements:
42
- - - ! '>='
40
+ - - '>='
43
41
  - !ruby/object:Gem::Version
44
42
  version: '0'
45
43
  requirements: []
46
44
  rubyforge_project: mqsink
47
- rubygems_version: 1.8.23
45
+ rubygems_version: 2.0.3
48
46
  signing_key:
49
- specification_version: 3
47
+ specification_version: 4
50
48
  summary: udp to amqp bridge
51
49
  test_files: []