myasteriskconf 0.1.2 → 0.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ea1f52e8fe2987f02b5f6fc08739c96308175856fb5e6b8a32ba67fbd64bee0e
4
- data.tar.gz: 00e0eedaa748d53c49678fdf7ef32910bb925129da29ca8bd2a07c427c2d49ff
3
+ metadata.gz: eae86592060a2f044d56b3cfe42fe18db519c04f8361a5ac29403db2739e36f3
4
+ data.tar.gz: ac85e45fab918c2a008fac0d34b93439660159bf34f3c1e52f82f2f40156a722
5
5
  SHA512:
6
- metadata.gz: 18ea3c62a337f95d2ca77c963fc3b2e19cd334e3a184f97fea5e7df70299894ae65b1c7e1b764be37e603d2bf1e441d64ded45624c97326e5cc23be24dc8c598
7
- data.tar.gz: 501bfdaa116d8ed63f57e756eec4ddb1103e2fa0a0399033b1873acd2aff47297ace630154f597940c6ff689aafcc60280c46e98284a3e3e7c609abd4bdcb93a
6
+ metadata.gz: 9225ab25f4e7bc4242443f52d2ed296e3daa8d8e70f5586495b3d82dd72009d6f63c56130a2e29347b88007f2838a57a283bda459f56d4100f22ec69fad15157
7
+ data.tar.gz: 7bc259832e5c9b0498823d97214e61fd4d32c536cfb5079a5b90e88ed335182201ac248fc436599f96ce9b477137ac19c583186fe4638cc8a945e5f8bcf7383f
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -50,11 +50,49 @@ tags: asterisk
50
50
 
51
51
  private
52
52
 
53
- def build()
53
+ def build(default_ctx='my-phones')
54
54
 
55
+ puts 'h: ' + @h.inspect if @debug
55
56
  @sip << "[general]"
56
- @sip << "localnet=" + @h[:sip][:localnet]
57
- @sip << "externaddr = " + @h[:sip][:externaddr]
57
+
58
+ if @h[:sip][:localnet] then
59
+
60
+ localnet = if @h[:sip][:localnet].length < 2 then
61
+ localnet()
62
+ else
63
+ @h[:sip][:localnet]
64
+ end
65
+
66
+ @sip << "localnet=" + localnet
67
+
68
+ end
69
+
70
+
71
+ if @h[:sip][:externaddr] then
72
+
73
+ externaddr = if @h[:sip][:externaddr].length < 2 then
74
+ externaddr()
75
+ else
76
+ @h[:sip][:externaddr]
77
+ end
78
+
79
+ @sip << "externaddr=" + externaddr
80
+
81
+ end
82
+
83
+
84
+ if @h[:sip][:context] then
85
+
86
+ localnet = if @h[:sip][:context].length < 2 then
87
+ 'default'
88
+ else
89
+ @h[:sip][:context]
90
+ end
91
+
92
+ @sip << "context=" + context
93
+
94
+ end
95
+
58
96
 
59
97
  registers = @h.dig(*%i(sip register))
60
98
  register = nil
@@ -74,23 +112,51 @@ tags: asterisk
74
112
 
75
113
  end
76
114
 
77
- extensions = []
115
+ extensions = {default_ctx => []}
78
116
 
79
117
  phones = @h[:phones].map do |x|
80
118
 
81
- puts 'x: ' + x.inspect if @debug
82
- x.match(/^([^:]+):([^\/]+)\/([^$]+)/).captures # id, secret, ext
119
+ puts 'x: ' + x.inspect if @debug
120
+
121
+ regex = %r{
122
+
123
+ (?<id>[^:]+){0}
124
+ (?<secret>[^\/]+){0}
125
+ (?<ext>[^@$]+){0}
126
+ (?:@(?<context>[^$]+)){0}
127
+
128
+ ^\g<id>:\g<secret>(?:\/)?\g<ext>?\g<context>?
129
+ }x
130
+
131
+ r = regex.match(x)
132
+ r.named_captures.values
133
+
83
134
  end
84
135
 
85
- phones.each do |id, secret, ext|
136
+ puts 'phones: ' + phones.inspect if @debug
137
+
138
+ phones.each do |id, secret, ext, context|
139
+
140
+ ctx = context || default_ctx
141
+ @sip << sip_template(id.downcase, secret, ctx)
142
+
143
+ puts 'ctx: ' + ctx.inspect if @debug
144
+ puts 'extensions: ' + extensions.inspect if @debug
86
145
 
87
- @sip << sip_template(id.downcase, secret)
88
- extensions << ext_template(ext, id)
146
+ extensions[ctx] ||= []
147
+ extensions[ctx] << ext_template(ext, id)
89
148
 
90
149
  end
91
150
 
92
- @extensions << "[my-phones]"
93
- @extensions.concat extensions
151
+ extensions.map do |key, value|
152
+
153
+ context = key
154
+ entries = value
155
+ @extensions << "\n[#{context}]"
156
+ @extensions.concat entries
157
+ @extensions << "\n"
158
+
159
+ end
94
160
 
95
161
  a = phones.map {|x| "SIP/" + x[0].downcase }
96
162
  @extensions << "\nexten => 1009,1,Dial(%s,40)" % a.join('&')
@@ -130,7 +196,7 @@ source: https://www.asteriskguru.com/tutorials/extensions_conf.html
130
196
 
131
197
  else
132
198
 
133
- dialout = value.sub(/\(EXTEN\)/,'${EXTEN}')
199
+ dialout = value.sub(/\((EXTEN:?1?)\)/,'${\1}')
134
200
  pattern = '_' + key.to_s
135
201
 
136
202
  end
@@ -164,6 +230,11 @@ exten => #{ext},n,Hangup()"
164
230
 
165
231
  end
166
232
 
233
+ def externaddr()
234
+ h = JSON.parse open('http://jsonip.com/').read
235
+ h['ip']
236
+ end
237
+
167
238
  def sip_provider_template(reg_label, userid, reg_secret, sip_host)
168
239
 
169
240
  "
@@ -189,9 +260,14 @@ allow=gsm
189
260
  allow=g729"
190
261
 
191
262
  end
263
+
264
+ def localnet()
265
+ r = Socket.ip_address_list.find { |ai| ai.ipv4? && !ai.ipv4_loopback? }
266
+ r.ip_address.sub(/\d+$/,'0')
267
+ end
192
268
 
193
269
 
194
- def sip_template(deviceid, secret)
270
+ def sip_template(deviceid, secret, context='my-phones')
195
271
 
196
272
  "
197
273
  [#{deviceid}]
@@ -200,7 +276,7 @@ secret=#{secret}
200
276
  type=friend
201
277
  host=dynamic
202
278
  qualify=yes
203
- context=my-phones
279
+ context=#{context}
204
280
  insecure=invite,port
205
281
  canreinvite=no
206
282
  disallow=all ; better for custom-tunning codec selection
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: myasteriskconf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -11,54 +11,54 @@ cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
13
  MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwMTAyMTA0NTA3WhcN
15
- MjEwMTAxMTA0NTA3WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC8ZWDZ
17
- yeRcgxFRTR0vJ3pKrtyK37LIuc60J9scLMANo/v6+CxgxZS6TADWZnmVSNhOljQD
18
- /NyyaFj0LdSdaAvbS9z/lcPtKnWqyNY61WaQQ0rODua2WTpkWq64OSGy9frwwyHV
19
- RMHoIgo/b2Q43g1hWHOqkvX/dxY8Mh1RbvgBJnGl80QU9ksRDgor0Z7PPnKVruR0
20
- 3tpDIy8HH/ziqf8wXGap6XMgoh6KuBCc3+yb3fcYBYmJYE1ugiQoNg9JJYt2LDgt
21
- HLaVW2OuUmPE8psiQUFfndqkk3iMwxL2Jk2ExbMgyi2jf/UjxU9I1T0k6sAPDYOs
22
- NwREFTogojl3hAcZ11zAS/pYXYf305DiK3vaVcOroAa5qGnhU2FXodTdCwdsmZF3
23
- jsEyxJY7Vsxd0N0DC4RRM6kbQp+7K07aY/Z6qs3VOc+PmVzxE+yKoD9tTod2BVI1
24
- OHaBnj0VSFs1MoAW14WNt+LV0weVkfRamKKAvb27jV/La+bfCUoR8R2wq/UCAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQURMqAyIvX
26
- 3YJzBATnTPslO4PQtyEwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjEwNjE0MjI1MTAwWhcN
15
+ MjIwNjE0MjI1MTAwWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDEez/a
17
+ ecBnlOXIh5mRMZZqA2Yws1tadwtlBZrbS9kZz08D0V9DCvLcscBX564rnzyFkNyv
18
+ 6jbw0dHbmpiGDkoZunmscBTtZ4sWWpU/32ngETaxQy6LDZ0y1Vq65vLr6WXxyinx
19
+ nLhxKHudEtWiuJ0uGlMsW6p7kdqIOKVv/gWdIjDr4mRMY+ttTXb3eD3j3e5/XDq7
20
+ 0mB82lL0AT8UdXnWqF24LQnus8jIoszp5KMt/SqmLFzW9mzOwWRsikGZepsnGcfB
21
+ xotx1pb60BLXllqjSRcwlrRkC6RHRQ3VWEVqBSPo94B1tRKrjqGFgArKczawGwqA
22
+ gGaxOEi4orGk2fohhfsU89RwpbRKRKTwgCZNQC1ZdGNpTpSCQT6+Hmkgv8P55XkL
23
+ kVYFkozjZ99yRwcCjyFdDmXaQ0JotPH1Ic7PAhnNfa9zQNG+08XVqFCRh6E1wgmf
24
+ smQEXQDfs1zvgeLUfOKKtazVM7Hf4EL+f8bJiEtmXAUvsFQfAorn6dnu+zUCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUC1DKhxyU
26
+ JnmNxHXjl0DZNCGb/HswJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
27
  c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEAmSOGe2u+rYxAL3K1gHZgtnKb2BdjrXjUhg8YgJYY
29
- Are9+c0vRfLd46BoLHMz+dnYHVIefu5vMRqqcLvfaRhiQxSBKtn4LcpMZyDCUP3N
30
- qUxZMqCGajVieI8KfuoK4BXZgABtZDKGcqndvvRob0MA/Oxiq4zkH4KpWHC+26LG
31
- z6aNADnmA+aWYTNK3zApbBupIv2KxyUzsvFYq3Cy9Z0GlILs8rgaxa5ZDzO7KuBC
32
- dsyYAggknKiHbicxPfRnaCYyDHehPeYm+E8EdnnwIFR6+Od/J0sG38dhphwjWOmg
33
- CJcz6NPzOeAYzCXjKtRF3Bn6yjtwR0Ew4eXjZJfk/y8/UVu6ORTSNOaylDYxemPe
34
- kkzcQy0Hv2Pmzdcswo2dJRL+NJ8SD4EXlO3VUXzY1GmR+H5m1Vt65XbpeXT/dcyi
35
- f4kUndjKYbnXAYWJJKFYMEb5FUZq/BQPJk3hqn7FiOr/rZ+BgqoGiNdUvqFXV4pm
36
- dJTSHDdF6Lr/TdVPMMJdRDg6
28
+ BgkqhkiG9w0BAQsFAAOCAYEALkIuTzYYICRq563UUx9xhZmYQcbDWc9Cy1aR4gdV
29
+ v7Q8Nh/qXx4W53LlvQd8TjRxOeiST7vtOGiOw6WR3QOeb1dSDykl6JbtaSfX6M2F
30
+ 7nT/ybBXPlxmYzYNky1MBJngv7PSGfVeFRklWIEKPGnCDn0Y4Bzl/v5r/qvSlrY+
31
+ iWtF2a4i/aGiDc0fxdMSWVJLfr9kS1ciHs3/pv6rDhc5vJgNKGTUxFMgtbyDbknf
32
+ +9kfTzIGRikNU838xB2cqCAzOLpz8RfAek+JkcBX90KEB+V2ZhJ7STewG3eherTc
33
+ oHCV8mkOww2zE0PcfaZ6iTEkhaM3zjHQpnizgPLhEOEkki46lJcx2enJIDi5rWsu
34
+ KBzgFPZPl8MdVL+NFs3eYMx+2oBngfJQGIlZ+6eL2xRkpj5vQ8RA/FhsNKvi7HMM
35
+ gXva5IAwHqolqtT5iZI+ASdqxRoVliXQhQiKBACdXLq5Gqf5FLheSywSK1FgCS5T
36
+ TKTedjyqOJcFhUMAL8x1eESO
37
37
  -----END CERTIFICATE-----
38
- date: 2020-01-02 00:00:00.000000000 Z
38
+ date: 2021-06-14 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: polyrex-headings
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 0.2.0
47
44
  - - "~>"
48
45
  - !ruby/object:Gem::Version
49
46
  version: '0.2'
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 0.2.0
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: 0.2.0
57
54
  - - "~>"
58
55
  - !ruby/object:Gem::Version
59
56
  version: '0.2'
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 0.2.0
60
60
  description:
61
- email: james@jamesrobertson.eu
61
+ email: digital.robertson@gmail.com
62
62
  executables: []
63
63
  extensions: []
64
64
  extra_rdoc_files: []
@@ -83,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
85
  requirements: []
86
- rubygems_version: 3.0.3
86
+ rubygems_version: 3.1.2
87
87
  signing_key:
88
88
  specification_version: 4
89
89
  summary: Generates basic Asterisk configurations from a high level config in Markdown
metadata.gz.sig CHANGED
Binary file