Overhaul logging and do database creation
* print_log() now accepts a True/False to decide if a message should be printed * Pass the config['DEBUG'] boolean to some of the print_log statements * Add timestamps to log messages * Change the source levels on some log messages to something more fitting * Add a time_only option to the date/time string generator (Not sure why I even kept the old option but meh) * Implement a "better than nothing" database-creation sequence
This commit is contained in:
parent
09e5769373
commit
e798886b7d
|
@ -1,18 +1,30 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import time
|
import time
|
||||||
|
|
||||||
# TODO: I dunno, but there's gotta be a better way to do this crap
|
# TODO: I dunno, but there's gotta be a better way to do this crap. This is way too messy
|
||||||
def print_log(source, message):
|
|
||||||
if source == "Main":
|
|
||||||
print('\033[92m' + source + ': \033[0m' + message)
|
|
||||||
elif source == "Notice":
|
|
||||||
print('\033[93m' + source + ': \033[0m' + message)
|
|
||||||
elif source == "Warning":
|
|
||||||
print('\033[91m' + source + ': \033[0m' + message)
|
|
||||||
elif source == "Web":
|
|
||||||
print('\033[95m' + source + ': \033[0m' + message)
|
|
||||||
else:
|
|
||||||
print('\033[94m' + source + ': \033[0m' + message)
|
|
||||||
|
|
||||||
def time_to_string(unixtime):
|
# Some messages pass a True or False as should_print depending on config variables
|
||||||
return datetime.fromtimestamp(unixtime).strftime('%B %d, %Y (%H:%M - ' + time.tzname[time.daylight] + ')')
|
# Default to true, but return doing nothing if they pass a False.
|
||||||
|
def print_log(source, message, should_print=True):
|
||||||
|
if should_print == False:
|
||||||
|
return
|
||||||
|
|
||||||
|
if source == "Main":
|
||||||
|
print('\033[92m', current_time(), source.center(8, '-'), ': \033[0m', message)
|
||||||
|
elif source == "Notice":
|
||||||
|
print('\033[93m', current_time(), source.center(8, '-'), ': \033[0m', message)
|
||||||
|
elif source == "Warning":
|
||||||
|
print('\033[91m', current_time(), source.center(8, '-'), ': \033[0m', message)
|
||||||
|
elif source == "Web":
|
||||||
|
print('\033[95m', current_time(), source.center(8, '-'), ': \033[0m', message)
|
||||||
|
else:
|
||||||
|
print('\033[94m', current_time(), source.center(8, '-'), ': \033[0m', message)
|
||||||
|
|
||||||
|
def current_time():
|
||||||
|
return time_to_string(time.time(), True)
|
||||||
|
|
||||||
|
def time_to_string(unixtime, time_only = False):
|
||||||
|
if time_only:
|
||||||
|
return datetime.fromtimestamp(unixtime).strftime('[%H:%M:%S - ' + time.tzname[time.daylight] + ']')
|
||||||
|
else:
|
||||||
|
return datetime.fromtimestamp(unixtime).strftime('%B %d, %Y (%H:%M:%S - ' + time.tzname[time.daylight] + ')')
|
||||||
|
|
26
run.py
26
run.py
|
@ -24,12 +24,21 @@ app = Flask(__name__)
|
||||||
print_log('Main', 'Running in "' + os.getcwd() + '"')
|
print_log('Main', 'Running in "' + os.getcwd() + '"')
|
||||||
print_log('Main', 'Checking for data folder')
|
print_log('Main', 'Checking for data folder')
|
||||||
if not os.path.exists(config['UPLOAD_FOLDER']):
|
if not os.path.exists(config['UPLOAD_FOLDER']):
|
||||||
print_log('Main', 'Data folder not found, creating')
|
print_log('Warning', 'Data folder not found, creating')
|
||||||
os.makedirs(config['UPLOAD_FOLDER'])
|
os.makedirs(config['UPLOAD_FOLDER'])
|
||||||
|
if not os.path.exists('files.db'):
|
||||||
|
print_log('Warning', 'Database not found, attempting to create')
|
||||||
|
os.system('sqlite3 files.db < schema.sql')
|
||||||
|
if not os.path.exists('files.db'):
|
||||||
|
print_log('Warning', 'Could not create database. Is sqlite3 available?')
|
||||||
|
quit()
|
||||||
|
else:
|
||||||
|
print_log('Notice', 'Database created')
|
||||||
if config["EXTENDED_DEBUG"] == False:
|
if config["EXTENDED_DEBUG"] == False:
|
||||||
log = logging.getLogger('werkzeug')
|
log = logging.getLogger('werkzeug')
|
||||||
log.setLevel(logging.ERROR)
|
log.setLevel(logging.ERROR)
|
||||||
|
|
||||||
|
print_debug = config["DEBUG"]
|
||||||
|
|
||||||
def cleaner_thread():
|
def cleaner_thread():
|
||||||
# Call itself again after the interval
|
# Call itself again after the interval
|
||||||
|
@ -42,11 +51,11 @@ def cleaner_thread():
|
||||||
|
|
||||||
|
|
||||||
def delete_old():
|
def delete_old():
|
||||||
print_log('Notice', 'Cleaner running')
|
print_log('Thread', 'Cleaner running', print_debug)
|
||||||
targetTime = time.time() - config["TIME"]
|
targetTime = time.time() - config["TIME"]
|
||||||
old = db.get_old_files(targetTime)
|
old = db.get_old_files(targetTime)
|
||||||
for file in old:
|
for file in old:
|
||||||
print_log('Notice', 'Removing old file "' + file["file"] + '"')
|
print_log('Thread', 'Removing old file "' + file["file"] + '"')
|
||||||
try:
|
try:
|
||||||
os.remove(os.path.join(config["UPLOAD_FOLDER"], file["file"]))
|
os.remove(os.path.join(config["UPLOAD_FOLDER"], file["file"]))
|
||||||
except Exception:
|
except Exception:
|
||||||
|
@ -63,7 +72,7 @@ def allowed_file(filename):
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
if config["BLACKLIST"]:
|
if config["BLACKLIST"]:
|
||||||
return '.' in filename and filename.rsplit('.', 1)[1] not in config["BANNED_EXTENSIONS"]
|
return '.' in filename and filename.rsplit('.', 1)[1] not in config["BANNED_EXTENSIONS"]
|
||||||
else:
|
else:
|
||||||
return '.' in filename and filename.rsplit('.', 1)[1] in config["ALLOWED_EXTENSIONS"]
|
return '.' in filename and filename.rsplit('.', 1)[1] in config["ALLOWED_EXTENSIONS"]
|
||||||
|
|
||||||
|
@ -71,7 +80,7 @@ def allowed_file(filename):
|
||||||
@app.route('/', methods=['GET', 'POST'])
|
@app.route('/', methods=['GET', 'POST'])
|
||||||
def upload_file():
|
def upload_file():
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
print_log('Web', 'New file received')
|
print_log('Main', 'New file received', print_debug)
|
||||||
if not application.basicauth(request.headers.get('X-Hyozan-Auth'), config["KEY"]):
|
if not application.basicauth(request.headers.get('X-Hyozan-Auth'), config["KEY"]):
|
||||||
abort(403)
|
abort(403)
|
||||||
data = dict()
|
data = dict()
|
||||||
|
@ -85,7 +94,7 @@ def upload_file():
|
||||||
|
|
||||||
thread1 = Thread(target = db.add_file, args = (filename,))
|
thread1 = Thread(target = db.add_file, args = (filename,))
|
||||||
thread1.start()
|
thread1.start()
|
||||||
print_log('Thread', 'Adding to DB')
|
print_log('Thread', 'Adding file to DB', print_debug)
|
||||||
file.save(os.path.join(config['UPLOAD_FOLDER'], filename))
|
file.save(os.path.join(config['UPLOAD_FOLDER'], filename))
|
||||||
thread1.join()
|
thread1.join()
|
||||||
|
|
||||||
|
@ -104,6 +113,7 @@ def upload_file():
|
||||||
|
|
||||||
# Return Web UI if we have a GET request
|
# Return Web UI if we have a GET request
|
||||||
elif request.method == 'GET':
|
elif request.method == 'GET':
|
||||||
|
print_log('Web', 'Hit upload page')
|
||||||
return render_template('upload.html', page=config["SITE_DATA"])
|
return render_template('upload.html', page=config["SITE_DATA"])
|
||||||
|
|
||||||
# Def all the static pages
|
# Def all the static pages
|
||||||
|
@ -149,7 +159,7 @@ def no_permission(e):
|
||||||
|
|
||||||
@app.route('/<filename>', methods=['GET'])
|
@app.route('/<filename>', methods=['GET'])
|
||||||
def get_file(filename):
|
def get_file(filename):
|
||||||
print_log('Web', 'Hit "' + filename + '" - ' + time_to_string(time.time()))
|
print_log('Web', 'Hit "' + filename + '"')
|
||||||
try:
|
try:
|
||||||
db.update_file(filename)
|
db.update_file(filename)
|
||||||
except Exception:
|
except Exception:
|
||||||
|
@ -170,7 +180,7 @@ def nginx_error(error):
|
||||||
|
|
||||||
if config["DELETE_FILES"]:
|
if config["DELETE_FILES"]:
|
||||||
cleaner_thread()
|
cleaner_thread()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
app.run(
|
app.run(
|
||||||
port=config["PORT"],
|
port=config["PORT"],
|
||||||
|
|
Loading…
Reference in New Issue