Spaces:
BG5
/
Sleeping

File size: 1,012 Bytes
bd4a0de
 
fe51d67
95ce585
22711ef
95ce585
 
bd4a0de
 
fe51d67
95ce585
bd4a0de
 
c58c205
 
95ce585
 
c58c205
95ce585
 
 
 
 
22711ef
bd4a0de
 
 
 
95ce585
 
c58c205
bd4a0de
 
95ce585
c58c205
95ce585
300f10a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
from flask_cors import CORS
import pty
import os
import subprocess
import threading

app = Flask(__name__)
CORS(app)  # 启用 CORS
app.config['SECRET_KEY'] = 'your_secret_key'
socketio = SocketIO(app)

master_fd, slave_fd = pty.openpty()

def run_shell():
    process = subprocess.Popen(['bash'], stdin=slave_fd, stdout=slave_fd, stderr=slave_fd, text=True)
    
    while True:
        output = os.read(master_fd, 1024).decode('utf-8')
        if output:
            socketio.emit('output', output)
        socketio.sleep(0.1)

@app.route('/')
def index():
    return render_template('index.html')

@socketio.on('input')
def handle_input(input_data):
    os.write(master_fd, (input_data + '\n').encode('utf-8'))

if __name__ == '__main__':
    shell_thread = threading.Thread(target=run_shell)
    shell_thread.daemon = True
    shell_thread.start()
    socketio.run(app, host='0.0.0.0', port=7860, allow_unsafe_werkzeug=True)