myasteriskconf 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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