|
import os |
|
import subprocess |
|
from flask import Flask, render_template |
|
from flask_socketio import SocketIO, emit |
|
|
|
app = Flask(__name__) |
|
app.config['SECRET_KEY'] = 'secret!' |
|
socketio = SocketIO(app) |
|
|
|
@app.route('/') |
|
def index(): |
|
return render_template('index.html') |
|
|
|
@socketio.on('input', namespace='/terminal') |
|
def handle_input(data): |
|
command = data['command'] |
|
print(f"Received command: {command}") |
|
result = execute_command(command) |
|
emit('output', {'output': result}) |
|
|
|
def execute_command(command): |
|
try: |
|
result = subprocess.run(['docker', 'exec', 'terminal-website_ubuntu_1', 'bash', '-c', command], |
|
stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True) |
|
output = result.stdout.decode('utf-8') + result.stderr.decode('utf-8') |
|
print(f"Command output: {output}") |
|
return output |
|
except subprocess.CalledProcessError as e: |
|
error_output = e.stdout.decode('utf-8') + e.stderr.decode('utf-8') |
|
print(f"Command error: {error_output}") |
|
return error_output |
|
|
|
if __name__ == '__main__': |
|
socketio.run(app, host='0.0.0.0', port=7860) |