add foundation for server commands, add restart

This commit is contained in:
KF7EEL 2022-09-28 10:49:45 -07:00
parent 4605bf99cb
commit 625d8ceb87
3 changed files with 73 additions and 15 deletions

View File

@ -76,6 +76,7 @@ from setproctitle import setproctitle
import copy import copy
from pathlib import Path from pathlib import Path
import sys
@ -149,9 +150,15 @@ def ping(CONFIG):
try: try:
req = requests.post(user_man_url, data=json_object, headers={'Content-Type': 'application/json'}) req = requests.post(user_man_url, data=json_object, headers={'Content-Type': 'application/json'})
## resp = json.loads(req.text) resp = json.loads(req.text)
## print(resp) logger.debug(resp)
## return resp['rules'] for c in resp['commands']:
if c == 'restart':
print('restart')
print(sys.argv)
os.execv(__file__, sys.argv)
## return resp['rules']
except requests.ConnectionError: except requests.ConnectionError:
logger.error('Config server unreachable') logger.error('Config server unreachable')
## return config.build_config(cli_file) ## return config.build_config(cli_file)

13
data_gateway.py Normal file → Executable file
View File

@ -343,12 +343,17 @@ def ping(CONFIG):
'secret':shared_secret 'secret':shared_secret
} }
json_object = json.dumps(ping_data, indent = 4) json_object = json.dumps(ping_data, indent = 4)
try: try:
req = requests.post(user_man_url, data=json_object, headers={'Content-Type': 'application/json'}) req = requests.post(user_man_url, data=json_object, headers={'Content-Type': 'application/json'})
logger.debug('Web service ping') resp = json.loads(req.text)
## resp = json.loads(req.text) logger.debug(resp)
## print(resp) for c in resp['commands']:
if c == 'restart':
print('restart')
print(sys.argv)
os.execv(__file__, sys.argv)
## return resp['rules']
## return resp['rules'] ## return resp['rules']
except requests.ConnectionError: except requests.ConnectionError:
logger.error('Config server unreachable') logger.error('Config server unreachable')

View File

@ -56,7 +56,7 @@ from cryptography.fernet import Fernet
from flaskext.markdown import Markdown from flaskext.markdown import Markdown
peer_locations = {} peer_locations = {}
hbnet_version = 'V 09262022' hbnet_version = 'V 09282022'
# Query radioid.net for list of IDs # Query radioid.net for list of IDs
def get_ids(callsign): def get_ids(callsign):
@ -4771,8 +4771,30 @@ Name: <strong>''' + p.name + '''</strong>&nbsp; -&nbsp; Port: <strong>''' + str(
@login_required @login_required
@roles_required('Admin') @roles_required('Admin')
def edit_server_db(): def edit_server_db():
if request.args.get('server_command'):
try:
cl = Misc.query.filter_by(field_1=request.args.get('server') + '_command_list').first()
cmd_lst = ast.literal_eval(cl.field_2)
print('--')
print(cmd_lst)
except:
cmd_lst = []
misc_add(request.args.get('server') + '_command_list', str(cmd_lst), '', '', 0, 0, 0, 0, False, False)
if request.args.get('server_command') == 'restart':
cmd_lst.append('restart')
elif request.args.get('server_command') == '2':
cmd_lst.append('2')
print(cmd_lst)
content = '''<h3 style="text-align: center;">Command qued.</h3>
<p style="text-align: center;">Redirecting in 3 seconds.</p>
<meta http-equiv="refresh" content="3; URL=/manage_servers" />'''
misc_edit_field_1(request.args.get('server') + '_command_list', str(cmd_lst), '', '', 0, 0, 0, 0, False, False)
## misc_add(request.args.get('server') + '_command_list', str(cmd_lst), '', '', 0, 0, 0, 0, False, False)
return render_template('flask_user_layout.html', markup_content = Markup(content))
# Edit server # Edit server
if request.args.get('save_mode'):# == 'new' and request.form.get('server_name'): elif request.args.get('save_mode'):# == 'new' and request.form.get('server_name'):
## _port = int(request.form.get('server_port')) ## _port = int(request.form.get('server_port'))
_global_ping_time = int(request.form.get('ping_time')) _global_ping_time = int(request.form.get('ping_time'))
_global_max_missed = int(request.form.get('max_missed')) _global_max_missed = int(request.form.get('max_missed'))
@ -5289,27 +5311,40 @@ Name: <strong>''' + p.name + '''</strong>&nbsp; -&nbsp; Port: <strong>''' + str(
''' '''
for s in all_s: for s in all_s:
tool_menu = '''
<div class="dropdown">
<button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown">
Tools
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="/unit/''' + s.name + '''">UNIT Table</a></li>
<li><a class="dropdown-item" href="/manage_servers?server=''' + s.name + '''&server_command=restart">Restart Server</a></li>
</ul>
</div>
'''
try: try:
if time.time() - ping_list[s.name] < 30: if time.time() - ping_list[s.name] < 30:
svr_status = '''<div class="alert alert-success"> svr_status = '''<div class="alert alert-success">
<a href="manage_servers?edit_server=''' + str(s.name) + '''"><button type="button" class="btn btn-success">''' + str(s.name) + '''</button></a> <a href="manage_servers?edit_server=''' + str(s.name) + '''"><button type="button" class="btn btn-success">''' + str(s.name) + '''</button></a>
\n<a href="/unit/''' + s.name + '''"><button type="button" class="btn btn-primary">View UNIT Table</button></a></div>''' \n''' + tool_menu + '''</div>'''
elif time.time() - ping_list[s.name] <= 300: elif time.time() - ping_list[s.name] <= 300:
svr_status = '''<div class="alert alert-warning"> svr_status = '''<div class="alert alert-warning">
<a href="manage_servers?edit_server=''' + str(s.name) + '''"><button type="button" class="btn btn-warning">''' + str(s.name) + '''</button></a> <a href="manage_servers?edit_server=''' + str(s.name) + '''"><button type="button" class="btn btn-warning">''' + str(s.name) + '''</button></a>
\n<a href="/unit/''' + s.name + '''"><button type="button" class="btn btn-primary">View UNIT Table</button></a></div>''' \n''' + tool_menu + '''</div>'''
elif time.time() - ping_list[s.name] > 300: elif time.time() - ping_list[s.name] > 300:
svr_status = '''<div class="alert alert-danger"> svr_status = '''<div class="alert alert-danger">
<a href="manage_servers?edit_server=''' + str(s.name) + '''"><button type="button" class="btn btn-danger">''' + str(s.name) + '''</button></a> <a href="manage_servers?edit_server=''' + str(s.name) + '''"><button type="button" class="btn btn-danger">''' + str(s.name) + '''</button></a>
\n<a href="/unit/''' + s.name + '''"><button type="button" class="btn btn-primary">View UNIT Table</button></a></div>''' \n''' + tool_menu + '''</div>'''
else: else:
svr_status = '''<div class="alert alert-warning"> svr_status = '''<div class="alert alert-warning">
<a href="manage_servers?edit_server=''' + str(s.name) + '''"><button type="button" class="btn btn-warning">''' + str(s.name) + '''</button></a> <a href="manage_servers?edit_server=''' + str(s.name) + '''"><button type="button" class="btn btn-warning">''' + str(s.name) + '''</button></a>
\n<a href="/unit/''' + s.name + '''"><button type="button" class="btn btn-primary">View UNIT Table</button></a></div>''' \n''' + tool_menu + '''</div>'''
except: except:
svr_status = '''<div class="alert alert-warning"> svr_status = '''<div class="alert alert-warning">
<a href="manage_servers?edit_server=''' + str(s.name) + '''"><button type="button" class="btn btn-warning">''' + str(s.name) + '''</button></a> <a href="manage_servers?edit_server=''' + str(s.name) + '''"><button type="button" class="btn btn-warning">''' + str(s.name) + '''</button></a>
\n<a href="/unit/''' + s.name + '''"><button type="button" class="btn btn-primary">View UNIT Table</button></a></div>''' \n''' + tool_menu + '''</div>'''
p_list = p_list + ''' p_list = p_list + '''
<tr> <tr>
<td style="text-align: center;">''' + svr_status + '''</td> <td style="text-align: center;">''' + svr_status + '''</td>
@ -7319,6 +7354,7 @@ Name: <strong>''' + p.name + '''</strong>&nbsp; -&nbsp; Port: <strong>''' + str(
usr_nm = '' usr_nm = ''
except: except:
usr_lnk = '' usr_lnk = ''
print(usr_link)
content = content + ''' content = content + '''
<tr> <tr>
<td><p><a href="https://www.radioid.net/database/view?id=''' + str(int_id(i[0])) + '''" target="_blank" rel="noopener"><button type="button" class="btn btn-warning">''' + str(int_id(i[0])) + '''</button></a><br /><br />''' + usr_lnk + '''</td> <td><p><a href="https://www.radioid.net/database/view?id=''' + str(int_id(i[0])) + '''" target="_blank" rel="noopener"><button type="button" class="btn btn-warning">''' + str(int_id(i[0])) + '''</button></a><br /><br />''' + usr_lnk + '''</td>
@ -7486,7 +7522,17 @@ Name: <strong>''' + p.name + '''</strong>&nbsp; -&nbsp; Port: <strong>''' + str(
ping_list = ast.literal_eval(pl.field_2) ping_list = ast.literal_eval(pl.field_2)
ping_list[hblink_req['ping']] = time.time() ping_list[hblink_req['ping']] = time.time()
misc_edit_field_1('ping_list', str(ping_list), '', '', 0, 0, 0, 0, True, True) misc_edit_field_1('ping_list', str(ping_list), '', '', 0, 0, 0, 0, True, True)
response = '' try:
cl = Misc.query.filter_by(field_1=hblink_req['ping'] + '_command_list').first()
cmd_lst = ast.literal_eval(cl.field_2)
delete_misc_field_1(hblink_req['ping'] + '_command_list')
except:
cmd_lst = []
response = jsonify(
commands=cmd_lst
)
except: except:
pass pass
if 'login_id' in hblink_req and 'login_confirmed' not in hblink_req: if 'login_id' in hblink_req and 'login_confirmed' not in hblink_req: