mirror of https://github.com/Aidaho12/haproxy-wi
parent
a5370ccde0
commit
8d615e9a51
26
app/add.py
26
app/add.py
|
@ -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:
|
||||
|
|
105
app/create_db.py
105
app/create_db.py
|
@ -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 = """
|
||||
|
|
128
app/funct.py
128
app/funct.py
|
@ -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):
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
|
@ -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)
|
||||
|
|
|
@ -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'"
|
||||
|
|
161
app/sql.py
161
app/sql.py
|
@ -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")))
|
||||
|
|
Loading…
Reference in New Issue