Pavel Loginov 2022-05-25 11:42:12 +03:00
parent c016f706f1
commit 4a2c235480
3 changed files with 108 additions and 82 deletions

View File

@ -10,9 +10,9 @@ 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-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'
):
return server_from_request
if re.match(ip_regex, server_from_request):
@ -713,11 +713,11 @@ def install_haproxy(server_ip, **kwargs):
syn_flood_protect = '1' if kwargs.get('syn_flood') == "1" else ''
commands = [
"chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv +
" SOCK_PORT=" + hap_sock_p + " STAT_PORT=" + stats_port + " STAT_FILE=" + server_state_file + " DOCKER=" + docker +
" SSH_PORT=" + ssh_port + " STATS_USER=" + stats_user + " CONT_NAME=" + container_name + " HAP_DIR=" + haproxy_dir +
" STATS_PASS='" + stats_password + "' HAPVER=" + haproxy_ver + " SYN_FLOOD=" + syn_flood_protect +
" HOST=" + server_ip + " USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name
"chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv + " SOCK_PORT=" + hap_sock_p
+ " STAT_PORT=" + stats_port + " STAT_FILE=" + server_state_file + " DOCKER=" + docker
+ " SSH_PORT=" + ssh_port + " STATS_USER=" + stats_user + " CONT_NAME=" + container_name + " HAP_DIR=" + haproxy_dir
+ " STATS_PASS='" + stats_password + "' HAPVER=" + haproxy_ver + " SYN_FLOOD=" + syn_flood_protect
+ " HOST=" + server_ip + " USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name
]
output, error = subprocess_execute(commands[0])
@ -757,9 +757,9 @@ def waf_install(server_ip):
proxy_serv = ''
commands = [
"chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv + " HAPROXY_PATH=" + haproxy_dir +
" VERSION='" + ver + "' SSH_PORT=" + ssh_port + " HOST=" + server_ip +
" USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name
"chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv + " HAPROXY_PATH=" + haproxy_dir
+ " VERSION='" + ver + "' SSH_PORT=" + ssh_port + " HOST=" + server_ip
+ " USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name
]
output, error = subprocess_execute(commands[0])
@ -806,10 +806,10 @@ def install_nginx(server_ip, **kwargs):
syn_flood_protect = '1' if form.getvalue('syn_flood') == "1" else ''
commands = [
"chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv + " STATS_USER=" + stats_user +
" STATS_PASS='" + stats_password + "' SSH_PORT=" + ssh_port + " CONFIG_PATH=" + config_path + " CONT_NAME=" + container_name +
" STAT_PORT=" + stats_port + " STAT_PAGE=" + stats_page + " SYN_FLOOD=" + syn_flood_protect + " DOCKER=" + docker + " nginx_dir=" + nginx_dir +
" HOST=" + server_ip + " USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name
"chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv + " STATS_USER=" + stats_user
+ " STATS_PASS='" + stats_password + "' SSH_PORT=" + ssh_port + " CONFIG_PATH=" + config_path + " CONT_NAME=" + container_name
+ " STAT_PORT=" + stats_port + " STAT_PAGE=" + stats_page + " SYN_FLOOD=" + syn_flood_protect + " DOCKER=" + docker
+ " nginx_dir=" + nginx_dir + " HOST=" + server_ip + " USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name
]
output, error = subprocess_execute(commands[0])
@ -1753,9 +1753,11 @@ def get_system_info(server_ip: str) -> bool:
ip = i['configuration']['ip']
except Exception:
ip = ''
network[i['logicalname']] = {'description': i['description'],
'mac': i['serial'],
'ip': ip}
network[i['logicalname']] = {
'description': i['description'],
'mac': i['serial'],
'ip': ip
}
for k, j in i.items():
if isinstance(j, list):
for b in j:

View File

@ -608,7 +608,7 @@ if act == "overview":
try:
waf_len = len(waf)
except:
except Exception:
waf_len = 0
if haproxy == 1:
@ -693,7 +693,7 @@ if act == "overviewwaf":
metrics_en = sql.select_waf_metrics_enable_server(server[2])
try:
waf_len = len(waf)
except:
except Exception:
waf_len = 0
if waf_len >= 1:
@ -940,7 +940,7 @@ if serv is not None and act == "showMap":
node = node + ":" + bind[0]
node = node.split('\n')[0]
sections['listens'][node] = {'servers': dict()}
except Exception as e:
except Exception:
pass
if "server " in line or "use_backend" in line or "default_backend" in line and "stats" not in line and "#" not in line:
@ -960,17 +960,17 @@ if serv is not None and act == "showMap":
try:
backend_server_port = line_new2[1].strip(' \t\n\r')
backend_server_port = 'port: ' + backend_server_port
except Exception as e:
except Exception:
backend_server_port = ''
try:
sections['listens'][node]['servers'][line_new[0]] = {line_new[0]: backend_server_port}
except Exception as e:
except Exception:
pass
try:
sections['backends'][node]['servers'][line_new[0]] = {line_new[0]: backend_server_port}
except Exception as e:
except Exception:
pass
os.system("/bin/rm -f " + cfg)
@ -1180,7 +1180,7 @@ if serv is not None and act == "configShow":
service = form.getvalue('service')
try:
config_file_name = form.getvalue('config_file_name').replace('/', '92')
except:
except Exception:
config_file_name = ''
if service == 'keepalived':
@ -1240,7 +1240,7 @@ if act == 'configShowFiles':
service_config_dir = sql.get_setting(service+'_dir')
try:
config_file_name = form.getvalue('config_file_name').replace('92', '/')
except:
except Exception:
config_file_name = ''
return_files = funct.get_remote_files(serv, service_config_dir, 'conf')
if 'error: ' in return_files:
@ -1510,11 +1510,13 @@ if form.getvalue('haproxy_exp_install'):
else:
proxy_serv = ''
commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv +
" STAT_PORT=" + str(stats_port) + " STAT_FILE=" + server_state_file +
" SSH_PORT=" + ssh_port + " STAT_PAGE=" + stat_page + " VER=" + ver + " EXP_PROM=" + ext_prom +
" STATS_USER=" + stats_user + " STATS_PASS='" + stats_password + "' HOST=" + serv +
" USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name]
commands = [
"chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv
+ " STAT_PORT=" + str(stats_port) + " STAT_FILE=" + server_state_file
+ " SSH_PORT=" + ssh_port + " STAT_PAGE=" + stat_page + " VER=" + ver + " EXP_PROM=" + ext_prom
+ " STATS_USER=" + stats_user + " STATS_PASS='" + stats_password + "' HOST=" + serv
+ " USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name
]
output, error = funct.subprocess_execute(commands[0])
@ -1549,10 +1551,12 @@ if form.getvalue('nginx_exp_install'):
else:
proxy_serv = ''
commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv +
" STAT_PORT=" + str(stats_port) + " SSH_PORT=" + ssh_port + " STAT_PAGE=" + stats_page +
" STATS_USER=" + stats_user + " STATS_PASS='" + stats_password + "' HOST=" + serv + " VER=" + ver +
" EXP_PROM=" + ext_prom + " USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name]
commands = [
"chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv
+ " STAT_PORT=" + str(stats_port) + " SSH_PORT=" + ssh_port + " STAT_PAGE=" + stats_page
+ " STATS_USER=" + stats_user + " STATS_PASS='" + stats_password + "' HOST=" + serv + " VER=" + ver
+ " EXP_PROM=" + ext_prom + " USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name
]
output, error = funct.subprocess_execute(commands[0])
@ -1583,8 +1587,11 @@ if form.getvalue('node_exp_install'):
else:
proxy_serv = ''
commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv + " SSH_PORT=" + ssh_port + " VER=" + ver +
" EXP_PROM=" + ext_prom + " HOST=" + serv + " USER=" + ssh_user_name + " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name]
commands = [
"chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv + " SSH_PORT=" + ssh_port
+ " VER=" + ver + " EXP_PROM=" + ext_prom + " HOST=" + serv + " USER=" + ssh_user_name
+ " PASS='" + ssh_user_password + "' KEY=" + ssh_key_name
]
output, error = funct.subprocess_execute(commands[0])
@ -1624,9 +1631,11 @@ if form.getvalue('backup') or form.getvalue('deljob') or form.getvalue('backupup
os.system("cp scripts/%s ." % script)
commands = ["chmod +x " + script + " && ./" + script + " HOST=" + rserver + " SERVER=" + serv +
" TYPE=" + backup_type + " SSH_PORT=" + ssh_port + " TIME=" + time +
" RPATH=" + rpath + " DELJOB=" + deljob + " USER=" + str(ssh_user_name) + " KEY=" + str(ssh_key_name)]
commands = [
"chmod +x " + script + " && ./" + script + " HOST=" + rserver + " SERVER=" + serv
+ " TYPE=" + backup_type + " SSH_PORT=" + ssh_port + " TIME=" + time
+ " RPATH=" + rpath + " DELJOB=" + deljob + " USER=" + str(ssh_user_name) + " KEY=" + str(ssh_key_name)
]
output, error = funct.subprocess_execute(commands[0])
@ -1645,8 +1654,9 @@ if form.getvalue('backup') or form.getvalue('deljob') or form.getvalue('backupup
env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
template = env.get_template('new_backup.html')
template = template.render(backups=sql.select_backups(server=serv, rserver=rserver),
sshs=sql.select_ssh())
template = template.render(
backups=sql.select_backups(server=serv, rserver=rserver), sshs=sql.select_ssh()
)
print(template)
print('success: Backup job has been created')
funct.logging('backup ', ' a new backup job for server ' + serv + ' has been created', haproxywi=1, login=1)
@ -1697,10 +1707,12 @@ if form.getvalue('git_backup'):
if branch is None or branch == '0':
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)]
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)
]
output, error = funct.subprocess_execute(commands[0])
@ -1714,8 +1726,10 @@ if form.getvalue('git_backup'):
break
else:
if deljob == '0':
if sql.insert_new_git(server_id=server_id, service_id=service_id, repo=repo, branch=branch,
period=period, cred=cred, description=description):
if sql.insert_new_git(
server_id=server_id, service_id=service_id, repo=repo, branch=branch,
period=period, cred=cred, description=description
):
from jinja2 import Environment, FileSystemLoader
gits = sql.select_gits(server_id=server_id, service_id=service_id)
@ -2234,7 +2248,7 @@ if form.getvalue('newserver') is not None:
if funct.is_service_active(ip, 'firewalld'):
sql.update_firewall(ip)
except:
except Exception:
pass
try:
@ -3260,8 +3274,10 @@ if form.getvalue('awsvars') or form.getvalue('awseditvars'):
cmd = 'cd scripts/terraform/ && sudo ansible-playbook var_generator.yml -i inventory -e "region={} ' \
'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)
'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
)
output, stderr = funct.subprocess_execute(cmd)
if stderr != '':
@ -3303,9 +3319,10 @@ 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)
'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
)
output, stderr = funct.subprocess_execute(cmd)
if stderr != '':
print('error: ' + stderr)
@ -3355,8 +3372,10 @@ if form.getvalue('doworkspace'):
sql.update_provisioning_server_error(stderr, group, workspace, provider)
print('error: ' + stderr)
else:
if sql.add_server_do(region, size, privet_net, floating_ip, ssh_ids, ssh_name, workspace, oss, firewall, monitoring,
backup, provider, group, 'Creating'):
if sql.add_server_do(
region, size, privet_net, floating_ip, ssh_ids, ssh_name, workspace, oss, firewall, monitoring,
backup, provider, group, 'Creating'
):
from jinja2 import Environment, FileSystemLoader
@ -3365,12 +3384,10 @@ if form.getvalue('doworkspace'):
env = Environment(extensions=["jinja2.ext.do"], loader=FileSystemLoader('templates'))
template = env.get_template('ajax/provisioning/provisioned_servers.html')
template = template.render(servers=new_server,
groups=sql.select_groups(),
user_group=group,
providers=sql.select_providers(group),
role=role,
adding=1)
template = template.render(
servers=new_server, groups=sql.select_groups(), user_group=group,
providers=sql.select_providers(group), role=role, adding=1
)
print(template)
if form.getvalue('doeditworkspace'):
@ -3388,8 +3405,10 @@ if form.getvalue('doeditworkspace'):
monitoring = form.getvalue('do_edit_monitoring')
firewall = form.getvalue('do_edit_firewall')
server_id = form.getvalue('server_id')
if sql.update_server_do(size, privet_net, floating_ip, ssh_ids, ssh_name, oss, firewall, monitoring, backup, provider,
group, 'Creating', server_id):
if sql.update_server_do(
size, privet_net, floating_ip, ssh_ids, ssh_name, oss, firewall, monitoring, backup, provider,
group, 'Creating', server_id
):
cmd = 'cd scripts/terraform/ && sudo terraform workspace select ' + workspace + '_' + group + '_do'
output, stderr = funct.subprocess_execute(cmd)
@ -3448,8 +3467,10 @@ if form.getvalue('awsworkspace'):
sql.update_provisioning_server_error(stderr, group, workspace, provider)
print('error: ' + stderr)
else:
if sql.add_server_aws(region, size, public_ip, floating_ip, volume_size, ssh_name, workspace, oss, firewall,
provider, group, 'Creating', delete_on_termination, volume_type):
if sql.add_server_aws(
region, size, public_ip, floating_ip, volume_size, ssh_name, workspace, oss, firewall,
provider, group, 'Creating', delete_on_termination, volume_type
):
from jinja2 import Environment, FileSystemLoader
@ -3458,12 +3479,10 @@ if form.getvalue('awsworkspace'):
env = Environment(extensions=["jinja2.ext.do"], loader=FileSystemLoader('templates'))
template = env.get_template('ajax/provisioning/provisioned_servers.html')
template = template.render(servers=new_server,
groups=sql.select_groups(),
user_group=group,
providers=sql.select_providers(group),
role=role,
adding=1)
template = template.render(
servers=new_server, groups=sql.select_groups(), user_group=group,
providers=sql.select_providers(group), role=role, adding=1
)
print(template)
if form.getvalue('awseditworkspace'):
@ -3482,8 +3501,10 @@ if form.getvalue('awseditworkspace'):
public_ip = form.getvalue('aws_editing_public_ip')
server_id = form.getvalue('server_id')
if sql.update_server_aws(region, size, public_ip, floating_ip, volume_size, ssh_name, workspace, oss, firewall,
provider, group, 'Editing', server_id, delete_on_termination, volume_type):
if sql.update_server_aws(
region, size, public_ip, floating_ip, volume_size, ssh_name, workspace, oss, firewall,
provider, group, 'Editing', server_id, delete_on_termination, volume_type
):
try:
cmd = 'cd scripts/terraform/ && sudo terraform workspace select ' + workspace + '_' + group + '_aws'

View File

@ -2632,9 +2632,10 @@ def add_provider_aws(provider_name, provider_group, provider_key, provider_secre
def add_provider_gcore(provider_name, provider_group, provider_user, provider_pass):
try:
ProvidersCreds.insert(name=provider_name, type='gcore', group=provider_group, key=provider_user,
secret=provider_pass, create_date=funct.get_data('regular'),
edit_date=funct.get_data('regular')).execute()
ProvidersCreds.insert(
name=provider_name, type='gcore', group=provider_group, key=provider_user,
secret=provider_pass, create_date=funct.get_data('regular'), edit_date=funct.get_data('regular')
).execute()
return True
except Exception as e:
out_error(e)
@ -3172,8 +3173,9 @@ def select_remote_path_from_version(server_ip: str, service: str, local_path: st
return query_res
def insert_system_info(server_id: int, os_info: str, sys_info: str, cpu: str, ram: str, network: str,
disks: str) -> bool:
def insert_system_info(
server_id: int, os_info: str, sys_info: str, cpu: str, ram: str, network: str, disks: str
) -> bool:
try:
SystemInfo.insert(
server_id=server_id, os_info=os_info, sys_info=sys_info, cpu=cpu, ram=ram, network=network, disks=disks
@ -3326,9 +3328,10 @@ def select_user_all():
def insert_new_git(server_id, service_id, repo, branch, period, cred, description):
try:
GitSetting.insert(server_id=server_id, service_id=service_id, repo=repo, branch=branch, period=period,
cred_id=cred,
description=description).execute()
GitSetting.insert(
server_id=server_id, service_id=service_id, repo=repo, branch=branch, period=period,
cred_id=cred, description=description
).execute()
except Exception as e:
out_error(e)
return False