Pavel Loginov 2022-05-22 23:54:47 +03:00
parent a5370ccde0
commit 8d615e9a51
8 changed files with 270 additions and 272 deletions

View File

@ -16,11 +16,11 @@ funct.check_login(service=1)
funct.page_for_admin(level=3)
if (
form.getvalue('mode') is None and
form.getvalue('new_userlist') is None and
form.getvalue('peers-name') is None and
form.getvalue('generateconfig') is None
):
form.getvalue('mode') is None and
form.getvalue('new_userlist') is None and
form.getvalue('peers-name') is None and
form.getvalue('generateconfig') is None
):
try:
user, user_id, role, token, servers, user_services = funct.get_users_params(haproxy=1)
cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
@ -154,7 +154,7 @@ elif form.getvalue('mode') is not None:
if form.getvalue('option') is not None:
options = form.getvalue('option')
i = options.split("\n")
for j in i:
for j in i:
options_split += " " + j + "\n"
if force_close == "1":
@ -262,7 +262,7 @@ elif form.getvalue('mode') is not None:
default_server = ' default-server ' + observe + error_limit + circuit_breaking_on_error + '\n'
servers_split += default_server
if form.getvalue('servers') is not None:
if form.getvalue('servers') is not None:
servers = form.getlist('servers')
server_port = form.getlist('server_port')
send_proxy = form.getlist('send_proxy')
@ -337,27 +337,27 @@ elif form.getvalue('mode') is not None:
if form.getvalue('new_userlist') is not None:
name = "userlist "+form.getvalue('new_userlist') + "\n"
new_userlist_groups = ""
if form.getvalue('userlist-group') is not None:
new_userlist_groups = ""
if form.getvalue('userlist-group') is not None:
groups = form.getlist('userlist-group')
for group in groups:
new_userlist_groups += " group " + group + "\n"
new_users_list = ""
if form.getvalue('userlist-user') is not None:
new_users_list = ""
if form.getvalue('userlist-user') is not None:
users = form.getlist('userlist-user')
passwords = form.getlist('userlist-password')
userlist_user_group = form.getlist('userlist-user-group')
i = 0
for user in users:
try:
try:
group = ' groups '+userlist_user_group[i]
except Exception:
group = ''
new_users_list += " user "+user+" insecure-password " + passwords[i] + group + "\n"
i += 1
config_add = "\n" + name + new_userlist_groups + new_users_list
if form.getvalue('peers-name') is not None:

View File

@ -13,94 +13,94 @@ def default_values():
{'param': 'time_zone', 'value': 'UTC', 'section': 'main', 'desc': 'Time Zone', 'group': '1'},
{'param': 'proxy', 'value': '', 'section': 'main', 'desc': 'IP address and port of the proxy server. Use proto://ip:port', 'group': '1'},
{'param': 'session_ttl', 'value': '5', 'section': 'main', 'desc': 'TTL for a user session (in days)',
'group': '1'},
'group': '1'},
{'param': 'token_ttl', 'value': '5', 'section': 'main', 'desc': 'TTL for a user token (in days)',
'group': '1'},
'group': '1'},
{'param': 'tmp_config_path', 'value': '/tmp/', 'section': 'main',
'desc': 'Path to the temporary directory. A valid path should be specified as the value of this parameter. The directory must be owned by the user specified in SSH settings',
'group': '1'},
'desc': 'Path to the temporary directory. A valid path should be specified as the value of this parameter. The directory must be owned by the user specified in SSH settings',
'group': '1'},
{'param': 'cert_path', 'value': '/etc/ssl/certs/', 'section': 'main',
'desc': 'Path to SSL dir. Folder owner must be a user which set in the SSH settings. Path must exist',
'group': '1'},
'desc': 'Path to SSL dir. Folder owner must be a user which set in the SSH settings. Path must exist',
'group': '1'},
{'param': 'ssl_local_path', 'value': 'certs', 'section': 'main',
'desc': 'Path to the directory with the saved local SSL certificates. The value of this parameter is specified as a relative path beginning with $HOME_ROXY_WI/app/',
'group': '1'},
'desc': 'Path to the directory with the saved local SSL certificates. The value of this parameter is specified as a relative path beginning with $HOME_ROXY_WI/app/',
'group': '1'},
{'param': 'lists_path', 'value': 'lists', 'section': 'main',
'desc': 'Path to the black and the wild list. The value of this paramer should be specified as a relative path beginning with $HOME_ROXY-WI',
'group': '1'},
'desc': 'Path to the black and the wild list. The value of this paramer should be specified as a relative path beginning with $HOME_ROXY-WI',
'group': '1'},
{'param': 'haproxy_path_logs', 'value': '/var/log/haproxy/', 'section': 'haproxy',
'desc': 'The path for HAProxy logs', 'group': '1'},
'desc': 'The path for HAProxy logs', 'group': '1'},
{'param': 'syslog_server_enable', 'value': '0', 'section': 'logs',
'desc': 'Enable getting logs from a syslog server; (0 - no, 1 - yes)', 'group': '1'},
'desc': 'Enable getting logs from a syslog server; (0 - no, 1 - yes)', 'group': '1'},
{'param': 'syslog_server', 'value': '', 'section': 'logs', 'desc': 'IP address of the syslog_server',
'group': '1'},
'group': '1'},
{'param': 'log_time_storage', 'value': '14', 'section': 'logs',
'desc': 'Retention period for user activity logs (in days)', 'group': '1'},
'desc': 'Retention period for user activity logs (in days)', 'group': '1'},
{'param': 'stats_user', 'value': 'admin', 'section': 'haproxy', 'desc': 'Username for accessing HAProxy stats page',
'group': '1'},
'group': '1'},
{'param': 'stats_password', 'value': 'password', 'section': 'haproxy',
'desc': 'Password for accessing HAProxy stats page', 'group': '1'},
'desc': 'Password for accessing HAProxy stats page', 'group': '1'},
{'param': 'stats_port', 'value': '8085', 'section': 'haproxy', 'desc': 'Port for HAProxy stats page',
'group': '1'},
'group': '1'},
{'param': 'stats_page', 'value': 'stats', 'section': 'haproxy', 'desc': 'URI for HAProxy stats page',
'group': '1'},
'group': '1'},
{'param': 'haproxy_dir', 'value': '/etc/haproxy', 'section': 'haproxy', 'desc': 'Path to the HAProxy directory',
'group': '1'},
'group': '1'},
{'param': 'haproxy_config_path', 'value': '/etc/haproxy/haproxy.cfg', 'section': 'haproxy', 'desc': 'Path to the HAProxy configuration file',
'group': '1'},
'group': '1'},
{'param': 'server_state_file', 'value': '/etc/haproxy/haproxy.state', 'section': 'haproxy', 'desc': 'Path to the HAProxy state file',
'group': '1'},
'group': '1'},
{'param': 'haproxy_sock', 'value': '/var/run/haproxy.sock', 'section': 'haproxy',
'desc': 'Socket port for HAProxy', 'group': '1'},
'desc': 'Socket port for HAProxy', 'group': '1'},
{'param': 'haproxy_sock_port', 'value': '1999', 'section': 'haproxy', 'desc': 'HAProxy sock port',
'group': '1'},
'group': '1'},
{'param': 'apache_log_path', 'value': '/var/log/'+apache_dir+'/', 'section': 'logs', 'desc': 'Path to Apache logs',
'group': '1'},
'group': '1'},
{'param': 'nginx_path_logs', 'value': '/var/log/nginx/', 'section': 'nginx',
'desc': 'The path for NGINX logs', 'group': '1'},
'desc': 'The path for NGINX logs', 'group': '1'},
{'param': 'nginx_stats_user', 'value': 'admin', 'section': 'nginx', 'desc': 'Username for accessing NGINX stats page',
'group': '1'},
'group': '1'},
{'param': 'nginx_stats_password', 'value': 'password', 'section': 'nginx',
'desc': 'Password for Stats web page NGINX', 'group': '1'},
'desc': 'Password for Stats web page NGINX', 'group': '1'},
{'param': 'nginx_stats_port', 'value': '8086', 'section': 'nginx', 'desc': 'Stats port for web page NGINX',
'group': '1'},
'group': '1'},
{'param': 'nginx_stats_page', 'value': 'stats', 'section': 'nginx', 'desc': 'URI Stats for web page NGINX',
'group': '1'},
'group': '1'},
{'param': 'nginx_dir', 'value': '/etc/nginx/', 'section': 'nginx',
'desc': 'Path to the NGINX directory with config files', 'group': '1'},
'desc': 'Path to the NGINX directory with config files', 'group': '1'},
{'param': 'nginx_config_path', 'value': '/etc/nginx/nginx.conf', 'section': 'nginx',
'desc': 'Path to the main NGINX configuration file', 'group': '1'},
'desc': 'Path to the main NGINX configuration file', 'group': '1'},
{'param': 'ldap_enable', 'value': '0', 'section': 'ldap', 'desc': 'Enable LDAP (1 - yes, 0 - no)',
'group': '1'},
'group': '1'},
{'param': 'ldap_server', 'value': '', 'section': 'ldap', 'desc': 'IP address of the LDAP server', 'group': '1'},
{'param': 'ldap_port', 'value': '389', 'section': 'ldap', 'desc': 'LDAP port (port 389 or 636 is used by default)',
'group': '1'},
'group': '1'},
{'param': 'ldap_user', 'value': '', 'section': 'ldap',
'desc': 'LDAP username. Format: user@domain.com', 'group': '1'},
'desc': 'LDAP username. Format: user@domain.com', 'group': '1'},
{'param': 'ldap_password', 'value': '', 'section': 'ldap', 'desc': 'LDAP password', 'group': '1'},
{'param': 'ldap_base', 'value': '', 'section': 'ldap', 'desc': 'Base domain. Example: dc=domain, dc=com',
'group': '1'},
'group': '1'},
{'param': 'ldap_domain', 'value': '', 'section': 'ldap', 'desc': 'LDAP domain for logging in', 'group': '1'},
{'param': 'ldap_class_search', 'value': 'user', 'section': 'ldap', 'desc': 'Class for searching the user',
'group': '1'},
'group': '1'},
{'param': 'ldap_user_attribute', 'value': 'sAMAccountName', 'section': 'ldap',
'desc': 'Attribute to search users by', 'group': '1'},
'desc': 'Attribute to search users by', 'group': '1'},
{'param': 'ldap_search_field', 'value': 'mail', 'section': 'ldap', 'desc': 'User\'s email address', 'group': '1'},
{'param': 'ldap_type', 'value': '0', 'section': 'ldap', 'desc': 'Use LDAPS (1 - yes, 0 - no)', 'group': '1'},
{'param': 'smon_check_interval', 'value': '1', 'section': 'monitoring', 'desc': 'Check interval for SMON (in minutes)',
'group': '1'},
'group': '1'},
{'param': 'port_scan_interval', 'value': '5', 'section': 'monitoring',
'desc': 'Check interval for Port scanner (in minutes)', 'group': '1'},
'desc': 'Check interval for Port scanner (in minutes)', 'group': '1'},
{'param': 'portscanner_keep_history_range', 'value': '14', 'section': 'monitoring',
'desc': 'Retention period for Port scanner history', 'group': '1'},
'desc': 'Retention period for Port scanner history', 'group': '1'},
{'param': 'smon_keep_history_range', 'value': '14', 'section': 'monitoring',
'desc': 'Retention period for SMON history', 'group': '1'},
'desc': 'Retention period for SMON history', 'group': '1'},
{'param': 'checker_keep_history_range', 'value': '14', 'section': 'monitoring',
'desc': 'Retention period for Checker history', 'group': '1'},
'desc': 'Retention period for Checker history', 'group': '1'},
{'param': 'checker_maxconn_threshold', 'value': '90', 'section': 'monitoring',
'desc': 'Threshold value for alerting, in %', 'group': '1'},
'desc': 'Threshold value for alerting, in %', 'group': '1'},
{'param': 'checker_check_interval', 'value': '1', 'section': 'monitoring',
'desc': 'Check interval for Checker (in minutes)', 'group': '1'},
'desc': 'Check interval for Checker (in minutes)', 'group': '1'},
{'param': 'rabbitmq_host', 'value': '127.0.0.1', 'section': 'rabbitmq', 'desc': 'RabbitMQ-server host', 'group': '1'},
{'param': 'rabbitmq_port', 'value': '5672', 'section': 'rabbitmq', 'desc': 'RabbitMQ-server port', 'group': '1'},
{'param': 'rabbitmq_port', 'value': '5672', 'section': 'rabbitmq', 'desc': 'RabbitMQ-server port', 'group': '1'},
@ -109,21 +109,21 @@ def default_values():
{'param': 'rabbitmq_user', 'value': 'roxy-wi', 'section': 'rabbitmq', 'desc': 'RabbitMQ-server user', 'group': '1'},
{'param': 'rabbitmq_password', 'value': 'roxy-wi123', 'section': 'rabbitmq', 'desc': 'RabbitMQ-server user password', 'group': '1'},
{'param': 'apache_path_logs', 'value': '/var/log/httpd/', 'section': 'apache',
'desc': 'The path for Apache logs', 'group': '1'},
'desc': 'The path for Apache logs', 'group': '1'},
{'param': 'apache_stats_user', 'value': 'admin', 'section': 'apache',
'desc': 'Username for accessing Apache stats page', 'group': '1'},
'desc': 'Username for accessing Apache stats page', 'group': '1'},
{'param': 'apache_stats_password', 'value': 'password', 'section': 'apache',
'desc': 'Password for Apache stats webpage', 'group': '1'},
'desc': 'Password for Apache stats webpage', 'group': '1'},
{'param': 'apache_stats_port', 'value': '8087', 'section': 'apache', 'desc': 'Stats port for webpage Apache',
'group': '1'},
'group': '1'},
{'param': 'apache_stats_page', 'value': 'stats', 'section': 'apache', 'desc': 'URI Stats for webpage Apache',
'group': '1'},
'group': '1'},
{'param': 'apache_dir', 'value': '/etc/httpd/', 'section': 'apache',
'desc': 'Path to the Apache directory with config files', 'group': '1'},
'desc': 'Path to the Apache directory with config files', 'group': '1'},
{'param': 'apache_config_path', 'value': '/etc/httpd/conf/httpd.conf', 'section': 'apache',
'desc': 'Path to the main Apache configuration file', 'group': '1'},
'desc': 'Path to the main Apache configuration file', 'group': '1'},
{'param': 'apache_container_name', 'value': 'apache', 'section': 'apache',
'desc': 'Docker container name for Apache service', 'group': '1'},
'desc': 'Docker container name for Apache service', 'group': '1'},
]
try:
Setting.insert_many(data_source).on_conflict_ignore().execute()
@ -626,7 +626,6 @@ def update_db_v_5_3_1(**kwargs):
print("Updating... DB has been updated to version 5.3.1")
def update_db_v_5_3_2_2(**kwargs):
cursor = conn.cursor()
sql = """

View File

@ -10,8 +10,8 @@ def is_ip_or_dns(server_from_request: str) -> str:
dns_regex = "^(?!-)[A-Za-z0-9-]+([\\-\\.]{1}[a-z0-9]+)*\\.[A-Za-z]{2,6}$"
try:
if server_from_request in ('roxy-wi-checker', 'roxy-wi-keep_alive', 'roxy-wi-keep-alive', 'roxy-wi-metrics',
'roxy-wi-portscanner', 'roxy-wi-smon', 'roxy-wi-socket',
'fail2ban', 'prometheus', 'all', 'grafana-server', 'rabbitmq-server'):
'roxy-wi-portscanner', 'roxy-wi-smon', 'roxy-wi-socket', 'fail2ban', 'prometheus',
'all', 'grafana-server', 'rabbitmq-server'):
return server_from_request
if re.match(ip_regex, server_from_request):
return server_from_request
@ -182,8 +182,8 @@ def logging(server_ip, action, **kwargs):
log.close()
except IOError as e:
print('<center><div class="alert alert-danger">Cannot write log. Please check log_path in config %e</div></center>' % e)
def keep_action_history(service: str, action: str, server_ip: str, login: str, user_ip: str):
import sql
try:
@ -419,12 +419,12 @@ def ssh_connect(server_ip):
def get_config(server_ip, cfg, **kwargs):
import sql
if kwargs.get("keepalived") or kwargs.get("service") == 'keepalived':
if kwargs.get("keepalived") or kwargs.get("service") == 'keepalived':
config_path = "/etc/keepalived/keepalived.conf"
elif (kwargs.get("nginx") or kwargs.get("service") == 'nginx' or
kwargs.get("apache") or kwargs.get("service") == 'apache'):
kwargs.get("apache") or kwargs.get("service") == 'apache'):
config_path = kwargs.get('config_file_name')
elif kwargs.get("waf") or kwargs.get("service") == 'waf':
elif kwargs.get("waf") or kwargs.get("service") == 'waf':
config_path = sql.get_setting('haproxy_dir') + '/waf/rules/' + kwargs.get("waf_rule_file")
else:
config_path = sql.get_setting('haproxy_config_path')
@ -472,7 +472,7 @@ def diff_config(oldcfg, cfg, **kwargs):
if kwargs.get('return_diff'):
for line in output:
diff += line + "\n"
diff += line + "\n"
return diff
else:
for line in output:
@ -485,8 +485,8 @@ def diff_config(oldcfg, cfg, **kwargs):
except IOError:
print('<center><div class="alert alert-danger">Can\'t read write change to log. %s</div></center>' % stderr)
pass
def get_remote_sections(server_ip: str, service: str) -> str:
import sql
remote_dir = service+'_dir'
@ -496,13 +496,13 @@ def get_remote_sections(server_ip: str, service: str) -> str:
section_name = 'server_name'
commands = [
'sudo grep {} {}* -R |grep -v \'${}\|#\'|awk \'{{print $1, $3}}\''.format(section_name, config_dir,
section_name)]
section_name)]
elif service == 'apache':
section_name = 'ServerName'
commands = [
'sudo grep {} {}*/*.conf -R |grep -v \'${}\|#\'|awk \'{{print $1, $3}}\''.format(section_name, config_dir,
section_name)]
section_name)]
backends = ssh_command(server_ip, commands)
@ -516,7 +516,7 @@ def get_sections(config, **kwargs):
if kwargs.get('service') == 'keepalived':
import re
ip_pattern = re.compile('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}')
find_ip = re.findall(ip_pattern,line)
find_ip = re.findall(ip_pattern, line)
if find_ip:
return_config.append(find_ip[0])
else:
@ -893,8 +893,8 @@ def upload(server_ip, path, file, **kwargs):
file = sftp.put(file, full_path)
except Exception as e:
error = str(e.args)
print('Cannot upload '+file+' to '+full_path+' to server: '+server_ip+' error: '+ error)
logging('localhost', ' Cannot upload '+file+' to '+full_path+' to server: '+server_ip+' Error: '+ error, haproxywi=1)
print('Cannot upload ' + file + ' to ' + full_path + ' to server: ' + server_ip + ' error: ' + error)
logging('localhost', ' Cannot upload ' + file + ' to ' + full_path + ' to server: ' + server_ip + ' Error: ' + error, haproxywi=1)
return error
try:
@ -903,7 +903,7 @@ def upload(server_ip, path, file, **kwargs):
except Exception as e:
error = str(e.args)
logging('localhost', error, haproxywi=1)
print('Cannot upload '+file+' to '+full_path+' to server: '+server_ip+' error: '+ error)
print('Cannot upload ' + file + ' to ' + full_path + ' to server: ' + server_ip + ' error: ' + error)
return error
@ -947,7 +947,6 @@ def upload_and_restart(server_ip, cfg, **kwargs):
if service == 'apache':
service_name = get_correct_apache_service_name(server_ip, 0)
reload_command = " && sudo systemctl reload " + service_name
restart_command = " && sudo systemctl restart " + service_name
@ -997,7 +996,7 @@ def upload_and_restart(server_ip, cfg, **kwargs):
check_config = "sudo docker exec -it exec " + container_name + " nginx -t -q "
else:
check_config = "sudo apachectl configtest "
check_and_move = "sudo mv -f " + tmp_file + " " + config_path #+ " && " + check_config
check_and_move = "sudo mv -f " + tmp_file + " " + config_path # + " && " + check_config
if action == "test":
commands = [check_config + " && sudo rm -f " + tmp_file]
elif action == "save":
@ -1018,7 +1017,7 @@ def upload_and_restart(server_ip, cfg, **kwargs):
elif action == "save":
commands = [check_config + move_config]
else:
commands = [check_config + move_config + reload_or_restart_command ]
commands = [check_config + move_config + reload_or_restart_command]
if sql.return_firewall(server_ip):
commands[0] += open_port_firewalld(cfg, server_ip=server_ip)
@ -1075,25 +1074,25 @@ def master_slave_upload_and_restart(server_ip, cfg, just_save, **kwargs):
for master in masters:
if master[0] is not None:
error = upload_and_restart(master[0],
cfg,
just_save=just_save,
nginx=kwargs.get('nginx'),
apache=kwargs.get('apache'),
config_file_name=kwargs.get('config_file_name'),
slave=1)
cfg,
just_save=just_save,
nginx=kwargs.get('nginx'),
apache=kwargs.get('apache'),
config_file_name=kwargs.get('config_file_name'),
slave=1)
if kwargs.get('login'):
login = kwargs.get('login')
else:
login = ''
error = upload_and_restart(server_ip,
cfg,
just_save=just_save,
nginx=kwargs.get('nginx'),
apache=kwargs.get('apache'),
config_file_name=kwargs.get('config_file_name'),
oldcfg=kwargs.get('oldcfg'),
login=login)
cfg,
just_save=just_save,
nginx=kwargs.get('nginx'),
apache=kwargs.get('apache'),
config_file_name=kwargs.get('config_file_name'),
oldcfg=kwargs.get('oldcfg'),
login=login)
return error
@ -1152,7 +1151,7 @@ def check_haproxy_config(server_ip):
if is_docker == '1':
container_name = sql.get_setting('haproxy_container_name')
commands = [ "sudo docker exec -it " + container_name + " haproxy -q -c -f " + config_path ]
commands = ["sudo docker exec -it " + container_name + " haproxy -q -c -f " + config_path]
else:
commands = ["haproxy -q -c -f %s" % config_path]
@ -1168,7 +1167,7 @@ def check_haproxy_config(server_ip):
def check_nginx_config(server_ip):
import sql
commands = [ "nginx -q -t -p {}".format(sql.get_setting('nginx_dir')) ]
commands = ["nginx -q -t -p {}".format(sql.get_setting('nginx_dir'))]
ssh = ssh_connect(server_ip)
for command in commands:
stdin, stdout, stderr = ssh.exec_command(command, get_pty=True)
@ -1647,7 +1646,7 @@ def check_service(server_ip, service_name):
def get_service_version(server_ip, service_name):
server_ip = is_ip_or_dns(server_ip)
if service_name == 'haproxy_exporter':
commands = [ "/opt/prometheus/exporters/haproxy_exporter --version 2>&1 |head -1|awk '{print $3}'"]
commands = ["/opt/prometheus/exporters/haproxy_exporter --version 2>&1 |head -1|awk '{print $3}'"]
elif service_name == 'nginx_exporter':
commands = ["/opt/prometheus/exporters/nginx_exporter 2>&1 |head -1 |awk -F\"=\" '{print $2}'|awk '{print $1}'"]
elif service_name == 'node_exporter':
@ -1666,15 +1665,15 @@ def get_services_status():
services = []
is_in_docker = is_docker()
services_name = {'roxy-wi-checker': 'Checker backends master service',
'roxy-wi-keep_alive': 'Auto start service',
'roxy-wi-metrics': 'Metrics master service',
'roxy-wi-portscanner': 'Port scanner service',
'roxy-wi-smon': 'Simple monitoring network ports',
'roxy-wi-socket': 'Socket service',
'prometheus': 'Prometheus service',
'grafana-server': 'Grafana service',
'fail2ban': 'Fail2ban service',
'rabbitmq-server': 'Message broker service'}
'roxy-wi-keep_alive': 'Auto start service',
'roxy-wi-metrics': 'Metrics master service',
'roxy-wi-portscanner': 'Port scanner service',
'roxy-wi-smon': 'Simple monitoring network ports',
'roxy-wi-socket': 'Socket service',
'prometheus': 'Prometheus service',
'grafana-server': 'Grafana service',
'fail2ban': 'Fail2ban service',
'rabbitmq-server': 'Message broker service'}
for s, v in services_name.items():
if is_in_docker:
cmd = "sudo supervisorctl status " + s + "|awk '{print $2}'"
@ -1762,8 +1761,8 @@ def get_system_info(server_ip: str) -> bool:
except Exception:
ip = ''
network[i['logicalname']] = {'description': i['description'],
'mac': i['serial'],
'ip': ip}
'mac': i['serial'],
'ip': ip}
for k, j in i.items():
if isinstance(j, list):
for b in j:
@ -1801,9 +1800,9 @@ def get_system_info(server_ip: str) -> bool:
fs = volume_info['configuration']['mount.fstype']
state = volume_info['configuration']['state']
disks[volume_name] = {'mount_point': mount_point,
'size': size,
'fs': fs,
'state': state}
'size': size,
'fs': fs,
'state': state}
except Exception:
pass
@ -1815,7 +1814,7 @@ def get_system_info(server_ip: str) -> bool:
if 'children' in s:
for net in s['children']:
network[net['logicalname']] = {'description': net['description'],
'mac': net['serial']}
'mac': net['serial']}
if s['class'] == 'storage':
for p, pval in s.items():
if isinstance(pval, list):
@ -1830,9 +1829,9 @@ def get_system_info(server_ip: str) -> bool:
fs = volume_info['configuration']['mount.fstype']
state = volume_info['configuration']['state']
disks[volume_name] = {'mount_point': mount_point,
'size': size,
'fs': fs,
'state': state}
'size': size,
'fs': fs,
'state': state}
for z, n in s.items():
if isinstance(n, list):
for y in n:
@ -1867,9 +1866,9 @@ def get_system_info(server_ip: str) -> bool:
fs = q['configuration']['mount.fstype']
state = q['configuration']['state']
disks[volume_name] = {'mount_point': mount_point,
'size': size,
'fs': fs,
'state': state}
'size': size,
'fs': fs,
'state': state}
except Exception as e:
print(e)
except Exception:
@ -1937,6 +1936,7 @@ def get_system_info(server_ip: str) -> bool:
else:
return False
def string_to_dict(dict_string) -> dict:
from ast import literal_eval
return literal_eval(dict_string)
@ -1957,16 +1957,14 @@ def send_message_to_rabbit(message: str, **kwargs) -> None:
credentials = pika.PlainCredentials(rabbit_user, rabbit_password)
parameters = pika.ConnectionParameters(rabbit_host,
rabbit_port,
rabbit_vhost,
credentials)
rabbit_port,
rabbit_vhost,
credentials)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
channel.queue_declare(queue=rabbit_queue)
channel.basic_publish(exchange='',
routing_key=rabbit_queue,
body=message)
channel.basic_publish(exchange='', routing_key=rabbit_queue, body=message)
connection.close()
@ -2008,10 +2006,12 @@ def get_correct_apache_service_name(server_ip=0, server_id=0) -> str:
def is_docker() -> bool:
import os, re
import os
import re
path = "/proc/self/cgroup"
if not os.path.isfile(path): return False
if not os.path.isfile(path):
return False
with open(path) as f:
for line in f:
if re.match("\d+:[\w=]+:/docker(-[ce]e)?/\w+", line):

View File

@ -1,7 +1,9 @@
#!/usr/bin/env python3
import distro
import funct
import sql
import distro
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
@ -122,7 +124,7 @@ for s in servers:
servers_with_status.append(h)
servers_with_status.append(s[17])
elif service == 'keepalived':
h = (['',''],)
h = (['', ''],)
cmd = [
"/usr/sbin/keepalived -v 2>&1|head -1|awk '{print $2}' && systemctl status keepalived |grep -e 'Active' |awk '{print $2, $9$10$11$12$13}' && ps ax |grep keepalived|grep -v grep |wc -l"]
try:
@ -139,7 +141,7 @@ for s in servers:
servers_with_status.append(h)
servers_with_status.append(s[22])
elif service == 'apache':
h = (['',''],)
h = (['', ''],)
apache_stats_user = sql.get_setting('apache_stats_user')
apache_stats_password = sql.get_setting('apache_stats_password')
apache_stats_port = sql.get_setting('apache_stats_port')
@ -174,7 +176,7 @@ for s in servers:
if is_keepalived:
try:
cmd = ['sudo kill -USR1 `cat /var/run/keepalived.pid` && sudo grep State /tmp/keepalived.data -m 1 |awk -F"=" \'{print $2}\'|tr -d \'[:space:]\' && sudo rm -f /tmp/keepalived.data' ]
cmd = ['sudo kill -USR1 `cat /var/run/keepalived.pid` && sudo grep State /tmp/keepalived.data -m 1 |awk -F"=" \'{print $2}\'|tr -d \'[:space:]\' && sudo rm -f /tmp/keepalived.data']
out = funct.ssh_command(s[2], cmd)
out1 = ('1', out)
servers_with_status.append(out1)
@ -192,18 +194,18 @@ except Exception as e:
funct.logging('localhost', 'Cannot get a user plan: ' + str(e), haproxywi=1)
template = template.render(h2=1,
autorefresh=autorefresh,
title=title,
role=role,
user=user,
servers=servers_with_status1,
keep_alive=''.join(keep_alive),
serv=serv,
service=service,
services=services,
user_services=user_services,
service_settings=service_settings,
user_status=user_status,
user_plan=user_plan,
token=token)
autorefresh=autorefresh,
title=title,
role=role,
user=user,
servers=servers_with_status1,
keep_alive=''.join(keep_alive),
serv=serv,
service=service,
services=services,
user_services=user_services,
service_settings=service_settings,
user_status=user_status,
user_plan=user_plan,
token=token)
print(template)

View File

@ -10,9 +10,10 @@ print('Content-type: text/html\n')
funct.check_login()
try:
user, user_id, role, token, servers, user_services = funct.get_users_params()
user, user_id, role, token, servers, user_services \
= funct.get_users_params()
services = []
except:
except Exception:
pass
form = funct.form
@ -27,28 +28,32 @@ if service == 'nginx':
if serv:
if funct.check_is_server_in_group(serv):
server_id = sql.select_server_id_by_ip(serv)
history = sql.select_action_history_by_server_id_and_service(server_id, service)
history = sql.select_action_history_by_server_id_and_service(server_id,
service)
elif service == 'keepalived':
if funct.check_login(service=3):
title = 'Keepalived service history'
if serv:
if funct.check_is_server_in_group(serv):
server_id = sql.select_server_id_by_ip(serv)
history = sql.select_action_history_by_server_id_and_service(server_id, service)
history = sql.select_action_history_by_server_id_and_service(server_id,
service)
elif service == 'apache':
if funct.check_login(service=4):
title = 'Apache service history'
if serv:
if funct.check_is_server_in_group(serv):
server_id = sql.select_server_id_by_ip(serv)
history = sql.select_action_history_by_server_id_and_service(server_id, service)
history = sql.select_action_history_by_server_id_and_service(server_id,
service)
elif service == 'haproxy':
if funct.check_login(service=1):
title = "HAProxy service history"
if serv:
if funct.check_is_server_in_group(serv):
server_id = sql.select_server_id_by_ip(serv)
history = sql.select_action_history_by_server_id_and_service(server_id, service)
history = sql.select_action_history_by_server_id_and_service(server_id,
service)
elif service == 'server':
if serv:
title = serv + ' history'
@ -63,14 +68,14 @@ elif service == 'user':
users = sql.select_users()
template = template.render(h2=1,
autorefresh=0,
title=title,
role=role,
user=user,
users=users,
serv=serv,
service=service,
history=history,
user_services=user_services,
token=token)
autorefresh=0,
title=title,
role=role,
user=user,
users=users,
serv=serv,
service=service,
history=history,
user_services=user_services,
token=token)
print(template)

View File

@ -9,7 +9,8 @@ print('Content-type: text/html\n')
funct.check_login()
try:
user, user_id, role, token, servers, user_services = funct.get_users_params(virt=1)
user, user_id, role, token, servers, user_services \
= funct.get_users_params(virt=1)
except Exception:
pass
@ -22,4 +23,4 @@ output_from_parsed_template = template.render(h2=1, autorefresh=0,
versions=funct.versions(),
user_services=user_services,
token=token)
print(output_from_parsed_template)
print(output_from_parsed_template)

View File

@ -597,7 +597,7 @@ if act == "overview":
haproxy = sql.select_haproxy(serv) if '1' in user_services else 0
nginx = sql.select_nginx(serv) if '2' in user_services else 0
keepalived = sql.select_keepalived(serv) if '3' in user_services else 0
apache = sql.select_apache(serv) if '4' in user_services else 0
apache = sql.select_apache(serv) if '4' in user_services else 0
waf = sql.select_waf_servers(serv2)
haproxy_process = ''
@ -646,7 +646,6 @@ if act == "overview":
apache_process)
return server_status
async def get_runner_overview():
env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True,
extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'])
@ -663,7 +662,6 @@ if act == "overview":
template = template.render(service_status=servers_sorted, role=sql.get_user_role_by_uuid(user_uuid.value))
print(template)
ioloop = asyncio.get_event_loop()
ioloop.run_until_complete(get_runner_overview())
ioloop.close()
@ -673,7 +671,7 @@ if act == "overviewwaf":
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True,
extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'])
extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'])
template = env.get_template('overivewWaf.html')
servers = sql.select_servers(server=serv)
@ -728,7 +726,6 @@ if act == "overviewwaf":
if act == "overviewServers":
import asyncio
async def async_get_overviewServers(serv1, serv2, service):
if service == 'haproxy':
cmd = 'echo "show info" |nc %s %s -w 1|grep -e "node\|Nbproc\|Maxco\|MB\|Nbthread"' % (serv2, sql.get_setting('haproxy_sock_port'))
@ -748,7 +745,6 @@ if act == "overviewServers":
server_status = (serv1, serv2, return_out)
return server_status
async def get_runner_overviewServers(**kwargs):
import http.cookies
from jinja2 import Environment, FileSystemLoader
@ -769,7 +765,6 @@ if act == "overviewServers":
template = template.render(service_status=servers_sorted, role=role, id=kwargs.get('id'), service_page=service)
print(template)
server_id = form.getvalue('id')
name = form.getvalue('name')
service = form.getvalue('service')
@ -1703,9 +1698,9 @@ if form.getvalue('git_backup'):
branch = 'main'
commands = ["chmod +x " + script + " && ./" + script + " HOST=" + server_ip + " DELJOB=" + deljob +
" SERVICE=" + service_name + " INIT=" + git_init + " SSH_PORT=" + ssh_port + " PERIOD=" + period +
" REPO=" + repo + " BRANCH=" + branch + " CONFIG_DIR=" + service_config_dir +
" PROXY=" + proxy_serv + " USER=" + str(ssh_user_name) + " KEY=" + str(ssh_key_name)]
" SERVICE=" + service_name + " INIT=" + git_init + " SSH_PORT=" + ssh_port + " PERIOD=" + period +
" REPO=" + repo + " BRANCH=" + branch + " CONFIG_DIR=" + service_config_dir +
" PROXY=" + proxy_serv + " USER=" + str(ssh_user_name) + " KEY=" + str(ssh_key_name)]
output, error = funct.subprocess_execute(commands[0])
@ -2129,7 +2124,6 @@ if form.getvalue('newuser') is not None:
group = form.getvalue('newgroupuser')
role_id = sql.get_role_id_by_name(role)
if funct.check_user_group():
if funct.is_admin(level=role_id):
if sql.add_user(new_user, email, password, role, activeuser, group):
@ -2341,7 +2335,7 @@ if form.getvalue('newgroup') is not None:
output_from_parsed_template = template.render(groups=sql.select_groups(group=newgroup))
print(output_from_parsed_template)
funct.logging('localhost','A new group ' + newgroup + ' has been created', haproxywi=1, login=1)
funct.logging('localhost', 'A new group ' + newgroup + ' has been created', haproxywi=1, login=1)
if form.getvalue('groupdel') is not None:
groupdel = form.getvalue('groupdel')
@ -2387,7 +2381,7 @@ if form.getvalue('new_ssh'):
output_from_parsed_template = template.render(groups=sql.select_groups(), sshs=sql.select_ssh(name=name),
page=page)
print(output_from_parsed_template)
funct.logging('localhost', 'A new SSH credentials ' + name +' has created', haproxywi=1, login=1)
funct.logging('localhost', 'A new SSH credentials ' + name + ' has created', haproxywi=1, login=1)
if form.getvalue('sshdel') is not None:
fullpath = funct.get_config_var('main', 'fullpath')
@ -2565,7 +2559,7 @@ if form.getvalue('updatesettings') is not None:
settings = form.getvalue('updatesettings')
val = form.getvalue('val')
if sql.update_setting(settings, val):
funct.logging('localhost', 'The ' + settings +' setting has been changed to: ' + val, haproxywi=1, login=1)
funct.logging('localhost', 'The ' + settings + ' setting has been changed to: ' + val, haproxywi=1, login=1)
print("Ok")
if form.getvalue('getuserservices'):
@ -2727,7 +2721,6 @@ if form.getvalue('updateSmonIp') is not None:
print('SMON error: Cannot be HTTP with 443 port')
sys.exit()
if sql.update_smon(smon_id, ip, port, body, telegram, slack, group, desc, en):
print("Ok")
funct.logging('SMON', ' Has been update the server ' + ip + ' to SMON ', haproxywi=1, login=1)
@ -3496,7 +3489,7 @@ if form.getvalue('awseditworkspace'):
cmd = 'cd scripts/terraform/ && sudo terraform workspace select ' + workspace + '_' + group + '_aws'
output, stderr = funct.subprocess_execute(cmd)
except Exception as e:
print('error: ' +str(e))
print('error: ' + str(e))
if stderr != '':
stderr = stderr.strip()
@ -3509,14 +3502,15 @@ if form.getvalue('awseditworkspace'):
print('ok')
if (
form.getvalue('awsprovisining') or
form.getvalue('awseditingprovisining') or
form.getvalue('doprovisining') or
form.getvalue('doeditprovisining') or
form.getvalue('gcoreprovisining') or
form.getvalue('gcoreeditgprovisining')
):
form.getvalue('awsprovisining') or
form.getvalue('awseditingprovisining') or
form.getvalue('doprovisining') or
form.getvalue('doeditprovisining') or
form.getvalue('gcoreprovisining') or
form.getvalue('gcoreeditgprovisining')
):
funct.check_user_group()
if form.getvalue('awsprovisining'):
workspace = form.getvalue('awsprovisining')
group = form.getvalue('aws_create_group')
@ -3923,7 +3917,7 @@ if form.getvalue('loadopenvpn'):
if (
(stdout[0] != 'package openvpn3-client is not installed' and stderr != '/bin/sh: rpm: command not found') and
stdout[0] != 'E: No packages found'
):
):
cmd = "sudo openvpn3 configs-list |grep -E 'ovpn|(^|[^0-9])[0-9]{4}($|[^0-9])' |grep -v net|awk -F\" \" '{print $1}'|awk 'ORS=NR%2?\" \":\"\\n\"'"
openvpn_configs, stderr = funct.subprocess_execute(cmd)
cmd = "sudo openvpn3 sessions-list|grep -E 'Config|Status'|awk -F\":\" '{print $2}'|awk 'ORS=NR%2?\" \":\"\\n\"'| sed 's/^ //g'"

View File

@ -386,14 +386,12 @@ def select_user_groups_with_names(user_id, **kwargs):
if kwargs.get("all") is not None:
query = (UserGroups
.select(UserGroups.user_group_id, UserGroups.user_id, Groups.name)
.join(Groups, on=(UserGroups.user_group_id == Groups.group_id))
)
.join(Groups, on=(UserGroups.user_group_id == Groups.group_id)))
else:
query = (UserGroups
.select(UserGroups.user_group_id, Groups.name)
.join(Groups, on=(UserGroups.user_group_id == Groups.group_id))
.where(UserGroups.user_id == user_id)
)
.where(UserGroups.user_id == user_id))
try:
query_res = query.execute()
except Exception as e:
@ -501,10 +499,10 @@ def select_servers(**kwargs):
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 groups """
if kwargs.get("get_master_servers") is not None and kwargs.get('uuid') is not None:
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
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
""".format(kwargs.get('uuid'))
if kwargs.get("id"):
sql = """select * from servers where id='{}' """.format(kwargs.get("id"))
@ -833,13 +831,13 @@ def get_dick_permit(**kwargs):
def is_master(ip, **kwargs):
cursor = conn.cursor()
if kwargs.get('master_slave'):
sql = """ select master.hostname, master.ip, slave.hostname, slave.ip
from servers as master
left join servers as slave on master.id = slave.master
sql = """ select master.hostname, master.ip, slave.hostname, slave.ip
from servers as master
left join servers as slave on master.id = slave.master
where slave.master > 0 """
else:
sql = """ select slave.ip, slave.hostname from servers as master
left join servers as slave on master.id = slave.master
sql = """ select slave.ip, slave.hostname from servers as master
left join servers as slave on master.id = slave.master
where master.ip = '%s' """ % ip
try:
cursor.execute(sql)
@ -1055,6 +1053,7 @@ def update_slack(token, chanel, group, slack_id):
else:
return True
def insert_new_option(saved_option, group):
try:
Option.insert(options=saved_option, groups=group).execute()
@ -1602,7 +1601,7 @@ def select_table_metrics():
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,
(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
@ -1632,13 +1631,13 @@ def select_table_metrics():
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.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
(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,
(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
@ -1655,8 +1654,8 @@ def select_table_metrics():
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
group by servers.ip ) as max_con_3d
where ip.ip=hostname.ip
and ip.ip=avg_sess_1h.ip
and ip.ip=avg_sess_24h.ip
@ -1679,77 +1678,77 @@ def select_table_metrics():
(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,
(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
(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 <= datetime('now', 'localtime') and metr.date >= datetime('now', '-1 hours', 'localtime')
group by servers.ip) as avg_sess_1h,
(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
(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 <= datetime('now', 'localtime') and metr.date >= datetime('now', '-24 hours', 'localtime')
group by servers.ip) as avg_sess_24h,
group by servers.ip) as avg_sess_24h,
(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')
(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')
group by servers.ip ) as avg_sess_3d,
(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
(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
metr.date <= datetime('now', 'localtime') and metr.date >= datetime('now', '-1 hours', 'localtime')
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
(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 <= datetime('now', 'localtime') and metr.date >= datetime('now', '-24 hours', 'localtime')
group by servers.ip) as max_sess_24h,
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 <= datetime('now', 'localtime') and metr.date >= datetime('now', '-3 days', 'localtime')
(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')
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
(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 <= 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.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
(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 <= datetime('now', 'localtime') and metr.date >= datetime('now', '-24 hours', 'localtime')
group by servers.ip) as avg_cur_24h,
group by servers.ip) as avg_cur_24h,
(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')
(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')
group by servers.ip ) as avg_cur_3d,
(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
(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
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.curr_con) as max_con_24h from servers
left join metrics as metr on metr.serv = servers.ip
where servers.metrics = 1 and
(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 <= datetime('now', 'localtime') and metr.date >= datetime('now', '-24 hours', 'localtime')
group by servers.ip) as max_con_24h,
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 <= datetime('now', 'localtime') and metr.date >= datetime('now', '-3 days', 'localtime')
group by servers.ip ) as max_con_3d
(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
where ip.ip=hostname.ip
and ip.ip=avg_sess_1h.ip
@ -2104,8 +2103,8 @@ def select_smon(user_group, **kwargs):
http = kwargs.get('proto')+':'+kwargs.get('uri')
except:
http = ''
sql = """select id, ip, port, en, http, body, telegram_channel_id, `desc`, `group`, user_group, slack_channel_id from smon
where ip='%s' and port='%s' and http='%s' and body='%s' %s
sql = """select id, ip, port, en, http, body, telegram_channel_id, `desc`, `group`, user_group, slack_channel_id from smon
where ip='%s' and port='%s' and http='%s' and body='%s' %s
""" % (kwargs.get('ip'), kwargs.get('port'), http, body, user_group)
elif kwargs.get('action') == 'add':
sql = """select id, ip, port, en, http, body, telegram_channel_id, `desc`, `group`, user_group, slack_channel_id from smon
@ -2193,7 +2192,6 @@ def select_en_service():
return query_res
def select_status(smon_id):
try:
query_res = SMON.get(SMON.id == smon_id).status
@ -2316,16 +2314,14 @@ def response_time(time, smon_id):
def smon_list(user_group):
if user_group == 1:
query = (SMON.select(SMON.ip, SMON.port,SMON.status,SMON.en,SMON.desc,SMON.response_time,SMON.time_state,
SMON.group,SMON.script,SMON.http,SMON.http_status,SMON.body,SMON.body_status)
.order_by(SMON.group)
)
query = (SMON.select(SMON.ip, SMON.port, SMON.status, SMON.en, SMON.desc, SMON.response_time, SMON.time_state,
SMON.group, SMON.script, SMON.http, SMON.http_status, SMON.body, SMON.body_status)
.order_by(SMON.group))
else:
query = (SMON.select(SMON.ip, SMON.port, SMON.status, SMON.en, SMON.desc, SMON.response_time, SMON.time_state,
SMON.group, SMON.script, SMON.http, SMON.http_status, SMON.body, SMON.body_status)
.where(SMON.user_group == user_group)
.order_by(SMON.group)
)
.order_by(SMON.group))
try:
query_res = query.execute()
@ -2511,7 +2507,7 @@ def delete_ports(serv):
def insert_port_scanner_history(serv, port, port_status, service_name):
try:
PortScannerHistory.insert(serv=serv, port=port, status=port_status, service_name=service_name,
date=funct.get_data('regular')).execute()
date=funct.get_data('regular')).execute()
except Exception as e:
out_error(e)
@ -2621,7 +2617,7 @@ def add_server_aws(region, instance_type, public_ip, floating_ip, volume_size, s
return False
def add_server_gcore(project ,region, instance_type, network_type, network_name, volume_size, ssh_key_name, name, os,
def add_server_gcore(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):
try:
ProvisionedServers.insert(region=region, instance_type=instance_type, public_ip=network_type, network_name=network_name,
@ -2655,7 +2651,7 @@ def select_aws_server(server_id):
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))
.where(prov_serv.id == server_id))
try:
query_res = query.execute()
except Exception as e:
@ -2766,7 +2762,7 @@ def update_server_do(size, privet_net, floating_ip, ssh_ids, ssh_name, oss, fire
group, status, server_id):
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,
os=oss, firewall=firewall, monitoring=monitoring, backup=backup,
provider_id=provider,
group_id=group, status=status).where(ProvisionedServers.id == server_id)
try:
@ -2792,9 +2788,9 @@ def select_provisioned_servers(**kwargs):
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)
.where((prov_serv.name == kwargs.get('new')) &
(prov_serv.group_id == kwargs.get('group')) &
(prov_serv.type == kwargs.get('type'))))
.where((prov_serv.name == kwargs.get('new')) &
(prov_serv.group_id == kwargs.get('group')) &
(prov_serv.type == kwargs.get('type'))))
else:
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,
@ -3226,6 +3222,7 @@ def insert_new_git(server_id, service_id, repo, branch, period, cred, descriptio
else:
return True
def select_gits(**kwargs):
if kwargs.get("server_id") is not None and kwargs.get("service_id") is not None:
query = GitSetting.select().where((GitSetting.server_id == kwargs.get("server_id")) & (GitSetting.service_id == kwargs.get("service_id")))