mirror of https://github.com/Aidaho12/haproxy-wi
80 lines
2.6 KiB
Python
80 lines
2.6 KiB
Python
import os
|
|
|
|
from jinja2 import Environment, FileSystemLoader
|
|
|
|
import modules.db.sql as sql
|
|
import modules.server.ssh as ssh_mod
|
|
import modules.server.server as server_mod
|
|
import modules.roxywi.common as roxywi_common
|
|
|
|
|
|
def backup(serv, rpath, time, backup_type, rserver, cred, deljob, update, description) -> None:
|
|
script = 'backup.sh'
|
|
ssh_settings = ssh_mod.return_ssh_keys_path('localhost', id=cred)
|
|
|
|
if deljob:
|
|
time = ''
|
|
rpath = ''
|
|
backup_type = ''
|
|
elif update:
|
|
deljob = ''
|
|
else:
|
|
deljob = ''
|
|
if sql.check_exists_backup(serv):
|
|
print(f'warning: Backup job for {serv} already exists')
|
|
return None
|
|
|
|
os.system(f"cp scripts/{script} .")
|
|
|
|
commands = [
|
|
f"chmod +x {script} && ./{script} HOST={rserver} SERVER={serv} TYPE={backup_type} SSH_PORT={ssh_settings['port']} "
|
|
f"TIME={time} RPATH={rpath} DELJOB={deljob} USER={ssh_settings['user']} KEY={ssh_settings['key']}"
|
|
]
|
|
|
|
output, error = server_mod.subprocess_execute(commands[0])
|
|
|
|
for line in output:
|
|
if any(s in line for s in ("Traceback", "FAILED")):
|
|
try:
|
|
print(f'error: {line}')
|
|
break
|
|
except Exception:
|
|
print(f'error: {output}')
|
|
break
|
|
else:
|
|
if not deljob and not update:
|
|
if sql.insert_backup_job(serv, rserver, rpath, backup_type, time, cred, description):
|
|
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()
|
|
)
|
|
print(template)
|
|
print('success: Backup job has been created')
|
|
roxywi_common.logging('backup ', f' a new backup job for server {serv} has been created', roxywi=1,
|
|
login=1)
|
|
else:
|
|
print('error: Cannot add the job into DB')
|
|
elif deljob:
|
|
sql.delete_backups(deljob)
|
|
print('Ok')
|
|
roxywi_common.logging('backup ', f' a backup job for server {serv} has been deleted', roxywi=1, login=1)
|
|
elif update:
|
|
sql.update_backup(serv, rserver, rpath, backup_type, time, cred, description, update)
|
|
print('Ok')
|
|
roxywi_common.logging('backup ', f' a backup job for server {serv} has been updated', roxywi=1, login=1)
|
|
|
|
os.remove(script)
|
|
|
|
|
|
def create_s3_backup() -> None:
|
|
...
|
|
|
|
|
|
def delete_s3_backup() -> None:
|
|
...
|
|
|
|
|
|
def show_s3_backup():
|
|
...
|