diff --git a/api/api_funct.py b/api/api_funct.py index b387b331..67aa1b8e 100644 --- a/api/api_funct.py +++ b/api/api_funct.py @@ -1,7 +1,7 @@ import os import sys import json -from bottle import route, run, hook, response, request, post +from bottle import request sys.path.append(os.path.join(sys.path[0], '/var/www/haproxy-wi/app/')) import sql @@ -99,10 +99,10 @@ def check_permit_to_server(server_id, service='haproxy'): servers = sql.select_servers(id_hostname=server_id) token = request.headers.get('token') login, group_id = sql.get_username_groupid_from_api_token(token) - - for s in servers: + + for s in servers: server = sql.get_dick_permit(username=login, group_id=group_id, ip=s[2], token=token, service=service) - + return server @@ -125,9 +125,9 @@ def get_server(server_id, service): if service != 'apache' and service != 'nginx' and service != 'haproxy' and service != 'keepalived': return dict(status='wrong service') data = {} - try: + try: servers = check_permit_to_server(server_id, service=service) - + for s in servers: data = { 'server_id': s[0], @@ -171,9 +171,7 @@ def get_status(server_id, service): apache_stats_port = sql.get_setting('apache_stats_port') apache_stats_page = sql.get_setting('apache_stats_page') cmd = "curl -s -u %s:%s http://%s:%s/%s?auto |grep 'ServerVersion\|Processes\|ServerUptime:'" % \ - ( - apache_stats_user, apache_stats_password, s[2], apache_stats_port, apache_stats_page - ) + (apache_stats_user, apache_stats_password, s[2], apache_stats_port, apache_stats_page) servers_with_status = list() try: out = funct.subprocess_execute(cmd) @@ -191,7 +189,6 @@ def get_status(server_id, service): except Exception as e: data = {server_id: {"error": "Cannot get status: " + str(e)}} - except Exception: data = {server_id: {"error": "Cannot find the server"}} return dict(error=data) @@ -206,19 +203,19 @@ def get_all_statuses(): token = request.headers.get('token') login, group_id = sql.get_username_groupid_from_api_token(token) sock_port = sql.get_setting('haproxy_sock_port') - - for s in servers: + + for s in servers: servers = sql.get_dick_permit(username=login, group_id=group_id, token=token) - + for s in servers: cmd = 'echo "show info" |nc %s %s -w 1|grep -e "Ver\|CurrConns\|Maxco\|MB\|Uptime:"' % (s[2], sock_port) - data[s[2]] = {} + data[s[2]] = {} out = funct.subprocess_execute(cmd) data[s[2]] = return_dict_from_out(s[1], out[0]) except Exception: data = {"error": "Cannot find the server"} return dict(error=data) - + return dict(status=data) @@ -231,7 +228,6 @@ def actions(server_id, action, service): try: servers = check_permit_to_server(server_id, service=service) - for s in servers: if service == 'apache': service = funct.get_correct_apache_service_name(server_ip=s[2]) @@ -239,7 +235,7 @@ def actions(server_id, action, service): error = funct.ssh_command(s[2], cmd) done = error if error else 'done' - data = {'server_id':s[0],'ip':s[2],'action':action,'hostname':s[1],'status':done} + data = {'server_id':s[0], 'ip':s[2], 'action':action, 'hostname':s[1], 'status':done} return dict(status=data) except Exception as e: @@ -282,7 +278,7 @@ def show_backends(server_id): data = {server_id: {"error": "Cannot find the server"}} return dict(error=data) - return dict(backends=data) + return dict(backends=data) def get_config(server_id, **kwargs): @@ -324,7 +320,7 @@ def get_section(server_id): out = funct.get_config(s[2], cfg) start_line, end_line, config_read = funct.get_section_from_config(cfg, section_name) - data = {server_id: {section_name:{'start_line':start_line, 'end_line':end_line, 'config_read':config_read}}} + data = {server_id: {section_name:{'start_line': start_line, 'end_line': end_line, 'config_read': config_read}}} return dict(section=data) @@ -363,8 +359,10 @@ def edit_section(server_id): os.system("/bin/cp %s %s" % (cfg, cfg_for_save)) out = funct.master_slave_upload_and_restart(ip, cfg, save, login=login) funct.logging('localhost', " section " + section_name + " has been edited via API", login=login) - funct.logging(ip, 'Section ' + section_name + ' has been edited via API', haproxywi=1, login=login, - keep_history=1, service='haproxy') + funct.logging( + ip, 'Section ' + section_name + ' has been edited via API', haproxywi=1, + login=login, keep_history=1, service='haproxy' + ) if out: return_mess = out @@ -432,8 +430,9 @@ def upload_config(server_id, **kwargs): out = funct.master_slave_upload_and_restart(ip, cfg, save, login=login) funct.logging('localhost', " config has been uploaded via API", login=login) - funct.logging(ip, 'Config has been uploaded via API', haproxywi=1, login=login, - keep_history=1, service=service_name) + funct.logging( + ip, 'Config has been uploaded via API', haproxywi=1, login=login, keep_history=1, service=service_name + ) if out: return_mess = out @@ -488,7 +487,7 @@ def add_to_config(server_id): data[server_id] = {"error": "cannot find the server"} return dict(error=data) - return dict(config=data) + return dict(config=data) def show_log(server_id): @@ -570,7 +569,7 @@ def add_acl(server_id): except Exception as e: status = str(e) - data = {'acl':status} + data = {'acl': status} return dict(data) diff --git a/app/funct.py b/app/funct.py index a42c92a3..9c790b51 100644 --- a/app/funct.py +++ b/app/funct.py @@ -607,7 +607,7 @@ def get_backends_from_config(server_ip, backends=''): format_cfg = 'cfg' try: - cfg = configs_dir+get_files(dir=configs_dir, format=format_cfg)[0] + cfg = configs_dir + get_files(dir=configs_dir, format=format_cfg)[0] except Exception as e: logging('localhost', str(e), haproxywi=1) try: @@ -660,12 +660,12 @@ def show_installation_output(error, output, service): print('error: ' + error) return False else: - for l in output: - if "UNREACHABLE" in l: - print(l + '
') - if "Traceback" in l or "FAILED" in l or "error" in l or "ERROR" in l: + for line in output: + if "UNREACHABLE" in line: + print(line + '
') + if ("Traceback", "FAILED", "error", "ERROR") in line: try: - print(l) + print(line) break except Exception: print(output) diff --git a/app/options.py b/app/options.py index 4478d229..0901c5ee 100644 --- a/app/options.py +++ b/app/options.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- - import os import sys + import funct import sql @@ -10,14 +10,16 @@ form = funct.form serv = funct.is_ip_or_dns(form.getvalue('serv')) act = form.getvalue("act") -if (form.getvalue('new_metrics') or - form.getvalue('new_http_metrics') or - form.getvalue('new_waf_metrics') or - form.getvalue('new_nginx_metrics') or - form.getvalue('metrics_hapwi_ram') or - form.getvalue('metrics_hapwi_cpu') or - form.getvalue('getoption') or - form.getvalue('getsavedserver')): +if ( + form.getvalue('new_metrics') + or form.getvalue('new_http_metrics') + or form.getvalue('new_waf_metrics') + or form.getvalue('new_nginx_metrics') + or form.getvalue('metrics_hapwi_ram') + or form.getvalue('metrics_hapwi_cpu') + or form.getvalue('getoption') + or form.getvalue('getsavedserver') +): print('Content-type: application/json\n') else: print('Content-type: text/html\n') @@ -670,8 +672,10 @@ if act == "overviewwaf": import http.cookies from jinja2 import Environment, FileSystemLoader - env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True, - extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do']) + env = Environment( + loader=FileSystemLoader('templates/ajax'), autoescape=True, + extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'] + ) template = env.get_template('overivewWaf.html') servers = sql.select_servers(server=serv) @@ -1236,8 +1240,8 @@ if serv is not None and act == "configShow": if act == 'configShowFiles': service = form.getvalue('service') - config_dir = funct.get_config_var('configs', service+'_save_configs_dir') - service_config_dir = sql.get_setting(service+'_dir') + config_dir = funct.get_config_var('configs', service + '_save_configs_dir') + service_config_dir = sql.get_setting(service + '_dir') try: config_file_name = form.getvalue('config_file_name').replace('92', '/') except Exception: @@ -1246,7 +1250,7 @@ if act == 'configShowFiles': if 'error: ' in return_files: print(return_files) sys.exit() - return_files += ' ' + sql.get_setting(service+'_config_path') + return_files += ' ' + sql.get_setting(service + '_config_path') from jinja2 import Environment, FileSystemLoader env = Environment(loader=FileSystemLoader('templates/'), autoescape=True) @@ -1257,7 +1261,7 @@ if act == 'configShowFiles': if act == 'showRemoteLogFiles': service = form.getvalue('service') - log_path = sql.get_setting(service+'_path_logs') + log_path = sql.get_setting(service + '_path_logs') return_files = funct.get_remote_files(serv, log_path, 'log') if 'error: ' in return_files: print(return_files) @@ -1312,7 +1316,7 @@ if form.getvalue('master'): group_id = sql.get_group_id_by_server_ip(master) cred_id = sql.get_cred_id_by_server_ip(master) hostname = sql.get_hostname_by_server_ip(master) - sql.add_server(hostname+'-VIP', IP, group_id, '1', '1', '0', cred_id, ssh_port, 'VRRP IP for '+master, haproxy, nginx, '0') + sql.add_server(hostname + '-VIP', IP, group_id, '1', '1', '0', cred_id, ssh_port, 'VRRP IP for '+master, haproxy, nginx, '0') if form.getvalue('master_slave'): master = form.getvalue('master_slave') @@ -1466,10 +1470,10 @@ if form.getvalue('install_grafana'): print( 'success: Grafana and Prometheus servers were installed. You can find Grafana on http://' + socket.gethostname() + ':3000
') else: - for l in output: - if "Traceback" in l or "FAILED" in l: + for line in output: + if ("Traceback", "FAILED") in line: try: - print(l) + print(line) break except Exception: print(output) @@ -1639,10 +1643,10 @@ if form.getvalue('backup') or form.getvalue('deljob') or form.getvalue('backupup output, error = funct.subprocess_execute(commands[0]) - for l in output: - if "Traceback" in l or "FAILED" in l: + for line in output: + if ("Traceback", "FAILED") in line: try: - print('error: ' + l) + print('error: ' + line) break except Exception: print('error: ' + output) @@ -1716,10 +1720,10 @@ if form.getvalue('git_backup'): output, error = funct.subprocess_execute(commands[0]) - for l in output: - if "Traceback" in l or "FAILED" in l: + for line in output: + if ("Traceback", "FAILED") in line: try: - print('error: ' + l) + print('error: ' + line) break except Exception: print('error: ' + output) @@ -1740,8 +1744,10 @@ if form.getvalue('git_backup'): template = template.render(gits=gits, sshs=sshs, servers=servers, services=services, new_add=1) print(template) print('success: Git job has been created') - funct.logging(server_ip, ' A new git job has been created', haproxywi=1, login=1, - keep_history=1, service=service_name) + funct.logging( + server_ip, ' A new git job has been created', haproxywi=1, login=1, + keep_history=1, service=service_name + ) else: if sql.delete_git(form.getvalue('git_backup')): print('Ok') @@ -2077,8 +2083,8 @@ if form.getvalue('bwlists_delete'): if form.getvalue('get_lists'): list_path = os.path.dirname(os.getcwd()) + "/" + sql.get_setting('lists_path') + "/" + form.getvalue('group') + "/" + form.getvalue('color') lists = funct.get_files(dir=list_path, format="lst") - for l in lists: - print(l) + for list in lists: + print(list) if form.getvalue('get_ldap_email'): username = form.getvalue('get_ldap_email') @@ -2860,12 +2866,12 @@ if form.getvalue('lets_domain'): funct.logging('localhost', error, haproxywi=1) print(error) else: - for l in output: - if "msg" in l or "FAILED" in l: + for line in output: + if "msg" in line or "FAILED" in line: try: - l = l.split(':')[1] - l = l.split('"')[1] - print(l + "
") + line = line.split(':')[1] + line = line.split('"')[1] + print(line + "
") break except Exception: print(output) @@ -3052,7 +3058,7 @@ if form.getvalue('nettools_icmp_server_from'): output = funct.ssh_command(server_from, action_for_sending, raw=1) if stderr != '': - print('error: '+stderr) + print('error: ' + stderr) sys.exit() for i in output: if i == ' ' or i == '': @@ -3123,7 +3129,7 @@ if form.getvalue('nettools_nslookup_server_from'): output = funct.ssh_command(server_from, action_for_sending, raw=1) if stderr != '': - print('error: '+stderr[5:-1]) + print('error: ' + stderr[5:-1]) sys.exit() count_string = 0 print('The ' + dns_name + ' domain has the following records:') @@ -3230,7 +3236,7 @@ if form.getvalue('awsinit') or form.getvalue('doinit') or form.getvalue('gcorein cmd = 'cd scripts/terraform/ && sudo terraform init -upgrade -no-color' output, stderr = funct.subprocess_execute(cmd) if stderr != '': - print('error: '+stderr) + print('error: ' + stderr) else: if "Terraform initialized in an empty directory" in output[0]: print('error: There is not need modules') @@ -3275,9 +3281,9 @@ if form.getvalue('awsvars') or form.getvalue('awseditvars'): 'group={} size={} os={} floating_ip={} volume_size={} server_name={} AWS_ACCESS_KEY={} ' \ 'AWS_SECRET_KEY={} firewall={} public_ip={} ssh_name={} delete_on_termination={} volume_type={} ' \ 'cloud=aws"'.format( - region, group, size, oss, floating_ip, volume_size, awsvars, aws_key, aws_secret, - firewall, public_ip, ssh_name, delete_on_termination, volume_type - ) + region, group, size, oss, floating_ip, volume_size, awsvars, aws_key, aws_secret, + firewall, public_ip, ssh_name, delete_on_termination, volume_type + ) output, stderr = funct.subprocess_execute(cmd) if stderr != '': @@ -3320,9 +3326,9 @@ if form.getvalue('dovars') or form.getvalue('doeditvars'): cmd = 'cd scripts/terraform/ && sudo ansible-playbook var_generator.yml -i inventory -e "region={} ' \ 'group={} size={} os={} floating_ip={} ssh_ids={} server_name={} token={} backup={} monitoring={} ' \ 'privet_net={} firewall={} floating_ip={} ssh_name={} cloud=do"'.format( - region, group, size, oss, floating_ip, ssh_ids, dovars, token, backup, monitoring, - privet_net, firewall, floating_ip, ssh_name - ) + region, group, size, oss, floating_ip, ssh_ids, dovars, token, backup, monitoring, + privet_net, firewall, floating_ip, ssh_name + ) output, stderr = funct.subprocess_execute(cmd) if stderr != '': print('error: ' + stderr) @@ -3338,7 +3344,7 @@ if form.getvalue('dovalidate') or form.getvalue('doeditvalidate'): workspace = form.getvalue('doeditvalidate') group = form.getvalue('do_edit_group') - cmd = 'cd scripts/terraform/ && sudo terraform plan -no-color -input=false -target=module.do_module -var-file vars/' + workspace + '_'+group+'_do.tfvars' + cmd = 'cd scripts/terraform/ && sudo terraform plan -no-color -input=false -target=module.do_module -var-file vars/' + workspace + '_' + group + '_do.tfvars' output, stderr = funct.subprocess_execute(cmd) if stderr != '': print('error: ' + stderr) @@ -3433,7 +3439,7 @@ if form.getvalue('awsvalidate') or form.getvalue('awseditvalidate'): workspace = form.getvalue('awseditvalidate') group = form.getvalue('aws_edit_group') - cmd = 'cd scripts/terraform/ && sudo terraform plan -no-color -input=false -target=module.aws_module -var-file vars/' + workspace + '_'+group+'_aws.tfvars' + cmd = 'cd scripts/terraform/ && sudo terraform plan -no-color -input=false -target=module.aws_module -var-file vars/' + workspace + '_' + group + '_aws.tfvars' output, stderr = funct.subprocess_execute(cmd) if stderr != '': print('error: ' + stderr) @@ -3575,7 +3581,7 @@ if ( cloud = 'gcore' state_name = 'gcore_instance' - tfvars = workspace + '_'+group+'_' + cloud + '.tfvars' + tfvars = workspace + '_' + group + '_' + cloud + '.tfvars' cmd = 'cd scripts/terraform/ && sudo terraform apply -auto-approve -no-color -input=false -target=module.' + cloud + '_module -var-file vars/' + tfvars output, stderr = funct.subprocess_execute(cmd) @@ -3586,7 +3592,7 @@ if ( stderr = stderr.replace("\'", "") sql.update_provisioning_server_status('Error', group, workspace, provider_id) sql.update_provisioning_server_error(stderr, group, workspace, provider_id) - print('error: '+stderr) + print('error: ' + stderr) else: if cloud == 'aws': cmd = 'cd scripts/terraform/ && sudo terraform state show module.aws_module.aws_eip.floating_ip[0]|grep -Eo "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"' @@ -3607,7 +3613,7 @@ if ( if cloud == 'gcore': cmd = 'cd scripts/terraform/ && sudo terraform state show module.gcore_module.gcore_instance.hapwi|grep "name"|grep -v -e "_name\|name_" |head -1 |awk -F"\\\"" \'{print $2}\'' output, stderr = funct.subprocess_execute(cmd) - print(':'+output[0]) + print(':' + output[0]) sql.update_provisioning_server_gcore_name(workspace, output[0], group, provider_id) funct.logging('localhost', 'Server ' + workspace + ' has been ' + action, provisioning=1) @@ -3634,7 +3640,7 @@ if form.getvalue('provisiningdestroyserver'): sql.update_provisioning_server_error(stderr, group, workspace, provider_id) print('error: ' + stderr) else: - cmd = 'cd scripts/terraform/ && sudo terraform destroy -auto-approve -no-color -target=module.'+cloud_type+'_module -var-file vars/' + tf_workspace + '.tfvars' + cmd = 'cd scripts/terraform/ && sudo terraform destroy -auto-approve -no-color -target=module.' + cloud_type + '_module -var-file vars/' + tf_workspace + '.tfvars' output, stderr = funct.subprocess_execute(cmd) if stderr != '': @@ -3701,7 +3707,7 @@ if form.getvalue('gcorevalidate') or form.getvalue('gcoreeditvalidate'): workspace = form.getvalue('gcoreeditvalidate') group = form.getvalue('gcore_edit_group') - cmd = 'cd scripts/terraform/ && sudo terraform plan -no-color -input=false -target=module.gcore_module -var-file vars/' + workspace + '_'+group+'_gcore.tfvars' + cmd = 'cd scripts/terraform/ && sudo terraform plan -no-color -input=false -target=module.gcore_module -var-file vars/' + workspace + '_' + group + '_gcore.tfvars' output, stderr = funct.subprocess_execute(cmd) if stderr != '': print('error: ' + stderr) @@ -3736,8 +3742,10 @@ if form.getvalue('gcoreworkspace'): sql.update_provisioning_server_error(stderr, group, workspace, provider) print('error: ' + stderr) else: - if sql.add_server_gcore(project, region, size, network_type, network_name, volume_size, ssh_name, workspace, oss, firewall, - provider, group, 'Creating', delete_on_termination, volume_type): + if sql.add_server_gcore( + project, region, size, network_type, network_name, volume_size, ssh_name, workspace, oss, firewall, + provider, group, 'Creating', delete_on_termination, volume_type + ): from jinja2 import Environment, FileSystemLoader @@ -3771,8 +3779,10 @@ if form.getvalue('gcoreeditworkspace'): network_name = form.getvalue('gcore_edit_network_name') server_id = form.getvalue('server_id') - if sql.update_server_gcore(region, size, network_type, network_name, volume_size, ssh_name, workspace, oss, firewall, - provider, group, 'Editing', server_id, delete_on_termination, volume_type, project): + if sql.update_server_gcore( + region, size, network_type, network_name, volume_size, ssh_name, workspace, oss, firewall, + provider, group, 'Editing', server_id, delete_on_termination, volume_type, project + ): try: cmd = 'cd scripts/terraform/ && sudo terraform workspace select ' + workspace + '_' + group + '_gcore' diff --git a/app/sql.py b/app/sql.py index db477c6e..2918c936 100755 --- a/app/sql.py +++ b/app/sql.py @@ -305,8 +305,7 @@ def update_hapwi_server(server_id, alert, metrics, active, service_name): def update_server( - hostname, group, typeip, enable, master, server_id, cred, port, desc, haproxy, nginx, apache, - firewall, protected + hostname, group, typeip, enable, master, server_id, cred, port, desc, haproxy, nginx, apache, firewall, protected ): try: server_update = Server.update( @@ -597,7 +596,7 @@ def get_api_token(token): def get_user_id_by_api_token(token): query = (User.select(User.user_id).join(ApiToken, on=( - ApiToken.user_name == User.username + ApiToken.user_name == User.username )).where(ApiToken.token == token)) try: query_res = query.execute() @@ -703,9 +702,10 @@ def get_user_id_by_username(username: str): def get_user_role_by_uuid(uuid): - query = (Role.select(Role.role_id).join(User, on=(Role.name == User.role)).join(UUID, on=( - User.user_id == UUID.user_id - )).where(UUID.uuid == uuid)) + query = ( + Role.select(Role.role_id).join(User, on=(Role.name == User.role)).join( + UUID, on=(User.user_id == UUID.user_id) + ).where(UUID.uuid == uuid)) try: query_res = query.execute() except Exception as e: @@ -2780,9 +2780,9 @@ def update_provisioning_server_status(status, user_group_id, name, provider_id, ) else: query = ProvisionedServers.update(status=status).where( - (ProvisionedServers.name == name) & - (ProvisionedServers.group_id == user_group_id) & - (ProvisionedServers.provider_id == provider_id) + (ProvisionedServers.name == name) + & (ProvisionedServers.group_id == user_group_id) + & (ProvisionedServers.provider_id == provider_id) ) try: query.execute() @@ -2882,9 +2882,9 @@ def select_provisioned_servers(**kwargs): 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')) + (prov_serv.name == kwargs.get('new')) + & (prov_serv.group_id == kwargs.get('group')) + & (prov_serv.type == kwargs.get('type')) ) ) else: