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})