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 +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
|