Add /login endpoint to server.py

This commit is contained in:
Ceda EI 2019-05-24 15:38:04 +05:30
parent 603b70dc57
commit 1b8eb26558
2 changed files with 56 additions and 0 deletions

3
.flake8 Normal file
View File

@ -0,0 +1,3 @@
[flake8]
per-file-ignores =
./server.py:B901,E722

53
server.py Normal file
View File

@ -0,0 +1,53 @@
#!/usr/bin/env python3
import subprocess
import json
import os
import bcrypt
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def en_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 config["matrix"]["enabled"]:
from backends import matrix
try:
matrix.send(config["matrix"], message)
except:
pass
if config["telegram"]["enabled"]:
from backends import telegram
try:
telegram.send(config["telegram"], message)
except:
pass
return ("Logged In. The ssh key will be added " + str(config["days"]) +
" day(s) later.")