oversip_p 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (132) hide show
  1. checksums.yaml +7 -0
  2. data/AUTHORS +22 -0
  3. data/LICENSE +25 -0
  4. data/README.md +43 -0
  5. data/Rakefile +54 -0
  6. data/bin/oversip +184 -0
  7. data/etc/oversip.conf +274 -0
  8. data/etc/proxies.conf +145 -0
  9. data/etc/server.rb +315 -0
  10. data/etc/tls/ca/cacert.pem +3894 -0
  11. data/etc/tls/demo-tls.oversip.net.crt +17 -0
  12. data/etc/tls/demo-tls.oversip.net.key +15 -0
  13. data/etc/tls/upgrade-cacert.sh +12 -0
  14. data/etc/tls/utils/create-cert.rb +162 -0
  15. data/etc/tls/utils/get-sip-identities.rb +95 -0
  16. data/ext/common/c_util.h +74 -0
  17. data/ext/common/ruby_c_util.h +88 -0
  18. data/ext/sip_parser/common_headers.h +210 -0
  19. data/ext/sip_parser/ext_help.h +18 -0
  20. data/ext/sip_parser/extconf.rb +3 -0
  21. data/ext/sip_parser/sip_message_parser.c +29741 -0
  22. data/ext/sip_parser/sip_parser.h +250 -0
  23. data/ext/sip_parser/sip_parser_ruby.c +1370 -0
  24. data/ext/sip_parser/sip_uri_parser.c +39699 -0
  25. data/ext/stud/extconf.rb +43 -0
  26. data/ext/stun/ext_help.h +16 -0
  27. data/ext/stun/extconf.rb +3 -0
  28. data/ext/stun/stun_ruby.c +394 -0
  29. data/ext/utils/ext_help.h +14 -0
  30. data/ext/utils/extconf.rb +3 -0
  31. data/ext/utils/haproxy_protocol.c +6163 -0
  32. data/ext/utils/haproxy_protocol.h +27 -0
  33. data/ext/utils/ip_utils.c +5952 -0
  34. data/ext/utils/ip_utils.h +64 -0
  35. data/ext/utils/outbound_utils.c +3227 -0
  36. data/ext/utils/outbound_utils.h +27 -0
  37. data/ext/utils/utils_ruby.c +392 -0
  38. data/ext/utils/utils_ruby.h +76 -0
  39. data/ext/websocket_framing_utils/ext_help.h +18 -0
  40. data/ext/websocket_framing_utils/extconf.rb +3 -0
  41. data/ext/websocket_framing_utils/ws_framing_utils.h +47 -0
  42. data/ext/websocket_framing_utils/ws_framing_utils_ruby.c +135 -0
  43. data/ext/websocket_http_parser/ext_help.h +18 -0
  44. data/ext/websocket_http_parser/extconf.rb +3 -0
  45. data/ext/websocket_http_parser/ws_http_parser.c +1635 -0
  46. data/ext/websocket_http_parser/ws_http_parser.h +87 -0
  47. data/ext/websocket_http_parser/ws_http_parser_ruby.c +630 -0
  48. data/lib/oversip/config.rb +597 -0
  49. data/lib/oversip/config_validators.rb +126 -0
  50. data/lib/oversip/default_server.rb +52 -0
  51. data/lib/oversip/errors.rb +10 -0
  52. data/lib/oversip/fiber_pool.rb +56 -0
  53. data/lib/oversip/launcher.rb +635 -0
  54. data/lib/oversip/logger.rb +84 -0
  55. data/lib/oversip/modules/outbound_mangling.rb +56 -0
  56. data/lib/oversip/modules/user_assertion.rb +73 -0
  57. data/lib/oversip/proxies_config.rb +189 -0
  58. data/lib/oversip/ruby_ext/eventmachine.rb +38 -0
  59. data/lib/oversip/sip/client.rb +428 -0
  60. data/lib/oversip/sip/client_transaction.rb +586 -0
  61. data/lib/oversip/sip/constants.rb +88 -0
  62. data/lib/oversip/sip/core.rb +217 -0
  63. data/lib/oversip/sip/launcher.rb +221 -0
  64. data/lib/oversip/sip/listeners/connection.rb +54 -0
  65. data/lib/oversip/sip/listeners/ipv4_tcp_client.rb +21 -0
  66. data/lib/oversip/sip/listeners/ipv4_tcp_server.rb +22 -0
  67. data/lib/oversip/sip/listeners/ipv4_tls_client.rb +21 -0
  68. data/lib/oversip/sip/listeners/ipv4_tls_server.rb +22 -0
  69. data/lib/oversip/sip/listeners/ipv4_tls_tunnel_server.rb +22 -0
  70. data/lib/oversip/sip/listeners/ipv4_udp_server.rb +21 -0
  71. data/lib/oversip/sip/listeners/ipv6_tcp_client.rb +21 -0
  72. data/lib/oversip/sip/listeners/ipv6_tcp_server.rb +22 -0
  73. data/lib/oversip/sip/listeners/ipv6_tls_client.rb +21 -0
  74. data/lib/oversip/sip/listeners/ipv6_tls_server.rb +22 -0
  75. data/lib/oversip/sip/listeners/ipv6_tls_tunnel_server.rb +22 -0
  76. data/lib/oversip/sip/listeners/ipv6_udp_server.rb +21 -0
  77. data/lib/oversip/sip/listeners/tcp_client.rb +97 -0
  78. data/lib/oversip/sip/listeners/tcp_connection.rb +202 -0
  79. data/lib/oversip/sip/listeners/tcp_server.rb +71 -0
  80. data/lib/oversip/sip/listeners/tls_client.rb +125 -0
  81. data/lib/oversip/sip/listeners/tls_server.rb +88 -0
  82. data/lib/oversip/sip/listeners/tls_tunnel_connection.rb +89 -0
  83. data/lib/oversip/sip/listeners/tls_tunnel_server.rb +61 -0
  84. data/lib/oversip/sip/listeners/udp_connection.rb +214 -0
  85. data/lib/oversip/sip/listeners.rb +24 -0
  86. data/lib/oversip/sip/message.rb +177 -0
  87. data/lib/oversip/sip/message_processor.rb +213 -0
  88. data/lib/oversip/sip/name_addr.rb +51 -0
  89. data/lib/oversip/sip/proxy.rb +324 -0
  90. data/lib/oversip/sip/request.rb +179 -0
  91. data/lib/oversip/sip/response.rb +37 -0
  92. data/lib/oversip/sip/rfc3263.rb +643 -0
  93. data/lib/oversip/sip/server_transaction.rb +295 -0
  94. data/lib/oversip/sip/sip.rb +76 -0
  95. data/lib/oversip/sip/tags.rb +39 -0
  96. data/lib/oversip/sip/timers.rb +55 -0
  97. data/lib/oversip/sip/transport_manager.rb +130 -0
  98. data/lib/oversip/sip/uac.rb +89 -0
  99. data/lib/oversip/sip/uac_request.rb +84 -0
  100. data/lib/oversip/sip/uri.rb +208 -0
  101. data/lib/oversip/syslog.rb +68 -0
  102. data/lib/oversip/system_callbacks.rb +45 -0
  103. data/lib/oversip/tls.rb +172 -0
  104. data/lib/oversip/utils.rb +30 -0
  105. data/lib/oversip/version.rb +21 -0
  106. data/lib/oversip/websocket/constants.rb +55 -0
  107. data/lib/oversip/websocket/http_request.rb +59 -0
  108. data/lib/oversip/websocket/launcher.rb +183 -0
  109. data/lib/oversip/websocket/listeners/connection.rb +51 -0
  110. data/lib/oversip/websocket/listeners/ipv4_ws_server.rb +22 -0
  111. data/lib/oversip/websocket/listeners/ipv4_wss_server.rb +22 -0
  112. data/lib/oversip/websocket/listeners/ipv4_wss_tunnel_server.rb +22 -0
  113. data/lib/oversip/websocket/listeners/ipv6_ws_server.rb +22 -0
  114. data/lib/oversip/websocket/listeners/ipv6_wss_server.rb +22 -0
  115. data/lib/oversip/websocket/listeners/ipv6_wss_tunnel_server.rb +22 -0
  116. data/lib/oversip/websocket/listeners/ws_server.rb +331 -0
  117. data/lib/oversip/websocket/listeners/wss_server.rb +88 -0
  118. data/lib/oversip/websocket/listeners/wss_tunnel_server.rb +133 -0
  119. data/lib/oversip/websocket/listeners.rb +13 -0
  120. data/lib/oversip/websocket/websocket.rb +13 -0
  121. data/lib/oversip/websocket/ws_framing.rb +545 -0
  122. data/lib/oversip/websocket/ws_sip_app.rb +120 -0
  123. data/lib/oversip.rb +127 -0
  124. data/test/oversip_test_helper.rb +19 -0
  125. data/test/test_http_parser.rb +73 -0
  126. data/test/test_name_addr.rb +27 -0
  127. data/test/test_name_addr_parser.rb +24 -0
  128. data/test/test_sip_message_parser.rb +168 -0
  129. data/test/test_sip_uri_parser.rb +56 -0
  130. data/test/test_uri.rb +68 -0
  131. data/thirdparty/stud/stud.tar.gz +0 -0
  132. metadata +334 -0
metadata ADDED
@@ -0,0 +1,334 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: oversip_p
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Inaki Baz Castillo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-07-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: eventmachine
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.2.0
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.2.0.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: 1.2.0
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.2.0.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: iobuffer
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '='
38
+ - !ruby/object:Gem::Version
39
+ version: 1.1.2
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - '='
45
+ - !ruby/object:Gem::Version
46
+ version: 1.1.2
47
+ - !ruby/object:Gem::Dependency
48
+ name: em-udns
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - '='
52
+ - !ruby/object:Gem::Version
53
+ version: 0.3.6
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - '='
59
+ - !ruby/object:Gem::Version
60
+ version: 0.3.6
61
+ - !ruby/object:Gem::Dependency
62
+ name: escape_utils
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - '='
66
+ - !ruby/object:Gem::Version
67
+ version: 1.0.1
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '='
73
+ - !ruby/object:Gem::Version
74
+ version: 1.0.1
75
+ - !ruby/object:Gem::Dependency
76
+ name: term-ansicolor
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - '='
80
+ - !ruby/object:Gem::Version
81
+ version: 1.3.2
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - '='
87
+ - !ruby/object:Gem::Version
88
+ version: 1.3.2
89
+ - !ruby/object:Gem::Dependency
90
+ name: tins
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - '='
94
+ - !ruby/object:Gem::Version
95
+ version: 1.6.0
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - '='
101
+ - !ruby/object:Gem::Version
102
+ version: 1.6.0
103
+ - !ruby/object:Gem::Dependency
104
+ name: posix-spawn
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - '='
108
+ - !ruby/object:Gem::Version
109
+ version: 0.3.9
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - '='
115
+ - !ruby/object:Gem::Version
116
+ version: 0.3.9
117
+ - !ruby/object:Gem::Dependency
118
+ name: em-synchrony
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - '='
122
+ - !ruby/object:Gem::Version
123
+ version: 1.0.3
124
+ type: :runtime
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - '='
129
+ - !ruby/object:Gem::Version
130
+ version: 1.0.3
131
+ - !ruby/object:Gem::Dependency
132
+ name: rake
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '10.3'
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: 10.3.2
141
+ type: :development
142
+ prerelease: false
143
+ version_requirements: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - "~>"
146
+ - !ruby/object:Gem::Version
147
+ version: '10.3'
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: 10.3.2
151
+ description: |
152
+ OverSIP is an async SIP proxy/server programmable in Ruby language. Some features of OverSIP are:
153
+ - SIP transports: UDP, TCP, TLS and WebSocket.
154
+ - Full IPv4 and IPv6 support.
155
+ - RFC 3263: SIP DNS mechanism (NAPTR, SRV, A, AAAA) for failover and load balancing based on DNS.
156
+ - RFC 5626: OverSIP is a perfect Outbound Edge Proxy, including an integrated STUN server.
157
+ - Fully programmable in Ruby language (make SIP easy).
158
+ - Fast and efficient: OverSIP core is coded in C language.
159
+ OverSIP is build on top of EventMachine async library which follows the Reactor Design Pattern, allowing thousands of concurrent connections and requests in a never-blocking fashion.
160
+ email:
161
+ - ibc@aliax.net
162
+ executables:
163
+ - oversip
164
+ extensions:
165
+ - ext/sip_parser/extconf.rb
166
+ - ext/stun/extconf.rb
167
+ - ext/utils/extconf.rb
168
+ - ext/websocket_http_parser/extconf.rb
169
+ - ext/websocket_framing_utils/extconf.rb
170
+ - ext/stud/extconf.rb
171
+ extra_rdoc_files: []
172
+ files:
173
+ - AUTHORS
174
+ - LICENSE
175
+ - README.md
176
+ - Rakefile
177
+ - bin/oversip
178
+ - etc/oversip.conf
179
+ - etc/proxies.conf
180
+ - etc/server.rb
181
+ - etc/tls/ca/cacert.pem
182
+ - etc/tls/demo-tls.oversip.net.crt
183
+ - etc/tls/demo-tls.oversip.net.key
184
+ - etc/tls/upgrade-cacert.sh
185
+ - etc/tls/utils/create-cert.rb
186
+ - etc/tls/utils/get-sip-identities.rb
187
+ - ext/common/c_util.h
188
+ - ext/common/ruby_c_util.h
189
+ - ext/sip_parser/common_headers.h
190
+ - ext/sip_parser/ext_help.h
191
+ - ext/sip_parser/extconf.rb
192
+ - ext/sip_parser/sip_message_parser.c
193
+ - ext/sip_parser/sip_parser.h
194
+ - ext/sip_parser/sip_parser_ruby.c
195
+ - ext/sip_parser/sip_uri_parser.c
196
+ - ext/stud/extconf.rb
197
+ - ext/stun/ext_help.h
198
+ - ext/stun/extconf.rb
199
+ - ext/stun/stun_ruby.c
200
+ - ext/utils/ext_help.h
201
+ - ext/utils/extconf.rb
202
+ - ext/utils/haproxy_protocol.c
203
+ - ext/utils/haproxy_protocol.h
204
+ - ext/utils/ip_utils.c
205
+ - ext/utils/ip_utils.h
206
+ - ext/utils/outbound_utils.c
207
+ - ext/utils/outbound_utils.h
208
+ - ext/utils/utils_ruby.c
209
+ - ext/utils/utils_ruby.h
210
+ - ext/websocket_framing_utils/ext_help.h
211
+ - ext/websocket_framing_utils/extconf.rb
212
+ - ext/websocket_framing_utils/ws_framing_utils.h
213
+ - ext/websocket_framing_utils/ws_framing_utils_ruby.c
214
+ - ext/websocket_http_parser/ext_help.h
215
+ - ext/websocket_http_parser/extconf.rb
216
+ - ext/websocket_http_parser/ws_http_parser.c
217
+ - ext/websocket_http_parser/ws_http_parser.h
218
+ - ext/websocket_http_parser/ws_http_parser_ruby.c
219
+ - lib/oversip.rb
220
+ - lib/oversip/config.rb
221
+ - lib/oversip/config_validators.rb
222
+ - lib/oversip/default_server.rb
223
+ - lib/oversip/errors.rb
224
+ - lib/oversip/fiber_pool.rb
225
+ - lib/oversip/launcher.rb
226
+ - lib/oversip/logger.rb
227
+ - lib/oversip/modules/outbound_mangling.rb
228
+ - lib/oversip/modules/user_assertion.rb
229
+ - lib/oversip/proxies_config.rb
230
+ - lib/oversip/ruby_ext/eventmachine.rb
231
+ - lib/oversip/sip/client.rb
232
+ - lib/oversip/sip/client_transaction.rb
233
+ - lib/oversip/sip/constants.rb
234
+ - lib/oversip/sip/core.rb
235
+ - lib/oversip/sip/launcher.rb
236
+ - lib/oversip/sip/listeners.rb
237
+ - lib/oversip/sip/listeners/connection.rb
238
+ - lib/oversip/sip/listeners/ipv4_tcp_client.rb
239
+ - lib/oversip/sip/listeners/ipv4_tcp_server.rb
240
+ - lib/oversip/sip/listeners/ipv4_tls_client.rb
241
+ - lib/oversip/sip/listeners/ipv4_tls_server.rb
242
+ - lib/oversip/sip/listeners/ipv4_tls_tunnel_server.rb
243
+ - lib/oversip/sip/listeners/ipv4_udp_server.rb
244
+ - lib/oversip/sip/listeners/ipv6_tcp_client.rb
245
+ - lib/oversip/sip/listeners/ipv6_tcp_server.rb
246
+ - lib/oversip/sip/listeners/ipv6_tls_client.rb
247
+ - lib/oversip/sip/listeners/ipv6_tls_server.rb
248
+ - lib/oversip/sip/listeners/ipv6_tls_tunnel_server.rb
249
+ - lib/oversip/sip/listeners/ipv6_udp_server.rb
250
+ - lib/oversip/sip/listeners/tcp_client.rb
251
+ - lib/oversip/sip/listeners/tcp_connection.rb
252
+ - lib/oversip/sip/listeners/tcp_server.rb
253
+ - lib/oversip/sip/listeners/tls_client.rb
254
+ - lib/oversip/sip/listeners/tls_server.rb
255
+ - lib/oversip/sip/listeners/tls_tunnel_connection.rb
256
+ - lib/oversip/sip/listeners/tls_tunnel_server.rb
257
+ - lib/oversip/sip/listeners/udp_connection.rb
258
+ - lib/oversip/sip/message.rb
259
+ - lib/oversip/sip/message_processor.rb
260
+ - lib/oversip/sip/name_addr.rb
261
+ - lib/oversip/sip/proxy.rb
262
+ - lib/oversip/sip/request.rb
263
+ - lib/oversip/sip/response.rb
264
+ - lib/oversip/sip/rfc3263.rb
265
+ - lib/oversip/sip/server_transaction.rb
266
+ - lib/oversip/sip/sip.rb
267
+ - lib/oversip/sip/tags.rb
268
+ - lib/oversip/sip/timers.rb
269
+ - lib/oversip/sip/transport_manager.rb
270
+ - lib/oversip/sip/uac.rb
271
+ - lib/oversip/sip/uac_request.rb
272
+ - lib/oversip/sip/uri.rb
273
+ - lib/oversip/syslog.rb
274
+ - lib/oversip/system_callbacks.rb
275
+ - lib/oversip/tls.rb
276
+ - lib/oversip/utils.rb
277
+ - lib/oversip/version.rb
278
+ - lib/oversip/websocket/constants.rb
279
+ - lib/oversip/websocket/http_request.rb
280
+ - lib/oversip/websocket/launcher.rb
281
+ - lib/oversip/websocket/listeners.rb
282
+ - lib/oversip/websocket/listeners/connection.rb
283
+ - lib/oversip/websocket/listeners/ipv4_ws_server.rb
284
+ - lib/oversip/websocket/listeners/ipv4_wss_server.rb
285
+ - lib/oversip/websocket/listeners/ipv4_wss_tunnel_server.rb
286
+ - lib/oversip/websocket/listeners/ipv6_ws_server.rb
287
+ - lib/oversip/websocket/listeners/ipv6_wss_server.rb
288
+ - lib/oversip/websocket/listeners/ipv6_wss_tunnel_server.rb
289
+ - lib/oversip/websocket/listeners/ws_server.rb
290
+ - lib/oversip/websocket/listeners/wss_server.rb
291
+ - lib/oversip/websocket/listeners/wss_tunnel_server.rb
292
+ - lib/oversip/websocket/websocket.rb
293
+ - lib/oversip/websocket/ws_framing.rb
294
+ - lib/oversip/websocket/ws_sip_app.rb
295
+ - test/oversip_test_helper.rb
296
+ - test/test_http_parser.rb
297
+ - test/test_name_addr.rb
298
+ - test/test_name_addr_parser.rb
299
+ - test/test_sip_message_parser.rb
300
+ - test/test_sip_uri_parser.rb
301
+ - test/test_uri.rb
302
+ - thirdparty/stud/stud.tar.gz
303
+ homepage: http://oversip.net
304
+ licenses:
305
+ - MIT
306
+ metadata: {}
307
+ post_install_message:
308
+ rdoc_options: []
309
+ require_paths:
310
+ - lib
311
+ required_ruby_version: !ruby/object:Gem::Requirement
312
+ requirements:
313
+ - - ">="
314
+ - !ruby/object:Gem::Version
315
+ version: 1.9.3
316
+ required_rubygems_version: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - ">="
319
+ - !ruby/object:Gem::Version
320
+ version: '0'
321
+ requirements: []
322
+ rubyforge_project:
323
+ rubygems_version: 2.7.6
324
+ signing_key:
325
+ specification_version: 4
326
+ summary: OverSIP (the SIP framework you dreamed about)
327
+ test_files:
328
+ - test/oversip_test_helper.rb
329
+ - test/test_http_parser.rb
330
+ - test/test_name_addr.rb
331
+ - test/test_name_addr_parser.rb
332
+ - test/test_sip_message_parser.rb
333
+ - test/test_sip_uri_parser.rb
334
+ - test/test_uri.rb