mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 20:20:07 +00:00
contrib/script/sip_to_pjsip: implement 'all' for allow/disallow
when 'all' is specified in an allow or disallow section, it should erase all values from the inverse section in the default config. E.G. allow=all should erase any deny values from default config & vice-versa ASTERISK-27333 #close Change-Id: I99219478fb98f08751d769daaee0b7795118a5a6
This commit is contained in:
committed by
Torrey Searle
parent
975d07248d
commit
da24d425eb
@@ -77,6 +77,46 @@ def merge_value(key=None, val=None, section=None, pjsip=None,
|
|||||||
section_to if section_to else section,
|
section_to if section_to else section,
|
||||||
pjsip, nmapped, type)
|
pjsip, nmapped, type)
|
||||||
|
|
||||||
|
def merge_codec_value(key=None, val=None, section=None, pjsip=None,
|
||||||
|
nmapped=None, type='endpoint', section_to=None,
|
||||||
|
key_to=None):
|
||||||
|
"""Merge values from allow/deny with those from the default. Special treatment for all"""
|
||||||
|
def _merge_codec_value(k, v, s, r, n):
|
||||||
|
merge_codec_value(key if key else k, v, s, r, n, type, section_to, key_to)
|
||||||
|
|
||||||
|
# if no value or section return the merge_codec_value
|
||||||
|
# function with the enclosed key and type
|
||||||
|
if not val and not section:
|
||||||
|
return _merge_codec_value
|
||||||
|
|
||||||
|
if key == 'allow':
|
||||||
|
try:
|
||||||
|
disallow = sip.get(section, 'disallow')[0]
|
||||||
|
if disallow == 'all':
|
||||||
|
#don't inherit
|
||||||
|
for i in sip.get(section, 'allow'):
|
||||||
|
set_value(key, i, section, pjsip, nmapped, type)
|
||||||
|
else:
|
||||||
|
merge_value(key, val, section, pjsip, nmapped, type, section_to, key_to)
|
||||||
|
except LookupError:
|
||||||
|
print "lookup error"
|
||||||
|
merge_value(key, val, section, pjsip, nmapped, type, section_to, key_to)
|
||||||
|
return
|
||||||
|
elif key == 'disallow':
|
||||||
|
try:
|
||||||
|
allow = sip.get(section, 'allow')[0]
|
||||||
|
if allow == 'all':
|
||||||
|
#don't inherit
|
||||||
|
for i in sip.get(section, 'disallow'):
|
||||||
|
set_value(key, i, section, pjsip, nmapped, type)
|
||||||
|
else:
|
||||||
|
merge_value(key, val, section, pjsip, nmapped, type, section_to, key_to)
|
||||||
|
except LookupError:
|
||||||
|
merge_value(key, val, section, pjsip, nmapped, type, section_to, key_to)
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
merge_value(key, val, section, pjsip, nmapped, type, section_to, key_to)
|
||||||
|
|
||||||
|
|
||||||
def non_mapped(nmapped):
|
def non_mapped(nmapped):
|
||||||
"""Write non-mapped sip.conf values to the non-mapped object"""
|
"""Write non-mapped sip.conf values to the non-mapped object"""
|
||||||
@@ -404,8 +444,8 @@ peer_map = [
|
|||||||
###########################################################################
|
###########################################################################
|
||||||
['context', set_value],
|
['context', set_value],
|
||||||
['dtmfmode', set_dtmfmode],
|
['dtmfmode', set_dtmfmode],
|
||||||
['disallow', merge_value],
|
['disallow', merge_codec_value],
|
||||||
['allow', merge_value],
|
['allow', merge_codec_value],
|
||||||
['nat', from_nat], # rtp_symmetric, force_rport,
|
['nat', from_nat], # rtp_symmetric, force_rport,
|
||||||
# rewrite_contact
|
# rewrite_contact
|
||||||
['rtptimeout', set_value('rtp_timeout')],
|
['rtptimeout', set_value('rtp_timeout')],
|
||||||
|
Reference in New Issue
Block a user