removed absolute file paths from app.py. added relative filepath check

This commit is contained in:
gashapwn 2020-11-28 05:09:54 +00:00
parent da3a6cefd5
commit d91eaf17d7
2 changed files with 37 additions and 23 deletions

56
app.py
View File

@ -17,17 +17,15 @@ from flask import Flask, redirect, url_for, render_template, request
# or # or
# gasahwpn on irc.lainchan.org # gasahwpn on irc.lainchan.org
app=Flask(__name__) app=Flask(__name__)
# Paths for conf file, # Paths for conf file,
# user list, # user list,
# directory containing # directory containing
# account request files... # account request files...
WORKING_DIR = "/home/gashapwn/lyadmin/"; ACCOUNT_PATH = "./req/";
ACCOUNT_DIR = "req/"; CONF_FN = "lyadmin.conf.json"
FULL_PATH = str(WORKING_DIR) + str(ACCOUNT_DIR) CONF_PATH = "./" + str(CONF_FN)
CONF_PATH = str(WORKING_DIR) + "lyadmin.conf.json"
# validation stuff # validation stuff
MAX_PUB_KEY_LEN = 5000 MAX_PUB_KEY_LEN = 5000
@ -39,18 +37,6 @@ KEY_REGEX = "^[ -~]+$"
# id number # id number
INIT_REQ_ID = "00000" INIT_REQ_ID = "00000"
# Slurp the conf file
with open(CONF_PATH) as c: conf_json_str = c.read()
conf_obj = json.loads(conf_json_str)
# A list of all the shell enums
conf_obj["shell_tup_list"] = list(map(
lambda k : (
k, conf_obj["shell"][k]
),
list(conf_obj["shell"].keys())
))
# The main home page # The main home page
@app.route("/") @app.route("/")
def home(): def home():
@ -199,21 +185,22 @@ def signup():
# The below picks the next ID based on # The below picks the next ID based on
# how many requests we already have saved # how many requests we already have saved
# to disk # to disk
if(len(glob.glob(ACCOUNT_DIR + str("[0-9]*ident*"))) == 0): if(len(glob.glob(ACCOUNT_PATH + str("[0-9]*ident*"))) == 0):
new_id = int(INIT_REQ_ID) new_id = int(INIT_REQ_ID)
new_id_str = INIT_REQ_ID new_id_str = INIT_REQ_ID
else: else:
max_id = max( max_id = max(
list(map( list(map(
lambda path : path.split("/")[-1].split(".")[0], lambda path : path.split("/")[-1].split(".")[0],
glob.glob(str(ACCOUNT_DIR) + "[0-9]*ident*"))) glob.glob(str(ACCOUNT_PATH) + "[0-9]*ident*")))
) )
zpad = len(max_id) zpad = len(max_id)
new_id = int(max_id)+1 new_id = int(max_id)+1
new_id_str = str(new_id).zfill(zpad) new_id_str = str(new_id).zfill(zpad)
# write the request to disk # write the request to disk
fn1 = str(FULL_PATH) + str(new_id_str) + ".ident" # fn1 = str(FULL_PATH) + str(new_id_str) + ".ident"
fn1 = str(ACCOUNT_PATH) + str(new_id_str) + ".ident"
with open(fn1, "w") as ident_file: with open(fn1, "w") as ident_file:
ident_file.write(str(username) + "\n") ident_file.write(str(username) + "\n")
ident_file.write(str(email) + "\n") ident_file.write(str(email) + "\n")
@ -227,8 +214,35 @@ def signup():
def get_site_name(): def get_site_name():
return {"site_name": conf_obj["site_name"]} return {"site_name": conf_obj["site_name"]}
if __name__=="__main__": def check_pwd_for_conf():
pwd_file_list = list(map(
lambda path : path.split("/")[-1],
glob.glob("*")
))
if(not CONF_FN in pwd_file_list):
print("could not find " + str(CONF_PATH))
print("please run in the installation directory")
return False
return True
# MAIN STARTS HERE
if(__name__=="__main__" and check_pwd_for_conf()):
# Slurp the conf file
with open(CONF_PATH) as c: conf_json_str = c.read()
conf_obj = json.loads(conf_json_str)
# A global list of all the shell enums
conf_obj["shell_tup_list"] = list(map(
lambda k : (
k, conf_obj["shell"][k]
),
list(conf_obj["shell"].keys())
))
# Setup URL rules
app.add_url_rule('/rules', 'rules', rules) app.add_url_rule('/rules', 'rules', rules)
app.add_url_rule('/req', 'req', req, methods = ['POST', 'GET']) app.add_url_rule('/req', 'req', req, methods = ['POST', 'GET'])
app.add_url_rule('/req/signup', 'signup', signup, methods = ['POST']) app.add_url_rule('/req/signup', 'signup', signup, methods = ['POST'])
# Run that app!
app.run(host=conf_obj["listen_ip"],debug=True) app.run(host=conf_obj["listen_ip"],debug=True)

View File

@ -1,5 +1,5 @@
{ {
"site_name": "lingy.in", "site_name": "tildezero.xyz",
"listen_ip": "127.0.0.1", "listen_ip": "127.0.0.1",
"shell": { "shell": {
"SHELL_BASH": "/usr/local/bin/bash", "SHELL_BASH": "/usr/local/bin/bash",