from flask import Flask, request, jsonify, render_template import json import os from datetime import datetime import secrets import string import auth DATA_FILE = 'folder_secret_config.json' # Secret alphabet ALPHABET = string.ascii_letters + string.digits @auth.require_admin def load_data(): with open(DATA_FILE) as f: try: data = json.load(f) print(f"Loaded {len(data)} records from {DATA_FILE}.") return data except: print(f"Error loading {DATA_FILE}. File may be empty or corrupted.") return [] @auth.require_admin def save_data(data): with open(DATA_FILE, 'w') as f: json.dump(data, f, indent=4) @auth.require_admin def folder_secret_config_editor(): return render_template('folder_secret_config_editor.html', alphabet=ALPHABET, admin_enabled=auth.is_admin()) @auth.require_admin def folder_secret_config_data(): return jsonify(load_data()) @auth.require_admin def folder_secret_config_action(): p = request.get_json() data = load_data() action = p.get('action') if action == 'delete': data = [r for r in data if r['secret'] != p['secret']] elif action == 'update': old = p['oldSecret']; new = p['newSecret'] for i, r in enumerate(data): if r['secret'] == old: r['secret'] = new r['validity'] = datetime.strptime(p['validity'], '%Y-%m-%d').strftime('%d.%m.%Y') r['folders'] = p['folders'] break else: # append if not found data.append({ 'secret': new, 'validity': datetime.strptime(p['validity'], '%Y-%m-%d').strftime('%d.%m.%Y'), 'folders': p['folders'] }) save_data(data) return jsonify(success=True)