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
15.6
Torrey Searle 8 years ago committed by Torrey Searle
parent dd72eac574
commit e682580df4

@ -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')],

Loading…
Cancel
Save