Files
mr_propre/server.py
2021-12-11 17:58:32 +01:00

84 lines
2.2 KiB
Python

import os
from pathlib import Path
from flask import Flask, jsonify, request
# logger.info("loaded server file")
from flask_apscheduler import APScheduler
from clean_dirs import clean_triage, remove_empty_dirs
from config import ROOT, KEY, PROTECTED
from logzero import logfile, logger
logfile("/data/mr_propre/server.log", maxBytes=1e6, backupCount=3)
# set configuration values
class Config:
SCHEDULER_API_ENABLED = True
app = Flask(__name__)
app.config.from_object(Config())
# initialize scheduler
scheduler = APScheduler()
# if you don't wanna use a config, you can set options here:
# scheduler.api_enabled = True
scheduler.init_app(app)
@scheduler.task('interval', id='do_job_1', minutes=10, misfire_grace_time=900)
def job1():
print('ok')
logger.info('clean_triage')
try:
clean_triage(logger)
except Exception as e:
print(e.args)
logger.info('empty_dirs')
# print('2')
try:
remove_empty_dirs(logger)
except Exception as e:
print(e.args)
scheduler.start()
@app.route("/what_do_you_need/", methods=["POST"])
def hello_world():
data = request.json
key = data.pop("key", "")
client = data.pop("host", "")
logger.info(f"{request.remote_addr} requested what do you need")
if key == KEY and client in ["bacchus","demeter"]:
print()
print()
print()
print("--- WELCOME", client, "---")
print()
resp = ""
for ur, size in data.items():
# print(ur)
tp = Path(ROOT + ur)
if tp.is_file() and not [x for x in PROTECTED if x in tp.parents]:
# print("file", ur)
if tp.stat().st_size == size:
print("XXXXX", ur)
logger.info(f"removed {tp}")
os.remove(tp)
resp += "\ndeleted : " + ur
else:
print("PARTIAL", ur)
resp += "\nkept : " + ur
else:
# print('is dir',ur)
pass
return resp or "RAS"
else:
print("nope")
return "nope"
@app.route("/ip", methods=["GET"])
def test():
return jsonify({"ip": request.remote_addr})