mqsink 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
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: []