smsc_manager 0.4.0 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.txt +3 -0
- data/Manifest.txt +2 -0
- data/bin/send_sms.rb +6 -2
- data/bin/sms_om_server_control.rb +7 -2
- data/bin/sms_topic_server.rb +2 -2
- data/bin/sms_topic_server_control.rb +9 -1
- data/bin/smsc_config.rb +0 -1
- data/examples/stomp +37 -0
- data/lib/smsc_manager/broadcast_topic.rb +58 -0
- data/lib/smsc_manager/sms_send_topic.rb +15 -2
- data/lib/smsc_manager/sms_statistics_listener.rb +2 -2
- data/lib/smsc_manager/smsc_listener.rb +2 -2
- data/lib/smsc_manager/version.rb +1 -1
- data/test/smsc_manager_test.rb +16 -0
- metadata +4 -2
data/CHANGELOG.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -19,8 +19,10 @@ lib/smsc_manager/smsc_listener.rb
|
|
19
19
|
lib/smsc_manager/sms_statistics_listener.rb
|
20
20
|
lib/smsc_manager/sms_send_topic.rb
|
21
21
|
lib/smsc_manager/broadcast.rb
|
22
|
+
lib/smsc_manager/broadcast_topic.rb
|
22
23
|
lib/smsc_manager/smsc_connection.rb
|
23
24
|
lib/smsc_manager.rb
|
24
25
|
test/test_helper.rb
|
25
26
|
test/smsc_manager_test.rb
|
26
27
|
examples/receive_sms_controller.rb
|
28
|
+
examples/stomp
|
data/bin/send_sms.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
require 'optparse'
|
3
3
|
def usage
|
4
4
|
puts "Usage: send_sms.rb -u user -m msisdn -s source -t text "
|
5
|
-
puts "or for example send_sms.rb --user etc."
|
5
|
+
puts "or for example send_sms.rb --user etc. -h hostname optional"
|
6
6
|
exit
|
7
7
|
end
|
8
8
|
def parse_options(params)
|
@@ -12,6 +12,9 @@ def parse_options(params)
|
|
12
12
|
#puts "paramsp is #{paramsp}"
|
13
13
|
user_flag=msisdn_flag=source_flag=text_flag=true
|
14
14
|
temp_hash = {}
|
15
|
+
opts.on("-h","--host VAL", String) {|val| temp_hash[:host ] = val
|
16
|
+
puts "host is #{val}"
|
17
|
+
}
|
15
18
|
opts.on("-u","--user VAL", String) {|val| temp_hash[:user ] = val
|
16
19
|
puts "user is #{val}"
|
17
20
|
user_flag=false }
|
@@ -42,10 +45,11 @@ require 'smsc_manager'
|
|
42
45
|
|
43
46
|
puts "Finding sms topic to use:"
|
44
47
|
begin
|
45
|
-
sms_sender=SmscManager::SmsSendTopic.new
|
48
|
+
sms_sender=SmscManager::SmsSendTopic.new(arg_hash)
|
46
49
|
rescue Exception => e
|
47
50
|
puts "exception found #{e.backtrace}"
|
48
51
|
end
|
52
|
+
|
49
53
|
user=arg_hash[:user]
|
50
54
|
destination=arg_hash[:msisdn]
|
51
55
|
source=arg_hash[:source]
|
@@ -7,6 +7,11 @@ gem 'daemons'
|
|
7
7
|
require 'daemons'
|
8
8
|
puts "#{ARGV[0]} Operational Measurement (OM) server:"
|
9
9
|
# begin
|
10
|
-
|
11
|
-
|
10
|
+
options = {
|
11
|
+
# :ontop => true,
|
12
|
+
# :multiple => true,
|
13
|
+
:monitor => true
|
14
|
+
|
15
|
+
}
|
16
|
+
Daemons.run(File.join(File.dirname(__FILE__), 'sms_om_server.rb'), options)
|
12
17
|
|
data/bin/sms_topic_server.rb
CHANGED
@@ -11,8 +11,8 @@ require 'smsc_manager'
|
|
11
11
|
|
12
12
|
puts "Starting topic server:"
|
13
13
|
# begin
|
14
|
-
|
15
|
-
|
14
|
+
SmscManager::SmscListener.new.run
|
15
|
+
# sms_listener.join
|
16
16
|
# rescue Exception => e
|
17
17
|
puts "exception found #{e.backtrace}"
|
18
18
|
# end
|
@@ -7,6 +7,14 @@ gem 'daemons'
|
|
7
7
|
require 'daemons'
|
8
8
|
puts "#{ARGV[0]} SMS Topic server:"
|
9
9
|
# begin
|
10
|
-
|
10
|
+
options = {
|
11
|
+
# :ontop => true,
|
12
|
+
# :multiple => true,
|
13
|
+
:monitor => true
|
14
|
+
|
15
|
+
}
|
16
|
+
Daemons.run(File.join(File.dirname(__FILE__), 'sms_topic_server.rb'), options)
|
17
|
+
|
18
|
+
|
11
19
|
|
12
20
|
|
data/bin/smsc_config.rb
CHANGED
data/examples/stomp
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
#
|
3
|
+
# Copyright (c) Scott Sproule
|
4
|
+
#
|
5
|
+
# stomp startup Startup script for stomp applications
|
6
|
+
#
|
7
|
+
# chkconfig: - 85 15
|
8
|
+
# description: Stomp manages stomp protocol clients. must start after activemq
|
9
|
+
#
|
10
|
+
|
11
|
+
RETVAL=0
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
case "$1" in
|
16
|
+
start)
|
17
|
+
sms_topic_server_control.rb start
|
18
|
+
sms_om_server_control.rb start
|
19
|
+
RETVAL=$?
|
20
|
+
;;
|
21
|
+
stop)
|
22
|
+
sms_topic_server_control.rb stop
|
23
|
+
sms_om_server_control.rb stop
|
24
|
+
RETVAL=$?
|
25
|
+
;;
|
26
|
+
restart)
|
27
|
+
sms_topic_server_control.rb restart
|
28
|
+
sms_om_server_control.rb restart
|
29
|
+
RETVAL=$?
|
30
|
+
;;
|
31
|
+
*)
|
32
|
+
echo "Usage: stomp {start|stop|restart}"
|
33
|
+
exit 1
|
34
|
+
;;
|
35
|
+
esac
|
36
|
+
|
37
|
+
exit $RETVAL
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# Sms stuff for handling sms
|
2
|
+
#require 'monitor'
|
3
|
+
require 'thread'
|
4
|
+
module SmscManager
|
5
|
+
class BadList < RuntimeError
|
6
|
+
end
|
7
|
+
# this class helps to broadcast sms to list
|
8
|
+
class BroadcastTopic
|
9
|
+
@@MAX_THROUGHPUT =5 # in messages per second
|
10
|
+
# old attr_accessor :text, :source, :list, :num_threads, :attempts, :sent
|
11
|
+
attr_accessor :text, :source, :list, :num_threads, :attempts, :sent
|
12
|
+
def common_setup(src)
|
13
|
+
@guard = Mutex.new
|
14
|
+
self.attempts=0
|
15
|
+
self.sent=0
|
16
|
+
self.source=src
|
17
|
+
end
|
18
|
+
# initialize with list of destionations, texts eg different text for each destination
|
19
|
+
# initialize with common text and list of destinations
|
20
|
+
def initialize(src, lst, txt=nil)
|
21
|
+
common_setup(src)
|
22
|
+
self.list=lst
|
23
|
+
self.text=txt
|
24
|
+
# puts "lst.size is #{lst.size}"
|
25
|
+
raise BadList.new("use send_sms for lists of size 1") if lst.class==String
|
26
|
+
@list_queue=Queue.new
|
27
|
+
self.populate_topic(lst)
|
28
|
+
|
29
|
+
# raise InvalidPrefix.new("invalid prefix: valid prefix area:" + Sms.valid ) if !prefix_test
|
30
|
+
end
|
31
|
+
|
32
|
+
# populate thread safe queue
|
33
|
+
def populate_topic(lst)
|
34
|
+
# puts "list is #{lst}"
|
35
|
+
arg_hash = {:host => 'localhost'}
|
36
|
+
sms_sender=SmscManager::SmsSendTopic.new(arg_hash)
|
37
|
+
lst.each {|key, val|
|
38
|
+
# txt=line[1] ||
|
39
|
+
# if value set then send it else send default text value
|
40
|
+
txt2 = val==nil ? self.text : val
|
41
|
+
dst = key
|
42
|
+
puts "text is #{txt2} dest is #{dst}"
|
43
|
+
begin
|
44
|
+
sms=SmscManager::Sms.new(txt2,dst,self.source)
|
45
|
+
sms_sender.send_topic(sms)
|
46
|
+
self.attempts+=1
|
47
|
+
self.sent+=1
|
48
|
+
rescue Exception => e
|
49
|
+
self.sent-=1
|
50
|
+
puts "bad values dst: #{dst} txt: #{txt2} msg: #{e.message}"
|
51
|
+
end
|
52
|
+
|
53
|
+
# puts " dst is #{dst}"
|
54
|
+
}
|
55
|
+
puts "populate topic sent #{self.sent}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -8,13 +8,26 @@ class SmsSendTopic
|
|
8
8
|
attr_accessor :conn
|
9
9
|
#need to define topic, host properly
|
10
10
|
@@TOPIC='/topic/sms'
|
11
|
-
def initialize
|
12
|
-
|
11
|
+
def initialize(options={})
|
12
|
+
# set up variables using hash
|
13
|
+
host = options[:host]==nil ? 'localhost' : options[:host]
|
14
|
+
port = options[:port]==nil ? '61613' : options[:port]
|
15
|
+
puts "host is: #{host} port is #{port}"
|
16
|
+
self.conn = Stomp::Connection.open '', '', host, port, false
|
13
17
|
# self.conn.subscribe @@TOPIC, { :ack =>"auto" }
|
14
18
|
puts "finished initializing"
|
15
19
|
end
|
20
|
+
# def initialize()
|
21
|
+
# self.conn = Stomp::Connection.open '', '', 'localhost', 61613, false
|
22
|
+
# self.conn.subscribe @@TOPIC, { :ack =>"auto" }
|
23
|
+
# puts "finished initializing"
|
24
|
+
# end
|
16
25
|
def send_sms(text,destination,source)
|
17
26
|
sms=SmscManager::Sms.new(text,destination,source)
|
27
|
+
self.send_topic(sms)
|
28
|
+
end #send_sms
|
29
|
+
def send_topic(sms)
|
30
|
+
#sms=SmscManager::Sms.new(text,destination,source)
|
18
31
|
msgbody=sms.to_xml
|
19
32
|
# puts "message body is #{msgbody}"
|
20
33
|
self.conn.send @@TOPIC, msgbody, {'persistent'=>'false'}
|
@@ -29,7 +29,7 @@ class SmsStatisticsListener
|
|
29
29
|
}
|
30
30
|
end
|
31
31
|
def run
|
32
|
-
|
32
|
+
# Thread.new {
|
33
33
|
while true #loop forever
|
34
34
|
# puts "before receive"
|
35
35
|
msg = self.conn.receive
|
@@ -43,7 +43,7 @@ class SmsStatisticsListener
|
|
43
43
|
puts "exception found #{e.backtrace}"
|
44
44
|
end
|
45
45
|
end # while
|
46
|
-
|
46
|
+
# }
|
47
47
|
# t.join # wait for t to die..
|
48
48
|
end #run
|
49
49
|
end # smsc listener
|
@@ -18,7 +18,7 @@ class SmscListener
|
|
18
18
|
puts "finished initializing"
|
19
19
|
end
|
20
20
|
def run
|
21
|
-
|
21
|
+
|
22
22
|
while true #loop forever
|
23
23
|
# puts "before receive"
|
24
24
|
msg = self.conn.receive
|
@@ -32,7 +32,7 @@ class SmscListener
|
|
32
32
|
puts "exception found #{e.backtrace}"
|
33
33
|
end
|
34
34
|
end # while
|
35
|
-
|
35
|
+
|
36
36
|
# t.join # wait for t to die..
|
37
37
|
end #run
|
38
38
|
end # smsc listener
|
data/lib/smsc_manager/version.rb
CHANGED
data/test/smsc_manager_test.rb
CHANGED
@@ -33,6 +33,17 @@ class SmscManagerTest < Test::Unit::TestCase
|
|
33
33
|
end
|
34
34
|
|
35
35
|
end
|
36
|
+
def test_sms_send_topic
|
37
|
+
sms=SmscManager::Sms.new('hello scott','09996557890','websource')
|
38
|
+
begin
|
39
|
+
smsc=SmscManager::SmsSendTopic.new()
|
40
|
+
r=smsc.send_topic(sms)
|
41
|
+
end
|
42
|
+
puts "test send topic"
|
43
|
+
smsc=SmscManager::SmsSendTopic.new({:host => '127.0.0.1'})
|
44
|
+
r=smsc.send_topic(sms)
|
45
|
+
puts "test send topic after host"
|
46
|
+
end
|
36
47
|
def test_smsc_db
|
37
48
|
assert @smsc!=nil, 'smsc nil big problems'
|
38
49
|
oldport=@smsc.port
|
@@ -54,6 +65,11 @@ class SmscManagerTest < Test::Unit::TestCase
|
|
54
65
|
b=SmscManager::Broadcast.new('888',list,"hello there")
|
55
66
|
assert b.attempts ==2, "did not send two sms"
|
56
67
|
end
|
68
|
+
def test_broadcast_topic_one
|
69
|
+
list = %w(9991 9992)
|
70
|
+
b=SmscManager::BroadcastTopic.new('888',list,"hello there")
|
71
|
+
assert b.attempts ==2, "did not send two sms"
|
72
|
+
end
|
57
73
|
def test_broadcast_five
|
58
74
|
list = %w(9991 9992 9993 9994 9995)
|
59
75
|
b=SmscManager::Broadcast.new('888',list,"hello there")
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: smsc_manager
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.4.
|
7
|
-
date: 2007-09-
|
6
|
+
version: 0.4.2
|
7
|
+
date: 2007-09-19 00:00:00 +08:00
|
8
8
|
summary: connection to smsc via http using kannel
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -50,11 +50,13 @@ files:
|
|
50
50
|
- lib/smsc_manager/sms_statistics_listener.rb
|
51
51
|
- lib/smsc_manager/sms_send_topic.rb
|
52
52
|
- lib/smsc_manager/broadcast.rb
|
53
|
+
- lib/smsc_manager/broadcast_topic.rb
|
53
54
|
- lib/smsc_manager/smsc_connection.rb
|
54
55
|
- lib/smsc_manager.rb
|
55
56
|
- test/test_helper.rb
|
56
57
|
- test/smsc_manager_test.rb
|
57
58
|
- examples/receive_sms_controller.rb
|
59
|
+
- examples/stomp
|
58
60
|
test_files:
|
59
61
|
- test/smsc_manager_test.rb
|
60
62
|
rdoc_options:
|