diff options
author | Torrey Searle <torrey@voxbone.com> | 2017-10-11 13:04:12 +0200 |
---|---|---|
committer | Torrey Searle <tsearle@gmail.com> | 2017-10-16 06:25:56 -0500 |
commit | e682580df40a6ada9a3ba3d8a904966b393c8f8c (patch) | |
tree | 8834ac4964ca99984861592b8e17a2e9a7a6d6f0 /contrib/scripts | |
parent | dd72eac5748bfdeed32db013a67504f8d885e287 (diff) |
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
Diffstat (limited to 'contrib/scripts')
-rwxr-xr-x | contrib/scripts/sip_to_pjsip/sip_to_pjsip.py | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/contrib/scripts/sip_to_pjsip/sip_to_pjsip.py b/contrib/scripts/sip_to_pjsip/sip_to_pjsip.py index eb3aab3b8..533e4baec 100755 --- a/contrib/scripts/sip_to_pjsip/sip_to_pjsip.py +++ b/contrib/scripts/sip_to_pjsip/sip_to_pjsip.py @@ -77,6 +77,46 @@ def merge_value(key=None, val=None, section=None, pjsip=None, section_to if section_to else section, 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): """Write non-mapped sip.conf values to the non-mapped object""" @@ -404,8 +444,8 @@ peer_map = [ ########################################################################### ['context', set_value], ['dtmfmode', set_dtmfmode], - ['disallow', merge_value], - ['allow', merge_value], + ['disallow', merge_codec_value], + ['allow', merge_codec_value], ['nat', from_nat], # rtp_symmetric, force_rport, # rewrite_contact ['rtptimeout', set_value('rtp_timeout')], |