Server migration

This commit is contained in:
Luca Sorace "Stranck 2024-02-13 13:29:03 +01:00
parent 165c9d6bb5
commit 7574a9d356
5 changed files with 68 additions and 18 deletions

1
.gitignore vendored
View File

@ -168,3 +168,4 @@ diomerdas
furizon.net/site/* furizon.net/site/*
furizon.net.zip furizon.net.zip
stuff/secrets.py stuff/secrets.py
backups/*

23
app.py
View File

@ -1,7 +1,7 @@
from sanic import Sanic, response, exceptions from sanic import Sanic, response, exceptions
from sanic.response import text, html, redirect, raw from sanic.response import text, html, redirect, raw
from jinja2 import Environment, FileSystemLoader from jinja2 import Environment, FileSystemLoader
from time import time from time import time, sleep
import httpx import httpx
from os.path import join from os.path import join
from ext import * from ext import *
@ -12,6 +12,8 @@ from io import BytesIO
from asyncio import Queue from asyncio import Queue
from messages import LOCALES from messages import LOCALES
import sqlite3 import sqlite3
import requests
import sys
from sanic.log import logger, logging from sanic.log import logger, logging
app = Sanic(__name__) app = Sanic(__name__)
@ -185,4 +187,21 @@ async def logout(request):
raise exceptions.Forbidden("You have been logged out.") raise exceptions.Forbidden("You have been logged out.")
if __name__ == "__main__": if __name__ == "__main__":
app.run(host="0.0.0.0", port=8188, dev=DEV_MODE, access_log=ACCESS_LOG) # Wait for pretix in server reboot
# Using a docker configuration, pretix may be unable to talk with postgres if postgres' service started before it.
# To fix this issue I added a After=pretix.service to the [Unit] section of /lib/systemd/system/postgresql@.service
# to let it start in the correct order. The following piece of code makes sure that pretix is running and can talk to
# postgres before actually starting the reserved area, since this operation requires a cache-fill in startup
print("Waiting for pretix to be up and running", file=sys.stderr)
while True:
print("Trying connecting to pretix...", file=sys.stderr)
try:
res = requests.get(base_url_event, headers=headers)
res = res.json()
if(res['slug'] == EVENT_NAME):
break
except:
pass
sleep(5)
print("Connected to pretix!", file=sys.stderr)
app.run(host="127.0.0.1", port=8188, dev=DEV_MODE, access_log=ACCESS_LOG)

View File

@ -94,21 +94,6 @@
#clock {display:block;} #clock {display:block;}
</style> </style>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://y.foxo.me/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '2']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head> </head>
<body> <body>
<div class="containedBg"></div> <div class="containedBg"></div>

View File

@ -3,4 +3,5 @@ sanic-ext
httpx httpx
Pillow Pillow
aztec_code_generator aztec_code_generator
jinja2 Jinja2
Requests

44
stuff/runBackup.py Normal file
View File

@ -0,0 +1,44 @@
#!/usr/bin/python
from os import listdir, remove
from os.path import isfile, join
import datetime
import subprocess
PRETIX_BACKUP = False
WEBINT_BACKUP = False
BACKUP_DIR_PRETIX = "/home/pretix/backups/"
BACKUP_DIR_WEBINT = "/home/webint/backups/"
MAX_FILE_NO = 14
COMMAND_PRETIX_POSTGRES = "pg_dump -F p pretix | gzip > %s" # Restore with psql -f %s
COMMAND_PRETIX_DATA = "tar -cf %s /var/pretix-data" # Restore with tar -xvf %s. To make .secret readable I used setfacl -m u:pretix:r /var/pretix-data/.secret
COMMAND_WEBINT = "tar -cf %s /home/webint/furizon_webint" # Restore with tar -xvf %s
def deleteOlder(path : str, prefix : str, postfix : str):
backupFileNames = sorted([f for f in listdir(path) if (isfile(join(path, f)) and f.startswith(prefix) and f.endswith(postfix))])
while(len(backupFileNames) > MAX_FILE_NO):
print(f"Removing {backupFileNames[0]}")
remove(join(path, backupFileNames[0]))
backupFileNames.pop(0)
def genFileName(prefix : str, postfix : str):
return prefix + "_" + datetime.datetime.now(datetime.UTC).strftime('%Y%m%d-%H%M%S') + "_" + postfix
def runBackup(prefix : str, postfix : str, path : str, command : str):
deleteOlder(path, prefix, postfix)
name = join(path, genFileName(prefix, postfix))
process = subprocess.Popen(command % name, shell=True)
process.wait()
if(PRETIX_BACKUP):
runBackup("pretix_postres", "backup.sql.gz", join(BACKUP_DIR_PRETIX, "postgres"), COMMAND_PRETIX_POSTGRES)
runBackup("pretix_data", "backup.tar.gz", join(BACKUP_DIR_PRETIX, "data"), COMMAND_PRETIX_DATA)
if(WEBINT_BACKUP):
runBackup("webint_full", "backup.tar.gz", BACKUP_DIR_WEBINT, COMMAND_WEBINT)