|
|
@@ -1,6 +1,4 @@
|
|
|
#!/usr/bin/env python3
|
|
|
-
|
|
|
-
|
|
|
import json
|
|
|
import os
|
|
|
import signal
|
|
|
@@ -39,9 +37,12 @@ class PManager:
|
|
|
p_list = {}
|
|
|
ptable = {}
|
|
|
log_list = {}
|
|
|
- def __init__(self, ptable):
|
|
|
+ name = ""
|
|
|
+ def __init__(self, name, ptable):
|
|
|
self.ptable = ptable
|
|
|
self.conn(self.ip)
|
|
|
+ self.name = name
|
|
|
+
|
|
|
signal.signal(signal.SIGINT, self.sighandler)
|
|
|
signal.signal(signal.SIGCHLD, signal.SIG_IGN) #To kill zombies
|
|
|
while True:
|
|
|
@@ -63,7 +64,7 @@ class PManager:
|
|
|
log("Dropping: %s" % j)
|
|
|
continue
|
|
|
|
|
|
- log(j)
|
|
|
+ #log(j)
|
|
|
if j["command"] == "launch":
|
|
|
opts = None
|
|
|
if "options" in j:
|
|
|
@@ -75,6 +76,17 @@ class PManager:
|
|
|
|
|
|
if j["command"] == "netcat":
|
|
|
sendmsg(j["key"])
|
|
|
+ if j["command"] == "status": #and j["key"] == self.name:
|
|
|
+ self.send({"name": self.name, "data":self.p_list})
|
|
|
+
|
|
|
+ def send(self, data):
|
|
|
+ try:
|
|
|
+ if type(data) is dict:
|
|
|
+ data = json.dumps(data)
|
|
|
+ print(data)
|
|
|
+ self.ws.send(data)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
|
|
|
def conn(self, target):
|
|
|
if self.ws is None:
|
|
|
@@ -103,9 +115,9 @@ class PManager:
|
|
|
log("key %s doesn't exist! not killing!" % (key))
|
|
|
return
|
|
|
try:
|
|
|
- os.killpg(os.getpgid(self.p_list[key].pid), signal.SIGTERM)
|
|
|
+ os.killpg(os.getpgid(self.p_list[key]), signal.SIGTERM)
|
|
|
except Exception as e:
|
|
|
- log("This process (%d) can't be killed! Why?" % self.p_list[key].pid)
|
|
|
+ log("This process (%d) can't be killed! Why?" % self.p_list[key])
|
|
|
log(e)
|
|
|
|
|
|
try:
|
|
|
@@ -141,7 +153,7 @@ class PManager:
|
|
|
log(e)
|
|
|
sys.exit(1)
|
|
|
|
|
|
- self.p_list[key] = proc
|
|
|
+ self.p_list[key] = proc.pid
|
|
|
return proc.pid
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
@@ -149,10 +161,11 @@ if __name__ == "__main__":
|
|
|
print("Usage: ./%s <file.json>" % (sys.argv[0]))
|
|
|
sys.exit(1)
|
|
|
try:
|
|
|
- ptable = json.loads(open(sys.argv[1]).read())
|
|
|
+ data = json.loads(open(sys.argv[1]).read())
|
|
|
except Exception as e:
|
|
|
print(e)
|
|
|
sys.exit(2)
|
|
|
|
|
|
- print(ptable)
|
|
|
- m = PManager(ptable)
|
|
|
+ ptable = data["data"]
|
|
|
+ name = data["name"]
|
|
|
+ m = PManager(name, ptable)
|