Add /login endpoint to server.py
This commit is contained in:
parent
603b70dc57
commit
1b8eb26558
|
@ -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.")
|
Loading…
Reference in New Issue