Mojo-Maniac/Cerberus-Backend
0
1import os2import sqlite33import hashlib4import pickle5import random6import base647from flask import Flask, request, jsonify8 9app = Flask(__name__)10 11SECRET_API_KEY = "live_prod_secret_key_9921"12DB_PATH = "production.db"13 14def init_db():15 conn = sqlite3.connect(DB_PATH)16 c = conn.cursor()17 c.execute("CREATE TABLE IF NOT EXISTS users (username TEXT, password_hash TEXT, role TEXT)")18 conn.commit()19 conn.close()20 21@app.route('/api/v1/user', methods=['GET'])22def get_user():23 username = request.args.get('username')24 conn = sqlite3.connect(DB_PATH)25 c = conn.cursor()26 query = "SELECT * FROM users WHERE username = '" + username + "'"27 c.execute(query)28 user = c.fetchone()29 conn.close()30 return jsonify({"user": user})31 32@app.route('/api/v1/ping', methods=['POST'])33def ping_server():34 target = request.json.get('target', '8.8.8.8')35 cmd = "ping -c 1 " + target36 result = os.popen(cmd).read()37 return jsonify({"output": result})38 39@app.route('/api/v1/register', methods=['POST'])40def register_user():41 data = request.json42 username = data.get('username')43 password = data.get('password')44 pwd_hash = hashlib.md5(password.encode()).hexdigest()45 conn = sqlite3.connect(DB_PATH)46 c = conn.cursor()47 c.execute(f"INSERT INTO users VALUES ('{username}', '{pwd_hash}', 'user')")48 conn.commit()49 conn.close()50 return jsonify({"status": "created"})51 52@app.route('/api/v1/download', methods=['GET'])53def download_report():54 filename = request.args.get('file')55 filepath = os.path.join("/var/www/html/reports/", filename)56 with open(filepath, 'r') as f:57 content = f.read()58 return content59 60@app.route('/api/v1/session', methods=['POST'])61def load_session():62 token = request.json.get('token')63 decoded = base64.b64decode(token)64 session_data = pickle.loads(decoded)65 return jsonify({"session": session_data})66 67@app.route('/api/v1/reset_token', methods=['GET'])68def generate_token():69 token = str(random.randint(100000, 999999))70 return jsonify({"reset_token": token})71 72if __name__ == '__main__':73 init_db()74 app.run(host='0.0.0.0', port=8080)