magcms/prosopopee/utils.py

53 lines
1.6 KiB
Python
Raw Normal View History

2016-02-18 06:44:12 +01:00
import sys
2017-10-04 00:44:47 +02:00
import base64
from subprocess import check_output
from path import Path
from jinja2 import Environment, FileSystemLoader
2016-02-18 06:44:12 +01:00
2017-10-04 01:02:45 +02:00
from builtins import str
2016-02-18 06:44:12 +01:00
2016-04-18 14:27:28 +02:00
class bcolors:
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
2016-04-18 19:41:51 +02:00
2016-02-18 06:44:12 +01:00
def error(test, error_message):
if test:
return
2016-04-18 20:00:50 +02:00
sys.stderr.write(bcolors.FAIL + "Abort: " + bcolors.ENDC + error_message)
2016-02-18 06:44:12 +01:00
sys.stderr.write("\n")
sys.exit(1)
2016-04-18 14:27:28 +02:00
2016-04-18 19:41:51 +02:00
2016-04-18 14:27:28 +02:00
def warning(logging, warning_message):
2016-04-18 20:00:50 +02:00
sys.stderr.write("%s%s: %s%s" % (bcolors.WARNING, logging, bcolors.ENDC, warning_message))
2016-04-18 14:27:28 +02:00
sys.stderr.write("\n")
2016-04-18 19:41:51 +02:00
2016-04-18 14:27:28 +02:00
def okgreen(logging, ok_message):
2016-04-18 20:00:50 +02:00
sys.stderr.write("%s%s: %s%s" % (bcolors.OKGREEN, logging, bcolors.ENDC, ok_message))
2016-04-18 14:27:28 +02:00
sys.stderr.write("\n")
2017-10-04 00:44:47 +02:00
2017-10-04 00:52:03 +02:00
def makeform(template, settings, gallery_settings):
2017-10-04 00:44:47 +02:00
from_template = template.get_template("form.html")
form = base64.b64encode(from_template.render(settings=settings, gallery=gallery_settings).encode("Utf-8"))
return str(form, 'utf-8')
2017-10-04 00:52:03 +02:00
def encrypt(password, template, gallery_path, settings, gallery_settings):
2017-10-04 00:44:47 +02:00
encrypted_template = template.get_template("encrypted.html")
index_plain = Path("build").joinpath(gallery_path, "index.html")
2019-09-25 10:46:02 +02:00
encrypted = check_output('cat %s | openssl enc -e -base64 -A -aes-256-cbc -md md5 -pass pass:"%s"' % (index_plain, password), shell=True)
2017-10-04 00:44:47 +02:00
html = encrypted_template.render(
settings=settings,
form=makeform(template, settings, gallery_settings),
ciphertext=str(encrypted, 'utf-8'),
gallery=gallery_settings,
).encode("Utf-8")
return html