summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/scripts/sip_to_pjsip/astconfigparser.py15
-rwxr-xr-xcontrib/scripts/sip_to_pjsip/sip_to_pjsip.py23
2 files changed, 26 insertions, 12 deletions
diff --git a/contrib/scripts/sip_to_pjsip/astconfigparser.py b/contrib/scripts/sip_to_pjsip/astconfigparser.py
index c93173dee..b207b0d7c 100644
--- a/contrib/scripts/sip_to_pjsip/astconfigparser.py
+++ b/contrib/scripts/sip_to_pjsip/astconfigparser.py
@@ -1,4 +1,5 @@
import re
+import itertools
from astdicts import OrderedDict
from astdicts import MultiOrderedDict
@@ -331,7 +332,9 @@ class MultiOrderedConfigParser:
res = sections[key] if key in sections else []
searched.append(self)
if self._includes:
- res += self._includes.get_sections(key, attr, searched)
+ res.extend(list(itertools.chain(*[
+ incl.get_sections(key, attr, searched)
+ for incl in self._includes.itervalues()])))
if self._parent:
res += self._parent.get_sections(key, attr, searched)
return res
@@ -415,15 +418,15 @@ class MultiOrderedConfigParser:
else:
self.defaults(section)[0][key] = val
- def read(self, filename):
+ def read(self, filename, sect=None):
"""Parse configuration information from a file"""
try:
with open(filename, 'rt') as config_file:
- self._read(config_file)
+ self._read(config_file, sect)
except IOError:
print "Could not open file ", filename, " for reading"
- def _read(self, config_file):
+ def _read(self, config_file, sect):
"""Parse configuration information from the config_file"""
is_comment = False # used for multi-lined comments
for line in config_file:
@@ -435,7 +438,7 @@ class MultiOrderedConfigParser:
include_name = try_include(line)
if include_name:
parser = self.add_include(include_name)
- parser.read(include_name)
+ parser.read(include_name, sect)
continue
section, is_template, templates = try_section(line)
@@ -447,6 +450,8 @@ class MultiOrderedConfigParser:
continue
key, val = try_option(line)
+ if sect is None:
+ raise Exception("Section not defined before assignment")
sect[key] = val
def write(self, config_file):
diff --git a/contrib/scripts/sip_to_pjsip/sip_to_pjsip.py b/contrib/scripts/sip_to_pjsip/sip_to_pjsip.py
index 8fdef31a3..890921673 100755
--- a/contrib/scripts/sip_to_pjsip/sip_to_pjsip.py
+++ b/contrib/scripts/sip_to_pjsip/sip_to_pjsip.py
@@ -587,7 +587,11 @@ def create_udp(sip, pjsip, nmapped):
externhost
"""
- bind = sip.multi_get('general', ['udpbindaddr', 'bindaddr'])[0]
+ try:
+ bind = sip.multi_get('general', ['udpbindaddr', 'bindaddr'])[0]
+ except LookupError:
+ bind = ''
+
bind = build_host(sip, bind, 'general', 'bindport')
try:
@@ -974,11 +978,12 @@ class Registration:
auth_section = 'auth_reg_' + self.host
- if self.secret:
+ if hasattr(self, 'secret') and self.secret:
set_value('password', self.secret, auth_section, pjsip, nmapped,
'auth')
- set_value('username', self.authuser or self.user, auth_section,
- pjsip, nmapped, 'auth')
+ if hasattr(self, 'authuser'):
+ set_value('username', self.authuser or self.user, auth_section,
+ pjsip, nmapped, 'auth')
set_value('outbound_auth', auth_section, section, pjsip, nmapped,
'registration')
@@ -988,7 +993,7 @@ class Registration:
else:
client_uri += self.host
- if self.domainport:
+ if hasattr(self, 'domainport') and self.domainport:
client_uri += ":" + self.domainport
elif self.port:
client_uri += ":" + self.port
@@ -1136,8 +1141,9 @@ def cli_options():
"""
global PREFIX
usage = "usage: %prog [options] [input-file [output-file]]\n\n" \
- "input-file defaults to 'sip.conf'\n" \
- "output-file defaults to 'pjsip.conf'"
+ "Converts the chan_sip configuration input-file to the chan_pjsip output-file.\n"\
+ "The input-file defaults to 'sip.conf'.\n" \
+ "The output-file defaults to 'pjsip.conf'."
parser = optparse.OptionParser(usage=usage)
parser.add_option('-p', '--prefix', dest='prefix', default=PREFIX,
help='output prefix for include files')
@@ -1154,6 +1160,9 @@ if __name__ == "__main__":
sip_filename, pjsip_filename = cli_options()
# configuration parser for sip.conf
sip = astconfigparser.MultiOrderedConfigParser()
+ print 'Reading', sip_filename
sip.read(sip_filename)
+ print 'Converting to PJSIP...'
pjsip, non_mappings = convert(sip, pjsip_filename, dict(), False)
+ print 'Writing', pjsip_filename
write_pjsip(pjsip_filename, pjsip, non_mappings)