Athspi / app.py
Artificial-superintelligence's picture
Update app.py
2a6bd1c verified
raw
history blame
3.88 kB
from flask import Flask, request, jsonify, render_template, send_from_directory
import os
import subprocess
import tempfile
import shutil
import sys
app = Flask(__name__)
# Create a temporary directory for operations
temp_dir = tempfile.mkdtemp()
current_dir = temp_dir
def execute_command(command, cwd=None):
"""Executes a command and returns the output."""
process = subprocess.Popen(
command,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
cwd=cwd or current_dir
)
stdout, stderr = process.communicate()
return stdout + stderr
@app.route("/")
def index():
return render_template("index.html")
@app.route("/execute", methods=["POST"])
def execute_code():
global current_dir
command = request.json.get("code", "").strip()
if not command:
return jsonify({"result": "Error: No command provided."})
try:
if command == "show files":
files = os.listdir(current_dir)
return jsonify({"result": "Files in current directory:\n" + "\n".join(files)})
elif command == "hide files":
return jsonify({"result": "Files hidden."})
elif command.startswith("new file "):
filename = command[9:].strip()
filepath = os.path.join(current_dir, filename)
with open(filepath, 'w') as f:
pass # Create an empty file
return jsonify({"result": f"Created new file: {filename}"})
elif command.startswith("edit "):
filename = command[5:].strip()
filepath = os.path.join(current_dir, filename)
if os.path.exists(filepath):
return jsonify({"result": "Enter code:", "action": "edit", "filename": filename})
else:
return jsonify({"result": f"Error: File {filename} not found."})
elif command.startswith("cd "):
new_dir = os.path.join(current_dir, command[3:])
if os.path.isdir(new_dir):
current_dir = os.path.abspath(new_dir)
return jsonify({"result": f"Changed directory to: {current_dir}"})
else:
return jsonify({"result": f"Error: Directory not found: {new_dir}"})
elif command.startswith("!"):
result = execute_command(command[1:])
elif command.startswith("pip install"):
result = execute_command(f"{sys.executable} -m {command}")
elif command.startswith("git "):
result = execute_command(command)
else:
if command.endswith(".py"):
result = execute_command(f"{sys.executable} {command}")
else:
result = execute_command(f"{sys.executable} -c \"{command}\"")
return jsonify({"result": result})
except Exception as e:
return jsonify({"result": f"Error: {str(e)}"})
@app.route("/save_file", methods=["POST"])
def save_file():
filename = request.json.get("filename")
content = request.json.get("content")
filepath = os.path.join(current_dir, filename)
with open(filepath, 'w') as f:
f.write(content)
return jsonify({"result": f"File {filename} saved successfully."})
@app.route("/cleanup", methods=["POST"])
def cleanup():
global temp_dir, current_dir
if os.path.exists(temp_dir):
shutil.rmtree(temp_dir)
temp_dir = tempfile.mkdtemp()
current_dir = temp_dir
return jsonify({"result": "Temporary files cleaned up."})
@app.route("/list_files", methods=["GET"])
def list_files():
files = os.listdir(current_dir)
return jsonify({"files": files})
@app.route("/download/<path:filename>", methods=["GET"])
def download_file(filename):
return send_from_directory(current_dir, filename, as_attachment=True)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=7860)