mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +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
						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, | ||||
|                   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')], | ||||
|   | ||||
		Reference in New Issue
	
	Block a user