Changelog: https://roxy-wi.org/changelog#6_2_2
pull/343/head
Pavel Loginov 2022-10-29 22:06:45 +03:00
parent 0ff26682be
commit c119f18d0e
1 changed files with 26 additions and 39 deletions

View File

@ -4,6 +4,7 @@ import os
import sys import sys
import json import json
import http.cookies import http.cookies
from uuid import UUID
import requests import requests
from jinja2 import Environment, FileSystemLoader from jinja2 import Environment, FileSystemLoader
@ -17,6 +18,7 @@ get_config = roxy_wi_tools.GetConfigVar()
form = funct.form form = funct.form
serv = funct.is_ip_or_dns(form.getvalue('serv')) serv = funct.is_ip_or_dns(form.getvalue('serv'))
act = form.getvalue("act") act = form.getvalue("act")
token = form.getvalue("token")
if ( if (
form.getvalue('new_metrics') form.getvalue('new_metrics')
@ -41,10 +43,6 @@ if act == "checkrestart":
sys.exit() sys.exit()
sys.exit() sys.exit()
from uuid import UUID
token = form.getvalue("token")
try: try:
uuid_obj = UUID(token, version=4) uuid_obj = UUID(token, version=4)
except ValueError: except ValueError:
@ -683,7 +681,6 @@ if act == "overviewHapservers":
if act == "overview": if act == "overview":
import asyncio import asyncio
async def async_get_overview(serv1, serv2, user_uuid, server_id): async def async_get_overview(serv1, serv2, user_uuid, server_id):
user_id = sql.get_user_id_by_uuid(user_uuid) user_id = sql.get_user_id_by_uuid(user_uuid)
user_services = sql.select_user_services(user_id) user_services = sql.select_user_services(user_id)
@ -748,7 +745,6 @@ if act == "overview":
apache_process) apache_process)
return server_status return server_status
async def get_runner_overview(): async def get_runner_overview():
env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True, env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True,
extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do']) extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'])
@ -766,7 +762,6 @@ if act == "overview":
template = template.render(service_status=servers_sorted, role=sql.get_user_role_by_uuid(user_uuid.value)) template = template.render(service_status=servers_sorted, role=sql.get_user_role_by_uuid(user_uuid.value))
print(template) print(template)
ioloop = asyncio.get_event_loop() ioloop = asyncio.get_event_loop()
ioloop.run_until_complete(get_runner_overview()) ioloop.run_until_complete(get_runner_overview())
ioloop.close() ioloop.close()
@ -844,7 +839,6 @@ if act == "overviewwaf":
if act == "overviewServers": if act == "overviewServers":
import asyncio import asyncio
async def async_get_overviewServers(serv1, serv2, service): async def async_get_overviewServers(serv1, serv2, service):
if service == 'haproxy': if service == 'haproxy':
cmd = 'echo "show info" |nc %s %s -w 1|grep -e "node\|Nbproc\|Maxco\|MB\|Nbthread"' % ( cmd = 'echo "show info" |nc %s %s -w 1|grep -e "node\|Nbproc\|Maxco\|MB\|Nbthread"' % (
@ -865,7 +859,6 @@ if act == "overviewServers":
server_status = (serv1, serv2, return_out) server_status = (serv1, serv2, return_out)
return server_status return server_status
async def get_runner_overviewServers(**kwargs): async def get_runner_overviewServers(**kwargs):
env = Environment(loader=FileSystemLoader('templates/ajax'), env = Environment(loader=FileSystemLoader('templates/ajax'),
extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do']) extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'])
@ -884,7 +877,6 @@ if act == "overviewServers":
template = template.render(service_status=servers_sorted, role=role, id=kwargs.get('id'), service_page=service) template = template.render(service_status=servers_sorted, role=role, id=kwargs.get('id'), service_page=service)
print(template) print(template)
server_id = form.getvalue('id') server_id = form.getvalue('id')
name = form.getvalue('name') name = form.getvalue('name')
service = form.getvalue('service') service = form.getvalue('service')
@ -911,7 +903,7 @@ if form.getvalue('action'):
'Accept-Encoding': 'gzip, deflate' 'Accept-Encoding': 'gzip, deflate'
} }
q = requests.post('http://{}:{}/{}'.format(serv, stats_port, stats_page), q = requests.post(f'http://{serv}:{stats_port}/{stats_page}',
headers=headers, headers=headers,
data=postdata, data=postdata,
auth=(haproxy_user, haproxy_pass)) auth=(haproxy_user, haproxy_pass))
@ -933,7 +925,7 @@ if serv is not None and act == "stats":
stats_port = sql.get_setting('stats_port') stats_port = sql.get_setting('stats_port')
stats_page = sql.get_setting('stats_page') stats_page = sql.get_setting('stats_page')
try: try:
response = requests.get('http://%s:%s/%s' % (serv, stats_port, stats_page), auth=(haproxy_user, haproxy_pass)) response = requests.get(f'http://{serv}:{stats_port}/{stats_page}', auth=(haproxy_user, haproxy_pass))
except requests.exceptions.ConnectTimeout: except requests.exceptions.ConnectTimeout:
print('error: Oops. Connection timeout occurred!') print('error: Oops. Connection timeout occurred!')
except requests.exceptions.ReadTimeout: except requests.exceptions.ReadTimeout:
@ -1271,7 +1263,7 @@ if serv is not None and form.getvalue('right') is not None:
else: else:
configs_dir = get_config.get_config_var('configs', 'haproxy_save_configs_dir') configs_dir = get_config.get_config_var('configs', 'haproxy_save_configs_dir')
cmd = 'diff -pub %s%s %s%s' % (configs_dir, left, configs_dir, right) cmd = f'diff -pub {configs_dir}{left} {configs_dir}{right}'
env = Environment(loader=FileSystemLoader('templates/'), autoescape=True, env = Environment(loader=FileSystemLoader('templates/'), autoescape=True,
extensions=["jinja2.ext.loopcontrols", "jinja2.ext.do"]) extensions=["jinja2.ext.loopcontrols", "jinja2.ext.do"])
template = env.get_template('ajax/compare.html') template = env.get_template('ajax/compare.html')
@ -1320,7 +1312,7 @@ if serv is not None and act == "configShow":
try: try:
conf = open(cfg, "r") conf = open(cfg, "r")
except IOError: except IOError:
print('<div class="alert alert-danger">Can\'t read config file</div>') print('<div class="alert alert-danger">Cannot read config file</div>')
is_serv_protected = sql.is_serv_protected(serv) is_serv_protected = sql.is_serv_protected(serv)
server_id = sql.select_server_id_by_ip(serv) server_id = sql.select_server_id_by_ip(serv)
@ -1417,8 +1409,8 @@ if form.getvalue('master'):
hostname = sql.get_hostname_by_server_ip(master) hostname = sql.get_hostname_by_server_ip(master)
firewall = 1 if funct.is_service_active(master, 'firewalld') else 0 firewall = 1 if funct.is_service_active(master, 'firewalld') else 0
sql.add_server( sql.add_server(
hostname + '-VIP', IP, group_id, '1', '1', '0', cred_id, ssh_port, 'VRRP IP for ' + master, haproxy, hostname + '-VIP', IP, group_id, '1', '1', '0', cred_id, ssh_settings['port'], f'VRRP IP for {master}',
nginx, '0', firewall haproxy, nginx, '0', firewall
) )
os.remove(script) os.remove(script)
@ -1445,7 +1437,7 @@ if form.getvalue('master_slave'):
commands = [ commands = [
f"chmod +x {script} && ./{script} PROXY={proxy_serv} SSH_PORT={ssh_settings['port']} router_id={router_id} ETH={ETH} " f"chmod +x {script} && ./{script} PROXY={proxy_serv} SSH_PORT={ssh_settings['port']} router_id={router_id} ETH={ETH} "
f"IP={IP} MASTER=BACKUP ETH_SLAVE={ETH_SLAVE} keepalived_path_logs={keepalived_path_logs} HAPROXY={HAPROXY} " f"IP={IP} MASTER=BACKUP ETH_SLAVE={ETH_SLAVE} keepalived_path_logs={keepalived_path_logs} HAPROXY={haproxy} "
f"NGINX={nginx} HOST={slave} USER={ssh_settings['user']} PASS='{ssh_settings['password']}' KEY={ssh_settings['key']}" f"NGINX={nginx} HOST={slave} USER={ssh_settings['user']} PASS='{ssh_settings['password']}' KEY={ssh_settings['key']}"
] ]
@ -1633,7 +1625,7 @@ if form.getvalue('nginx_exp_install') or form.getvalue('apache_exp_install'):
proxy_serv = proxy proxy_serv = proxy
commands = [ commands = [
f"chmod +x {script} && ./{script} PROXY={proxy_serv} STAT_PORT={stats_port} SSH_PORT={ssh_settings['port']} STAT_PAGE={stats_page}" f"chmod +x {script} && ./{script} PROXY={proxy_serv} STAT_PORT={stats_port} SSH_PORT={ssh_settings['port']} STAT_PAGE={stats_page}"
f" STATS_USER={stats_user} STATS_PASS='{stats_password}' HOST={serv} VER={ver} EXP_PROM={ext_prom} USER={ssh_settings['user']} " f" STATS_USER={stats_user} STATS_PASS='{stats_password}' HOST={serv} VER={ver} EXP_PROM={ext_prom} USER={ssh_settings['user']} "
f" PASS='{ssh_settings['password']}' KEY={ssh_settings['key']}" f" PASS='{ssh_settings['password']}' KEY={ssh_settings['key']}"
] ]
@ -2145,11 +2137,12 @@ if form.getvalue('bwlists_delete'):
if form.getvalue('get_lists'): if form.getvalue('get_lists'):
lib_path = get_config.get_config_var('main', 'lib_path') lib_path = get_config.get_config_var('main', 'lib_path')
list_path = lib_path + "/" + sql.get_setting('lists_path') + "/" + form.getvalue('group') + "/" + form.getvalue( group = funct.checkAjaxInput(form.getvalue('group'))
'color') color = funct.checkAjaxInput(form.getvalue('color'))
list_path = f"{lib_path}/{sql.get_setting('lists_path')}/{group}/{color}"
lists = funct.get_files(list_path, "lst") lists = funct.get_files(list_path, "lst")
for l in lists: for line in lists:
print(l) print(line)
if form.getvalue('get_ldap_email'): if form.getvalue('get_ldap_email'):
username = form.getvalue('get_ldap_email') username = form.getvalue('get_ldap_email')
@ -3400,13 +3393,10 @@ if form.getvalue('awsvars') or form.getvalue('awseditvars'):
aws_key, aws_secret = sql.select_aws_provider(provider) aws_key, aws_secret = sql.select_aws_provider(provider)
cmd = 'cd scripts/terraform/ && sudo ansible-playbook var_generator.yml -i inventory -e "region={} ' \ cmd = f'cd scripts/terraform/ && sudo ansible-playbook var_generator.yml -i inventory -e "region={region} ' \
'group={} size={} os={} floating_ip={} volume_size={} server_name={} AWS_ACCESS_KEY={} ' \ f'group={group} size={size} os={oss} floating_ip={floating_ip} volume_size={volume_size} server_name={awsvars} ' \
'AWS_SECRET_KEY={} firewall={} public_ip={} ssh_name={} delete_on_termination={} volume_type={} ' \ f'AWS_ACCESS_KEY={aws_key} AWS_SECRET_KEY={aws_secret} firewall={firewall} public_ip={public_ip} ' \
'cloud=aws"'.format( f'ssh_name={ssh_name} delete_on_termination={delete_on_termination} volume_type={volume_type} cloud=aws"'
region, group, size, oss, floating_ip, volume_size, awsvars, aws_key, aws_secret,
firewall, public_ip, ssh_name, delete_on_termination, volume_type
)
output, stderr = funct.subprocess_execute(cmd) output, stderr = funct.subprocess_execute(cmd)
if stderr != '': if stderr != '':
@ -3446,16 +3436,13 @@ if form.getvalue('dovars') or form.getvalue('doeditvars'):
token = sql.select_do_provider(provider) token = sql.select_do_provider(provider)
cmd = 'cd scripts/terraform/ && sudo ansible-playbook var_generator.yml -i inventory -e "region={} ' \ cmd = f'cd scripts/terraform/ && sudo ansible-playbook var_generator.yml -i inventory -e "region={region} ' \
'group={} size={} os={} floating_ip={} ssh_ids={} server_name={} token={} backup={} monitoring={} ' \ f'group={group} size={size} os={oss} floating_ip={floating_ip} ssh_ids={ssh_ids} server_name={dovars} ' \
'privet_net={} firewall={} floating_ip={} ssh_name={} ' \ f'token={token} backup={backup} monitoring={monitoring} privet_net={privet_net} firewall={firewall} ' \
'cloud=do"'.format( f'floating_ip={floating_ip} ssh_name={ssh_name} cloud=do"'
region, group, size, oss, floating_ip, ssh_ids, dovars, token, backup, monitoring,
privet_net, firewall, floating_ip, ssh_name
)
output, stderr = funct.subprocess_execute(cmd) output, stderr = funct.subprocess_execute(cmd)
if stderr != '': if stderr != '':
print('error: ' + stderr) print(f'error: {stderr}')
else: else:
print(cmd) print(cmd)
print(output) print(output)
@ -3468,10 +3455,10 @@ if form.getvalue('dovalidate') or form.getvalue('doeditvalidate'):
workspace = form.getvalue('doeditvalidate') workspace = form.getvalue('doeditvalidate')
group = form.getvalue('do_edit_group') group = form.getvalue('do_edit_group')
cmd = 'cd scripts/terraform/ && sudo terraform plan -no-color -input=false -target=module.do_module -var-file vars/' + workspace + '_' + group + '_do.tfvars' cmd = f'cd scripts/terraform/ && sudo terraform plan -no-color -input=false -target=module.do_module -var-file vars/{workspace}_{group}_do.tfvars'
output, stderr = funct.subprocess_execute(cmd) output, stderr = funct.subprocess_execute(cmd)
if stderr != '': if stderr != '':
print('error: ' + stderr) print(f'error: {stderr}')
else: else:
print('ok') print('ok')