add BRIDGE page
This commit is contained in:
		
							parent
							
								
									ce6ba7c5dc
								
							
						
					
					
						commit
						a81679a3db
					
				@ -196,6 +196,8 @@ def create_app():
 | 
			
		||||
        tg1_acl = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
 | 
			
		||||
        tg2_acl = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
 | 
			
		||||
        server = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
 | 
			
		||||
        notes =  db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
 | 
			
		||||
 | 
			
		||||
    class xlxPeer(db.Model):
 | 
			
		||||
        __tablename__ = 'XLX_peers'
 | 
			
		||||
        id = db.Column(db.Integer(), primary_key=True)
 | 
			
		||||
@ -229,6 +231,7 @@ def create_app():
 | 
			
		||||
        tg1_acl = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
 | 
			
		||||
        tg2_acl = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
 | 
			
		||||
        server = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
 | 
			
		||||
        notes = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
 | 
			
		||||
    class ServerList(db.Model):
 | 
			
		||||
        __tablename__ = 'server_list'
 | 
			
		||||
        name = db.Column(db.String(100, collation='NOCASE'), unique=True, primary_key=True)
 | 
			
		||||
@ -264,6 +267,7 @@ def create_app():
 | 
			
		||||
        report_port = db.Column(db.Integer(), primary_key=False, server_default='4321')
 | 
			
		||||
        report_clients =db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='127.0.0.1')
 | 
			
		||||
        unit_time = db.Column(db.Integer(), primary_key=False, server_default='10080')
 | 
			
		||||
        notes =  db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
 | 
			
		||||
 | 
			
		||||
    class MasterList(db.Model):
 | 
			
		||||
        __tablename__ = 'master_list'
 | 
			
		||||
@ -346,6 +350,17 @@ def create_app():
 | 
			
		||||
        description = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
 | 
			
		||||
        public_list = db.Column(db.Boolean(), nullable=False, server_default='0')
 | 
			
		||||
 | 
			
		||||
    class BridgeList(db.Model):
 | 
			
		||||
        __tablename__ = 'bridge_list'
 | 
			
		||||
        id = db.Column(db.Integer(), primary_key=True)
 | 
			
		||||
        bridge_name = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
 | 
			
		||||
        description = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
 | 
			
		||||
        public_list = db.Column(db.Boolean(), nullable=False, server_default='0')
 | 
			
		||||
        tg = db.Column(db.Integer(), primary_key=False)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
    # Customize Flask-User
 | 
			
		||||
    class CustomUserManager(UserManager):
 | 
			
		||||
    # Override or extend the default login view method
 | 
			
		||||
@ -1715,6 +1730,28 @@ def create_app():
 | 
			
		||||
            r_list.append(str(i.secret))
 | 
			
		||||
        return r_list
 | 
			
		||||
 | 
			
		||||
    def bridge_add(_name, _desc, _public, _tg):
 | 
			
		||||
        add_bridge = BridgeList(
 | 
			
		||||
            bridge_name = _name,
 | 
			
		||||
            description = _desc,
 | 
			
		||||
            public_list = _public,
 | 
			
		||||
            tg = _tg
 | 
			
		||||
            )
 | 
			
		||||
        db.session.add(add_bridge)
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
    def update_bridge_list(_name, _desc, _public, _new_name, _tg):
 | 
			
		||||
        bl = BridgeList.query.filter_by(bridge_name=_name).first()
 | 
			
		||||
        bl.bridge_name = _new_name
 | 
			
		||||
        bl.description = _desc
 | 
			
		||||
        bl.public_list = _public
 | 
			
		||||
        bl.tg = _tg
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
 | 
			
		||||
    def bridge_delete(_name):
 | 
			
		||||
        bl = BridgeList.query.filter_by(bridge_name=_name).first()
 | 
			
		||||
        db.session.delete(bl)
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
        
 | 
			
		||||
    def generate_rules(_name):
 | 
			
		||||
 | 
			
		||||
        # generate UNIT list
 | 
			
		||||
@ -1870,7 +1907,7 @@ def create_app():
 | 
			
		||||
        print(master_config_list)
 | 
			
		||||
        return master_config_list
 | 
			
		||||
 | 
			
		||||
    def server_edit(_name, _secret, _ip, _public_list, _port, _global_path, _global_ping_time, _global_max_missed, _global_use_acl, _global_reg_acl, _global_sub_acl, _global_tg1_acl, _global_tg2_acl, _ai_subscriber_file, _ai_try_download, _ai_path, _ai_peer_file, _ai_tgid_file, _ai_peer_url, _ai_subs_url, _ai_stale, _um_shorten_passphrase, _um_burn_file, _report_enable, _report_interval, _report_port, _report_clients, _unit_time):
 | 
			
		||||
    def server_edit(_name, _secret, _ip, _public_list, _port, _global_path, _global_ping_time, _global_max_missed, _global_use_acl, _global_reg_acl, _global_sub_acl, _global_tg1_acl, _global_tg2_acl, _ai_subscriber_file, _ai_try_download, _ai_path, _ai_peer_file, _ai_tgid_file, _ai_peer_url, _ai_subs_url, _ai_stale, _um_shorten_passphrase, _um_burn_file, _report_enable, _report_interval, _report_port, _report_clients, _unit_time, _notes):
 | 
			
		||||
        s = ServerList.query.filter_by(name=_name).first()
 | 
			
		||||
        print(_name)
 | 
			
		||||
        if _secret == '':
 | 
			
		||||
@ -1907,6 +1944,7 @@ def create_app():
 | 
			
		||||
        s.report_port = _report_port
 | 
			
		||||
        s.report_clients = _report_clients
 | 
			
		||||
        s.unit_time = int(_unit_time)
 | 
			
		||||
        s.notes = _notes
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
        
 | 
			
		||||
    def master_delete(_mode, _server, _name):
 | 
			
		||||
@ -2083,7 +2121,7 @@ def create_app():
 | 
			
		||||
                db.session.commit()
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
    def server_add(_name, _secret, _ip, _public_list, _port, _global_path, _global_ping_time, _global_max_missed, _global_use_acl, _global_reg_acl, _global_sub_acl, _global_tg1_acl, _global_tg2_acl, _ai_subscriber_file, _ai_try_download, _ai_path, _ai_peer_file, _ai_tgid_file, _ai_peer_url, _ai_subs_url, _ai_stale, _um_shorten_passphrase, _um_burn_file, _report_enable, _report_interval, _report_port, _report_clients, _unit_time):
 | 
			
		||||
    def server_add(_name, _secret, _ip, _public_list, _port, _global_path, _global_ping_time, _global_max_missed, _global_use_acl, _global_reg_acl, _global_sub_acl, _global_tg1_acl, _global_tg2_acl, _ai_subscriber_file, _ai_try_download, _ai_path, _ai_peer_file, _ai_tgid_file, _ai_peer_url, _ai_subs_url, _ai_stale, _um_shorten_passphrase, _um_burn_file, _report_enable, _report_interval, _report_port, _report_clients, _unit_time, _notes):
 | 
			
		||||
        add_server = ServerList(
 | 
			
		||||
        name = _name,
 | 
			
		||||
        secret = hashlib.sha256(_secret.encode()).hexdigest(),
 | 
			
		||||
@ -2116,11 +2154,12 @@ def create_app():
 | 
			
		||||
        report_interval = _report_interval,
 | 
			
		||||
        report_port = _report_port,
 | 
			
		||||
        report_clients = _report_clients,
 | 
			
		||||
        unit_time = int(_unit_time)
 | 
			
		||||
        unit_time = int(_unit_time),
 | 
			
		||||
        notes = _notes
 | 
			
		||||
        )
 | 
			
		||||
        db.session.add(add_server)
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
    def peer_add(_mode, _name, _enabled, _loose, _ip, _port, _master_ip, _master_port, _passphrase, _callsign, _radio_id, _rx, _tx, _tx_power, _cc, _lat, _lon, _height, _loc, _desc, _slots, _url, _grp_hang, _xlx_mod, _opt, _use_acl, _sub_acl, _1_acl, _2_acl, _svr, _enable_unit):
 | 
			
		||||
    def peer_add(_mode, _name, _enabled, _loose, _ip, _port, _master_ip, _master_port, _passphrase, _callsign, _radio_id, _rx, _tx, _tx_power, _cc, _lat, _lon, _height, _loc, _desc, _slots, _url, _grp_hang, _xlx_mod, _opt, _use_acl, _sub_acl, _1_acl, _2_acl, _svr, _enable_unit, _notes):
 | 
			
		||||
        if _mode == 'xlx':
 | 
			
		||||
            xlx_peer_add = xlxPeer(
 | 
			
		||||
                    name = _name,
 | 
			
		||||
@ -2151,7 +2190,8 @@ def create_app():
 | 
			
		||||
                    sub_acl = _sub_acl,
 | 
			
		||||
                    tg1_acl = _1_acl,
 | 
			
		||||
                    tg2_acl = _2_acl,
 | 
			
		||||
                    server = _svr
 | 
			
		||||
                    server = _svr,
 | 
			
		||||
                    notes = _notes
 | 
			
		||||
                        )
 | 
			
		||||
            db.session.add(xlx_peer_add)
 | 
			
		||||
            db.session.commit()
 | 
			
		||||
@ -2184,11 +2224,12 @@ def create_app():
 | 
			
		||||
                    sub_acl = _sub_acl,
 | 
			
		||||
                    tg1_acl = _1_acl,
 | 
			
		||||
                    tg2_acl = _2_acl,
 | 
			
		||||
                    server = _svr
 | 
			
		||||
                    server = _svr,
 | 
			
		||||
                    notes = _notes
 | 
			
		||||
                        )
 | 
			
		||||
            db.session.add(mmdvm_peer_add)
 | 
			
		||||
            db.session.commit()
 | 
			
		||||
    def peer_edit(_mode, _server, _name, _enabled, _loose, _ip, _port, _master_ip, _master_port, _passphrase, _callsign, _radio_id, _rx, _tx, _tx_power, _cc, _lat, _lon, _height, _loc, _desc, _slots, _url, _grp_hang, _xlx_mod, _opt, _use_acl, _sub_acl, _1_acl, _2_acl, _enable_unit):
 | 
			
		||||
    def peer_edit(_mode, _server, _name, _enabled, _loose, _ip, _port, _master_ip, _master_port, _passphrase, _callsign, _radio_id, _rx, _tx, _tx_power, _cc, _lat, _lon, _height, _loc, _desc, _slots, _url, _grp_hang, _xlx_mod, _opt, _use_acl, _sub_acl, _1_acl, _2_acl, _enable_unit, _notes):
 | 
			
		||||
##        print(_mode)
 | 
			
		||||
        if _mode == 'mmdvm':
 | 
			
		||||
##            print(_server)
 | 
			
		||||
@ -2223,11 +2264,12 @@ def create_app():
 | 
			
		||||
            p.sub_acl = _sub_acl
 | 
			
		||||
            p.tg1_acl = _1_acl
 | 
			
		||||
            p.tg2_acl = _2_acl
 | 
			
		||||
            p.notes = _notes
 | 
			
		||||
        if _mode == 'xlx':
 | 
			
		||||
##            print(type(_server))
 | 
			
		||||
##            print(type(_name))
 | 
			
		||||
##            print(type(_enabled))
 | 
			
		||||
            print((_enable_unit))
 | 
			
		||||
##            print((_enable_unit))
 | 
			
		||||
##            print(type(_use_acl))
 | 
			
		||||
####            print(_port)
 | 
			
		||||
 | 
			
		||||
@ -2263,6 +2305,7 @@ def create_app():
 | 
			
		||||
            p.sub_acl = _sub_acl
 | 
			
		||||
            p.tg1_acl = _1_acl
 | 
			
		||||
            p.tg2_acl = _2_acl
 | 
			
		||||
            p.notes = _notes
 | 
			
		||||
        db.session.commit()
 | 
			
		||||
            
 | 
			
		||||
            
 | 
			
		||||
@ -2300,13 +2343,13 @@ def create_app():
 | 
			
		||||
                public_list = False
 | 
			
		||||
 | 
			
		||||
            if request.args.get('save_mode') == 'new':
 | 
			
		||||
                server_add(request.form.get('server_name'), request.form.get('server_secret'), request.form.get('server_ip'), public_list, _port, request.form.get('global_path'), _global_ping_time, _global_max_missed, _global_use_acl, request.form.get('reg_acl'), request.form.get('sub_acl'), request.form.get('global_ts1_acl'), request.form.get('global_ts2_acl'), request.form.get('sub_file'), _ai_try_download, request.form.get('aliases_path'), request.form.get('peer_file'), request.form.get('tgid_file'), request.form.get('peer_url'), request.form.get('sub_url'), _ai_stale, _um_shorten_passphrase, request.form.get('um_burn_file'), _report_enabled, _report_interval, _report_port, request.form.get('report_clients'), request.form.get('unit_time'))
 | 
			
		||||
                server_add(request.form.get('server_name'), request.form.get('server_secret'), request.form.get('server_ip'), public_list, _port, request.form.get('global_path'), _global_ping_time, _global_max_missed, _global_use_acl, request.form.get('reg_acl'), request.form.get('sub_acl'), request.form.get('global_ts1_acl'), request.form.get('global_ts2_acl'), request.form.get('sub_file'), _ai_try_download, request.form.get('aliases_path'), request.form.get('peer_file'), request.form.get('tgid_file'), request.form.get('peer_url'), request.form.get('sub_url'), _ai_stale, _um_shorten_passphrase, request.form.get('um_burn_file'), _report_enabled, _report_interval, _report_port, request.form.get('report_clients'), request.form.get('unit_time'), request.form.get('notes'))
 | 
			
		||||
                content = '''<h3 style="text-align: center;">Server saved.</h3>
 | 
			
		||||
<p style="text-align: center;">Redirecting in 3 seconds.</p>
 | 
			
		||||
<meta http-equiv="refresh" content="3; URL=manage_servers" />'''
 | 
			
		||||
            if request.args.get('save_mode') == 'edit':
 | 
			
		||||
##                print(request.args.get('server'))
 | 
			
		||||
                server_edit(request.args.get('server'), request.form.get('server_secret'), request.form.get('server_ip'), public_list, _port, request.form.get('global_path'), _global_ping_time, _global_max_missed, _global_use_acl, request.form.get('reg_acl'), request.form.get('sub_acl'), request.form.get('global_ts1_acl'), request.form.get('global_ts2_acl'), request.form.get('sub_file'), _ai_try_download, request.form.get('aliases_path'), request.form.get('peer_file'), request.form.get('tgid_file'), request.form.get('peer_url'), request.form.get('sub_url'), _ai_stale, _um_shorten_passphrase, request.form.get('um_burn_file'), _report_enabled, _report_interval, _report_port, request.form.get('report_clients'), request.form.get('unit_time'))
 | 
			
		||||
                server_edit(request.args.get('server'), request.form.get('server_secret'), request.form.get('server_ip'), public_list, _port, request.form.get('global_path'), _global_ping_time, _global_max_missed, _global_use_acl, request.form.get('reg_acl'), request.form.get('sub_acl'), request.form.get('global_ts1_acl'), request.form.get('global_ts2_acl'), request.form.get('sub_file'), _ai_try_download, request.form.get('aliases_path'), request.form.get('peer_file'), request.form.get('tgid_file'), request.form.get('peer_url'), request.form.get('sub_url'), _ai_stale, _um_shorten_passphrase, request.form.get('um_burn_file'), _report_enabled, _report_interval, _report_port, request.form.get('report_clients'), request.form.get('unit_time'), request.form.get('notes'))
 | 
			
		||||
                content = '''<h3 style="text-align: center;">Server changed.</h3>
 | 
			
		||||
<p style="text-align: center;">Redirecting in 3 seconds.</p>
 | 
			
		||||
<meta http-equiv="refresh" content="3; URL=manage_servers" />'''
 | 
			
		||||
@ -2354,9 +2397,12 @@ def create_app():
 | 
			
		||||
<option selected="selected" value="''' + str(s.public_list) + '''">Current: ''' + str(s.public_list) + '''</option>
 | 
			
		||||
<option value="False">False</option>
 | 
			
		||||
<option value="True">True</option>
 | 
			
		||||
 | 
			
		||||
</select></td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td><strong> Notes:</strong></td>
 | 
			
		||||
<td> <textarea id="notes" cols="50" name="notes" rows="4">''' + str(s.notes) + '''</textarea></td>
 | 
			
		||||
</tr>
 | 
			
		||||
</tbody>
 | 
			
		||||
</table>
 | 
			
		||||
<h3 style="text-align: center;"><strong>Global</strong></h3>
 | 
			
		||||
@ -2555,6 +2601,10 @@ def create_app():
 | 
			
		||||
<option value="False">False</option>
 | 
			
		||||
</select></td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td><strong> Notes:</strong></td>
 | 
			
		||||
<td> <textarea id="notes" cols="50" name="notes" rows="4"></textarea></td>
 | 
			
		||||
</tr>
 | 
			
		||||
</tbody>
 | 
			
		||||
</table>
 | 
			
		||||
<h3 style="text-align: center;"><strong>Global</strong></h3>
 | 
			
		||||
@ -2728,11 +2778,14 @@ def create_app():
 | 
			
		||||
<table style="width: 400px; margin-left: auto; margin-right: auto;" border="1">
 | 
			
		||||
<tbody>
 | 
			
		||||
<td style="text-align: center;"><h5><strong>Name</strong><h5></td>
 | 
			
		||||
<td style="text-align: center;"><h5><strong>Notes</strong><h5></td>
 | 
			
		||||
 | 
			
		||||
'''
 | 
			
		||||
            for s in all_s:
 | 
			
		||||
                p_list = p_list + '''
 | 
			
		||||
<tr>
 | 
			
		||||
<td style="text-align: center;"><a href="manage_servers?edit_server=''' + str(s.name) + '''"><strong>''' + str(s.name) + '''</strong></a></td>
 | 
			
		||||
<td>''' + s.notes + '''</td>
 | 
			
		||||
</tr>\n
 | 
			
		||||
'''
 | 
			
		||||
            p_list = p_list + '''</tbody></table> '''
 | 
			
		||||
@ -2762,12 +2815,12 @@ def create_app():
 | 
			
		||||
##            print(request.form.get('enable_unit'))
 | 
			
		||||
##            print(enable_unit)
 | 
			
		||||
            if request.args.get('save_mode') == 'mmdvm_peer':
 | 
			
		||||
                peer_add('mmdvm', request.form.get('name_text'), peer_enabled, peer_loose, request.form.get('ip'), request.form.get('port'), request.form.get('master_ip'), request.form.get('master_port'), request.form.get('passphrase'), request.form.get('callsign'), request.form.get('radio_id'), request.form.get('rx'), request.form.get('tx'), request.form.get('tx_power'), request.form.get('cc'), request.form.get('lat'), request.form.get('lon'), request.form.get('height'), request.form.get('location'), request.form.get('description'), request.form.get('slots'), request.form.get('url'), request.form.get('group_hangtime'), 'MMDVM', request.form.get('options'), use_acl, request.form.get('sub_acl'), request.form.get('tgid_ts1_acl'), request.form.get('tgid_ts2_acl'), request.form.get('server'), unit_enabled)
 | 
			
		||||
                peer_add('mmdvm', request.form.get('name_text'), peer_enabled, peer_loose, request.form.get('ip'), request.form.get('port'), request.form.get('master_ip'), request.form.get('master_port'), request.form.get('passphrase'), request.form.get('callsign'), request.form.get('radio_id'), request.form.get('rx'), request.form.get('tx'), request.form.get('tx_power'), request.form.get('cc'), request.form.get('lat'), request.form.get('lon'), request.form.get('height'), request.form.get('location'), request.form.get('description'), request.form.get('slots'), request.form.get('url'), request.form.get('group_hangtime'), 'MMDVM', request.form.get('options'), use_acl, request.form.get('sub_acl'), request.form.get('tgid_ts1_acl'), request.form.get('tgid_ts2_acl'), request.form.get('server'), unit_enabled, request.form.get('notes'))
 | 
			
		||||
                content = '''<h3 style="text-align: center;">MMDVM PEER saved.</h3>
 | 
			
		||||
<p style="text-align: center;">Redirecting in 3 seconds.</p>
 | 
			
		||||
<meta http-equiv="refresh" content="3; URL=manage_peers" />'''
 | 
			
		||||
            if request.args.get('save_mode') == 'xlx_peer':
 | 
			
		||||
                peer_add('xlx', request.form.get('name_text'), peer_enabled, peer_loose, request.form.get('ip'), request.form.get('port'), request.form.get('master_ip'), request.form.get('master_port'), request.form.get('passphrase'), request.form.get('callsign'), request.form.get('radio_id'), request.form.get('rx'), request.form.get('tx'), request.form.get('tx_power'), request.form.get('cc'), request.form.get('lat'), request.form.get('lon'), request.form.get('height'), request.form.get('location'), request.form.get('description'), request.form.get('slots'), request.form.get('url'), request.form.get('group_hangtime'), request.form.get('xlxmodule'), request.form.get('options'), use_acl, request.form.get('sub_acl'), request.form.get('tgid_ts1_acl'), request.form.get('tgid_ts2_acl'), request.form.get('server'), unit_enabled)
 | 
			
		||||
                peer_add('xlx', request.form.get('name_text'), peer_enabled, peer_loose, request.form.get('ip'), request.form.get('port'), request.form.get('master_ip'), request.form.get('master_port'), request.form.get('passphrase'), request.form.get('callsign'), request.form.get('radio_id'), request.form.get('rx'), request.form.get('tx'), request.form.get('tx_power'), request.form.get('cc'), request.form.get('lat'), request.form.get('lon'), request.form.get('height'), request.form.get('location'), request.form.get('description'), request.form.get('slots'), request.form.get('url'), request.form.get('group_hangtime'), request.form.get('xlxmodule'), request.form.get('options'), use_acl, request.form.get('sub_acl'), request.form.get('tgid_ts1_acl'), request.form.get('tgid_ts2_acl'), request.form.get('server'), unit_enabled, request.form.get('notes'))
 | 
			
		||||
                content = '''<h3 style="text-align: center;">XLX PEER saved.</h3>
 | 
			
		||||
<p style="text-align: center;">Redirecting in 3 seconds.</p>
 | 
			
		||||
<meta http-equiv="refresh" content="3; URL=manage_peers" />'''
 | 
			
		||||
@ -2937,6 +2990,10 @@ def create_app():
 | 
			
		||||
<td style="width: 175.567px;"><strong> Talkgroup Slot 2 ACLs:</strong></td>
 | 
			
		||||
<td style="width: 399.433px;"> <input name="tgid_ts2_acl" type="text" value="PERMIT:ALL" /></td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td><strong> Notes:</strong></td>
 | 
			
		||||
<td> <textarea id="notes" cols="50" name="notes" rows="4"></textarea></td>
 | 
			
		||||
</tr>
 | 
			
		||||
</tbody>
 | 
			
		||||
</table>
 | 
			
		||||
<p> </p>
 | 
			
		||||
@ -2968,12 +3025,12 @@ def create_app():
 | 
			
		||||
##            print(type(peer_enabled))
 | 
			
		||||
##            print(type(use_acl))
 | 
			
		||||
            if request.args.get('edit_mmdvm') == 'save':
 | 
			
		||||
                peer_edit('mmdvm', request.args.get('server'), request.args.get('name'), peer_enabled, peer_loose, request.form.get('ip'), request.form.get('port'), request.form.get('master_ip'), request.form.get('master_port'), request.form.get('passphrase'), request.form.get('callsign'), request.form.get('radio_id'), request.form.get('rx'), request.form.get('tx'), request.form.get('tx_power'), request.form.get('cc'), request.form.get('lat'), request.form.get('lon'), request.form.get('height'), request.form.get('location'), request.form.get('description'), request.form.get('slots'), request.form.get('url'), request.form.get('group_hangtime'), 'MMDVM', request.form.get('options'), use_acl, request.form.get('sub_acl'), request.form.get('tgid_ts1_acl'), request.form.get('tgid_ts2_acl'), unit_enabled)
 | 
			
		||||
                peer_edit('mmdvm', request.args.get('server'), request.args.get('name'), peer_enabled, peer_loose, request.form.get('ip'), request.form.get('port'), request.form.get('master_ip'), request.form.get('master_port'), request.form.get('passphrase'), request.form.get('callsign'), request.form.get('radio_id'), request.form.get('rx'), request.form.get('tx'), request.form.get('tx_power'), request.form.get('cc'), request.form.get('lat'), request.form.get('lon'), request.form.get('height'), request.form.get('location'), request.form.get('description'), request.form.get('slots'), request.form.get('url'), request.form.get('group_hangtime'), 'MMDVM', request.form.get('options'), use_acl, request.form.get('sub_acl'), request.form.get('tgid_ts1_acl'), request.form.get('tgid_ts2_acl'), unit_enabled, request.form.get('notes'))
 | 
			
		||||
                content = '''<h3 style="text-align: center;">MMDVM PEER changed.</h3>
 | 
			
		||||
<p style="text-align: center;">Redirecting in 3 seconds.</p>
 | 
			
		||||
<meta http-equiv="refresh" content="3; URL=manage_peers" />'''
 | 
			
		||||
            if request.args.get('edit_xlx') == 'save':
 | 
			
		||||
                peer_edit('xlx', request.args.get('server'), request.args.get('name'), peer_enabled, peer_loose, request.form.get('ip'), request.form.get('port'), request.form.get('master_ip'), request.form.get('master_port'), request.form.get('passphrase'), request.form.get('callsign'), request.form.get('radio_id'), request.form.get('rx'), request.form.get('tx'), request.form.get('tx_power'), request.form.get('cc'), request.form.get('lat'), request.form.get('lon'), request.form.get('height'), request.form.get('location'), request.form.get('description'), request.form.get('slots'), request.form.get('url'), request.form.get('group_hangtime'), request.form.get('xlxmodule'),  request.form.get('options'), use_acl, request.form.get('sub_acl'), request.form.get('tgid_ts1_acl'), request.form.get('tgid_ts2_acl'), unit_enabled)
 | 
			
		||||
                peer_edit('xlx', request.args.get('server'), request.args.get('name'), peer_enabled, peer_loose, request.form.get('ip'), request.form.get('port'), request.form.get('master_ip'), request.form.get('master_port'), request.form.get('passphrase'), request.form.get('callsign'), request.form.get('radio_id'), request.form.get('rx'), request.form.get('tx'), request.form.get('tx_power'), request.form.get('cc'), request.form.get('lat'), request.form.get('lon'), request.form.get('height'), request.form.get('location'), request.form.get('description'), request.form.get('slots'), request.form.get('url'), request.form.get('group_hangtime'), request.form.get('xlxmodule'),  request.form.get('options'), use_acl, request.form.get('sub_acl'), request.form.get('tgid_ts1_acl'), request.form.get('tgid_ts2_acl'), unit_enabled, request.form.get('notes'))
 | 
			
		||||
                content = '''<h3 style="text-align: center;">XLX PEER changed.</h3>
 | 
			
		||||
<p style="text-align: center;">Redirecting in 3 seconds.</p>
 | 
			
		||||
<meta http-equiv="refresh" content="3; URL=manage_peers" />'''
 | 
			
		||||
@ -3142,6 +3199,10 @@ def create_app():
 | 
			
		||||
<td style="width: 175.567px;"><strong> Talkgroup Slot 2 ACLs:</strong></td>
 | 
			
		||||
<td style="width: 399.433px;"> <input name="tgid_ts2_acl" type="text" value="''' + str(p.tg2_acl) + '''" /></td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td><strong> Notes:</strong></td>
 | 
			
		||||
<td> <textarea id="notes" cols="50" name="notes" rows="4">''' + str(p.notes) + '''</textarea></td>
 | 
			
		||||
</tr>
 | 
			
		||||
</tbody>
 | 
			
		||||
</table>
 | 
			
		||||
<p> </p>
 | 
			
		||||
@ -3161,6 +3222,8 @@ def create_app():
 | 
			
		||||
<tr>
 | 
			
		||||
<td style="text-align: center;"><strong>Name</strong></td>
 | 
			
		||||
<td style="text-align: center;"><strong>Mode</strong></td>
 | 
			
		||||
<td style="text-align: center;"><strong>Notes</strong></td>
 | 
			
		||||
 | 
			
		||||
</tr>\n
 | 
			
		||||
'''
 | 
			
		||||
                all_p = mmdvmPeer.query.filter_by(server=s.name).all()
 | 
			
		||||
@ -3170,14 +3233,18 @@ def create_app():
 | 
			
		||||
<tr>
 | 
			
		||||
<td><a href="manage_peers?server=''' + str(s.name) + '''&peer_name=''' + str(p.name) + '''&mode=mmdvm">''' + str(p.name) + '''</a></td>
 | 
			
		||||
<td>MMDVM</td>
 | 
			
		||||
</tr>\n
 | 
			
		||||
<td>''' + p.notes + '''</td>
 | 
			
		||||
 | 
			
		||||
</tr>
 | 
			
		||||
'''
 | 
			
		||||
                for x in all_x:
 | 
			
		||||
                    p_list = p_list + '''
 | 
			
		||||
<tr>
 | 
			
		||||
<td><a href="manage_peers?server=''' + str(x.server) + '''&peer_name=''' + str(x.name) + '''&mode=xlx">''' + str(x.name) + '''</a></td>
 | 
			
		||||
<td>XLX</td>
 | 
			
		||||
</tr>\n
 | 
			
		||||
<td>''' + x.notes + '''</td>
 | 
			
		||||
 | 
			
		||||
</tr>
 | 
			
		||||
'''
 | 
			
		||||
                p_list = p_list + ''' </tbody></table>\n'''
 | 
			
		||||
            content = '''
 | 
			
		||||
@ -3979,7 +4046,7 @@ def create_app():
 | 
			
		||||
<td style="text-align: center;"><strong>Mode</strong></td>
 | 
			
		||||
<td style="text-align: center;"><strong>Notes</strong></td>
 | 
			
		||||
 | 
			
		||||
</tr>\n
 | 
			
		||||
</tr>
 | 
			
		||||
'''
 | 
			
		||||
                all_m = MasterList.query.filter_by(server=s.name).all()
 | 
			
		||||
                all_p = ProxyList.query.filter_by(server=s.name).all()
 | 
			
		||||
@ -4102,6 +4169,151 @@ def create_app():
 | 
			
		||||
                
 | 
			
		||||
        return render_template('flask_user_layout.html', markup_content = Markup(content))
 | 
			
		||||
 | 
			
		||||
    @app.route('/manage_rules', methods=['POST', 'GET'])
 | 
			
		||||
    def manage_rules():
 | 
			
		||||
        
 | 
			
		||||
        if request.args.get('save_bridge') == 'save':
 | 
			
		||||
            public = False
 | 
			
		||||
            if request.form.get('public_list') == 'True':
 | 
			
		||||
                public = True
 | 
			
		||||
            bridge_add(request.form.get('bridge_name'), request.form.get('description'), public, request.form.get('tg'))
 | 
			
		||||
        if request.args.get('save_bridge') == 'edit':
 | 
			
		||||
            public = False
 | 
			
		||||
            if request.form.get('public_list') == 'True':
 | 
			
		||||
                public = True
 | 
			
		||||
            update_bridge_list(request.args.get('bridge'), request.form.get('description'), public, request.form.get('bridge_name'), request.form.get('tg'))
 | 
			
		||||
            content = 'edit'
 | 
			
		||||
        if request.args.get('save_bridge') == 'delete':
 | 
			
		||||
            bridge_delete(request.args.get('bridge'))
 | 
			
		||||
            content = 'deleted'
 | 
			
		||||
            
 | 
			
		||||
        elif request.args.get('add_bridge'):
 | 
			
		||||
            s = ServerList.query.all()
 | 
			
		||||
##            server_options = ''
 | 
			
		||||
##            for i in s:
 | 
			
		||||
##                server_options = server_options + '''<option value="''' + i.name + '''">''' + i.name + '''</option>\n'''
 | 
			
		||||
 | 
			
		||||
            content = '''
 | 
			
		||||
<p> </p>
 | 
			
		||||
<h2 style="text-align: center;"><strong>Add a Talk Group</strong></h2>
 | 
			
		||||
<form action="manage_rules?save_bridge=save" method="POST">
 | 
			
		||||
<table style="width: 200px; margin-left: auto; margin-right: auto;" border="1">
 | 
			
		||||
<tbody>
 | 
			
		||||
<tr style="height: 51.1667px;">
 | 
			
		||||
<td style="height: 51.1667px; text-align: center;"><label for="bridge_name">Name:</label><br /> <input id="bridge_name" name="bridge_name" type="text" /><p> </p>
 | 
			
		||||
</td>
 | 
			
		||||
</tr>
 | 
			
		||||
 | 
			
		||||
<tr style="height: 51.1667px;">
 | 
			
		||||
<td style="height: 51.1667px; text-align: center;"><label for="tg">Talk Group ID:</label><br /> <input id="tg" name="tg" type="text" value = "1234"/><p> </p>
 | 
			
		||||
</td>
 | 
			
		||||
</tr>
 | 
			
		||||
 | 
			
		||||
<tr style="height: 51.1667px;">
 | 
			
		||||
<td style="height: 51.1667px; text-align: center;"><label for="description">Description:</label><br /> <textarea id="notes" cols="30" name="description" rows="4"></textarea></td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr style="height: 51.1667px;">
 | 
			
		||||
<td style="height: 51.1667px; text-align: center;"><label for="public_list">Public List:</label><br /><select name="public_list">
 | 
			
		||||
<option selected="selected" value="True">True</option>
 | 
			
		||||
<option value="False">False</option>
 | 
			
		||||
</select><p> </p>
 | 
			
		||||
</td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr style="height: 27px;">
 | 
			
		||||
<td style="text-align: center; height: 27px;">
 | 
			
		||||
<p> </p>
 | 
			
		||||
 | 
			
		||||
<p><input type="submit" value="Submit" /></p>
 | 
			
		||||
</td>
 | 
			
		||||
</tr>
 | 
			
		||||
</tbody>
 | 
			
		||||
</table>
 | 
			
		||||
</form>
 | 
			
		||||
'''
 | 
			
		||||
        elif request.args.get('edit_bridge'):
 | 
			
		||||
            b = BridgeList.query.filter_by(bridge_name=request.args.get('edit_bridge')).first()
 | 
			
		||||
##            s = ServerList.query.all()
 | 
			
		||||
##            server_options = ''
 | 
			
		||||
##            for i in s:
 | 
			
		||||
##                server_options = server_options + '''<option value="''' + i.name + '''">''' + i.name + '''</option>\n'''
 | 
			
		||||
 | 
			
		||||
            content = '''
 | 
			
		||||
<p> </p>
 | 
			
		||||
<h2 style="text-align: center;"><strong>Edit a Talk Group</strong></h2>
 | 
			
		||||
<p style="text-align: center;"><strong><a href="manage_rules?bridge=''' + request.args.get('edit_bridge') + '''&save_bridge=delete">Delete Talk Group</a></strong></p>
 | 
			
		||||
<p> </p>
 | 
			
		||||
 | 
			
		||||
<form action="manage_rules?save_bridge=edit&bridge=''' + request.args.get('edit_bridge') + '''" method="POST">
 | 
			
		||||
<table style="width: 200px; margin-left: auto; margin-right: auto;" border="1">
 | 
			
		||||
<tbody>
 | 
			
		||||
<tr style="height: 51.1667px;">
 | 
			
		||||
<td style="height: 51.1667px; text-align: center;"><label for="bridge_name">Name:</label><br /> <input id="bridge_name" name="bridge_name" type="text" value = "''' + str(b.bridge_name) + '''"/><p> </p>
 | 
			
		||||
</td>
 | 
			
		||||
</tr>
 | 
			
		||||
 | 
			
		||||
<tr style="height: 51.1667px;">
 | 
			
		||||
<td style="height: 51.1667px; text-align: center;"><label for="tg">Talk Group ID:</label><br /> <input id="tg" name="tg" type="text" value = "''' + str(b.tg) + '''"/><p> </p>
 | 
			
		||||
</td>
 | 
			
		||||
</tr>
 | 
			
		||||
 | 
			
		||||
<tr style="height: 51.1667px;">
 | 
			
		||||
<td style="height: 51.1667px; text-align: center;"><label for="description">Description:</label><br /> <textarea id="notes" cols="30" name="description" rows="4">''' + str(b.description) + '''</textarea></td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr style="height: 51.1667px;">
 | 
			
		||||
<td style="height: 51.1667px; text-align: center;"><label for="public_list">Public List:</label><br /><select name="public_list">
 | 
			
		||||
<option selected="selected" value="''' + str(b.public_list) + '''">Current - ''' + str(b.public_list) + '''</option>
 | 
			
		||||
<option value="False">False</option>
 | 
			
		||||
<option value="True">True</option>
 | 
			
		||||
 | 
			
		||||
</select><p> </p>
 | 
			
		||||
</td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr style="height: 27px;">
 | 
			
		||||
<td style="text-align: center; height: 27px;">
 | 
			
		||||
<p> </p>
 | 
			
		||||
 | 
			
		||||
<p><input type="submit" value="Submit" /></p>
 | 
			
		||||
</td>
 | 
			
		||||
</tr>
 | 
			
		||||
</tbody>
 | 
			
		||||
</table>
 | 
			
		||||
</form>
 | 
			
		||||
'''
 | 
			
		||||
        else:
 | 
			
		||||
            all_b = BridgeList.query.all()
 | 
			
		||||
            b_list = '''
 | 
			
		||||
<h3 style="text-align: center;">View/Edit Bridges (Talk Groups)</h3>
 | 
			
		||||
 | 
			
		||||
<table style="width: 400px; margin-left: auto; margin-right: auto;" border="1">
 | 
			
		||||
<tbody>
 | 
			
		||||
<tr>
 | 
			
		||||
<td style="text-align: center;"><strong><a href="manage_rules?add_bridge=yes">Add Bridge</a></strong></td>
 | 
			
		||||
 | 
			
		||||
</tr>
 | 
			
		||||
</tbody>
 | 
			
		||||
</table>
 | 
			
		||||
<p> </p>
 | 
			
		||||
 | 
			
		||||
<table style="width: 400px; margin-left: auto; margin-right: auto;" border="1">
 | 
			
		||||
<tbody>
 | 
			
		||||
<tr>
 | 
			
		||||
<td style="text-align: center;"><strong>Name</strong></td>
 | 
			
		||||
<td style="text-align: center;"><strong>Public</strong></td>
 | 
			
		||||
<td style="text-align: center;"><strong>Description</strong></td>
 | 
			
		||||
</tr>
 | 
			
		||||
'''
 | 
			
		||||
            for i in all_b:
 | 
			
		||||
                b_list = b_list + '''
 | 
			
		||||
<tr>
 | 
			
		||||
<td style="text-align: center;"><a href="manage_rules?edit_bridge=''' + str(i.bridge_name) + '''">''' + str(i.bridge_name) + '''</a>
 | 
			
		||||
<td style="text-align: center;">''' + str(i.public_list) + '''</td>
 | 
			
		||||
<td style="text-align: center;">''' + str(i.description) + '''</td>
 | 
			
		||||
</tr>
 | 
			
		||||
'''
 | 
			
		||||
            content = b_list + '</tbody></table>'
 | 
			
		||||
            
 | 
			
		||||
        return render_template('flask_user_layout.html', markup_content = Markup(content))
 | 
			
		||||
 | 
			
		||||
    @app.route('/auth', methods=['POST'])
 | 
			
		||||
    def auth():
 | 
			
		||||
        hblink_req = request.json
 | 
			
		||||
 | 
			
		||||
@ -68,6 +68,7 @@
 | 
			
		||||
<td style="text-align: center;"><a href={{url}}/manage_servers>Manage Servers</a></td>
 | 
			
		||||
<td style="text-align: center;"><a href={{url}}/manage_peers>Manage Peers</a></td>
 | 
			
		||||
<td style="text-align: center;"><a href={{url}}/manage_masters>Manage Masters</a></td>
 | 
			
		||||
<td style="text-align: center;"><a href={{url}}/manage_rules>Manage Rules</a></td>
 | 
			
		||||
</tr>
 | 
			
		||||
</tbody>
 | 
			
		||||
</table>
 | 
			
		||||
@ -125,7 +126,7 @@
 | 
			
		||||
    <br/>
 | 
			
		||||
    <hr class="no-margins"/>
 | 
			
		||||
    <div id="footer-div" class="clearfix with-margins">
 | 
			
		||||
    <p style="text-align: center;"><strong>{{ user_manager.USER_APP_NAME }}<br /></strong><a href="https://github.com/kf7eel/hblink3">HBNet DMR Server</a><br />Created by KF7EEL<br />Contributors:  W7NCX</p>
 | 
			
		||||
    <p style="text-align: center;"><strong>{{ user_manager.USER_APP_NAME }}<br /></strong><a href="https://github.com/kf7eel/hblink3">HBNet DMR Project</a><br />Created by KF7EEL<br />Contributors:  W7NCX</p>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
    {% endblock %}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user