84 lines
2.2 KiB
Python
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})
|
|
|
|
|