mirror of
https://github.com/hak5/nano-tetra-modules.git
synced 2025-10-29 16:58:09 +00:00
Add modules to repository
This commit is contained in:
82
DWall/assets/UDSHandler.py
Normal file
82
DWall/assets/UDSHandler.py
Normal file
@@ -0,0 +1,82 @@
|
||||
import threading
|
||||
import sys
|
||||
import os
|
||||
import socket
|
||||
import json
|
||||
from mimetools import Message
|
||||
from StringIO import StringIO
|
||||
|
||||
class UDSHandler(threading.Thread):
|
||||
serverAddress = "/var/run/dwall.sock"
|
||||
|
||||
def __init__(self, group=None, target=None, name=None,
|
||||
args=(), kwargs=None, verbose=None):
|
||||
threading.Thread.__init__(self, group=group, target=target, name=name,
|
||||
verbose=verbose)
|
||||
self.args = args
|
||||
self.kwargs = kwargs
|
||||
return
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
os.unlink(self.serverAddress)
|
||||
except:
|
||||
pass
|
||||
|
||||
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||
sock.bind(self.serverAddress)
|
||||
sock.listen(1)
|
||||
|
||||
while True:
|
||||
connection, client_address = sock.accept()
|
||||
self.handleConnection(connection)
|
||||
|
||||
|
||||
|
||||
def handleConnection(self, connection):
|
||||
data = ""
|
||||
try:
|
||||
while True:
|
||||
buff = connection.recv(1024)
|
||||
if buff:
|
||||
data += buff
|
||||
else:
|
||||
break
|
||||
finally:
|
||||
connection.close()
|
||||
|
||||
try:
|
||||
parsedData = self.parseData(data)
|
||||
if parsedData:
|
||||
for websocket in self.args[0]:
|
||||
try:
|
||||
websocket.send_message(json.dumps(parsedData))
|
||||
except Exception, e:
|
||||
pass
|
||||
except Exception, e:
|
||||
pass
|
||||
|
||||
def parseData(self, data):
|
||||
data = data.split("|", 2)
|
||||
dataDict = {"from": data[0], "to": data[1]}
|
||||
|
||||
path, headers = data[2].split('\r\n', 1)
|
||||
|
||||
payload = Message(StringIO(headers))
|
||||
|
||||
url = "http://" + payload['host'] + path.split(" ")[1]
|
||||
|
||||
if url.lower().endswith(('.png', '.ico', '.jpeg', '.jpg', '.gif', '.svg')):
|
||||
dataDict['image'] = url
|
||||
else:
|
||||
dataDict['url'] = url
|
||||
|
||||
if 'cookie' in payload:
|
||||
dataDict['cookie'] = payload['cookie']
|
||||
|
||||
postData = data[2].split('\r\n\r\n')
|
||||
if len(postData) == 2:
|
||||
if postData[1].strip():
|
||||
dataDict['post'] = postData[1]
|
||||
|
||||
return dataDict
|
||||
Reference in New Issue
Block a user