rocket_sms 0.1.1

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 (76) hide show
  1. data/.gitignore +19 -0
  2. data/.rspec +2 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +29 -0
  6. data/Rakefile +1 -0
  7. data/bin/scheduler_runner.rb +11 -0
  8. data/bin/transceiver_runner.rb +10 -0
  9. data/examples/gateway.rb +7 -0
  10. data/examples/gateway.yml +40 -0
  11. data/examples/test.rb +60 -0
  12. data/lib/rocket_sms.rb +111 -0
  13. data/lib/rocket_sms/did.rb +25 -0
  14. data/lib/rocket_sms/gateway.rb +123 -0
  15. data/lib/rocket_sms/lock.rb +0 -0
  16. data/lib/rocket_sms/message.rb +30 -0
  17. data/lib/rocket_sms/scheduler.rb +212 -0
  18. data/lib/rocket_sms/transceiver.rb +260 -0
  19. data/lib/rocket_sms/version.rb +3 -0
  20. data/rocket_sms.gemspec +34 -0
  21. data/spec/spec_helper.rb +17 -0
  22. data/vendor/ruby-smpp/CHANGELOG +52 -0
  23. data/vendor/ruby-smpp/CONTRIBUTORS.txt +11 -0
  24. data/vendor/ruby-smpp/Gemfile +8 -0
  25. data/vendor/ruby-smpp/LICENSE +20 -0
  26. data/vendor/ruby-smpp/README.rdoc +89 -0
  27. data/vendor/ruby-smpp/Rakefile +53 -0
  28. data/vendor/ruby-smpp/VERSION +1 -0
  29. data/vendor/ruby-smpp/config/environment.rb +2 -0
  30. data/vendor/ruby-smpp/examples/PDU1.example +26 -0
  31. data/vendor/ruby-smpp/examples/PDU2.example +26 -0
  32. data/vendor/ruby-smpp/examples/sample_gateway.rb +137 -0
  33. data/vendor/ruby-smpp/examples/sample_smsc.rb +102 -0
  34. data/vendor/ruby-smpp/lib/smpp.rb +25 -0
  35. data/vendor/ruby-smpp/lib/smpp/base.rb +308 -0
  36. data/vendor/ruby-smpp/lib/smpp/encoding/utf8_encoder.rb +37 -0
  37. data/vendor/ruby-smpp/lib/smpp/optional_parameter.rb +35 -0
  38. data/vendor/ruby-smpp/lib/smpp/pdu/base.rb +183 -0
  39. data/vendor/ruby-smpp/lib/smpp/pdu/bind_base.rb +25 -0
  40. data/vendor/ruby-smpp/lib/smpp/pdu/bind_receiver.rb +4 -0
  41. data/vendor/ruby-smpp/lib/smpp/pdu/bind_receiver_response.rb +4 -0
  42. data/vendor/ruby-smpp/lib/smpp/pdu/bind_resp_base.rb +17 -0
  43. data/vendor/ruby-smpp/lib/smpp/pdu/bind_transceiver.rb +4 -0
  44. data/vendor/ruby-smpp/lib/smpp/pdu/bind_transceiver_response.rb +4 -0
  45. data/vendor/ruby-smpp/lib/smpp/pdu/deliver_sm.rb +142 -0
  46. data/vendor/ruby-smpp/lib/smpp/pdu/deliver_sm_response.rb +12 -0
  47. data/vendor/ruby-smpp/lib/smpp/pdu/enquire_link.rb +11 -0
  48. data/vendor/ruby-smpp/lib/smpp/pdu/enquire_link_response.rb +11 -0
  49. data/vendor/ruby-smpp/lib/smpp/pdu/generic_nack.rb +20 -0
  50. data/vendor/ruby-smpp/lib/smpp/pdu/submit_multi.rb +68 -0
  51. data/vendor/ruby-smpp/lib/smpp/pdu/submit_multi_response.rb +49 -0
  52. data/vendor/ruby-smpp/lib/smpp/pdu/submit_sm.rb +91 -0
  53. data/vendor/ruby-smpp/lib/smpp/pdu/submit_sm_response.rb +31 -0
  54. data/vendor/ruby-smpp/lib/smpp/pdu/unbind.rb +11 -0
  55. data/vendor/ruby-smpp/lib/smpp/pdu/unbind_response.rb +12 -0
  56. data/vendor/ruby-smpp/lib/smpp/receiver.rb +27 -0
  57. data/vendor/ruby-smpp/lib/smpp/server.rb +223 -0
  58. data/vendor/ruby-smpp/lib/smpp/transceiver.rb +109 -0
  59. data/vendor/ruby-smpp/lib/sms.rb +9 -0
  60. data/vendor/ruby-smpp/ruby-smpp.gemspec +96 -0
  61. data/vendor/ruby-smpp/test/delegate.rb +28 -0
  62. data/vendor/ruby-smpp/test/encoding_test.rb +232 -0
  63. data/vendor/ruby-smpp/test/optional_parameter_test.rb +30 -0
  64. data/vendor/ruby-smpp/test/pdu_parsing_test.rb +111 -0
  65. data/vendor/ruby-smpp/test/receiver_test.rb +232 -0
  66. data/vendor/ruby-smpp/test/responsive_delegate.rb +53 -0
  67. data/vendor/ruby-smpp/test/server.rb +56 -0
  68. data/vendor/ruby-smpp/test/smpp_test.rb +239 -0
  69. data/vendor/ruby-smpp/test/submit_sm_test.rb +40 -0
  70. data/vendor/ruby-smpp/test/transceiver_test.rb +35 -0
  71. data/vendor/smscsim/License.txt +61 -0
  72. data/vendor/smscsim/smpp.jar +0 -0
  73. data/vendor/smscsim/smscsim.jar +0 -0
  74. data/vendor/smscsim/start.sh +3 -0
  75. data/vendor/smscsim/users.txt +46 -0
  76. metadata +299 -0
@@ -0,0 +1,239 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'smpp'
4
+ require 'server'
5
+ require 'delegate'
6
+ require 'responsive_delegate'
7
+
8
+ class Poller
9
+ def start
10
+
11
+ end
12
+ end
13
+
14
+
15
+ class SmppTest < Test::Unit::TestCase
16
+
17
+ def config
18
+ Server::config
19
+ end
20
+
21
+ def test_transceiver_should_bind_and_unbind_then_stop
22
+ EventMachine.run {
23
+ EventMachine.start_server "localhost", 9000, Server::Unbind
24
+ EventMachine.connect "localhost", 9000, Smpp::Transceiver, config, Delegate.new
25
+ }
26
+ # should not hang here: the server's response should have caused the client to terminate
27
+ end
28
+
29
+ def test_transceiver_api_should_respond_to_message_rejected
30
+ $tx = nil
31
+ delegate = ResponsiveDelegate.new
32
+ EventMachine.run {
33
+ EventMachine.start_server "localhost", 9000, Server::SubmitSmResponseWithErrorStatus
34
+ $tx = EventMachine.connect "localhost", 9000, Smpp::Transceiver, config, delegate
35
+ }
36
+ assert_equal(delegate.event_counter[:message_rejected], 1)
37
+ end
38
+
39
+ def test_bind_transceiver
40
+ pdu1 = Smpp::Pdu::BindTransceiver.new(
41
+ config[:system_id],
42
+ config[:password],
43
+ config[:system_type],
44
+ config[:source_ton],
45
+ config[:source_npi],
46
+ config[:source_address_range]
47
+ )
48
+
49
+ pdu2 = Smpp::Pdu::Base.create(pdu1.data)
50
+
51
+ assert_instance_of(Smpp::Pdu::BindTransceiver, pdu2)
52
+ assert_equal(pdu1.system_id, pdu2.system_id)
53
+ assert_equal(pdu1.password, pdu2.password)
54
+ assert_equal(pdu1.system_type, pdu2.system_type)
55
+ assert_equal(pdu1.addr_ton, pdu2.addr_ton)
56
+ assert_equal(pdu1.addr_npi, pdu2.addr_npi)
57
+ assert_equal(pdu1.address_range, pdu2.address_range)
58
+ assert_equal(pdu1.sequence_number, pdu2.sequence_number)
59
+ assert_equal(pdu1.command_status, pdu2.command_status)
60
+ end
61
+
62
+ def test_bind_transceiver_response
63
+ pdu1 = Smpp::Pdu::BindTransceiverResponse.new(nil, Smpp::Pdu::Base::ESME_ROK, config[:system_id])
64
+ pdu2 = Smpp::Pdu::Base.create(pdu1.data)
65
+ assert_instance_of(Smpp::Pdu::BindTransceiverResponse, pdu2)
66
+ assert_equal(pdu1.system_id, pdu2.system_id)
67
+ assert_equal(pdu1.sequence_number, pdu2.sequence_number)
68
+ assert_equal(pdu1.command_status, pdu2.command_status)
69
+ end
70
+
71
+ def test_deliver_sm
72
+ pdu1 = Smpp::Pdu::DeliverSm.new( '11111', '1111111111', "This is a test" )
73
+ pdu2 = Smpp::Pdu::Base.create(pdu1.data)
74
+ assert_instance_of(Smpp::Pdu::DeliverSm, pdu2)
75
+ assert_equal(pdu1.udh, pdu2.udh)
76
+ assert_equal(pdu1.short_message, pdu2.short_message)
77
+ assert_equal(pdu1.service_type, pdu2.service_type)
78
+ assert_equal(pdu1.source_addr_ton, pdu2.source_addr_ton)
79
+ assert_equal(pdu1.source_addr_npi, pdu2.source_addr_npi)
80
+ assert_equal(pdu1.source_addr, pdu2.source_addr)
81
+ assert_equal(pdu1.dest_addr_ton, pdu2.dest_addr_ton)
82
+ assert_equal(pdu1.dest_addr_npi, pdu2.dest_addr_npi)
83
+ assert_equal(pdu1.destination_addr, pdu2.destination_addr)
84
+ assert_equal(pdu1.esm_class, pdu2.esm_class)
85
+ assert_equal(pdu1.protocol_id, pdu2.protocol_id)
86
+ assert_equal(pdu1.priority_flag, pdu2.priority_flag)
87
+ assert_equal(pdu1.schedule_delivery_time, pdu2.schedule_delivery_time)
88
+ assert_equal(pdu1.validity_period, pdu2.validity_period)
89
+ assert_equal(pdu1.registered_delivery, pdu2.registered_delivery)
90
+ assert_equal(pdu1.replace_if_present_flag, pdu2.replace_if_present_flag)
91
+ assert_equal(pdu1.data_coding, pdu2.data_coding)
92
+ assert_equal(pdu1.sm_default_msg_id, pdu2.sm_default_msg_id)
93
+ assert_equal(pdu1.sm_length, pdu2.sm_length)
94
+ assert_equal(pdu1.stat, pdu2.stat)
95
+ assert_equal(pdu1.msg_reference, pdu2.msg_reference)
96
+ assert_equal(pdu1.sequence_number, pdu2.sequence_number)
97
+ assert_equal(pdu1.command_status, pdu2.command_status)
98
+ end
99
+
100
+ def test_submit_sm
101
+ pdu1 = Smpp::Pdu::SubmitSm.new( '11111', '1111111111', "This is a test" )
102
+ pdu2 = Smpp::Pdu::Base.create(pdu1.data)
103
+ assert_instance_of(Smpp::Pdu::SubmitSm, pdu2)
104
+ assert_equal(pdu1.udh, pdu2.udh)
105
+ assert_equal(pdu1.short_message, pdu2.short_message)
106
+ assert_equal(pdu1.service_type, pdu2.service_type)
107
+ assert_equal(pdu1.source_addr_ton, pdu2.source_addr_ton)
108
+ assert_equal(pdu1.source_addr_npi, pdu2.source_addr_npi)
109
+ assert_equal(pdu1.source_addr, pdu2.source_addr)
110
+ assert_equal(pdu1.dest_addr_ton, pdu2.dest_addr_ton)
111
+ assert_equal(pdu1.dest_addr_npi, pdu2.dest_addr_npi)
112
+ assert_equal(pdu1.destination_addr, pdu2.destination_addr)
113
+ assert_equal(pdu1.esm_class, pdu2.esm_class)
114
+ assert_equal(pdu1.protocol_id, pdu2.protocol_id)
115
+ assert_equal(pdu1.priority_flag, pdu2.priority_flag)
116
+ assert_equal(pdu1.schedule_delivery_time, pdu2.schedule_delivery_time)
117
+ assert_equal(pdu1.validity_period, pdu2.validity_period)
118
+ assert_equal(pdu1.registered_delivery, pdu2.registered_delivery)
119
+ assert_equal(pdu1.replace_if_present_flag, pdu2.replace_if_present_flag)
120
+ assert_equal(pdu1.data_coding, pdu2.data_coding)
121
+ assert_equal(pdu1.sm_default_msg_id, pdu2.sm_default_msg_id)
122
+ assert_equal(pdu1.sm_length, pdu2.sm_length)
123
+ assert_equal(pdu1.sequence_number, pdu2.sequence_number)
124
+ assert_equal(pdu1.command_status, pdu2.command_status)
125
+ end
126
+
127
+ def test_submit_sm_receiving_invalid_status
128
+ pdu1 = Smpp::Pdu::SubmitSm.new( '11111', '1111111111', "This is a test" )
129
+ pdu2 = Smpp::Pdu::Base.create(pdu1.data)
130
+ end
131
+
132
+ def test_deliver_sm_response
133
+ pdu1 = Smpp::Pdu::DeliverSmResponse.new( nil )
134
+ pdu2 = Smpp::Pdu::Base.create(pdu1.data)
135
+ assert_instance_of(Smpp::Pdu::DeliverSmResponse, pdu2)
136
+ assert_equal(pdu1.sequence_number, pdu2.sequence_number)
137
+ assert_equal(pdu1.command_status, pdu2.command_status)
138
+ end
139
+
140
+ def test_submit_sm_response
141
+ pdu1 = Smpp::Pdu::SubmitSmResponse.new( nil, Smpp::Pdu::Base::ESME_ROK, 3 )
142
+ pdu2 = Smpp::Pdu::Base.create(pdu1.data)
143
+ assert_instance_of(Smpp::Pdu::SubmitSmResponse, pdu2)
144
+ assert_equal(pdu1.sequence_number, pdu2.sequence_number)
145
+ assert_equal(pdu1.command_status, pdu2.command_status)
146
+ end
147
+
148
+ def test_enquire_link
149
+ pdu1 = Smpp::Pdu::EnquireLink.new( )
150
+ pdu2 = Smpp::Pdu::Base.create(pdu1.data)
151
+ assert_instance_of(Smpp::Pdu::EnquireLink, pdu2)
152
+ assert_equal(pdu1.sequence_number, pdu2.sequence_number)
153
+ assert_equal(pdu1.command_status, pdu2.command_status)
154
+ end
155
+
156
+ def test_enquire_link_resp
157
+ pdu1 = Smpp::Pdu::EnquireLinkResponse.new( )
158
+ pdu2 = Smpp::Pdu::Base.create(pdu1.data)
159
+ assert_instance_of(Smpp::Pdu::EnquireLinkResponse, pdu2)
160
+ assert_equal(pdu1.sequence_number, pdu2.sequence_number)
161
+ assert_equal(pdu1.command_status, pdu2.command_status)
162
+ end
163
+
164
+ def test_generic_nack
165
+ pdu1 = Smpp::Pdu::GenericNack.new(nil, Smpp::Pdu::Base::ESME_RTHROTTLED )
166
+ pdu2 = Smpp::Pdu::Base.create(pdu1.data)
167
+ assert_instance_of(Smpp::Pdu::GenericNack, pdu2)
168
+ assert_equal(pdu1.sequence_number, pdu2.sequence_number)
169
+ assert_equal(pdu1.command_status, pdu2.command_status)
170
+ end
171
+
172
+ def test_unbind
173
+ pdu1 = Smpp::Pdu::Unbind.new()
174
+ pdu2 = Smpp::Pdu::Base.create(pdu1.data)
175
+ assert_instance_of(Smpp::Pdu::Unbind, pdu2)
176
+ assert_equal(pdu1.sequence_number, pdu2.sequence_number)
177
+ assert_equal(pdu1.command_status, pdu2.command_status)
178
+ end
179
+
180
+ def test_unbind_response
181
+ pdu1 = Smpp::Pdu::UnbindResponse.new(nil, Smpp::Pdu::Base::ESME_ROK)
182
+ pdu2 = Smpp::Pdu::Base.create(pdu1.data)
183
+ assert_instance_of(Smpp::Pdu::UnbindResponse, pdu2)
184
+ assert_equal(pdu1.sequence_number, pdu2.sequence_number)
185
+ assert_equal(pdu1.command_status, pdu2.command_status)
186
+ end
187
+
188
+ #TODO: This test is known to fail since this portion of the library is incomplete.
189
+ def _todo_test_submit_multi
190
+ pdu1 = Smpp::Pdu::SubmitMulti.new( '11111', ['1111111111','1111111112','1111111113'], "This is a test" )
191
+ pdu2 = Smpp::Pdu::Base.create(pdu1.data)
192
+ assert_instance_of(Smpp::Pdu::SubmitMulti, pdu2)
193
+ assert_equal(pdu1.udh, pdu2.udh)
194
+ assert_equal(pdu1.short_message, pdu2.short_message)
195
+ assert_equal(pdu1.service_type, pdu2.service_type)
196
+ assert_equal(pdu1.source_addr_ton, pdu2.source_addr_ton)
197
+ assert_equal(pdu1.source_addr_npi, pdu2.source_addr_npi)
198
+ assert_equal(pdu1.source_addr, pdu2.source_addr)
199
+ assert_equal(pdu1.dest_addr_ton, pdu2.dest_addr_ton)
200
+ assert_equal(pdu1.dest_addr_npi, pdu2.dest_addr_npi)
201
+ assert_equal(pdu1.destination_addr_array, pdu2.destination_addr_array)
202
+ assert_equal(pdu1.esm_class, pdu2.esm_class)
203
+ assert_equal(pdu1.protocol_id, pdu2.protocol_id)
204
+ assert_equal(pdu1.priority_flag, pdu2.priority_flag)
205
+ assert_equal(pdu1.schedule_delivery_time, pdu2.schedule_delivery_time)
206
+ assert_equal(pdu1.validity_period, pdu2.validity_period)
207
+ assert_equal(pdu1.registered_delivery, pdu2.registered_delivery)
208
+ assert_equal(pdu1.replace_if_present_flag, pdu2.replace_if_present_flag)
209
+ assert_equal(pdu1.data_coding, pdu2.data_coding)
210
+ assert_equal(pdu1.sm_default_msg_id, pdu2.sm_default_msg_id)
211
+ assert_equal(pdu1.sm_length, pdu2.sm_length)
212
+ assert_equal(pdu1.sequence_number, pdu2.sequence_number)
213
+ assert_equal(pdu1.command_status, pdu2.command_status)
214
+ end
215
+
216
+ def _test_submit_multi_response
217
+ smes = [
218
+ Smpp::Pdu::SubmitMultiResponse::UnsuccessfulSme.new(1,1,'1111111111', Smpp::Pdu::Base::ESME_RINVDSTADR),
219
+ Smpp::Pdu::SubmitMultiResponse::UnsuccessfulSme.new(1,1,'1111111112', Smpp::Pdu::Base::ESME_RINVDSTADR),
220
+ Smpp::Pdu::SubmitMultiResponse::UnsuccessfulSme.new(1,1,'1111111113', Smpp::Pdu::Base::ESME_RINVDSTADR),
221
+ ]
222
+ pdu1 = Smpp::Pdu::SubmitMultiResponse.new( nil, Smpp::Pdu::Base::ESME_ROK, '3', smes )
223
+ pdu2 = Smpp::Pdu::Base.create(pdu1.data)
224
+
225
+ assert_instance_of(Smpp::Pdu::SubmitMultiResponse, pdu2)
226
+ assert_equal(pdu1.unsuccess_smes, pdu2.unsuccess_smes)
227
+ assert_equal(pdu1.sequence_number, pdu2.sequence_number)
228
+ assert_equal(pdu1.command_status, pdu2.command_status)
229
+ end
230
+
231
+ def test_should_parse_ref_and_stat_from_deliver_sm
232
+ direct = Smpp::Pdu::DeliverSm.new( '1', '2', "419318028472222#id:11f8f46639bd4f7a209016e1a181e3ae sub:001 dlvrd:001 submit date:0902191702 done date:0902191702 stat:DELIVRD err:000 Text:TVILLING: Sl? ut h?'!11f8f46639bd4f7a209016e1a181e3ae", :esm_class => 4)
233
+ parsed = Smpp::Pdu::Base.create(direct.data)
234
+ assert_equal("DELIVRD", parsed.stat)
235
+ assert_equal("11f8f46639bd4f7a209016e1a181e3ae", parsed.msg_reference)
236
+ end
237
+
238
+
239
+ end
@@ -0,0 +1,40 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'smpp'
4
+
5
+ class SubmitSmTest < Test::Unit::TestCase
6
+
7
+ def test_this_is_not_a_real_test
8
+ value = [383 >> 8, 383 & 0xff]
9
+ optionals = {0x2150 => Smpp::OptionalParameter.new(0x2150, value.pack('cc'))}
10
+ pdu = Smpp::Pdu::SubmitSm.new('12345', '54321', "Ba Ba Boosh", {:optional_parameters => optionals})
11
+ Smpp::Base.hex_debug(pdu.data)
12
+ puts "PDU DATA", pdu.data.inspect
13
+
14
+ end
15
+
16
+ def test_fixnum_optional_parameter
17
+ value = [383 >> 8, 383 & 0xff]
18
+ optionals = {0x2150 => Smpp::OptionalParameter.new(0x2150, value.pack('cc'))}
19
+
20
+ pdu = Smpp::Pdu::SubmitSm.new('12345', '54321', "Ba Ba Boosh", {:optional_parameters => optionals})
21
+ pdu_from_wire = Smpp::Pdu::Base.create(pdu.data)
22
+
23
+ assert optional = pdu_from_wire.optional_parameters[0x2150]
24
+
25
+ optional_value = optional[:value].unpack('n')[0]
26
+ assert_equal 383, optional_value
27
+ end
28
+
29
+ def test_string_optional_parameter
30
+ optionals = {0x2150 => Smpp::OptionalParameter.new(0x2150, "boosh")}
31
+
32
+ pdu = Smpp::Pdu::SubmitSm.new('12345', '54321', "Ba Ba Boosh", {:optional_parameters => optionals})
33
+ pdu_from_wire = Smpp::Pdu::Base.create(pdu.data)
34
+
35
+ assert optional = pdu_from_wire.optional_parameters[0x2150]
36
+
37
+ optional_value = optional[:value].unpack("A*")[0]
38
+ assert_equal 'boosh', optional_value
39
+ end
40
+ end
@@ -0,0 +1,35 @@
1
+ require "rubygems"
2
+ require "test/unit"
3
+ require File.expand_path(File.dirname(__FILE__) + "../../lib/smpp")
4
+
5
+ class TransceiverTest < Test::Unit::TestCase
6
+ def test_get_message_part_size_8
7
+ options = {:data_coding => 8}
8
+ assert_equal(67, Smpp::Transceiver.get_message_part_size(options))
9
+ end
10
+ def test_get_message_part_size_0_and_1
11
+ options = {:data_coding => 0}
12
+ assert_equal(153, Smpp::Transceiver.get_message_part_size(options))
13
+ options = {:data_coding => 1}
14
+ assert_equal(153, Smpp::Transceiver.get_message_part_size(options))
15
+ end
16
+ def test_get_message_part_size_nil
17
+ options = {}
18
+ assert_equal(153, Smpp::Transceiver.get_message_part_size(options))
19
+ end
20
+ def test_get_message_part_size_other
21
+ options = {:data_coding => 3}
22
+ assert_equal(134, Smpp::Transceiver.get_message_part_size(options))
23
+ options = {:data_coding => 5}
24
+ assert_equal(134, Smpp::Transceiver.get_message_part_size(options))
25
+ options = {:data_coding => 6}
26
+ assert_equal(134, Smpp::Transceiver.get_message_part_size(options))
27
+ options = {:data_coding => 7}
28
+ assert_equal(134, Smpp::Transceiver.get_message_part_size(options))
29
+ end
30
+ def test_get_message_part_size_non_existant_data_coding
31
+ options = {:data_coding => 666}
32
+ assert_equal(153, Smpp::Transceiver.get_message_part_size(options))
33
+ end
34
+ end
35
+
@@ -0,0 +1,61 @@
1
+ Logica Open Source License Version 1.0
2
+ Copyright (c) 1996-2001 Logica Mobile Networks Limited, all rights reserved.
3
+
4
+ Logica Mobile Networks Limited ("Logica") is the owner of the rights
5
+ in the software programs ("Software"). In the following text, the term
6
+ "you" or "your" refers to you as an individual and/or (as the case may be)
7
+ to the legal entity to which the Software has been supplied.
8
+
9
+ Redistribution and use in source and binary forms, with or without
10
+ modification, are permitted provided all copies and partial copies
11
+ made and/or distributed (in whatever form) and all associated documentation
12
+ and other material must acknowledge Logica's rights by the inclusion
13
+ of the following notice:
14
+
15
+ "Copyright (c) 1996-2001 Logica Mobile Networks Limited;
16
+ this product includes software developed by Logica by whom copyright
17
+ and know-how are retained, all rights reserved."
18
+
19
+ The location of such notice shall be such that it is clearly displayed
20
+ and readable to any person accessing the Software.
21
+
22
+
23
+ Any use, copying or distribution of the Software is subject to the following:
24
+
25
+ * Your rights in respect of the Software are confined to the non-exclusive
26
+ and non-assignable license expressed herein. If you breach any of these
27
+ term and conditions then your license may be terminated.
28
+
29
+ * The copyright and other intellectual property rights in and in connection
30
+ with the Software are and shall remain the exclusive property of Logica
31
+ or its third party licensors. You must not remove or alter any copyright
32
+ or other proprietary notice on any of the software.
33
+
34
+
35
+ To the extent permitted by law and in the absence of a formal written contract
36
+ between you and Logica the following limitations and exclusions also apply:
37
+
38
+ * The Software is supplied and licensed on an "as is" basis without any
39
+ warranty or representation from Logica of any kind.
40
+
41
+ * Conditions, warranties and representations that might be attributed
42
+ to Logica or the Software (including, but not limited to, any implied
43
+ condition or warranty relating to merchantability, fitness, suitability
44
+ or quality) are excluded.
45
+
46
+ * In no event shall Logica be liable in respect of or in connection
47
+ with the supply, licensing, use or distribution of the software in any
48
+ form for any direct, special, indirect or consequential loss or damages
49
+ or for any loss of use, loss of data or of profits or for any business
50
+ interruption or loss of goodwill.
51
+
52
+ * Logica shall have no obligation to fix any defect or deficiency
53
+ in the Software and Logica shall have no liability for any consequences
54
+ (direct or consequential) that may arise from any such defect or deficiency.
55
+
56
+ * Logica's maximum liability (if any) in relation to the licensing,
57
+ provision and/or performance of the Software shall not exceed the price
58
+ you paid to secure your license.
59
+
60
+ The laws of Ireland shall apply to these terms and conditions and shall
61
+ govern every aspect of the supply and licensing of the Software.
Binary file
Binary file
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bash
2
+
3
+ java -cp smscsim.jar:smpp.jar com.logica.smscsim.Simulator
@@ -0,0 +1,46 @@
1
+ # This is an example of user definition file used to authenticate bounding ESME.
2
+ # User consists from attributes, each attribute is on one line,
3
+ # each attribute has key and value; users are delimited by one or more
4
+ # consecutive blank lines - next user is started by the next attribute after
5
+ # first occurence of blank line.
6
+ # Comment line can appear anywhere and it's ignored => it can't delimit
7
+ # two users.
8
+ # Format of attribute is <name>"="<value>
9
+ #
10
+ # The name and password attributes are compulsory for each user definition
11
+ # as they are compared to the system_id and password parameters
12
+ # in the incoming bound PDU.
13
+ #
14
+ # Note that timeout and bound attributes below are just exampples
15
+ # of additional attributes and aren't really used by the simulator :-)
16
+ # (future expansion?)
17
+ # Also note that whitespaces aren't removed from neither attribute name
18
+ # and it's value, i.e. "name=peter" and "name= peter" define two different users,
19
+ # "peter" and " peter".
20
+
21
+
22
+ # Pavel can bound for unlimited time as any type
23
+ name=pavel
24
+ password=wpsd
25
+ timeout=unlimited
26
+
27
+
28
+ # Jorge has time limited to 10, then the connection is dropped
29
+ # if enquire is unsuccessfull
30
+ # Also, Jorge can connect only as triansmitter or receiver, he can't
31
+ # connect as transciever
32
+
33
+ name=jorge
34
+ password=prtgljrg
35
+ # And this timeout is in minutes, bad luck, jorge %^)
36
+ timout=5
37
+ bound=t,r
38
+
39
+ # And another users
40
+ name=hugo
41
+ password=ggoohu
42
+
43
+ # that's all folks
44
+ name=DAMIEN
45
+ password=neimad
46
+
metadata ADDED
@@ -0,0 +1,299 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rocket_sms
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Marcelo Wiermann
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-10-06 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: eventmachine
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 1.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 1.0.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: em-hiredis
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: oj
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: multi_json
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rspec
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: cucumber
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: guard
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: guard-cucumber
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: guard-rspec
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: factory_girl
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: rack-test
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ description: RocketSMS is a EventMachine-based SMPP Gateway
191
+ email:
192
+ - marcelo.wiermann@gmail.com
193
+ executables:
194
+ - scheduler_runner.rb
195
+ - transceiver_runner.rb
196
+ extensions: []
197
+ extra_rdoc_files: []
198
+ files:
199
+ - .gitignore
200
+ - .rspec
201
+ - Gemfile
202
+ - LICENSE.txt
203
+ - README.md
204
+ - Rakefile
205
+ - bin/scheduler_runner.rb
206
+ - bin/transceiver_runner.rb
207
+ - examples/gateway.rb
208
+ - examples/gateway.yml
209
+ - examples/test.rb
210
+ - lib/rocket_sms.rb
211
+ - lib/rocket_sms/did.rb
212
+ - lib/rocket_sms/gateway.rb
213
+ - lib/rocket_sms/lock.rb
214
+ - lib/rocket_sms/message.rb
215
+ - lib/rocket_sms/scheduler.rb
216
+ - lib/rocket_sms/transceiver.rb
217
+ - lib/rocket_sms/version.rb
218
+ - rocket_sms.gemspec
219
+ - spec/spec_helper.rb
220
+ - vendor/ruby-smpp/CHANGELOG
221
+ - vendor/ruby-smpp/CONTRIBUTORS.txt
222
+ - vendor/ruby-smpp/Gemfile
223
+ - vendor/ruby-smpp/LICENSE
224
+ - vendor/ruby-smpp/README.rdoc
225
+ - vendor/ruby-smpp/Rakefile
226
+ - vendor/ruby-smpp/VERSION
227
+ - vendor/ruby-smpp/config/environment.rb
228
+ - vendor/ruby-smpp/examples/PDU1.example
229
+ - vendor/ruby-smpp/examples/PDU2.example
230
+ - vendor/ruby-smpp/examples/sample_gateway.rb
231
+ - vendor/ruby-smpp/examples/sample_smsc.rb
232
+ - vendor/ruby-smpp/lib/smpp.rb
233
+ - vendor/ruby-smpp/lib/smpp/base.rb
234
+ - vendor/ruby-smpp/lib/smpp/encoding/utf8_encoder.rb
235
+ - vendor/ruby-smpp/lib/smpp/optional_parameter.rb
236
+ - vendor/ruby-smpp/lib/smpp/pdu/base.rb
237
+ - vendor/ruby-smpp/lib/smpp/pdu/bind_base.rb
238
+ - vendor/ruby-smpp/lib/smpp/pdu/bind_receiver.rb
239
+ - vendor/ruby-smpp/lib/smpp/pdu/bind_receiver_response.rb
240
+ - vendor/ruby-smpp/lib/smpp/pdu/bind_resp_base.rb
241
+ - vendor/ruby-smpp/lib/smpp/pdu/bind_transceiver.rb
242
+ - vendor/ruby-smpp/lib/smpp/pdu/bind_transceiver_response.rb
243
+ - vendor/ruby-smpp/lib/smpp/pdu/deliver_sm.rb
244
+ - vendor/ruby-smpp/lib/smpp/pdu/deliver_sm_response.rb
245
+ - vendor/ruby-smpp/lib/smpp/pdu/enquire_link.rb
246
+ - vendor/ruby-smpp/lib/smpp/pdu/enquire_link_response.rb
247
+ - vendor/ruby-smpp/lib/smpp/pdu/generic_nack.rb
248
+ - vendor/ruby-smpp/lib/smpp/pdu/submit_multi.rb
249
+ - vendor/ruby-smpp/lib/smpp/pdu/submit_multi_response.rb
250
+ - vendor/ruby-smpp/lib/smpp/pdu/submit_sm.rb
251
+ - vendor/ruby-smpp/lib/smpp/pdu/submit_sm_response.rb
252
+ - vendor/ruby-smpp/lib/smpp/pdu/unbind.rb
253
+ - vendor/ruby-smpp/lib/smpp/pdu/unbind_response.rb
254
+ - vendor/ruby-smpp/lib/smpp/receiver.rb
255
+ - vendor/ruby-smpp/lib/smpp/server.rb
256
+ - vendor/ruby-smpp/lib/smpp/transceiver.rb
257
+ - vendor/ruby-smpp/lib/sms.rb
258
+ - vendor/ruby-smpp/ruby-smpp.gemspec
259
+ - vendor/ruby-smpp/test/delegate.rb
260
+ - vendor/ruby-smpp/test/encoding_test.rb
261
+ - vendor/ruby-smpp/test/optional_parameter_test.rb
262
+ - vendor/ruby-smpp/test/pdu_parsing_test.rb
263
+ - vendor/ruby-smpp/test/receiver_test.rb
264
+ - vendor/ruby-smpp/test/responsive_delegate.rb
265
+ - vendor/ruby-smpp/test/server.rb
266
+ - vendor/ruby-smpp/test/smpp_test.rb
267
+ - vendor/ruby-smpp/test/submit_sm_test.rb
268
+ - vendor/ruby-smpp/test/transceiver_test.rb
269
+ - vendor/smscsim/License.txt
270
+ - vendor/smscsim/smpp.jar
271
+ - vendor/smscsim/smscsim.jar
272
+ - vendor/smscsim/start.sh
273
+ - vendor/smscsim/users.txt
274
+ homepage: ''
275
+ licenses: []
276
+ post_install_message:
277
+ rdoc_options: []
278
+ require_paths:
279
+ - lib
280
+ required_ruby_version: !ruby/object:Gem::Requirement
281
+ none: false
282
+ requirements:
283
+ - - ! '>='
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ required_rubygems_version: !ruby/object:Gem::Requirement
287
+ none: false
288
+ requirements:
289
+ - - ! '>='
290
+ - !ruby/object:Gem::Version
291
+ version: '0'
292
+ requirements: []
293
+ rubyforge_project:
294
+ rubygems_version: 1.8.24
295
+ signing_key:
296
+ specification_version: 3
297
+ summary: RocketSMS is a EventMachine-based SMPP Gateway
298
+ test_files:
299
+ - spec/spec_helper.rb