files
This commit is contained in:
83
server.py
Normal file
83
server.py
Normal file
@@ -0,0 +1,83 @@
|
||||
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})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user