haproxy-wi/app/options.py

1666 lines
61 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import sys
import http.cookies
from uuid import UUID
from jinja2 import Environment, FileSystemLoader
import modules.db.sql as sql
import modules.server.ssh as ssh_mod
import modules.common.common as common
import modules.config.add as add_mod
import modules.config.config as config_mod
import modules.roxywi.common as roxywi_common
import modules.roxy_wi_tools as roxy_wi_tools
import modules.server.server as server_mod
import modules.service.common as service_common
import modules.service.installation as service_mod
get_config = roxy_wi_tools.GetConfigVar()
time_zone = sql.get_setting('time_zone')
get_date = roxy_wi_tools.GetDate(time_zone)
form = common.form
serv = common.is_ip_or_dns(form.getvalue('serv'))
service = common.checkAjaxInput(form.getvalue('service'))
act = form.getvalue("act")
token = form.getvalue("token")
if any((
form.getvalue('new_metrics'), form.getvalue('new_http_metrics'), form.getvalue('new_waf_metrics'), form.getvalue('new_nginx_metrics'),
form.getvalue('new_apache_metrics'), form.getvalue('metrics_hapwi_ram'), form.getvalue('metrics_hapwi_cpu'), form.getvalue('getoption'),
form.getvalue('getsavedserver'), form.getvalue('smon_history_check'))
):
print('Content-type: application/json\n')
else:
print('Content-type: text/html\n')
if act == "checkrestart":
servers = roxywi_common.get_dick_permit(ip=serv)
for server in servers:
if server != "":
print("ok")
sys.exit()
sys.exit()
try:
uuid_obj = UUID(token, version=4)
except ValueError:
print('error: Your token is not valid')
sys.exit()
except Exception:
print('error: There is no token')
sys.exit()
if not sql.check_token_exists(token):
print('error: Your token has been expired')
sys.exit()
if form.getvalue('checkSshConnect') is not None and serv is not None:
try:
print(server_mod.ssh_command(serv, ["ls -1t"]))
except Exception as e:
print(e)
if form.getvalue('getcerts') is not None and serv is not None:
add_mod.get_ssl_certs(serv)
if form.getvalue('getcert') is not None and serv is not None:
cert_id = common.checkAjaxInput(form.getvalue('getcert'))
add_mod.get_ssl_cert(serv, cert_id)
if form.getvalue('getcert_raw') is not None and serv is not None:
cert_id = common.checkAjaxInput(form.getvalue('getcert_raw'))
add_mod.get_ssl_raw_cert(serv, cert_id)
if form.getvalue('delcert') is not None and serv is not None:
cert_id = common.checkAjaxInput(form.getvalue('delcert'))
add_mod.del_ssl_cert(serv, cert_id)
if serv and form.getvalue('ssl_cert'):
ssl_name = common.checkAjaxInput(form.getvalue('ssl_name'))
ssl_cont = form.getvalue('ssl_cert')
add_mod.upload_ssl_cert(serv, ssl_name, ssl_cont)
if form.getvalue('backend') is not None:
import modules.config.runtime as runtime
runtime.show_backends(serv)
if form.getvalue('ip_select') is not None:
import modules.config.runtime as runtime
runtime.show_backends(serv)
if form.getvalue('ipbackend') is not None and form.getvalue('backend_server') is None:
import modules.config.runtime as runtime
runtime.show_frontend_backend()
if form.getvalue('ipbackend') is not None and form.getvalue('backend_server') is not None:
import modules.config.runtime as runtime
runtime.show_server()
if form.getvalue('backend_ip') is not None:
import modules.config.runtime as runtime
runtime.change_ip_and_port()
if form.getvalue('maxconn_select') is not None:
import modules.config.runtime as runtime
serv = common.checkAjaxInput(form.getvalue('maxconn_select'))
runtime.get_backends_from_config(serv, backends='frontend')
if form.getvalue('maxconn_global') is not None:
import modules.config.runtime as runtime
runtime.change_maxconn_global()
if form.getvalue('maxconn_frontend') is not None:
import modules.config.runtime as runtime
runtime.change_maxconn_frontend()
if form.getvalue('maxconn_backend') is not None:
import modules.config.runtime as runtime
runtime.change_maxconn_backend()
if form.getvalue('table_serv_select') is not None:
import modules.config.runtime as runtime
print(runtime.get_all_stick_table())
if form.getvalue('table_select') is not None:
import modules.config.runtime as runtime
runtime.table_select()
if form.getvalue('ip_for_delete') is not None:
import modules.config.runtime as runtime
runtime.delete_ip_from_stick_table()
if form.getvalue('table_for_clear') is not None:
import modules.config.runtime as runtime
runtime.clear_stick_table()
if form.getvalue('list_serv_select') is not None:
import modules.config.runtime as runtime
runtime.list_of_lists()
if form.getvalue('list_select_id') is not None:
import modules.config.runtime as runtime
runtime.show_lists()
if form.getvalue('list_id_for_delete') is not None:
import modules.config.runtime as runtime
runtime.delete_ip_from_list()
if form.getvalue('list_ip_for_add') is not None:
import modules.config.runtime as runtime
runtime.add_ip_to_list()
if form.getvalue('sessions_select') is not None:
import modules.config.runtime as runtime
runtime.select_session()
if form.getvalue('sessions_select_show') is not None:
import modules.config.runtime as runtime
runtime.show_session()
if form.getvalue('session_delete_id') is not None:
import modules.config.runtime as runtime
runtime.delete_session()
if form.getvalue("change_pos") is not None:
pos = common.checkAjaxInput(form.getvalue('change_pos'))
server_id = common.checkAjaxInput(form.getvalue('pos_server_id'))
sql.update_server_pos(pos, server_id)
if form.getvalue('show_ip') is not None and serv is not None:
commands = ['sudo hostname -i | tr " " "\n"|grep -v "%"']
server_mod.ssh_command(serv, commands, ip="1")
if form.getvalue('showif'):
commands = ["sudo ip link|grep 'UP' |grep -v 'lo'| awk '{print $2}' |awk -F':' '{print $1}'"]
server_mod.ssh_command(serv, commands, ip="1")
if form.getvalue('action_hap') is not None and serv is not None:
import modules.service.action as service_action
action = form.getvalue('action_hap')
service_action.action_haproxy(serv, action)
if form.getvalue('action_nginx') is not None and serv is not None:
import modules.service.action as service_action
action = form.getvalue('action_nginx')
service_action.action_nginx(serv, action)
if form.getvalue('action_keepalived') is not None and serv is not None:
import modules.service.action as service_action
action = form.getvalue('action_keepalived')
service_action.action_keepalived(serv, action)
if form.getvalue('action_waf') is not None and serv is not None:
import modules.service.action as service_action
action = form.getvalue('action_waf')
service_action.action_haproxy_waf(serv, action)
if form.getvalue('action_waf_nginx') is not None and serv is not None:
import modules.service.action as service_action
action = form.getvalue('action_waf_nginx')
service_action.action_nginx_waf(serv, action)
if form.getvalue('action_apache') is not None and serv is not None:
import modules.service.action as service_action
action = form.getvalue('action_apache')
service_action.action_apache(serv, action)
if form.getvalue('action_service') is not None:
import modules.roxywi.roxy as roxy
action = common.checkAjaxInput(form.getvalue('action_service'))
roxy.action_service(action, serv)
if act == "overviewHapserverBackends":
service_common.overview_backends(serv, service)
if form.getvalue('show_userlists'):
add_mod.show_userlist(serv)
if act == "overviewHapservers":
service_common.get_overview_last_edit(serv, service)
if act == "overview":
import modules.roxywi.overview as roxy_overview
roxy_overview.show_overview(serv)
if act == "overviewwaf":
import modules.roxywi.waf as roxy_waf
waf_service = service
serv = common.checkAjaxInput(serv)
roxy_waf.waf_overview(serv, waf_service)
if act == "overviewServers":
server_id = common.checkAjaxInput(form.getvalue('id'))
name = common.checkAjaxInput(form.getvalue('name'))
service_common.overview_service(serv, server_id, name, service)
if act == "overviewServices":
import modules.roxywi.overview as roxy_overview
roxy_overview.show_services_overview()
if form.getvalue('action'):
import modules.service.haproxy as service_haproxy
service_haproxy.stat_page_action(serv)
if serv is not None and act == "stats":
service_common.get_stat_page(serv, service)
if serv is not None and form.getvalue('show_log') is not None:
import modules.roxywi.logs as roxywi_logs
rows = form.getvalue('show_log')
waf = form.getvalue('waf')
grep = form.getvalue('grep')
hour = form.getvalue('hour')
minut = form.getvalue('minut')
hour1 = form.getvalue('hour1')
minut1 = form.getvalue('minut1')
out = roxywi_logs.show_roxy_log(serv, rows=rows, waf=waf, grep=grep, hour=hour, minut=minut, hour1=hour1,
minut1=minut1, service=service)
print(out)
if serv is not None and form.getvalue('rows1') is not None:
import modules.roxywi.logs as roxywi_logs
rows = form.getvalue('rows1')
grep = form.getvalue('grep')
hour = form.getvalue('hour')
minut = form.getvalue('minut')
hour1 = form.getvalue('hour1')
minut1 = form.getvalue('minut1')
out = roxywi_logs.show_roxy_log(serv, rows=rows, waf='0', grep=grep, hour=hour, minut=minut, hour1=hour1,
minut1=minut1, service='apache_internal')
print(out)
if form.getvalue('viewlogs') is not None:
import modules.roxywi.logs as roxywi_logs
viewlog = form.getvalue('viewlogs')
rows = form.getvalue('rows')
grep = form.getvalue('grep')
hour = form.getvalue('hour')
minut = form.getvalue('minut')
hour1 = form.getvalue('hour1')
minut1 = form.getvalue('minut1')
if roxywi_common.check_user_group():
out = roxywi_logs.show_roxy_log(serv=viewlog, rows=rows, waf='0', grep=grep, hour=hour, minut=minut, hour1=hour1,
minut1=minut1, service='internal')
print(out)
if serv is not None and act == "showMap":
import modules.service.haproxy as service_haproxy
service_haproxy.show_map(serv)
if form.getvalue('servaction') is not None:
import modules.service.haproxy as service_haproxy
service_haproxy.runtime_command(serv)
if act == "showCompareConfigs":
config_mod.show_compare_config(serv)
if serv is not None and form.getvalue('right') is not None:
config_mod.compare_config()
if serv is not None and act == "configShow":
config_mod.show_config(serv)
if act == 'configShowFiles':
config_mod.show_config_files(serv)
if act == 'showRemoteLogFiles':
log_path = sql.get_setting(f'{service}_path_logs')
return_files = server_mod.get_remote_files(serv, log_path, 'log')
if 'error: ' in return_files:
print(return_files)
sys.exit()
lang = roxywi_common.get_user_lang()
env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
template = env.get_template('ajax/show_log_files.html')
template = template.render(serv=serv, return_files=return_files, path_dir=log_path, lang=lang)
print(template)
if form.getvalue('master'):
master = form.getvalue('master')
eth = form.getvalue('interface')
eth_slave = form.getvalue('slave_interface')
vrrp_ip = form.getvalue('vrrpip')
syn_flood = form.getvalue('syn_flood')
virt_server = int(form.getvalue('virt_server'))
return_to_master = form.getvalue('return_to_master')
haproxy = form.getvalue('hap')
nginx = form.getvalue('nginx')
router_id = form.getvalue('router_id')
try:
service_mod.keepalived_master_install(master, eth, eth_slave, vrrp_ip, virt_server, syn_flood, return_to_master,
haproxy, nginx, router_id)
except Exception as e:
print(f'{e}')
if form.getvalue('master_slave'):
master = form.getvalue('master_slave')
slave = form.getvalue('slave')
eth = form.getvalue('interface')
eth_slave = form.getvalue('slave_interface')
vrrp_ip = form.getvalue('vrrpip')
syn_flood = form.getvalue('syn_flood')
haproxy = form.getvalue('hap')
nginx = form.getvalue('nginx')
router_id = form.getvalue('router_id')
try:
service_mod.keepalived_slave_install(master, slave, eth, eth_slave, vrrp_ip, syn_flood, haproxy, nginx, router_id)
except Exception as e:
print(f'{e}')
if form.getvalue('masteradd'):
try:
service_mod.keepalived_masteradd()
except Exception as e:
print(f'{e}')
if form.getvalue('masteradd_slave'):
try:
service_mod.keepalived_slaveadd()
except Exception as e:
print(f'{e}')
if form.getvalue('master_slave_hap'):
master = form.getvalue('master_slave_hap')
slave = form.getvalue('slave')
server = form.getvalue('server')
docker = form.getvalue('docker')
if server == 'master':
try:
service_mod.install_haproxy(master, server=server, docker=docker)
except Exception as e:
print(f'{e}')
elif server == 'slave':
try:
service_mod.install_haproxy(slave, server=server, docker=docker)
except Exception as e:
print(f'{e}')
if form.getvalue('master_slave_nginx'):
master = form.getvalue('master_slave_nginx')
slave = form.getvalue('slave')
server = form.getvalue('server')
docker = form.getvalue('docker')
if server == 'master':
try:
service_mod.install_service(master, 'nginx', docker, server=server)
except Exception as e:
print(f'{e}')
elif server == 'slave':
try:
service_mod.install_service(slave, 'nginx', docker, server=server)
except Exception as e:
print(f'{e}')
if form.getvalue('install_grafana'):
try:
service_mod.grafana_install()
except Exception as e:
print(f'{e}')
if form.getvalue('haproxy_exp_install'):
import modules.service.exporter_installation as exp_installation
exp_installation.haproxy_exp_installation()
if form.getvalue('nginx_exp_install') or form.getvalue('apache_exp_install'):
import modules.service.exporter_installation as exp_installation
exp_installation.nginx_apache_exp_installation()
if form.getvalue('node_exp_install'):
import modules.service.exporter_installation as exp_installation
service = 'node'
exp_installation.node_keepalived_exp_installation(service)
if form.getvalue('keepalived_exp_install'):
import modules.service.exporter_installation as exp_installation
service = 'keepalived'
exp_installation.node_keepalived_exp_installation(service)
if form.getvalue('backup') or form.getvalue('deljob') or form.getvalue('backupupdate'):
import modules.service.backup as backup_mod
serv = common.is_ip_or_dns(form.getvalue('server'))
rpath = common.checkAjaxInput(form.getvalue('rpath'))
time = common.checkAjaxInput(form.getvalue('time'))
backup_type = common.checkAjaxInput(form.getvalue('type'))
rserver = common.checkAjaxInput(form.getvalue('rserver'))
cred = int(form.getvalue('cred'))
deljob = common.checkAjaxInput(form.getvalue('deljob'))
update = common.checkAjaxInput(form.getvalue('backupupdate'))
description = common.checkAjaxInput(form.getvalue('description'))
backup_mod.backup(serv, rpath, time, backup_type, rserver, cred, deljob, update, description)
if form.getvalue('git_backup'):
server_id = form.getvalue('server')
service_id = form.getvalue('git_service')
git_init = form.getvalue('git_init')
repo = form.getvalue('git_repo')
branch = form.getvalue('git_branch')
period = form.getvalue('time')
cred = form.getvalue('cred')
deljob = form.getvalue('git_deljob')
description = form.getvalue('description')
servers = roxywi_common.get_dick_permit()
proxy = sql.get_setting('proxy')
services = sql.select_services()
server_ip = sql.select_server_ip_by_id(server_id)
service_name = sql.select_service_name_by_id(service_id).lower()
service_config_dir = sql.get_setting(service_name + '_dir')
script = 'git_backup.sh'
proxy_serv = ''
ssh_settings = ssh_mod.return_ssh_keys_path('localhost', id=int(cred))
os.system(f"cp scripts/{script} .")
if proxy is not None and proxy != '' and proxy != 'None':
proxy_serv = proxy
if repo is None or git_init == '0':
repo = ''
if branch is None or branch == '0':
branch = 'main'
commands = [
f"chmod +x {script} && ./{script} HOST={server_ip} DELJOB={deljob} SERVICE={service_name} INIT={git_init} "
f"SSH_PORT={ssh_settings['port']} PERIOD={period} REPO={repo} BRANCH={branch} CONFIG_DIR={service_config_dir} "
f"PROXY={proxy_serv} USER={ssh_settings['user']} KEY={ssh_settings['key']}"
]
output, error = server_mod.subprocess_execute(commands[0])
for line in output:
if any(s in line for s in ("Traceback", "FAILED")):
try:
print('error: ' + line)
break
except Exception:
print('error: ' + output)
break
else:
if deljob == '0':
if sql.insert_new_git(
server_id=server_id, service_id=service_id, repo=repo, branch=branch,
period=period, cred=cred, description=description
):
gits = sql.select_gits(server_id=server_id, service_id=service_id)
sshs = sql.select_ssh()
lang = roxywi_common.get_user_lang()
env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
template = env.get_template('new_git.html')
template = template.render(gits=gits, sshs=sshs, servers=servers, services=services, new_add=1, lang=lang)
print(template)
print('success: Git job has been created')
roxywi_common.logging(
server_ip, ' A new git job has been created', roxywi=1, login=1, keep_history=1, service=service_name
)
else:
if sql.delete_git(form.getvalue('git_backup')):
print('Ok')
os.remove(script)
if form.getvalue('install_service'):
server_ip = common.is_ip_or_dns(form.getvalue('install_service'))
docker = common.checkAjaxInput(form.getvalue('docker'))
if service in ('nginx', 'apache'):
try:
service_mod.install_service(server_ip, service, docker)
except Exception as e:
print(e)
else:
print('warning: wrong service')
if form.getvalue('haproxyaddserv'):
try:
service_mod.install_haproxy(form.getvalue('haproxyaddserv'), syn_flood=form.getvalue('syn_flood'),
hapver=form.getvalue('hapver'), docker=form.getvalue('docker'))
except Exception as e:
print(e)
if form.getvalue('installwaf'):
if service == 'haproxy':
try:
service_mod.waf_install(common.checkAjaxInput(form.getvalue('installwaf')))
except Exception as e:
print(e)
else:
try:
service_mod.waf_nginx_install(common.checkAjaxInput(form.getvalue('installwaf')))
except Exception as e:
print(e)
if form.getvalue('geoip_install'):
try:
service_mod.geoip_installation()
except Exception as e:
print(e)
if form.getvalue('update_roxy_wi'):
import modules.roxywi.roxy as roxy
services = ['roxy-wi-checker',
'roxy-wi',
'roxy-wi-keep_alive',
'roxy-wi-smon',
'roxy-wi-metrics',
'roxy-wi-portscanner',
'roxy-wi-socket',
'roxy-wi-prometheus-exporter']
if service not in services:
print(f'error: {service} is not part of Roxy-WI')
sys.exit()
roxy.update_roxy_wi(service)
if form.getvalue('metrics_waf'):
metrics_waf = common.checkAjaxInput(form.getvalue('metrics_waf'))
sql.update_waf_metrics_enable(metrics_waf, form.getvalue('enable'))
if form.getvalue('table_metrics'):
roxywi_common.check_user_group()
lang = roxywi_common.get_user_lang()
group_id = roxywi_common.get_user_group(id=1)
if service in ('nginx', 'apache'):
metrics = sql.select_service_table_metrics(service, group_id)
else:
metrics = sql.select_table_metrics(group_id)
env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
template = env.get_template('ajax/table_metrics.html')
template = template.render(table_stat=metrics, service=service, lang=lang)
print(template)
if form.getvalue('metrics_hapwi_ram'):
import modules.roxywi.metrics as metric
metrics_type = common.checkAjaxInput(form.getvalue('ip'))
metric.show_ram_metrics(metrics_type)
if form.getvalue('metrics_hapwi_cpu'):
import modules.roxywi.metrics as metric
metrics_type = common.checkAjaxInput(form.getvalue('ip'))
metric.show_cpu_metrics(metrics_type)
if form.getvalue('new_metrics'):
import modules.roxywi.metrics as metric
server_ip = common.is_ip_or_dns(form.getvalue('server'))
hostname = sql.get_hostname_by_server_ip(server_ip)
time_range = common.checkAjaxInput(form.getvalue('time_range'))
metric.haproxy_metrics(server_ip, hostname, time_range)
if form.getvalue('new_http_metrics'):
import modules.roxywi.metrics as metric
server_ip = common.is_ip_or_dns(form.getvalue('server'))
hostname = sql.get_hostname_by_server_ip(server_ip)
time_range = common.checkAjaxInput(form.getvalue('time_range'))
metric.haproxy_http_metrics(server_ip, hostname, time_range)
if any((form.getvalue('new_nginx_metrics'), form.getvalue('new_apache_metrics'), form.getvalue('new_waf_metrics'))):
import modules.roxywi.metrics as metric
server_ip = common.is_ip_or_dns(form.getvalue('server'))
hostname = sql.get_hostname_by_server_ip(server_ip)
time_range = common.checkAjaxInput(form.getvalue('time_range'))
service = ''
if form.getvalue('new_nginx_metrics'):
service = 'nginx'
elif form.getvalue('new_apache_metrics'):
service = 'apache'
elif form.getvalue('new_waf_metrics'):
service = 'waf'
metric.service_metrics(server_ip, hostname, service, time_range)
if form.getvalue('get_hap_v'):
print(service_common.check_haproxy_version(serv))
if form.getvalue('get_service_v'):
service = common.checkAjaxInput(form.getvalue('get_service_v'))
server_ip = common.is_ip_or_dns(serv)
service_common.show_service_version(server_ip, service)
if form.getvalue('get_keepalived_v'):
cmd = ["sudo /usr/sbin/keepalived -v 2>&1|head -1|awk '{print $2}'"]
print(server_mod.ssh_command(serv, cmd))
if form.getvalue('get_exporter_v'):
print(service_common.get_exp_version(serv, form.getvalue('get_exporter_v')))
if form.getvalue('bwlists'):
color = common.checkAjaxInput(form.getvalue('color'))
group = common.checkAjaxInput(form.getvalue('group'))
bwlists = common.checkAjaxInput(form.getvalue('bwlists'))
add_mod.get_bwlist(color, group, bwlists)
if form.getvalue('bwlists_create'):
list_name = common.checkAjaxInput(form.getvalue('bwlists_create'))
color = common.checkAjaxInput(form.getvalue('color'))
group = common.checkAjaxInput(form.getvalue('group'))
add_mod.create_bwlist(serv, list_name, color, group)
if form.getvalue('bwlists_save'):
color = common.checkAjaxInput(form.getvalue('color'))
group = common.checkAjaxInput(form.getvalue('group'))
bwlists_save = common.checkAjaxInput(form.getvalue('bwlists_save'))
list_con = form.getvalue('bwlists_content')
action = common.checkAjaxInput(form.getvalue('bwlists_restart'))
add_mod.save_bwlist(bwlists_save, list_con, color, group, serv, action)
if form.getvalue('bwlists_delete'):
color = common.checkAjaxInput(form.getvalue('color'))
list_name = common.checkAjaxInput(form.getvalue('bwlists_delete'))
group = common.checkAjaxInput( form.getvalue('group'))
add_mod.delete_bwlist(list_name, color, group, serv)
if form.getvalue('get_lists'):
group = common.checkAjaxInput(form.getvalue('group'))
color = common.checkAjaxInput(form.getvalue('color'))
add_mod.get_bwlists_for_autocomplete(color, group)
if form.getvalue('get_ldap_email'):
import modules.roxywi.user as roxywi_user
roxywi_user.get_ldap_email()
if form.getvalue('change_waf_mode'):
import modules.roxywi.waf as roxy_waf
roxy_waf.change_waf_mode()
error_mess = roxywi_common.return_error_message()
if form.getvalue('newuser') is not None:
import modules.roxywi.user as roxywi_user
email = common.checkAjaxInput(form.getvalue('newemail'))
password = common.checkAjaxInput(form.getvalue('newpassword'))
role = common.checkAjaxInput(form.getvalue('newrole'))
new_user = common.checkAjaxInput(form.getvalue('newusername'))
page = common.checkAjaxInput(form.getvalue('page'))
activeuser = common.checkAjaxInput(form.getvalue('activeuser'))
group = common.checkAjaxInput(form.getvalue('newgroupuser'))
lang = roxywi_common.get_user_lang()
if roxywi_user.create_user(new_user, email, password, role, activeuser, group):
env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
template = env.get_template('ajax/new_user.html')
template = template.render(users=sql.select_users(user=new_user),
groups=sql.select_groups(),
page=page,
roles=sql.select_roles(),
adding=1,
lang=lang)
print(template)
if form.getvalue('userdel') is not None:
import modules.roxywi.user as roxywi_user
try:
roxywi_user.delete_user()
except Exception as e:
print(e)
if form.getvalue('updateuser') is not None:
import modules.roxywi.user as roxywi_user
roxywi_user.update_user()
if form.getvalue('updatepassowrd') is not None:
import modules.roxywi.user as roxywi_user
roxywi_user.update_user_password()
if form.getvalue('newserver') is not None:
hostname = common.checkAjaxInput(form.getvalue('servername'))
ip = common.is_ip_or_dns(form.getvalue('newip'))
group = common.checkAjaxInput(form.getvalue('newservergroup'))
typeip = common.checkAjaxInput(form.getvalue('typeip'))
haproxy = common.checkAjaxInput(form.getvalue('haproxy'))
nginx = common.checkAjaxInput(form.getvalue('nginx'))
apache = common.checkAjaxInput(form.getvalue('apache'))
firewall = common.checkAjaxInput(form.getvalue('firewall'))
enable = common.checkAjaxInput(form.getvalue('enable'))
master = common.checkAjaxInput(form.getvalue('slave'))
cred = common.checkAjaxInput(form.getvalue('cred'))
page = common.checkAjaxInput(form.getvalue('page'))
page = page.split("#")[0]
port = common.checkAjaxInput(form.getvalue('newport'))
desc = common.checkAjaxInput(form.getvalue('desc'))
lang = roxywi_common.get_user_lang()
if ip == '':
print('error: IP or DNS name is not valid')
sys.exit()
try:
if server_mod.create_server(hostname, ip, group, typeip, enable, master, cred, port, desc, haproxy, nginx, apache, firewall):
try:
user_subscription = roxywi_common.return_user_status()
except Exception as e:
user_subscription = roxywi_common.return_unsubscribed_user_status()
roxywi_common.logging('Roxy-WI server', f'Cannot get a user plan: {e}', roxywi=1)
env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
template = env.get_template('ajax/new_server.html')
template = template.render(groups=sql.select_groups(), servers=sql.select_servers(server=ip),
masters=sql.select_servers(get_master_servers=1), sshs=sql.select_ssh(group=group),
page=page, user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'],
adding=1,lang=lang)
print(template)
roxywi_common.logging(ip, f'A new server {hostname} has been created', roxywi=1, login=1, keep_history=1, service='server')
except Exception as e:
print(f'error: {e}')
if act == 'after_adding':
hostname = common.checkAjaxInput(form.getvalue('servername'))
ip = common.is_ip_or_dns(form.getvalue('newip'))
group = common.checkAjaxInput(form.getvalue('newservergroup'))
scan_server = common.checkAjaxInput(form.getvalue('scan_server'))
try:
server_mod.update_server_after_creating(hostname, ip, scan_server)
except Exception as e:
print(e)
if form.getvalue('updatehapwiserver') is not None:
hapwi_id = form.getvalue('updatehapwiserver')
active = form.getvalue('active')
name = form.getvalue('name')
alert = form.getvalue('alert_en')
metrics = form.getvalue('metrics')
service = form.getvalue('service_name')
sql.update_hapwi_server(hapwi_id, alert, metrics, active, service)
server_ip = sql.select_server_ip_by_id(hapwi_id)
roxywi_common.logging(server_ip, f'The server {name} has been updated ', roxywi=1, login=1, keep_history=1, service=service)
if form.getvalue('updateserver') is not None:
name = form.getvalue('updateserver')
group = form.getvalue('servergroup')
typeip = form.getvalue('typeip')
firewall = form.getvalue('firewall')
enable = form.getvalue('enable')
master = form.getvalue('slave')
serv_id = form.getvalue('id')
cred = form.getvalue('cred')
port = form.getvalue('port')
protected = form.getvalue('protected')
desc = form.getvalue('desc')
if name is None or port is None:
print(error_mess)
else:
sql.update_server(name, group, typeip, enable, master, serv_id, cred, port, desc, firewall, protected)
roxywi_common.logging(f'the server {name}', ' has been updated ', roxywi=1, login=1)
server_ip = sql.select_server_ip_by_id(serv_id)
roxywi_common.logging(server_ip, f'The server {name} has been update', roxywi=1, login=1, keep_history=1, service='server')
if form.getvalue('serverdel') is not None:
server_id = common.checkAjaxInput(form.getvalue('serverdel'))
server_mod.delete_server(server_id)
if form.getvalue('newgroup') is not None:
newgroup = common.checkAjaxInput(form.getvalue('groupname'))
desc = common.checkAjaxInput(form.getvalue('newdesc'))
if newgroup is None:
print(error_mess)
else:
try:
if sql.add_group(newgroup, desc):
env = Environment(loader=FileSystemLoader('templates/ajax/'), autoescape=True)
template = env.get_template('/new_group.html')
output_from_parsed_template = template.render(groups=sql.select_groups(group=newgroup))
print(output_from_parsed_template)
roxywi_common.logging('Roxy-WI server', f'A new group {newgroup} has been created', roxywi=1, login=1)
except Exception as e:
print(e)
if form.getvalue('groupdel') is not None:
import modules.roxywi.group as group_mod
group_id = common.checkAjaxInput(form.getvalue('groupdel'))
group_mod.delete_group(group_id)
if form.getvalue('updategroup') is not None:
import modules.roxywi.group as group_mod
name = common.checkAjaxInput(form.getvalue('updategroup'))
desc = common.checkAjaxInput(form.getvalue('descript'))
group_id = common.checkAjaxInput(form.getvalue('id'))
group_mod.update_group(group_id, name, desc)
if form.getvalue('new_ssh'):
ssh_mod.create_ssh_cred()
if form.getvalue('sshdel') is not None:
ssh_mod.delete_ssh_key()
if form.getvalue('updatessh'):
ssh_mod.update_ssh_key()
if form.getvalue('ssh_cert'):
user_group = roxywi_common.get_user_group()
name = common.checkAjaxInput(form.getvalue('name'))
key = form.getvalue('ssh_cert')
try:
ssh_mod.upload_ssh_key(name, user_group, key)
except Exception as e:
print(e)
if form.getvalue('new_receiver'):
import modules.alerting.alerting as alerting
token = common.checkAjaxInput(form.getvalue('new_receiver'))
receiver_name = common.checkAjaxInput(form.getvalue('receiver_name'))
channel = common.checkAjaxInput(form.getvalue('chanel'))
group = common.checkAjaxInput(form.getvalue('group_receiver'))
page = common.checkAjaxInput(form.getvalue('page'))
page = page.split("#")[0]
alerting.add_receiver_channel(receiver_name, token, channel, group, page)
if form.getvalue('receiver_del') is not None:
import modules.alerting.alerting as alerting
channel_id = common.checkAjaxInput(form.getvalue('receiver_del'))
receiver_name = common.checkAjaxInput(form.getvalue('receiver_name'))
alerting.delete_receiver_channel(channel_id, receiver_name)
if form.getvalue('update_receiver_token') is not None:
import modules.alerting.alerting as alerting
receiver_name = common.checkAjaxInput(form.getvalue('receiver_name'))
token = common.checkAjaxInput(form.getvalue('update_receiver_token'))
channel = common.checkAjaxInput(form.getvalue('update_receiver_channel'))
group = common.checkAjaxInput(form.getvalue('update_receiver_group'))
user_id = common.checkAjaxInput(form.getvalue('id'))
alerting.update_receiver_channel(receiver_name, token, channel, group, user_id)
if form.getvalue('updatesettings') is not None:
settings = common.checkAjaxInput(form.getvalue('updatesettings'))
val = common.checkAjaxInput(form.getvalue('val'))
user_group = roxywi_common.get_user_group(id=1)
if sql.update_setting(settings, val, user_group):
roxywi_common.logging('Roxy-WI server', f'The {settings} setting has been changed to: {val}', roxywi=1, login=1)
print("Ok")
if form.getvalue('getuserservices'):
import modules.roxywi.user as roxy_user
roxy_user.get_user_services()
if act == 'show_user_group_and_role':
import modules.roxywi.user as roxy_user
roxy_user.show_user_groups_and_roles()
if act == 'save_user_group_and_role':
import modules.roxywi.user as roxy_user
roxy_user.save_user_group_and_role()
if form.getvalue('changeUserServicesId') is not None:
import modules.roxywi.user as roxy_user
roxy_user.change_user_services()
if form.getvalue('changeUserCurrentGroupId') is not None:
import modules.roxywi.user as roxy_user
roxy_user.change_user_active_group()
if form.getvalue('getcurrentusergroup') is not None:
import modules.roxywi.user as roxy_user
cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
user_id = cookie.get('uuid')
group = cookie.get('group')
roxy_user.get_user_active_group(user_id, group)
if form.getvalue('newsmonname') is not None:
import modules.tools.smon as smon_mod
smon_mod.create_smon()
if form.getvalue('smondel') is not None:
import modules.tools.smon as smon_mod
smon_mod.delete_smon()
if form.getvalue('showsmon') is not None:
import modules.tools.smon as smon_mod
smon_mod.show_smon()
if form.getvalue('updateSmonName') is not None:
import modules.tools.smon as smon_mod
smon_mod.update_smon()
if form.getvalue('smon_history_check') is not None:
import modules.tools.smon as smon_mod
server_id = int(form.getvalue('server_id'))
check_id = int(form.getvalue('check_id'))
smon_mod.history_metrics(server_id, check_id)
if form.getvalue('showBytes') is not None:
import modules.roxywi.overview as roxywi_overview
server_ip = common.is_ip_or_dns(form.getvalue('showBytes'))
roxywi_overview.show_haproxy_binout(server_ip)
if form.getvalue('nginxConnections'):
import modules.roxywi.overview as roxywi_overview
server_ip = common.is_ip_or_dns(form.getvalue('nginxConnections'))
roxywi_overview.show_nginx_connections(server_ip)
if form.getvalue('apachekBytes'):
import modules.roxywi.overview as roxywi_overview
server_ip = common.is_ip_or_dns(form.getvalue('apachekBytes'))
roxywi_overview.show_apache_bytes(server_ip)
if form.getvalue('keepalivedBecameMaster'):
import modules.roxywi.overview as roxywi_overview
server_ip = common.is_ip_or_dns(form.getvalue('keepalivedBecameMaster'))
roxywi_overview.keepalived_became_master(server_ip)
if form.getvalue('waf_rule_id'):
import modules.roxywi.waf as roxy_waf
roxy_waf.switch_waf_rule(serv)
if form.getvalue('new_waf_rule'):
import modules.roxywi.waf as roxy_waf
roxy_waf.create_waf_rule(serv)
if form.getvalue('lets_domain'):
lets_domain = common.checkAjaxInput(form.getvalue('lets_domain'))
lets_email = common.checkAjaxInput(form.getvalue('lets_email'))
add_mod.get_le_cert(serv, lets_domain, lets_email)
if form.getvalue('uploadovpn'):
name = common.checkAjaxInput(form.getvalue('ovpnname'))
ovpn_file = f"{os.path.dirname('/tmp/')}/{name}.ovpn"
try:
with open(ovpn_file, "w") as conf:
conf.write(form.getvalue('uploadovpn'))
except IOError as e:
print(str(e))
print('error: Cannot save ovpn file')
else:
print('success: ovpn file has been saved </div>')
try:
cmd = 'sudo openvpn3 config-import --config %s --persistent' % ovpn_file
server_mod.subprocess_execute(cmd)
except IOError as e:
roxywi_common.logging('Roxy-WI server', e.args[0], roxywi=1)
try:
cmd = 'sudo cp %s /etc/openvpn3/%s.conf' % (ovpn_file, name)
server_mod.subprocess_execute(cmd)
except IOError as e:
roxywi_common.logging('Roxy-WI server', e.args[0], roxywi=1)
roxywi_common.logging("Roxy-WI server", f" has been uploaded a new ovpn file {ovpn_file}", roxywi=1, login=1)
if form.getvalue('openvpndel') is not None:
openvpndel = common.checkAjaxInput(form.getvalue('openvpndel'))
cmd = f'sudo openvpn3 config-remove --config /tmp/{openvpndel}.ovpn --force'
try:
server_mod.subprocess_execute(cmd)
print("Ok")
roxywi_common.logging(openvpndel, ' has deleted the ovpn file ', roxywi=1, login=1)
except IOError as e:
print(e.args[0])
roxywi_common.logging('Roxy-WI server', e.args[0], roxywi=1)
if form.getvalue('actionvpn') is not None:
openvpn = common.checkAjaxInput(form.getvalue('openvpnprofile'))
action = common.checkAjaxInput(form.getvalue('actionvpn'))
if action == 'start':
cmd = f'sudo openvpn3 session-start --config /tmp/{openvpn}.ovpn'
elif action == 'restart':
cmd = f'sudo openvpn3 session-manage --config /tmp/{openvpn}.ovpn --restart'
elif action == 'disconnect':
cmd = f'sudo openvpn3 session-manage --config /tmp/{openvpn}.ovpn --disconnect'
else:
print('error: wrong action')
sys.exit()
try:
server_mod.subprocess_execute(cmd)
print(f"success: The {openvpn} has been {action}ed")
roxywi_common.logging(openvpn, f' The ovpn session has been {action}ed ', roxywi=1, login=1)
except IOError as e:
print(e.args[0])
roxywi_common.logging('Roxy-WI server', e.args[0], roxywi=1)
if form.getvalue('scan_ports') is not None:
serv_id = common.checkAjaxInput(form.getvalue('scan_ports'))
server = sql.select_servers(id=serv_id)
ip = ''
for s in server:
ip = s[2]
cmd = f"sudo nmap -sS {ip} |grep -E '^[[:digit:]]'|sed 's/ */ /g'"
cmd1 = f"sudo nmap -sS {ip} |head -5|tail -2"
stdout, stderr = server_mod.subprocess_execute(cmd)
stdout1, stderr1 = server_mod.subprocess_execute(cmd1)
if stderr != '':
print(stderr)
else:
lang = roxywi_common.get_user_lang()
env = Environment(loader=FileSystemLoader('templates'), autoescape=True)
template = env.get_template('ajax/scan_ports.html')
template = template.render(ports=stdout, info=stdout1, lang=lang)
print(template)
if form.getvalue('viewFirewallRules') is not None:
server_mod.show_firewalld_rules()
if form.getvalue('geoipserv') is not None:
serv = common.checkAjaxInput(form.getvalue('geoipserv'))
service = common.checkAjaxInput(form.getvalue('geoip_service'))
if service in ('haproxy', 'nginx'):
service_dir = common.return_nice_path(sql.get_setting(f'{service}_dir'))
cmd = [f"ls {service_dir}geoip/"]
print(server_mod.ssh_command(serv, cmd))
else:
print('warning: select a server and service first')
if form.getvalue('nettools_icmp_server_from'):
import modules.roxywi.nettools as nettools
nettools.ping_from_server()
if form.getvalue('nettools_telnet_server_from'):
import modules.roxywi.nettools as nettools
nettools.telnet_from_server()
if form.getvalue('nettools_nslookup_server_from'):
import modules.roxywi.nettools as nettools
nettools.nslookup_from_server()
if form.getvalue('portscanner_history_server_id'):
server_id = common.checkAjaxInput(form.getvalue('portscanner_history_server_id'))
enabled = common.checkAjaxInput(form.getvalue('portscanner_enabled'))
notify = common.checkAjaxInput(form.getvalue('portscanner_notify'))
history = common.checkAjaxInput(form.getvalue('portscanner_history'))
user_group_id = [server[3] for server in sql.select_servers(id=server_id)]
try:
if sql.insert_port_scanner_settings(server_id, user_group_id[0], enabled, notify, history):
print('ok')
else:
if sql.update_port_scanner_settings(server_id, user_group_id[0], enabled, notify, history):
print('ok')
except Exception as e:
print(e)
if form.getvalue('show_versions'):
import modules.roxywi.roxy as roxy
env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('ajax/check_version.html')
template = template.render(versions=roxy.versions())
print(template)
if form.getvalue('get_group_name_by_id'):
print(sql.get_group_name_by_id(form.getvalue('get_group_name_by_id')))
if form.getvalue('new_provider_name'):
import modules.provisioning.provider as provider
provider.create_provider()
if form.getvalue('providerdel'):
import modules.provisioning.provider as provider
provider.delete_provider()
if form.getvalue('awsinit') or form.getvalue('doinit') or form.getvalue('gcoreinitserver'):
import modules.provisioning.server as prov_server
prov_server.init_server()
if form.getvalue('awsvars') or form.getvalue('awseditvars'):
import modules.provisioning.aws as aws
aws.create_vars()
if form.getvalue('dovars') or form.getvalue('doeditvars'):
import modules.provisioning.do as do
do.create_vars()
if form.getvalue('dovalidate') or form.getvalue('doeditvalidate'):
import modules.provisioning.do as do
do.validate()
if form.getvalue('doworkspace'):
import modules.provisioning.do as do
do.new_workspace()
if form.getvalue('doeditworkspace'):
import modules.provisioning.do as do
do.edit_workspace()
if form.getvalue('awsvalidate') or form.getvalue('awseditvalidate'):
import modules.provisioning.aws as aws
aws.validate()
if form.getvalue('awsworkspace'):
import modules.provisioning.aws as aws
aws.new_workspace()
if form.getvalue('awseditworkspace'):
import modules.provisioning.aws as aws
aws.edit_workspace()
if any((form.getvalue('awsprovisining'), form.getvalue('awseditingprovisining'), form.getvalue('doprovisining'),
form.getvalue('doeditprovisining'), form.getvalue('gcoreprovisining'), form.getvalue('gcoreeditgprovisining'))):
import modules.provisioning.server as prov_server
prov_server.create_server()
if form.getvalue('provisiningdestroyserver'):
import modules.provisioning.server as prov_server
prov_server.destroy_server()
if form.getvalue('gcorevars') or form.getvalue('gcoreeditvars'):
import modules.provisioning.gcore as gcore
gcore.gcore_create_vars()
if form.getvalue('gcorevalidate') or form.getvalue('gcoreeditvalidate'):
import modules.provisioning.gcore as gcore
gcore.validate()
if form.getvalue('gcoreworkspace'):
import modules.provisioning.gcore as gcore
gcore.new_workspace()
if form.getvalue('gcoreeditworkspace'):
import modules.provisioning.gcore as gcore
gcore.edit_workspace()
if form.getvalue('editServerId'):
import modules.provisioning.server as prov_server_mod
prov_server_mod.edit_server()
if form.getvalue('edit_provider_id'):
import modules.provisioning.provider as provider_mod
provider = form.getvalue('provider_name')
provider_id = form.getvalue('edit_provider_id')
edit_functions = {
'aws': provider_mod.edit_aws_provider,
'do': provider_mod.edit_DO_provider,
'gcore': provider_mod.edit_gcore_provider,
}
edit_functions[provider](provider_id)
if form.getvalue('loadservices'):
from modules.roxywi.roxy import get_services_status
lang = roxywi_common.get_user_lang()
env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('ajax/load_services.html')
try:
services = get_services_status()
except Exception as e:
print(e)
template = template.render(services=services, lang=lang)
print(template)
if form.getvalue('loadchecker'):
from modules.roxywi.roxy import get_services_status
lang = roxywi_common.get_user_lang()
env = Environment(loader=FileSystemLoader('templates'), autoescape=True)
template = env.get_template('ajax/load_telegram.html')
services = get_services_status()
groups = sql.select_groups()
page = form.getvalue('page')
try:
user_subscription = roxywi_common.return_user_status()
except Exception as e:
user_subscription = roxywi_common.return_unsubscribed_user_status()
roxywi_common.logging('Roxy-WI server', f'Cannot get a user plan: {e}', roxywi=1)
if user_subscription['user_status']:
haproxy_settings = sql.select_checker_settings(1)
nginx_settings = sql.select_checker_settings(2)
keepalived_settings = sql.select_checker_settings(3)
apache_settings = sql.select_checker_settings(4)
if page == 'servers.py':
user_group = roxywi_common.get_user_group(id=1)
telegrams = sql.get_user_telegram_by_group(user_group)
slacks = sql.get_user_slack_by_group(user_group)
pds = sql.get_user_pd_by_group(user_group)
haproxy_servers = roxywi_common.get_dick_permit(haproxy=1, only_group=1)
nginx_servers = roxywi_common.get_dick_permit(nginx=1, only_group=1)
apache_servers = roxywi_common.get_dick_permit(apache=1, only_group=1)
keepalived_servers = roxywi_common.get_dick_permit(keepalived=1, only_group=1)
else:
telegrams = sql.select_telegram()
slacks = sql.select_slack()
pds = sql.select_pd()
haproxy_servers = roxywi_common.get_dick_permit(haproxy=1)
nginx_servers = roxywi_common.get_dick_permit(nginx=1)
apache_servers = roxywi_common.get_dick_permit(apache=1)
keepalived_servers = roxywi_common.get_dick_permit(keepalived=1)
else:
telegrams = ''
slacks = ''
pds = ''
template = template.render(services=services, telegrams=telegrams, pds=pds, groups=groups, slacks=slacks,
user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'],
haproxy_servers=haproxy_servers, nginx_servers=nginx_servers, apache_servers=apache_servers,
keepalived_servers=keepalived_servers, haproxy_settings=haproxy_settings, nginx_settings=nginx_settings,
keepalived_settings=keepalived_settings, apache_settings=apache_settings, page=page, lang=lang)
print(template)
if form.getvalue('load_update_hapwi'):
import modules.roxywi.roxy as roxy
env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('ajax/load_updateroxywi.html')
versions = roxy.versions()
checker_ver = roxy.check_new_version('checker')
smon_ver = roxy.check_new_version('smon')
metrics_ver = roxy.check_new_version('metrics')
keep_ver = roxy.check_new_version('keep_alive')
portscanner_ver = roxy.check_new_version('portscanner')
socket_ver = roxy.check_new_version('socket')
prometheus_exp_ver = roxy.check_new_version('prometheus-exporter')
services = roxy.get_services_status()
lang = roxywi_common.get_user_lang()
template = template.render(services=services,
versions=versions,
checker_ver=checker_ver,
smon_ver=smon_ver,
metrics_ver=metrics_ver,
portscanner_ver=portscanner_ver,
socket_ver=socket_ver,
prometheus_exp_ver=prometheus_exp_ver,
keep_ver=keep_ver,
lang=lang)
print(template)
if form.getvalue('loadopenvpn'):
import distro
env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('ajax/load_openvpn.html')
openvpn_configs = ''
openvpn_sess = ''
openvpn = ''
if distro.id() == 'ubuntu':
stdout, stderr = server_mod.subprocess_execute("apt show openvpn3 2>&1|grep E:")
elif distro.id() == 'centos' or distro.id() == 'rhel':
stdout, stderr = server_mod.subprocess_execute("rpm --query openvpn3-client")
if (
(stdout[0] != 'package openvpn3-client is not installed' and stderr != '/bin/sh: rpm: command not found')
and stdout[0] != 'E: No packages found'
):
cmd = "sudo openvpn3 configs-list |grep -E 'ovpn|(^|[^0-9])[0-9]{4}($|[^0-9])' |grep -v net|awk -F\" \" '{print $1}'|awk 'ORS=NR%2?\" \":\"\\n\"'"
openvpn_configs, stderr = server_mod.subprocess_execute(cmd)
cmd = "sudo openvpn3 sessions-list|grep -E 'Config|Status'|awk -F\":\" '{print $2}'|awk 'ORS=NR%2?\" \":\"\\n\"'| sed 's/^ //g'"
openvpn_sess, stderr = server_mod.subprocess_execute(cmd)
openvpn = stdout[0]
template = template.render(openvpn=openvpn, openvpn_sess=openvpn_sess, openvpn_configs=openvpn_configs)
print(template)
if form.getvalue('check_receiver'):
import modules.alerting.alerting as alerting
channel_id = form.getvalue('receiver_channel_id')
receiver_name = form.getvalue('receiver_name')
alerting.check_receiver(channel_id, receiver_name)
if form.getvalue('check_rabbitmq_alert'):
import modules.alerting.alerting as alerting
alerting.check_rabbit_alert()
if form.getvalue('check_email_alert'):
import modules.alerting.alerting as alerting
alerting.check_email_alert()
if form.getvalue('getoption'):
group = form.getvalue('getoption')
term = form.getvalue('term')
add_mod.get_saved_option(group, term)
if form.getvalue('newtoption'):
option = common.checkAjaxInput(form.getvalue('newtoption'))
group = common.checkAjaxInput(form.getvalue('newoptiongroup'))
if option is None or group is None:
print(error_mess)
else:
add_mod.create_saved_option(option, group)
if form.getvalue('updateoption') is not None:
option = common.checkAjaxInput(form.getvalue('updateoption'))
option_id = common.checkAjaxInput(form.getvalue('id'))
if option is None or option_id is None:
print(error_mess)
else:
sql.update_options(option, option_id)
if form.getvalue('optiondel') is not None:
if sql.delete_option(common.checkAjaxInput(form.getvalue('optiondel'))):
print("Ok")
if form.getvalue('getsavedserver'):
group = common.checkAjaxInput(form.getvalue('getsavedserver'))
term = common.checkAjaxInput(form.getvalue('term'))
add_mod.get_saved_servers(group, term)
if form.getvalue('newsavedserver'):
server = common.checkAjaxInput(form.getvalue('newsavedserver'))
desc = common.checkAjaxInput(form.getvalue('newsavedserverdesc'))
group = common.checkAjaxInput(form.getvalue('newsavedservergroup'))
if server is None or group is None:
print(error_mess)
else:
add_mod.create_saved_server(server, group, desc)
if form.getvalue('updatesavedserver') is not None:
savedserver = form.getvalue('updatesavedserver')
description = form.getvalue('description')
savedserver_id = form.getvalue('id')
if savedserver is None or savedserver_id is None:
print(error_mess)
else:
sql.update_savedserver(savedserver, description, savedserver_id)
if form.getvalue('savedserverdel') is not None:
if sql.delete_savedserver(common.checkAjaxInput(form.getvalue('savedserverdel'))):
print("Ok")
if form.getvalue('show_users_ovw') is not None:
import modules.roxywi.overview as roxywi_overview
roxywi_overview.user_ovw()
if form.getvalue('serverSettings') is not None:
server_id = common.checkAjaxInput(form.getvalue('serverSettings'))
service = common.checkAjaxInput(form.getvalue('serverSettingsService'))
env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
template = env.get_template('ajax/show_service_settings.html')
template = template.render(settings=sql.select_service_settings(server_id, service), service=service)
print(template)
if form.getvalue('serverSettingsSave') is not None:
server_id = common.checkAjaxInput(form.getvalue('serverSettingsSave'))
service = common.checkAjaxInput(form.getvalue('serverSettingsService'))
haproxy_enterprise = common.checkAjaxInput(form.getvalue('serverSettingsEnterprise'))
haproxy_dockerized = common.checkAjaxInput(form.getvalue('serverSettingshaproxy_dockerized'))
nginx_dockerized = common.checkAjaxInput(form.getvalue('serverSettingsnginx_dockerized'))
apache_dockerized = common.checkAjaxInput(form.getvalue('serverSettingsapache_dockerized'))
haproxy_restart = common.checkAjaxInput(form.getvalue('serverSettingsHaproxyrestart'))
nginx_restart = common.checkAjaxInput(form.getvalue('serverSettingsNginxrestart'))
apache_restart = common.checkAjaxInput(form.getvalue('serverSettingsApache_restart'))
server_ip = sql.select_server_ip_by_id(server_id)
if service == 'haproxy':
if sql.insert_or_update_service_setting(server_id, service, 'haproxy_enterprise', haproxy_enterprise):
print('Ok')
if haproxy_enterprise == '1':
roxywi_common.logging(server_ip, 'Service has been flagged as an Enterprise version', roxywi=1, login=1,
keep_history=1, service=service)
else:
roxywi_common.logging(server_ip, 'Service has been flagged as a community version', roxywi=1, login=1,
keep_history=1, service=service)
if sql.insert_or_update_service_setting(server_id, service, 'dockerized', haproxy_dockerized):
print('Ok')
if haproxy_dockerized == '1':
roxywi_common.logging(server_ip, 'Service has been flagged as a dockerized', roxywi=1, login=1,
keep_history=1, service=service)
else:
roxywi_common.logging(server_ip, 'Service has been flagged as a system service', roxywi=1, login=1,
keep_history=1, service=service)
if sql.insert_or_update_service_setting(server_id, service, 'restart', haproxy_restart):
print('Ok')
if haproxy_restart == '1':
roxywi_common.logging(server_ip, 'Restart option is disabled for this service', roxywi=1, login=1,
keep_history=1, service=service)
else:
roxywi_common.logging(server_ip, 'Restart option is disabled for this service', roxywi=1, login=1,
keep_history=1, service=service)
if service == 'nginx':
if sql.insert_or_update_service_setting(server_id, service, 'dockerized', nginx_dockerized):
print('Ok')
if nginx_dockerized:
roxywi_common.logging(server_ip, 'Service has been flagged as a dockerized', roxywi=1, login=1,
keep_history=1, service=service)
else:
roxywi_common.logging(server_ip, 'Service has been flagged as a system service', roxywi=1, login=1,
keep_history=1, service=service)
if sql.insert_or_update_service_setting(server_id, service, 'restart', nginx_restart):
print('Ok')
if nginx_restart == '1':
roxywi_common.logging(server_ip, 'Restart option is disabled for this service', roxywi=1, login=1,
keep_history=1, service=service)
else:
roxywi_common.logging(server_ip, 'Restart option is disabled for this service', roxywi=1, login=1,
keep_history=1, service=service)
if service == 'apache':
if sql.insert_or_update_service_setting(server_id, service, 'dockerized', apache_dockerized):
print('Ok')
if apache_dockerized:
roxywi_common.logging(server_ip, 'Service has been flagged as a dockerized', roxywi=1, login=1,
keep_history=1, service=service)
else:
roxywi_common.logging(server_ip, 'Service has been flagged as a system service', roxywi=1, login=1,
keep_history=1, service=service)
if sql.insert_or_update_service_setting(server_id, service, 'restart', apache_restart):
print('Ok')
if apache_restart == '1':
roxywi_common.logging(server_ip, 'Restart option is disabled for this service', roxywi=1, login=1,
keep_history=1, service=service)
else:
roxywi_common.logging(server_ip, 'Restart option is disabled for this service', roxywi=1, login=1,
keep_history=1, service=service)
if act == 'showListOfVersion':
config_mod.list_of_versions(serv, service)
if act == 'getSystemInfo':
server_mod.show_system_info()
if act == 'updateSystemInfo':
server_mod.update_system_info()
if act == 'server_is_up':
server_ip = common.is_ip_or_dns(form.getvalue('server_is_up'))
server_mod.server_is_up(server_ip)
if act == 'findInConfigs':
server_ip = serv
server_ip = common.is_ip_or_dns(server_ip)
finding_words = form.getvalue('words')
log_path = sql.get_setting(service + '_dir')
log_path = common.return_nice_path(log_path)
commands = [f'sudo grep "{finding_words}" {log_path}*/*.conf -C 2 -Rn']
return_find = server_mod.ssh_command(server_ip, commands, raw=1)
return_find = config_mod.show_finding_in_config(return_find, grep=finding_words)
if 'error: ' in return_find:
print(return_find)
sys.exit()
print(return_find)
if act == 'check_service':
import modules.service.action as service_action
cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
user_uuid = cookie.get('uuid')
server_id = common.checkAjaxInput(form.getvalue('server_id'))
service_action.check_service(serv, user_uuid, service)
if form.getvalue('show_sub_ovw'):
import modules.roxywi.overview as roxywi_overview
roxywi_overview.show_sub_ovw()
if form.getvalue('updateHaproxyCheckerSettings'):
setting_id = form.getvalue('updateHaproxyCheckerSettings')
email = form.getvalue('email')
service_alert = form.getvalue('server')
backend_alert = form.getvalue('backend')
maxconn_alert = form.getvalue('maxconn')
telegram_id = form.getvalue('telegram_id')
slack_id = form.getvalue('slack_id')
pd_id = form.getvalue('pd_id')
if sql.update_haproxy_checker_settings(email, telegram_id, slack_id, pd_id, service_alert, backend_alert, maxconn_alert, setting_id):
print('ok')
else:
print('error: Cannot update Checker settings')
if form.getvalue('updateKeepalivedCheckerSettings'):
setting_id = form.getvalue('updateKeepalivedCheckerSettings')
email = form.getvalue('email')
service_alert = form.getvalue('server')
backend_alert = form.getvalue('backend')
telegram_id = form.getvalue('telegram_id')
slack_id = form.getvalue('slack_id')
pd_id = form.getvalue('pd_id')
if sql.update_keepalived_checker_settings(email, telegram_id, slack_id, pd_id, service_alert, backend_alert, setting_id):
print('ok')
else:
print('error: Cannot update Checker settings')
if form.getvalue('updateServiceCheckerSettings'):
setting_id = form.getvalue('updateServiceCheckerSettings')
email = form.getvalue('email')
service_alert = form.getvalue('server')
telegram_id = form.getvalue('telegram_id')
slack_id = form.getvalue('slack_id')
pd_id = form.getvalue('pd_id')
if sql.update_service_checker_settings(email, telegram_id, slack_id, pd_id, service_alert, setting_id):
print('ok')
else:
print('error: Cannot update Checker settings')
if act == 'show_server_services':
server_mod.show_server_services()
if form.getvalue('changeServerServicesId') is not None:
server_mod.change_server_services()