def __init__(self, *args, **kwargs): # Save off proxy specific options self.target_host = kwargs.pop('target_host') self.target_port = kwargs.pop('target_port') self.wrap_cmd = kwargs.pop('wrap_cmd') self.wrap_mode = kwargs.pop('wrap_mode') # Last 3 timestamps command was run self.wrap_times = [0, 0, 0] if self.wrap_cmd: rebinder_path = ['./', os.path.dirname(sys.argv[0])] self.rebinder = None for rdir in rebinder_path: rpath = os.path.join(rdir, "rebind.so") if os.path.exists(rpath): self.rebinder = rpath break if not self.rebinder: raise Exception("rebind.so not found, perhaps you need to run make") self.target_host = "127.0.0.1" # Loopback # Find a free high port sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('', 0)) self.target_port = sock.getsockname()[1] sock.close() os.environ.update({ "LD_PRELOAD": self.rebinder, "REBIND_OLD_PORT": str(kwargs['listen_port']), "REBIND_NEW_PORT": str(self.target_port)}) WebSocketServer.__init__(self, *args, **kwargs)
def __init__(self, *args, **kwargs): self.errors = 0 self.delay = kwargs.pop('delay') print "Prepopulating random array" self.rand_array = [] for i in range(0, self.max_packet_size): self.rand_array.append(random.randint(0, 9)) WebSocketServer.__init__(self, *args, **kwargs)
def __init__(self, addr, robots): self.data = None self.requests = set() self.lock = threading.RLock() WebSocketServer.__init__(self, addr, self.GuiliRequestHandlerClass) self.robots = robots # load configurations try: with open(os.path.join(os.path.dirname(__file__), 'configurations.json')) as f: self.configurations = json.load(f) except IOError: self.configurations = {}
def __init__(self, *args, **kwargs): # Save off proxy specific options self.target_host = kwargs.pop('target_host') self.target_port = kwargs.pop('target_port') self.wrap_cmd = kwargs.pop('wrap_cmd') self.wrap_mode = kwargs.pop('wrap_mode') # Last 3 timestamps command was run self.wrap_times = [0, 0, 0] if self.wrap_cmd: rebinder_path = ['./', os.path.dirname(sys.argv[0])] self.rebinder = None for rdir in rebinder_path: rpath = os.path.join(rdir, "rebind.so") if os.path.exists(rpath): self.rebinder = rpath break if not self.rebinder: raise Exception( "rebind.so not found, perhaps you need to run make") self.target_host = "127.0.0.1" # Loopback # Find a free high port sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('', 0)) self.target_port = sock.getsockname()[1] sock.close() os.environ.update({ "LD_PRELOAD": self.rebinder, "REBIND_OLD_PORT": str(kwargs['listen_port']), "REBIND_NEW_PORT": str(self.target_port) }) WebSocketServer.__init__(self, *args, **kwargs)
def test_server(self): server = WebSocketServer() # test run with patch("asyncio.async") as mock, patch( "asyncio.base_events.BaseEventLoop.run_until_complete" ) as mock1, patch("asyncio.base_events.BaseEventLoop.run_forever") as mock2: run(MagicMock, MagicMock, "localhost", 999, "localhost", 6379, 0, "ws-channel") mock.assert_called_once() mock1.assert_called_once() mock2.assert_called_once() # test receiver client = Client(MockSocket(True)) server.receiver(client, "msg") self.assertEqual(client.name, "unknown") server.receiver(client, '{"message": "msg", "tags": ["tag1", "tag2"]}') server.receiver(client, "msg") self.assertEqual(client.name, "tag1, tag2")
while True: wlist = [] if cqueue or c_pend: wlist.append(self.request) ins, outs, excepts = select.select(rlist, wlist, [], 1) if excepts: raise Exception("Socket exception") if self.request in outs: # Send queued target data to the client c_pend = self.send_frames(cqueue) cqueue = [] if self.request in ins: # Receive client data, decode it, and send it back frames, closed = self.recv_frames() print("Received: " + frames[0].decode('utf-8')) sendUDP("localhost", 4242, frames[0].decode('utf-8')) if closed: self.send_close() if __name__ == '__main__': opts = {"listen_port": 80, "web": "."} try: server = WebSocketServer(WebSocketEcho, **opts) server.start_server() except: pass
#!/usr/bin/env python import asyncore from websocket import WebSocketServer class BroadcastHandler(object): """ The BroadcastHandler repeats incoming strings to every connected WebSocket. """ def __init__(self, conn): self.conn = conn def dispatch(self, data): for session in self.conn.server.sessions: session.send(data) if __name__ == "__main__": print "Starting WebSocket broadcast server - ws://localhost:8181/broadcast" WebSocketServer(port=8181, handlers={"/broadcast": BroadcastHandler}) asyncore.loop()
#!/usr/bin/python ''' Display UTF-8 encoding for 0-255.''' import sys, os, socket, ssl, time, traceback from select import select sys.path.insert(0,os.path.dirname(__file__) + "/../websockify") from websocket import WebSocketServer if __name__ == '__main__': print "val: hybi_base64 | hybi_binary" for c in range(0, 256): hybi_base64 = WebSocketServer.encode_hybi(chr(c), opcode=1, base64=True) hybi_binary = WebSocketServer.encode_hybi(chr(c), opcode=2, base64=False) print "%d: %s | %s" % (c, repr(hybi_base64), repr(hybi_binary))
# -*- coding: utf-8 -*- from websocket import WebSocketServer server = WebSocketServer.WebsocketServer() server.start()
#!/usr/bin/python ''' Display UTF-8 encoding for 0-255.''' import sys, os, socket, ssl, time, traceback from select import select sys.path.insert(0, os.path.dirname(__file__) + "/../") from websocket import WebSocketServer if __name__ == '__main__': print "val: hixie | hybi_base64 | hybi_binary" for c in range(0, 256): hixie = WebSocketServer.encode_hixie(chr(c)) hybi_base64 = WebSocketServer.encode_hybi(chr(c), opcode=1, base64=True) hybi_binary = WebSocketServer.encode_hybi(chr(c), opcode=2, base64=False) print "%d: %s | %s | %s" % (c, repr(hixie), repr(hybi_base64), repr(hybi_binary))
while True: wlist = [] if cqueue or c_pend: wlist.append(self.request) ins, outs, excepts = select.select(rlist, wlist, [], 1) if excepts: raise Exception("Socket exception") if self.request in outs: # Send queued target data to the client c_pend = self.send_frames(cqueue) cqueue = [] if self.request in ins: # Receive client data, decode it, and send it back frames, closed = self.recv_frames() print("Received: "+frames[0].decode('utf-8')) sendUDP("localhost", 4242, frames[0].decode('utf-8')) if closed: self.send_close() if __name__ == '__main__': opts = {"listen_port": 80, "web": "."} try: server = WebSocketServer(WebSocketEcho, **opts) server.start_server() except: pass