From 98d14cc35d68274e08c0ec45cc3a9bb9e6944f64 Mon Sep 17 00:00:00 2001 From: Dan Ryan Date: Sun, 19 Apr 2026 13:00:21 -0700 Subject: [PATCH] In Carrier Groups add a Media dropdown for Direct or Proxy, rather than hardcoding Proxy. --- gui/modules/api/carriergroups/functions.py | 16 +++++++++++----- gui/static/js/carriergroups.js | 7 +++++-- gui/templates/carriergroups.html | 12 ++++++++++++ gui/templates/carriers.html | 2 ++ 4 files changed, 30 insertions(+), 7 deletions(-) diff --git a/gui/modules/api/carriergroups/functions.py b/gui/modules/api/carriergroups/functions.py index de4ca3ce..a7717356 100644 --- a/gui/modules/api/carriergroups/functions.py +++ b/gui/modules/api/carriergroups/functions.py @@ -265,6 +265,7 @@ def displayCarriers(gwid=None, gwgroup=None, newgwid=None): carriers = [ db.query( Gateways.gwid, Gateways.description, Gateways.address, Gateways.strip, Gateways.pri_prefix, + func.SUBSTRING_INDEX(func.SUBSTRING_INDEX(Gateways.attrs, ',', 5), ',', -1).label("media"), Dispatcher.attrs.label("dispatcher_attrs") ).filter( Gateways.gwid == gwid @@ -288,6 +289,7 @@ def displayCarriers(gwid=None, gwgroup=None, newgwid=None): gwlist = [int(gw) for gw in filter(None, Gatewaygroup.gwlist.split(","))] carriers = db.query( Gateways.gwid, Gateways.description, Gateways.address, Gateways.strip, Gateways.pri_prefix, + func.SUBSTRING_INDEX(func.SUBSTRING_INDEX(Gateways.attrs, ',', 5), ',', -1).label("media"), Dispatcher.attrs.label("dispatcher_attrs") ).filter( Gateways.gwid.in_(gwlist) @@ -307,6 +309,7 @@ def displayCarriers(gwid=None, gwgroup=None, newgwid=None): else: carriers = db.query( Gateways.gwid, Gateways.description, Gateways.address, Gateways.strip, Gateways.pri_prefix, + func.SUBSTRING_INDEX(func.SUBSTRING_INDEX(Gateways.attrs, ',', 5), ',', -1).label("media"), Dispatcher.attrs.label("dispatcher_attrs") ).filter( Gateways.type == settings.FLT_CARRIER @@ -389,6 +392,7 @@ def addUpdateCarriers(data=None): strip = form['strip'] if len(form['strip']) > 0 else '0' prefix = form['prefix'] if len(form['prefix']) > 0 else '' rweight = int(form['rweight']) if form.get('rweight', '') != '' else 1 + media = form.get('media', 'proxy') if form.get('media', '') in ('proxy', 'direct') else 'proxy' if len(hostname) == 0: raise http_exceptions.BadRequest("Carrier hostname/address is required") @@ -405,7 +409,7 @@ def addUpdateCarriers(data=None): db.add(Addr) db.flush() - Gateway = Gateways(name, sip_addr, strip, prefix, settings.FLT_CARRIER, gwgroup=gwgroup, addr_id=Addr.id) + Gateway = Gateways(name, sip_addr, strip, prefix, settings.FLT_CARRIER, gwgroup=gwgroup, addr_id=Addr.id, media=media) db.add(Gateway) db.flush() @@ -417,14 +421,14 @@ def addUpdateCarriers(data=None): Gatewaygroup.gwlist = ','.join(gwlist) # Create dispatcher group with the set id being the gateway group id - dispatcher = Dispatcher(setid=gwgroup, destination=sip_addr, rweight=rweight, name=name, gwid=gwid) + dispatcher = Dispatcher(setid=gwgroup, destination=sip_addr, rweight=rweight, name=name, gwid=gwid, media=media) db.add(dispatcher) else: Addr = Address(name, host_addr, 32, settings.FLT_CARRIER) db.add(Addr) db.flush() - Gateway = Gateways(name, sip_addr, strip, prefix, settings.FLT_CARRIER, addr_id=Addr.id) + Gateway = Gateways(name, sip_addr, strip, prefix, settings.FLT_CARRIER, addr_id=Addr.id, media=media) db.add(Gateway) # Updating @@ -433,6 +437,8 @@ def addUpdateCarriers(data=None): Gateway.address = sip_addr Gateway.strip = strip Gateway.pri_prefix = prefix + gw_attrs = Gateway.attrsToDict() + Gateway.attrs = Gateways.buildAttrs(gw_attrs['gwid'], gw_attrs['type'], gw_attrs['msteams_domain'], gw_attrs['signalling'], media) gw_fields = strFieldsToDict(Gateway.description) gw_fields['name'] = name @@ -443,12 +449,12 @@ def addUpdateCarriers(data=None): if db.query(Dispatcher).filter( Dispatcher.description.regexp_match(f'gwid={gwid}(;|$)') ).update({ - "attrs": Dispatcher.buildAttrs(rweight=rweight) + "attrs": Dispatcher.buildAttrs(rweight=rweight, media=media) }, synchronize_session=False): pass # add new dispatcher entry if it did not exist (gwgroup must also exist) elif len(gwgroup) > 0: - dispatcher = Dispatcher(setid=gwgroup, destination=sip_addr, rweight=rweight, name=name, gwid=gwid) + dispatcher = Dispatcher(setid=gwgroup, destination=sip_addr, rweight=rweight, name=name, gwid=gwid, media=media) db.add(dispatcher) # if address exists update diff --git a/gui/static/js/carriergroups.js b/gui/static/js/carriergroups.js index 0419a1aa..c783ea8d 100644 --- a/gui/static/js/carriergroups.js +++ b/gui/static/js/carriergroups.js @@ -421,7 +421,7 @@ modal_body.find(".strip").val(''); modal_body.find(".prefix").val(''); modal_body.find(".rweight").val(''); - + modal_body.find(".media").val('proxy'); /* make sure ip_addr not disabled */ modal_body.find('.ip_addr').prop('disabled', false); @@ -437,6 +437,7 @@ var strip = $(c).find('tr:eq(' + row_index + ') td:eq(4)').text(); var prefix = $(c).find('tr:eq(' + row_index + ') td:eq(5)').text(); var rweight = $(c).find('tr:eq(' + row_index + ') td:eq(6)').text(); + var media = $(c).find('tr:eq(' + row_index + ') td.media').text().trim(); /** Clear out the modal */ var modal_body = $('#edit .modal-body'); @@ -446,6 +447,7 @@ modal_body.find(".strip").val(''); modal_body.find(".prefix").val(''); modal_body.find(".rweight").val(''); + modal_body.find(".media").val('proxy'); /* update modal fields */ modal_body.find(".gwid").val(gwid); @@ -454,6 +456,7 @@ modal_body.find(".strip").val(strip); modal_body.find(".prefix").val(prefix); modal_body.find(".rweight").val(rweight); + modal_body.find(".media").val(media); }); carriers_tbody.on('click', '#open-Delete', function() { @@ -462,7 +465,7 @@ var gwid = $(c).find('tr:eq(' + row_index + ') td:eq(1)').text(); var name = $(c).find('tr:eq(' + row_index + ') td:eq(2)').text(); var ip_addr = $(c).find('tr:eq(' + row_index + ') td:eq(3)').text(); - var related_rules = JSON.parse($(c).find('tr:eq(' + row_index + ') td:eq(7)').text()); + var related_rules = JSON.parse($(c).find('tr:eq(' + row_index + ') td:eq(8)').text()); var modal_body = $('#delete .modal-body'); diff --git a/gui/templates/carriergroups.html b/gui/templates/carriergroups.html index 31589c6b..028dbb14 100644 --- a/gui/templates/carriergroups.html +++ b/gui/templates/carriergroups.html @@ -107,6 +107,12 @@ +
+ +
+
+ +