2018-09-28 12:04:16 +00:00
#!/usr/bin/env python3
2020-03-27 21:16:04 +00:00
# -*- coding: utf-8 -*-
2020-07-01 20:39:15 +00:00
import os
import sys
2022-09-02 14:12:28 +00:00
import json
import http . cookies
2022-10-29 19:06:45 +00:00
from uuid import UUID
2022-09-02 14:12:28 +00:00
from jinja2 import Environment , FileSystemLoader
2022-05-25 13:55:45 +00:00
2022-11-17 07:34:58 +00:00
import modules . db . sql as sql
2022-12-07 07:47:47 +00:00
import modules . server . ssh as ssh_mod
2022-11-17 07:34:58 +00:00
import modules . common . common as common
import modules . config . config as config_mod
import modules . roxywi . common as roxywi_common
2022-09-26 09:18:18 +00:00
import modules . roxy_wi_tools as roxy_wi_tools
2022-11-17 07:34:58 +00:00
import modules . server . server as server_mod
import modules . service . common as service_common
import modules . service . installation as service_mod
2022-09-26 09:18:18 +00:00
get_config = roxy_wi_tools . GetConfigVar ( )
2022-11-17 07:34:58 +00:00
time_zone = sql . get_setting ( ' time_zone ' )
get_date = roxy_wi_tools . GetDate ( time_zone )
2018-04-09 10:27:01 +00:00
2022-11-17 07:34:58 +00:00
form = common . form
serv = common . is_ip_or_dns ( form . getvalue ( ' serv ' ) )
2020-07-01 20:39:15 +00:00
act = form . getvalue ( " act " )
2022-10-29 19:06:45 +00:00
token = form . getvalue ( " token " )
2019-10-05 20:41:07 +00:00
2022-05-25 13:55:45 +00:00
if (
form . getvalue ( ' new_metrics ' )
or form . getvalue ( ' new_http_metrics ' )
or form . getvalue ( ' new_waf_metrics ' )
or form . getvalue ( ' new_nginx_metrics ' )
2022-07-03 06:11:34 +00:00
or form . getvalue ( ' new_apache_metrics ' )
2022-05-25 13:55:45 +00:00
or form . getvalue ( ' metrics_hapwi_ram ' )
or form . getvalue ( ' metrics_hapwi_cpu ' )
or form . getvalue ( ' getoption ' )
or form . getvalue ( ' getsavedserver ' )
) :
2020-09-26 17:37:14 +00:00
print ( ' Content-type: application/json \n ' )
2019-10-05 20:41:07 +00:00
else :
2020-09-26 17:37:14 +00:00
print ( ' Content-type: text/html \n ' )
2020-06-06 08:21:22 +00:00
2018-08-28 10:45:09 +00:00
if act == " checkrestart " :
2022-11-17 07:34:58 +00:00
servers = roxywi_common . get_dick_permit ( ip = serv )
2020-09-26 17:37:14 +00:00
for server in servers :
if server != " " :
print ( " ok " )
sys . exit ( )
sys . exit ( )
2020-02-21 18:05:21 +00:00
2022-07-05 19:53:33 +00:00
try :
uuid_obj = UUID ( token , version = 4 )
except ValueError :
print ( ' error: Your token is not valid ' )
sys . exit ( )
2022-08-02 08:53:32 +00:00
except Exception :
print ( ' error: There is no token ' )
sys . exit ( )
2022-07-05 19:53:33 +00:00
if not sql . check_token_exists ( token ) :
print ( ' error: Your token has been expired ' )
sys . exit ( )
2020-07-01 20:39:15 +00:00
2018-07-13 04:28:21 +00:00
if form . getvalue ( ' getcerts ' ) is not None and serv is not None :
2022-12-04 18:43:25 +00:00
config_mod . get_ssl_certs ( serv )
2020-02-21 18:05:21 +00:00
2018-10-01 16:51:37 +00:00
if form . getvalue ( ' checkSshConnect ' ) is not None and serv is not None :
2021-08-02 08:19:22 +00:00
try :
2022-11-17 07:34:58 +00:00
print ( server_mod . ssh_command ( serv , [ " ls -1t " ] ) )
2021-08-02 08:19:22 +00:00
except Exception as e :
print ( e )
2020-07-01 20:39:15 +00:00
2018-07-13 04:28:21 +00:00
if form . getvalue ( ' getcert ' ) is not None and serv is not None :
2022-12-04 18:43:25 +00:00
config_mod . get_ssl_cert ( serv )
2021-01-02 16:36:43 +00:00
if form . getvalue ( ' delcert ' ) is not None and serv is not None :
2022-12-04 18:43:25 +00:00
config_mod . del_ssl_cert ( serv )
2020-07-01 20:39:15 +00:00
2018-04-26 13:03:48 +00:00
if serv and form . getvalue ( ' ssl_cert ' ) :
2022-12-04 18:43:25 +00:00
config_mod . upload_ssl_cert ( serv )
2020-07-01 20:39:15 +00:00
2018-09-19 06:22:38 +00:00
if form . getvalue ( ' backend ' ) is not None :
2022-11-17 07:34:58 +00:00
import modules . config . runtime as runtime
runtime . show_backends ( serv )
2020-07-01 20:39:15 +00:00
2020-06-06 08:21:22 +00:00
if form . getvalue ( ' ip_select ' ) is not None :
2022-11-17 07:34:58 +00:00
import modules . config . runtime as runtime
runtime . show_backends ( serv )
2020-06-06 08:21:22 +00:00
if form . getvalue ( ' ipbackend ' ) is not None and form . getvalue ( ' backend_server ' ) is None :
2022-12-08 19:43:20 +00:00
import modules . config . runtime as runtime
runtime . show_frontend_backend ( )
2020-06-06 08:21:22 +00:00
if form . getvalue ( ' ipbackend ' ) is not None and form . getvalue ( ' backend_server ' ) is not None :
2022-12-08 19:43:20 +00:00
import modules . config . runtime as runtime
runtime . show_server ( )
2020-07-01 20:39:15 +00:00
if form . getvalue ( ' backend_ip ' ) is not None :
2022-11-17 07:34:58 +00:00
import modules . config . runtime as runtime
2022-07-08 17:43:13 +00:00
2022-11-17 07:34:58 +00:00
runtime . change_ip_and_port ( )
2020-07-01 20:39:15 +00:00
2020-06-06 08:21:22 +00:00
if form . getvalue ( ' maxconn_select ' ) is not None :
2022-11-17 07:34:58 +00:00
import modules . config . runtime as runtime
serv = common . checkAjaxInput ( form . getvalue ( ' maxconn_select ' ) )
runtime . get_backends_from_config ( serv , backends = ' frontend ' )
2020-07-01 20:39:15 +00:00
if form . getvalue ( ' maxconn_frontend ' ) is not None :
2022-11-17 07:34:58 +00:00
import modules . config . runtime as runtime
2022-07-08 16:35:07 +00:00
2022-11-17 07:34:58 +00:00
runtime . change_maxconn ( )
2020-06-06 08:21:22 +00:00
if form . getvalue ( ' table_serv_select ' ) is not None :
2022-11-17 07:34:58 +00:00
import modules . config . runtime as runtime
print ( runtime . get_all_stick_table ( ) )
2020-07-01 20:39:15 +00:00
2020-06-06 08:21:22 +00:00
if form . getvalue ( ' table_select ' ) is not None :
2022-11-17 07:34:58 +00:00
import modules . config . runtime as runtime
2020-09-26 17:37:14 +00:00
2022-11-17 07:34:58 +00:00
runtime . table_select ( )
2020-07-01 20:39:15 +00:00
if form . getvalue ( ' ip_for_delete ' ) is not None :
2022-12-04 18:43:25 +00:00
import modules . config . runtime as runtime
2020-08-02 18:24:09 +00:00
2022-12-04 18:43:25 +00:00
runtime . delete_ip_from_stick_table ( )
2020-08-02 18:24:09 +00:00
2020-09-02 04:26:36 +00:00
if form . getvalue ( ' table_for_clear ' ) is not None :
2022-12-04 18:43:25 +00:00
import modules . config . runtime as runtime
2020-09-02 04:26:36 +00:00
2022-12-04 18:43:25 +00:00
runtime . clear_stick_table ( )
2020-09-02 04:26:36 +00:00
2020-08-02 18:24:09 +00:00
if form . getvalue ( ' list_serv_select ' ) is not None :
2022-12-04 18:43:25 +00:00
import modules . config . runtime as runtime
2020-08-02 18:24:09 +00:00
2022-12-04 18:43:25 +00:00
runtime . list_of_lists ( )
2020-08-02 18:24:09 +00:00
2022-12-04 18:43:25 +00:00
if form . getvalue ( ' list_select_id ' ) is not None :
import modules . config . runtime as runtime
2020-08-02 18:24:09 +00:00
2022-12-04 18:43:25 +00:00
runtime . show_lists ( )
2020-08-02 18:24:09 +00:00
if form . getvalue ( ' list_id_for_delete ' ) is not None :
2022-12-04 18:43:25 +00:00
import modules . config . runtime as runtime
2020-08-02 18:24:09 +00:00
2022-12-04 18:43:25 +00:00
runtime . delete_ip_from_list ( )
2021-09-15 05:40:51 +00:00
2020-08-02 18:24:09 +00:00
if form . getvalue ( ' list_ip_for_add ' ) is not None :
2022-12-04 18:43:25 +00:00
import modules . config . runtime as runtime
2020-09-15 05:56:43 +00:00
2022-12-04 18:43:25 +00:00
runtime . add_ip_to_list ( )
2020-09-15 05:56:43 +00:00
2022-12-04 18:43:25 +00:00
if form . getvalue ( ' sessions_select ' ) is not None :
import modules . config . runtime as runtime
2020-09-15 05:56:43 +00:00
2022-12-04 18:43:25 +00:00
runtime . select_session ( )
2020-09-15 05:56:43 +00:00
if form . getvalue ( ' sessions_select_show ' ) is not None :
2022-12-04 18:43:25 +00:00
import modules . config . runtime as runtime
2020-09-15 05:56:43 +00:00
2022-12-04 18:43:25 +00:00
runtime . show_session ( )
2020-09-15 05:56:43 +00:00
if form . getvalue ( ' session_delete_id ' ) is not None :
2022-12-04 18:43:25 +00:00
import modules . config . runtime as runtime
runtime . delete_session ( )
2020-09-15 05:56:43 +00:00
2020-07-01 20:39:15 +00:00
if form . getvalue ( " change_pos " ) is not None :
2022-12-08 19:43:20 +00:00
pos = common . checkAjaxInput ( form . getvalue ( ' change_pos ' ) )
server_id = common . checkAjaxInput ( form . getvalue ( ' pos_server_id ' ) )
2021-10-17 05:57:51 +00:00
sql . update_server_pos ( pos , server_id )
2020-07-01 20:39:15 +00:00
2021-08-08 13:02:00 +00:00
if form . getvalue ( ' show_ip ' ) is not None and serv is not None :
2022-12-22 19:19:43 +00:00
commands = [ ' sudo hostname -i | tr " " " \n " |grep -v " % " ' ]
2022-11-17 07:34:58 +00:00
server_mod . ssh_command ( serv , commands , ip = " 1 " )
2020-07-01 20:39:15 +00:00
2018-05-02 11:11:22 +00:00
if form . getvalue ( ' showif ' ) :
2021-08-08 13:02:00 +00:00
commands = [ " sudo ip link|grep ' UP ' |grep -v ' lo ' | awk ' { print $2} ' |awk -F ' : ' ' { print $1} ' " ]
2022-11-17 07:34:58 +00:00
server_mod . ssh_command ( serv , commands , ip = " 1 " )
2020-07-01 20:39:15 +00:00
2018-05-13 18:07:33 +00:00
if form . getvalue ( ' action_hap ' ) is not None and serv is not None :
2022-12-04 18:43:25 +00:00
import modules . service . action as service_action
2020-09-26 17:37:14 +00:00
2022-12-04 18:43:25 +00:00
action = form . getvalue ( ' action_hap ' )
service_action . action_haproxy ( serv , action )
2020-07-01 20:39:15 +00:00
2020-02-05 08:15:57 +00:00
if form . getvalue ( ' action_nginx ' ) is not None and serv is not None :
2022-12-04 18:43:25 +00:00
import modules . service . action as service_action
2022-04-15 09:49:00 +00:00
2022-12-04 18:43:25 +00:00
action = form . getvalue ( ' action_nginx ' )
service_action . action_nginx ( serv , action )
2021-06-11 15:18:33 +00:00
if form . getvalue ( ' action_keepalived ' ) is not None and serv is not None :
2022-12-04 18:43:25 +00:00
import modules . service . action as service_action
2022-07-05 19:53:33 +00:00
2022-12-04 18:43:25 +00:00
action = form . getvalue ( ' action_keepalived ' )
service_action . action_keepalived ( serv , action )
2020-07-01 20:39:15 +00:00
2018-08-17 11:55:17 +00:00
if form . getvalue ( ' action_waf ' ) is not None and serv is not None :
2022-12-04 18:43:25 +00:00
import modules . service . action as service_action
2022-04-15 09:49:00 +00:00
2022-12-04 18:43:25 +00:00
action = form . getvalue ( ' action_waf ' )
service_action . action_haproxy_waf ( serv , action )
2020-07-01 20:39:15 +00:00
2022-08-02 08:53:32 +00:00
if form . getvalue ( ' action_waf_nginx ' ) is not None and serv is not None :
2022-12-04 18:43:25 +00:00
import modules . service . action as service_action
2022-08-02 08:53:32 +00:00
2022-12-04 18:43:25 +00:00
action = form . getvalue ( ' action_waf_nginx ' )
service_action . action_nginx_waf ( serv , action )
2022-08-02 08:53:32 +00:00
2022-04-15 09:49:00 +00:00
if form . getvalue ( ' action_apache ' ) is not None and serv is not None :
2022-12-04 18:43:25 +00:00
import modules . service . action as service_action
2022-08-15 08:50:29 +00:00
2022-12-04 18:43:25 +00:00
action = form . getvalue ( ' action_apache ' )
service_action . action_apache ( serv , action )
2022-04-15 09:49:00 +00:00
2020-07-01 20:39:15 +00:00
if form . getvalue ( ' action_service ' ) is not None :
2022-11-17 07:34:58 +00:00
import modules . roxywi . roxy as roxy
2022-07-05 19:53:33 +00:00
2022-12-04 18:43:25 +00:00
action = common . checkAjaxInput ( form . getvalue ( ' action_service ' ) )
roxy . action_service ( action , serv )
2020-07-01 20:39:15 +00:00
2019-12-27 04:31:09 +00:00
if act == " overviewHapserverBackends " :
2022-12-07 09:27:46 +00:00
service = common . checkAjaxInput ( form . getvalue ( ' service ' ) )
2022-11-17 07:34:58 +00:00
2022-12-07 09:27:46 +00:00
service_common . overview_backends ( serv , service )
2020-07-01 20:39:15 +00:00
2021-04-17 17:38:08 +00:00
if form . getvalue ( ' show_userlists ' ) :
2022-09-26 09:18:18 +00:00
configs_dir = get_config . get_config_var ( ' configs ' , ' haproxy_save_configs_dir ' )
2021-04-17 17:38:08 +00:00
format_file = ' cfg '
try :
2022-11-17 07:34:58 +00:00
sections = config_mod . get_userlists ( configs_dir + roxywi_common . get_files ( configs_dir , format_file ) [ 0 ] )
2021-04-17 17:38:08 +00:00
except Exception as e :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , str ( e ) , roxywi = 1 )
2021-04-17 17:38:08 +00:00
try :
2022-11-17 07:34:58 +00:00
cfg = f ' { configs_dir } { serv } - { get_date . return_date ( " config " ) } . { format_file } '
2021-04-17 17:38:08 +00:00
except Exception as e :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , f ' Cannot generate a cfg path { e } ' , roxywi = 1 )
2021-04-17 17:38:08 +00:00
try :
2022-11-17 07:34:58 +00:00
error = config_mod . get_config ( serv , cfg )
2021-04-17 17:38:08 +00:00
except Exception as e :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , f ' Cannot download a config { e } ' , roxywi = 1 )
2021-04-17 17:38:08 +00:00
try :
2022-11-17 07:34:58 +00:00
sections = config_mod . get_userlists ( cfg )
2021-04-17 17:38:08 +00:00
except Exception as e :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , f ' Cannot get Userlists from the config file { e } ' , roxywi = 1 )
2021-04-17 17:38:08 +00:00
sections = ' error: Cannot get Userlists '
print ( sections )
2019-12-27 04:31:09 +00:00
if act == " overviewHapservers " :
2022-12-07 09:27:46 +00:00
service = common . checkAjaxInput ( form . getvalue ( ' service ' ) )
service_common . get_overview_last_edit ( serv , service )
2020-07-01 20:39:15 +00:00
if act == " overview " :
2022-12-06 18:29:14 +00:00
import modules . roxywi . overview as roxy_overview
2022-04-15 09:49:00 +00:00
2022-12-06 18:29:14 +00:00
roxy_overview . show_overview ( serv )
2020-07-01 20:39:15 +00:00
if act == " overviewwaf " :
2022-12-06 19:37:45 +00:00
import modules . roxywi . waf as roxy_waf
2020-07-01 20:39:15 +00:00
2022-12-06 19:37:45 +00:00
waf_service = common . checkAjaxInput ( form . getvalue ( ' service ' ) )
serv = common . checkAjaxInput ( serv )
roxy_waf . waf_overview ( serv , waf_service )
2020-07-01 20:39:15 +00:00
2020-09-26 17:37:14 +00:00
if act == " overviewServers " :
2022-12-07 09:27:46 +00:00
server_id = common . checkAjaxInput ( form . getvalue ( ' id ' ) )
name = common . checkAjaxInput ( form . getvalue ( ' name ' ) )
service = common . checkAjaxInput ( form . getvalue ( ' service ' ) )
2022-12-07 09:59:39 +00:00
service_common . overview_service ( serv , server_id , name , service )
2020-07-01 20:39:15 +00:00
2023-01-02 20:01:20 +00:00
if act == " overviewServices " :
import modules . roxywi . overview as roxy_overview
roxy_overview . show_services_overview ( )
2020-09-26 17:37:14 +00:00
if form . getvalue ( ' action ' ) :
2022-12-09 15:43:28 +00:00
import modules . service . haproxy as service_haproxy
service_haproxy . stat_page_action ( serv )
2020-07-01 20:39:15 +00:00
2020-09-26 17:37:14 +00:00
if serv is not None and act == " stats " :
2022-12-07 09:59:39 +00:00
service = common . checkAjaxInput ( form . getvalue ( ' service ' ) )
service_common . get_stat_page ( serv , service )
2020-07-01 20:39:15 +00:00
2021-08-08 13:02:00 +00:00
if serv is not None and form . getvalue ( ' show_log ' ) is not None :
2022-11-17 07:34:58 +00:00
import modules . roxywi . logs as roxywi_logs
2021-08-15 09:02:12 +00:00
rows = form . getvalue ( ' show_log ' )
2020-09-26 17:37:14 +00:00
waf = form . getvalue ( ' waf ' )
grep = form . getvalue ( ' grep ' )
hour = form . getvalue ( ' hour ' )
minut = form . getvalue ( ' minut ' )
hour1 = form . getvalue ( ' hour1 ' )
minut1 = form . getvalue ( ' minut1 ' )
service = form . getvalue ( ' service ' )
2022-11-17 07:34:58 +00:00
out = roxywi_logs . show_roxy_log ( serv , rows = rows , waf = waf , grep = grep , hour = hour , minut = minut , hour1 = hour1 ,
2020-09-26 17:37:14 +00:00
minut1 = minut1 , service = service )
print ( out )
2020-07-01 20:39:15 +00:00
2018-05-07 19:09:56 +00:00
if serv is not None and form . getvalue ( ' rows1 ' ) is not None :
2022-11-17 07:34:58 +00:00
import modules . roxywi . logs as roxywi_logs
2020-09-26 17:37:14 +00:00
rows = form . getvalue ( ' rows1 ' )
grep = form . getvalue ( ' grep ' )
hour = form . getvalue ( ' hour ' )
minut = form . getvalue ( ' minut ' )
hour1 = form . getvalue ( ' hour1 ' )
minut1 = form . getvalue ( ' minut1 ' )
2022-11-17 07:34:58 +00:00
out = roxywi_logs . show_roxy_log ( serv , rows = rows , waf = ' 0 ' , grep = grep , hour = hour , minut = minut , hour1 = hour1 ,
2022-04-15 09:49:00 +00:00
minut1 = minut1 , service = ' apache_internal ' )
2020-09-26 17:37:14 +00:00
print ( out )
2020-07-01 20:39:15 +00:00
2018-05-18 18:09:14 +00:00
if form . getvalue ( ' viewlogs ' ) is not None :
2022-11-17 07:34:58 +00:00
import modules . roxywi . logs as roxywi_logs
2020-09-26 17:37:14 +00:00
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 ' )
2022-11-17 07:34:58 +00:00
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 ,
2020-09-26 17:37:14 +00:00
minut1 = minut1 , service = ' internal ' )
2022-10-17 10:22:58 +00:00
print ( out )
2020-07-01 20:39:15 +00:00
2018-04-11 09:27:57 +00:00
if serv is not None and act == " showMap " :
2022-12-09 15:43:28 +00:00
import modules . service . haproxy as service_haproxy
2020-09-26 17:37:14 +00:00
2022-12-09 15:43:28 +00:00
service_haproxy . show_map ( serv )
2020-07-01 20:39:15 +00:00
2018-04-10 03:58:56 +00:00
if form . getvalue ( ' servaction ' ) is not None :
2022-12-09 15:43:28 +00:00
import modules . service . haproxy as service_haproxy
2022-07-08 16:35:07 +00:00
2022-12-09 15:43:28 +00:00
service_haproxy . runtime_command ( serv )
2020-07-01 20:39:15 +00:00
2020-09-26 17:37:14 +00:00
if act == " showCompareConfigs " :
2022-12-09 20:08:32 +00:00
config_mod . show_compare_config ( serv )
2019-10-21 06:00:16 +00:00
2020-09-26 17:37:14 +00:00
if serv is not None and form . getvalue ( ' right ' ) is not None :
2022-12-09 20:08:32 +00:00
config_mod . compare_config ( )
2020-07-01 20:39:15 +00:00
2020-09-26 17:37:14 +00:00
if serv is not None and act == " configShow " :
2022-12-09 20:08:32 +00:00
config_mod . show_config ( serv )
2020-07-01 20:39:15 +00:00
2022-01-16 13:50:53 +00:00
if act == ' configShowFiles ' :
2022-12-09 20:08:32 +00:00
config_mod . show_config_files ( serv )
2022-01-16 13:50:53 +00:00
2022-03-02 20:09:39 +00:00
if act == ' showRemoteLogFiles ' :
service = form . getvalue ( ' service ' )
2022-10-30 07:55:26 +00:00
log_path = sql . get_setting ( f ' { service } _path_logs ' )
2022-11-17 07:34:58 +00:00
return_files = server_mod . get_remote_files ( serv , log_path , ' log ' )
2022-03-02 20:09:39 +00:00
if ' error: ' in return_files :
print ( return_files )
sys . exit ( )
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 )
print ( template )
2020-09-26 17:37:14 +00:00
if form . getvalue ( ' master ' ) :
2022-11-17 07:34:58 +00:00
service_mod . keepalived_master_install ( )
2021-07-01 07:19:23 +00:00
2021-03-04 05:53:27 +00:00
if form . getvalue ( ' master_slave ' ) :
2022-11-17 07:34:58 +00:00
service_mod . keepalived_slave_install ( )
2020-07-01 20:39:15 +00:00
2020-09-26 17:37:14 +00:00
if form . getvalue ( ' masteradd ' ) :
2022-11-17 07:34:58 +00:00
service_mod . keepalived_masteradd ( )
2020-09-26 17:37:14 +00:00
2021-03-05 05:02:52 +00:00
if form . getvalue ( ' masteradd_slave ' ) :
2022-11-17 07:34:58 +00:00
service_mod . keepalived_slaveadd ( )
2020-07-01 20:39:15 +00:00
2021-03-04 05:53:27 +00:00
if form . getvalue ( ' master_slave_hap ' ) :
master = form . getvalue ( ' master_slave_hap ' )
slave = form . getvalue ( ' slave ' )
server = form . getvalue ( ' server ' )
2021-10-04 07:40:59 +00:00
docker = form . getvalue ( ' docker ' )
2021-03-04 05:53:27 +00:00
if server == ' master ' :
2022-11-17 07:34:58 +00:00
service_mod . install_haproxy ( master , server = server , docker = docker )
2021-03-04 05:53:27 +00:00
elif server == ' slave ' :
2022-11-17 07:34:58 +00:00
service_mod . install_haproxy ( slave , server = server , docker = docker )
2021-03-04 05:53:27 +00:00
if form . getvalue ( ' master_slave_nginx ' ) :
master = form . getvalue ( ' master_slave_nginx ' )
slave = form . getvalue ( ' slave ' )
server = form . getvalue ( ' server ' )
2021-10-04 07:40:59 +00:00
docker = form . getvalue ( ' docker ' )
2021-03-04 05:53:27 +00:00
if server == ' master ' :
2023-01-04 08:50:47 +00:00
service_mod . install_service ( master , ' nginx ' , docker , server = server )
2021-03-04 05:53:27 +00:00
elif server == ' slave ' :
2023-01-04 08:50:47 +00:00
service_mod . install_service ( slave , ' nginx ' , docker , server = server )
2021-03-04 05:53:27 +00:00
2020-09-26 17:37:14 +00:00
if form . getvalue ( ' install_grafana ' ) :
2022-11-17 07:34:58 +00:00
service_mod . grafana_install ( )
2020-07-01 20:39:15 +00:00
2020-03-27 21:16:04 +00:00
if form . getvalue ( ' haproxy_exp_install ' ) :
2022-11-17 15:27:26 +00:00
import modules . service . exporter_installation as exp_installation
2020-09-26 17:37:14 +00:00
2022-11-17 10:18:04 +00:00
exp_installation . haproxy_exp_installation ( )
2020-09-26 17:37:14 +00:00
2022-10-17 10:22:58 +00:00
if form . getvalue ( ' nginx_exp_install ' ) or form . getvalue ( ' apache_exp_install ' ) :
2022-11-17 15:27:26 +00:00
import modules . service . exporter_installation as exp_installation
2020-09-26 17:37:14 +00:00
2022-11-17 07:34:58 +00:00
exp_installation . nginx_apache_exp_installation ( )
2020-07-01 20:39:15 +00:00
2021-05-02 03:58:22 +00:00
if form . getvalue ( ' node_exp_install ' ) :
2022-11-17 15:27:26 +00:00
import modules . service . exporter_installation as exp_installation
2021-05-02 03:58:22 +00:00
2022-11-17 07:34:58 +00:00
exp_installation . node_exp_installation ( )
2021-05-02 03:58:22 +00:00
2020-01-11 21:16:27 +00:00
if form . getvalue ( ' backup ' ) or form . getvalue ( ' deljob ' ) or form . getvalue ( ' backupupdate ' ) :
2023-01-04 08:50:47 +00:00
import modules . service . backup as backup_mod
2020-09-26 17:37:14 +00:00
2023-01-04 08:50:47 +00:00
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 ' ) )
2020-09-26 17:37:14 +00:00
2023-01-04 08:50:47 +00:00
backup_mod . backup ( serv , rpath , time , backup_type , rserver , cred , deljob , update , description )
2020-07-01 20:39:15 +00:00
2022-10-17 10:22:58 +00:00
2022-05-05 18:26:14 +00:00
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 ' )
2022-11-17 07:34:58 +00:00
servers = roxywi_common . get_dick_permit ( )
2022-05-05 18:26:14 +00:00
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 '
2022-10-17 10:22:58 +00:00
proxy_serv = ' '
2022-12-07 07:47:47 +00:00
ssh_settings = ssh_mod . return_ssh_keys_path ( ' localhost ' , id = int ( cred ) )
2022-05-05 18:26:14 +00:00
2022-10-17 10:22:58 +00:00
os . system ( f " cp scripts/ { script } . " )
2022-05-05 18:26:14 +00:00
if proxy is not None and proxy != ' ' and proxy != ' None ' :
proxy_serv = proxy
if repo is None or git_init == ' 0 ' :
repo = ' '
2022-05-06 08:24:51 +00:00
if branch is None or branch == ' 0 ' :
2022-05-05 18:26:14 +00:00
branch = ' main '
2022-05-25 08:42:12 +00:00
commands = [
2023-01-04 08:50:47 +00:00
f " chmod +x { script } && ./ { script } HOST= { server_ip } DELJOB= { deljob } SERVICE= { service_name } INIT= { git_init } "
2022-10-17 10:22:58 +00:00
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 ' ] } "
2022-05-25 08:42:12 +00:00
]
2022-05-05 18:26:14 +00:00
2022-11-17 07:34:58 +00:00
output , error = server_mod . subprocess_execute ( commands [ 0 ] )
2022-05-05 18:26:14 +00:00
2022-05-25 13:55:45 +00:00
for line in output :
2022-05-25 18:40:55 +00:00
if any ( s in line for s in ( " Traceback " , " FAILED " ) ) :
2022-05-05 18:26:14 +00:00
try :
2022-05-25 13:55:45 +00:00
print ( ' error: ' + line )
2022-05-05 18:26:14 +00:00
break
except Exception :
print ( ' error: ' + output )
break
else :
if deljob == ' 0 ' :
2022-05-25 08:42:12 +00:00
if sql . insert_new_git (
2022-09-13 15:04:30 +00:00
server_id = server_id , service_id = service_id , repo = repo , branch = branch ,
period = period , cred = cred , description = description
2022-05-25 08:42:12 +00:00
) :
2022-05-05 18:26:14 +00:00
gits = sql . select_gits ( server_id = server_id , service_id = service_id )
sshs = sql . select_ssh ( )
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 )
print ( template )
print ( ' success: Git job has been created ' )
2022-11-17 07:34:58 +00:00
roxywi_common . logging (
2022-10-28 21:40:40 +00:00
server_ip , ' A new git job has been created ' , roxywi = 1 , login = 1 ,
2022-05-25 13:55:45 +00:00
keep_history = 1 , service = service_name
)
2022-05-05 18:26:14 +00:00
else :
if sql . delete_git ( form . getvalue ( ' git_backup ' ) ) :
print ( ' Ok ' )
2022-10-17 10:22:58 +00:00
os . remove ( script )
2022-05-05 18:26:14 +00:00
2023-01-02 20:01:20 +00:00
if form . getvalue ( ' install_service ' ) :
server_ip = common . is_ip_or_dns ( form . getvalue ( ' install_service ' ) )
service = common . checkAjaxInput ( form . getvalue ( ' service ' ) )
docker = common . checkAjaxInput ( form . getvalue ( ' docker ' ) )
if service in ( ' nginx ' , ' apache ' ) :
service_mod . install_service ( server_ip , service , docker )
else :
print ( ' warning: wrong service ' )
2020-07-01 20:39:15 +00:00
2018-04-30 06:04:21 +00:00
if form . getvalue ( ' haproxyaddserv ' ) :
2022-11-17 07:34:58 +00:00
service_mod . install_haproxy ( form . getvalue ( ' haproxyaddserv ' ) , syn_flood = form . getvalue ( ' syn_flood ' ) ,
2021-10-04 07:40:59 +00:00
hapver = form . getvalue ( ' hapver ' ) , docker = form . getvalue ( ' docker ' ) )
2020-07-01 20:39:15 +00:00
2018-08-20 06:39:52 +00:00
if form . getvalue ( ' installwaf ' ) :
2022-08-02 08:53:32 +00:00
service = form . getvalue ( ' service ' )
if service == ' haproxy ' :
2022-12-06 07:23:17 +00:00
service_mod . waf_install ( common . checkAjaxInput ( form . getvalue ( ' installwaf ' ) ) )
2022-08-02 08:53:32 +00:00
else :
2022-12-06 07:23:17 +00:00
service_mod . waf_nginx_install ( common . checkAjaxInput ( form . getvalue ( ' installwaf ' ) ) )
2022-11-17 07:34:58 +00:00
if form . getvalue ( ' geoip_install ' ) :
service_mod . geoip_installation ( )
2020-07-01 20:39:15 +00:00
2022-06-15 07:34:20 +00:00
if form . getvalue ( ' update_roxy_wi ' ) :
2022-11-17 07:34:58 +00:00
import modules . roxywi . roxy as roxy
2020-09-26 17:37:14 +00:00
service = form . getvalue ( ' service ' )
2021-07-23 06:09:44 +00:00
services = [ ' roxy-wi-checker ' ,
' roxy-wi ' ,
' roxy-wi-keep_alive ' ,
' roxy-wi-smon ' ,
' roxy-wi-metrics ' ,
2022-06-15 11:55:17 +00:00
' roxy-wi-portscanner ' ,
2022-09-16 09:41:51 +00:00
' roxy-wi-socket ' ,
' roxy-wi-prometheus-exporter ' ]
2020-09-26 17:37:14 +00:00
if service not in services :
2022-10-17 10:22:58 +00:00
print ( f ' error: { service } is not part of Roxy-WI ' )
2020-09-26 17:37:14 +00:00
sys . exit ( )
2022-11-17 07:34:58 +00:00
roxy . update_roxy_wi ( service )
2020-07-01 20:39:15 +00:00
2018-08-20 06:39:52 +00:00
if form . getvalue ( ' metrics_waf ' ) :
2022-12-06 19:37:45 +00:00
metrics_waf = common . checkAjaxInput ( form . getvalue ( ' metrics_waf ' ) )
sql . update_waf_metrics_enable ( metrics_waf , form . getvalue ( ' enable ' ) )
2020-07-01 20:39:15 +00:00
2018-08-06 16:18:12 +00:00
if form . getvalue ( ' table_metrics ' ) :
2022-08-15 08:50:29 +00:00
service = form . getvalue ( ' service ' )
2022-11-17 07:34:58 +00:00
roxywi_common . check_user_group ( )
group_id = roxywi_common . get_user_group ( id = 1 )
2022-08-15 08:50:29 +00:00
if service in ( ' nginx ' , ' apache ' ) :
2022-11-17 07:34:58 +00:00
metrics = sql . select_service_table_metrics ( service , group_id )
2022-08-15 08:50:29 +00:00
else :
2022-11-17 07:34:58 +00:00
metrics = sql . select_table_metrics ( group_id )
2020-07-01 20:39:15 +00:00
2020-09-26 17:37:14 +00:00
env = Environment ( loader = FileSystemLoader ( ' templates/ajax ' ) , autoescape = True )
template = env . get_template ( ' table_metrics.html ' )
2018-08-06 16:18:12 +00:00
2022-08-15 08:50:29 +00:00
template = template . render ( table_stat = metrics , service = service )
2020-09-26 17:37:14 +00:00
print ( template )
2020-07-01 20:39:15 +00:00
if form . getvalue ( ' metrics_hapwi_ram ' ) :
2020-09-26 17:37:14 +00:00
ip = form . getvalue ( ' ip ' )
metrics = { ' chartData ' : { } }
rams = ' '
2020-07-01 20:39:15 +00:00
2020-09-26 17:37:14 +00:00
if ip == ' 1 ' :
2022-08-15 08:50:29 +00:00
import psutil
rams_list = psutil . virtual_memory ( )
2022-09-13 15:04:30 +00:00
rams + = str ( round ( rams_list . total / 1048576 , 2 ) ) + ' '
rams + = str ( round ( rams_list . used / 1048576 , 2 ) ) + ' '
rams + = str ( round ( rams_list . free / 1048576 , 2 ) ) + ' '
rams + = str ( round ( rams_list . shared / 1048576 , 2 ) ) + ' '
rams + = str ( round ( rams_list . cached / 1048576 , 2 ) ) + ' '
rams + = str ( round ( rams_list . available / 1048576 , 2 ) ) + ' '
2020-09-26 17:37:14 +00:00
else :
2021-03-01 15:03:51 +00:00
commands = [ " free -m |grep Mem |awk ' { print $2,$3,$4,$5,$6,$7} ' " ]
2022-11-17 07:34:58 +00:00
metric , error = server_mod . subprocess_execute ( commands [ 0 ] )
2020-07-01 20:39:15 +00:00
2022-08-15 08:50:29 +00:00
for i in metric :
rams = i
2020-07-01 20:39:15 +00:00
2020-09-26 17:37:14 +00:00
metrics [ ' chartData ' ] [ ' rams ' ] = rams
2020-07-01 20:39:15 +00:00
2020-09-26 17:37:14 +00:00
print ( json . dumps ( metrics ) )
2020-07-01 20:39:15 +00:00
2020-05-10 06:17:07 +00:00
if form . getvalue ( ' metrics_hapwi_cpu ' ) :
2020-09-26 17:37:14 +00:00
ip = form . getvalue ( ' ip ' )
metrics = { ' chartData ' : { } }
cpus = ' '
2020-07-01 20:39:15 +00:00
2020-09-26 17:37:14 +00:00
if ip == ' 1 ' :
2022-08-15 08:50:29 +00:00
import psutil
cpus_list = psutil . cpu_times_percent ( interval = 1 , percpu = False )
cpus + = str ( cpus_list . user ) + ' '
cpus + = str ( cpus_list . system ) + ' '
cpus + = str ( cpus_list . nice ) + ' '
cpus + = str ( cpus_list . idle ) + ' '
cpus + = str ( cpus_list . iowait ) + ' '
cpus + = str ( cpus_list . irq ) + ' '
cpus + = str ( cpus_list . softirq ) + ' '
cpus + = str ( cpus_list . steal ) + ' '
2020-09-26 17:37:14 +00:00
else :
commands = [
" top -b -n 1 |grep Cpu |awk -F ' : ' ' { print $2} ' |awk -F ' ' ' BEGIN { ORS= \" \" ;} { for (i=1;i<=NF;i+=2) print $i} ' " ]
2022-11-17 07:34:58 +00:00
metric , error = server_mod . subprocess_execute ( commands [ 0 ] )
2020-07-01 20:39:15 +00:00
2022-08-15 08:50:29 +00:00
for i in metric :
cpus = i
2020-07-01 20:39:15 +00:00
2020-09-26 17:37:14 +00:00
metrics [ ' chartData ' ] [ ' cpus ' ] = cpus
2020-07-01 20:39:15 +00:00
2020-09-26 17:37:14 +00:00
print ( json . dumps ( metrics ) )
2020-07-01 20:39:15 +00:00
2019-10-05 20:41:07 +00:00
if form . getvalue ( ' new_metrics ' ) :
2020-09-26 17:37:14 +00:00
serv = form . getvalue ( ' server ' )
2022-04-29 10:28:48 +00:00
hostname = sql . get_hostname_by_server_ip ( serv )
2020-11-02 17:01:08 +00:00
time_range = form . getvalue ( ' time_range ' )
2022-07-25 12:20:54 +00:00
metric = sql . select_metrics ( serv , ' haproxy ' , time_range = time_range )
2020-09-26 17:37:14 +00:00
metrics = { ' chartData ' : { } }
metrics [ ' chartData ' ] [ ' labels ' ] = { }
labels = ' '
curr_con = ' '
curr_ssl_con = ' '
sess_rate = ' '
2020-11-02 17:01:08 +00:00
server = ' '
2020-09-26 17:37:14 +00:00
for i in metric :
label = str ( i [ 5 ] )
label = label . split ( ' ' ) [ 1 ]
labels + = label + ' , '
curr_con + = str ( i [ 1 ] ) + ' , '
curr_ssl_con + = str ( i [ 2 ] ) + ' , '
sess_rate + = str ( i [ 3 ] ) + ' , '
server = str ( i [ 0 ] )
metrics [ ' chartData ' ] [ ' labels ' ] = labels
metrics [ ' chartData ' ] [ ' curr_con ' ] = curr_con
metrics [ ' chartData ' ] [ ' curr_ssl_con ' ] = curr_ssl_con
metrics [ ' chartData ' ] [ ' sess_rate ' ] = sess_rate
2022-04-29 10:28:48 +00:00
metrics [ ' chartData ' ] [ ' server ' ] = hostname + ' ( ' + server + ' ) '
2020-09-26 17:37:14 +00:00
print ( json . dumps ( metrics ) )
2020-07-01 20:39:15 +00:00
2021-04-17 17:38:08 +00:00
if form . getvalue ( ' new_http_metrics ' ) :
serv = form . getvalue ( ' server ' )
2022-04-29 10:28:48 +00:00
hostname = sql . get_hostname_by_server_ip ( serv )
2022-12-06 07:23:17 +00:00
time_range = common . checkAjaxInput ( form . getvalue ( ' time_range ' ) )
2022-07-25 08:48:11 +00:00
metric = sql . select_metrics ( serv , ' http_metrics ' , time_range = time_range )
2021-04-17 17:38:08 +00:00
metrics = { ' chartData ' : { } }
metrics [ ' chartData ' ] [ ' labels ' ] = { }
labels = ' '
http_2xx = ' '
http_3xx = ' '
http_4xx = ' '
http_5xx = ' '
server = ' '
for i in metric :
label = str ( i [ 5 ] )
label = label . split ( ' ' ) [ 1 ]
labels + = label + ' , '
http_2xx + = str ( i [ 1 ] ) + ' , '
http_3xx + = str ( i [ 2 ] ) + ' , '
http_4xx + = str ( i [ 3 ] ) + ' , '
http_5xx + = str ( i [ 4 ] ) + ' , '
server = str ( i [ 0 ] )
metrics [ ' chartData ' ] [ ' labels ' ] = labels
metrics [ ' chartData ' ] [ ' http_2xx ' ] = http_2xx
metrics [ ' chartData ' ] [ ' http_3xx ' ] = http_3xx
metrics [ ' chartData ' ] [ ' http_4xx ' ] = http_4xx
metrics [ ' chartData ' ] [ ' http_5xx ' ] = http_5xx
2022-10-30 07:55:26 +00:00
metrics [ ' chartData ' ] [ ' server ' ] = f ' { hostname } ( { server } ) '
2021-04-17 17:38:08 +00:00
print ( json . dumps ( metrics ) )
2022-07-03 06:11:34 +00:00
if any ( ( form . getvalue ( ' new_nginx_metrics ' ) , form . getvalue ( ' new_apache_metrics ' ) , form . getvalue ( ' new_waf_metrics ' ) ) ) :
2021-08-15 09:02:12 +00:00
serv = form . getvalue ( ' server ' )
2022-04-29 10:28:48 +00:00
hostname = sql . get_hostname_by_server_ip ( serv )
2022-12-06 07:23:17 +00:00
time_range = common . checkAjaxInput ( form . getvalue ( ' time_range ' ) )
2022-07-25 08:48:11 +00:00
service = ' '
2022-07-03 06:11:34 +00:00
if form . getvalue ( ' new_nginx_metrics ' ) :
2022-07-25 08:48:11 +00:00
service = ' nginx '
2022-07-03 06:11:34 +00:00
elif form . getvalue ( ' new_apache_metrics ' ) :
2022-07-25 08:48:11 +00:00
service = ' apache '
2022-07-03 06:11:34 +00:00
elif form . getvalue ( ' new_waf_metrics ' ) :
2022-07-25 08:48:11 +00:00
service = ' waf '
metric = sql . select_metrics ( serv , service , time_range = time_range )
2021-08-15 09:02:12 +00:00
metrics = { ' chartData ' : { } }
metrics [ ' chartData ' ] [ ' labels ' ] = { }
labels = ' '
curr_con = ' '
for i in metric :
label = str ( i [ 2 ] )
label = label . split ( ' ' ) [ 1 ]
labels + = label + ' , '
curr_con + = str ( i [ 1 ] ) + ' , '
metrics [ ' chartData ' ] [ ' labels ' ] = labels
metrics [ ' chartData ' ] [ ' curr_con ' ] = curr_con
2022-10-30 07:55:26 +00:00
metrics [ ' chartData ' ] [ ' server ' ] = f ' { hostname } ( { serv } ) '
2021-08-15 09:02:12 +00:00
print ( json . dumps ( metrics ) )
2018-08-08 12:06:23 +00:00
if form . getvalue ( ' get_hap_v ' ) :
2022-12-06 07:23:17 +00:00
print ( service_common . check_haproxy_version ( serv ) )
2020-07-01 20:39:15 +00:00
2023-01-02 20:01:20 +00:00
if form . getvalue ( ' get_service_v ' ) :
service = common . checkAjaxInput ( form . getvalue ( ' get_service_v ' ) )
server_ip = common . is_ip_or_dns ( serv )
2022-01-18 11:59:04 +00:00
2023-01-02 20:01:20 +00:00
service_common . show_service_version ( server_ip , service )
2022-01-18 11:59:04 +00:00
if form . getvalue ( ' get_keepalived_v ' ) :
2022-02-16 14:13:16 +00:00
cmd = [ " sudo /usr/sbin/keepalived -v 2>&1|head -1|awk ' { print $2} ' " ]
2022-11-17 07:34:58 +00:00
print ( server_mod . ssh_command ( serv , cmd ) )
2020-03-27 21:16:04 +00:00
if form . getvalue ( ' get_exporter_v ' ) :
2022-11-17 07:34:58 +00:00
print ( service_common . get_exp_version ( serv , form . getvalue ( ' get_exporter_v ' ) ) )
2020-07-01 20:39:15 +00:00
2018-08-09 12:11:10 +00:00
if form . getvalue ( ' bwlists ' ) :
2022-09-26 09:18:18 +00:00
lib_path = get_config . get_config_var ( ' main ' , ' lib_path ' )
2022-11-17 07:34:58 +00:00
color = common . checkAjaxInput ( form . getvalue ( ' color ' ) )
group = common . checkAjaxInput ( form . getvalue ( ' group ' ) )
bwlists = common . checkAjaxInput ( form . getvalue ( ' bwlists ' ) )
2022-10-25 11:04:22 +00:00
list_path = f " { lib_path } / { sql . get_setting ( ' lists_path ' ) } / { group } / { color } / { bwlists } "
2022-10-17 10:22:58 +00:00
2020-09-26 17:37:14 +00:00
try :
2020-11-02 17:01:08 +00:00
file = open ( list_path , " r " )
2020-09-26 17:37:14 +00:00
file_read = file . read ( )
2020-11-02 17:01:08 +00:00
file . close ( )
2020-09-26 17:37:14 +00:00
print ( file_read )
except IOError :
2022-10-17 10:22:58 +00:00
print ( f " error: Cannot read { color } list " )
2020-07-01 20:39:15 +00:00
2018-08-09 12:11:10 +00:00
if form . getvalue ( ' bwlists_create ' ) :
2022-11-17 07:34:58 +00:00
color = common . checkAjaxInput ( form . getvalue ( ' color ' ) )
2022-09-26 09:18:18 +00:00
lib_path = get_config . get_config_var ( ' main ' , ' lib_path ' )
2022-10-17 10:22:58 +00:00
list_name = f " { form . getvalue ( ' bwlists_create ' ) . split ( ' . ' ) [ 0 ] } .lst "
list_path = f " { lib_path } / { sql . get_setting ( ' lists_path ' ) } / { form . getvalue ( ' group ' ) } / { color } / { list_name } "
2020-09-26 17:37:14 +00:00
try :
2020-11-02 17:01:08 +00:00
open ( list_path , ' a ' ) . close ( )
print ( ' success: ' )
2020-09-26 17:37:14 +00:00
try :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( serv , f ' A new list { color } { list_name } has been created ' , roxywi = 1 , login = 1 )
2020-11-02 17:01:08 +00:00
except Exception :
2020-09-26 17:37:14 +00:00
pass
except IOError as e :
2022-10-17 10:22:58 +00:00
print ( f ' error: Cannot create a new { color } list. { e } , ' )
2020-07-01 20:39:15 +00:00
2018-08-09 12:11:10 +00:00
if form . getvalue ( ' bwlists_save ' ) :
2022-11-17 07:34:58 +00:00
color = common . checkAjaxInput ( form . getvalue ( ' color ' ) )
group = common . checkAjaxInput ( form . getvalue ( ' group ' ) )
bwlists_save = common . checkAjaxInput ( form . getvalue ( ' bwlists_save ' ) )
2022-09-26 09:18:18 +00:00
lib_path = get_config . get_config_var ( ' main ' , ' lib_path ' )
2022-10-17 10:22:58 +00:00
list_path = f " { lib_path } / { sql . get_setting ( ' lists_path ' ) } / { group } / { color } / { bwlists_save } "
2020-09-26 17:37:14 +00:00
try :
2020-11-02 17:01:08 +00:00
with open ( list_path , " w " ) as file :
2020-09-26 17:37:14 +00:00
file . write ( form . getvalue ( ' bwlists_content ' ) )
except IOError as e :
2022-10-17 10:22:58 +00:00
print ( f ' error: Cannot save { color } list. { e } ' )
2020-09-26 17:37:14 +00:00
path = sql . get_setting ( ' haproxy_dir ' ) + " / " + color
servers = [ ]
if serv != ' all ' :
servers . append ( serv )
MASTERS = sql . is_master ( serv )
for master in MASTERS :
2020-10-24 04:11:56 +00:00
if master [ 0 ] is not None :
2020-09-26 17:37:14 +00:00
servers . append ( master [ 0 ] )
else :
2022-11-17 07:34:58 +00:00
server = roxywi_common . get_dick_permit ( )
2020-09-26 17:37:14 +00:00
for s in server :
servers . append ( s [ 2 ] )
for serv in servers :
2022-11-17 07:34:58 +00:00
server_mod . ssh_command ( serv , [ f " sudo mkdir { path } " ] )
server_mod . ssh_command ( serv , [ f " sudo chown $(whoami) { path } " ] )
error = config_mod . upload ( serv , path + " / " + bwlists_save , list_path , dir = ' fullpath ' )
2020-11-02 17:01:08 +00:00
2020-09-26 17:37:14 +00:00
if error :
print ( ' error: Upload fail: %s , ' % error )
else :
print ( ' success: Edited ' + color + ' list was uploaded to ' + serv + ' , ' )
try :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( serv , f ' Has been edited the { color } list { bwlists_save } ' , roxywi = 1 , login = 1 )
2020-11-02 17:01:08 +00:00
except Exception :
2020-09-26 17:37:14 +00:00
pass
2021-11-05 07:03:51 +00:00
server_id = sql . select_server_id_by_ip ( server_ip = serv )
2021-09-15 05:40:51 +00:00
haproxy_enterprise = sql . select_service_setting ( server_id , ' haproxy ' , ' haproxy_enterprise ' )
2020-09-26 17:37:14 +00:00
if haproxy_enterprise == ' 1 ' :
haproxy_service_name = " hapee-2.0-lb "
else :
haproxy_service_name = " haproxy "
if form . getvalue ( ' bwlists_restart ' ) == ' restart ' :
2022-11-17 07:34:58 +00:00
server_mod . ssh_command ( serv , [ f " sudo systemctl restart { haproxy_service_name } " ] )
2020-09-26 17:37:14 +00:00
elif form . getvalue ( ' bwlists_restart ' ) == ' reload ' :
2022-11-17 07:34:58 +00:00
server_mod . ssh_command ( serv , [ f " sudo systemctl reload { haproxy_service_name } " ] )
2020-07-01 20:39:15 +00:00
2020-12-04 03:51:31 +00:00
if form . getvalue ( ' bwlists_delete ' ) :
2022-12-06 07:23:17 +00:00
color = common . checkAjaxInput ( form . getvalue ( ' color ' ) )
bwlists_delete = common . checkAjaxInput ( form . getvalue ( ' bwlists_delete ' ) )
2022-09-26 09:18:18 +00:00
lib_path = get_config . get_config_var ( ' main ' , ' lib_path ' )
2022-12-06 07:23:17 +00:00
group = common . checkAjaxInput ( form . getvalue ( ' group ' ) )
list_path = f " { lib_path } / { sql . get_setting ( ' lists_path ' ) } / { group } / { color } / { bwlists_delete } "
2020-12-04 03:51:31 +00:00
try :
os . remove ( list_path )
except IOError as e :
2022-12-06 07:23:17 +00:00
print ( f ' error: Cannot delete { color } list. { e } , ' )
2020-12-04 03:51:31 +00:00
path = sql . get_setting ( ' haproxy_dir ' ) + " / " + color
servers = [ ]
if serv != ' all ' :
servers . append ( serv )
MASTERS = sql . is_master ( serv )
for master in MASTERS :
if master [ 0 ] is not None :
servers . append ( master [ 0 ] )
else :
2022-11-17 07:34:58 +00:00
server = roxywi_common . get_dick_permit ( )
2020-12-04 03:51:31 +00:00
for s in server :
servers . append ( s [ 2 ] )
for serv in servers :
2022-12-06 07:23:17 +00:00
error = server_mod . ssh_command ( serv , [ f " sudo rm { path } / { bwlists_delete } " ] , return_err = 1 )
2020-12-04 03:51:31 +00:00
if error :
2022-12-06 07:23:17 +00:00
print ( f ' error: Deleting fail: { error } , ' )
2020-12-04 03:51:31 +00:00
else :
2022-12-06 07:23:17 +00:00
print ( f ' success: the { color } list has been deleted on { serv } , ' )
2020-12-04 03:51:31 +00:00
try :
2022-12-06 07:23:17 +00:00
roxywi_common . logging ( serv , f ' has been deleted the { color } list { bwlists_delete } ' , roxywi = 1 , login = 1 )
2020-12-04 03:51:31 +00:00
except Exception :
pass
2018-08-09 12:11:10 +00:00
if form . getvalue ( ' get_lists ' ) :
2022-09-26 09:18:18 +00:00
lib_path = get_config . get_config_var ( ' main ' , ' lib_path ' )
2022-11-17 07:34:58 +00:00
group = common . checkAjaxInput ( form . getvalue ( ' group ' ) )
color = common . checkAjaxInput ( form . getvalue ( ' color ' ) )
2022-10-29 19:06:45 +00:00
list_path = f " { lib_path } / { sql . get_setting ( ' lists_path ' ) } / { group } / { color } "
2022-11-17 07:34:58 +00:00
lists = roxywi_common . get_files ( list_path , " lst " )
2022-10-29 19:06:45 +00:00
for line in lists :
print ( line )
2020-07-01 20:39:15 +00:00
2018-11-08 08:49:03 +00:00
if form . getvalue ( ' get_ldap_email ' ) :
2020-09-26 17:37:14 +00:00
username = form . getvalue ( ' get_ldap_email ' )
import ldap
server = sql . get_setting ( ' ldap_server ' )
port = sql . get_setting ( ' ldap_port ' )
user = sql . get_setting ( ' ldap_user ' )
password = sql . get_setting ( ' ldap_password ' )
ldap_base = sql . get_setting ( ' ldap_base ' )
domain = sql . get_setting ( ' ldap_domain ' )
ldap_search_field = sql . get_setting ( ' ldap_search_field ' )
ldap_class_search = sql . get_setting ( ' ldap_class_search ' )
ldap_user_attribute = sql . get_setting ( ' ldap_user_attribute ' )
2021-02-03 19:25:37 +00:00
ldap_type = sql . get_setting ( ' ldap_type ' )
ldap_proto = ' ldap ' if ldap_type == " 0 " else ' ldaps '
2022-05-25 18:40:55 +00:00
ldap_bind = ldap . initialize ( ' {} :// {} : {} / ' . format ( ldap_proto , server , port ) )
2020-09-26 17:37:14 +00:00
try :
2022-05-25 18:40:55 +00:00
ldap_bind . protocol_version = ldap . VERSION3
ldap_bind . set_option ( ldap . OPT_REFERRALS , 0 )
2020-09-26 17:37:14 +00:00
2022-05-25 18:40:55 +00:00
bind = ldap_bind . simple_bind_s ( user , password )
2020-09-26 17:37:14 +00:00
criteria = " (&(objectClass= " + ldap_class_search + " )( " + ldap_user_attribute + " = " + username + " )) "
attributes = [ ldap_search_field ]
2022-05-25 18:40:55 +00:00
result = ldap_bind . search_s ( ldap_base , ldap . SCOPE_SUBTREE , criteria , attributes )
2020-09-26 17:37:14 +00:00
results = [ entry for dn , entry in result if isinstance ( entry , dict ) ]
try :
print ( ' [ " ' + results [ 0 ] [ ldap_search_field ] [ 0 ] . decode ( " utf-8 " ) + ' " , " ' + domain + ' " ] ' )
2020-11-02 17:01:08 +00:00
except Exception :
2020-09-26 17:37:14 +00:00
print ( ' error: user not found ' )
finally :
2022-05-25 18:54:12 +00:00
ldap_bind . unbind ( )
2019-09-10 05:44:02 +00:00
if form . getvalue ( ' change_waf_mode ' ) :
2022-12-06 19:37:45 +00:00
import modules . roxywi . waf as roxy_waf
2022-08-02 08:53:32 +00:00
2022-12-06 19:37:45 +00:00
roxy_waf . change_waf_mode ( )
2020-07-01 20:39:15 +00:00
2020-07-26 16:26:04 +00:00
error_mess = ' error: All fields must be completed '
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' newuser ' ) is not None :
2022-12-04 18:43:25 +00:00
import modules . roxywi . user as roxywi_user
2020-09-26 17:37:14 +00:00
2022-12-22 19:19:43 +00:00
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 ' ) )
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 )
print ( template )
2020-07-01 20:39:15 +00:00
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' userdel ' ) is not None :
2022-12-04 18:43:25 +00:00
import modules . roxywi . user as roxywi_user
roxywi_user . delete_user ( )
2020-07-01 20:39:15 +00:00
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' updateuser ' ) is not None :
2022-12-04 18:43:25 +00:00
import modules . roxywi . user as roxywi_user
2020-09-26 17:37:14 +00:00
2022-12-04 18:43:25 +00:00
roxywi_user . update_user ( )
2020-07-01 20:39:15 +00:00
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' updatepassowrd ' ) is not None :
2022-12-04 18:43:25 +00:00
import modules . roxywi . user as roxywi_user
2022-08-02 08:53:32 +00:00
2022-12-04 18:43:25 +00:00
roxywi_user . update_user_password ( )
2020-07-01 20:39:15 +00:00
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' newserver ' ) is not None :
2022-12-06 19:37:45 +00:00
hostname = common . checkAjaxInput ( form . getvalue ( ' servername ' ) )
2020-09-26 17:37:14 +00:00
ip = form . getvalue ( ' newip ' )
2022-11-17 07:34:58 +00:00
ip = common . is_ip_or_dns ( ip )
2022-12-06 19:37:45 +00:00
group = common . checkAjaxInput ( form . getvalue ( ' newservergroup ' ) )
scan_server = common . checkAjaxInput ( form . getvalue ( ' scan_server ' ) )
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 ' ) )
2020-09-26 17:37:14 +00:00
page = page . split ( " # " ) [ 0 ]
2022-12-06 19:37:45 +00:00
port = common . checkAjaxInput ( form . getvalue ( ' newport ' ) )
desc = common . checkAjaxInput ( form . getvalue ( ' desc ' ) )
2020-09-26 17:37:14 +00:00
2021-09-15 05:40:51 +00:00
if ip == ' ' :
print ( ' error: IP or DNS name is not valid ' )
sys . exit ( )
2022-09-28 06:38:53 +00:00
try :
2022-12-22 19:19:43 +00:00
if server_mod . create_server ( hostname , ip , group , typeip , enable , master , cred , port , desc , haproxy , nginx , apache , firewall , scan_server ) :
2022-09-28 06:38:53 +00:00
try :
2022-11-17 07:34:58 +00:00
user_subscription = roxywi_common . return_user_status ( )
2022-09-28 06:38:53 +00:00
except Exception as e :
2022-11-17 07:34:58 +00:00
user_subscription = roxywi_common . return_unsubscribed_user_status ( )
roxywi_common . logging ( ' Roxy-WI server ' , f ' Cannot get a user plan: { e } ' , roxywi = 1 )
2022-09-28 06:38:53 +00:00
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 ,
2022-11-17 07:34:58 +00:00
user_status = user_subscription [ ' user_status ' ] ,
user_plan = user_subscription [ ' user_plan ' ] ,
2022-09-28 06:38:53 +00:00
adding = 1 )
print ( template )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ip , f ' A new server { hostname } has been created ' , roxywi = 1 , login = 1 ,
2022-09-28 06:38:53 +00:00
keep_history = 1 , service = ' server ' )
except Exception as e :
print ( e )
2020-07-01 20:39:15 +00:00
2020-02-05 08:15:57 +00:00
if form . getvalue ( ' updatehapwiserver ' ) is not None :
2020-11-16 12:31:52 +00:00
hapwi_id = form . getvalue ( ' updatehapwiserver ' )
2020-09-26 17:37:14 +00:00
active = form . getvalue ( ' active ' )
name = form . getvalue ( ' name ' )
alert = form . getvalue ( ' alert_en ' )
metrics = form . getvalue ( ' metrics ' )
2021-10-18 14:13:18 +00:00
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 )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' The server ' + name + ' has been updated ' , roxywi = 1 , login = 1 , keep_history = 1 ,
2022-09-13 15:04:30 +00:00
service = service )
2020-07-01 20:39:15 +00:00
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' updateserver ' ) is not None :
2020-09-26 17:37:14 +00:00
name = form . getvalue ( ' updateserver ' )
group = form . getvalue ( ' servergroup ' )
typeip = form . getvalue ( ' typeip ' )
haproxy = form . getvalue ( ' haproxy ' )
nginx = form . getvalue ( ' nginx ' )
2022-04-15 09:49:00 +00:00
apache = form . getvalue ( ' apache ' )
2020-11-18 04:45:34 +00:00
firewall = form . getvalue ( ' firewall ' )
2020-09-26 17:37:14 +00:00
enable = form . getvalue ( ' enable ' )
master = form . getvalue ( ' slave ' )
2020-11-16 12:31:52 +00:00
serv_id = form . getvalue ( ' id ' )
2020-09-26 17:37:14 +00:00
cred = form . getvalue ( ' cred ' )
port = form . getvalue ( ' port ' )
2021-05-16 05:27:47 +00:00
protected = form . getvalue ( ' protected ' )
2020-09-26 17:37:14 +00:00
desc = form . getvalue ( ' desc ' )
if name is None or port is None :
print ( error_mess )
else :
2022-09-13 15:04:30 +00:00
sql . update_server ( name , group , typeip , enable , master , serv_id , cred , port , desc , haproxy , nginx , apache ,
firewall , protected )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' the server ' + name , ' has been updated ' , roxywi = 1 , login = 1 )
2021-10-26 18:07:56 +00:00
server_ip = sql . select_server_ip_by_id ( serv_id )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' The server ' + name + ' has been update ' , roxywi = 1 , login = 1 ,
2021-10-26 18:07:56 +00:00
keep_history = 1 , service = ' server ' )
2020-07-01 20:39:15 +00:00
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' serverdel ' ) is not None :
2022-12-06 18:29:14 +00:00
server_id = common . checkAjaxInput ( form . getvalue ( ' serverdel ' ) )
2021-09-15 05:40:51 +00:00
server = sql . select_servers ( id = server_id )
2021-11-05 07:03:51 +00:00
server_ip = ' '
2020-09-26 17:37:14 +00:00
for s in server :
hostname = s [ 1 ]
2021-11-05 07:03:51 +00:00
server_ip = s [ 2 ]
if sql . check_exists_backup ( server_ip ) :
2020-09-26 17:37:14 +00:00
print ( ' warning: Delete the backup first ' )
sys . exit ( )
2023-01-04 08:50:47 +00:00
if sql . check_exists_s3_backup ( server_id ) :
print ( ' warning: Delete the S3 backup first ' )
sys . exit ( )
2021-09-15 05:40:51 +00:00
if sql . delete_server ( server_id ) :
sql . delete_waf_server ( server_id )
sql . delete_port_scanner_settings ( server_id )
2021-11-05 07:03:51 +00:00
sql . delete_waf_rules ( server_ip )
2021-09-15 05:40:51 +00:00
sql . delete_action_history ( server_id )
2021-12-03 10:39:15 +00:00
sql . delete_system_info ( server_id )
2022-01-19 07:16:03 +00:00
sql . delete_service_settings ( server_id )
2020-09-26 17:37:14 +00:00
print ( " Ok " )
2022-12-06 18:29:14 +00:00
roxywi_common . logging ( server_ip , f ' The server { hostname } has been deleted ' , roxywi = 1 , login = 1 )
2020-07-01 20:39:15 +00:00
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' newgroup ' ) is not None :
2022-12-06 18:29:14 +00:00
newgroup = common . checkAjaxInput ( form . getvalue ( ' groupname ' ) )
desc = common . checkAjaxInput ( form . getvalue ( ' newdesc ' ) )
2020-09-26 17:37:14 +00:00
if newgroup is None :
print ( error_mess )
else :
if sql . add_group ( newgroup , desc ) :
env = Environment ( loader = FileSystemLoader ( ' templates/ajax/ ' ) , autoescape = True )
template = env . get_template ( ' /new_group.html ' )
2020-01-18 23:50:43 +00:00
2020-09-26 17:37:14 +00:00
output_from_parsed_template = template . render ( groups = sql . select_groups ( group = newgroup ) )
print ( output_from_parsed_template )
2022-12-06 07:23:17 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , f ' A new group { newgroup } has been created ' , roxywi = 1 , login = 1 )
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' groupdel ' ) is not None :
2022-12-06 18:29:14 +00:00
groupdel = common . checkAjaxInput ( form . getvalue ( ' groupdel ' ) )
2020-09-26 17:37:14 +00:00
group = sql . select_groups ( id = groupdel )
for g in group :
2021-08-02 08:19:22 +00:00
groupname = g . name
2020-09-26 17:37:14 +00:00
if sql . delete_group ( groupdel ) :
print ( " Ok " )
2022-12-06 07:23:17 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , f ' The { groupname } has been deleted ' , roxywi = 1 , login = 1 )
2020-07-01 20:39:15 +00:00
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' updategroup ' ) is not None :
2022-12-06 18:29:14 +00:00
name = common . checkAjaxInput ( form . getvalue ( ' updategroup ' ) )
descript = common . checkAjaxInput ( form . getvalue ( ' descript ' ) )
group_id = common . checkAjaxInput ( form . getvalue ( ' id ' ) )
2020-09-26 17:37:14 +00:00
if name is None :
print ( error_mess )
else :
2021-09-02 08:07:24 +00:00
try :
sql . update_group ( name , descript , group_id )
2022-12-24 11:13:10 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , f ' The { name } has been updated ' , roxywi = 1 , login = 1 )
2021-09-02 08:07:24 +00:00
except Exception as e :
print ( ' error: ' + str ( e ) )
2020-07-01 20:39:15 +00:00
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' new_ssh ' ) :
2022-12-07 07:16:07 +00:00
ssh_mod . create_ssh_cred ( )
2020-07-01 20:39:15 +00:00
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' sshdel ' ) is not None :
2022-12-07 07:16:07 +00:00
ssh_mod . delete_ssh_key ( )
2020-09-26 17:37:14 +00:00
2022-12-07 07:16:07 +00:00
if form . getvalue ( ' updatessh ' ) :
ssh_mod . update_ssh_key ( )
2020-07-01 20:39:15 +00:00
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' ssh_cert ' ) :
2022-12-22 19:19:43 +00:00
user_group = roxywi_common . get_user_group ( )
name = common . checkAjaxInput ( form . getvalue ( ' name ' ) )
key = form . getvalue ( ' ssh_cert ' )
2022-12-23 10:29:41 +00:00
ssh_mod . upload_ssh_key ( name , user_group , key )
2020-07-01 20:39:15 +00:00
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' newtelegram ' ) :
2022-12-06 21:11:41 +00:00
import modules . alerting . alerting as alerting
2022-12-06 21:04:53 +00:00
2022-12-06 18:29:14 +00:00
token = common . checkAjaxInput ( form . getvalue ( ' newtelegram ' ) )
channel = common . checkAjaxInput ( form . getvalue ( ' chanel ' ) )
group = common . checkAjaxInput ( form . getvalue ( ' telegramgroup ' ) )
page = common . checkAjaxInput ( form . getvalue ( ' page ' ) )
2020-09-26 17:37:14 +00:00
page = page . split ( " # " ) [ 0 ]
2022-12-06 21:04:53 +00:00
alerting . add_telegram_channel ( token , channel , group , page )
2020-07-01 20:39:15 +00:00
2021-04-17 17:38:08 +00:00
if form . getvalue ( ' newslack ' ) :
2022-12-06 21:04:53 +00:00
import modules . alerting . alerting as alerting
2022-12-06 18:29:14 +00:00
token = common . checkAjaxInput ( form . getvalue ( ' newslack ' ) )
channel = common . checkAjaxInput ( form . getvalue ( ' chanel ' ) )
group = common . checkAjaxInput ( form . getvalue ( ' slackgroup ' ) )
page = common . checkAjaxInput ( form . getvalue ( ' page ' ) )
2021-04-17 17:38:08 +00:00
page = page . split ( " # " ) [ 0 ]
2022-12-06 21:04:53 +00:00
alerting . add_slack_channel ( token , channel , group , page )
2021-04-17 17:38:08 +00:00
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' telegramdel ' ) is not None :
2022-12-06 21:04:53 +00:00
import modules . alerting . alerting as alerting
channel_id = common . checkAjaxInput ( form . getvalue ( ' telegramdel ' ) )
2022-12-08 19:43:20 +00:00
alerting . delete_telegram_channel ( channel_id )
2020-07-01 20:39:15 +00:00
2021-04-17 17:38:08 +00:00
if form . getvalue ( ' slackdel ' ) is not None :
2022-12-06 21:04:53 +00:00
import modules . alerting . alerting as alerting
channel_id = common . checkAjaxInput ( form . getvalue ( ' slackdel ' ) )
2022-12-08 19:43:20 +00:00
alerting . delete_slack_channel ( channel_id )
2021-04-17 17:38:08 +00:00
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' updatetoken ' ) is not None :
2022-12-09 12:14:05 +00:00
import modules . alerting . alerting as alerting
2022-12-06 18:29:14 +00:00
token = common . checkAjaxInput ( form . getvalue ( ' updatetoken ' ) )
channel = common . checkAjaxInput ( form . getvalue ( ' updategchanel ' ) )
group = common . checkAjaxInput ( form . getvalue ( ' updatetelegramgroup ' ) )
user_id = common . checkAjaxInput ( form . getvalue ( ' id ' ) )
2022-12-09 12:14:05 +00:00
alerting . update_telegram ( token , channel , group , user_id )
2021-04-17 17:38:08 +00:00
if form . getvalue ( ' update_slack_token ' ) is not None :
2022-12-09 12:14:05 +00:00
import modules . alerting . alerting as alerting
2022-12-06 18:29:14 +00:00
token = common . checkAjaxInput ( form . getvalue ( ' update_slack_token ' ) )
channel = common . checkAjaxInput ( form . getvalue ( ' updategchanel ' ) )
group = common . checkAjaxInput ( form . getvalue ( ' updateslackgroup ' ) )
user_id = common . checkAjaxInput ( form . getvalue ( ' id ' ) )
2022-12-09 12:14:05 +00:00
alerting . update_slack ( )
2020-07-01 20:39:15 +00:00
2020-01-18 23:50:43 +00:00
if form . getvalue ( ' updatesettings ' ) is not None :
2022-12-06 18:29:14 +00:00
settings = common . checkAjaxInput ( form . getvalue ( ' updatesettings ' ) )
val = common . checkAjaxInput ( form . getvalue ( ' val ' ) )
2022-11-17 07:34:58 +00:00
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 ,
2022-09-13 15:04:30 +00:00
login = 1 )
2020-09-26 17:37:14 +00:00
print ( " Ok " )
2020-05-10 06:17:07 +00:00
2021-08-15 09:02:12 +00:00
if form . getvalue ( ' getuserservices ' ) :
2022-12-09 12:14:05 +00:00
import modules . roxywi . user as roxy_user
roxy_user . get_user_services ( )
2021-08-15 09:02:12 +00:00
2020-05-10 06:17:07 +00:00
if form . getvalue ( ' getusergroups ' ) :
2022-12-09 12:14:05 +00:00
import modules . roxywi . user as roxy_user
2020-09-26 17:37:14 +00:00
2022-12-09 12:14:05 +00:00
roxy_user . get_user_groups ( )
2020-07-01 20:39:15 +00:00
2020-05-10 06:17:07 +00:00
if form . getvalue ( ' changeUserGroupId ' ) is not None :
2022-12-09 12:14:05 +00:00
import modules . roxywi . user as roxy_user
2020-07-01 20:39:15 +00:00
2022-12-09 12:14:05 +00:00
roxy_user . change_user_group ( )
2021-08-15 09:02:12 +00:00
if form . getvalue ( ' changeUserServicesId ' ) is not None :
2022-12-09 12:14:05 +00:00
import modules . roxywi . user as roxy_user
2021-08-15 09:02:12 +00:00
2022-12-09 12:14:05 +00:00
roxy_user . change_user_services ( )
2020-07-01 20:39:15 +00:00
2021-01-02 16:36:43 +00:00
if form . getvalue ( ' changeUserCurrentGroupId ' ) is not None :
2022-12-09 12:14:05 +00:00
import modules . roxywi . user as roxy_user
2021-01-02 16:36:43 +00:00
2022-12-09 12:14:05 +00:00
roxy_user . change_user_active_group ( )
2021-01-02 16:36:43 +00:00
2020-05-10 06:17:07 +00:00
if form . getvalue ( ' getcurrentusergroup ' ) is not None :
2022-12-09 12:14:05 +00:00
import modules . roxywi . user as roxy_user
2020-09-26 17:37:14 +00:00
cookie = http . cookies . SimpleCookie ( os . environ . get ( " HTTP_COOKIE " ) )
user_id = cookie . get ( ' uuid ' )
group = cookie . get ( ' group ' )
2022-12-09 12:14:05 +00:00
roxy_user . get_user_active_group ( user_id , group )
2020-07-15 04:16:31 +00:00
2020-09-26 17:37:14 +00:00
if form . getvalue ( ' newsmon ' ) is not None :
2022-11-17 07:34:58 +00:00
user_group = roxywi_common . get_user_group ( id = 1 )
2022-12-06 18:29:14 +00:00
server = common . checkAjaxInput ( form . getvalue ( ' newsmon ' ) )
port = common . checkAjaxInput ( form . getvalue ( ' newsmonport ' ) )
enable = common . checkAjaxInput ( form . getvalue ( ' newsmonenable ' ) )
http = common . checkAjaxInput ( form . getvalue ( ' newsmonproto ' ) )
uri = common . checkAjaxInput ( form . getvalue ( ' newsmonuri ' ) )
body = common . checkAjaxInput ( form . getvalue ( ' newsmonbody ' ) )
group = common . checkAjaxInput ( form . getvalue ( ' newsmongroup ' ) )
desc = common . checkAjaxInput ( form . getvalue ( ' newsmondescription ' ) )
telegram = common . checkAjaxInput ( form . getvalue ( ' newsmontelegram ' ) )
slack = common . checkAjaxInput ( form . getvalue ( ' newsmonslack ' ) )
2020-09-26 17:37:14 +00:00
try :
port = int ( port )
2020-11-02 17:01:08 +00:00
except Exception :
2020-09-26 17:37:14 +00:00
print ( ' SMON error: port must number ' )
sys . exit ( )
if port > 65535 or port < 0 :
print ( ' SMON error: port must be 0-65535 ' )
sys . exit ( )
if port == 80 and http == ' https ' :
print ( ' SMON error: Cannot be HTTPS with 80 port ' )
sys . exit ( )
if port == 443 and http == ' http ' :
print ( ' SMON error: Cannot be HTTP with 443 port ' )
sys . exit ( )
2022-02-16 07:46:30 +00:00
last_id = sql . insert_smon ( server , port , enable , http , uri , body , group , desc , telegram , slack , user_group )
2021-08-23 10:25:00 +00:00
if last_id :
2020-09-26 17:37:14 +00:00
env = Environment ( loader = FileSystemLoader ( ' templates ' ) , autoescape = True )
template = env . get_template ( ' ajax/show_new_smon.html ' )
template = template . render (
2021-08-23 10:25:00 +00:00
smon = sql . select_smon_by_id ( last_id ) ,
2022-02-16 07:46:30 +00:00
telegrams = sql . get_user_telegram_by_group ( user_group ) ,
slacks = sql . get_user_slack_by_group ( user_group ) )
2020-09-26 17:37:14 +00:00
print ( template )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' SMON ' , ' Has been add a new server ' + server + ' to SMON ' , roxywi = 1 , login = 1 )
2020-07-15 04:16:31 +00:00
if form . getvalue ( ' smondel ' ) is not None :
2022-11-17 07:34:58 +00:00
user_group = roxywi_common . get_user_group ( id = 1 )
2022-12-06 18:29:14 +00:00
smon_id = common . checkAjaxInput ( form . getvalue ( ' smondel ' ) )
2020-07-15 04:16:31 +00:00
2022-11-17 07:34:58 +00:00
if roxywi_common . check_user_group ( ) :
2022-09-28 06:38:53 +00:00
try :
if sql . delete_smon ( smon_id , user_group ) :
print ( ' Ok ' )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' SMON ' , ' Has been delete server from SMON ' , roxywi = 1 , login = 1 )
2022-09-28 06:38:53 +00:00
except Exception as e :
print ( e )
2020-07-15 04:16:31 +00:00
if form . getvalue ( ' showsmon ' ) is not None :
2022-11-17 07:34:58 +00:00
user_group = roxywi_common . get_user_group ( id = 1 )
2022-12-06 18:29:14 +00:00
sort = common . checkAjaxInput ( form . getvalue ( ' sort ' ) )
2020-09-26 17:37:14 +00:00
env = Environment ( loader = FileSystemLoader ( ' templates ' ) , autoescape = True )
template = env . get_template ( ' ajax/smon_dashboard.html ' )
template = template . render ( smon = sql . smon_list ( user_group ) , sort = sort )
print ( template )
2020-07-15 04:16:31 +00:00
if form . getvalue ( ' updateSmonIp ' ) is not None :
2022-12-06 18:29:14 +00:00
smon_id = common . checkAjaxInput ( form . getvalue ( ' id ' ) )
ip = common . checkAjaxInput ( form . getvalue ( ' updateSmonIp ' ) )
port = common . checkAjaxInput ( form . getvalue ( ' updateSmonPort ' ) )
en = common . checkAjaxInput ( form . getvalue ( ' updateSmonEn ' ) )
http = common . checkAjaxInput ( form . getvalue ( ' updateSmonHttp ' ) )
body = common . checkAjaxInput ( form . getvalue ( ' updateSmonBody ' ) )
telegram = common . checkAjaxInput ( form . getvalue ( ' updateSmonTelegram ' ) )
slack = common . checkAjaxInput ( form . getvalue ( ' updateSmonSlack ' ) )
group = common . checkAjaxInput ( form . getvalue ( ' updateSmonGroup ' ) )
desc = common . checkAjaxInput ( form . getvalue ( ' updateSmonDesc ' ) )
2020-09-26 17:37:14 +00:00
try :
port = int ( port )
2020-11-02 17:01:08 +00:00
except Exception :
2020-09-26 17:37:14 +00:00
print ( ' SMON error: port must number ' )
sys . exit ( )
if port > 65535 or port < 0 :
print ( ' SMON error: port must be 0-65535 ' )
sys . exit ( )
if port == 80 and http == ' https ' :
print ( ' SMON error: Cannot be https with 80 port ' )
sys . exit ( )
if port == 443 and http == ' http ' :
print ( ' SMON error: Cannot be HTTP with 443 port ' )
sys . exit ( )
2022-11-17 07:34:58 +00:00
roxywi_common . check_user_group ( )
2022-09-28 06:38:53 +00:00
try :
if sql . update_smon ( smon_id , ip , port , body , telegram , slack , group , desc , en ) :
print ( " Ok " )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' SMON ' , ' Has been update the server ' + ip + ' to SMON ' , roxywi = 1 , login = 1 )
2022-09-28 06:38:53 +00:00
except Exception as e :
print ( e )
2020-07-15 04:16:31 +00:00
if form . getvalue ( ' showBytes ' ) is not None :
2022-12-25 09:12:13 +00:00
import modules . roxywi . overview as roxywi_overview
server_ip = common . is_ip_or_dns ( form . getvalue ( ' showBytes ' ) )
roxywi_overview . show_haproxy_binout ( server_ip )
2020-09-02 04:26:36 +00:00
2020-12-04 03:51:31 +00:00
if form . getvalue ( ' nginxConnections ' ) :
2022-12-25 09:12:13 +00:00
import modules . roxywi . overview as roxywi_overview
server_ip = common . is_ip_or_dns ( form . getvalue ( ' nginxConnections ' ) )
roxywi_overview . show_nginx_connections ( server_ip )
2022-10-17 10:22:58 +00:00
if form . getvalue ( ' apachekBytes ' ) :
2022-12-25 09:12:13 +00:00
import modules . roxywi . overview as roxywi_overview
server_ip = common . is_ip_or_dns ( form . getvalue ( ' apachekBytes ' ) )
roxywi_overview . show_apache_bytes ( server_ip )
2020-12-04 03:51:31 +00:00
2023-01-17 18:23:53 +00:00
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 )
2020-09-02 04:26:36 +00:00
if form . getvalue ( ' waf_rule_id ' ) :
2022-12-06 19:37:45 +00:00
import modules . roxywi . waf as roxy_waf
2020-09-26 17:37:14 +00:00
2022-12-06 19:37:45 +00:00
roxy_waf . switch_waf_rule ( serv )
2020-09-15 05:56:43 +00:00
2022-08-02 08:53:32 +00:00
if form . getvalue ( ' new_waf_rule ' ) :
2022-12-06 19:37:45 +00:00
import modules . roxywi . waf as roxy_waf
2022-08-02 08:53:32 +00:00
2022-12-06 19:37:45 +00:00
roxy_waf . create_waf_rule ( serv )
2022-08-02 08:53:32 +00:00
2020-09-15 05:56:43 +00:00
if form . getvalue ( ' lets_domain ' ) :
2022-12-06 18:29:14 +00:00
serv = common . checkAjaxInput ( form . getvalue ( ' serv ' ) )
lets_domain = common . checkAjaxInput ( form . getvalue ( ' lets_domain ' ) )
lets_email = common . checkAjaxInput ( form . getvalue ( ' lets_email ' ) )
2020-09-26 17:37:14 +00:00
proxy = sql . get_setting ( ' proxy ' )
2022-12-04 18:43:25 +00:00
ssl_path = common . return_nice_path ( sql . get_setting ( ' cert_path ' ) )
2021-01-10 04:48:18 +00:00
haproxy_dir = sql . get_setting ( ' haproxy_dir ' )
2020-09-26 17:37:14 +00:00
script = " letsencrypt.sh "
2022-10-17 10:22:58 +00:00
proxy_serv = ' '
2022-12-07 07:47:47 +00:00
ssh_settings = ssh_mod . return_ssh_keys_path ( serv )
2020-09-26 17:37:14 +00:00
2022-10-17 10:22:58 +00:00
os . system ( f " cp scripts/ { script } . " )
2020-09-26 17:37:14 +00:00
if proxy is not None and proxy != ' ' and proxy != ' None ' :
proxy_serv = proxy
2022-05-25 18:54:12 +00:00
commands = [
2022-10-17 10:22:58 +00:00
f " chmod +x { script } && ./ { script } PROXY= { proxy_serv } haproxy_dir= { haproxy_dir } DOMAIN= { lets_domain } "
f " EMAIL= { lets_email } SSH_PORT= { ssh_settings [ ' port ' ] } SSL_PATH= { ssl_path } HOST= { serv } USER= { ssh_settings [ ' user ' ] } "
f " PASS= ' { ssh_settings [ ' password ' ] } ' KEY= { ssh_settings [ ' key ' ] } "
2022-05-25 18:54:12 +00:00
]
2020-09-26 17:37:14 +00:00
2022-11-17 07:34:58 +00:00
output , error = server_mod . subprocess_execute ( commands [ 0 ] )
2020-09-26 17:37:14 +00:00
if error :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , error , roxywi = 1 )
2020-09-26 17:37:14 +00:00
print ( error )
else :
2022-05-25 13:55:45 +00:00
for line in output :
2022-05-25 18:40:55 +00:00
if any ( s in line for s in ( " msg " , " FAILED " ) ) :
2020-09-26 17:37:14 +00:00
try :
2022-05-25 13:55:45 +00:00
line = line . split ( ' : ' ) [ 1 ]
line = line . split ( ' " ' ) [ 1 ]
print ( line + " <br> " )
2020-09-26 17:37:14 +00:00
break
2020-11-02 17:01:08 +00:00
except Exception :
2020-09-26 17:37:14 +00:00
print ( output )
break
else :
print ( ' success: Certificate has been created ' )
2022-10-17 10:22:58 +00:00
os . remove ( script )
2020-10-09 15:56:16 +00:00
if form . getvalue ( ' uploadovpn ' ) :
2022-11-17 07:34:58 +00:00
name = common . checkAjaxInput ( form . getvalue ( ' ovpnname ' ) )
2020-10-09 15:56:16 +00:00
2022-12-06 18:29:14 +00:00
ovpn_file = f " { os . path . dirname ( ' /tmp/ ' ) } / { name } .ovpn "
2020-10-09 15:56:16 +00:00
try :
with open ( ovpn_file , " w " ) as conf :
conf . write ( form . getvalue ( ' uploadovpn ' ) )
except IOError as e :
print ( str ( e ) )
print ( ' error: Can \' t save ovpn file ' )
else :
print ( ' success: ovpn file has been saved </div> ' )
try :
cmd = ' sudo openvpn3 config-import --config %s --persistent ' % ovpn_file
2022-11-17 07:34:58 +00:00
server_mod . subprocess_execute ( cmd )
2020-10-09 15:56:16 +00:00
except IOError as e :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , e . args [ 0 ] , roxywi = 1 )
2020-10-09 15:56:16 +00:00
try :
cmd = ' sudo cp %s /etc/openvpn3/ %s .conf ' % ( ovpn_file , name )
2022-11-17 07:34:58 +00:00
server_mod . subprocess_execute ( cmd )
2020-10-09 15:56:16 +00:00
except IOError as e :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , e . args [ 0 ] , roxywi = 1 )
2020-10-09 15:56:16 +00:00
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( " Roxy-WI server " , " has been uploaded a new ovpn file %s " % ovpn_file , roxywi = 1 , login = 1 )
2020-10-09 15:56:16 +00:00
if form . getvalue ( ' openvpndel ' ) is not None :
2022-11-17 07:34:58 +00:00
openvpndel = common . checkAjaxInput ( form . getvalue ( ' openvpndel ' ) )
2020-10-09 15:56:16 +00:00
2022-12-06 18:29:14 +00:00
cmd = f ' sudo openvpn3 config-remove --config /tmp/ { openvpndel } .ovpn --force '
2020-10-09 15:56:16 +00:00
try :
2022-11-17 07:34:58 +00:00
server_mod . subprocess_execute ( cmd )
2020-10-09 15:56:16 +00:00
print ( " Ok " )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( openvpndel , ' has deleted the ovpn file ' , roxywi = 1 , login = 1 )
2020-10-09 15:56:16 +00:00
except IOError as e :
print ( e . args [ 0 ] )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , e . args [ 0 ] , roxywi = 1 )
2020-10-09 15:56:16 +00:00
if form . getvalue ( ' actionvpn ' ) is not None :
2022-11-17 07:34:58 +00:00
openvpn = common . checkAjaxInput ( form . getvalue ( ' openvpnprofile ' ) )
action = common . checkAjaxInput ( form . getvalue ( ' actionvpn ' ) )
2020-10-09 15:56:16 +00:00
if action == ' start ' :
cmd = ' sudo openvpn3 session-start --config /tmp/ %s .ovpn ' % openvpn
elif action == ' restart ' :
cmd = ' sudo openvpn3 session-manage --config /tmp/ %s .ovpn --restart ' % openvpn
elif action == ' disconnect ' :
cmd = ' sudo openvpn3 session-manage --config /tmp/ %s .ovpn --disconnect ' % openvpn
try :
2022-11-17 07:34:58 +00:00
server_mod . subprocess_execute ( cmd )
2020-10-09 15:56:16 +00:00
print ( " success: The " + openvpn + " has been " + action + " ed " )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( openvpn , ' has ' + action + ' the ovpn session ' , roxywi = 1 , login = 1 )
2020-10-09 15:56:16 +00:00
except IOError as e :
print ( e . args [ 0 ] )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , e . args [ 0 ] , roxywi = 1 )
2020-11-02 17:01:08 +00:00
if form . getvalue ( ' scan_ports ' ) is not None :
2022-11-17 07:34:58 +00:00
serv_id = common . checkAjaxInput ( form . getvalue ( ' scan_ports ' ) )
2020-11-02 17:01:08 +00:00
server = sql . select_servers ( id = serv_id )
2021-12-03 10:39:15 +00:00
ip = ' '
2020-11-02 17:01:08 +00:00
for s in server :
ip = s [ 2 ]
cmd = " sudo nmap -sS %s |grep -E ' ^[[:digit:]] ' |sed ' s/ */ /g ' " % ip
2021-01-10 04:48:18 +00:00
cmd1 = " sudo nmap -sS %s |head -5|tail -2 " % ip
2020-11-02 17:01:08 +00:00
2022-11-17 07:34:58 +00:00
stdout , stderr = server_mod . subprocess_execute ( cmd )
stdout1 , stderr1 = server_mod . subprocess_execute ( cmd1 )
2020-11-02 17:01:08 +00:00
if stderr != ' ' :
print ( stderr )
else :
env = Environment ( loader = FileSystemLoader ( ' templates ' ) , autoescape = True )
template = env . get_template ( ' ajax/scan_ports.html ' )
template = template . render ( ports = stdout , info = stdout1 )
print ( template )
2020-12-04 03:51:31 +00:00
if form . getvalue ( ' viewFirewallRules ' ) is not None :
2022-12-07 13:49:42 +00:00
server_mod . show_firewalld_rules ( )
2020-12-26 09:08:17 +00:00
if form . getvalue ( ' geoipserv ' ) is not None :
2022-12-06 18:29:14 +00:00
serv = common . checkAjaxInput ( form . getvalue ( ' geoipserv ' ) )
service = common . checkAjaxInput ( form . getvalue ( ' geoip_service ' ) )
2022-10-07 14:40:45 +00:00
if service in ( ' haproxy ' , ' nginx ' ) :
2022-11-17 07:34:58 +00:00
service_dir = common . return_nice_path ( sql . get_setting ( f ' { service } _dir ' ) )
2020-12-26 09:08:17 +00:00
2022-12-07 13:49:42 +00:00
cmd = [ f " ls { service_dir } geoip/ " ]
2022-11-17 07:34:58 +00:00
print ( server_mod . ssh_command ( serv , cmd ) )
2022-10-07 14:40:45 +00:00
else :
print ( ' warning: select a server and service first ' )
2021-01-09 15:42:08 +00:00
2021-04-03 04:10:37 +00:00
if form . getvalue ( ' nettools_icmp_server_from ' ) :
2022-12-06 18:29:14 +00:00
server_from = common . checkAjaxInput ( form . getvalue ( ' nettools_icmp_server_from ' ) )
server_to = common . checkAjaxInput ( form . getvalue ( ' nettools_icmp_server_to ' ) )
2022-11-17 07:34:58 +00:00
server_to = common . is_ip_or_dns ( server_to )
2022-12-06 18:29:14 +00:00
action = common . checkAjaxInput ( form . getvalue ( ' nettools_action ' ) )
2021-04-03 04:10:37 +00:00
stderr = ' '
2021-12-03 10:39:15 +00:00
action_for_sending = ' '
2021-04-03 04:10:37 +00:00
2021-11-02 20:57:54 +00:00
if server_to == ' ' :
print ( ' warning: enter a correct IP or DNS name ' )
sys . exit ( )
2021-04-03 04:10:37 +00:00
if action == ' nettools_ping ' :
action_for_sending = ' ping -c 4 -W 1 -s 56 -O '
elif action == ' nettools_trace ' :
action_for_sending = ' tracepath -m 10 '
action_for_sending = action_for_sending + server_to
if server_from == ' localhost ' :
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( action_for_sending )
2021-04-03 04:10:37 +00:00
else :
action_for_sending = [ action_for_sending ]
2022-11-28 07:47:18 +00:00
output = server_mod . ssh_command ( server_from , action_for_sending , raw = 1 , timeout = 15 )
2021-04-03 04:10:37 +00:00
if stderr != ' ' :
2022-10-30 07:42:15 +00:00
print ( f ' error: { stderr } ' )
2021-04-03 04:10:37 +00:00
sys . exit ( )
for i in output :
2021-11-02 20:57:54 +00:00
if i == ' ' or i == ' ' :
2021-04-03 04:10:37 +00:00
continue
i = i . strip ( )
2021-11-02 20:57:54 +00:00
if ' PING ' in i :
print ( ' <span style= " color: var(--link-dark-blue); display: block; margin-top: -20px; " > ' )
elif ' no reply ' in i or ' no answer yet ' in i or ' Too many hops ' in i or ' 100 % packet loss ' in i :
print ( ' <span style= " color: var(--red-color); " > ' )
elif ' ms ' in i and ' 100 % packet loss ' not in i :
print ( ' <span style= " color: var(--green-color); " > ' )
else :
print ( ' <span> ' )
print ( i + ' </span><br /> ' )
2021-04-03 04:10:37 +00:00
if form . getvalue ( ' nettools_telnet_server_from ' ) :
2022-12-06 18:29:14 +00:00
server_from = common . checkAjaxInput ( form . getvalue ( ' nettools_telnet_server_from ' ) )
server_to = common . checkAjaxInput ( form . getvalue ( ' nettools_telnet_server_to ' ) )
2022-11-17 07:34:58 +00:00
server_to = common . is_ip_or_dns ( server_to )
2022-12-06 18:29:14 +00:00
port_to = common . checkAjaxInput ( form . getvalue ( ' nettools_telnet_port_to ' ) )
2021-04-03 04:10:37 +00:00
stderr = ' '
2021-11-02 20:57:54 +00:00
if server_to == ' ' :
print ( ' warning: enter a correct IP or DNS name ' )
sys . exit ( )
2021-04-03 04:10:37 +00:00
if server_from == ' localhost ' :
2022-10-30 07:42:15 +00:00
action_for_sending = f ' echo " exit " |nc { server_to } { port_to } -t -w 1s '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( action_for_sending )
2021-04-03 04:10:37 +00:00
else :
2022-10-30 07:42:15 +00:00
action_for_sending = [ f ' echo " exit " |nc { server_to } { port_to } -t -w 1s ' ]
2022-11-17 07:34:58 +00:00
output = server_mod . ssh_command ( server_from , action_for_sending , raw = 1 )
2021-04-03 04:10:37 +00:00
if stderr != ' ' :
2022-10-30 07:42:15 +00:00
print ( f ' error: <b> { stderr [ 5 : ] } </b> ' )
2021-04-03 04:10:37 +00:00
sys . exit ( )
count_string = 0
for i in output :
if i == ' ' :
continue
i = i . strip ( )
if i == ' Ncat: Connection timed out. ' :
2022-10-30 07:42:15 +00:00
print ( f ' error: <b> { i [ 5 : ] } </b> ' )
2021-04-03 04:10:37 +00:00
break
print ( i + ' <br> ' )
count_string + = 1
if count_string > 1 :
break
if form . getvalue ( ' nettools_nslookup_server_from ' ) :
2022-12-06 18:29:14 +00:00
server_from = common . checkAjaxInput ( form . getvalue ( ' nettools_nslookup_server_from ' ) )
dns_name = common . checkAjaxInput ( form . getvalue ( ' nettools_nslookup_name ' ) )
2022-11-17 07:34:58 +00:00
dns_name = common . is_ip_or_dns ( dns_name )
2022-12-06 18:29:14 +00:00
record_type = common . checkAjaxInput ( form . getvalue ( ' nettools_nslookup_record_type ' ) )
2021-04-03 04:10:37 +00:00
stderr = ' '
2021-11-02 20:57:54 +00:00
if dns_name == ' ' :
print ( ' warning: enter a correct DNS name ' )
sys . exit ( )
2022-10-30 07:42:15 +00:00
action_for_sending = f ' dig { dns_name } { record_type } |grep -e " SERVER \ | { dns_name } " '
2021-04-03 04:10:37 +00:00
if server_from == ' localhost ' :
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( action_for_sending )
2021-04-03 04:10:37 +00:00
else :
action_for_sending = [ action_for_sending ]
2022-11-17 07:34:58 +00:00
output = server_mod . ssh_command ( server_from , action_for_sending , raw = 1 )
2021-04-03 04:10:37 +00:00
if stderr != ' ' :
2022-05-25 13:55:45 +00:00
print ( ' error: ' + stderr [ 5 : - 1 ] )
2021-04-03 04:10:37 +00:00
sys . exit ( )
count_string = 0
2022-09-13 15:04:30 +00:00
print (
2022-10-30 07:42:15 +00:00
f ' <b style= " display: block; margin-top:10px; " >The <i style= " color: var(--blue-color) " > { dns_name } </i> domain has the following records:</b> ' )
2021-04-03 04:10:37 +00:00
for i in output :
if ' dig: command not found. ' in i :
print ( ' error: Install bind-utils before using NSLookup ' )
break
if ' ; ' in i and ' ;; SERVER: ' not in i :
continue
if ' SOA ' in i and record_type != ' SOA ' :
2021-11-02 20:57:54 +00:00
print ( ' <b style= " color: red " >There are not any records for this type ' )
2021-04-03 04:10:37 +00:00
break
if ' ;; SERVER: ' in i :
2021-11-02 20:57:54 +00:00
i = i [ 10 : ]
2021-04-03 04:10:37 +00:00
print ( ' <br><b>From NS server:</b><br> ' )
i = i . strip ( )
2021-11-02 20:57:54 +00:00
print ( ' <i> ' + i + ' </i><br> ' )
2021-04-03 04:10:37 +00:00
count_string + = 1
if form . getvalue ( ' portscanner_history_server_id ' ) :
2022-12-06 18:29:14 +00:00
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 ' ) )
2022-10-30 07:42:15 +00:00
user_group_id = [ server [ 3 ] for server in sql . select_servers ( id = server_id ) ]
2021-04-03 04:10:37 +00:00
2022-09-28 06:38:53 +00:00
try :
2022-11-17 07:34:58 +00:00
if sql . insert_port_scanner_settings ( server_id , user_group_id [ 0 ] , enabled , notify , history ) :
2021-04-03 04:10:37 +00:00
print ( ' ok ' )
2022-09-28 06:38:53 +00:00
else :
2022-11-17 07:34:58 +00:00
if sql . update_port_scanner_settings ( server_id , user_group_id [ 0 ] , enabled , notify , history ) :
2022-09-28 06:38:53 +00:00
print ( ' ok ' )
except Exception as e :
print ( e )
2021-04-03 04:10:37 +00:00
2021-01-22 04:01:08 +00:00
if form . getvalue ( ' show_versions ' ) :
2022-11-17 07:34:58 +00:00
import modules . roxywi . roxy as roxy
2021-01-22 04:01:08 +00:00
env = Environment ( loader = FileSystemLoader ( ' templates ' ) )
template = env . get_template ( ' ajax/check_version.html ' )
2022-11-17 07:34:58 +00:00
template = template . render ( versions = roxy . versions ( ) )
2021-02-03 19:25:37 +00:00
print ( template )
if form . getvalue ( ' get_group_name_by_id ' ) :
print ( sql . get_group_name_by_id ( form . getvalue ( ' get_group_name_by_id ' ) ) )
2021-02-15 06:10:00 +00:00
2022-08-02 08:53:32 +00:00
if any ( ( form . getvalue ( ' do_new_name ' ) , form . getvalue ( ' aws_new_name ' ) , form . getvalue ( ' gcore_new_name ' ) ) ) :
2022-11-17 07:34:58 +00:00
roxywi_common . check_user_group ( )
2021-02-15 06:10:00 +00:00
is_add = False
if form . getvalue ( ' do_new_name ' ) :
2022-12-06 18:29:14 +00:00
provider_name = common . checkAjaxInput ( form . getvalue ( ' do_new_name ' ) )
provider_group = common . checkAjaxInput ( form . getvalue ( ' do_new_group ' ) )
provider_token = common . checkAjaxInput ( form . getvalue ( ' do_new_token ' ) )
2021-02-15 06:10:00 +00:00
if sql . add_provider_do ( provider_name , provider_group , provider_token ) :
is_add = True
elif form . getvalue ( ' aws_new_name ' ) :
2022-12-06 18:29:14 +00:00
provider_name = common . checkAjaxInput ( form . getvalue ( ' aws_new_name ' ) )
provider_group = common . checkAjaxInput ( form . getvalue ( ' aws_new_group ' ) )
provider_token = common . checkAjaxInput ( form . getvalue ( ' aws_new_key ' ) )
provider_secret = common . checkAjaxInput ( form . getvalue ( ' aws_new_secret ' ) )
2021-02-15 06:10:00 +00:00
if sql . add_provider_aws ( provider_name , provider_group , provider_token , provider_secret ) :
is_add = True
2021-03-16 14:38:12 +00:00
elif form . getvalue ( ' gcore_new_name ' ) :
2022-12-06 18:29:14 +00:00
provider_name = common . checkAjaxInput ( form . getvalue ( ' gcore_new_name ' ) )
provider_group = common . checkAjaxInput ( form . getvalue ( ' gcore_new_group ' ) )
provider_token = common . checkAjaxInput ( form . getvalue ( ' gcore_new_user ' ) )
provider_pass = common . checkAjaxInput ( form . getvalue ( ' gcore_new_pass ' ) )
2021-03-16 14:38:12 +00:00
if sql . add_provider_gcore ( provider_name , provider_group , provider_token , provider_pass ) :
is_add = True
2021-02-15 06:10:00 +00:00
if is_add :
cookie = http . cookies . SimpleCookie ( os . environ . get ( " HTTP_COOKIE " ) )
user_uuid = cookie . get ( ' uuid ' )
role_id = sql . get_user_role_by_uuid ( user_uuid . value )
2022-08-02 08:53:32 +00:00
params = sql . select_provisioning_params ( )
providers = sql . select_providers ( provider_group , key = provider_token )
2021-02-15 06:10:00 +00:00
if role_id == 1 :
groups = sql . select_groups ( )
else :
groups = ' '
env = Environment ( loader = FileSystemLoader ( ' templates ' ) , autoescape = True )
template = env . get_template ( ' ajax/provisioning/providers.html ' )
2022-09-13 15:04:30 +00:00
template = template . render ( providers = providers , role = role_id , groups = groups , user_group = provider_group ,
adding = 1 , params = params )
2021-02-15 06:10:00 +00:00
print ( template )
if form . getvalue ( ' providerdel ' ) :
2022-11-17 07:34:58 +00:00
roxywi_common . check_user_group ( )
2022-09-28 06:38:53 +00:00
try :
2022-12-06 19:37:45 +00:00
if sql . delete_provider ( common . checkAjaxInput ( form . getvalue ( ' providerdel ' ) ) ) :
2022-09-28 06:38:53 +00:00
print ( ' Ok ' )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , ' Provider has been deleted ' , provisioning = 1 )
2022-09-28 06:38:53 +00:00
except Exception as e :
print ( e )
2021-02-15 06:10:00 +00:00
2021-03-16 14:38:12 +00:00
if form . getvalue ( ' awsinit ' ) or form . getvalue ( ' doinit ' ) or form . getvalue ( ' gcoreinitserver ' ) :
2022-11-17 07:34:58 +00:00
roxywi_common . check_user_group ( )
2021-02-23 04:50:23 +00:00
cmd = ' cd scripts/terraform/ && sudo terraform init -upgrade -no-color '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-02-15 06:10:00 +00:00
if stderr != ' ' :
2022-05-25 13:55:45 +00:00
print ( ' error: ' + stderr )
2021-02-15 06:10:00 +00:00
else :
if " Terraform initialized in an empty directory " in output [ 0 ] :
print ( ' error: There is not need modules ' )
elif " mkdir .terraform: permission denied " in output [ 0 ] :
print ( ' error: Cannot init. Check permission to folder ' )
print ( output [ 0 ] )
if form . getvalue ( ' awsvars ' ) or form . getvalue ( ' awseditvars ' ) :
if form . getvalue ( ' awsvars ' ) :
2022-12-06 18:29:14 +00:00
awsvars = common . checkAjaxInput ( form . getvalue ( ' awsvars ' ) )
group = common . checkAjaxInput ( form . getvalue ( ' aws_create_group ' ) )
provider = common . checkAjaxInput ( form . getvalue ( ' aws_create_provider ' ) )
region = common . checkAjaxInput ( form . getvalue ( ' aws_create_regions ' ) )
size = common . checkAjaxInput ( form . getvalue ( ' aws_create_size ' ) )
oss = common . checkAjaxInput ( form . getvalue ( ' aws_create_oss ' ) )
ssh_name = common . checkAjaxInput ( form . getvalue ( ' aws_create_ssh_name ' ) )
volume_size = common . checkAjaxInput ( form . getvalue ( ' aws_create_volume_size ' ) )
volume_type = common . checkAjaxInput ( form . getvalue ( ' aws_create_volume_type ' ) )
delete_on_termination = common . checkAjaxInput ( form . getvalue ( ' aws_create_delete_on_termination ' ) )
floating_ip = common . checkAjaxInput ( form . getvalue ( ' aws_create_floating_net ' ) )
firewall = common . checkAjaxInput ( form . getvalue ( ' aws_create_firewall ' ) )
public_ip = common . checkAjaxInput ( form . getvalue ( ' aws_create_public_ip ' ) )
2021-02-15 06:10:00 +00:00
elif form . getvalue ( ' awseditvars ' ) :
2022-12-06 18:29:14 +00:00
awsvars = common . checkAjaxInput ( form . getvalue ( ' awseditvars ' ) )
group = common . checkAjaxInput ( form . getvalue ( ' aws_editing_group ' ) )
provider = common . checkAjaxInput ( form . getvalue ( ' aws_editing_provider ' ) )
region = common . checkAjaxInput ( form . getvalue ( ' aws_editing_regions ' ) )
size = common . checkAjaxInput ( form . getvalue ( ' aws_editing_size ' ) )
oss = common . checkAjaxInput ( form . getvalue ( ' aws_editing_oss ' ) )
ssh_name = common . checkAjaxInput ( form . getvalue ( ' aws_editing_ssh_name ' ) )
volume_size = common . checkAjaxInput ( form . getvalue ( ' aws_editing_volume_size ' ) )
volume_type = common . checkAjaxInput ( form . getvalue ( ' aws_editing_volume_type ' ) )
delete_on_termination = common . checkAjaxInput ( form . getvalue ( ' aws_editing_delete_on_termination ' ) )
floating_ip = common . checkAjaxInput ( form . getvalue ( ' aws_editing_floating_net ' ) )
firewall = common . checkAjaxInput ( form . getvalue ( ' aws_editing_firewall ' ) )
public_ip = common . checkAjaxInput ( form . getvalue ( ' aws_editing_public_ip ' ) )
2021-02-15 06:10:00 +00:00
aws_key , aws_secret = sql . select_aws_provider ( provider )
2022-10-29 19:06:45 +00:00
cmd = f ' cd scripts/terraform/ && sudo ansible-playbook var_generator.yml -i inventory -e " region= { region } ' \
f ' group= { group } size= { size } os= { oss } floating_ip= { floating_ip } volume_size= { volume_size } server_name= { awsvars } ' \
f ' AWS_ACCESS_KEY= { aws_key } AWS_SECRET_KEY= { aws_secret } firewall= { firewall } public_ip= { public_ip } ' \
f ' ssh_name= { ssh_name } delete_on_termination= { delete_on_termination } volume_type= { volume_type } cloud=aws " '
2021-02-15 06:10:00 +00:00
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-02-15 06:10:00 +00:00
if stderr != ' ' :
print ( ' error: ' + stderr )
else :
print ( ' ok ' )
2022-03-02 20:09:39 +00:00
2021-02-15 06:10:00 +00:00
if form . getvalue ( ' dovars ' ) or form . getvalue ( ' doeditvars ' ) :
if form . getvalue ( ' dovars ' ) :
dovars = form . getvalue ( ' dovars ' )
group = form . getvalue ( ' do_create_group ' )
provider = form . getvalue ( ' do_create_provider ' )
region = form . getvalue ( ' do_create_regions ' )
size = form . getvalue ( ' do_create_size ' )
oss = form . getvalue ( ' do_create_oss ' )
ssh_name = form . getvalue ( ' do_create_ssh_name ' )
ssh_ids = form . getvalue ( ' do_create_ssh_ids ' )
backup = form . getvalue ( ' do_create_backup ' )
privet_net = form . getvalue ( ' do_create_private_net ' )
floating_ip = form . getvalue ( ' do_create_floating_net ' )
monitoring = form . getvalue ( ' do_create_monitoring ' )
firewall = form . getvalue ( ' do_create_firewall ' )
elif form . getvalue ( ' doeditvars ' ) :
dovars = form . getvalue ( ' doeditvars ' )
group = form . getvalue ( ' do_edit_group ' )
provider = form . getvalue ( ' do_edit_provider ' )
region = form . getvalue ( ' do_edit_regions ' )
size = form . getvalue ( ' do_edit_size ' )
oss = form . getvalue ( ' do_edit_oss ' )
ssh_name = form . getvalue ( ' do_edit_ssh_name ' )
ssh_ids = form . getvalue ( ' do_edit_ssh_ids ' )
backup = form . getvalue ( ' do_edit_backup ' )
privet_net = form . getvalue ( ' do_edit_private_net ' )
floating_ip = form . getvalue ( ' do_edit_floating_net ' )
monitoring = form . getvalue ( ' do_edit_monitoring ' )
firewall = form . getvalue ( ' do_edit_firewall ' )
token = sql . select_do_provider ( provider )
2022-10-29 19:06:45 +00:00
cmd = f ' cd scripts/terraform/ && sudo ansible-playbook var_generator.yml -i inventory -e " region= { region } ' \
f ' group= { group } size= { size } os= { oss } floating_ip= { floating_ip } ssh_ids= { ssh_ids } server_name= { dovars } ' \
f ' token= { token } backup= { backup } monitoring= { monitoring } privet_net= { privet_net } firewall= { firewall } ' \
f ' floating_ip= { floating_ip } ssh_name= { ssh_name } cloud=do " '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-02-15 06:10:00 +00:00
if stderr != ' ' :
2022-10-29 19:06:45 +00:00
print ( f ' error: { stderr } ' )
2021-02-15 06:10:00 +00:00
else :
print ( cmd )
print ( output )
if form . getvalue ( ' dovalidate ' ) or form . getvalue ( ' doeditvalidate ' ) :
if form . getvalue ( ' dovalidate ' ) :
workspace = form . getvalue ( ' dovalidate ' )
group = form . getvalue ( ' do_create_group ' )
elif form . getvalue ( ' doeditvalidate ' ) :
workspace = form . getvalue ( ' doeditvalidate ' )
group = form . getvalue ( ' do_edit_group ' )
2022-10-29 19:06:45 +00:00
cmd = f ' cd scripts/terraform/ && sudo terraform plan -no-color -input=false -target=module.do_module -var-file vars/ { workspace } _ { group } _do.tfvars '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-02-15 06:10:00 +00:00
if stderr != ' ' :
2022-10-29 19:06:45 +00:00
print ( f ' error: { stderr } ' )
2021-02-15 06:10:00 +00:00
else :
print ( ' ok ' )
2022-03-02 20:09:39 +00:00
2021-02-15 06:10:00 +00:00
if form . getvalue ( ' doworkspace ' ) :
workspace = form . getvalue ( ' doworkspace ' )
group = form . getvalue ( ' do_create_group ' )
provider = form . getvalue ( ' do_create_provider ' )
region = form . getvalue ( ' do_create_regions ' )
size = form . getvalue ( ' do_create_size ' )
oss = form . getvalue ( ' do_create_oss ' )
ssh_name = form . getvalue ( ' do_create_ssh_name ' )
ssh_ids = form . getvalue ( ' do_create_ssh_ids ' )
backup = form . getvalue ( ' do_create_backup ' )
privet_net = form . getvalue ( ' do_create_private_net ' )
floating_ip = form . getvalue ( ' do_create_floating_net ' )
monitoring = form . getvalue ( ' do_create_monitoring ' )
firewall = form . getvalue ( ' do_create_firewall ' )
cmd = ' cd scripts/terraform/ && sudo terraform workspace new ' + workspace + ' _ ' + group + ' _do '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-02-15 06:10:00 +00:00
if stderr != ' ' :
stderr = stderr . strip ( )
stderr = repr ( stderr )
stderr = stderr . replace ( " ' " , " " )
stderr = stderr . replace ( " \' " , " " )
sql . update_provisioning_server_status ( ' Error ' , group , workspace , provider )
sql . update_provisioning_server_error ( stderr , group , workspace , provider )
print ( ' error: ' + stderr )
else :
2022-05-25 08:42:12 +00:00
if sql . add_server_do (
region , size , privet_net , floating_ip , ssh_ids , ssh_name , workspace , oss , firewall , monitoring ,
backup , provider , group , ' Creating '
) :
2022-11-17 07:34:58 +00:00
user_params = roxywi_common . get_users_params ( )
2021-02-15 06:10:00 +00:00
new_server = sql . select_provisioned_servers ( new = workspace , group = group , type = ' do ' )
2022-08-02 08:53:32 +00:00
params = sql . select_provisioning_params ( )
2021-02-15 06:10:00 +00:00
2021-03-16 14:38:12 +00:00
env = Environment ( extensions = [ " jinja2.ext.do " ] , loader = FileSystemLoader ( ' templates ' ) )
2021-02-15 06:10:00 +00:00
template = env . get_template ( ' ajax/provisioning/provisioned_servers.html ' )
2022-05-25 08:42:12 +00:00
template = template . render (
servers = new_server , groups = sql . select_groups ( ) , user_group = group ,
2022-11-17 07:34:58 +00:00
providers = sql . select_providers ( group ) , role = user_params [ ' role ' ] , adding = 1 , params = params
2022-05-25 08:42:12 +00:00
)
2021-02-15 06:10:00 +00:00
print ( template )
if form . getvalue ( ' doeditworkspace ' ) :
workspace = form . getvalue ( ' doeditworkspace ' )
group = form . getvalue ( ' do_edit_group ' )
provider = form . getvalue ( ' do_edit_provider ' )
region = form . getvalue ( ' do_edit_regions ' )
size = form . getvalue ( ' do_edit_size ' )
oss = form . getvalue ( ' do_edit_oss ' )
ssh_name = form . getvalue ( ' do_edit_ssh_name ' )
ssh_ids = form . getvalue ( ' do_edit_ssh_ids ' )
backup = form . getvalue ( ' do_edit_backup ' )
privet_net = form . getvalue ( ' do_edit_private_net ' )
floating_ip = form . getvalue ( ' do_edit_floating_net ' )
monitoring = form . getvalue ( ' do_edit_monitoring ' )
firewall = form . getvalue ( ' do_edit_firewall ' )
server_id = form . getvalue ( ' server_id ' )
2022-09-28 06:38:53 +00:00
try :
if sql . update_server_do (
size , privet_net , floating_ip , ssh_ids , ssh_name , oss , firewall , monitoring , backup , provider ,
group , ' Creating ' , server_id
) :
2021-02-15 06:10:00 +00:00
2022-09-28 06:38:53 +00:00
cmd = ' cd scripts/terraform/ && sudo terraform workspace select ' + workspace + ' _ ' + group + ' _do '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-02-15 06:10:00 +00:00
2022-09-28 06:38:53 +00:00
if stderr != ' ' :
stderr = stderr . strip ( )
stderr = repr ( stderr )
stderr = stderr . replace ( " ' " , " " )
stderr = stderr . replace ( " \' " , " " )
sql . update_provisioning_server_status ( ' Error ' , group , workspace , provider )
sql . update_provisioning_server_error ( stderr , group , workspace , provider )
print ( ' error: ' + stderr )
else :
print ( cmd )
print ( output )
except Exception as e :
print ( e )
2021-02-15 06:10:00 +00:00
if form . getvalue ( ' awsvalidate ' ) or form . getvalue ( ' awseditvalidate ' ) :
if form . getvalue ( ' awsvalidate ' ) :
workspace = form . getvalue ( ' awsvalidate ' )
group = form . getvalue ( ' aws_create_group ' )
elif form . getvalue ( ' awseditvalidate ' ) :
workspace = form . getvalue ( ' awseditvalidate ' )
group = form . getvalue ( ' aws_edit_group ' )
2022-10-30 17:22:05 +00:00
cmd = f ' cd scripts/terraform/ && sudo terraform plan -no-color -input=false -target=module.aws_module -var-file vars/ { workspace } _ { group } _aws.tfvars '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-02-15 06:10:00 +00:00
if stderr != ' ' :
print ( ' error: ' + stderr )
else :
print ( ' ok ' )
if form . getvalue ( ' awsworkspace ' ) :
workspace = form . getvalue ( ' awsworkspace ' )
group = form . getvalue ( ' aws_create_group ' )
provider = form . getvalue ( ' aws_create_provider ' )
region = form . getvalue ( ' aws_create_regions ' )
size = form . getvalue ( ' aws_create_size ' )
oss = form . getvalue ( ' aws_create_oss ' )
ssh_name = form . getvalue ( ' aws_create_ssh_name ' )
volume_size = form . getvalue ( ' aws_create_volume_size ' )
2021-03-16 14:38:12 +00:00
volume_type = form . getvalue ( ' aws_create_volume_type ' )
2021-02-15 06:10:00 +00:00
delete_on_termination = form . getvalue ( ' aws_create_delete_on_termination ' )
floating_ip = form . getvalue ( ' aws_create_floating_net ' )
firewall = form . getvalue ( ' aws_create_firewall ' )
public_ip = form . getvalue ( ' aws_create_public_ip ' )
2022-10-30 17:22:05 +00:00
cmd = f ' cd scripts/terraform/ && sudo terraform workspace new { workspace } _ { group } _aws '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-02-15 06:10:00 +00:00
if stderr != ' ' :
stderr = stderr . strip ( )
stderr = repr ( stderr )
stderr = stderr . replace ( " ' " , " " )
stderr = stderr . replace ( " \' " , " " )
sql . update_provisioning_server_status ( ' Error ' , group , workspace , provider )
sql . update_provisioning_server_error ( stderr , group , workspace , provider )
print ( ' error: ' + stderr )
else :
2022-09-28 06:38:53 +00:00
try :
if sql . add_server_aws (
region , size , public_ip , floating_ip , volume_size , ssh_name , workspace , oss , firewall ,
provider , group , ' Creating ' , delete_on_termination , volume_type
) :
2022-11-17 07:34:58 +00:00
user_params = roxywi_common . get_users_params ( )
2022-09-28 06:38:53 +00:00
new_server = sql . select_provisioned_servers ( new = workspace , group = group , type = ' aws ' )
params = sql . select_provisioning_params ( )
2021-02-15 06:10:00 +00:00
2022-09-28 06:38:53 +00:00
env = Environment ( extensions = [ " jinja2.ext.do " ] , loader = FileSystemLoader ( ' templates ' ) )
template = env . get_template ( ' ajax/provisioning/provisioned_servers.html ' )
template = template . render (
servers = new_server , groups = sql . select_groups ( ) , user_group = group ,
2022-11-17 07:34:58 +00:00
providers = sql . select_providers ( group ) , role = user_params [ ' role ' ] , adding = 1 , params = params
2022-09-28 06:38:53 +00:00
)
print ( template )
except Exception as e :
print ( e )
2021-02-15 06:10:00 +00:00
if form . getvalue ( ' awseditworkspace ' ) :
workspace = form . getvalue ( ' awseditworkspace ' )
group = form . getvalue ( ' aws_editing_group ' )
provider = form . getvalue ( ' aws_editing_provider ' )
region = form . getvalue ( ' aws_editing_regions ' )
size = form . getvalue ( ' aws_editing_size ' )
oss = form . getvalue ( ' aws_editing_oss ' )
ssh_name = form . getvalue ( ' aws_editing_ssh_name ' )
volume_size = form . getvalue ( ' aws_editing_volume_size ' )
2021-03-16 14:38:12 +00:00
volume_type = form . getvalue ( ' aws_editing_volume_type ' )
2021-02-15 06:10:00 +00:00
delete_on_termination = form . getvalue ( ' aws_editing_delete_on_termination ' )
floating_ip = form . getvalue ( ' aws_editing_floating_net ' )
firewall = form . getvalue ( ' aws_editing_firewall ' )
public_ip = form . getvalue ( ' aws_editing_public_ip ' )
server_id = form . getvalue ( ' server_id ' )
2022-09-28 06:38:53 +00:00
try :
if sql . update_server_aws (
region , size , public_ip , floating_ip , volume_size , ssh_name , workspace , oss , firewall ,
provider , group , ' Editing ' , server_id , delete_on_termination , volume_type
) :
2021-02-15 06:10:00 +00:00
2022-09-28 06:38:53 +00:00
try :
2022-10-30 17:22:05 +00:00
cmd = f ' cd scripts/terraform/ && sudo terraform workspace select { workspace } _ { group } _aws '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2022-09-28 06:38:53 +00:00
except Exception as e :
print ( ' error: ' + str ( e ) )
2022-03-02 20:09:39 +00:00
2022-09-28 06:38:53 +00:00
if stderr != ' ' :
stderr = stderr . strip ( )
stderr = repr ( stderr )
stderr = stderr . replace ( " ' " , " " )
stderr = stderr . replace ( " \' " , " " )
sql . update_provisioning_server_error ( stderr , group , workspace , provider )
print ( ' error: ' + stderr )
else :
print ( ' ok ' )
except Exception as e :
print ( e )
2021-02-15 06:10:00 +00:00
2021-03-16 14:38:12 +00:00
if (
2022-09-13 15:04:30 +00:00
form . getvalue ( ' awsprovisining ' )
or form . getvalue ( ' awseditingprovisining ' )
or form . getvalue ( ' doprovisining ' )
or form . getvalue ( ' doeditprovisining ' )
or form . getvalue ( ' gcoreprovisining ' )
or form . getvalue ( ' gcoreeditgprovisining ' )
2022-05-22 20:54:47 +00:00
) :
2022-11-17 07:34:58 +00:00
roxywi_common . check_user_group ( )
2022-05-22 20:54:47 +00:00
2021-02-15 06:10:00 +00:00
if form . getvalue ( ' awsprovisining ' ) :
workspace = form . getvalue ( ' awsprovisining ' )
group = form . getvalue ( ' aws_create_group ' )
provider_id = form . getvalue ( ' aws_create_provider ' )
action = ' created '
cloud = ' aws '
state_name = ' aws_instance '
elif form . getvalue ( ' awseditingprovisining ' ) :
workspace = form . getvalue ( ' awseditingprovisining ' )
group = form . getvalue ( ' aws_edit_group ' )
provider_id = form . getvalue ( ' aws_edit_provider ' )
action = ' modified '
cloud = ' aws '
state_name = ' aws_instance '
elif form . getvalue ( ' doprovisining ' ) :
workspace = form . getvalue ( ' doprovisining ' )
group = form . getvalue ( ' do_create_group ' )
provider_id = form . getvalue ( ' do_create_provider ' )
action = ' created '
cloud = ' do '
state_name = ' digitalocean_droplet '
elif form . getvalue ( ' doeditprovisining ' ) :
workspace = form . getvalue ( ' doeditprovisining ' )
group = form . getvalue ( ' do_edit_group ' )
provider_id = form . getvalue ( ' do_edit_provider ' )
action = ' modified '
cloud = ' do '
state_name = ' digitalocean_droplet '
2021-03-16 14:38:12 +00:00
elif form . getvalue ( ' gcoreprovisining ' ) :
workspace = form . getvalue ( ' gcoreprovisining ' )
group = form . getvalue ( ' gcore_create_group ' )
provider_id = form . getvalue ( ' gcore_create_provider ' )
action = ' created '
cloud = ' gcore '
state_name = ' gcore_instance '
elif form . getvalue ( ' gcoreeditgprovisining ' ) :
workspace = form . getvalue ( ' gcoreeditgprovisining ' )
group = form . getvalue ( ' gcore_edit_group ' )
provider_id = form . getvalue ( ' gcore_edit_provider ' )
action = ' modified '
cloud = ' gcore '
state_name = ' gcore_instance '
2021-02-15 06:10:00 +00:00
2022-10-30 07:42:15 +00:00
tfvars = f ' { workspace } _ { group } _ { cloud } .tfvars '
cmd = f ' cd scripts/terraform/ && sudo terraform apply -auto-approve -no-color -input=false -target=module. { cloud } _module -var-file vars/ { tfvars } '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-02-15 06:10:00 +00:00
if stderr != ' ' :
stderr = stderr . strip ( )
stderr = repr ( stderr )
stderr = stderr . replace ( " ' " , " " )
stderr = stderr . replace ( " \' " , " " )
sql . update_provisioning_server_status ( ' Error ' , group , workspace , provider_id )
sql . update_provisioning_server_error ( stderr , group , workspace , provider_id )
2022-05-25 13:55:45 +00:00
print ( ' error: ' + stderr )
2021-02-15 06:10:00 +00:00
else :
if cloud == ' aws ' :
cmd = ' cd scripts/terraform/ && sudo terraform state show module.aws_module.aws_eip.floating_ip[0]|grep -Eo " [0-9] { 1,3} \ .[0-9] { 1,3} \ .[0-9] { 1,3} \ .[0-9] { 1,3} " '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-02-15 06:10:00 +00:00
if stderr != ' ' :
cmd = ' cd scripts/terraform/ && sudo terraform state show module. ' + cloud + ' _module. ' + state_name + ' .hapwi|grep -Eo " [0-9] { 1,3} \ .[0-9] { 1,3} \ .[0-9] { 1,3} \ .[0-9] { 1,3} " '
else :
cmd = ' cd scripts/terraform/ && sudo terraform state show module. ' + cloud + ' _module. ' + state_name + ' .hapwi|grep -Eo " [0-9] { 1,3} \ .[0-9] { 1,3} \ .[0-9] { 1,3} \ .[0-9] { 1,3} " '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-02-15 06:10:00 +00:00
ips = ' '
for ip in output :
ips + = ip
ips + = ' '
2022-08-02 08:53:32 +00:00
if cloud == ' gcore ' :
ips = ips . split ( ' ' ) [ 0 ]
2021-02-15 06:10:00 +00:00
print ( ips )
2022-09-28 06:38:53 +00:00
try :
sql . update_provisioning_server_status ( ' Created ' , group , workspace , provider_id , update_ip = ips )
except Exception as e :
print ( e )
2021-03-16 14:38:12 +00:00
if cloud == ' gcore ' :
cmd = ' cd scripts/terraform/ && sudo terraform state show module.gcore_module.gcore_instance.hapwi|grep " name " |grep -v -e " _name \ |name_ " |head -1 |awk -F " \\ \" " \' { print $2} \' '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2022-05-25 13:55:45 +00:00
print ( ' : ' + output [ 0 ] )
2022-09-28 06:38:53 +00:00
try :
sql . update_provisioning_server_gcore_name ( workspace , output [ 0 ] , group , provider_id )
except Exception as e :
print ( e )
2021-03-16 14:38:12 +00:00
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , f ' Server { workspace } has been { action } ' , provisioning = 1 )
2021-02-15 06:10:00 +00:00
if form . getvalue ( ' provisiningdestroyserver ' ) :
2022-11-17 07:34:58 +00:00
roxywi_common . check_user_group ( )
2021-02-15 06:10:00 +00:00
server_id = form . getvalue ( ' provisiningdestroyserver ' )
workspace = form . getvalue ( ' servername ' )
group = form . getvalue ( ' group ' )
cloud_type = form . getvalue ( ' type ' )
provider_id = form . getvalue ( ' provider_id ' )
2022-10-30 07:55:26 +00:00
tf_workspace = f ' { workspace } _ { group } _ { cloud_type } '
2021-02-15 06:10:00 +00:00
2022-10-30 07:42:15 +00:00
cmd = f ' cd scripts/terraform/ && sudo terraform init -upgrade -no-color && sudo terraform workspace select { tf_workspace } '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-02-15 06:10:00 +00:00
if stderr != ' ' :
stderr = stderr . strip ( )
stderr = repr ( stderr )
stderr = stderr . replace ( " ' " , " " )
stderr = stderr . replace ( " \' " , " " )
sql . update_provisioning_server_status ( ' Error ' , group , workspace , provider_id )
sql . update_provisioning_server_error ( stderr , group , workspace , provider_id )
print ( ' error: ' + stderr )
else :
2022-10-30 07:42:15 +00:00
cmd = f ' cd scripts/terraform/ && sudo terraform destroy -auto-approve -no-color -target=module. { cloud_type } _module -var-file vars/ { tf_workspace } .tfvars '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-02-15 06:10:00 +00:00
if stderr != ' ' :
2022-10-30 07:42:15 +00:00
print ( f ' error: { stderr } ' )
2021-02-15 06:10:00 +00:00
else :
2022-10-30 07:42:15 +00:00
cmd = f ' cd scripts/terraform/ && sudo terraform workspace select default && sudo terraform workspace delete -force { tf_workspace } '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-02-15 06:10:00 +00:00
print ( ' ok ' )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , ' Server has been destroyed ' , provisioning = 1 )
2022-09-28 06:38:53 +00:00
try :
sql . delete_provisioned_servers ( server_id )
except Exception as e :
print ( e )
2021-02-15 06:10:00 +00:00
2021-03-16 14:38:12 +00:00
if form . getvalue ( ' gcorevars ' ) or form . getvalue ( ' gcoreeditvars ' ) :
if form . getvalue ( ' gcorevars ' ) :
gcorevars = form . getvalue ( ' gcorevars ' )
group = form . getvalue ( ' gcore_create_group ' )
provider = form . getvalue ( ' gcore_create_provider ' )
region = form . getvalue ( ' gcore_create_regions ' )
project = form . getvalue ( ' gcore_create_project ' )
size = form . getvalue ( ' gcore_create_size ' )
oss = form . getvalue ( ' gcore_create_oss ' )
ssh_name = form . getvalue ( ' gcore_create_ssh_name ' )
volume_size = form . getvalue ( ' gcore_create_volume_size ' )
volume_type = form . getvalue ( ' gcore_create_volume_type ' )
delete_on_termination = form . getvalue ( ' gcore_create_delete_on_termination ' )
network_name = form . getvalue ( ' gcore_create_network_name ' )
firewall = form . getvalue ( ' gcore_create_firewall ' )
network_type = form . getvalue ( ' gcore_create_network_type ' )
elif form . getvalue ( ' gcoreeditvars ' ) :
gcorevars = form . getvalue ( ' gcoreeditvars ' )
group = form . getvalue ( ' gcore_edit_group ' )
provider = form . getvalue ( ' gcore_edit_provider ' )
region = form . getvalue ( ' gcore_edit_regions ' )
project = form . getvalue ( ' gcore_edit_project ' )
size = form . getvalue ( ' gcore_edit_size ' )
oss = form . getvalue ( ' gcore_edit_oss ' )
ssh_name = form . getvalue ( ' gcore_edit_ssh_name ' )
volume_size = form . getvalue ( ' gcore_edit_volume_size ' )
volume_type = form . getvalue ( ' gcore_edit_volume_type ' )
delete_on_termination = form . getvalue ( ' gcore_edit_delete_on_termination ' )
network_name = form . getvalue ( ' gcore_edit_network_name ' )
firewall = form . getvalue ( ' gcore_edit_firewall ' )
network_type = form . getvalue ( ' gcore_edit_network_type ' )
2022-09-28 06:38:53 +00:00
try :
gcore_user , gcore_pass = sql . select_gcore_provider ( provider )
except Exception as e :
print ( e )
2021-03-16 14:38:12 +00:00
cmd = ' cd scripts/terraform/ && sudo ansible-playbook var_generator.yml -i inventory -e " region= {} ' \
' group= {} size= {} os= {} network_name= {} volume_size= {} server_name= {} username= {} ' \
' pass= {} firewall= {} network_type= {} ssh_name= {} delete_on_termination= {} project= {} volume_type= {} ' \
' cloud=gcore " ' . format ( region , group , size , oss , network_name , volume_size , gcorevars , gcore_user , gcore_pass ,
firewall , network_type , ssh_name , delete_on_termination , project , volume_type )
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-03-16 14:38:12 +00:00
if stderr != ' ' :
2022-10-30 07:42:15 +00:00
print ( f ' error: { stderr } ' )
2021-03-16 14:38:12 +00:00
else :
print ( ' ok ' )
if form . getvalue ( ' gcorevalidate ' ) or form . getvalue ( ' gcoreeditvalidate ' ) :
if form . getvalue ( ' gcorevalidate ' ) :
workspace = form . getvalue ( ' gcorevalidate ' )
group = form . getvalue ( ' gcore_create_group ' )
elif form . getvalue ( ' gcoreeditvalidate ' ) :
workspace = form . getvalue ( ' gcoreeditvalidate ' )
group = form . getvalue ( ' gcore_edit_group ' )
2022-10-30 07:42:15 +00:00
cmd = f ' cd scripts/terraform/ && sudo terraform plan -no-color -input=false -target=module.gcore_module -var-file vars/ { workspace } _ { group } _gcore.tfvars '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-03-16 14:38:12 +00:00
if stderr != ' ' :
2022-10-30 07:42:15 +00:00
print ( f ' error: { stderr } ' )
2021-03-16 14:38:12 +00:00
else :
print ( ' ok ' )
if form . getvalue ( ' gcoreworkspace ' ) :
workspace = form . getvalue ( ' gcoreworkspace ' )
group = form . getvalue ( ' gcore_create_group ' )
provider = form . getvalue ( ' gcore_create_provider ' )
region = form . getvalue ( ' gcore_create_regions ' )
project = form . getvalue ( ' gcore_create_project ' )
size = form . getvalue ( ' gcore_create_size ' )
oss = form . getvalue ( ' gcore_create_oss ' )
ssh_name = form . getvalue ( ' gcore_create_ssh_name ' )
volume_size = form . getvalue ( ' gcore_create_volume_size ' )
volume_type = form . getvalue ( ' gcore_create_volume_type ' )
delete_on_termination = form . getvalue ( ' gcore_create_delete_on_termination ' )
network_type = form . getvalue ( ' gcore_create_network_type ' )
firewall = form . getvalue ( ' gcore_create_firewall ' )
network_name = form . getvalue ( ' gcore_create_network_name ' )
cmd = ' cd scripts/terraform/ && sudo terraform workspace new ' + workspace + ' _ ' + group + ' _gcore '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2021-03-16 14:38:12 +00:00
if stderr != ' ' :
stderr = stderr . strip ( )
stderr = repr ( stderr )
stderr = stderr . replace ( " ' " , " " )
stderr = stderr . replace ( " \' " , " " )
sql . update_provisioning_server_status ( ' Error ' , group , workspace , provider )
sql . update_provisioning_server_error ( stderr , group , workspace , provider )
print ( ' error: ' + stderr )
else :
2022-09-28 06:38:53 +00:00
try :
if sql . add_server_gcore (
project , region , size , network_type , network_name , volume_size , ssh_name , workspace , oss , firewall ,
provider , group , ' Creating ' , delete_on_termination , volume_type
) :
2022-11-17 07:34:58 +00:00
user_params = roxywi_common . get_users_params ( )
2022-09-28 06:38:53 +00:00
new_server = sql . select_provisioned_servers ( new = workspace , group = group , type = ' gcore ' )
params = sql . select_provisioning_params ( )
2021-03-16 14:38:12 +00:00
2022-09-28 06:38:53 +00:00
env = Environment ( extensions = [ " jinja2.ext.do " ] , loader = FileSystemLoader ( ' templates ' ) )
template = env . get_template ( ' ajax/provisioning/provisioned_servers.html ' )
template = template . render ( servers = new_server ,
groups = sql . select_groups ( ) ,
user_group = group ,
providers = sql . select_providers ( group ) ,
2022-11-17 07:34:58 +00:00
role = user_params [ ' role ' ] ,
2022-09-28 06:38:53 +00:00
adding = 1 ,
params = params )
print ( template )
except Exception as e :
print ( e )
2021-03-16 14:38:12 +00:00
if form . getvalue ( ' gcoreeditworkspace ' ) :
workspace = form . getvalue ( ' gcoreeditworkspace ' )
group = form . getvalue ( ' gcore_edit_group ' )
provider = form . getvalue ( ' gcore_edit_provider ' )
region = form . getvalue ( ' gcore_edit_regions ' )
project = form . getvalue ( ' gcore_edit_project ' )
size = form . getvalue ( ' gcore_edit_size ' )
oss = form . getvalue ( ' gcore_edit_oss ' )
ssh_name = form . getvalue ( ' gcore_edit_ssh_name ' )
volume_size = form . getvalue ( ' gcore_edit_volume_size ' )
volume_type = form . getvalue ( ' gcore_edit_volume_type ' )
delete_on_termination = form . getvalue ( ' gcore_edit_delete_on_termination ' )
network_type = form . getvalue ( ' gcore_edit_network_type ' )
firewall = form . getvalue ( ' gcore_edit_firewall ' )
network_name = form . getvalue ( ' gcore_edit_network_name ' )
server_id = form . getvalue ( ' server_id ' )
2022-09-28 06:38:53 +00:00
try :
if sql . update_server_gcore (
region , size , network_type , network_name , volume_size , ssh_name , workspace , oss , firewall ,
provider , group , ' Editing ' , server_id , delete_on_termination , volume_type , project
) :
2021-03-16 14:38:12 +00:00
2022-09-28 06:38:53 +00:00
try :
cmd = ' cd scripts/terraform/ && sudo terraform workspace select ' + workspace + ' _ ' + group + ' _gcore '
2022-11-17 07:34:58 +00:00
output , stderr = server_mod . subprocess_execute ( cmd )
2022-09-28 06:38:53 +00:00
except Exception as e :
print ( ' error: ' + str ( e ) )
2021-03-16 14:38:12 +00:00
2022-09-28 06:38:53 +00:00
if stderr != ' ' :
stderr = stderr . strip ( )
stderr = repr ( stderr )
stderr = stderr . replace ( " ' " , " " )
stderr = stderr . replace ( " \' " , " " )
sql . update_provisioning_server_error ( stderr , group , workspace , provider )
print ( ' error: ' + stderr )
else :
print ( ' ok ' )
except Exception as e :
print ( e )
2021-03-16 14:38:12 +00:00
2021-02-15 06:10:00 +00:00
if form . getvalue ( ' editAwsServer ' ) :
2022-11-17 07:34:58 +00:00
roxywi_common . check_user_group ( )
2021-02-15 06:10:00 +00:00
server_id = form . getvalue ( ' editAwsServer ' )
user_group = form . getvalue ( ' editAwsGroup ' )
2022-08-02 08:53:32 +00:00
params = sql . select_provisioning_params ( )
providers = sql . select_providers ( int ( user_group ) )
server = sql . select_gcore_server ( server_id = server_id )
2021-03-16 14:38:12 +00:00
env = Environment ( extensions = [ " jinja2.ext.do " ] , loader = FileSystemLoader ( ' templates ' ) )
2021-02-15 06:10:00 +00:00
template = env . get_template ( ' ajax/provisioning/aws_edit_dialog.html ' )
2022-08-02 08:53:32 +00:00
template = template . render ( server = server , providers = providers , params = params )
2021-03-16 14:38:12 +00:00
print ( template )
if form . getvalue ( ' editGcoreServer ' ) :
2022-11-17 07:34:58 +00:00
roxywi_common . check_user_group ( )
2021-03-16 14:38:12 +00:00
server_id = form . getvalue ( ' editGcoreServer ' )
user_group = form . getvalue ( ' editGcoreGroup ' )
2022-08-02 08:53:32 +00:00
params = sql . select_provisioning_params ( )
providers = sql . select_providers ( int ( user_group ) )
server = sql . select_gcore_server ( server_id = server_id )
2021-03-16 14:38:12 +00:00
env = Environment ( extensions = [ " jinja2.ext.do " ] , loader = FileSystemLoader ( ' templates ' ) )
template = env . get_template ( ' ajax/provisioning/gcore_edit_dialog.html ' )
2022-08-02 08:53:32 +00:00
template = template . render ( server = server , providers = providers , params = params )
2021-02-15 06:10:00 +00:00
print ( template )
if form . getvalue ( ' editDoServer ' ) :
2022-11-17 07:34:58 +00:00
roxywi_common . check_user_group ( )
2021-02-15 06:10:00 +00:00
server_id = form . getvalue ( ' editDoServer ' )
user_group = form . getvalue ( ' editDoGroup ' )
2022-08-02 08:53:32 +00:00
params = sql . select_provisioning_params ( )
providers = sql . select_providers ( int ( user_group ) )
server = sql . select_do_server ( server_id = server_id )
2021-03-16 14:38:12 +00:00
env = Environment ( extensions = [ " jinja2.ext.do " ] , loader = FileSystemLoader ( ' templates ' ) )
2021-02-15 06:10:00 +00:00
template = env . get_template ( ' ajax/provisioning/do_edit_dialog.html ' )
2022-08-02 08:53:32 +00:00
template = template . render ( server = server , providers = providers , params = params )
2021-02-15 06:10:00 +00:00
print ( template )
if form . getvalue ( ' edit_do_provider ' ) :
2022-11-17 07:34:58 +00:00
roxywi_common . check_user_group ( )
2021-02-15 06:10:00 +00:00
provider_id = form . getvalue ( ' edit_do_provider ' )
new_name = form . getvalue ( ' edit_do_provider_name ' )
new_token = form . getvalue ( ' edit_do_provider_token ' )
2022-09-28 06:38:53 +00:00
try :
if sql . update_do_provider ( new_name , new_token , provider_id ) :
print ( ' ok ' )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , f ' Provider has been renamed. New name is { new_name } ' , provisioning = 1 )
2022-09-28 06:38:53 +00:00
except Exception as e :
print ( e )
2021-02-15 06:10:00 +00:00
2021-03-16 14:38:12 +00:00
if form . getvalue ( ' edit_gcore_provider ' ) :
2022-11-17 07:34:58 +00:00
roxywi_common . check_user_group ( )
2021-03-16 14:38:12 +00:00
provider_id = form . getvalue ( ' edit_gcore_provider ' )
new_name = form . getvalue ( ' edit_gcore_provider_name ' )
new_user = form . getvalue ( ' edit_gcore_provider_user ' )
new_pass = form . getvalue ( ' edit_gcore_provider_pass ' )
2022-09-28 06:38:53 +00:00
try :
if sql . update_gcore_provider ( new_name , new_user , new_pass , provider_id ) :
print ( ' ok ' )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , f ' Provider has been renamed. New name is { new_name } ' , provisioning = 1 )
2022-09-28 06:38:53 +00:00
except Exception as e :
print ( e )
2021-03-16 14:38:12 +00:00
2021-02-15 06:10:00 +00:00
if form . getvalue ( ' edit_aws_provider ' ) :
2022-11-17 07:34:58 +00:00
roxywi_common . check_user_group ( )
2021-02-15 06:10:00 +00:00
provider_id = form . getvalue ( ' edit_aws_provider ' )
new_name = form . getvalue ( ' edit_aws_provider_name ' )
new_key = form . getvalue ( ' edit_aws_provider_key ' )
new_secret = form . getvalue ( ' edit_aws_provider_secret ' )
2022-09-28 06:38:53 +00:00
try :
if sql . update_aws_provider ( new_name , new_key , new_secret , provider_id ) :
print ( ' ok ' )
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( ' Roxy-WI server ' , f ' Provider has been renamed. New name is { new_name } ' , provisioning = 1 )
2022-09-28 06:38:53 +00:00
except Exception as e :
print ( e )
2021-02-20 07:47:33 +00:00
2021-02-23 04:50:23 +00:00
if form . getvalue ( ' loadservices ' ) :
2022-11-17 07:34:58 +00:00
from modules . roxywi . roxy import get_services_status
2021-02-20 07:47:33 +00:00
env = Environment ( loader = FileSystemLoader ( ' templates ' ) )
2021-02-23 04:50:23 +00:00
template = env . get_template ( ' ajax/load_services.html ' )
2022-09-28 06:38:53 +00:00
try :
2022-11-17 07:34:58 +00:00
services = get_services_status ( )
2022-09-28 06:38:53 +00:00
except Exception as e :
print ( e )
2021-02-20 07:47:33 +00:00
2021-02-23 04:50:23 +00:00
template = template . render ( services = services )
print ( template )
if form . getvalue ( ' loadchecker ' ) :
2022-11-17 07:34:58 +00:00
from modules . roxywi . roxy import get_services_status
2022-06-02 09:08:37 +00:00
env = Environment ( loader = FileSystemLoader ( ' templates ' ) , autoescape = True )
2021-02-23 04:50:23 +00:00
template = env . get_template ( ' ajax/load_telegram.html ' )
2022-11-17 07:34:58 +00:00
services = get_services_status ( )
2021-02-23 04:50:23 +00:00
groups = sql . select_groups ( )
page = form . getvalue ( ' page ' )
2022-06-15 07:34:20 +00:00
2022-04-29 10:28:48 +00:00
try :
2022-11-17 07:34:58 +00:00
user_subscription = roxywi_common . return_user_status ( )
2022-04-29 10:28:48 +00:00
except Exception as e :
2022-11-17 07:34:58 +00:00
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 ' ] :
2022-06-15 07:34:20 +00:00
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 )
2022-04-29 10:28:48 +00:00
if page == ' servers.py ' :
2022-11-17 07:34:58 +00:00
user_group = roxywi_common . get_user_group ( id = 1 )
2022-04-29 10:28:48 +00:00
telegrams = sql . get_user_telegram_by_group ( user_group )
slacks = sql . get_user_slack_by_group ( user_group )
2022-11-17 07:34:58 +00:00
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 )
2022-04-29 10:28:48 +00:00
else :
telegrams = sql . select_telegram ( )
slacks = sql . select_slack ( )
2022-11-17 07:34:58 +00:00
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 )
2021-02-23 04:50:23 +00:00
else :
2022-04-29 10:28:48 +00:00
telegrams = ' '
slacks = ' '
2021-02-23 04:50:23 +00:00
template = template . render ( services = services ,
telegrams = telegrams ,
groups = groups ,
2021-04-17 17:38:08 +00:00
slacks = slacks ,
2022-11-17 10:18:04 +00:00
user_status = user_subscription [ ' user_status ' ] ,
user_plan = user_subscription [ ' user_plan ' ] ,
2022-06-15 07:34:20 +00:00
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 ,
2021-02-23 04:50:23 +00:00
page = page )
print ( template )
2021-02-25 04:43:29 +00:00
if form . getvalue ( ' load_update_hapwi ' ) :
2022-11-17 07:34:58 +00:00
import modules . roxywi . roxy as roxy
2021-02-23 04:50:23 +00:00
env = Environment ( loader = FileSystemLoader ( ' templates ' ) )
2022-12-24 11:13:10 +00:00
template = env . get_template ( ' ajax/load_updateroxywi.html ' )
2021-02-23 04:50:23 +00:00
2022-11-17 07:34:58 +00:00
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 ( )
2021-02-20 07:47:33 +00:00
template = template . render ( services = services ,
versions = versions ,
checker_ver = checker_ver ,
smon_ver = smon_ver ,
metrics_ver = metrics_ver ,
2021-04-17 17:38:08 +00:00
portscanner_ver = portscanner_ver ,
2022-03-15 09:51:03 +00:00
socket_ver = socket_ver ,
2022-09-16 09:31:54 +00:00
prometheus_exp_ver = prometheus_exp_ver ,
2021-02-23 04:50:23 +00:00
keep_ver = keep_ver )
2021-02-20 07:47:33 +00:00
print ( template )
if form . getvalue ( ' loadopenvpn ' ) :
2021-09-02 08:07:24 +00:00
import distro
2022-09-13 15:04:30 +00:00
2021-02-20 07:47:33 +00:00
env = Environment ( loader = FileSystemLoader ( ' templates ' ) )
template = env . get_template ( ' ajax/load_openvpn.html ' )
openvpn_configs = ' '
openvpn_sess = ' '
openvpn = ' '
2021-12-04 08:17:33 +00:00
if distro . id ( ) == ' ubuntu ' :
2022-11-17 07:34:58 +00:00
stdout , stderr = server_mod . subprocess_execute ( " apt show openvpn3 2>&1|grep E: " )
2021-12-04 08:17:33 +00:00
elif distro . id ( ) == ' centos ' or distro . id ( ) == ' rhel ' :
2022-11-17 07:34:58 +00:00
stdout , stderr = server_mod . subprocess_execute ( " rpm --query openvpn3-client " )
2021-12-04 08:17:33 +00:00
if (
2022-09-13 15:04:30 +00:00
( stdout [ 0 ] != ' package openvpn3-client is not installed ' and stderr != ' /bin/sh: rpm: command not found ' )
and stdout [ 0 ] != ' E: No packages found '
2022-05-22 20:54:47 +00:00
) :
2021-12-04 08:17:33 +00:00
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 \" ' "
2022-11-17 07:34:58 +00:00
openvpn_configs , stderr = server_mod . subprocess_execute ( cmd )
2021-12-04 08:17:33 +00:00
cmd = " sudo openvpn3 sessions-list|grep -E ' Config|Status ' |awk -F \" : \" ' { print $2} ' |awk ' ORS=NR % 2? \" \" : \" \\ n \" ' | sed ' s/^ //g ' "
2022-11-17 07:34:58 +00:00
openvpn_sess , stderr = server_mod . subprocess_execute ( cmd )
2021-12-04 08:17:33 +00:00
openvpn = stdout [ 0 ]
2021-02-20 07:47:33 +00:00
template = template . render ( openvpn = openvpn ,
openvpn_sess = openvpn_sess ,
openvpn_configs = openvpn_configs )
print ( template )
2021-03-17 17:19:06 +00:00
if form . getvalue ( ' check_telegram ' ) :
2022-11-17 07:34:58 +00:00
import modules . alerting . alerting as alerting
2021-03-17 17:19:06 +00:00
telegram_id = form . getvalue ( ' check_telegram ' )
2021-06-02 07:28:07 +00:00
mess = ' Test message from Roxy-WI '
2022-11-17 07:34:58 +00:00
alerting . telegram_send_mess ( mess , telegram_channel_id = telegram_id )
2021-04-17 17:38:08 +00:00
if form . getvalue ( ' check_slack ' ) :
2022-11-17 07:34:58 +00:00
import modules . alerting . alerting as alerting
2021-04-17 17:38:08 +00:00
slack_id = form . getvalue ( ' check_slack ' )
2021-06-02 07:28:07 +00:00
mess = ' Test message from Roxy-WI '
2022-11-17 07:34:58 +00:00
alerting . slack_send_mess ( mess , slack_channel_id = slack_id )
2021-08-02 08:19:22 +00:00
2022-06-15 07:34:20 +00:00
if form . getvalue ( ' check_rabbitmq_alert ' ) :
2022-11-17 07:34:58 +00:00
import modules . alerting . alerting as alerting
2022-12-06 21:04:53 +00:00
alerting . check_rabbit_alert ( )
2022-06-15 07:34:20 +00:00
if form . getvalue ( ' check_email_alert ' ) :
2022-11-17 07:34:58 +00:00
import modules . alerting . alerting as alerting
2022-12-06 21:04:53 +00:00
alerting . check_email_alert ( )
2022-06-15 07:34:20 +00:00
2021-08-02 08:19:22 +00:00
if form . getvalue ( ' getoption ' ) :
group = form . getvalue ( ' getoption ' )
term = form . getvalue ( ' term ' )
options = sql . select_options ( group = group , term = term )
a = { }
v = 0
for i in options :
a [ v ] = i . options
v = v + 1
2022-09-02 14:12:28 +00:00
2021-08-02 08:19:22 +00:00
print ( json . dumps ( a ) )
if form . getvalue ( ' newtoption ' ) :
option = form . getvalue ( ' newtoption ' )
group = form . getvalue ( ' newoptiongroup ' )
if option is None or group is None :
print ( error_mess )
else :
if sql . insert_new_option ( option , group ) :
env = Environment ( loader = FileSystemLoader ( ' templates/ajax ' ) , autoescape = True )
template = env . get_template ( ' /new_option.html ' )
template = template . render ( options = sql . select_options ( option = option ) )
print ( template )
if form . getvalue ( ' updateoption ' ) is not None :
option = form . getvalue ( ' updateoption ' )
option_id = 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 ( form . getvalue ( ' optiondel ' ) ) :
print ( " Ok " )
if form . getvalue ( ' getsavedserver ' ) :
group = form . getvalue ( ' getsavedserver ' )
term = form . getvalue ( ' term ' )
servers = sql . select_saved_servers ( group = group , term = term )
a = { }
v = 0
for i in servers :
a [ v ] = { }
a [ v ] [ ' value ' ] = { }
a [ v ] [ ' desc ' ] = { }
a [ v ] [ ' value ' ] = i . server
a [ v ] [ ' desc ' ] = i . description
v = v + 1
2022-09-02 14:12:28 +00:00
2021-08-02 08:19:22 +00:00
print ( json . dumps ( a ) )
if form . getvalue ( ' newsavedserver ' ) :
savedserver = form . getvalue ( ' newsavedserver ' )
description = form . getvalue ( ' newsavedserverdesc ' )
group = form . getvalue ( ' newsavedservergroup ' )
if savedserver is None or group is None :
print ( error_mess )
else :
if sql . insert_new_savedserver ( savedserver , description , group ) :
env = Environment ( loader = FileSystemLoader ( ' templates/ajax ' ) , autoescape = True )
template = env . get_template ( ' /new_saved_servers.html ' )
template = template . render ( server = sql . select_saved_servers ( server = savedserver ) )
print ( template )
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 :
2022-12-06 18:29:14 +00:00
if sql . delete_savedserver ( common . checkAjaxInput ( form . getvalue ( ' savedserverdel ' ) ) ) :
2021-08-02 08:19:22 +00:00
print ( " Ok " )
2021-09-15 05:40:51 +00:00
if form . getvalue ( ' show_users_ovw ' ) is not None :
2022-12-06 18:29:14 +00:00
import modules . roxywi . overview as roxywi_overview
2021-09-15 05:40:51 +00:00
2022-12-06 18:29:14 +00:00
roxywi_overview . user_ovw ( )
2021-09-15 05:40:51 +00:00
if form . getvalue ( ' serverSettings ' ) is not None :
2022-12-06 19:37:45 +00:00
server_id = common . checkAjaxInput ( form . getvalue ( ' serverSettings ' ) )
service = common . checkAjaxInput ( form . getvalue ( ' serverSettingsService ' ) )
2021-09-15 05:40:51 +00:00
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 :
2022-12-06 19:37:45 +00:00
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 ' ) )
2021-10-03 18:46:19 +00:00
server_ip = sql . select_server_ip_by_id ( server_id )
2021-09-15 05:40:51 +00:00
if service == ' haproxy ' :
if sql . insert_or_update_service_setting ( server_id , service , ' haproxy_enterprise ' , haproxy_enterprise ) :
print ( ' Ok ' )
2021-10-03 18:46:19 +00:00
if haproxy_enterprise == ' 1 ' :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' Service has been flagged as an Enterprise version ' , roxywi = 1 , login = 1 ,
2021-10-03 18:46:19 +00:00
keep_history = 1 , service = service )
else :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' Service has been flagged as a community version ' , roxywi = 1 , login = 1 ,
2021-10-03 18:46:19 +00:00
keep_history = 1 , service = service )
if sql . insert_or_update_service_setting ( server_id , service , ' dockerized ' , haproxy_dockerized ) :
print ( ' Ok ' )
if haproxy_dockerized == ' 1 ' :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' Service has been flagged as a dockerized ' , roxywi = 1 , login = 1 ,
2021-10-03 18:46:19 +00:00
keep_history = 1 , service = service )
else :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' Service has been flagged as a system service ' , roxywi = 1 , login = 1 ,
2021-10-03 18:46:19 +00:00
keep_history = 1 , service = service )
2022-08-15 08:50:29 +00:00
if sql . insert_or_update_service_setting ( server_id , service , ' restart ' , haproxy_restart ) :
print ( ' Ok ' )
if haproxy_restart == ' 1 ' :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' Restart option is disabled for this service ' , roxywi = 1 , login = 1 ,
2022-08-15 08:50:29 +00:00
keep_history = 1 , service = service )
else :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' Restart option is disabled for this service ' , roxywi = 1 , login = 1 ,
2022-08-15 08:50:29 +00:00
keep_history = 1 , service = service )
2021-10-03 18:46:19 +00:00
if service == ' nginx ' :
if sql . insert_or_update_service_setting ( server_id , service , ' dockerized ' , nginx_dockerized ) :
print ( ' Ok ' )
if nginx_dockerized :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' Service has been flagged as a dockerized ' , roxywi = 1 , login = 1 ,
2021-10-03 18:46:19 +00:00
keep_history = 1 , service = service )
else :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' Service has been flagged as a system service ' , roxywi = 1 , login = 1 ,
2021-10-03 18:46:19 +00:00
keep_history = 1 , service = service )
2022-08-17 04:44:08 +00:00
if sql . insert_or_update_service_setting ( server_id , service , ' restart ' , nginx_restart ) :
2022-08-15 08:50:29 +00:00
print ( ' Ok ' )
if nginx_restart == ' 1 ' :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' Restart option is disabled for this service ' , roxywi = 1 , login = 1 ,
2022-08-15 08:50:29 +00:00
keep_history = 1 , service = service )
else :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' Restart option is disabled for this service ' , roxywi = 1 , login = 1 ,
2022-08-15 08:50:29 +00:00
keep_history = 1 , service = service )
2021-10-17 05:57:51 +00:00
2022-04-15 09:49:00 +00:00
if service == ' apache ' :
if sql . insert_or_update_service_setting ( server_id , service , ' dockerized ' , apache_dockerized ) :
print ( ' Ok ' )
if apache_dockerized :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' Service has been flagged as a dockerized ' , roxywi = 1 , login = 1 ,
2022-04-15 09:49:00 +00:00
keep_history = 1 , service = service )
else :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' Service has been flagged as a system service ' , roxywi = 1 , login = 1 ,
2022-04-15 09:49:00 +00:00
keep_history = 1 , service = service )
2022-08-17 04:44:08 +00:00
if sql . insert_or_update_service_setting ( server_id , service , ' restart ' , apache_restart ) :
2022-08-15 08:50:29 +00:00
print ( ' Ok ' )
if apache_restart == ' 1 ' :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' Restart option is disabled for this service ' , roxywi = 1 , login = 1 ,
2022-08-15 08:50:29 +00:00
keep_history = 1 , service = service )
else :
2022-11-17 07:34:58 +00:00
roxywi_common . logging ( server_ip , ' Restart option is disabled for this service ' , roxywi = 1 , login = 1 ,
2022-08-15 08:50:29 +00:00
keep_history = 1 , service = service )
2022-04-15 09:49:00 +00:00
2021-10-17 05:57:51 +00:00
if act == ' showListOfVersion ' :
2022-12-06 18:29:14 +00:00
service = common . checkAjaxInput ( form . getvalue ( ' service ' ) )
configver = common . checkAjaxInput ( form . getvalue ( ' configver ' ) )
for_delver = common . checkAjaxInput ( form . getvalue ( ' for_delver ' ) )
style = common . checkAjaxInput ( form . getvalue ( ' style ' ) )
2022-04-06 12:32:04 +00:00
users = sql . select_users ( )
2022-08-15 08:50:29 +00:00
service_desc = sql . select_service ( service )
2022-04-06 12:32:04 +00:00
2022-08-15 08:50:29 +00:00
if service in ( ' haproxy ' , ' nginx ' , ' keepalived ' , ' apache ' ) :
2022-09-03 10:14:43 +00:00
configs = sql . select_config_version ( serv , service_desc . slug )
2022-08-15 08:50:29 +00:00
action = f ' versions.py?service= { service_desc . slug } '
if service in ( ' haproxy ' , ' nginx ' , ' apache ' ) :
2022-09-26 09:18:18 +00:00
configs_dir = get_config . get_config_var ( ' configs ' , f ' { service_desc . service } _save_configs_dir ' )
2022-08-15 08:50:29 +00:00
else :
2022-09-26 09:18:18 +00:00
configs_dir = get_config . get_config_var ( ' configs ' , ' kp_save_configs_dir ' )
2022-08-15 08:50:29 +00:00
if service == ' haproxy ' :
2022-11-17 07:34:58 +00:00
files = roxywi_common . get_files ( )
2022-08-15 08:50:29 +00:00
else :
2022-11-17 07:34:58 +00:00
files = roxywi_common . get_files ( configs_dir , ' conf ' )
2021-10-17 05:57:51 +00:00
env = Environment ( loader = FileSystemLoader ( ' templates/ ' ) , autoescape = True ,
extensions = [ " jinja2.ext.loopcontrols " , " jinja2.ext.do " ] )
template = env . get_template ( ' ajax/show_list_version.html ' )
template = template . render ( serv = serv ,
service = service ,
action = action ,
return_files = files ,
configver = configver ,
for_delver = for_delver ,
configs = configs ,
2022-04-06 12:32:04 +00:00
users = users ,
2021-10-17 05:57:51 +00:00
style = style )
2021-12-03 10:39:15 +00:00
print ( template )
if act == ' getSystemInfo ' :
2022-12-01 06:52:24 +00:00
server_mod . show_system_info ( )
2021-12-03 10:39:15 +00:00
if act == ' updateSystemInfo ' :
2022-12-01 06:52:24 +00:00
server_mod . update_system_info ( )
2022-03-02 20:09:39 +00:00
if act == ' findInConfigs ' :
server_ip = serv
2022-11-17 07:34:58 +00:00
server_ip = common . is_ip_or_dns ( server_ip )
2022-03-02 20:09:39 +00:00
finding_words = form . getvalue ( ' words ' )
service = form . getvalue ( ' service ' )
log_path = sql . get_setting ( service + ' _dir ' )
2022-11-17 07:34:58 +00:00
log_path = common . return_nice_path ( log_path )
2022-09-25 18:20:46 +00:00
commands = [ f ' sudo grep " { finding_words } " { log_path } */*.conf -C 2 -Rn ' ]
2022-11-17 07:34:58 +00:00
return_find = server_mod . ssh_command ( server_ip , commands , raw = 1 )
return_find = config_mod . show_finding_in_config ( return_find , grep = finding_words )
2022-03-02 20:09:39 +00:00
if ' error: ' in return_find :
print ( return_find )
sys . exit ( )
print ( return_find )
2022-04-15 09:49:00 +00:00
if act == ' check_service ' :
2022-09-02 14:12:28 +00:00
import socket
from contextlib import closing
2022-04-15 09:49:00 +00:00
cookie = http . cookies . SimpleCookie ( os . environ . get ( " HTTP_COOKIE " ) )
user_uuid = cookie . get ( ' uuid ' )
user_id = sql . get_user_id_by_uuid ( user_uuid . value )
user_services = sql . select_user_services ( user_id )
2022-11-17 07:34:58 +00:00
server_id = common . checkAjaxInput ( form . getvalue ( ' server_id ' ) )
service = common . checkAjaxInput ( form . getvalue ( ' service ' ) )
2022-04-15 09:49:00 +00:00
if ' 1 ' in user_services :
if service == ' haproxy ' :
haproxy_sock_port = sql . get_setting ( ' haproxy_sock_port ' )
cmd = ' echo " show info " |nc %s %s -w 1 -v|grep Name ' % ( serv , haproxy_sock_port )
2022-11-17 07:34:58 +00:00
out = server_mod . subprocess_execute ( cmd )
2022-04-15 09:49:00 +00:00
for k in out [ 0 ] :
if " Name " in k :
print ( ' up ' )
break
else :
print ( ' down ' )
if ' 2 ' in user_services :
if service == ' nginx ' :
nginx_stats_port = sql . get_setting ( ' nginx_stats_port ' )
with closing ( socket . socket ( socket . AF_INET , socket . SOCK_STREAM ) ) as sock :
sock . settimeout ( 5 )
try :
if sock . connect_ex ( ( serv , nginx_stats_port ) ) == 0 :
print ( ' up ' )
else :
print ( ' down ' )
except Exception :
print ( ' down ' )
2022-05-03 07:55:16 +00:00
if ' 4 ' in user_services :
if service == ' apache ' :
apache_stats_port = sql . get_setting ( ' apache_stats_port ' )
with closing ( socket . socket ( socket . AF_INET , socket . SOCK_STREAM ) ) as sock :
sock . settimeout ( 5 )
try :
if sock . connect_ex ( ( serv , apache_stats_port ) ) == 0 :
print ( ' up ' )
else :
print ( ' down ' )
except Exception as e :
print ( ' down ' + str ( e ) )
2022-04-24 07:08:45 +00:00
if form . getvalue ( ' show_sub_ovw ' ) :
2022-12-06 18:29:14 +00:00
import modules . roxywi . overview as roxywi_overview
roxywi_overview . show_sub_ovw ( )
2022-06-15 07:34:20 +00:00
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 ' )
if sql . update_haproxy_checker_settings ( email , telegram_id , slack_id , service_alert , backend_alert ,
2022-06-15 20:02:55 +00:00
maxconn_alert , setting_id ) :
2022-06-15 07:34:20 +00:00
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 ' )
if sql . update_keepalived_checker_settings ( email , telegram_id , slack_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 ' )
if sql . update_service_checker_settings ( email , telegram_id , slack_id , service_alert , setting_id ) :
print ( ' ok ' )
else :
print ( ' error: Cannot update Checker settings ' )