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.
- checksums.yaml +7 -0
- data/bin/mqsinkd +1 -1
- data/lib/mqsink/server.rb +39 -24
- 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
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
|
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
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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.
|
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:
|
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:
|
45
|
+
rubygems_version: 2.0.3
|
48
46
|
signing_key:
|
49
|
-
specification_version:
|
47
|
+
specification_version: 4
|
50
48
|
summary: udp to amqp bridge
|
51
49
|
test_files: []
|