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 )