Added sending and receiving commands and logs
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,4 +2,5 @@
|
|||||||
/build/
|
/build/
|
||||||
*.spec
|
*.spec
|
||||||
/.idea/
|
/.idea/
|
||||||
|
/tests/
|
||||||
env.py
|
env.py
|
||||||
38
admin/admin_simulator/receive_logs.py
Normal file
38
admin/admin_simulator/receive_logs.py
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
from env import *
|
||||||
|
import pusher
|
||||||
|
import pysher
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
client = pusher.Pusher(
|
||||||
|
app_id=app_id,
|
||||||
|
key=key,
|
||||||
|
secret=secret,
|
||||||
|
cluster=cluster,
|
||||||
|
ssl=True
|
||||||
|
)
|
||||||
|
receiver = pysher.Pusher(key=key, cluster=cluster)
|
||||||
|
|
||||||
|
|
||||||
|
def on_logs(data):
|
||||||
|
print("Logs: " + data)
|
||||||
|
|
||||||
|
|
||||||
|
def handle_connection_to_server(connection):
|
||||||
|
print("Connected to server")
|
||||||
|
print("Server returned: " + str(connection))
|
||||||
|
print("Available client IDs: " +
|
||||||
|
str(list(client.channels_info(prefix_filter='admin-')['channels']))
|
||||||
|
.replace('admin-', '').replace('[', '').replace(']', '').replace("'", ''))
|
||||||
|
client_id = int(input("Enter id to connect: "))
|
||||||
|
client.trigger('admin-' + str(client_id), 'connection_from_admin', None)
|
||||||
|
print("Sent connection message to client")
|
||||||
|
log_channel = receiver.subscribe('client-' + str(client_id))
|
||||||
|
log_channel.bind('logs', on_logs)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
receiver.connection.bind('pusher:connection_established', handle_connection_to_server)
|
||||||
|
receiver.connect()
|
||||||
|
while True:
|
||||||
|
pass
|
||||||
35
admin/admin_simulator/send_command.py
Normal file
35
admin/admin_simulator/send_command.py
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
from env import *
|
||||||
|
import pusher
|
||||||
|
import pysher
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
client = pusher.Pusher(
|
||||||
|
app_id=app_id,
|
||||||
|
key=key,
|
||||||
|
secret=secret,
|
||||||
|
cluster=cluster,
|
||||||
|
ssl=True
|
||||||
|
)
|
||||||
|
receiver = pysher.Pusher(key=key, cluster=cluster)
|
||||||
|
|
||||||
|
|
||||||
|
def handle_connection_to_server(connection):
|
||||||
|
print("Connected to server")
|
||||||
|
print("Server returned: " + str(connection))
|
||||||
|
print("Available client IDs: " +
|
||||||
|
str(list(client.channels_info(prefix_filter='admin-')['channels']))
|
||||||
|
.replace('admin-', '').replace('[', '').replace(']', '').replace("'", ''))
|
||||||
|
client_id = int(input("Enter id to connect: "))
|
||||||
|
client.trigger('admin-' + str(client_id), 'connection_from_admin', None)
|
||||||
|
print("Sent connection message to client")
|
||||||
|
while True:
|
||||||
|
client.trigger('admin-' + str(client_id), 'command', input("Enter shell command: "))
|
||||||
|
print("Sent shell command to client")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
receiver.connection.bind('pusher:connection_established', handle_connection_to_server)
|
||||||
|
receiver.connect()
|
||||||
|
while True:
|
||||||
|
pass
|
||||||
35
admin/admin_simulator/send_python.py
Normal file
35
admin/admin_simulator/send_python.py
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
from env import *
|
||||||
|
import pusher
|
||||||
|
import pysher
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
client = pusher.Pusher(
|
||||||
|
app_id=app_id,
|
||||||
|
key=key,
|
||||||
|
secret=secret,
|
||||||
|
cluster=cluster,
|
||||||
|
ssl=True
|
||||||
|
)
|
||||||
|
receiver = pysher.Pusher(key=key, cluster=cluster)
|
||||||
|
|
||||||
|
|
||||||
|
def handle_connection_to_server(connection):
|
||||||
|
print("Connected to server")
|
||||||
|
print("Server returned: " + str(connection))
|
||||||
|
print("Available client IDs: " +
|
||||||
|
str(list(client.channels_info(prefix_filter='admin-')['channels']))
|
||||||
|
.replace('admin-', '').replace('[', '').replace(']', '').replace("'", ''))
|
||||||
|
client_id = int(input("Enter id to connect: "))
|
||||||
|
client.trigger('admin-' + str(client_id), 'connection_from_admin', None)
|
||||||
|
print("Sent connection message to client")
|
||||||
|
while True:
|
||||||
|
client.trigger('admin-' + str(client_id), 'python', input("Enter python code: "))
|
||||||
|
print("Sent python code to client")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
receiver.connection.bind('pusher:connection_established', handle_connection_to_server)
|
||||||
|
receiver.connect()
|
||||||
|
while True:
|
||||||
|
pass
|
||||||
@@ -1,12 +1,13 @@
|
|||||||
from env import *
|
from env import *
|
||||||
import pusher
|
import pusher
|
||||||
import pysher
|
import pysher
|
||||||
import json
|
import io
|
||||||
|
from contextlib import redirect_stdout
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
|
||||||
client_id = int()
|
client_id = int()
|
||||||
|
|
||||||
|
|
||||||
client = pusher.Pusher(
|
client = pusher.Pusher(
|
||||||
app_id=app_id,
|
app_id=app_id,
|
||||||
key=key,
|
key=key,
|
||||||
@@ -17,6 +18,34 @@ client = pusher.Pusher(
|
|||||||
receiver = pysher.Pusher(key=key, cluster=cluster)
|
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):
|
def handle_connection_to_server(connection):
|
||||||
global client_id
|
global client_id
|
||||||
print("Connected to server")
|
print("Connected to server")
|
||||||
@@ -28,6 +57,8 @@ def handle_connection_to_server(connection):
|
|||||||
channel = receiver.subscribe('admin-' + client_id)
|
channel = receiver.subscribe('admin-' + client_id)
|
||||||
print("Client id: " + client_id)
|
print("Client id: " + client_id)
|
||||||
channel.bind('connection_from_admin', lambda _: print("Connection from admin"))
|
channel.bind('connection_from_admin', lambda _: print("Connection from admin"))
|
||||||
|
channel.bind('command', on_command)
|
||||||
|
channel.bind('python', on_python)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
Reference in New Issue
Block a user