summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <tom@vanderlee.io>2023-06-08 23:18:08 +0200
committerGravatar Tom van der Lee <tom@vanderlee.io>2023-06-08 23:18:08 +0200
commit51f276fcc03902bd6f0adaf27df74390b3d03c13 (patch)
tree1a8c359ff526eb062afbf214841c5ec0eeeef185
parent4fec4fdfee90aab923022094f9d1baf4fea892c5 (diff)
downloadclient-2.0.0.tar.gz
client-2.0.0.tar.bz2
client-2.0.0.zip
Removed printsv2.0.0
-rw-r--r--ttun/client.py51
1 files changed, 25 insertions, 26 deletions
diff --git a/ttun/client.py b/ttun/client.py
index a5c6e10..097ebc5 100644
--- a/ttun/client.py
+++ b/ttun/client.py
@@ -1,7 +1,8 @@
1import asyncio 1import asyncio
2import json 2import json
3import logging 3import logging
4from asyncio import create_task, get_running_loop 4from asyncio import create_task
5from asyncio import get_running_loop
5from base64 import b64decode 6from base64 import b64decode
6from base64 import b64encode 7from base64 import b64encode
7from datetime import datetime 8from datetime import datetime
@@ -23,13 +24,14 @@ from aiohttp import DummyCookieJar
23from websockets import WebSocketClientProtocol 24from websockets import WebSocketClientProtocol
24from websockets.exceptions import ConnectionClosed 25from websockets.exceptions import ConnectionClosed
25 26
27from ttun import __version__
26from ttun.pubsub import PubSub 28from ttun.pubsub import PubSub
27from ttun.types import Config, Message, MessageType 29from ttun.types import Config
30from ttun.types import Message
31from ttun.types import MessageType
28from ttun.types import RequestData 32from ttun.types import RequestData
29from ttun.types import ResponseData 33from ttun.types import ResponseData
30 34
31from ttun import __version__
32
33 35
34class Client: 36class Client:
35 def __init__( 37 def __init__(
@@ -53,12 +55,10 @@ class Client:
53 self.headers = [] if headers is None else headers 55 self.headers = [] if headers is None else headers
54 56
55 async def send(self, data: dict): 57 async def send(self, data: dict):
56 print('send {}'.format(pformat(data)))
57 await self.connection.send(json.dumps(data)) 58 await self.connection.send(json.dumps(data))
58 59
59 async def receive(self) -> dict: 60 async def receive(self) -> dict:
60 data = json.loads(await self.connection.recv()) 61 data = json.loads(await self.connection.recv())
61 print('receive {}'.format(pformat(data)))
62 return data 62 return data
63 63
64 @staticmethod 64 @staticmethod
@@ -78,12 +78,8 @@ class Client:
78 78
79 async def connect(self) -> WebSocketClientProtocol: 79 async def connect(self) -> WebSocketClientProtocol:
80 self.connection = await websockets.connect(f"{self.server}/tunnel/") 80 self.connection = await websockets.connect(f"{self.server}/tunnel/")
81 print(self.version)
82 81
83 await self.send({ 82 await self.send({"subdomain": self.subdomain, "version": self.version})
84 "subdomain": self.subdomain,
85 "version": self.version
86 })
87 83
88 self.config = await self.receive() 84 self.config = await self.receive()
89 85
@@ -101,12 +97,12 @@ class Client:
101 message: Message = await self.receive() 97 message: Message = await self.receive()
102 98
103 try: 99 try:
104 if MessageType(message['type']) != MessageType.request: 100 if MessageType(message["type"]) != MessageType.request:
105 continue 101 continue
106 except ValueError: 102 except ValueError:
107 continue 103 continue
108 104
109 request: RequestData = message['payload'] 105 request: RequestData = message["payload"]
110 106
111 request["headers"] = [ 107 request["headers"] = [
112 *request["headers"], 108 *request["headers"],
@@ -114,20 +110,23 @@ class Client:
114 ] 110 ]
115 111
116 async def response_handler( 112 async def response_handler(
117 response: ResponseData, 113 response: ResponseData, identifier=message["identifier"]
118 identifier=message['identifier']
119 ): 114 ):
120 await self.send(Message( 115 await self.send(
121 type=MessageType.response.value, 116 Message(
122 identifier=identifier, 117 type=MessageType.response.value,
123 payload=response 118 identifier=identifier,
124 )) 119 payload=response,
125 120 )
126 loop.create_task(self.proxy_request( 121 )
127 session=session, 122
128 request=request, 123 loop.create_task(
129 on_response=response_handler, 124 self.proxy_request(
130 )) 125 session=session,
126 request=request,
127 on_response=response_handler,
128 )
129 )
131 except ConnectionClosed: 130 except ConnectionClosed:
132 break 131 break
133 132