2018-04-16 07:01:44 +00:00
#!/usr/bin/env python3
2018-11-02 08:40:10 +00:00
# -*- coding: utf-8 -*-
2022-07-15 18:55:54 +00:00
import traceback
import sys
2022-07-15 19:44:38 +00:00
import os
2022-07-15 18:55:54 +00:00
2022-11-17 07:34:58 +00:00
from modules . db . db_model import *
2022-11-12 16:11:29 +00:00
import modules . roxy_wi_tools as roxy_wi_tools
2022-11-12 20:06:57 +00:00
2022-11-12 16:11:29 +00:00
def get_setting ( param , * * kwargs ) :
2022-11-17 07:34:58 +00:00
import http . cookies
user_group = ' '
2022-11-12 16:11:29 +00:00
try :
2022-11-17 07:34:58 +00:00
cookie = http . cookies . SimpleCookie ( os . environ . get ( " HTTP_COOKIE " ) )
user_group_id = cookie . get ( ' group ' )
user_group_id1 = user_group_id . value
groups = sql . select_groups ( id = user_group_id1 )
for g in groups :
if g . group_id == int ( user_group_id1 ) :
if kwargs . get ( ' id ' ) :
user_group = g . group_id
else :
user_group = g . name
2022-11-12 16:11:29 +00:00
except Exception :
2022-11-17 07:34:58 +00:00
pass
2022-11-12 16:11:29 +00:00
2022-12-24 11:13:10 +00:00
if user_group == ' ' or param in ( ' lists_path ' , ' ssl_local_path ' , ' proxy ' ) :
2022-11-12 16:11:29 +00:00
user_group = 1
if kwargs . get ( ' all ' ) :
query = Setting . select ( ) . where ( Setting . group == user_group ) . order_by ( Setting . section . desc ( ) )
else :
query = Setting . select ( ) . where ( ( Setting . param == param ) & ( Setting . group == user_group ) )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
if kwargs . get ( ' all ' ) :
return query_res
else :
for setting in query_res :
if param in (
' nginx_stats_port ' , ' session_ttl ' , ' token_ttl ' , ' stats_port ' , ' haproxy_sock_port ' , ' ldap_type ' ,
' ldap_port ' , ' ldap_enable ' , ' log_time_storage ' , ' syslog_server_enable ' , ' smon_check_interval ' ,
' checker_check_interval ' , ' port_scan_interval ' , ' smon_keep_history_range ' , ' checker_keep_history_range ' ,
2023-01-17 18:23:53 +00:00
' portscanner_keep_history_range ' , ' checker_maxconn_threshold ' , ' apache_stats_port ' , ' smon_ssl_expire_warning_alert ' ,
2023-05-03 05:46:32 +00:00
' smon_ssl_expire_critical_alert ' , ' action_keep_history_range '
2022-11-12 16:11:29 +00:00
) :
return int ( setting . value )
else :
return setting . value
2018-04-23 16:20:19 +00:00
2022-11-12 16:11:29 +00:00
time_zone = get_setting ( ' time_zone ' )
get_date = roxy_wi_tools . GetDate ( time_zone )
2020-10-02 12:39:00 +00:00
2022-11-12 20:06:57 +00:00
2021-08-07 07:41:28 +00:00
def out_error ( error ) :
error = str ( error )
2022-07-15 18:55:54 +00:00
exc_type , exc_obj , exc_tb = sys . exc_info ( )
file_name = os . path . split ( exc_tb . tb_frame . f_code . co_filename ) [ 1 ]
stk = traceback . extract_tb ( exc_tb , 1 )
function_name = stk [ 0 ] [ 2 ]
2022-09-28 06:38:53 +00:00
error = f ' { error } in function: { function_name } in file: { file_name } '
raise Exception ( f ' error: { error } ' )
2021-08-07 07:41:28 +00:00
2021-01-02 16:36:43 +00:00
def add_user ( user , email , password , role , activeuser , group ) :
2018-11-08 08:49:03 +00:00
if password != ' aduser ' :
2021-08-02 08:19:22 +00:00
try :
2022-11-12 20:06:57 +00:00
hashed_pass = roxy_wi_tools . Tools . get_hash ( password )
2023-03-03 20:03:41 +00:00
last_id = User . insert (
2022-11-12 20:06:57 +00:00
username = user , email = email , password = hashed_pass , role = role , activeuser = activeuser , groups = group
2022-05-25 08:21:44 +00:00
) . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2023-03-03 20:03:41 +00:00
else :
return last_id
2018-04-17 03:46:57 +00:00
else :
2021-08-02 08:19:22 +00:00
try :
2023-03-03 20:03:41 +00:00
last_id = User . insert (
2022-10-15 13:13:38 +00:00
username = user , email = email , role = role , ldap_user = 1 , activeuser = activeuser , groups = group
2022-05-25 08:21:44 +00:00
) . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2023-03-03 20:03:41 +00:00
else :
return last_id
2020-10-02 12:39:00 +00:00
2021-08-02 08:19:22 +00:00
def update_user ( user , email , role , user_id , activeuser ) :
2023-03-06 09:59:08 +00:00
user_update = User . update ( username = user , email = email , role = role , activeuser = activeuser ) . where ( User . user_id == user_id )
try :
user_update . execute ( )
except Exception as e :
out_error ( e )
return False
else :
return True
def update_user_from_admin_area ( user , email , user_id , activeuser ) :
user_update = User . update ( username = user , email = email , activeuser = activeuser ) . where ( User . user_id == user_id )
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
user_update . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-05-10 06:17:07 +00:00
return False
else :
return True
2020-10-02 12:39:00 +00:00
2021-08-02 08:19:22 +00:00
def delete_user_groups ( user_id ) :
2021-09-15 05:40:51 +00:00
group_for_delete = UserGroups . delete ( ) . where ( UserGroups . user_id == user_id )
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
group_for_delete . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-04-17 03:46:57 +00:00
return False
else :
return True
2020-10-02 12:39:00 +00:00
2021-01-02 16:36:43 +00:00
def update_user_current_groups ( groups , user_uuid ) :
user_id = get_user_id_by_uuid ( user_uuid )
try :
2021-08-02 08:19:22 +00:00
user_update = User . update ( groups = groups ) . where ( User . user_id == user_id )
user_update . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-01-02 16:36:43 +00:00
return False
else :
return True
2021-08-02 08:19:22 +00:00
def update_user_password ( password , user_id ) :
2020-10-02 12:39:00 +00:00
try :
2022-11-12 20:06:57 +00:00
hashed_pass = roxy_wi_tools . Tools . get_hash ( password )
user_update = User . update ( password = hashed_pass ) . where ( User . user_id == user_id )
2021-08-02 08:19:22 +00:00
user_update . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2019-09-27 19:09:49 +00:00
return False
else :
return True
2020-10-02 12:39:00 +00:00
2018-04-16 07:01:44 +00:00
2021-08-02 08:19:22 +00:00
def delete_user ( user_id ) :
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
user_for_delete = User . delete ( ) . where ( User . user_id == user_id )
user_for_delete . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2019-12-30 15:52:01 +00:00
return False
2020-08-10 18:32:44 +00:00
else :
2018-04-16 07:01:44 +00:00
return True
2020-10-25 07:14:55 +00:00
2020-10-02 12:39:00 +00:00
2018-04-16 07:01:44 +00:00
def add_group ( name , description ) :
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
last_insert = Groups . insert ( name = name , description = description )
last_insert_id = last_insert . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-04-17 03:46:57 +00:00
return False
else :
2021-08-02 08:19:22 +00:00
add_setting_for_new_group ( last_insert_id )
2018-04-17 03:46:57 +00:00
return True
2020-08-10 18:32:44 +00:00
def add_setting_for_new_group ( group_id ) :
group_id = str ( group_id )
2021-08-02 08:19:22 +00:00
data_source = [
{ ' param ' : ' time_zone ' , ' value ' : ' UTC ' , ' section ' : ' main ' , ' desc ' : ' Time Zone ' , ' group ' : group_id } ,
2022-05-23 16:16:21 +00:00
{ ' param ' : ' proxy ' , ' value ' : ' ' , ' section ' : ' main ' ,
2023-03-12 11:18:03 +00:00
' desc ' : ' IP address and port of the proxy server . Use proto://ip:port ' , ' group ' : group_id } ,
{ ' param ' : ' session_ttl ' , ' value ' : ' 5 ' , ' section ' : ' main ' , ' desc ' : ' TTL for a user session (in days) ' , ' group ' : group_id } ,
{ ' param ' : ' token_ttl ' , ' value ' : ' 5 ' , ' section ' : ' main ' , ' desc ' : ' TTL for a user token (in days) ' , ' group ' : group_id } ,
2021-08-02 08:19:22 +00:00
{ ' param ' : ' tmp_config_path ' , ' value ' : ' /tmp/ ' , ' section ' : ' main ' ,
2022-05-28 07:59:05 +00:00
' desc ' : ' Path to the temporary directory. A valid path should be specified as the value of this parameter. '
2023-03-12 11:18:03 +00:00
' The directory must be owned by the user specified in SSH settings ' , ' group ' : group_id } ,
2021-08-02 08:19:22 +00:00
{ ' param ' : ' cert_path ' , ' value ' : ' /etc/ssl/certs/ ' , ' section ' : ' main ' ,
2023-03-12 11:18:03 +00:00
' desc ' : ' Path to SSL dir. Folder owner must be a user which set in the SSH settings. The path must be valid ' , ' group ' : group_id } ,
2022-03-28 18:09:58 +00:00
{ ' param ' : ' haproxy_path_logs ' , ' value ' : ' /var/log/haproxy/ ' , ' section ' : ' haproxy ' ,
2022-05-23 18:23:01 +00:00
' desc ' : ' The default local path for saving logs ' , ' group ' : group_id } ,
2021-08-02 08:19:22 +00:00
{ ' param ' : ' syslog_server_enable ' , ' value ' : ' 0 ' , ' section ' : ' logs ' ,
2022-05-23 18:23:01 +00:00
' desc ' : ' Enable getting logs from a syslog server; (0 - no, 1 - yes) ' , ' group ' : group_id } ,
2023-03-12 11:18:03 +00:00
{ ' param ' : ' syslog_server ' , ' value ' : ' ' , ' section ' : ' logs ' , ' desc ' : ' IP address of the syslog_server ' , ' group ' : group_id } ,
2022-05-23 16:16:21 +00:00
{ ' param ' : ' stats_user ' , ' value ' : ' admin ' , ' section ' : ' haproxy ' ,
2023-03-12 11:18:03 +00:00
' desc ' : ' Username for accessing HAProxy stats page ' , ' group ' : group_id } ,
2021-08-02 08:19:22 +00:00
{ ' param ' : ' stats_password ' , ' value ' : ' password ' , ' section ' : ' haproxy ' ,
2022-05-23 18:23:01 +00:00
' desc ' : ' Password for accessing HAProxy stats page ' , ' group ' : group_id } ,
2023-03-12 11:18:03 +00:00
{ ' param ' : ' stats_port ' , ' value ' : ' 8085 ' , ' section ' : ' haproxy ' , ' desc ' : ' Port for HAProxy stats page ' , ' group ' : group_id } ,
{ ' param ' : ' stats_page ' , ' value ' : ' stats ' , ' section ' : ' haproxy ' , ' desc ' : ' URI for HAProxy stats page ' , ' group ' : group_id } ,
{ ' param ' : ' haproxy_dir ' , ' value ' : ' /etc/haproxy ' , ' section ' : ' haproxy ' , ' desc ' : ' Path to the HAProxy directory ' , ' group ' : group_id } ,
{ ' param ' : ' haproxy_config_path ' , ' value ' : ' /etc/haproxy/haproxy.cfg ' , ' section ' : ' haproxy ' , ' desc ' : ' Path to the HAProxy configuration file ' , ' group ' : group_id } ,
{ ' param ' : ' server_state_file ' , ' value ' : ' /etc/haproxy/haproxy.state ' , ' section ' : ' haproxy ' , ' desc ' : ' Path to the HAProxy state file ' , ' group ' : group_id } ,
{ ' param ' : ' haproxy_sock ' , ' value ' : ' /var/run/haproxy.sock ' , ' section ' : ' haproxy ' , ' desc ' : ' Path to the HAProxy sock file ' , ' group ' : group_id } ,
{ ' param ' : ' haproxy_sock_port ' , ' value ' : ' 1999 ' , ' section ' : ' haproxy ' , ' desc ' : ' Socket port for HAProxy ' , ' group ' : group_id } ,
{ ' param ' : ' haproxy_container_name ' , ' value ' : ' haproxy ' , ' section ' : ' haproxy ' , ' desc ' : ' Docker container name for HAProxy service ' , ' group ' : group_id } ,
{ ' param ' : ' maxmind_key ' , ' value ' : ' ' , ' section ' : ' main ' ,
' desc ' : ' License key for downloading GeoIP DB. You can create it on maxmind.com ' , ' group ' : group_id } ,
{ ' param ' : ' nginx_path_logs ' , ' value ' : ' /var/log/nginx/ ' , ' section ' : ' nginx ' , ' desc ' : ' NGINX error log ' , ' group ' : group_id } ,
{ ' param ' : ' nginx_stats_user ' , ' value ' : ' admin ' , ' section ' : ' nginx ' , ' desc ' : ' Username for accessing NGINX stats page ' , ' group ' : group_id } ,
{ ' param ' : ' nginx_stats_password ' , ' value ' : ' password ' , ' section ' : ' nginx ' , ' desc ' : ' Password for accessing NGINX stats page ' , ' group ' : group_id } ,
{ ' param ' : ' nginx_stats_port ' , ' value ' : ' 8086 ' , ' section ' : ' nginx ' , ' desc ' : ' Stats port for web page NGINX ' , ' group ' : group_id } ,
{ ' param ' : ' nginx_stats_page ' , ' value ' : ' stats ' , ' section ' : ' nginx ' , ' desc ' : ' URI Stats for web page NGINX ' , ' group ' : group_id } ,
{ ' param ' : ' nginx_dir ' , ' value ' : ' /etc/nginx/ ' , ' section ' : ' nginx ' , ' desc ' : ' Path to the NGINX directory with config files ' , ' group ' : group_id } ,
{ ' param ' : ' nginx_config_path ' , ' value ' : ' /etc/nginx/nginx.conf ' , ' section ' : ' nginx ' , ' desc ' : ' Path to the main NGINX configuration file ' , ' group ' : group_id } ,
{ ' param ' : ' nginx_container_name ' , ' value ' : ' nginx ' , ' section ' : ' nginx ' , ' desc ' : ' Docker container name for NGINX service ' , ' group ' : group_id } ,
2022-06-15 07:34:20 +00:00
{ ' param ' : ' ldap_enable ' , ' value ' : ' 0 ' , ' section ' : ' ldap ' , ' desc ' : ' Enable LDAP ' , ' group ' : group_id } ,
{ ' param ' : ' ldap_server ' , ' value ' : ' ' , ' section ' : ' ldap ' , ' desc ' : ' IP address of the LDAP server ' , ' group ' : group_id } ,
2023-03-12 11:18:03 +00:00
{ ' param ' : ' ldap_port ' , ' value ' : ' 389 ' , ' section ' : ' ldap ' , ' desc ' : ' LDAP port (port 389 or 636 is used by default) ' , ' group ' : group_id } ,
{ ' param ' : ' ldap_user ' , ' value ' : ' ' , ' section ' : ' ldap ' , ' desc ' : ' LDAP username. Format: user@domain.com ' , ' group ' : group_id } ,
2021-11-09 11:01:49 +00:00
{ ' param ' : ' ldap_password ' , ' value ' : ' ' , ' section ' : ' ldap ' , ' desc ' : ' LDAP password ' , ' group ' : group_id } ,
2023-03-12 11:18:03 +00:00
{ ' param ' : ' ldap_base ' , ' value ' : ' ' , ' section ' : ' ldap ' , ' desc ' : ' Base domain. Example: dc=domain, dc=com ' , ' group ' : group_id } ,
2022-06-15 07:34:20 +00:00
{ ' param ' : ' ldap_domain ' , ' value ' : ' ' , ' section ' : ' ldap ' , ' desc ' : ' LDAP domain for logging in ' , ' group ' : group_id } ,
2023-03-12 11:18:03 +00:00
{ ' param ' : ' ldap_class_search ' , ' value ' : ' user ' , ' section ' : ' ldap ' , ' desc ' : ' Class for searching the user ' , ' group ' : group_id } ,
{ ' param ' : ' ldap_user_attribute ' , ' value ' : ' sAMAccountName ' , ' section ' : ' ldap ' , ' desc ' : ' Attribute to search users by ' , ' group ' : group_id } ,
{ ' param ' : ' ldap_search_field ' , ' value ' : ' mail ' , ' section ' : ' ldap ' , ' desc ' : ' User \' s email address ' , ' group ' : group_id } ,
2022-06-15 07:34:20 +00:00
{ ' param ' : ' ldap_type ' , ' value ' : ' 0 ' , ' section ' : ' ldap ' , ' desc ' : ' Use LDAPS ' , ' group ' : group_id } ,
2023-03-12 11:18:03 +00:00
{ ' param ' : ' apache_path_logs ' , ' value ' : ' /var/log/httpd/ ' , ' section ' : ' apache ' , ' desc ' : ' The path for Apache logs ' , ' group ' : group_id } ,
{ ' param ' : ' apache_stats_user ' , ' value ' : ' admin ' , ' section ' : ' apache ' , ' desc ' : ' Username for accessing Apache stats page ' , ' group ' : group_id } ,
{ ' param ' : ' apache_stats_password ' , ' value ' : ' password ' , ' section ' : ' apache ' , ' desc ' : ' Password for Apache stats webpage ' , ' group ' : group_id } ,
{ ' param ' : ' apache_stats_port ' , ' value ' : ' 8087 ' , ' section ' : ' apache ' , ' desc ' : ' Stats port for webpage Apache ' , ' group ' : group_id } ,
{ ' param ' : ' apache_stats_page ' , ' value ' : ' stats ' , ' section ' : ' apache ' , ' desc ' : ' URI Stats for webpage Apache ' , ' group ' : group_id } ,
{ ' param ' : ' apache_dir ' , ' value ' : ' /etc/httpd/ ' , ' section ' : ' apache ' , ' desc ' : ' Path to the Apache directory with config files ' , ' group ' : group_id } ,
{ ' param ' : ' apache_config_path ' , ' value ' : ' /etc/httpd/conf/httpd.conf ' , ' section ' : ' apache ' , ' desc ' : ' Path to the main Apache configuration file ' , ' group ' : group_id } ,
{ ' param ' : ' apache_container_name ' , ' value ' : ' apache ' , ' section ' : ' apache ' , ' desc ' : ' Docker container name for Apache service ' , ' group ' : group_id } ,
2022-05-28 07:59:05 +00:00
{ ' param ' : ' keepalived_config_path ' , ' value ' : ' /etc/keepalived/keepalived.conf ' , ' section ' : ' keepalived ' ,
2022-05-28 11:10:35 +00:00
' desc ' : ' Path to the main Keepalived configuration file ' , ' group ' : group_id } ,
2023-03-12 11:18:03 +00:00
{ ' param ' : ' keepalived_path_logs ' , ' value ' : ' /var/log/keepalived/ ' , ' section ' : ' keepalived ' , ' desc ' : ' The path for Keepalived logs ' , ' group ' : group_id } ,
2021-08-02 08:19:22 +00:00
]
try :
Setting . insert_many ( data_source ) . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-10 18:32:44 +00:00
else :
return True
def delete_group_settings ( group_id ) :
try :
2021-08-02 08:19:22 +00:00
group_for_delete = Setting . delete ( ) . where ( Setting . group == group_id )
group_for_delete . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-10 18:32:44 +00:00
else :
return True
2018-04-16 07:01:44 +00:00
2021-08-02 08:19:22 +00:00
def delete_group ( group_id ) :
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
group_for_delete = Groups . delete ( ) . where ( Groups . group_id == group_id )
group_for_delete . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-10-25 07:14:55 +00:00
return False
2020-08-10 18:32:44 +00:00
else :
2021-08-02 08:19:22 +00:00
delete_group_settings ( group_id )
2018-04-16 07:01:44 +00:00
return True
2020-10-02 12:39:00 +00:00
2021-08-02 08:19:22 +00:00
def update_group ( name , descript , group_id ) :
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
group_update = Groups . update ( name = name , description = descript ) . where ( Groups . group_id == group_id )
group_update . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-04-17 03:46:57 +00:00
return False
else :
return True
2020-10-02 12:39:00 +00:00
2018-04-16 07:01:44 +00:00
2022-04-15 09:49:00 +00:00
def add_server ( hostname , ip , group , typeip , enable , master , cred , port , desc , haproxy , nginx , apache , firewall ) :
2021-08-02 08:19:22 +00:00
try :
2022-05-23 19:13:34 +00:00
Server . insert (
hostname = hostname , ip = ip , groups = group , type_ip = typeip , enable = enable , master = master , cred = cred ,
port = port , desc = desc , haproxy = haproxy , nginx = nginx , apache = apache , firewall_enable = firewall
) . execute ( )
2018-05-08 09:12:16 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-10-02 12:39:00 +00:00
return False
2018-04-16 07:01:44 +00:00
2021-08-02 08:19:22 +00:00
def delete_server ( server_id ) :
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
server_for_delete = Server . delete ( ) . where ( Server . server_id == server_id )
server_for_delete . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-10-02 12:39:00 +00:00
else :
2018-04-16 07:01:44 +00:00
return True
2020-10-02 12:39:00 +00:00
2020-11-16 12:31:52 +00:00
def update_hapwi_server ( server_id , alert , metrics , active , service_name ) :
2021-08-02 08:19:22 +00:00
try :
if service_name == ' nginx ' :
2022-05-23 19:13:34 +00:00
update_hapwi = Server . update (
nginx_alert = alert , nginx_active = active , nginx_metrics = metrics
) . where ( Server . server_id == server_id )
2021-10-18 14:13:18 +00:00
elif service_name == ' keepalived ' :
2021-11-02 20:57:54 +00:00
update_hapwi = Server . update ( keepalived_alert = alert , keepalived_active = active ) . where (
Server . server_id == server_id )
2022-04-17 07:05:49 +00:00
elif service_name == ' apache ' :
2022-07-03 06:11:34 +00:00
update_hapwi = Server . update ( apache_alert = alert , apache_active = active , apache_metrics = metrics ) . where (
2022-04-17 07:05:49 +00:00
Server . server_id == server_id )
2021-08-02 08:19:22 +00:00
else :
update_hapwi = Server . update ( alert = alert , metrics = metrics , active = active ) . where (
Server . server_id == server_id )
update_hapwi . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
2023-04-02 16:58:55 +00:00
def update_server ( hostname , group , typeip , enable , master , server_id , cred , port , desc , firewall , protected ) :
2021-08-02 08:19:22 +00:00
try :
2022-05-25 08:21:44 +00:00
server_update = Server . update (
hostname = hostname , groups = group , type_ip = typeip , enable = enable , master = master , cred = cred ,
2023-04-02 16:58:55 +00:00
port = port , desc = desc , firewall_enable = firewall , protected = protected
2022-05-25 08:21:44 +00:00
) . where ( Server . server_id == server_id )
2021-08-02 08:19:22 +00:00
server_update . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-10-02 12:39:00 +00:00
2018-04-27 13:34:11 +00:00
2023-04-02 16:58:55 +00:00
def update_server_services ( server_id : str , haproxy : int , nginx : int , apache : int , keepalived : int ) - > bool :
try :
server_update = Server . update (
haproxy = haproxy , nginx = nginx , apache = apache , keepalived = keepalived
) . where ( Server . server_id == server_id )
server_update . execute ( )
except Exception as e :
out_error ( e )
return False
else :
return True
2018-04-27 13:34:11 +00:00
def update_server_master ( master , slave ) :
2020-10-02 12:39:00 +00:00
try :
2021-08-19 16:14:54 +00:00
master_id = Server . get ( Server . ip == master ) . server_id
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
2020-10-02 12:39:00 +00:00
try :
2021-08-19 16:14:54 +00:00
Server . update ( master = master_id ) . where ( Server . ip == slave ) . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-10-02 12:39:00 +00:00
2018-04-16 07:01:44 +00:00
def select_users ( * * kwargs ) :
if kwargs . get ( " user " ) is not None :
2021-08-02 08:19:22 +00:00
query = User . select ( ) . where ( User . username == kwargs . get ( " user " ) )
elif kwargs . get ( " id " ) is not None :
query = User . select ( ) . where ( User . user_id == kwargs . get ( " id " ) )
elif kwargs . get ( " group " ) is not None :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' , timedelta_minutes_minus = 15 )
2022-05-25 08:21:44 +00:00
query = ( User . select (
User , UserGroups , Case (
2022-11-12 16:11:29 +00:00
0 , [ ( ( User . last_login_date > = cur_date ) , 0 ) ] , 1
2022-05-25 08:21:44 +00:00
) . alias ( ' last_login ' )
) . join ( UserGroups , on = ( User . user_id == UserGroups . user_id ) ) . where (
UserGroups . user_group_id == kwargs . get ( " group " )
) )
2022-12-22 19:19:43 +00:00
elif kwargs . get ( ' by_group_id ' ) :
query = User . select ( ) . where ( User . groups == kwargs . get ( " by_group_id " ) )
2022-05-25 08:21:44 +00:00
else :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' , timedelta_minutes_minus = 15 )
2022-05-25 08:21:44 +00:00
query = User . select ( User , Case ( 0 , [ (
2022-11-12 16:11:29 +00:00
( User . last_login_date > = cur_date ) , 0 ) ] , 1 ) . alias ( ' last_login ' ) ) . order_by ( User . user_id )
2021-08-02 08:19:22 +00:00
try :
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-04-16 07:01:44 +00:00
else :
2022-12-22 19:25:54 +00:00
return query_res
2020-05-10 06:17:07 +00:00
2021-08-02 08:19:22 +00:00
def select_user_groups ( user_id , * * kwargs ) :
2020-05-10 06:17:07 +00:00
if kwargs . get ( " limit " ) is not None :
2021-08-02 08:19:22 +00:00
query = UserGroups . select ( ) . where ( UserGroups . user_id == user_id ) . limit ( 1 )
else :
query = UserGroups . select ( ) . where ( UserGroups . user_id == user_id )
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-05-10 06:17:07 +00:00
else :
2020-08-11 08:25:39 +00:00
if kwargs . get ( " limit " ) is not None :
2021-08-02 08:19:22 +00:00
for i in query_res :
return i . user_group_id
2020-05-10 06:17:07 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-08-11 08:25:39 +00:00
def check_user_group ( user_id , group_id ) :
try :
2021-08-02 08:19:22 +00:00
query_res = UserGroups . get ( ( UserGroups . user_id == user_id ) & ( UserGroups . user_group_id == group_id ) )
2022-05-25 08:21:44 +00:00
except Exception :
2021-08-02 08:19:22 +00:00
return False
2020-08-11 08:25:39 +00:00
else :
2021-08-02 08:19:22 +00:00
if query_res . user_id != ' ' :
return True
else :
return False
2020-05-10 06:17:07 +00:00
2021-08-02 08:19:22 +00:00
def select_user_groups_with_names ( user_id , * * kwargs ) :
2020-05-10 06:17:07 +00:00
if kwargs . get ( " all " ) is not None :
2022-05-25 08:21:44 +00:00
query = ( UserGroups . select (
UserGroups . user_group_id , UserGroups . user_id , Groups . name
) . join ( Groups , on = ( UserGroups . user_group_id == Groups . group_id ) ) )
2023-03-03 20:03:41 +00:00
elif kwargs . get ( " user_not_in_group " ) is not None :
query = ( Groups . select (
Groups . group_id , Groups . name
) . join ( UserGroups , on = (
( UserGroups . user_group_id == Groups . group_id ) &
( UserGroups . user_id == user_id )
) , join_type = JOIN . LEFT_OUTER ) . group_by ( Groups . name ) . where ( UserGroups . user_id . is_null ( True ) ) )
2021-08-02 08:19:22 +00:00
else :
2022-05-25 08:21:44 +00:00
query = ( UserGroups . select (
2023-03-03 20:03:41 +00:00
UserGroups . user_group_id , UserGroups . user_role_id , Groups . name , Groups . group_id
2022-05-25 08:21:44 +00:00
) . join ( Groups , on = ( UserGroups . user_group_id == Groups . group_id ) ) . where ( UserGroups . user_id == user_id ) )
2021-08-02 08:19:22 +00:00
try :
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-05-10 06:17:07 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-10-02 12:39:00 +00:00
2023-03-04 12:42:26 +00:00
def select_user_roles_by_group ( group_id : int ) :
try :
query_res = UserGroups . select ( ) . where ( UserGroups . user_group_id == group_id ) . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2018-04-16 07:01:44 +00:00
def select_groups ( * * kwargs ) :
if kwargs . get ( " group " ) is not None :
2021-08-02 08:19:22 +00:00
query = Groups . select ( ) . where ( Groups . name == kwargs . get ( ' group ' ) )
elif kwargs . get ( " id " ) is not None :
query = Groups . select ( ) . where ( Groups . group_id == kwargs . get ( ' id ' ) )
else :
query = Groups . select ( ) . order_by ( Groups . group_id )
2020-08-10 18:32:44 +00:00
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-04-16 07:01:44 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-10-02 12:39:00 +00:00
2021-02-03 19:25:37 +00:00
def get_group_name_by_id ( group_id ) :
try :
2021-08-02 08:19:22 +00:00
group_name = Groups . get ( Groups . group_id == group_id )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-03 19:25:37 +00:00
else :
2021-08-02 08:19:22 +00:00
return group_name . name
2021-02-03 19:25:37 +00:00
2021-03-29 17:54:08 +00:00
def get_group_id_by_name ( group_name ) :
try :
2021-08-02 08:19:22 +00:00
group_id = Groups . get ( Groups . name == group_name )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-29 17:54:08 +00:00
else :
2021-08-02 08:19:22 +00:00
return group_id . group_id
2021-06-16 04:03:15 +00:00
def get_group_id_by_server_ip ( server_ip ) :
try :
2021-08-02 08:19:22 +00:00
group_id = Server . get ( Server . ip == server_ip )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-06-16 04:03:15 +00:00
else :
2021-08-02 08:19:22 +00:00
return group_id . groups
2021-06-16 04:03:15 +00:00
def get_cred_id_by_server_ip ( server_ip ) :
try :
2021-08-02 08:19:22 +00:00
cred = Server . get ( Server . ip == server_ip )
except Exception as e :
2021-08-07 07:41:28 +00:00
return out_error ( e )
2021-06-16 04:03:15 +00:00
else :
2021-08-02 08:19:22 +00:00
return cred . cred
2021-06-16 04:03:15 +00:00
def get_hostname_by_server_ip ( server_ip ) :
try :
2021-08-02 08:19:22 +00:00
hostname = Server . get ( Server . ip == server_ip )
except Exception as e :
2021-08-07 07:41:28 +00:00
return out_error ( e )
2022-07-15 18:55:54 +00:00
# pass
2021-06-16 04:03:15 +00:00
else :
2021-08-02 08:19:22 +00:00
return hostname . hostname
2021-03-29 17:54:08 +00:00
2019-09-10 05:44:02 +00:00
def select_server_by_name ( name ) :
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
ip = Server . get ( Server . hostname == name )
except Exception as e :
2021-08-07 07:41:28 +00:00
return out_error ( e )
2019-09-10 05:44:02 +00:00
else :
2021-08-02 08:19:22 +00:00
return ip . ip
2020-10-02 12:39:00 +00:00
2021-09-15 05:40:51 +00:00
def select_server_id_by_ip ( server_ip ) :
try :
server_id = Server . get ( Server . ip == server_ip ) . server_id
2023-04-24 11:11:01 +00:00
except Exception :
return None
2021-09-15 05:40:51 +00:00
else :
return server_id
2022-06-15 07:34:20 +00:00
def select_server_group_by_ip ( server_ip ) :
try :
groups = Server . get ( Server . ip == server_ip ) . groups
except Exception as e :
return out_error ( e )
else :
return groups
2021-10-03 18:46:19 +00:00
def select_server_ip_by_id ( server_id ) :
try :
server_ip = Server . get ( Server . server_id == server_id ) . ip
except Exception as e :
return out_error ( e )
else :
return server_ip
2018-04-16 07:01:44 +00:00
def select_servers ( * * kwargs ) :
2021-08-02 08:19:22 +00:00
cursor = conn . cursor ( )
2022-05-23 16:16:21 +00:00
2022-05-23 13:21:56 +00:00
if mysql_enable == ' 1 ' :
sql = """ select * from `servers` where `enable` = 1 ORDER BY servers.groups """
if kwargs . get ( " server " ) is not None :
sql = """ select * from `servers` where `ip` = ' {} ' """ . format ( kwargs . get ( " server " ) )
if kwargs . get ( " full " ) is not None :
sql = """ select * from `servers` ORDER BY hostname """
if kwargs . get ( " get_master_servers " ) is not None :
sql = """ select id,hostname from `servers` where `master` = 0 and type_ip = 0 and enable = 1 ORDER BY servers.groups """
if kwargs . get ( " get_master_servers " ) is not None and kwargs . get ( ' uuid ' ) is not None :
2022-05-23 18:23:01 +00:00
sql = """ select servers.id, servers.hostname from `servers`
left join user as user on servers . groups = user . groups
left join uuid as uuid on user . id = uuid . user_id
where uuid . uuid = ' {} ' and servers . master = 0 and servers . type_ip = 0 and servers . enable = 1 ORDER BY servers . groups
2022-05-23 13:21:56 +00:00
""" .format(kwargs.get( ' uuid ' ))
if kwargs . get ( " id " ) :
sql = """ select * from `servers` where `id` = ' {} ' """ . format ( kwargs . get ( " id " ) )
if kwargs . get ( " hostname " ) :
sql = """ select * from `servers` where `hostname` = ' {} ' """ . format ( kwargs . get ( " hostname " ) )
if kwargs . get ( " id_hostname " ) :
2022-05-23 16:16:21 +00:00
sql = """ select * from `servers` where `hostname` = ' {} ' or id = ' {} ' or ip = ' {} ' """ . format (
kwargs . get ( " id_hostname " ) , kwargs . get ( " id_hostname " ) , kwargs . get ( " id_hostname " ) )
2022-05-23 13:21:56 +00:00
if kwargs . get ( " server " ) and kwargs . get ( " keep_alive " ) :
sql = """ select active from `servers` where `ip` = ' {} ' """ . format ( kwargs . get ( " server " ) )
else :
sql = """ select * from servers where enable = ' 1 ' ORDER BY servers.groups """
if kwargs . get ( " server " ) is not None :
sql = """ select * from servers where ip = ' {} ' """ . format ( kwargs . get ( " server " ) )
if kwargs . get ( " full " ) is not None :
sql = """ select * from servers ORDER BY hostname """
if kwargs . get ( " get_master_servers " ) is not None :
sql = """ select id,hostname from servers where master = 0 and type_ip = 0 and enable = 1 ORDER BY servers.groups """
if kwargs . get ( " get_master_servers " ) is not None and kwargs . get ( ' uuid ' ) is not None :
2022-05-23 18:23:01 +00:00
sql = """ select servers.id, servers.hostname from servers
left join user as user on servers . groups = user . groups
left join uuid as uuid on user . id = uuid . user_id
where uuid . uuid = ' {} ' and servers . master = 0 and servers . type_ip = 0 and servers . enable = 1 ORDER BY servers . groups
2022-05-23 13:21:56 +00:00
""" .format(kwargs.get( ' uuid ' ))
if kwargs . get ( " id " ) :
sql = """ select * from servers where id = ' {} ' """ . format ( kwargs . get ( " id " ) )
if kwargs . get ( " hostname " ) :
sql = """ select * from servers where hostname = ' {} ' """ . format ( kwargs . get ( " hostname " ) )
if kwargs . get ( " id_hostname " ) :
2022-05-23 16:16:21 +00:00
sql = """ select * from servers where hostname = ' {} ' or id = ' {} ' or ip = ' {} ' """ . format (
kwargs . get ( " id_hostname " ) , kwargs . get ( " id_hostname " ) , kwargs . get ( " id_hostname " ) )
2022-05-23 13:21:56 +00:00
if kwargs . get ( " server " ) and kwargs . get ( " keep_alive " ) :
sql = """ select active from servers where ip = ' {} ' """ . format ( kwargs . get ( " server " ) )
try :
2021-08-02 08:19:22 +00:00
cursor . execute ( sql )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-04-16 07:01:44 +00:00
else :
2021-08-02 08:19:22 +00:00
return cursor . fetchall ( )
2020-10-02 12:39:00 +00:00
2020-10-25 07:14:55 +00:00
2018-05-02 11:11:22 +00:00
def write_user_uuid ( login , user_uuid ) :
2018-08-11 14:47:47 +00:00
session_ttl = get_setting ( ' session_ttl ' )
2018-06-01 12:27:58 +00:00
session_ttl = int ( session_ttl )
2021-09-15 05:40:51 +00:00
user_id = get_user_id_by_username ( login )
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' , timedelta = session_ttl )
2021-08-02 08:19:22 +00:00
2020-10-02 12:39:00 +00:00
try :
2022-11-12 16:11:29 +00:00
UUID . insert ( user_id = user_id , uuid = user_uuid , exp = cur_date ) . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
2020-10-02 12:39:00 +00:00
2018-06-01 12:27:58 +00:00
def write_user_token ( login , user_token ) :
2021-09-04 08:50:26 +00:00
token_ttl = int ( get_setting ( ' token_ttl ' ) )
2021-09-15 05:40:51 +00:00
user_id = get_user_id_by_username ( login )
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' , timedelta = token_ttl )
2021-08-02 08:19:22 +00:00
2020-10-02 12:39:00 +00:00
try :
2022-11-12 16:11:29 +00:00
Token . insert ( user_id = user_id , token = user_token , exp = cur_date ) . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-10-02 12:39:00 +00:00
2020-10-25 07:14:55 +00:00
2021-03-29 17:54:08 +00:00
def write_api_token ( user_token , group_id , user_role , user_name ) :
2021-08-07 07:41:28 +00:00
token_ttl = int ( get_setting ( ' token_ttl ' ) )
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' , timedelta = token_ttl )
cur_date_token_ttl = get_date . return_date ( ' regular ' , timedelta = token_ttl )
2021-03-29 17:54:08 +00:00
try :
2022-05-25 08:21:44 +00:00
ApiToken . insert (
token = user_token , user_name = user_name , user_group_id = group_id , user_role = user_role ,
2022-11-12 16:11:29 +00:00
create_date = cur_date , expire_date = cur_date_token_ttl ) . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-29 17:54:08 +00:00
def get_api_token ( token ) :
try :
2021-08-02 08:19:22 +00:00
user_token = ApiToken . get ( ApiToken . token == token )
except Exception as e :
2021-03-29 17:54:08 +00:00
return str ( e )
else :
2021-08-02 08:19:22 +00:00
return True if token == user_token . token else False
2021-03-29 17:54:08 +00:00
2021-08-15 09:02:12 +00:00
def get_user_id_by_api_token ( token ) :
2022-05-25 08:21:44 +00:00
query = ( User . select ( User . user_id ) . join ( ApiToken , on = (
2022-05-25 13:55:45 +00:00
ApiToken . user_name == User . username
2022-05-25 08:21:44 +00:00
) ) . where ( ApiToken . token == token ) )
2021-08-15 09:02:12 +00:00
try :
query_res = query . execute ( )
except Exception as e :
return str ( e )
for i in query_res :
return i . user_id
2021-09-15 05:40:51 +00:00
2021-03-29 17:54:08 +00:00
def get_username_groupid_from_api_token ( token ) :
try :
2021-08-02 08:19:22 +00:00
user_name = ApiToken . get ( ApiToken . token == token )
except Exception as e :
2021-03-29 17:54:08 +00:00
return str ( e )
else :
2022-12-22 19:19:43 +00:00
return user_name . user_name , user_name . user_group_id , user_name . user_role
2021-03-29 17:54:08 +00:00
2018-06-01 12:27:58 +00:00
def get_token ( uuid ) :
2021-09-04 08:50:26 +00:00
query = Token . select ( ) . join ( UUID , on = ( Token . user_id == UUID . user_id ) ) . where ( UUID . uuid == uuid ) . limit ( 1 )
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-06-01 12:27:58 +00:00
else :
2021-08-02 08:19:22 +00:00
try :
for i in query_res :
return i . token
2022-05-25 08:21:44 +00:00
except Exception :
2021-08-02 08:19:22 +00:00
return ' '
2020-10-02 12:39:00 +00:00
2018-05-02 11:11:22 +00:00
def delete_uuid ( uuid ) :
try :
2021-08-02 08:19:22 +00:00
query = UUID . delete ( ) . where ( UUID . uuid == uuid )
query . execute ( )
2022-05-25 08:21:44 +00:00
except Exception :
2018-05-02 11:11:22 +00:00
pass
2020-10-02 12:39:00 +00:00
2018-06-01 12:27:58 +00:00
def delete_old_uuid ( ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
query = UUID . delete ( ) . where ( ( UUID . exp < cur_date ) | ( UUID . exp . is_null ( True ) ) )
query1 = Token . delete ( ) . where ( ( Token . exp < cur_date ) | ( Token . exp . is_null ( True ) ) )
2020-10-02 12:39:00 +00:00
try :
2021-08-05 05:46:44 +00:00
query . execute ( )
query1 . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-06-01 12:27:58 +00:00
2020-05-10 06:17:07 +00:00
2021-09-03 08:07:55 +00:00
def update_last_act_user ( uuid , token ) :
2021-08-07 07:41:28 +00:00
session_ttl = int ( get_setting ( ' session_ttl ' ) )
2021-09-03 08:07:55 +00:00
token_ttl = int ( get_setting ( ' token_ttl ' ) )
2022-11-12 16:11:29 +00:00
cur_date_session = get_date . return_date ( ' regular ' , timedelta = session_ttl )
cur_date_token = get_date . return_date ( ' regular ' , timedelta = token_ttl )
cur_date = get_date . return_date ( ' regular ' )
user_id = get_user_id_by_uuid ( uuid )
2021-09-03 08:07:55 +00:00
try :
import cgi
import os
ip = cgi . escape ( os . environ [ " REMOTE_ADDR " ] )
except Exception :
ip = ' '
2022-11-12 16:11:29 +00:00
query = UUID . update ( exp = cur_date_session ) . where ( UUID . uuid == uuid )
query1 = Token . update ( exp = cur_date_token ) . where ( Token . token == token )
query2 = User . update ( last_login_date = cur_date , last_login_ip = ip ) . where ( User . user_id == user_id )
2020-10-02 12:39:00 +00:00
try :
2021-08-07 07:41:28 +00:00
query . execute ( )
2021-09-03 08:07:55 +00:00
query1 . execute ( )
query2 . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-10-02 12:39:00 +00:00
2018-05-02 11:11:22 +00:00
def get_user_name_by_uuid ( uuid ) :
try :
2021-08-02 08:19:22 +00:00
query = User . select ( User . username ) . join ( UUID , on = ( User . user_id == UUID . user_id ) ) . where ( UUID . uuid == uuid )
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-05-02 11:11:22 +00:00
else :
2021-08-02 08:19:22 +00:00
for user in query_res :
return user . username
2020-01-29 05:02:36 +00:00
2020-05-10 06:17:07 +00:00
def get_user_id_by_uuid ( uuid ) :
2018-05-02 11:11:22 +00:00
try :
2021-08-02 08:19:22 +00:00
query = User . select ( User . user_id ) . join ( UUID , on = ( User . user_id == UUID . user_id ) ) . where ( UUID . uuid == uuid )
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-05-02 11:11:22 +00:00
else :
2021-08-02 08:19:22 +00:00
for user in query_res :
return user . user_id
2020-10-02 12:39:00 +00:00
2021-09-15 05:40:51 +00:00
def get_user_id_by_username ( username : str ) :
try :
query = User . get ( User . username == username ) . user_id
except Exception as e :
out_error ( e )
else :
return query
2023-03-03 20:03:41 +00:00
def get_user_role_by_uuid ( uuid , group_id ) :
2022-05-25 13:55:45 +00:00
query = (
2023-03-03 20:03:41 +00:00
UserGroups . select ( UserGroups . user_role_id ) . join ( UUID , on = ( UserGroups . user_id == UUID . user_id )
) . where (
( UUID . uuid == uuid ) &
( UserGroups . user_group_id == group_id )
)
)
2019-10-09 06:35:35 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2019-10-09 06:35:35 +00:00
else :
2021-08-02 08:19:22 +00:00
for user_id in query_res :
2023-03-03 20:03:41 +00:00
return int ( user_id . user_role_id )
2020-07-15 04:16:31 +00:00
def get_user_telegram_by_group ( group ) :
2021-08-02 08:19:22 +00:00
query = Telegram . select ( ) . where ( Telegram . groups == group )
2020-07-15 04:16:31 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-07-15 04:16:31 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-07-15 04:16:31 +00:00
2018-07-27 06:46:50 +00:00
def get_telegram_by_ip ( ip ) :
2021-08-02 08:19:22 +00:00
query = Telegram . select ( ) . join ( Server , on = ( Server . groups == Telegram . groups ) ) . where ( Server . ip == ip )
2018-07-27 06:46:50 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-07-27 06:46:50 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2018-07-25 05:25:27 +00:00
2020-05-10 06:17:07 +00:00
2021-08-02 08:19:22 +00:00
def get_telegram_by_id ( telegram_id ) :
query = Telegram . select ( ) . where ( Telegram . id == telegram_id )
2020-07-15 04:16:31 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-07-15 04:16:31 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-07-15 04:16:31 +00:00
2021-04-17 17:38:08 +00:00
def get_user_slack_by_group ( group ) :
2021-08-02 08:19:22 +00:00
query = Slack . select ( ) . where ( Slack . groups == group )
2021-04-17 17:38:08 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-04-17 17:38:08 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2021-04-17 17:38:08 +00:00
def get_slack_by_ip ( ip ) :
2021-08-02 08:19:22 +00:00
query = Slack . select ( ) . join ( Server , on = ( Server . groups == Slack . groups ) ) . where ( Server . ip == ip )
2021-04-17 17:38:08 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-04-17 17:38:08 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2021-04-17 17:38:08 +00:00
2021-08-02 08:19:22 +00:00
def get_slack_by_id ( slack_id ) :
query = Slack . select ( ) . where ( Slack . id == slack_id )
2021-04-17 17:38:08 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-04-17 17:38:08 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2021-04-17 17:38:08 +00:00
2023-04-15 21:26:54 +00:00
def get_user_pd_by_group ( group ) :
query = PD . select ( ) . where ( PD . groups == group )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def get_pd_by_ip ( ip ) :
query = PD . select ( ) . join ( Server , on = ( Server . groups == PD . groups ) ) . where ( Server . ip == ip )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def get_pd_by_id ( pd_id ) :
query = PD . select ( ) . where ( PD . id == pd_id )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2018-04-17 20:06:18 +00:00
def get_dick_permit ( * * kwargs ) :
2020-05-10 06:17:07 +00:00
if kwargs . get ( ' username ' ) :
2021-03-29 17:54:08 +00:00
grp = kwargs . get ( ' group_id ' )
2020-05-10 06:17:07 +00:00
else :
2022-01-04 17:12:21 +00:00
try :
2022-03-28 18:09:58 +00:00
import http . cookies
2022-01-04 17:12:21 +00:00
cookie = http . cookies . SimpleCookie ( os . environ . get ( " HTTP_COOKIE " ) )
group = cookie . get ( ' group ' )
grp = group . value
2022-05-25 08:21:44 +00:00
except Exception :
2022-03-28 18:09:58 +00:00
print ( ' <meta http-equiv= " refresh " content= " 0; url=/app/login.py " > ' )
2022-04-15 09:49:00 +00:00
return
2022-01-04 17:12:21 +00:00
2021-03-16 14:38:12 +00:00
only_group = kwargs . get ( ' only_group ' )
2021-10-31 07:46:17 +00:00
disable = ' enable = 1 '
2020-02-06 19:45:21 +00:00
haproxy = ' '
2020-02-05 08:15:57 +00:00
nginx = ' '
2020-02-08 17:12:25 +00:00
keepalived = ' '
2022-04-15 09:49:00 +00:00
apache = ' '
2018-08-28 10:45:09 +00:00
ip = ' '
2020-10-02 12:39:00 +00:00
2018-04-17 20:06:18 +00:00
if kwargs . get ( ' virt ' ) :
2022-05-23 18:23:01 +00:00
type_ip = " "
2018-04-17 20:06:18 +00:00
else :
2020-10-02 12:39:00 +00:00
type_ip = " and type_ip = 0 "
2018-06-29 06:07:24 +00:00
if kwargs . get ( ' disable ' ) == 0 :
2021-10-31 07:46:17 +00:00
disable = ' (enable = 1 or enable = 0) '
2018-08-28 10:45:09 +00:00
if kwargs . get ( ' ip ' ) :
ip = " and ip = ' %s ' " % kwargs . get ( ' ip ' )
2022-04-15 09:49:00 +00:00
if kwargs . get ( ' haproxy ' ) or kwargs . get ( ' service ' ) == ' haproxy ' :
2020-02-06 19:45:21 +00:00
haproxy = " and haproxy = 1 "
2022-04-15 09:49:00 +00:00
if kwargs . get ( ' nginx ' ) or kwargs . get ( ' service ' ) == ' nginx ' :
2020-02-05 08:15:57 +00:00
nginx = " and nginx = 1 "
2022-04-15 09:49:00 +00:00
if kwargs . get ( ' keepalived ' ) or kwargs . get ( ' service ' ) == ' keepalived ' :
2021-05-24 02:25:19 +00:00
keepalived = " and keepalived = 1 "
2022-04-15 09:49:00 +00:00
if kwargs . get ( ' apache ' ) or kwargs . get ( ' service ' ) == ' apache ' :
apache = " and apache = 1 "
2020-05-10 06:17:07 +00:00
2022-11-17 07:34:58 +00:00
cursor = conn . cursor ( )
try :
if mysql_enable == ' 1 ' :
if grp == ' 1 ' and not only_group :
sql = """ select * from `servers` where {} {} {} {} {} {} {} order by `pos` asc """ . format (
disable , type_ip , nginx , haproxy , keepalived , apache , ip
)
2022-03-28 18:09:58 +00:00
else :
2022-11-17 07:34:58 +00:00
sql = """ select * from `servers` where `groups` = {group} and ( {disable} ) {type_ip} {ip} {haproxy} {nginx} {keepalived} {apache} order by `pos` asc
""" .format(
group = grp , disable = disable , type_ip = type_ip , ip = ip , haproxy = haproxy , nginx = nginx , keepalived = keepalived , apache = apache
)
2018-04-16 07:01:44 +00:00
else :
2022-11-17 07:34:58 +00:00
if grp == ' 1 ' and not only_group :
sql = """ select * from servers where {} {} {} {} {} {} {} order by pos """ . format ( disable , type_ip , nginx , haproxy , keepalived , apache , ip )
else :
sql = """ select * from servers where groups = ' {group} ' and ( {disable} ) {type_ip} {ip} {haproxy} {nginx} {keepalived} {apache} order by pos
""" .format(group=grp, disable=disable, type_ip=type_ip, ip=ip, haproxy=haproxy, nginx=nginx, keepalived=keepalived, apache=apache)
2020-08-11 08:25:39 +00:00
2022-11-17 07:34:58 +00:00
except Exception as e :
2023-04-16 13:43:05 +00:00
raise Exception ( f ' error: { e } ' )
2022-11-17 07:34:58 +00:00
try :
cursor . execute ( sql )
except Exception as e :
2022-11-17 10:18:04 +00:00
out_error ( e )
2020-05-10 06:17:07 +00:00
else :
2022-11-17 07:34:58 +00:00
return cursor . fetchall ( )
2020-08-11 08:25:39 +00:00
2018-04-27 13:34:11 +00:00
def is_master ( ip , * * kwargs ) :
2021-08-02 08:19:22 +00:00
cursor = conn . cursor ( )
2018-04-27 13:34:11 +00:00
if kwargs . get ( ' master_slave ' ) :
2022-05-23 13:33:19 +00:00
sql = """ select master.hostname, master.ip, slave.hostname, slave.ip
from servers as master
left join servers as slave on master . id = slave . master
2021-08-02 08:19:22 +00:00
where slave . master > 0 """
else :
2022-05-23 13:33:19 +00:00
sql = """ select slave.ip, slave.hostname from servers as master
left join servers as slave on master . id = slave . master
2021-08-02 08:19:22 +00:00
where master . ip = ' %s ' """ % i p
2018-04-24 07:38:48 +00:00
try :
2021-08-02 08:19:22 +00:00
cursor . execute ( sql )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-04-24 07:38:48 +00:00
else :
2021-08-02 08:19:22 +00:00
return cursor . fetchall ( )
2020-08-11 08:25:39 +00:00
2018-06-24 09:31:28 +00:00
def select_ssh ( * * kwargs ) :
if kwargs . get ( " name " ) is not None :
2021-08-02 08:19:22 +00:00
query = Cred . select ( ) . where ( Cred . name == kwargs . get ( ' name ' ) )
elif kwargs . get ( " id " ) is not None :
query = Cred . select ( ) . where ( Cred . id == kwargs . get ( ' id ' ) )
elif kwargs . get ( " serv " ) is not None :
query = Cred . select ( ) . join ( Server , on = ( Cred . id == Server . cred ) ) . where ( Server . ip == kwargs . get ( ' serv ' ) )
elif kwargs . get ( " group " ) is not None :
2022-10-07 14:40:45 +00:00
query = Cred . select ( ) . where ( Cred . groups == kwargs . get ( " group " ) )
2021-08-02 08:19:22 +00:00
else :
query = Cred . select ( )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-05-07 13:24:22 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-08-11 08:25:39 +00:00
2018-06-28 05:55:07 +00:00
def insert_new_ssh ( name , enable , group , username , password ) :
2021-08-02 08:19:22 +00:00
if password is None :
password = ' None '
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
Cred . insert ( name = name , enable = enable , groups = group , username = username , password = password ) . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
2020-08-11 08:25:39 +00:00
else :
2018-06-24 09:31:28 +00:00
return True
2020-08-11 08:25:39 +00:00
2021-08-02 08:19:22 +00:00
def delete_ssh ( ssh_id ) :
query = Cred . delete ( ) . where ( Cred . id == ssh_id )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-11 08:25:39 +00:00
else :
2018-06-24 09:31:28 +00:00
return True
2018-05-07 13:24:22 +00:00
2020-02-05 08:15:57 +00:00
2021-08-02 08:19:22 +00:00
def update_ssh ( cred_id , name , enable , group , username , password ) :
if password is None :
password = ' None '
cred_update = Cred . update ( name = name , enable = enable , groups = group , username = username , password = password ) . where (
Cred . id == cred_id )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
cred_update . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-11 08:25:39 +00:00
2021-08-02 08:19:22 +00:00
def insert_backup_job ( server , rserver , rpath , backup_type , time , cred , description ) :
2020-08-08 06:26:43 +00:00
try :
2022-05-25 18:40:55 +00:00
Backup . insert (
server = server , rhost = rserver , rpath = rpath , backup_type = backup_type , time = time ,
cred = cred , description = description
) . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-01-11 21:16:27 +00:00
return False
2020-08-11 08:25:39 +00:00
else :
2020-01-11 21:16:27 +00:00
return True
2020-08-11 08:25:39 +00:00
2020-01-11 21:16:27 +00:00
def select_backups ( * * kwargs ) :
if kwargs . get ( " server " ) is not None and kwargs . get ( " rserver " ) is not None :
2021-08-02 08:19:22 +00:00
query = Backup . select ( ) . where ( ( Backup . server == kwargs . get ( " server " ) ) & ( Backup . rhost == kwargs . get ( " rserver " ) ) )
else :
query = Backup . select ( ) . order_by ( Backup . id )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-01-11 21:16:27 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-08-11 08:25:39 +00:00
2021-08-02 08:19:22 +00:00
def update_backup ( server , rserver , rpath , backup_type , time , cred , description , backup_id ) :
2022-05-25 08:21:44 +00:00
backup_update = Backup . update (
server = server , rhost = rserver , rpath = rpath , backup_type = backup_type , time = time ,
cred = cred , description = description
) . where ( Backup . id == backup_id )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
backup_update . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-01-11 21:16:27 +00:00
return False
2020-08-11 08:25:39 +00:00
else :
2020-01-11 21:16:27 +00:00
return True
2020-08-11 08:25:39 +00:00
2023-01-03 07:54:03 +00:00
def delete_backups ( backup_id : int ) - > bool :
2021-08-02 08:19:22 +00:00
query = Backup . delete ( ) . where ( Backup . id == backup_id )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
2020-08-11 08:25:39 +00:00
else :
2020-01-11 21:16:27 +00:00
return True
2020-08-11 08:25:39 +00:00
2023-01-03 07:54:03 +00:00
def check_exists_backup ( server : str ) - > bool :
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
backup = Backup . get ( Backup . server == server )
2022-05-25 08:21:44 +00:00
except Exception :
2021-08-02 08:19:22 +00:00
pass
2020-01-11 21:16:27 +00:00
else :
2021-08-02 08:19:22 +00:00
if backup . id is not None :
return True
else :
return False
2020-08-11 08:25:39 +00:00
2018-05-07 13:24:22 +00:00
2023-01-03 07:54:03 +00:00
def check_exists_s3_backup ( server_id : int ) - > bool :
try :
backup = S3Backup . get ( S3Backup . server_id == server_id )
except Exception :
pass
else :
if backup . id is not None :
return True
else :
return False
2021-08-02 08:19:22 +00:00
def delete_telegram ( telegram_id ) :
query = Telegram . delete ( ) . where ( Telegram . id == telegram_id )
2021-04-17 17:38:08 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
2021-04-17 17:38:08 +00:00
else :
return True
def select_telegram ( * * kwargs ) :
if kwargs . get ( ' token ' ) :
2021-08-02 08:19:22 +00:00
query = Telegram . select ( ) . where ( Telegram . token == kwargs . get ( ' token ' ) )
elif kwargs . get ( ' id ' ) :
query = Telegram . select ( ) . where ( Telegram . id == kwargs . get ( ' id ' ) )
else :
query = Telegram . select ( )
2021-04-17 17:38:08 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-04-17 17:38:08 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2021-04-17 17:38:08 +00:00
2022-06-02 09:08:37 +00:00
def insert_new_telegram ( token , channel , group ) :
2020-08-11 08:25:39 +00:00
try :
2022-06-02 09:08:37 +00:00
Telegram . insert ( token = token , chanel_name = channel , groups = group ) . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
2020-08-11 08:25:39 +00:00
else :
2018-07-25 05:25:27 +00:00
return True
2020-01-18 23:50:43 +00:00
2022-06-02 09:08:37 +00:00
def update_telegram ( token , channel , group , telegram_id ) :
telegram_update = Telegram . update ( token = token , chanel_name = channel , groups = group ) . where ( Telegram . id == telegram_id )
2021-04-17 17:38:08 +00:00
try :
2021-08-02 08:19:22 +00:00
telegram_update . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
else :
return True
2021-04-17 17:38:08 +00:00
2021-08-02 08:19:22 +00:00
def delete_slack ( slack_id ) :
query = Slack . delete ( ) . where ( Slack . id == slack_id )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
2020-08-11 08:25:39 +00:00
else :
2018-07-25 05:25:27 +00:00
return True
2020-08-11 08:25:39 +00:00
2021-04-17 17:38:08 +00:00
def select_slack ( * * kwargs ) :
2018-07-25 05:25:27 +00:00
if kwargs . get ( ' token ' ) :
2021-08-02 08:19:22 +00:00
query = Slack . select ( ) . where ( Slack . token == kwargs . get ( ' token ' ) )
elif kwargs . get ( ' id ' ) :
query = Slack . select ( ) . where ( Slack . id == kwargs . get ( ' id ' ) )
else :
query = Slack . select ( )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-07-25 05:25:27 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-08-11 08:25:39 +00:00
2021-04-17 17:38:08 +00:00
def insert_new_slack ( token , chanel , group ) :
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
Slack . insert ( token = token , chanel_name = chanel , groups = group ) . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
2020-08-11 08:25:39 +00:00
else :
2019-09-17 07:18:48 +00:00
return True
2020-08-11 08:25:39 +00:00
2021-08-02 08:19:22 +00:00
def update_slack ( token , chanel , group , slack_id ) :
query_update = Slack . update ( token = token , chanel_name = chanel , groups = group ) . where ( Slack . id == slack_id )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query_update . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
else :
return True
2020-08-11 08:25:39 +00:00
2022-05-23 16:16:21 +00:00
2023-04-15 21:26:54 +00:00
def delete_pd ( pd_id ) :
query = PD . delete ( ) . where ( PD . id == pd_id )
try :
query . execute ( )
except Exception as e :
out_error ( e )
return False
else :
return True
def select_pd ( * * kwargs ) :
if kwargs . get ( ' token ' ) :
query = PD . select ( ) . where ( PD . token == kwargs . get ( ' token ' ) )
elif kwargs . get ( ' id ' ) :
query = PD . select ( ) . where ( PD . id == kwargs . get ( ' id ' ) )
else :
query = PD . select ( )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def insert_new_pd ( token , chanel , group ) :
try :
PD . insert ( token = token , chanel_name = chanel , groups = group ) . execute ( )
except Exception as e :
out_error ( e )
return False
else :
return True
def update_pd ( token , chanel , group , pd_id ) :
query_update = PD . update ( token = token , chanel_name = chanel , groups = group ) . where ( PD . id == pd_id )
try :
query_update . execute ( )
except Exception as e :
out_error ( e )
return False
else :
return True
2021-08-02 08:19:22 +00:00
def insert_new_option ( saved_option , group ) :
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
Option . insert ( options = saved_option , groups = group ) . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
2020-08-11 08:25:39 +00:00
else :
2019-09-17 07:18:48 +00:00
return True
2020-08-11 08:25:39 +00:00
2019-09-17 07:18:48 +00:00
def select_options ( * * kwargs ) :
if kwargs . get ( ' option ' ) :
2021-08-02 08:19:22 +00:00
query = Option . select ( ) . where ( Option . options == kwargs . get ( ' option ' ) )
elif kwargs . get ( ' group ' ) :
2022-05-23 16:16:21 +00:00
query = Option . select ( Option . options ) . where (
( Option . groups == kwargs . get ( ' group ' ) ) & ( Option . options . startswith ( kwargs . get ( ' term ' ) ) ) )
2021-08-02 08:19:22 +00:00
else :
query = Option . select ( )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2019-09-17 07:18:48 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-08-11 08:25:39 +00:00
2021-08-02 08:19:22 +00:00
def update_options ( option , option_id ) :
query_update = Option . update ( options = option ) . where ( Option . id == option_id )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query_update . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
else :
return True
2020-08-11 08:25:39 +00:00
2021-08-02 08:19:22 +00:00
def delete_option ( option_id ) :
query = Option . delete ( ) . where ( Option . id == option_id )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
2020-08-11 08:25:39 +00:00
else :
2019-09-17 07:18:48 +00:00
return True
2020-08-11 08:25:39 +00:00
2019-10-09 06:35:35 +00:00
def insert_new_savedserver ( server , description , group ) :
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
SavedServer . insert ( server = server , description = description , groups = group ) . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
2020-08-11 08:25:39 +00:00
else :
2019-10-09 06:35:35 +00:00
return True
2020-08-11 08:25:39 +00:00
2019-10-09 06:35:35 +00:00
def select_saved_servers ( * * kwargs ) :
if kwargs . get ( ' server ' ) :
2021-08-02 08:19:22 +00:00
query = SavedServer . select ( ) . where ( SavedServer . server == kwargs . get ( ' server ' ) )
elif kwargs . get ( ' group ' ) :
query = SavedServer . select ( SavedServer . server , SavedServer . description ) . where (
( SavedServer . groups == kwargs . get ( ' group ' ) ) & ( SavedServer . server . startswith ( kwargs . get ( ' term ' ) ) ) )
else :
query = SavedServer . select ( )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2019-10-09 06:35:35 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-08-11 08:25:39 +00:00
2021-08-02 08:19:22 +00:00
def update_savedserver ( server , description , saved_id ) :
query_update = SavedServer . update ( server = server , description = description ) . where ( SavedServer . id == saved_id )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query_update . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
else :
return True
2020-08-11 08:25:39 +00:00
2021-08-02 08:19:22 +00:00
def delete_savedserver ( saved_id ) :
query = SavedServer . delete ( ) . where ( SavedServer . id == saved_id )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
2020-08-11 08:25:39 +00:00
else :
2019-10-09 06:35:35 +00:00
return True
2020-08-11 08:25:39 +00:00
2021-05-16 05:27:47 +00:00
def insert_metrics ( serv , curr_con , cur_ssl_con , sess_rate , max_sess_rate ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2020-08-11 08:25:39 +00:00
try :
2022-05-23 19:13:34 +00:00
Metrics . insert (
serv = serv , curr_con = curr_con , cur_ssl_con = cur_ssl_con , sess_rate = sess_rate , max_sess_rate = max_sess_rate ,
2022-11-12 16:11:29 +00:00
date = cur_date
2022-05-23 19:13:34 +00:00
) . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-11 08:25:39 +00:00
2021-05-16 05:27:47 +00:00
def insert_metrics_http ( serv , http_2xx , http_3xx , http_4xx , http_5xx ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2021-05-16 05:27:47 +00:00
try :
2022-05-23 19:13:34 +00:00
MetricsHttpStatus . insert (
serv = serv , ok_ans = http_2xx , redir_ans = http_3xx , not_found_ans = http_4xx , err_ans = http_5xx ,
2022-11-12 16:11:29 +00:00
date = cur_date
2022-05-23 19:13:34 +00:00
) . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-05-16 05:27:47 +00:00
2021-08-15 09:02:12 +00:00
def insert_nginx_metrics ( serv , conn ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2021-08-15 09:02:12 +00:00
try :
2022-11-12 16:11:29 +00:00
NginxMetrics . insert ( serv = serv , conn = conn , date = cur_date ) . execute ( )
2021-08-15 09:02:12 +00:00
except Exception as e :
out_error ( e )
2022-07-03 06:11:34 +00:00
def insert_apache_metrics ( serv , conn ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2022-07-03 06:11:34 +00:00
try :
2022-11-12 16:11:29 +00:00
ApacheMetrics . insert ( serv = serv , conn = conn , date = cur_date ) . execute ( )
2022-07-03 06:11:34 +00:00
except Exception as e :
out_error ( e )
2018-08-20 06:39:52 +00:00
def select_waf_metrics_enable_server ( ip ) :
2021-08-02 08:19:22 +00:00
query = Waf . select ( Waf . metrics ) . join ( Server , on = ( Waf . server_id == Server . server_id ) ) . where ( Server . ip == ip )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-08-20 06:39:52 +00:00
else :
2021-08-02 08:19:22 +00:00
for en in query_res :
return en . metrics
2020-08-11 08:25:39 +00:00
2020-10-02 12:39:00 +00:00
2019-10-14 06:55:29 +00:00
def select_waf_servers ( serv ) :
2021-08-02 08:19:22 +00:00
query = Server . select ( Server . ip ) . join ( Waf , on = ( Waf . server_id == Server . server_id ) ) . where ( Server . ip == serv )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2019-10-25 07:18:57 +00:00
else :
2021-08-02 08:19:22 +00:00
for en in query_res :
return en . ip
2020-08-11 08:25:39 +00:00
2022-08-02 08:53:32 +00:00
def select_waf_nginx_servers ( serv ) :
query = Server . select ( Server . ip ) . join ( WafNginx , on = ( WafNginx . server_id == Server . server_id ) ) . where ( Server . ip == serv )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
for en in query_res :
return en . ip
def insert_waf_nginx_server ( server_ip ) :
try :
server_id = Server . get ( Server . ip == server_ip ) . server_id
WafNginx . insert ( server_id = server_id ) . execute ( )
except Exception as e :
out_error ( e )
2021-01-14 13:14:38 +00:00
def select_waf_servers_metrics_for_master ( ) :
2022-05-23 19:13:34 +00:00
query = Server . select ( Server . ip ) . join (
Waf , on = ( Waf . server_id == Server . server_id )
) . where ( ( Server . enable == 1 ) & Waf . metrics == 1 )
2021-01-14 13:14:38 +00:00
try :
2021-08-15 09:02:12 +00:00
query_res = query . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-01-14 13:14:38 +00:00
else :
2021-08-15 09:02:12 +00:00
return query_res
2021-01-14 13:14:38 +00:00
2021-08-02 08:19:22 +00:00
def select_waf_servers_metrics ( uuid ) :
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
user_group = User . get ( User . username == get_user_name_by_uuid ( uuid ) )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-08-20 06:39:52 +00:00
else :
2021-08-02 08:19:22 +00:00
if user_group . groups == ' 1 ' :
2021-08-05 05:46:44 +00:00
query = Waf . select ( Server . ip ) . join ( Server , on = ( Waf . server_id == Server . server_id ) ) . where (
2022-05-25 08:21:44 +00:00
( Server . enable == 1 ) & ( Waf . metrics == 1 )
2021-08-05 05:46:44 +00:00
)
2021-08-02 08:19:22 +00:00
else :
2021-08-05 05:46:44 +00:00
query = Waf . select ( Server . ip ) . join ( Server , on = ( Waf . server_id == Server . server_id ) ) . where (
2022-05-25 08:21:44 +00:00
( Server . enable == 1 ) & ( Waf . metrics == 1 ) & ( Server . groups == user_group . groups )
2021-08-05 05:46:44 +00:00
)
2020-08-11 08:25:39 +00:00
try :
2021-08-05 05:46:44 +00:00
query_res = query . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-08-20 06:39:52 +00:00
else :
2021-08-05 05:46:44 +00:00
return query_res
2020-08-11 08:25:39 +00:00
2018-08-20 06:39:52 +00:00
def insert_waf_metrics_enable ( serv , enable ) :
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
server_id = Server . get ( Server . ip == serv ) . server_id
2021-09-01 13:40:42 +00:00
Waf . insert ( server_id = server_id , metrics = enable ) . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-05 14:32:44 +00:00
2020-10-02 12:39:00 +00:00
2020-08-05 14:32:44 +00:00
def insert_waf_rules ( serv ) :
2021-08-02 08:19:22 +00:00
data_source = [
{ ' serv ' : serv , ' rule_name ' : ' Ignore static ' , ' rule_file ' : ' modsecurity_crs_10_ignore_static.conf ' ,
2022-05-28 07:59:05 +00:00
' desc ' : ' This ruleset will skip all tests for media files, but will skip only the request body phase (phase 2) '
2022-05-28 09:38:43 +00:00
' for text files. To skip the outbound stage for text files, add file 47 (skip_outbound_checks) '
' to your configuration, in addition to this fileth/aws/login ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' Brute force protection ' , ' rule_file ' : ' modsecurity_crs_11_brute_force.conf ' ,
2022-05-28 07:59:05 +00:00
' desc ' : ' Anti-Automation Rule for specific Pages (Brute Force Protection) This is a rate-limiting rule set and '
' does not directly correlate whether the authentication attempt was successful or not ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' DOS Protections ' , ' rule_file ' : ' modsecurity_crs_11_dos_protection.conf ' ,
2022-05-28 07:59:05 +00:00
' desc ' : ' Enforce an existing IP address block and log only 1-time/minute. We do not want to get flooded by alerts '
' during an attack or scan so we are only triggering an alert once/minute. You can adjust how often you '
' want to receive status alerts by changing the expirevar setting below ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' XML enabler ' , ' rule_file ' : ' modsecurity_crs_13_xml_enabler.conf ' ,
2022-05-23 18:23:01 +00:00
' desc ' : ' The rules in this file will trigger the XML parser upon an XML request ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' Protocol violations ' , ' rule_file ' : ' modsecurity_crs_20_protocol_violations.conf ' ,
2022-05-28 07:59:05 +00:00
' desc ' : ' Some protocol violations are common in application layer attacks. Validating HTTP requests eliminates a '
' large number of application layer attacks. The purpose of this rules file is to enforce HTTP RFC requirements '
' that state how the client is supposed to interact with the server. http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' Protocol anomalies ' , ' rule_file ' : ' modsecurity_crs_21_protocol_anomalies.conf ' ,
2022-05-28 07:59:05 +00:00
' desc ' : ' Some common HTTP usage patterns are indicative of attacks but may also be used by non-browsers for '
' legitimate uses. Do not accept requests without common headers. All normal web browsers include Host, '
' User-Agent and Accept headers. Implies either an attacker or a legitimate automation client ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' Detect CC# ' , ' rule_file ' : ' modsecurity_crs_25_cc_known.conf ' ,
2022-05-23 18:23:01 +00:00
' desc ' : ' Detect CC# in input, log transaction and sanitize ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' CC traker ' , ' rule_file ' : ' modsecurity_crs_25_cc_track_pan.conf ' ,
2022-05-23 18:23:01 +00:00
' desc ' : ' Credit Card Track 1 and 2 and PAN Leakage Checks ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' HTTP policy ' , ' rule_file ' : ' modsecurity_crs_30_http_policy.conf ' ,
2022-05-28 07:59:05 +00:00
' desc ' : ' HTTP policy enforcement The HTTP policy enforcement rule set sets limitations on the use of HTTP by '
' clients. Few applications require the breadth and depth of the HTTP protocol. On the other hand many '
' attacks abuse valid but rare HTTP use patterns. Restricting HTTP protocol usage is effective in '
' therefore effective in blocking many application layer attacks ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' Bad robots ' , ' rule_file ' : ' modsecurity_crs_35_bad_robots.conf ' ,
2022-05-28 07:59:05 +00:00
' desc ' : ' Bad robots detection is based on checking elements easily controlled by the client. As such a '
' determined attacked can bypass those checks. Therefore bad robots detection should not be viewed '
' as a security mechanism against targeted attacks but rather as a nuisance reduction, eliminating '
' most of the random attacks against your web site ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' OS Injection Attacks ' , ' rule_file ' : ' modsecurity_crs_40_generic_attacks.conf ' ,
2022-05-23 18:23:01 +00:00
' desc ' : ' OS Command Injection Attacks ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' SQL injection ' , ' rule_file ' : ' modsecurity_crs_41_sql_injection_attacks.conf ' ,
2022-05-23 18:23:01 +00:00
' desc ' : ' SQL injection protection ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' XSS Protections ' , ' rule_file ' : ' modsecurity_crs_41_xss_attacks.conf ' ,
2022-05-23 18:23:01 +00:00
' desc ' : ' XSS attacks protection ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' Comment spam ' , ' rule_file ' : ' modsecurity_crs_42_comment_spam.conf ' ,
2022-05-28 07:59:05 +00:00
' desc ' : ' Comment spam is an attack against blogs, guestbooks, wikis and other types of interactive web sites '
' that accept and display hyperlinks submitted by visitors. The spammers automatically post specially '
' crafted random comments which include links that point to the spammer \' s web site. The links artificially '
' increase the site \' s search engine ranking and may make the site more noticable in search results. ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' Trojans Protections ' , ' rule_file ' : ' modsecurity_crs_45_trojans.conf ' ,
2022-05-28 07:59:05 +00:00
' desc ' : ' The trojan access detection rules detects access to known Trojans already installed on a server. '
' Uploading of Trojans is part of the Anti-Virus rules and uses external Anti Virus program when uploading '
' files. Detection of Trojans access is especially important in a hosting environment where the actual Trojan '
' upload may be done through valid methods and not through hacking ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' RFI Protections ' , ' rule_file ' : ' modsecurity_crs_46_slr_et_lfi_attacks.conf ' ,
2022-05-28 07:59:05 +00:00
' desc ' : ' Remote file inclusion is an attack targeting vulnerabilities in web applications that dynamically reference '
' external scripts. The perpetrator’ s goal is to exploit the referencing function in an application to upload '
' malware (e.g., backdoor shells) from a remote URL located within a different domain ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' RFI Protections 2 ' , ' rule_file ' : ' modsecurity_crs_46_slr_et_rfi_attacks.conf ' ,
2022-05-28 07:59:05 +00:00
' desc ' : ' Remote file inclusion is an attack targeting vulnerabilities in web applications that dynamically reference '
' external scripts. The perpetrator’ s goal is to exploit the referencing function in an application to '
' upload malware (e.g., backdoor shells) from a remote URL located within a different domain ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' SQLi Protections ' , ' rule_file ' : ' modsecurity_crs_46_slr_et_sqli_attacks.conf ' ,
2022-05-23 18:23:01 +00:00
' desc ' : ' SQLi injection attacks protection ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' XSS Protections 2 ' , ' rule_file ' : ' modsecurity_crs_46_slr_et_xss_attacks.conf ' ,
2022-05-23 18:23:01 +00:00
' desc ' : ' XSS attacks protection ' } ,
2021-08-02 08:19:22 +00:00
{ ' serv ' : serv , ' rule_name ' : ' Common exceptions ' , ' rule_file ' : ' modsecurity_crs_47_common_exceptions.conf ' ,
2022-05-23 18:23:01 +00:00
' desc ' : ' This file is used as an exception mechanism to remove common false positives that may be encountered ' } ,
2021-08-02 08:19:22 +00:00
]
try :
WafRules . insert_many ( data_source ) . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-05 14:32:44 +00:00
else :
return True
2022-08-02 08:53:32 +00:00
def insert_nginx_waf_rules ( serv ) :
data_source = [
{ ' serv ' : serv , ' rule_name ' : ' Initialization ' , ' rule_file ' : ' REQUEST-901-INITIALIZATION.conf ' ,
' desc ' : ' This file REQUEST-901-INITIALIZATION.conf initializes the Core Rules and performs preparatory actions. '
' It also fixes errors and omissions of variable definitions in the file crs-setup.conf The setup.conf '
' can and should be edited by the user, this file. is part of the CRS installation and should not be altered. ' ,
' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Drupal exclusion rules ' , ' rule_file ' : ' REQUEST-903.9001-DRUPAL-EXCLUSION-RULES.conf ' ,
' desc ' : ' These exclusions remedy false positives in a default Drupal install. The exclusions are only active '
' if crs_exclusions_drupal=1 is set. See rule 900130 in crs-setup.conf for instructions. ' ,
' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Nextcloud exclusion rules ' , ' rule_file ' : ' REQUEST-903.9003-NEXTCLOUD-EXCLUSION-RULES.conf ' ,
' desc ' : ' These exclusions remedy false positives in a default NextCloud install. They will likely work with OwnCloud '
' too, but you may have to modify them. The exclusions are only active if crs_exclusions_nextcloud=1 is set. '
2023-04-02 16:58:55 +00:00
' See rule 900130 in crs-setup.conf for instructions. ' , ' service ' : ' nginx ' } ,
2022-08-02 08:53:32 +00:00
{ ' serv ' : serv , ' rule_name ' : ' Dokuwiki exclusion rules ' , ' rule_file ' : ' REQUEST-903.9004-DOKUWIKI-EXCLUSION-RULES.conf ' ,
' desc ' : ' These exclusions remedy false positives in a default Dokuwiki install. The exclusions are only active '
2023-04-02 16:58:55 +00:00
' if crs_exclusions_dokuwiki=1 is set. See rule 900130 in crs-setup.conf for instructions. ' , ' service ' : ' nginx ' } ,
2022-08-02 08:53:32 +00:00
{ ' serv ' : serv , ' rule_name ' : ' CPanel exclusion rules ' , ' rule_file ' : ' REQUEST-903.9005-CPANEL-EXCLUSION-RULES.conf ' ,
' desc ' : ' These exclusions remedy false positives in a default CPanel install. The exclusions are only active '
' if crs_exclusions_cpanel=1 is set. See rule 900130 in crs-setup.conf for instructions. ' ,
' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' XenForo exclusion rules ' , ' rule_file ' : ' REQUEST-903.9006-XENFORO-EXCLUSION-RULES.conf ' ,
' desc ' : ' These exclusions remedy false positives in a default XenForo install. The exclusions are only active '
2023-04-02 16:58:55 +00:00
' if crs_exclusions_xenforo=1 is set. See rule 900130 in crs-setup.conf for instructions. ' , ' service ' : ' nginx ' } ,
2022-08-02 08:53:32 +00:00
{ ' serv ' : serv , ' rule_name ' : ' Common exceptions ' , ' rule_file ' : ' REQUEST-905-COMMON-EXCEPTIONS.conf ' ,
' desc ' : ' This file is used as an exception mechanism to remove common false positives that may be encountered. ' ,
' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' IP reputation ' , ' rule_file ' : ' REQUEST-910-IP-REPUTATION.conf ' ,
' desc ' : ' IP reputation rule. ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Method enforcement ' , ' rule_file ' : ' REQUEST-911-METHOD-ENFORCEMENT.conf ' ,
' desc ' : ' Method enforcement rule. ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' DDOS protection ' , ' rule_file ' : ' REQUEST-912-DOS-PROTECTION.conf ' ,
' desc ' : ' Anti-Automation rules to detect Denial of Service attacks. ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Protocol enforcement ' , ' rule_file ' : ' REQUEST-920-PROTOCOL-ENFORCEMENT.conf ' ,
' desc ' : ' Some protocol violations are common in application layer attacks. Validating HTTP requests eliminates '
' a large number of application layer attacks. The purpose of this rules file is to enforce HTTP RFC '
2023-04-02 16:58:55 +00:00
' requirements that state how the client is supposed to interact with the server. ' , ' service ' : ' nginx ' } ,
2022-08-02 08:53:32 +00:00
{ ' serv ' : serv , ' rule_name ' : ' Protocol attack ' , ' rule_file ' : ' REQUEST-921-PROTOCOL-ATTACK.conf ' ,
' desc ' : ' Protocol attack rule. ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Application attack LFI ' , ' rule_file ' : ' REQUEST-930-APPLICATION-ATTACK-LFI.conf ' ,
' desc ' : ' Application attack LFI rule. ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Application attack RCE ' , ' rule_file ' : ' REQUEST-932-APPLICATION-ATTACK-RCE.conf ' ,
' desc ' : ' Application attack RCE rule. ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Application attack PHP ' , ' rule_file ' : ' REQUEST-933-APPLICATION-ATTACK-PHP.conf ' ,
' desc ' : ' Application attack PHP rule. ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Application attack NodeJS ' , ' rule_file ' : ' REQUEST-934-APPLICATION-ATTACK-NODEJS.conf ' ,
' desc ' : ' Application attack NodeJS rule. ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Application attack SQLI ' , ' rule_file ' : ' REQUEST-942-APPLICATION-ATTACK-SQLI.conf ' ,
' desc ' : ' Application attack SQLI rule. ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Application attack session-fixation ' , ' rule_file ' : ' REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION.conf ' ,
' desc ' : ' Application attack session-fixation rule. ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Application attack JAVA ' , ' rule_file ' : ' REQUEST-944-APPLICATION-ATTACK-JAVA.conf ' ,
' desc ' : ' Application attack JAVA rule. ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Application attack blocking evaluation ' , ' rule_file ' : ' REQUEST-949-BLOCKING-EVALUATION.conf ' ,
' desc ' : ' Application attack blocking evaluation rule. ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Data leakages ' , ' rule_file ' : ' RESPONSE-950-DATA-LEAKAGES.conf ' ,
' desc ' : ' The paranoia level skip rules 950020, 950021 and 950022 have odd numbers not in sync with other paranoia '
' level skip rules in other. files. This is done to avoid rule id collisions with CRSv2. This is also true '
' for rule 950130. ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Data leakages SQL ' , ' rule_file ' : ' RESPONSE-951-DATA-LEAKAGES-SQL.conf ' ,
' desc ' : ' Data leakages SQL rule ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Data leakages JAVA ' , ' rule_file ' : ' RESPONSE-952-DATA-LEAKAGES-JAVA.conf ' ,
' desc ' : ' Data leakages JAVA rule ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Data leakages PHP ' , ' rule_file ' : ' RESPONSE-953-DATA-LEAKAGES-PHP.conf ' ,
' desc ' : ' Data leakages PHP rule ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Data leakages IIS ' , ' rule_file ' : ' RESPONSE-954-DATA-LEAKAGES-IIS.conf ' ,
' desc ' : ' Data leakages IIS rule ' , ' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Blocking evaluation ' , ' rule_file ' : ' RESPONSE-959-BLOCKING-EVALUATION.conf ' ,
' desc ' : ' You should set the score to the proper threshold you would prefer. If kept at " @gt 0 " it will work '
' similarly to previous Mod CRS rules and will create an event in the error_log file if there are any '
' rules that match. If you would like to lessen the number of events generated in the error_log file, '
' you should increase the anomaly score threshold to something like " @gt 20 " . This would only generate '
' an event in the error_log file if there are multiple lower severity rule matches or if any 1 higher '
' severity item matches. You should also set the desired disruptive action (deny, redirect, etc...). ' ,
' service ' : ' nginx ' } ,
{ ' serv ' : serv , ' rule_name ' : ' Correlation ' , ' rule_file ' : ' RESPONSE-980-CORRELATION.conf ' ,
' desc ' : ' This file is used in post processing after the response has been sent to the client (in the logging phase). '
' Its purpose is to provide inbound+outbound correlation of events to provide a more intelligent designation '
' as to the outcome or result of the transaction - meaning, was this a successful attack? ' ,
' service ' : ' nginx ' } ,
]
try :
WafRules . insert_many ( data_source ) . execute ( )
except Exception as e :
out_error ( e )
else :
return True
def select_waf_rules ( serv , service ) :
query = WafRules . select ( WafRules . id , WafRules . rule_name , WafRules . en , WafRules . desc ) . where (
( WafRules . serv == serv )
& ( WafRules . service == service )
)
2020-08-05 14:32:44 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-05 14:32:44 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-08-05 14:32:44 +00:00
2020-08-11 08:25:39 +00:00
2021-08-02 08:19:22 +00:00
def delete_waf_rules ( serv ) :
query = WafRules . delete ( ) . where ( WafRules . serv == serv )
2020-08-25 05:20:55 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
def select_waf_rule_by_id ( rule_id ) :
try :
query = WafRules . get ( WafRules . id == rule_id )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-25 05:20:55 +00:00
else :
2021-08-02 08:19:22 +00:00
return query . rule_file
2020-08-25 05:20:55 +00:00
2021-08-02 08:19:22 +00:00
def update_enable_waf_rules ( rule_id , serv , en ) :
2021-10-04 11:01:58 +00:00
query = WafRules . update ( en = en ) . where ( ( WafRules . id == rule_id ) & ( WafRules . serv == serv ) )
2020-08-25 05:20:55 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-25 05:20:55 +00:00
2022-08-02 08:53:32 +00:00
def insert_new_waf_rule ( rule_name : str , rule_file : str , rule_description : str , service : str , serv : str ) - > int :
try :
last_id = WafRules . insert (
serv = serv ,
rule_name = rule_name ,
rule_file = rule_file ,
desc = rule_description ,
service = service
) . execute ( )
except Exception as e :
out_error ( e )
else :
return last_id
2021-08-02 08:19:22 +00:00
def delete_waf_server ( server_id ) :
query = Waf . delete ( ) . where ( Waf . server_id == server_id )
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-11 08:25:39 +00:00
2021-05-16 05:27:47 +00:00
def insert_waf_metrics ( serv , conn ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2020-08-11 08:25:39 +00:00
try :
2022-11-12 16:11:29 +00:00
WafMetrics . insert ( serv = serv , conn = conn , date = cur_date ) . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-11 08:25:39 +00:00
2021-05-16 05:27:47 +00:00
def delete_waf_metrics ( ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' , timedelta_minus = 3 )
query = WafMetrics . delete ( ) . where ( WafMetrics . date < cur_date )
2020-08-11 08:25:39 +00:00
try :
2021-08-07 07:41:28 +00:00
query . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-11 08:25:39 +00:00
2018-08-20 06:39:52 +00:00
def update_waf_metrics_enable ( name , enable ) :
2021-08-02 08:19:22 +00:00
server_id = 0
try :
server_id = Server . get ( Server . hostname == name ) . server_id
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
Waf . update ( metrics = enable ) . where ( Waf . server_id == server_id ) . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-11 08:25:39 +00:00
2021-05-16 05:27:47 +00:00
def delete_metrics ( ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' , timedelta_minus = 3 )
query = Metrics . delete ( ) . where ( Metrics . date < cur_date )
2020-08-11 08:25:39 +00:00
try :
2021-08-07 07:41:28 +00:00
query . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-11 08:25:39 +00:00
2021-05-16 05:27:47 +00:00
def delete_http_metrics ( ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' , timedelta_minus = 3 )
query = MetricsHttpStatus . delete ( ) . where ( MetricsHttpStatus . date < cur_date )
2021-05-16 05:27:47 +00:00
try :
2021-08-07 07:41:28 +00:00
query . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-05-16 05:27:47 +00:00
2021-04-17 17:38:08 +00:00
2021-08-15 09:02:12 +00:00
def delete_nginx_metrics ( ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' , timedelta_minus = 3 )
query = NginxMetrics . delete ( ) . where ( NginxMetrics . date < cur_date )
2021-08-15 09:02:12 +00:00
try :
query . execute ( )
except Exception as e :
out_error ( e )
2022-07-03 06:11:34 +00:00
def delete_apache_metrics ( ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' , timedelta_minus = 3 )
query = ApacheMetrics . delete ( ) . where ( ApacheMetrics . date < cur_date )
2022-07-03 06:11:34 +00:00
try :
query . execute ( )
except Exception as e :
out_error ( e )
2022-07-15 18:55:54 +00:00
def select_metrics ( serv , service , * * kwargs ) :
2021-08-02 08:19:22 +00:00
cursor = conn . cursor ( )
2020-10-02 12:39:00 +00:00
2022-07-15 18:55:54 +00:00
if service in ( ' nginx ' , ' apache ' , ' waf ' ) :
metrics_table = ' {} _metrics ' . format ( service )
elif service == ' http_metrics ' :
metrics_table = ' metrics_http_status '
2018-08-03 19:17:03 +00:00
else :
2022-07-15 18:55:54 +00:00
metrics_table = ' metrics '
2021-05-16 05:27:47 +00:00
if mysql_enable == ' 1 ' :
if kwargs . get ( ' time_range ' ) == ' 60 ' :
2022-04-27 18:10:26 +00:00
date_from = " and date > now() - INTERVAL 60 minute group by `date` div 100 "
2021-05-16 05:27:47 +00:00
elif kwargs . get ( ' time_range ' ) == ' 180 ' :
2022-04-27 18:10:26 +00:00
date_from = " and date > now() - INTERVAL 180 minute group by `date` div 200 "
2021-05-16 05:27:47 +00:00
elif kwargs . get ( ' time_range ' ) == ' 360 ' :
2022-04-27 18:10:26 +00:00
date_from = " and date > now() - INTERVAL 360 minute group by `date` div 300 "
2021-05-16 05:27:47 +00:00
elif kwargs . get ( ' time_range ' ) == ' 720 ' :
2022-04-27 18:10:26 +00:00
date_from = " and date > now() - INTERVAL 720 minute group by `date` div 500 "
2021-05-16 05:27:47 +00:00
else :
date_from = " and date > now() - INTERVAL 30 minute "
2022-07-15 18:55:54 +00:00
sql = """ select * from {metrics_table} where serv = ' {serv} ' {date_from} order by `date` asc """ . format (
metrics_table = metrics_table , serv = serv , date_from = date_from
)
2021-05-16 05:27:47 +00:00
else :
if kwargs . get ( ' time_range ' ) == ' 60 ' :
date_from = " and date > datetime( ' now ' , ' -60 minutes ' , ' localtime ' ) and rowid % 2 = 0 "
elif kwargs . get ( ' time_range ' ) == ' 180 ' :
date_from = " and date > datetime( ' now ' , ' -180 minutes ' , ' localtime ' ) and rowid % 5 = 0 "
elif kwargs . get ( ' time_range ' ) == ' 360 ' :
date_from = " and date > datetime( ' now ' , ' -360 minutes ' , ' localtime ' ) and rowid % 7 = 0 "
elif kwargs . get ( ' time_range ' ) == ' 720 ' :
date_from = " and date > datetime( ' now ' , ' -720 minutes ' , ' localtime ' ) and rowid % 9 = 0 "
else :
date_from = " and date > datetime( ' now ' , ' -30 minutes ' , ' localtime ' ) "
2022-07-15 18:55:54 +00:00
sql = """ select * from (select * from {metrics_table} where serv = ' {serv} ' {date_from} order by `date`) order by `date` """ . format (
metrics_table = metrics_table , serv = serv , date_from = date_from )
2021-05-16 05:27:47 +00:00
try :
2021-08-02 08:19:22 +00:00
cursor . execute ( sql )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-05-16 05:27:47 +00:00
else :
2021-08-02 08:19:22 +00:00
return cursor . fetchall ( )
2021-05-16 05:27:47 +00:00
2020-08-10 18:32:44 +00:00
def select_servers_metrics_for_master ( * * kwargs ) :
2022-07-03 06:11:34 +00:00
if kwargs . get ( ' group ' ) != 1 :
query = Server . select ( Server . ip ) . where (
( ( Server . metrics == 1 ) | ( Server . nginx_metrics == 1 ) | ( Server . apache_metrics == 1 ) )
& ( Server . groups == kwargs . get ( ' group ' ) )
)
2021-08-15 09:02:12 +00:00
else :
2022-07-03 06:11:34 +00:00
query = Server . select ( Server . ip ) . where (
( Server . metrics == 1 )
| ( Server . nginx_metrics == 1 )
| ( Server . apache_metrics == 1 )
)
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def select_haproxy_servers_metrics_for_master ( ) :
query = Server . select ( Server . ip ) . where ( Server . metrics == 1 )
2020-08-11 08:25:39 +00:00
try :
2021-08-15 09:02:12 +00:00
query_res = query . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-08-07 05:17:10 +00:00
else :
2021-08-15 09:02:12 +00:00
return query_res
def select_nginx_servers_metrics_for_master ( ) :
2022-09-11 07:40:25 +00:00
query = Server . select ( Server . ip ) . where ( ( Server . nginx_metrics == 1 ) & ( Server . nginx == 1 ) )
2021-08-15 09:02:12 +00:00
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2020-08-11 08:25:39 +00:00
2022-07-03 06:11:34 +00:00
def select_apache_servers_metrics_for_master ( ) :
2022-09-11 07:40:25 +00:00
query = Server . select ( Server . ip ) . where (
( Server . apache_metrics == 1 )
& ( Server . apache == 1 )
)
2022-07-03 06:11:34 +00:00
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2022-11-17 07:34:58 +00:00
def select_servers_metrics ( group_id ) :
if group_id == 1 :
query = Server . select ( Server . ip ) . where ( ( Server . enable == 1 ) & ( Server . metrics == 1 ) )
else :
query = Server . select ( Server . ip ) . where (
( Server . enable == 1 ) & ( Server . groups == group_id ) & ( Server . metrics == 1 ) )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2020-08-11 08:25:39 +00:00
2022-11-17 07:34:58 +00:00
def select_table_metrics ( group_id ) :
2021-08-02 08:19:22 +00:00
cursor = conn . cursor ( )
2020-08-11 08:25:39 +00:00
2022-11-17 07:34:58 +00:00
if group_id == 1 :
groups = " "
else :
groups = " and servers.groups = ' {group} ' " . format ( group = group_id )
2018-10-17 02:55:43 +00:00
if mysql_enable == ' 1 ' :
sql = """
2022-05-28 09:38:43 +00:00
select ip . ip , hostname , avg_sess_1h , avg_sess_24h , avg_sess_3d , max_sess_1h , max_sess_24h , max_sess_3d ,
2022-05-28 07:59:05 +00:00
avg_cur_1h , avg_cur_24h , avg_cur_3d , max_con_1h , max_con_24h , max_con_3d from
2022-05-23 16:16:21 +00:00
( select servers . ip from servers where metrics = 1 ) as ip ,
2018-10-17 02:55:43 +00:00
2022-05-23 16:16:21 +00:00
( select servers . ip , servers . hostname as hostname from servers left join metrics as metr on servers . ip = metr . serv where servers . metrics = 1 % s ) as hostname ,
2018-10-17 02:55:43 +00:00
2022-05-23 16:16:21 +00:00
( select servers . ip , round ( avg ( metr . sess_rate ) , 1 ) as avg_sess_1h from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 1 HOUR )
group by servers . ip ) as avg_sess_1h ,
2018-10-17 02:55:43 +00:00
2022-05-23 16:16:21 +00:00
( select servers . ip , round ( avg ( metr . sess_rate ) , 1 ) as avg_sess_24h from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 24 HOUR )
group by servers . ip ) as avg_sess_24h ,
2018-10-17 02:55:43 +00:00
2022-05-23 16:16:21 +00:00
( select servers . ip , round ( avg ( metr . sess_rate ) , 1 ) as avg_sess_3d from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 3 DAY )
group by servers . ip ) as avg_sess_3d ,
2022-05-23 13:33:19 +00:00
2018-10-17 02:55:43 +00:00
( select servers . ip , max ( metr . sess_rate ) as max_sess_1h from servers
2022-05-23 16:16:21 +00:00
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 1 HOUR )
group by servers . ip ) as max_sess_1h ,
( select servers . ip , max ( metr . sess_rate ) as max_sess_24h from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 24 HOUR )
group by servers . ip ) as max_sess_24h ,
( select servers . ip , max ( metr . sess_rate ) as max_sess_3d from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 3 DAY )
group by servers . ip ) as max_sess_3d ,
( select servers . ip , round ( avg ( metr . curr_con + metr . cur_ssl_con ) , 1 ) as avg_cur_1h from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 1 HOUR )
group by servers . ip ) as avg_cur_1h ,
( select servers . ip , round ( avg ( metr . curr_con + metr . cur_ssl_con ) , 1 ) as avg_cur_24h from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 24 HOUR )
group by servers . ip ) as avg_cur_24h ,
2022-05-23 13:33:19 +00:00
( select servers . ip , round ( avg ( metr . curr_con + metr . cur_ssl_con ) , 1 ) as avg_cur_3d from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 3 DAY )
group by servers . ip ) as avg_cur_3d ,
2022-05-23 13:38:51 +00:00
2022-05-23 13:33:19 +00:00
( select servers . ip , max ( metr . curr_con ) as max_con_1h from servers
2022-05-23 16:16:21 +00:00
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 1 HOUR )
group by servers . ip ) as max_con_1h ,
( select servers . ip , max ( metr . curr_con ) as max_con_24h from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 24 HOUR )
group by servers . ip ) as max_con_24h ,
( select servers . ip , max ( metr . curr_con ) as max_con_3d from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 3 DAY )
group by servers . ip ) as max_con_3d
2022-05-23 13:33:19 +00:00
2018-10-17 02:55:43 +00:00
where ip . ip = hostname . ip
2022-05-23 16:16:21 +00:00
and ip . ip = avg_sess_1h . ip
and ip . ip = avg_sess_24h . ip
and ip . ip = avg_sess_3d . ip
and ip . ip = max_sess_1h . ip
and ip . ip = max_sess_24h . ip
and ip . ip = max_sess_3d . ip
and ip . ip = avg_cur_1h . ip
and ip . ip = avg_cur_24h . ip
and ip . ip = avg_cur_3d . ip
and ip . ip = max_con_1h . ip
and ip . ip = max_con_24h . ip
and ip . ip = max_con_3d . ip
group by hostname . ip """ % g roups
2018-10-17 02:55:43 +00:00
else :
sql = """
2022-05-28 07:59:05 +00:00
select ip . ip , hostname , avg_sess_1h , avg_sess_24h , avg_sess_3d , max_sess_1h , max_sess_24h , max_sess_3d , avg_cur_1h ,
avg_cur_24h , avg_cur_3d , max_con_1h , max_con_24h , max_con_3d from
2018-10-17 02:55:43 +00:00
( select servers . ip from servers where metrics = 1 ) as ip ,
2018-08-06 13:59:39 +00:00
2018-10-17 02:55:43 +00:00
( select servers . ip , servers . hostname as hostname from servers left join metrics as metr on servers . ip = metr . serv where servers . metrics = 1 % s ) as hostname ,
2018-08-06 13:59:39 +00:00
2022-05-23 13:33:19 +00:00
( select servers . ip , round ( avg ( metr . sess_rate ) , 1 ) as avg_sess_1h from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
2018-10-17 02:55:43 +00:00
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -1 hours ' , ' localtime ' )
group by servers . ip ) as avg_sess_1h ,
2018-08-06 13:59:39 +00:00
2022-05-23 13:33:19 +00:00
( select servers . ip , round ( avg ( metr . sess_rate ) , 1 ) as avg_sess_24h from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
2018-10-17 02:55:43 +00:00
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -24 hours ' , ' localtime ' )
2022-05-23 13:33:19 +00:00
group by servers . ip ) as avg_sess_24h ,
2018-08-06 13:59:39 +00:00
2022-05-23 13:33:19 +00:00
( select servers . ip , round ( avg ( metr . sess_rate ) , 1 ) as avg_sess_3d from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -3 days ' , ' localtime ' )
2018-10-17 02:55:43 +00:00
group by servers . ip ) as avg_sess_3d ,
2018-08-06 13:59:39 +00:00
2022-05-23 13:33:19 +00:00
( select servers . ip , max ( metr . sess_rate ) as max_sess_1h from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
2018-10-17 02:55:43 +00:00
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -1 hours ' , ' localtime ' )
group by servers . ip ) as max_sess_1h ,
2018-08-06 13:59:39 +00:00
2022-05-23 13:38:51 +00:00
( select servers . ip , max ( metr . sess_rate ) as max_sess_24h from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
2018-10-17 02:55:43 +00:00
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -24 hours ' , ' localtime ' )
2022-05-23 13:33:19 +00:00
group by servers . ip ) as max_sess_24h ,
2018-08-06 13:59:39 +00:00
2022-05-23 13:33:19 +00:00
( select servers . ip , max ( metr . sess_rate ) as max_sess_3d from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -3 days ' , ' localtime ' )
2018-10-17 02:55:43 +00:00
group by servers . ip ) as max_sess_3d ,
2018-08-06 13:59:39 +00:00
2022-05-23 13:33:19 +00:00
( select servers . ip , round ( avg ( metr . curr_con + metr . cur_ssl_con ) , 1 ) as avg_cur_1h from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
2018-10-17 02:55:43 +00:00
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -1 hours ' , ' localtime ' )
group by servers . ip ) as avg_cur_1h ,
2018-08-06 13:59:39 +00:00
2022-05-23 13:33:19 +00:00
( select servers . ip , round ( avg ( metr . curr_con + metr . cur_ssl_con ) , 1 ) as avg_cur_24h from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
2018-10-17 02:55:43 +00:00
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -24 hours ' , ' localtime ' )
2022-05-23 13:33:19 +00:00
group by servers . ip ) as avg_cur_24h ,
2018-08-06 13:59:39 +00:00
2022-05-23 13:33:19 +00:00
( select servers . ip , round ( avg ( metr . curr_con + metr . cur_ssl_con ) , 1 ) as avg_cur_3d from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -3 days ' , ' localtime ' )
2018-10-17 02:55:43 +00:00
group by servers . ip ) as avg_cur_3d ,
2018-08-06 13:59:39 +00:00
2022-05-23 13:33:19 +00:00
( select servers . ip , max ( metr . curr_con ) as max_con_1h from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
2018-10-17 02:55:43 +00:00
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -1 hours ' , ' localtime ' )
group by servers . ip ) as max_con_1h ,
2018-08-06 13:59:39 +00:00
2022-05-23 13:33:19 +00:00
( select servers . ip , max ( metr . curr_con ) as max_con_24h from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
2018-10-17 02:55:43 +00:00
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -24 hours ' , ' localtime ' )
2022-05-23 13:33:19 +00:00
group by servers . ip ) as max_con_24h ,
2018-08-06 13:59:39 +00:00
2022-05-23 13:33:19 +00:00
( select servers . ip , max ( metr . curr_con ) as max_con_3d from servers
left join metrics as metr on metr . serv = servers . ip
where servers . metrics = 1 and
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -3 days ' , ' localtime ' )
group by servers . ip ) as max_con_3d
2018-08-06 13:59:39 +00:00
2018-10-17 02:55:43 +00:00
where ip . ip = hostname . ip
and ip . ip = avg_sess_1h . ip
and ip . ip = avg_sess_24h . ip
and ip . ip = avg_sess_3d . ip
and ip . ip = max_sess_1h . ip
and ip . ip = max_sess_24h . ip
and ip . ip = max_sess_3d . ip
and ip . ip = avg_cur_1h . ip
and ip . ip = avg_cur_24h . ip
and ip . ip = avg_cur_3d . ip
and ip . ip = max_con_1h . ip
and ip . ip = max_con_24h . ip
and ip . ip = max_con_3d . ip
2018-08-06 13:59:39 +00:00
2018-10-17 02:55:43 +00:00
group by hostname . ip """ % g roups
2020-08-11 08:25:39 +00:00
try :
2021-08-02 08:19:22 +00:00
cursor . execute ( sql )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-11 08:25:39 +00:00
else :
2021-08-02 08:19:22 +00:00
return cursor . fetchall ( )
2020-08-11 08:25:39 +00:00
2022-11-17 07:34:58 +00:00
def select_service_table_metrics ( service : str , group_id : int ) :
2022-08-15 08:50:29 +00:00
cursor = conn . cursor ( )
if service in ( ' nginx ' , ' apache ' ) :
2022-11-12 20:06:57 +00:00
metrics_table = f ' { service } _metrics '
2022-08-15 08:50:29 +00:00
2022-11-17 07:34:58 +00:00
if group_id == 1 :
groups = " "
else :
2023-01-24 07:34:14 +00:00
groups = f " and servers.groups = ' { group_id } ' "
2022-08-15 08:50:29 +00:00
if mysql_enable == ' 1 ' :
sql = """
select ip . ip , hostname , avg_cur_1h , avg_cur_24h , avg_cur_3d , max_con_1h , max_con_24h , max_con_3d from
( select servers . ip from servers where { metrics } = 1 ) as ip ,
( select servers . ip , servers . hostname as hostname from servers left join { metrics } as metr on servers . ip = metr . serv where servers . { metrics } = 1 { groups } ) as hostname ,
( select servers . ip , round ( avg ( metr . conn ) , 1 ) as avg_cur_1h from servers
left join { metrics } as metr on metr . serv = servers . ip
where servers . { metrics } = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 1 HOUR )
group by servers . ip ) as avg_cur_1h ,
( select servers . ip , round ( avg ( metr . conn ) , 1 ) as avg_cur_24h from servers
left join { metrics } as metr on metr . serv = servers . ip
where servers . { metrics } = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 24 HOUR )
group by servers . ip ) as avg_cur_24h ,
( select servers . ip , round ( avg ( metr . conn ) , 1 ) as avg_cur_3d from servers
left join { metrics } as metr on metr . serv = servers . ip
where servers . { metrics } = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 3 DAY )
group by servers . ip ) as avg_cur_3d ,
( select servers . ip , max ( metr . conn ) as max_con_1h from servers
left join { metrics } as metr on metr . serv = servers . ip
where servers . { metrics } = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 1 HOUR )
group by servers . ip ) as max_con_1h ,
( select servers . ip , max ( metr . conn ) as max_con_24h from servers
left join { metrics } as metr on metr . serv = servers . ip
where servers . { metrics } = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 24 HOUR )
group by servers . ip ) as max_con_24h ,
( select servers . ip , max ( metr . conn ) as max_con_3d from servers
left join { metrics } as metr on metr . serv = servers . ip
where servers . { metrics } = 1 and
metr . date < = now ( ) and metr . date > = DATE_ADD ( NOW ( ) , INTERVAL - 3 DAY )
group by servers . ip ) as max_con_3d
where ip . ip = hostname . ip
and ip . ip = avg_cur_1h . ip
and ip . ip = avg_cur_24h . ip
and ip . ip = avg_cur_3d . ip
and ip . ip = max_con_1h . ip
and ip . ip = max_con_24h . ip
and ip . ip = max_con_3d . ip
group by hostname . ip """ .format(metrics=metrics_table, groups=groups)
else :
sql = """
select ip . ip , hostname , avg_cur_1h , avg_cur_24h , avg_cur_3d , max_con_1h , max_con_24h , max_con_3d from
( select servers . ip from servers where { metrics } = 1 ) as ip ,
( select servers . ip , servers . hostname as hostname from servers left join { metrics } as metr on servers . ip = metr . serv where servers . { metrics } = 1 { groups } ) as hostname ,
( select servers . ip , round ( avg ( metr . conn ) , 1 ) as avg_cur_1h from servers
left join { metrics } as metr on metr . serv = servers . ip
where servers . { metrics } = 1 and
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -1 hours ' , ' localtime ' )
group by servers . ip ) as avg_cur_1h ,
( select servers . ip , round ( avg ( metr . conn ) , 1 ) as avg_cur_24h from servers
left join { metrics } as metr on metr . serv = servers . ip
where servers . { metrics } = 1 and
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -24 hours ' , ' localtime ' )
group by servers . ip ) as avg_cur_24h ,
( select servers . ip , round ( avg ( metr . conn ) , 1 ) as avg_cur_3d from servers
left join { metrics } as metr on metr . serv = servers . ip
where servers . { metrics } = 1 and
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -3 days ' , ' localtime ' )
group by servers . ip ) as avg_cur_3d ,
( select servers . ip , max ( metr . conn ) as max_con_1h from servers
left join { metrics } as metr on metr . serv = servers . ip
where servers . { metrics } = 1 and
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -1 hours ' , ' localtime ' )
group by servers . ip ) as max_con_1h ,
( select servers . ip , max ( metr . conn ) as max_con_24h from servers
left join { metrics } as metr on metr . serv = servers . ip
where servers . { metrics } = 1 and
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -24 hours ' , ' localtime ' )
group by servers . ip ) as max_con_24h ,
( select servers . ip , max ( metr . conn ) as max_con_3d from servers
left join { metrics } as metr on metr . serv = servers . ip
where servers . { metrics } = 1 and
metr . date < = datetime ( ' now ' , ' localtime ' ) and metr . date > = datetime ( ' now ' , ' -3 days ' , ' localtime ' )
group by servers . ip ) as max_con_3d
where ip . ip = hostname . ip
and ip . ip = avg_cur_1h . ip
and ip . ip = avg_cur_24h . ip
and ip . ip = avg_cur_3d . ip
and ip . ip = max_con_1h . ip
and ip . ip = max_con_24h . ip
and ip . ip = max_con_3d . ip
group by hostname . ip """ .format(metrics=metrics_table, groups=groups)
try :
cursor . execute ( sql )
except Exception as e :
out_error ( e )
else :
return cursor . fetchall ( )
2022-11-17 07:34:58 +00:00
def update_setting ( param : str , val : str , user_group : int ) - > bool :
2023-01-02 20:01:20 +00:00
print ( val )
2022-11-17 07:34:58 +00:00
query = Setting . update ( value = val ) . where ( ( Setting . param == param ) & ( Setting . group == user_group ) )
try :
query . execute ( )
return True
except Exception as e :
out_error ( e )
return False
2020-10-02 12:39:00 +00:00
2019-09-14 08:13:45 +00:00
def get_ver ( ) :
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
ver = Version . get ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2019-09-14 08:13:45 +00:00
else :
2021-08-02 08:19:22 +00:00
return ver . version
2019-09-17 07:18:48 +00:00
2020-10-02 12:39:00 +00:00
2021-08-02 08:19:22 +00:00
def select_roles ( ) :
query = Role . select ( )
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-04-16 07:01:44 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-08-07 17:02:02 +00:00
2018-07-23 07:08:43 +00:00
def select_alert ( * * kwargs ) :
2020-08-10 18:32:44 +00:00
if kwargs . get ( " group " ) is not None :
2022-05-23 19:13:34 +00:00
query = Server . select ( Server . ip ) . where (
2022-05-25 08:21:44 +00:00
( Server . alert == 1 ) & ( Server . enable == 1 ) & ( Server . groups == kwargs . get ( ' group ' ) )
2022-05-23 19:13:34 +00:00
)
2021-08-15 09:21:46 +00:00
else :
query = Server . select ( Server . ip ) . where ( ( Server . alert == 1 ) & ( Server . enable == 1 ) )
2020-10-02 12:39:00 +00:00
try :
2021-08-15 09:21:46 +00:00
query_res = query . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-07-23 07:08:43 +00:00
else :
2021-08-15 09:21:46 +00:00
return query_res
2020-10-02 12:39:00 +00:00
2021-01-14 13:14:38 +00:00
def select_all_alerts ( * * kwargs ) :
if kwargs . get ( " group " ) is not None :
2021-08-02 08:19:22 +00:00
query = Server . select ( Server . ip ) . where (
2022-05-25 08:21:44 +00:00
( ( Server . alert == 1 ) | ( Server . nginx_alert == 1 ) ) & ( Server . enable == 1 ) & ( Server . groups == kwargs . get ( ' group ' ) )
)
2021-08-02 08:19:22 +00:00
else :
query = Server . select ( Server . ip ) . where ( ( ( Server . alert == 1 ) | ( Server . nginx_alert == 1 ) ) & ( Server . enable == 1 ) )
2021-01-14 13:14:38 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-01-14 13:14:38 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2021-01-14 13:14:38 +00:00
2021-01-04 07:24:40 +00:00
def select_nginx_alert ( * * kwargs ) :
if kwargs . get ( " group " ) is not None :
2021-08-15 09:21:46 +00:00
query = Server . select ( Server . ip ) . where (
2022-09-11 07:40:25 +00:00
( Server . nginx_alert == 1 )
& ( Server . enable == 1 )
& ( Server . groups == kwargs . get ( ' group ' ) )
& ( Server . nginx == 1 )
2022-05-25 08:21:44 +00:00
)
2021-08-15 09:21:46 +00:00
else :
2022-09-11 07:40:25 +00:00
query = Server . select ( Server . ip ) . where (
( Server . nginx_alert == 1 )
& ( Server . enable == 1 )
& ( Server . nginx == 1 )
)
2021-01-04 07:24:40 +00:00
try :
2021-08-15 09:21:46 +00:00
query_res = query . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-01-04 07:24:40 +00:00
else :
2021-08-15 09:21:46 +00:00
return query_res
2021-01-04 07:24:40 +00:00
2022-04-17 07:05:49 +00:00
def select_apache_alert ( * * kwargs ) :
if kwargs . get ( " group " ) is not None :
query = Server . select ( Server . ip ) . where (
2022-09-11 07:40:25 +00:00
( Server . apache_alert == 1 )
& ( Server . enable == 1 )
& ( Server . groups == kwargs . get ( ' group ' ) )
& ( Server . apache == 1 )
2022-05-25 08:21:44 +00:00
)
2022-04-17 07:05:49 +00:00
else :
2022-09-11 07:40:25 +00:00
query = Server . select ( Server . ip ) . where ( ( Server . apache_alert == 1 ) & ( Server . enable == 1 ) & ( Server . apache == 1 ) )
2022-04-17 07:05:49 +00:00
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2021-11-02 20:57:54 +00:00
def select_keepalived_alert ( * * kwargs ) :
if kwargs . get ( " group " ) is not None :
query = Server . select ( Server . ip ) . where (
2022-09-11 07:40:25 +00:00
( Server . keepalived_alert == 1 )
& ( Server . enable == 1 )
& ( Server . groups == kwargs . get ( ' group ' ) )
& ( Server . keepalived == 1 )
2022-05-25 08:21:44 +00:00
)
2021-11-02 20:57:54 +00:00
else :
2022-09-11 07:40:25 +00:00
query = Server . select ( Server . ip ) . where (
( Server . keepalived_alert == 1 )
& ( Server . enable == 1 )
& ( Server . keepalived == 1 )
)
2021-11-02 20:57:54 +00:00
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2021-08-02 08:19:22 +00:00
def select_keep_alive ( ) :
2023-02-17 17:21:19 +00:00
query = Server . select ( Server . ip , Server . groups , Server . server_id ) . where ( Server . active == 1 )
2020-10-02 12:39:00 +00:00
try :
2021-10-18 14:13:18 +00:00
query_res = query . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2018-11-26 10:00:25 +00:00
else :
2021-10-18 14:13:18 +00:00
return query_res
2020-10-02 12:39:00 +00:00
2021-08-02 08:19:22 +00:00
def select_nginx_keep_alive ( ) :
2023-02-17 17:21:19 +00:00
query = Server . select ( Server . ip , Server . groups , Server . server_id ) . where ( Server . nginx_active == 1 )
2021-01-04 07:24:40 +00:00
try :
2021-10-18 14:13:18 +00:00
query_res = query . execute ( )
2022-05-03 07:55:16 +00:00
except Exception as e :
out_error ( e )
else :
return query_res
def select_apache_keep_alive ( ) :
2023-02-17 17:21:19 +00:00
query = Server . select ( Server . ip , Server . groups , Server . server_id ) . where ( Server . apache_active == 1 )
2022-05-03 07:55:16 +00:00
try :
query_res = query . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-01-04 07:24:40 +00:00
else :
2021-10-18 14:13:18 +00:00
return query_res
def select_keepalived_keep_alive ( ) :
2023-02-17 17:21:19 +00:00
query = Server . select ( Server . ip , Server . port , Server . groups , Server . server_id ) . where ( Server . keepalived_active == 1 )
2021-10-18 14:13:18 +00:00
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2021-01-04 07:24:40 +00:00
2021-08-02 08:19:22 +00:00
def select_keepalived ( serv ) :
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
keepalived = Server . get ( Server . ip == serv ) . keepalived
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-01-27 18:12:59 +00:00
else :
2021-08-02 08:19:22 +00:00
return keepalived
2020-10-02 12:39:00 +00:00
2023-02-17 17:21:19 +00:00
def select_update_keep_alive_restart ( server_id : int , service : str ) - > int :
try :
restarted = KeepaliveRestart . get (
( KeepaliveRestart . server_id == server_id ) &
( KeepaliveRestart . service == service )
) . restarted
except Exception as e :
out_error ( e )
else :
return restarted or 0
2023-04-15 07:33:00 +00:00
finally :
return 0
2023-02-17 17:21:19 +00:00
def update_keep_alive_restart ( server_id : int , service : str , restarted : int ) - > None :
query = KeepaliveRestart . insert ( server_id = server_id , service = service , restarted = restarted ) . on_conflict ( ' replace ' )
try :
query . execute ( )
except Exception as e :
out_error ( e )
2020-01-27 18:12:59 +00:00
def update_keepalived ( serv ) :
2021-08-02 08:19:22 +00:00
query = Server . update ( keepalived = ' 1 ' ) . where ( Server . ip == serv )
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-01-27 18:12:59 +00:00
return False
2021-08-02 08:19:22 +00:00
else :
return True
2020-02-05 08:15:57 +00:00
2020-10-02 12:39:00 +00:00
2022-04-15 09:49:00 +00:00
def select_apache ( serv ) :
try :
apache = Server . get ( Server . ip == serv ) . apache
except Exception as e :
out_error ( e )
else :
return apache
2023-01-03 07:54:03 +00:00
def update_apache ( serv : str ) - > bool :
2022-04-15 09:49:00 +00:00
query = Server . update ( apache = ' 1 ' ) . where ( Server . ip == serv )
try :
query . execute ( )
except Exception as e :
out_error ( e )
return False
else :
return True
2021-07-15 03:14:13 +00:00
def select_nginx ( serv ) :
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = Server . get ( Server . ip == serv ) . nginx
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-02-05 08:15:57 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-10-02 12:39:00 +00:00
2023-01-02 20:01:20 +00:00
def update_nginx ( serv : str ) - > bool :
2021-08-02 08:19:22 +00:00
query = Server . update ( nginx = 1 ) . where ( Server . ip == serv )
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
2020-02-05 08:15:57 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-02-05 08:15:57 +00:00
return False
2020-10-02 12:39:00 +00:00
2021-07-15 03:14:13 +00:00
def select_haproxy ( serv ) :
try :
2021-08-02 08:19:22 +00:00
query_res = Server . get ( Server . ip == serv ) . haproxy
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-07-15 03:14:13 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2021-07-15 03:14:13 +00:00
2020-02-06 19:45:21 +00:00
def update_haproxy ( serv ) :
2021-08-02 08:19:22 +00:00
query = Server . update ( haproxy = 1 ) . where ( Server . ip == serv )
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
2020-02-06 19:45:21 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-02-06 19:45:21 +00:00
return False
2021-06-16 04:03:15 +00:00
def update_firewall ( serv ) :
2021-08-02 08:19:22 +00:00
query = Server . update ( firewall_enable = 1 ) . where ( Server . ip == serv )
2021-06-16 04:03:15 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
2021-06-16 04:03:15 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-06-16 04:03:15 +00:00
return False
2020-10-02 12:39:00 +00:00
2021-07-15 03:14:13 +00:00
def update_server_pos ( pos , server_id ) :
2021-08-02 08:19:22 +00:00
query = Server . update ( pos = pos ) . where ( Server . server_id == server_id )
2020-10-02 12:39:00 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
return True
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
2020-10-02 12:39:00 +00:00
2019-10-11 04:49:55 +00:00
def check_token_exists ( token ) :
try :
import http . cookies
import os
cookie = http . cookies . SimpleCookie ( os . environ . get ( " HTTP_COOKIE " ) )
user_id = cookie . get ( ' uuid ' )
if get_token ( user_id . value ) == token :
return True
else :
return False
2022-05-25 08:21:44 +00:00
except Exception :
2021-09-15 05:40:51 +00:00
return False
2019-10-11 04:49:55 +00:00
2020-07-15 04:16:31 +00:00
2023-06-03 15:04:22 +00:00
def insert_smon ( name , enable , group , desc , telegram , slack , pd , user_group , check_type ) :
2020-07-15 04:16:31 +00:00
try :
2022-05-23 19:13:34 +00:00
last_id = SMON . insert (
2023-06-03 15:04:22 +00:00
name = name , en = enable , desc = desc , group = group , telegram_channel_id = telegram , slack_channel_id = slack ,
pd_channel_id = pd , user_group = user_group , status = ' 3 ' , check_type = check_type
2022-05-23 19:13:34 +00:00
) . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-07-15 04:16:31 +00:00
return False
else :
2021-08-23 10:25:00 +00:00
return last_id
2020-07-15 04:16:31 +00:00
2023-06-03 15:04:22 +00:00
def insert_smon_ping ( smon_id , hostname ) :
try :
SmonPingCheck . insert ( smon_id = smon_id , ip = hostname ) . execute ( )
except Exception as e :
out_error ( e )
2020-08-11 12:56:53 +00:00
2023-06-03 15:04:22 +00:00
def insert_smon_tcp ( smon_id , hostname , port ) :
try :
SmonTcpCheck . insert ( smon_id = smon_id , ip = hostname , port = port ) . execute ( )
except Exception as e :
out_error ( e )
def insert_smon_http ( smon_id , url , body ) :
try :
SmonHttpCheck . insert ( smon_id = smon_id , url = url , body = body ) . execute ( )
except Exception as e :
out_error ( e )
def select_smon ( user_group ) :
2020-08-11 09:54:03 +00:00
if user_group == 1 :
2023-06-03 15:04:22 +00:00
query = SMON . select ( )
2020-07-15 04:16:31 +00:00
else :
2023-06-03 15:04:22 +00:00
query = SMON . select ( ) . where ( SMON . user_group == user_group )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2020-07-15 04:16:31 +00:00
2023-06-03 15:04:22 +00:00
def select_smon_ping ( user_group ) :
if user_group == 1 :
query = SmonPingCheck . select ( )
2020-07-15 04:16:31 +00:00
else :
2023-06-03 15:04:22 +00:00
query = SmonPingCheck . select ( ) . where ( SMON . user_group == user_group )
2021-08-23 10:25:00 +00:00
try :
2023-06-03 15:04:22 +00:00
query_res = query . execute ( )
2021-08-23 10:25:00 +00:00
except Exception as e :
out_error ( e )
else :
2023-06-03 15:04:22 +00:00
return query_res
def select_en_smon_ping ( ) - > object :
query = SmonPingCheck . select ( SmonPingCheck , SMON ) . join_from ( SmonPingCheck , SMON ) . where ( SMON . en == ' 1 ' )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def select_en_smon_tcp ( ) - > object :
query = SmonTcpCheck . select ( SmonTcpCheck , SMON ) . join_from ( SmonTcpCheck , SMON ) . where ( SMON . en == ' 1 ' )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def select_en_smon_http ( ) - > object :
query = SmonHttpCheck . select ( SmonHttpCheck , SMON ) . join_from ( SmonHttpCheck , SMON ) . where ( SMON . en == ' 1 ' )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def select_smon_tcp ( user_group ) :
if user_group == 1 :
query = SmonTcpCheck . select ( )
else :
query = SmonTcpCheck . select ( ) . where ( SMON . user_group == user_group )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def select_smon_http ( user_group ) :
if user_group == 1 :
query = SmonHttpCheck . select ( )
else :
query = SmonHttpCheck . select ( ) . where ( SMON . user_group == user_group )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2021-08-23 10:25:00 +00:00
def select_smon_by_id ( last_id ) :
2023-06-03 15:04:22 +00:00
query = SMON . select ( ) . where ( SMON . id == last_id )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2021-08-23 10:25:00 +00:00
2023-06-03 15:04:22 +00:00
def select_smon_check_by_id ( last_id , check_type ) :
if check_type == ' ping ' :
query = SmonPingCheck . select ( ) . where ( SmonPingCheck . smon_id == last_id )
elif check_type == ' tcp ' :
query = SmonTcpCheck . select ( ) . where ( SmonTcpCheck . smon_id == last_id )
else :
query = SmonHttpCheck . select ( ) . where ( SmonHttpCheck . smon_id == last_id )
print ( query )
2020-07-15 04:16:31 +00:00
try :
2023-06-03 15:04:22 +00:00
query_res = query . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-07-15 04:16:31 +00:00
else :
2023-06-03 15:04:22 +00:00
return query_res
2020-07-15 04:16:31 +00:00
2020-08-11 12:56:53 +00:00
2021-08-02 08:19:22 +00:00
def delete_smon ( smon_id , user_group ) :
query = SMON . delete ( ) . where ( ( SMON . id == smon_id ) & ( SMON . user_group == user_group ) )
2020-07-15 04:16:31 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-07-15 04:16:31 +00:00
return False
else :
return True
2023-06-03 15:04:22 +00:00
def update_smonHttp ( smon_id , url , body ) :
query = ( SmonHttpCheck . update ( url = url , body = body ) . where ( SmonHttpCheck . smon_id == smon_id ) )
try :
query . execute ( )
return True
except Exception as e :
out_error ( e )
return False
def update_smonTcp ( smon_id , ip , port ) :
query = ( SmonTcpCheck . update ( ip = ip , port = port ) . where ( SmonTcpCheck . smon_id == smon_id ) )
try :
query . execute ( )
return True
except Exception as e :
out_error ( e )
return False
def update_smonPing ( smon_id , ip , port ) :
query = ( SmonPingCheck . update ( ip = ip ) . where ( SmonPingCheck . smon_id == smon_id ) )
try :
query . execute ( )
return True
except Exception as e :
out_error ( e )
return False
def update_smon ( smon_id , name , telegram , slack , pd , group , desc , en ) :
2022-05-23 19:13:34 +00:00
query = ( SMON . update (
2023-06-03 15:04:22 +00:00
name = name , telegram_channel_id = telegram , slack_channel_id = slack , pd_channel_id = pd , group = group , desc = desc , en = en
2022-05-23 19:13:34 +00:00
) . where ( SMON . id == smon_id ) )
2021-08-02 08:19:22 +00:00
try :
query . execute ( )
2020-07-15 04:16:31 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-07-15 04:16:31 +00:00
return False
2020-08-07 17:02:02 +00:00
2021-07-15 03:14:13 +00:00
def alerts_history ( service , user_group , * * kwargs ) :
2021-08-02 08:19:22 +00:00
cursor = conn . cursor ( )
2021-07-15 03:14:13 +00:00
and_host = ' '
if kwargs . get ( ' host ' ) :
and_host = " and ip = ' {} ' " . format ( kwargs . get ( ' host ' ) )
2020-12-26 09:08:17 +00:00
if user_group == 1 :
sql_user_group = " "
else :
2021-07-15 03:14:13 +00:00
sql_user_group = " and user_group = ' {} ' " . format ( user_group )
2022-05-23 19:13:34 +00:00
sql = (
f " select message, level, ip, port, date "
f " from alerts "
f " where service = ' { service } ' { sql_user_group } { and_host } "
f " order by date desc; "
)
2020-11-16 12:31:52 +00:00
try :
2021-08-02 08:19:22 +00:00
cursor . execute ( sql )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-11-16 12:31:52 +00:00
else :
2021-08-02 08:19:22 +00:00
return cursor . fetchall ( )
2020-11-16 12:31:52 +00:00
2021-08-02 08:19:22 +00:00
def select_status ( smon_id ) :
2020-07-15 04:16:31 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = SMON . get ( SMON . id == smon_id ) . status
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-07-15 04:16:31 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-07-15 04:16:31 +00:00
2021-08-02 08:19:22 +00:00
def select_http_status ( smon_id ) :
2020-07-15 04:16:31 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = SMON . get ( SMON . id == smon_id ) . http_status
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-07-15 04:16:31 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-07-15 04:16:31 +00:00
2021-08-02 08:19:22 +00:00
def select_body_status ( smon_id ) :
2020-07-15 04:16:31 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = SMON . get ( SMON . id == smon_id ) . body_status
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-07-15 04:16:31 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-07-15 04:16:31 +00:00
2021-08-02 08:19:22 +00:00
def select_script ( smon_id ) :
2020-07-15 04:16:31 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = SMON . get ( SMON . id == smon_id ) . script
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-07-15 04:16:31 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-07-15 04:16:31 +00:00
2021-08-02 08:19:22 +00:00
def select_http ( smon_id ) :
2020-07-15 04:16:31 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = SMON . get ( SMON . id == smon_id ) . http
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-07-15 04:16:31 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-07-15 04:16:31 +00:00
2021-08-02 08:19:22 +00:00
def select_body ( smon_id ) :
2020-07-15 04:16:31 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = SMON . get ( SMON . id == smon_id ) . body
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-07-15 04:16:31 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-07-15 04:16:31 +00:00
2021-08-02 08:19:22 +00:00
def change_status ( status , smon_id ) :
query = SMON . update ( status = status ) . where ( SMON . id == smon_id )
2020-07-15 04:16:31 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
else :
return True
2020-07-15 04:16:31 +00:00
2021-08-02 08:19:22 +00:00
def change_body_status ( status , smon_id ) :
query = SMON . update ( body_status = status ) . where ( SMON . id == smon_id )
2020-07-15 04:16:31 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
else :
return True
2020-07-15 04:16:31 +00:00
2021-08-02 08:19:22 +00:00
def add_sec_to_state_time ( time , smon_id ) :
query = SMON . update ( time_state = time ) . where ( SMON . id == smon_id )
2020-07-15 04:16:31 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
else :
return True
2020-07-15 04:16:31 +00:00
2021-08-02 08:19:22 +00:00
def set_to_zero_time_state ( smon_id ) :
query = SMON . update ( time_state = 0 ) . where ( SMON . id == smon_id )
2020-07-15 04:16:31 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
else :
return True
2020-07-15 04:16:31 +00:00
2021-08-02 08:19:22 +00:00
def response_time ( time , smon_id ) :
query = SMON . update ( response_time = time ) . where ( SMON . id == smon_id )
2020-07-15 04:16:31 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
else :
return True
2020-07-15 04:16:31 +00:00
def smon_list ( user_group ) :
2020-08-11 09:54:03 +00:00
if user_group == 1 :
2023-06-03 15:04:22 +00:00
query = ( SMON . select ( ) . order_by ( SMON . group ) )
else :
query = ( SMON . select ( ) . where ( SMON . user_group == user_group ) . order_by ( SMON . group ) )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def select_one_smon ( smon_id : int , check_id : int ) - > object :
if check_id == 1 :
query = SmonTcpCheck . select ( SmonTcpCheck , SMON ) . join_from ( SmonTcpCheck , SMON ) . where ( SMON . id == smon_id )
elif check_id == 2 :
query = SmonHttpCheck . select ( SmonHttpCheck , SMON ) . join_from ( SmonHttpCheck , SMON ) . where ( SMON . id == smon_id )
else :
query = SmonPingCheck . select ( SmonPingCheck , SMON ) . join_from ( SmonPingCheck , SMON ) . where ( SMON . id == smon_id )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def insert_smon_history ( smon_id : int , response_time : float , status : int , check_id : int , mes = ' ' ) - > None :
cur_date = get_date . return_date ( ' regular ' )
try :
SmonHistory . insert ( smon_id = smon_id , response_time = response_time , status = status , date = cur_date ,
check_id = check_id , mes = mes ) . execute ( )
except Exception as e :
out_error ( e )
def select_smon_history ( smon_id : int , check_id : int ) - > object :
query = SmonHistory . select ( ) . where (
( SmonHistory . smon_id == smon_id ) &
( SmonHistory . check_id == check_id )
) . limit ( 40 ) . order_by ( SmonHistory . date . desc ( ) )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def get_last_smon_status_by_check ( smon_id : int , check_id : int ) - > object :
query = SmonHistory . select ( ) . where (
( SmonHistory . smon_id == smon_id ) &
( SmonHistory . check_id == check_id )
) . limit ( 1 ) . order_by ( SmonHistory . date . desc ( ) )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
2020-07-15 04:16:31 +00:00
else :
2023-06-03 15:04:22 +00:00
try :
for i in query_res :
return i . status
except Exception :
return ' '
2020-07-15 04:16:31 +00:00
2023-06-03 15:04:22 +00:00
def get_last_smon_res_time_by_check ( smon_id : int , check_id : int ) - > object :
query = SmonHistory . select ( ) . where (
( SmonHistory . smon_id == smon_id ) &
( SmonHistory . check_id == check_id )
) . limit ( 1 ) . order_by ( SmonHistory . date . desc ( ) )
2020-07-15 04:16:31 +00:00
try :
2021-08-08 13:02:00 +00:00
query_res = query . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2023-06-03 15:04:22 +00:00
else :
try :
for i in query_res :
return i . response_time
except Exception :
return ' '
def get_smon_history_count_checks ( smon_id : int , check_id : int ) - > dict :
count_checks = { }
query = SmonHistory . select ( fn . Count ( SmonHistory . status ) ) . where (
( SmonHistory . smon_id == smon_id ) &
( SmonHistory . check_id == check_id )
)
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
try :
for i in query_res :
count_checks [ ' total ' ] = i . status
except Exception as e :
raise Exception ( f ' error: { e } ' )
query = SmonHistory . select ( fn . Count ( SmonHistory . status ) ) . where (
( SmonHistory . smon_id == smon_id ) &
( SmonHistory . check_id == check_id ) &
( SmonHistory . status == 1 )
)
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
try :
for i in query_res :
count_checks [ ' up ' ] = i . status
except Exception as e :
raise Exception ( f ' error: { e } ' )
return count_checks
def get_smon_service_name_by_id ( smon_id : int ) - > str :
query = SMON . select ( ) . join ( SmonHistory , on = ( SmonHistory . smon_id == SMON . id ) ) . where ( SmonHistory . smon_id == smon_id )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
try :
for i in query_res :
return f ' { i . name } '
except Exception :
return ' '
def get_avg_resp_time ( smon_id : int , check_id : int ) - > object :
try :
query_res = SmonHistory . select ( fn . AVG ( SmonHistory . response_time ) ) . where (
( SmonHistory . smon_id == smon_id ) &
( SmonHistory . check_id == check_id )
) . scalar ( )
except Exception as e :
out_error ( e )
2020-07-15 04:16:31 +00:00
else :
2021-08-08 13:02:00 +00:00
return query_res
2020-07-15 04:16:31 +00:00
2020-09-15 05:56:43 +00:00
def insert_alerts ( user_group , level , ip , port , message , service ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2020-08-25 05:20:55 +00:00
try :
2022-05-23 19:13:34 +00:00
Alerts . insert (
user_group = user_group , message = message , level = level , ip = ip , port = port , service = service ,
2022-11-12 16:11:29 +00:00
date = cur_date
2022-05-23 19:13:34 +00:00
) . execute ( )
2021-08-02 08:19:22 +00:00
return True
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-08-02 08:19:22 +00:00
return False
2020-08-25 05:20:55 +00:00
def select_alerts ( user_group ) :
2021-08-02 08:19:22 +00:00
cursor = conn . cursor ( )
2020-08-25 05:20:55 +00:00
if mysql_enable == ' 1 ' :
2022-05-23 16:16:21 +00:00
sql = """ select level, message, `date` from alerts where user_group = ' %s ' and `date` <= (now()+ INTERVAL 10 second) """ % (
user_group )
2020-08-25 05:20:55 +00:00
else :
2022-05-28 09:38:43 +00:00
sql = """ select level, message, `date` from alerts where user_group = ' %s ' and `date` >= datetime( ' now ' , ' -20 second ' , ' localtime ' )
2022-05-28 07:59:05 +00:00
and ` date ` < = datetime ( ' now ' , ' localtime ' ) ; """ % (
2022-05-23 16:16:21 +00:00
user_group )
2020-08-25 05:20:55 +00:00
try :
2021-08-02 08:19:22 +00:00
cursor . execute ( sql )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-08-25 05:20:55 +00:00
else :
2021-08-02 08:19:22 +00:00
return cursor . fetchall ( )
2020-08-25 05:20:55 +00:00
2022-02-16 07:46:30 +00:00
def select_all_alerts_for_all ( ) :
cursor = conn . cursor ( )
if mysql_enable == ' 1 ' :
sql = """ select level, message, `date`, user_group from alerts where `date` <= (now()+ INTERVAL 10 second) """
else :
2022-05-28 07:59:05 +00:00
sql = """ select level, message, `date`, user_group from alerts where `date` >= datetime( ' now ' , ' -10 second ' , ' localtime ' )
2022-05-28 08:05:17 +00:00
and ` date ` < = datetime ( ' now ' , ' localtime ' ) ; """
2022-02-16 07:46:30 +00:00
try :
cursor . execute ( sql )
except Exception as e :
out_error ( e )
else :
return cursor . fetchall ( )
2020-10-25 07:14:55 +00:00
def is_cloud ( ) :
2021-08-02 08:19:22 +00:00
cursor = conn . cursor ( )
2020-10-25 07:14:55 +00:00
sql = """ select * from cloud_uuid """
try :
2021-08-02 08:19:22 +00:00
cursor . execute ( sql )
2022-05-25 08:21:44 +00:00
except Exception :
2020-10-25 07:14:55 +00:00
return " "
else :
2021-08-02 08:19:22 +00:00
for cl_uuid in cursor . fetchall ( ) :
return cl_uuid [ 0 ]
2020-10-25 07:14:55 +00:00
2020-11-18 04:45:34 +00:00
def return_firewall ( serv ) :
try :
2021-08-02 08:19:22 +00:00
query_res = Server . get ( Server . ip == serv ) . firewall_enable
2022-05-25 08:21:44 +00:00
except Exception :
2020-11-18 04:45:34 +00:00
return False
else :
2021-08-02 08:19:22 +00:00
return True if query_res == 1 else False
2020-11-18 04:45:34 +00:00
2020-12-26 09:08:17 +00:00
def select_geoip_country_codes ( ) :
2021-08-02 08:19:22 +00:00
query = GeoipCodes . select ( )
2020-12-26 09:08:17 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2020-12-26 09:08:17 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2020-12-26 09:08:17 +00:00
2021-03-16 14:38:12 +00:00
def insert_port_scanner_settings ( server_id , user_group_id , enabled , notify , history ) :
try :
2022-05-23 19:13:34 +00:00
PortScannerSettings . insert (
server_id = server_id , user_group_id = user_group_id , enabled = enabled , notify = notify , history = history
) . execute ( )
2021-03-16 14:38:12 +00:00
return True
2022-05-25 08:21:44 +00:00
except Exception :
2021-03-16 14:38:12 +00:00
return False
def update_port_scanner_settings ( server_id , user_group_id , enabled , notify , history ) :
2022-05-23 19:13:34 +00:00
query = PortScannerSettings . update (
user_group_id = user_group_id , enabled = enabled , notify = notify , history = history
) . where ( PortScannerSettings . server_id == server_id )
2021-03-16 14:38:12 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
def select_port_scanner_settings ( user_group ) :
if user_group != 1 :
2021-08-02 08:19:22 +00:00
query = PortScannerSettings . select ( ) . where ( PortScannerSettings . user_group_id == str ( user_group ) )
else :
query = PortScannerSettings . select ( )
2021-03-16 14:38:12 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2021-03-16 14:38:12 +00:00
def select_port_scanner_settings_for_service ( ) :
2021-08-02 08:19:22 +00:00
query = PortScannerSettings . select ( )
2021-03-16 14:38:12 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2021-03-16 14:38:12 +00:00
def delete_port_scanner_settings ( server_id ) :
2021-08-02 08:19:22 +00:00
query = PortScannerSettings . delete ( ) . where ( PortScannerSettings . server_id == server_id )
2021-03-16 14:38:12 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
def insert_port_scanner_port ( serv , user_group_id , port , service_name ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2021-03-16 14:38:12 +00:00
try :
2022-05-25 18:40:55 +00:00
PortScannerPorts . insert (
serv = serv , port = port , user_group_id = user_group_id , service_name = service_name ,
2022-11-12 16:11:29 +00:00
date = cur_date
2022-05-25 18:40:55 +00:00
) . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
def select_ports ( serv ) :
2021-08-02 08:19:22 +00:00
cursor = conn . cursor ( )
2022-07-15 18:55:54 +00:00
sql = """ select port from port_scanner_ports where serv = ' %s ' """ % serv
2021-03-16 14:38:12 +00:00
try :
2021-08-02 08:19:22 +00:00
cursor . execute ( sql )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
else :
2021-08-02 08:19:22 +00:00
return cursor . fetchall ( )
2021-03-16 14:38:12 +00:00
def select_port_name ( serv , port ) :
2021-08-02 08:19:22 +00:00
query = PortScannerPorts . select ( PortScannerPorts . service_name ) . where (
( PortScannerPorts . serv == serv ) & ( PortScannerPorts . port == port ) )
2021-03-16 14:38:12 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
else :
2021-08-02 08:19:22 +00:00
for port in query_res :
return port . service_name
2021-03-16 14:38:12 +00:00
def select_count_opened_ports ( serv ) :
2022-05-25 18:40:55 +00:00
query = PortScannerPorts . select (
PortScannerPorts . date , fn . Count ( PortScannerPorts . port ) . alias ( ' count ' )
) . where ( PortScannerPorts . serv == serv )
2021-03-16 14:38:12 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
else :
port = list ( )
2021-08-02 08:19:22 +00:00
for ports in query_res :
port . append ( [ ports . count , ports . date ] )
return port
2021-03-16 14:38:12 +00:00
def delete_ports ( serv ) :
2021-08-02 08:19:22 +00:00
query = PortScannerPorts . delete ( ) . where ( PortScannerPorts . serv == serv )
2021-03-16 14:38:12 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
def insert_port_scanner_history ( serv , port , port_status , service_name ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2021-03-16 14:38:12 +00:00
try :
2022-05-23 18:41:39 +00:00
PortScannerHistory . insert (
2022-11-12 16:11:29 +00:00
serv = serv , port = port , status = port_status , service_name = service_name , date = cur_date
2022-05-23 18:41:39 +00:00
) . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
2021-05-15 05:48:50 +00:00
def delete_alert_history ( keep_interval : int , service : str ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' , timedelta_minus = keep_interval )
2021-08-07 07:41:28 +00:00
query = Alerts . delete ( ) . where (
2022-11-12 16:11:29 +00:00
( Alerts . date < cur_date ) & ( Alerts . service == service )
2022-05-25 08:21:44 +00:00
)
2021-05-15 05:48:50 +00:00
try :
2021-08-07 07:41:28 +00:00
query . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-05-15 05:48:50 +00:00
2021-07-23 06:09:44 +00:00
def delete_portscanner_history ( keep_interval : int ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' , timedelta_minus = keep_interval )
2021-08-07 07:41:28 +00:00
query = PortScannerHistory . delete ( ) . where (
2022-11-12 16:11:29 +00:00
PortScannerHistory . date < cur_date )
2021-06-16 04:03:15 +00:00
try :
2021-08-07 07:41:28 +00:00
query . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-06-16 04:03:15 +00:00
2021-03-16 14:38:12 +00:00
def select_port_scanner_history ( serv ) :
2021-08-02 08:19:22 +00:00
query = PortScannerHistory . select ( ) . where ( PortScannerHistory . serv == serv )
2021-03-16 14:38:12 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2021-03-16 14:38:12 +00:00
2021-02-15 06:10:00 +00:00
def add_provider_do ( provider_name , provider_group , provider_token ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2021-02-15 06:10:00 +00:00
try :
2022-05-23 19:13:34 +00:00
ProvidersCreds . insert (
name = provider_name , type = ' do ' , group = provider_group , key = provider_token ,
2022-11-12 16:11:29 +00:00
create_date = cur_date , edit_date = cur_date
2022-05-23 19:13:34 +00:00
) . execute ( )
2021-02-15 06:10:00 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
return False
def add_provider_aws ( provider_name , provider_group , provider_key , provider_secret ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2021-02-15 06:10:00 +00:00
try :
2022-05-23 18:41:39 +00:00
ProvidersCreds . insert (
name = provider_name , type = ' aws ' , group = provider_group , key = provider_key , secret = provider_secret ,
2022-11-12 16:11:29 +00:00
create_date = cur_date , edit_date = cur_date
2022-05-23 18:41:39 +00:00
) . execute ( )
2021-02-15 06:10:00 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
return False
2021-03-16 14:38:12 +00:00
def add_provider_gcore ( provider_name , provider_group , provider_user , provider_pass ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2021-03-16 14:38:12 +00:00
try :
2022-05-25 08:42:12 +00:00
ProvidersCreds . insert (
name = provider_name , type = ' gcore ' , group = provider_group , key = provider_user ,
2022-11-12 16:11:29 +00:00
secret = provider_pass , create_date = cur_date , edit_date = cur_date
2022-05-25 08:42:12 +00:00
) . execute ( )
2021-03-16 14:38:12 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
return False
2021-02-15 06:10:00 +00:00
def select_providers ( user_group , * * kwargs ) :
if user_group == 1 :
2022-07-15 18:55:54 +00:00
query = ProvidersCreds . select ( )
2021-02-15 06:10:00 +00:00
else :
if kwargs . get ( ' key ' ) :
2022-07-15 18:55:54 +00:00
query = ProvidersCreds . select ( ) . where (
( ProvidersCreds . key == kwargs . get ( ' key ' ) )
2022-07-15 19:44:38 +00:00
& ( ProvidersCreds . group == user_group )
2022-07-15 18:55:54 +00:00
)
else :
query = ProvidersCreds . select ( ) . where ( ProvidersCreds . group == user_group )
2021-02-15 06:10:00 +00:00
try :
2022-07-15 18:55:54 +00:00
query_res = query . execute ( )
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
else :
2022-07-15 18:55:54 +00:00
return query_res
2021-02-15 06:10:00 +00:00
def delete_provider ( provider_id ) :
2021-08-02 08:19:22 +00:00
query = ProvidersCreds . delete ( ) . where ( ProvidersCreds . id == provider_id )
2021-02-15 06:10:00 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
2021-02-15 06:10:00 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
return False
2022-05-23 18:41:39 +00:00
def add_server_aws (
2022-05-28 07:59:05 +00:00
region , instance_type , public_ip , floating_ip , volume_size , ssh_key_name , name , os , firewall ,
provider_id , group_id , status , delete_on_termination , volume_type
2022-05-23 18:41:39 +00:00
) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2021-02-15 06:10:00 +00:00
try :
2022-05-23 18:41:39 +00:00
ProvisionedServers . insert (
region = region , instance_type = instance_type , public_ip = public_ip , floating_ip = floating_ip ,
volume_size = volume_size , volume_type = volume_type , ssh_key_name = ssh_key_name , name = name , os = os ,
firewall = firewall , provider_id = provider_id , group_id = group_id , delete_on_termination = delete_on_termination ,
2022-11-12 16:11:29 +00:00
type = ' aws ' , status = status , date = cur_date
2022-05-23 18:41:39 +00:00
) . execute ( )
2021-02-15 06:10:00 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
return False
2021-03-16 14:38:12 +00:00
2022-05-23 19:13:34 +00:00
def add_server_gcore (
2022-05-28 07:59:05 +00:00
project , region , instance_type , network_type , network_name , volume_size , ssh_key_name , name , os ,
firewall , provider_id , group_id , status , delete_on_termination , volume_type
2022-05-23 19:13:34 +00:00
) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2021-03-16 14:38:12 +00:00
try :
2022-05-23 19:13:34 +00:00
ProvisionedServers . insert (
region = region , instance_type = instance_type , public_ip = network_type , network_name = network_name ,
volume_size = volume_size , volume_type = volume_type , ssh_key_name = ssh_key_name , name = name ,
os = os , firewall = firewall , provider_id = provider_id , group_id = group_id , type = ' gcore ' ,
2022-11-12 16:11:29 +00:00
delete_on_termination = delete_on_termination , project = project , status = status , date = cur_date
2022-05-23 19:13:34 +00:00
) . execute ( )
2021-03-16 14:38:12 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
return False
2022-05-23 19:13:34 +00:00
def add_server_do (
2022-05-28 07:59:05 +00:00
region , size , privet_net , floating_ip , ssh_ids , ssh_key_name , name , oss , firewall , monitoring , backup ,
provider_id , group_id , status
2022-05-23 19:13:34 +00:00
) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2021-02-15 06:10:00 +00:00
try :
2022-05-23 19:13:34 +00:00
ProvisionedServers . insert (
region = region , instance_type = size , private_networking = privet_net , floating_ip = floating_ip ,
ssh_ids = ssh_ids , ssh_key_name = ssh_key_name , name = name , os = oss , firewall = firewall ,
monitoring = monitoring , backup = backup , provider_id = provider_id , group_id = group_id ,
2022-11-12 16:11:29 +00:00
type = ' do ' , status = status , date = cur_date
2022-05-23 19:13:34 +00:00
) . execute ( )
2021-02-15 06:10:00 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
return False
def select_aws_server ( server_id ) :
2021-08-02 08:19:22 +00:00
prov_serv = ProvisionedServers . alias ( )
query = (
2022-05-23 19:13:34 +00:00
prov_serv . select (
prov_serv . region , prov_serv . instance_type , prov_serv . public_ip , prov_serv . floating_ip , prov_serv . volume_size ,
prov_serv . ssh_key_name , prov_serv . name , prov_serv . os , prov_serv . firewall , prov_serv . provider_id ,
prov_serv . group_id , prov_serv . id , prov_serv . delete_on_termination , prov_serv . volume_type
) . where ( prov_serv . id == server_id ) )
2021-08-02 08:19:22 +00:00
try :
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2021-03-16 14:38:12 +00:00
def select_gcore_server ( server_id ) :
2021-08-02 08:19:22 +00:00
prov_serv = ProvisionedServers . alias ( )
query = (
2022-05-23 19:13:34 +00:00
prov_serv . select (
prov_serv . region , prov_serv . instance_type , prov_serv . public_ip , prov_serv . floating_ip , prov_serv . volume_size ,
prov_serv . ssh_key_name , prov_serv . name , prov_serv . os , prov_serv . firewall , prov_serv . provider_id ,
prov_serv . group_id , prov_serv . id , prov_serv . delete_on_termination , prov_serv . project , prov_serv . network_name ,
prov_serv . volume_type , prov_serv . name_template
) . where ( prov_serv . id == server_id ) )
2021-08-02 08:19:22 +00:00
try :
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2021-02-15 06:10:00 +00:00
def select_do_server ( server_id ) :
2021-08-02 08:19:22 +00:00
prov_serv = ProvisionedServers . alias ( )
2022-05-23 16:16:21 +00:00
query = (
2022-05-23 19:13:34 +00:00
prov_serv . select (
prov_serv . region , prov_serv . instance_type , prov_serv . private_networking , prov_serv . floating_ip ,
prov_serv . ssh_ids , prov_serv . ssh_key_name , prov_serv . name , prov_serv . os , prov_serv . firewall , prov_serv . backup ,
prov_serv . monitoring , prov_serv . provider_id , prov_serv . group_id , prov_serv . id
) . where ( prov_serv . id == server_id ) )
2021-02-15 06:10:00 +00:00
try :
2021-08-02 08:19:22 +00:00
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2021-02-15 06:10:00 +00:00
def update_provisioning_server_status ( status , user_group_id , name , provider_id , * * kwargs ) :
if kwargs . get ( ' update_ip ' ) :
2021-08-02 08:19:22 +00:00
query = ProvisionedServers . update ( status = status , IP = kwargs . get ( ' update_ip ' ) ) . where (
2022-05-25 08:21:44 +00:00
( ProvisionedServers . name == name ) & ( ProvisionedServers . group_id == user_group_id ) & ( ProvisionedServers . provider_id == provider_id )
2022-05-23 19:13:34 +00:00
)
2021-08-02 08:19:22 +00:00
else :
query = ProvisionedServers . update ( status = status ) . where (
2022-05-25 13:55:45 +00:00
( ProvisionedServers . name == name )
& ( ProvisionedServers . group_id == user_group_id )
& ( ProvisionedServers . provider_id == provider_id )
2022-05-23 19:13:34 +00:00
)
2021-02-15 06:10:00 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
2021-03-16 14:38:12 +00:00
def update_provisioning_server_gcore_name ( name , template_name , user_group_id , provider_id ) :
2021-08-02 08:19:22 +00:00
query = ProvisionedServers . update ( name_template = template_name ) . where (
2022-05-25 08:21:44 +00:00
( ProvisionedServers . name == name )
& ( ProvisionedServers . group_id == user_group_id )
& ( ProvisionedServers . provider_id == provider_id )
2022-05-23 19:13:34 +00:00
)
2021-03-16 14:38:12 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
2021-02-15 06:10:00 +00:00
def update_provisioning_server_error ( status , user_group_id , name , provider_id ) :
2021-08-02 08:19:22 +00:00
query = ProvisionedServers . update ( last_error = status ) . where (
2022-05-25 08:21:44 +00:00
( ProvisionedServers . name == name )
& ( ProvisionedServers . group_id == user_group_id )
& ( ProvisionedServers . provider_id == provider_id )
2022-05-23 19:13:34 +00:00
)
2021-02-15 06:10:00 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
2022-05-23 19:13:34 +00:00
def update_server_aws (
2022-05-28 07:59:05 +00:00
region , size , public_ip , floating_ip , volume_size , ssh_name , workspace , oss , firewall , provider ,
group , status , server_id , delete_on_termination , volume_type
2022-05-23 19:13:34 +00:00
) :
query = ProvisionedServers . update (
region = region , instance_type = size , public_ip = public_ip , floating_ip = floating_ip , volume_size = volume_size ,
ssh_key_name = ssh_name , name = workspace , os = oss , firewall = firewall , provider_id = provider , group_id = group ,
status = status , delete_on_termination = delete_on_termination , volume_type = volume_type
) . where ( ProvisionedServers . id == server_id )
2021-08-02 08:19:22 +00:00
try :
query . execute ( )
2021-02-15 06:10:00 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
return False
2021-08-02 08:19:22 +00:00
2022-05-23 19:13:34 +00:00
def update_server_gcore (
2022-05-28 07:59:05 +00:00
region , size , network_type , network_name , volume_size , ssh_name , workspace , oss , firewall ,
provider , group , status , server_id , delete_on_termination , volume_type , project
2022-05-23 19:13:34 +00:00
) :
query = ProvisionedServers . update (
region = region , instance_type = size , public_ip = network_type , network_name = network_name , volume_size = volume_size ,
ssh_key_name = ssh_name , name = workspace , os = oss , firewall = firewall , provider_id = provider , group_id = group ,
status = status , delete_on_termination = delete_on_termination , volume_type = volume_type , project = project
) . where ( ProvisionedServers . id == server_id )
2021-08-02 08:19:22 +00:00
try :
query . execute ( )
2021-03-16 14:38:12 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
return False
2022-05-23 19:13:34 +00:00
def update_server_do (
2022-05-28 07:59:05 +00:00
size , privet_net , floating_ip , ssh_ids , ssh_name , oss , firewall , monitoring , backup , provider , group ,
status , server_id
2022-05-23 19:13:34 +00:00
) :
2022-05-23 18:41:39 +00:00
query = ProvisionedServers . update (
instance_type = size , private_networking = privet_net , floating_ip = floating_ip , ssh_ids = ssh_ids ,
ssh_key_name = ssh_name , os = oss , firewall = firewall , monitoring = monitoring , backup = backup , provider_id = provider ,
group_id = group , status = status
) . where ( ProvisionedServers . id == server_id )
2021-08-02 08:19:22 +00:00
try :
query . execute ( )
2021-02-15 06:10:00 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
return False
def delete_provisioned_servers ( server_id ) :
2021-08-02 08:19:22 +00:00
query = ProvisionedServers . delete ( ) . where ( ProvisionedServers . id == server_id )
2021-02-15 06:10:00 +00:00
try :
2021-08-02 08:19:22 +00:00
query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
def select_provisioned_servers ( * * kwargs ) :
2021-08-02 08:19:22 +00:00
prov_serv = ProvisionedServers . alias ( )
2021-02-15 06:10:00 +00:00
if kwargs . get ( ' new ' ) :
2021-08-02 08:19:22 +00:00
query = (
2022-05-23 18:41:39 +00:00
prov_serv . select (
prov_serv . id , prov_serv . name , prov_serv . provider_id , prov_serv . type , prov_serv . group_id ,
prov_serv . instance_type , prov_serv . status , prov_serv . date , prov_serv . region , prov_serv . os ,
prov_serv . IP , prov_serv . last_error , prov_serv . name_template
2022-05-23 19:13:34 +00:00
) . where (
2022-05-25 13:55:45 +00:00
( prov_serv . name == kwargs . get ( ' new ' ) )
& ( prov_serv . group_id == kwargs . get ( ' group ' ) )
& ( prov_serv . type == kwargs . get ( ' type ' ) )
2022-05-23 18:41:39 +00:00
)
)
2022-05-23 16:16:21 +00:00
else :
2022-05-23 19:13:34 +00:00
query = prov_serv . select (
prov_serv . id , prov_serv . name , prov_serv . provider_id , prov_serv . type , prov_serv . group_id ,
prov_serv . instance_type , prov_serv . status , prov_serv . date , prov_serv . region , prov_serv . os ,
prov_serv . IP , prov_serv . last_error , prov_serv . name_template
)
2021-08-02 08:19:22 +00:00
try :
query_res = query . execute ( )
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
else :
2021-08-02 08:19:22 +00:00
return query_res
2021-02-15 06:10:00 +00:00
def select_aws_provider ( provider_id ) :
2021-08-02 08:19:22 +00:00
try :
query_res = ProvidersCreds . get ( ProvidersCreds . id == provider_id )
2022-05-25 08:21:44 +00:00
except Exception :
2021-02-15 06:10:00 +00:00
return " "
else :
2021-08-02 08:19:22 +00:00
return query_res . key , query_res . secret
2021-02-15 06:10:00 +00:00
2021-03-16 14:38:12 +00:00
def select_gcore_provider ( provider_id ) :
try :
2021-08-02 08:19:22 +00:00
query_res = ProvidersCreds . get ( ProvidersCreds . id == provider_id )
2022-05-25 08:21:44 +00:00
except Exception :
2021-03-16 14:38:12 +00:00
return " "
else :
2021-08-02 08:19:22 +00:00
return query_res . key , query_res . secret
2021-03-16 14:38:12 +00:00
2021-02-15 06:10:00 +00:00
def select_do_provider ( provider_id ) :
2021-08-02 08:19:22 +00:00
try :
query_res = ProvidersCreds . get ( ProvidersCreds . id == provider_id )
2022-05-25 08:21:44 +00:00
except Exception :
2021-02-15 06:10:00 +00:00
return " "
else :
2021-08-02 08:19:22 +00:00
return query_res . key
2021-02-15 06:10:00 +00:00
def update_do_provider ( new_name , new_token , provider_id ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2021-02-15 06:10:00 +00:00
try :
2022-05-23 19:13:34 +00:00
ProvidersCreds . update (
2022-11-12 16:11:29 +00:00
name = new_name , key = new_token , edit_date = cur_date
2022-05-23 19:13:34 +00:00
) . where ( ProvidersCreds . id == provider_id ) . execute ( )
2021-02-15 06:10:00 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-03-16 14:38:12 +00:00
return False
def update_gcore_provider ( new_name , new_user , new_pass , provider_id ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2021-08-02 08:19:22 +00:00
try :
2022-05-23 19:13:34 +00:00
ProvidersCreds . update (
2022-11-12 16:11:29 +00:00
name = new_name , key = new_user , secret = new_pass , edit_date = cur_date
2022-05-23 19:13:34 +00:00
) . where ( ProvidersCreds . id == provider_id ) . execute ( )
2021-03-16 14:38:12 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
return False
def update_aws_provider ( new_name , new_key , new_secret , provider_id ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2021-08-02 08:19:22 +00:00
try :
2022-05-23 19:13:34 +00:00
ProvidersCreds . update (
2022-11-12 16:11:29 +00:00
name = new_name , key = new_key , secret = new_secret , edit_date = cur_date
2022-05-23 19:13:34 +00:00
) . where ( ProvidersCreds . id == provider_id ) . execute ( )
2021-02-15 06:10:00 +00:00
return True
2021-08-02 08:19:22 +00:00
except Exception as e :
2021-08-07 07:41:28 +00:00
out_error ( e )
2021-02-15 06:10:00 +00:00
return False
2021-05-16 05:27:47 +00:00
def is_serv_protected ( serv ) :
try :
2021-08-02 08:19:22 +00:00
query_res = Server . get ( Server . ip == serv )
2022-05-25 08:21:44 +00:00
except Exception :
2021-05-16 05:27:47 +00:00
return " "
else :
2021-08-02 08:19:22 +00:00
return True if query_res . protected else False
2021-08-15 09:02:12 +00:00
def select_user_services ( user_id ) :
try :
query_res = User . get ( User . user_id == user_id ) . user_services
except Exception as e :
out_error ( e )
return " "
else :
return query_res
def update_user_services ( services , user_id ) :
try :
User . update ( user_services = services ) . where ( User . user_id == user_id ) . execute ( )
except Exception as e :
out_error ( e )
return False
2023-04-09 13:11:16 +00:00
else :
return True
2021-08-15 09:02:12 +00:00
2021-09-15 05:40:51 +00:00
def insert_or_update_service_setting ( server_id , service , setting , value ) :
try :
2022-05-23 16:16:21 +00:00
ServiceSetting . insert ( server_id = server_id , service = service , setting = setting , value = value ) . on_conflict (
' replace ' ) . execute ( )
2021-09-15 05:40:51 +00:00
except Exception as e :
out_error ( e )
return False
else :
return True
def select_service_settings ( server_id : int , service : str ) - > str :
query = ServiceSetting . select ( ) . where ( ( ServiceSetting . server_id == server_id ) & ( ServiceSetting . service == service ) )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2021-10-03 18:46:19 +00:00
def select_docker_service_settings ( server_id : int , service : str ) - > str :
query = ServiceSetting . select ( ) . where (
2022-05-25 08:21:44 +00:00
( ServiceSetting . server_id == server_id )
& ( ServiceSetting . service == service )
& ( ServiceSetting . setting == ' dockerized ' )
)
2021-10-03 18:46:19 +00:00
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def select_docker_services_settings ( service : str ) - > str :
query = ServiceSetting . select ( ) . where (
2022-05-25 08:21:44 +00:00
( ServiceSetting . service == service )
& ( ServiceSetting . setting == ' dockerized ' )
)
2021-10-03 18:46:19 +00:00
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2022-01-19 07:16:03 +00:00
2022-05-23 16:16:21 +00:00
2022-08-15 08:50:29 +00:00
def select_restart_service_settings ( server_id : int , service : str ) - > str :
query = ServiceSetting . select ( ) . where (
( ServiceSetting . server_id == server_id )
& ( ServiceSetting . service == service )
& ( ServiceSetting . setting == ' restart ' )
)
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def select_restart_services_settings ( service : str ) - > str :
query = ServiceSetting . select ( ) . where (
( ServiceSetting . service == service )
& ( ServiceSetting . setting == ' restart ' )
)
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2021-09-15 05:40:51 +00:00
def select_service_setting ( server_id : int , service : str , setting : str ) - > str :
try :
result = ServiceSetting . get (
2022-05-25 08:21:44 +00:00
( ServiceSetting . server_id == server_id )
& ( ServiceSetting . service == service )
& ( ServiceSetting . setting == setting )
) . value
2021-09-15 05:40:51 +00:00
except Exception :
pass
else :
return result
2022-01-19 07:16:03 +00:00
def delete_service_settings ( server_id : int ) :
query = ServiceSetting . delete ( ) . where ( ServiceSetting . server_id == server_id )
try :
query . execute ( )
except Exception as e :
out_error ( e )
2023-01-24 07:34:14 +00:00
def insert_action_history ( service : str , action : str , server_id : int , user_id : int , user_ip : str , server_ip : str , hostname : str ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2021-09-15 05:40:51 +00:00
try :
2022-05-23 18:41:39 +00:00
ActionHistory . insert (
service = service ,
action = action ,
server_id = server_id ,
user_id = user_id ,
ip = user_ip ,
2023-01-24 07:34:14 +00:00
date = cur_date ,
server_ip = server_ip ,
hostname = hostname
2022-05-23 18:41:39 +00:00
) . execute ( )
2021-09-15 05:40:51 +00:00
except Exception as e :
out_error ( e )
def delete_action_history ( server_id : int ) :
query = ActionHistory . delete ( ) . where ( ActionHistory . server_id == server_id )
try :
query . execute ( )
except Exception as e :
out_error ( e )
return False
else :
return True
2021-10-17 05:57:51 +00:00
2023-05-03 05:46:32 +00:00
def delete_action_history_for_period ( ) :
time_period = get_setting ( ' action_keep_history_range ' )
cur_date = get_date . return_date ( ' regular ' , timedelta_minus = time_period )
query = ActionHistory . delete ( ) . where ( ActionHistory . date < cur_date )
try :
query . execute ( )
except Exception as e :
out_error ( e )
2021-10-17 05:57:51 +00:00
def select_action_history_by_server_id ( server_id : int ) :
query = ActionHistory . select ( ) . where ( ActionHistory . server_id == server_id )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2022-04-15 09:49:00 +00:00
def select_action_history_by_user_id ( user_id : int ) :
query = ActionHistory . select ( ) . where ( ActionHistory . user_id == user_id )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
2021-10-17 05:57:51 +00:00
def select_action_history_by_server_id_and_service ( server_id : int , service : str ) :
query = ActionHistory . select ( ) . where (
2022-05-25 08:21:44 +00:00
( ActionHistory . server_id == server_id )
& ( ActionHistory . service == service )
2021-10-17 05:57:51 +00:00
)
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def insert_config_version ( server_id : int , user_id : int , service : str , local_path : str , remote_path : str , diff : str ) :
2022-11-12 16:11:29 +00:00
cur_date = get_date . return_date ( ' regular ' )
2021-10-17 05:57:51 +00:00
try :
2022-05-23 18:41:39 +00:00
ConfigVersion . insert (
server_id = server_id ,
user_id = user_id ,
service = service ,
local_path = local_path ,
remote_path = remote_path ,
diff = diff ,
2022-11-12 16:11:29 +00:00
date = cur_date
2022-05-23 18:41:39 +00:00
) . execute ( )
2021-10-17 05:57:51 +00:00
except Exception as e :
out_error ( e )
def select_config_version ( server_ip : str , service : str ) - > str :
server_id = select_server_id_by_ip ( server_ip )
query = ConfigVersion . select ( ) . where (
2022-05-25 08:21:44 +00:00
( ConfigVersion . server_id == server_id )
& ( ConfigVersion . service == service )
2021-10-17 05:57:51 +00:00
)
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def delete_config_version ( service : str , local_path : str ) :
query_res = ConfigVersion . delete ( ) . where (
2022-05-25 08:21:44 +00:00
( ConfigVersion . service == service )
& ( ConfigVersion . local_path == local_path )
2021-10-17 05:57:51 +00:00
)
try :
query_res . execute ( )
except Exception as e :
out_error ( e )
return False
else :
return True
2021-12-03 10:39:15 +00:00
2022-01-16 13:50:53 +00:00
def select_remote_path_from_version ( server_ip : str , service : str , local_path : str ) :
server_id = select_server_id_by_ip ( server_ip )
try :
2022-05-23 18:41:39 +00:00
query_res = ConfigVersion . get (
2022-05-25 08:21:44 +00:00
( ConfigVersion . server_id == server_id )
& ( ConfigVersion . service == service )
& ( ConfigVersion . local_path == local_path )
2022-05-23 18:41:39 +00:00
) . remote_path
2022-01-16 13:50:53 +00:00
except Exception as e :
out_error ( e )
else :
return query_res
2022-05-25 08:42:12 +00:00
def insert_system_info (
2022-05-28 07:59:05 +00:00
server_id : int , os_info : str , sys_info : str , cpu : str , ram : str , network : str , disks : str
2022-11-12 16:11:29 +00:00
) :
2021-12-03 10:39:15 +00:00
try :
2022-05-23 18:41:39 +00:00
SystemInfo . insert (
server_id = server_id , os_info = os_info , sys_info = sys_info , cpu = cpu , ram = ram , network = network , disks = disks
) . on_conflict ( ' replace ' ) . execute ( )
2021-12-03 10:39:15 +00:00
except Exception as e :
out_error ( e )
def delete_system_info ( server_id : int ) :
query = SystemInfo . delete ( ) . where ( SystemInfo . server_id == server_id )
try :
query . execute ( )
except Exception as e :
out_error ( e )
def select_one_system_info ( server_id : int ) :
query = SystemInfo . select ( ) . where ( SystemInfo . server_id == server_id )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
return
else :
return query_res
def select_system_info ( ) :
query = SystemInfo . select ( )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
return
else :
return query_res
def is_system_info ( server_id ) :
try :
query_res = SystemInfo . get ( SystemInfo . server_id == server_id ) . server_id
except Exception :
return True
else :
if query_res != ' ' :
return False
else :
return True
2022-02-16 07:46:30 +00:00
def select_os_info ( server_id ) :
try :
query_res = SystemInfo . get ( SystemInfo . server_id == server_id ) . os_info
except Exception as e :
out_error ( e )
return
else :
return query_res
2022-04-20 08:08:36 +00:00
def select_services ( ) :
query = Services . select ( )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
return
else :
return query_res
2022-04-23 17:40:27 +00:00
2022-09-11 07:40:25 +00:00
def select_service_name_by_id ( service_id : int ) - > str :
2022-05-05 18:26:14 +00:00
try :
service = Services . get ( Services . service_id == service_id ) . service
except Exception as e :
return out_error ( e )
else :
return service
2022-09-11 07:40:25 +00:00
def select_service_id_by_slug ( service_slug : str ) - > int :
try :
service = Services . get ( Services . slug == service_slug ) . service_id
except Exception as e :
return out_error ( e )
else :
return service
2022-04-23 17:40:27 +00:00
def insert_user_name ( user_name ) :
try :
UserName . insert ( UserName = user_name ) . execute ( )
except Exception as e :
out_error ( e )
return False
else :
return True
def select_user_name ( ) :
try :
query_res = UserName . get ( ) . UserName
2022-04-24 07:08:45 +00:00
except Exception :
2022-04-23 17:40:27 +00:00
return False
else :
return query_res
2023-06-03 15:04:22 +00:00
def get_super_admin_count ( ) - > int :
query = UserGroups . select ( UserGroups . user_id , UserGroups . user_role_id ) . distinct ( ) . where ( UserGroups . user_role_id == 1 ) . group_by ( UserGroups . user_id )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
try :
return len ( list ( query_res ) )
except Exception as e :
raise Exception ( f ' error: { e } ' )
2022-04-23 17:40:27 +00:00
def update_user_name ( user_name ) :
user_update = UserName . update ( UserName = user_name )
try :
user_update . execute ( )
except Exception as e :
out_error ( e )
return False
else :
return True
2022-04-24 07:08:45 +00:00
def update_user_status ( status , plan , method ) :
user_update = UserName . update ( Status = status , Method = method , Plan = plan )
2022-04-23 17:40:27 +00:00
try :
user_update . execute ( )
2022-04-24 07:08:45 +00:00
except Exception :
2022-04-23 17:40:27 +00:00
return False
else :
return True
def select_user_status ( ) :
try :
query_res = UserName . get ( ) . Status
2022-04-24 07:08:45 +00:00
except Exception :
return False
else :
return query_res
2022-09-16 09:31:54 +00:00
def check_user_status ( ) :
try :
UserName . get ( ) . Status
except Exception as e :
raise Exception ( str ( e ) )
else :
return True
2022-04-27 18:10:26 +00:00
def select_user_plan ( ) :
try :
query_res = UserName . get ( ) . Plan
except Exception :
return False
else :
return query_res
2022-04-24 07:08:45 +00:00
def select_user_all ( ) :
try :
query_res = UserName . select ( )
except Exception :
2022-04-23 17:40:27 +00:00
return False
else :
return query_res
2022-05-05 18:26:14 +00:00
def insert_new_git ( server_id , service_id , repo , branch , period , cred , description ) :
try :
2022-05-25 08:42:12 +00:00
GitSetting . insert (
server_id = server_id , service_id = service_id , repo = repo , branch = branch , period = period ,
cred_id = cred , description = description
) . execute ( )
2022-05-05 18:26:14 +00:00
except Exception as e :
out_error ( e )
return False
else :
return True
2022-05-23 13:42:01 +00:00
2022-05-05 18:26:14 +00:00
def select_gits ( * * kwargs ) :
if kwargs . get ( " server_id " ) is not None and kwargs . get ( " service_id " ) is not None :
2022-05-23 16:16:21 +00:00
query = GitSetting . select ( ) . where (
( GitSetting . server_id == kwargs . get ( " server_id " ) ) & ( GitSetting . service_id == kwargs . get ( " service_id " ) ) )
2022-05-05 18:26:14 +00:00
else :
query = GitSetting . select ( ) . order_by ( GitSetting . id )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
return query_res
def delete_git ( git_id ) :
query = GitSetting . delete ( ) . where ( GitSetting . id == git_id )
try :
query . execute ( )
except Exception as e :
out_error ( e )
return False
else :
return True
2022-06-15 07:34:20 +00:00
def select_users_emails_by_group_id ( group_id : int ) :
query = User . select ( User . email ) . where ( ( User . groups == group_id ) & ( User . role != ' guest ' ) )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
return
else :
return query_res
def select_user_email_by_uuid ( uuid : str ) - > str :
user_id = get_user_id_by_uuid ( uuid )
try :
query_res = User . get ( User . user_id == user_id ) . email
except Exception as e :
out_error ( e )
return " "
else :
return query_res
def select_checker_settings ( service_id : int ) :
query = CheckerSetting . select ( ) . where ( CheckerSetting . service_id == service_id )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
return
else :
return query_res
def select_checker_settings_for_server ( service_id : int , server_id : int ) :
query = CheckerSetting . select ( ) . where (
( CheckerSetting . service_id == service_id )
& ( CheckerSetting . server_id == server_id )
)
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
return
else :
return query_res
def insert_new_checker_setting_for_server ( server_ip : str ) - > None :
2022-07-15 18:55:54 +00:00
server_id = ( )
2022-06-15 07:34:20 +00:00
try :
server_id = Server . get ( Server . ip == server_ip ) . server_id
except Exception as e :
out_error ( e )
for service_id in range ( 1 , 5 ) :
CheckerSetting . insert (
server_id = server_id , service_id = service_id
) . on_conflict_ignore ( ) . execute ( )
def update_haproxy_checker_settings (
2023-04-15 21:26:54 +00:00
email : int , telegram_id : int , slack_id : int , pd_id : int , service_alert : int , backend_alert : int ,
2022-06-15 07:34:20 +00:00
maxconn_alert : int , setting_id : int
) - > bool :
settings_update = CheckerSetting . update (
2023-04-15 21:26:54 +00:00
email = email , telegram_id = telegram_id , slack_id = slack_id , pd_id = pd_id , service_alert = service_alert ,
2022-06-15 07:34:20 +00:00
backend_alert = backend_alert , maxconn_alert = maxconn_alert
) . where ( CheckerSetting . id == setting_id )
try :
settings_update . execute ( )
except Exception :
return False
else :
return True
def update_keepalived_checker_settings (
2023-04-15 21:26:54 +00:00
email : int , telegram_id : int , slack_id : int , pd_id : int , service_alert : int , backend_alert : int ,
2022-06-15 07:34:20 +00:00
setting_id : int
) - > bool :
settings_update = CheckerSetting . update (
2023-04-15 21:26:54 +00:00
email = email , telegram_id = telegram_id , slack_id = slack_id , pd_id = pd_id ,
2022-06-15 07:34:20 +00:00
service_alert = service_alert , backend_alert = backend_alert
) . where ( CheckerSetting . id == setting_id )
try :
settings_update . execute ( )
except Exception :
return False
else :
return True
def update_service_checker_settings (
2023-04-15 21:26:54 +00:00
email : int , telegram_id : int , slack_id : int , pd_id : int , service_alert : int , setting_id : int
2022-06-15 07:34:20 +00:00
) - > bool :
settings_update = CheckerSetting . update (
2023-04-15 21:26:54 +00:00
email = email , telegram_id = telegram_id , slack_id = slack_id , pd_id = pd_id , service_alert = service_alert
2022-06-15 07:34:20 +00:00
) . where ( CheckerSetting . id == setting_id )
try :
settings_update . execute ( )
except Exception :
return False
else :
return True
2022-07-15 18:55:54 +00:00
def select_provisioning_params ( ) :
query = ProvisionParam . select ( )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
return
else :
return query_res
2022-08-15 08:50:29 +00:00
def select_service ( slug : str ) - > str :
try :
query_res = Services . get ( Services . slug == slug )
except Exception as e :
out_error ( e )
return ' there is no service '
else :
return query_res
2022-09-02 14:12:28 +00:00
2022-09-11 07:40:25 +00:00
def select_count_services ( service : str ) - > int :
try :
if service == ' haproxy ' :
query_res = Server . select ( ) . where ( Server . haproxy == 1 ) . count ( )
elif service == ' nginx ' :
query_res = Server . select ( ) . where ( Server . nginx == 1 ) . count ( )
elif service == ' keepalived ' :
query_res = Server . select ( ) . where ( Server . keepalived == 1 ) . count ( )
elif service == ' apache ' :
query_res = Server . select ( ) . where ( Server . apache == 1 ) . count ( )
else :
query_res = Server . select ( ) . where ( ) . count ( )
except Exception as e :
out_error ( e )
else :
return query_res
2022-09-02 14:12:28 +00:00
def select_checker_service_status ( server_id : int , service_id : int , service_check : str ) - > int :
try :
service_check_status = ServiceStatus . get (
( ServiceStatus . server_id == server_id )
& ( ServiceStatus . service_id == service_id )
& ( ServiceStatus . service_check == service_check )
) . status
except Exception as e :
return out_error ( e )
else :
return service_check_status
2022-09-11 07:40:25 +00:00
def select_checker_services_status ( ) - > tuple :
try :
services_check_status = ServiceStatus . select ( ) . execute ( )
except Exception as e :
return out_error ( e )
else :
return services_check_status
2022-09-02 14:12:28 +00:00
def inset_or_update_service_status (
server_id : int , service_id : int , service_check : str , status : int
) - > None :
2022-09-11 07:40:25 +00:00
query = ServiceStatus . insert (
server_id = server_id , service_id = service_id , service_check = service_check , status = status
) . on_conflict ( ' replace ' )
2022-09-02 14:12:28 +00:00
try :
2022-09-11 07:40:25 +00:00
query . execute ( )
2022-09-02 14:12:28 +00:00
except Exception as e :
out_error ( e )
2023-01-17 18:23:53 +00:00
2023-06-03 15:04:22 +00:00
def update_smon_ssl_expire_date ( smon_id : str , expire_date : str ) - > None :
SMON_update = SMON . update ( ssl_expire_date = expire_date ) . where ( SMON . id == smon_id )
2023-03-19 15:51:58 +00:00
try :
SMON_update . execute ( )
except Exception as e :
out_error ( e )
2023-06-03 15:04:22 +00:00
def update_smon_alert_status ( smon_id : str , alert_value : int , alert : str ) - > None :
2023-01-17 18:23:53 +00:00
if alert == ' ssl_expire_warning_alert ' :
2023-06-03 15:04:22 +00:00
SMON_update = SMON . update ( ssl_expire_warning_alert = alert_value ) . where ( SMON . id == smon_id )
2023-01-17 18:23:53 +00:00
else :
2023-06-03 15:04:22 +00:00
SMON_update = SMON . update ( ssl_expire_critical_alert = alert_value ) . where ( SMON . id == smon_id )
2023-01-17 18:23:53 +00:00
try :
SMON_update . execute ( )
except Exception as e :
out_error ( e )
2023-06-03 15:04:22 +00:00
def get_smon_alert_status ( smon_id : str , alert : str ) - > int :
2023-01-17 18:23:53 +00:00
try :
if alert == ' ssl_expire_warning_alert ' :
2023-06-03 15:04:22 +00:00
alert_value = SMON . get ( SMON . id == smon_id ) . ssl_expire_warning_alert
2023-01-17 18:23:53 +00:00
else :
2023-06-03 15:04:22 +00:00
alert_value = SMON . get ( SMON . id == smon_id ) . ssl_expire_critical_alert
2023-01-17 18:23:53 +00:00
except Exception as e :
out_error ( e )
else :
return alert_value
2023-03-03 20:03:41 +00:00
def update_user_role ( user_id : int , group_id : int , role_id : int ) - > None :
try :
UserGroups . insert ( user_id = user_id , user_group_id = group_id , user_role_id = role_id ) . on_conflict ( ' replace ' ) . execute ( )
except Exception as e :
out_error ( e )
def get_role_id ( user_id : int , group_id : int ) - > int :
try :
role_id = UserGroups . get ( ( UserGroups . user_id == user_id ) & ( UserGroups . user_group_id == group_id ) )
except Exception as e :
out_error ( e )
else :
return int ( role_id . user_role_id )
2023-06-04 05:05:35 +00:00
def is_user_super_admin ( user_id : int ) - > bool :
query = UserGroups . select ( ) . where ( UserGroups . user_id == user_id )
try :
query_res = query . execute ( )
except Exception as e :
out_error ( e )
else :
for i in query_res :
if i . user_role_id == 1 :
return True
else :
return False