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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/myasteriskconf.rb +90 -14
- metadata +32 -32
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eae86592060a2f044d56b3cfe42fe18db519c04f8361a5ac29403db2739e36f3
|
4
|
+
data.tar.gz: ac85e45fab918c2a008fac0d34b93439660159bf34f3c1e52f82f2f40156a722
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9225ab25f4e7bc4242443f52d2ed296e3daa8d8e70f5586495b3d82dd72009d6f63c56130a2e29347b88007f2838a57a283bda459f56d4100f22ec69fad15157
|
7
|
+
data.tar.gz: 7bc259832e5c9b0498823d97214e61fd4d32c536cfb5079a5b90e88ed335182201ac248fc436599f96ce9b477137ac19c583186fe4638cc8a945e5f8bcf7383f
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/myasteriskconf.rb
CHANGED
@@ -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
|
-
|
57
|
-
|
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
|
-
|
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
|
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
|
-
|
88
|
-
extensions << ext_template(ext, id)
|
146
|
+
extensions[ctx] ||= []
|
147
|
+
extensions[ctx] << ext_template(ext, id)
|
89
148
|
|
90
149
|
end
|
91
150
|
|
92
|
-
|
93
|
-
|
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\)/,'${
|
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
|
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.
|
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
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
/
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
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:
|
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:
|
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.
|
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
|