def create_gateway_xml(dids):
root = E.document(type="freeswitch/xml")
section = et.SubElement(root,"section")
section.set("name","configuration")
config = et.SubElement(section,"configuration")
config.set("name","sofia.conf")
profiles = et.SubElement(config,"profiles")
profile = et.SubElement(profiles,"profile")
profile.set("name","external")
gateways = et.SubElement(profile,"gateways")
for did in dids:
number, did_password = did
number = str(number)
did_password = str(did_password)
gateway = et.SubElement(gateways,"gateway")
gateway.set("name",number)
param = et.SubElement(gateway,"param")
param.set("name","realm")
param.set("value","xx.xx.xx.xx")
param = et.SubElement(gateway,"param")
param.set("name","register")
param.set("value","true")
param = et.SubElement(gateway,"param")
param.set("name","username")
param.set("value",number)
param = et.SubElement(gateway,"param")
param.set("name","password")
param.set("value",did_password)
param = et.SubElement(gateway,"param")
param.set("name","caller-id-in-from")
param.set("value","true")
domains = et.SubElement(profile,"domains")
domain = et.SubElement(domains,"domain")
domain.set("name","all")
domain.set("alias","false")
domain.set("parse","true")
settings = et.SubElement(profile,"settings")
param = et.SubElement(settings,"param")
param.set("name","debug")
param.set("value","0")
param = et.SubElement(settings,"param"); param.set("name","sip-trace"); param.set("value","no")
param = et.SubElement(settings,"param"); param.set("name","sip-capture"); param.set("value","no")
param = et.SubElement(settings,"param"); param.set("name","rfc2833-pt"); param.set("value","101")
param = et.SubElement(settings,"param"); param.set("name","sip-port"); param.set("value","5080")
param = et.SubElement(settings,"param"); param.set("name","dialplan"); param.set("value","XML")
param = et.SubElement(settings,"param"); param.set("name","context"); param.set("value","public")
param = et.SubElement(settings,"param"); param.set("name","dtmf-duration"); param.set("value","2000")
param = et.SubElement(settings,"param"); param.set("name","inbound-codec-prefs"); param.set("value","G722,PCMU,PCMA,OPUS,VP8,G729")
param = et.SubElement(settings,"param"); param.set("name","outbound-codec-prefs"); param.set("value","G722,PCMU,PCMA,OPUS,VP8,G729")
param = et.SubElement(settings,"param"); param.set("name","hold-music"); param.set("value","$${hold_music}")
param = et.SubElement(settings,"param"); param.set("name","rtp-timer-name"); param.set("value","soft")
param = et.SubElement(settings,"param"); param.set("name","local-network-acl"); param.set("value","localnet.auto")
param = et.SubElement(settings,"param"); param.set("name","manage-presence"); param.set("value","false")
param = et.SubElement(settings,"param"); param.set("name","inbound-codec-negotiation"); param.set("value","generous")
param = et.SubElement(settings,"param"); param.set("name","nonce-ttl"); param.set("value","60")
param = et.SubElement(settings,"param"); param.set("name","auth-calls"); param.set("value","true")
param = et.SubElement(settings,"param"); param.set("name","inbound-late-negotiation"); param.set("value","true")
param = et.SubElement(settings,"param"); param.set("name","inbound-zrtp-passthru"); param.set("value","true")
param = et.SubElement(settings,"param"); param.set("name","rtp-ip"); param.set("value",fs_ip)
param = et.SubElement(settings,"param"); param.set("name","sip-ip"); param.set("value",fs_ip)
param = et.SubElement(settings,"param"); param.set("name","ext-rtp-ip"); param.set("value","auto-nat")
param = et.SubElement(settings,"param"); param.set("name","ext-sip-ip"); param.set("value","auto-nat")
param = et.SubElement(settings,"param"); param.set("name","rtp-timeout-sec"); param.set("value","300")
param = et.SubElement(settings,"param"); param.set("name","rtp-hold-timeout-sec"); param.set("value","1800")
#return et.tostring(root, pretty_print=True, xml_declaration = True, encoding='UTF-8', standalone=False)
return et.tostring(root,pretty_print=True )