#!/usr/bin/env python3 "Server for the-long-night" import subprocess import json import os import bcrypt from flask import Flask, request app = Flask(__name__) @app.route('/login', methods=['POST']) def en_login(): "/login" try: password = request.values['password'] except KeyError: return "Missing password", 400 with open('config.json') as f: config = json.load(f) if not bcrypt.checkpw(password.encode(), config["password"].encode()): return "Unauthorized", 401 if os.path.isfile(os.path.expanduser('~/.the-long-night-pid')): return "Already logged in" with open(os.path.expanduser('~/.the-long-night-pid'), 'w') as f: x = subprocess.Popen(["python3", "background.py"], start_new_session=True) f.write(str(x.pid)) message = ("The correct password has been entered in The-Long-Night. " "The ssh key will be added " + str(config["days"]) + " days " "later. To prevent that from happenning, login to your server " "and run `cancel-adding-key.sh` in The Long Night installation" "directory.") if "matrix" in config and config["matrix"]["enabled"]: from backends import matrix try: matrix.send(config["matrix"], message) except: pass if "telegram" in config and config["telegram"]["enabled"]: from backends import telegram try: telegram.send(config["telegram"], message) except: pass if "email" in config and config["email"]["enabled"]: from backends import mail try: mail.send(config["email"], message) except: pass return ("Logged In. The ssh key will be added " + str(config["days"]) + " day(s) later.") @app.route('/') def en_root(): "/" return """ The Long Night

The Long Night


Source """