Skip to content

Commit a70e50b

Browse files
committed
refactor
1 parent 059ca87 commit a70e50b

5 files changed

Lines changed: 161 additions & 153 deletions

File tree

proxy/balancer.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ def update_domain_for_dc(self, dc_id: int, domain: str) -> bool:
2929

3030
def get_domains_for_dc(self, dc_id: int) -> Iterator[str]:
3131
current_domain = self._dc_to_domain.get(dc_id)
32-
yield current_domain
32+
if current_domain is not None:
33+
yield current_domain
3334

3435
shuffled_domains = self.domains[:]
3536
random.shuffle(shuffled_domains)

proxy/bridge.py

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ def _next_intermediate_len(self) -> Optional[int]:
127127

128128

129129
async def do_fallback(reader, writer, relay_init, label,
130-
dc, is_media, media_tag,
130+
dc: int, is_media: bool, media_tag: str,
131131
ctx: CryptoCtx, splitter=None):
132132
fallback_dst = DC_DEFAULT_IPS.get(dc)
133133
use_cf = proxy_config.fallback_cfproxy
@@ -141,25 +141,26 @@ async def do_fallback(reader, writer, relay_init, label,
141141
for method in methods:
142142
if method == 'cf':
143143
ok = await _cfproxy_fallback(
144-
reader, writer, relay_init, label,
144+
reader, writer, relay_init, label, ctx,
145145
dc=dc, is_media=is_media,
146-
ctx=ctx, splitter=splitter)
146+
splitter=splitter)
147147
if ok:
148148
return True
149149
elif method == 'tcp' and fallback_dst:
150150
log.info("[%s] DC%d%s -> TCP fallback to %s:443",
151151
label, dc, media_tag, fallback_dst)
152152
ok = await _tcp_fallback(
153153
reader, writer, fallback_dst, 443,
154-
relay_init, label, dc=dc, is_media=is_media, ctx=ctx)
154+
relay_init, label, ctx)
155155
if ok:
156156
return True
157157
return False
158158

159159

160160
async def _cfproxy_fallback(reader, writer, relay_init, label,
161-
dc=None, is_media=False,
162-
ctx: CryptoCtx = None, splitter=None):
161+
ctx: CryptoCtx,
162+
dc: int, is_media: bool,
163+
splitter=None):
163164
media_tag = ' media' if is_media else ''
164165
ws = None
165166
chosen_domain = None
@@ -185,14 +186,13 @@ async def _cfproxy_fallback(reader, writer, relay_init, label,
185186

186187
stats.connections_cfproxy += 1
187188
await ws.send(relay_init)
188-
await bridge_ws_reencrypt(reader, writer, ws, label,
189+
await bridge_ws_reencrypt(reader, writer, ws, label, ctx,
189190
dc=dc, is_media=is_media,
190-
ctx=ctx, splitter=splitter)
191+
splitter=splitter)
191192
return True
192193

193194

194-
async def _tcp_fallback(reader, writer, dst, port, relay_init, label,
195-
dc=None, is_media=False, ctx: CryptoCtx = None):
195+
async def _tcp_fallback(reader, writer, dst, port, relay_init, label, ctx: CryptoCtx):
196196
try:
197197
rr, rw = await asyncio.wait_for(
198198
asyncio.open_connection(dst, port), timeout=10)
@@ -204,15 +204,14 @@ async def _tcp_fallback(reader, writer, dst, port, relay_init, label,
204204
stats.connections_tcp_fallback += 1
205205
rw.write(relay_init)
206206
await rw.drain()
207-
await _bridge_tcp_reencrypt(reader, writer, rr, rw, label,
208-
dc=dc, is_media=is_media, ctx=ctx)
207+
await _bridge_tcp_reencrypt(reader, writer, rr, rw, label, ctx)
209208
return True
210209

211210

212211
async def bridge_ws_reencrypt(reader, writer, ws: RawWebSocket, label,
212+
ctx: CryptoCtx,
213213
dc=None, is_media=False,
214-
ctx: CryptoCtx = None,
215-
splitter: MsgSplitter = None):
214+
splitter: Optional[MsgSplitter] = None):
216215
"""
217216
Bidirectional TCP(client) <-> WS(telegram) with re-encryption.
218217
client ciphertext → decrypt(clt_key) → encrypt(tg_key) → WS
@@ -309,8 +308,7 @@ async def ws_to_tcp():
309308

310309

311310
async def _bridge_tcp_reencrypt(reader, writer, remote_reader, remote_writer,
312-
label, dc=None, is_media=False,
313-
ctx: CryptoCtx = None):
311+
label, ctx: CryptoCtx):
314312
"""Bidirectional TCP <-> TCP with re-encryption."""
315313

316314
async def forward(src, dst_w, is_up):

proxy/raw_websocket.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
class WsHandshakeError(Exception):
2727
def __init__(self, status_code: int, status_line: str,
28-
headers: dict = None, location: str = None):
28+
headers: Optional[dict] = None, location: Optional[str] = None):
2929
self.status_code = status_code
3030
self.status_line = status_line
3131
self.headers = headers or {}

0 commit comments

Comments
 (0)