mirror of
https://github.com/Flowseal/tg-ws-proxy.git
synced 2026-05-22 23:41:44 +03:00
refactoring
This commit is contained in:
48
proxy/utils.py
Normal file
48
proxy/utils.py
Normal file
@@ -0,0 +1,48 @@
|
||||
import socket as _socket
|
||||
|
||||
from typing import Optional
|
||||
|
||||
|
||||
ZERO_64 = b'\x00' * 64
|
||||
HANDSHAKE_LEN = 64
|
||||
SKIP_LEN = 8
|
||||
PREKEY_LEN = 32
|
||||
KEY_LEN = 32
|
||||
IV_LEN = 16
|
||||
PROTO_TAG_POS = 56
|
||||
DC_IDX_POS = 60
|
||||
|
||||
PROTO_TAG_ABRIDGED = b'\xef\xef\xef\xef'
|
||||
PROTO_TAG_INTERMEDIATE = b'\xee\xee\xee\xee'
|
||||
PROTO_TAG_SECURE = b'\xdd\xdd\xdd\xdd'
|
||||
|
||||
PROTO_ABRIDGED_INT = 0xEFEFEFEF
|
||||
PROTO_INTERMEDIATE_INT = 0xEEEEEEEE
|
||||
PROTO_PADDED_INTERMEDIATE_INT = 0xDDDDDDDD
|
||||
|
||||
RESERVED_FIRST_BYTES = {0xEF}
|
||||
RESERVED_STARTS = {b'\x48\x45\x41\x44', b'\x50\x4F\x53\x54',
|
||||
b'\x47\x45\x54\x20', b'\xee\xee\xee\xee',
|
||||
b'\xdd\xdd\xdd\xdd', b'\x16\x03\x01\x02'}
|
||||
RESERVED_CONTINUE = b'\x00\x00\x00\x00'
|
||||
|
||||
|
||||
def human_bytes(n: int) -> str:
|
||||
for unit in ('B', 'KB', 'MB', 'GB'):
|
||||
if abs(n) < 1024:
|
||||
return f"{n:.1f}{unit}"
|
||||
n /= 1024
|
||||
return f"{n:.1f}TB"
|
||||
|
||||
|
||||
def get_link_host(host: str) -> Optional[str]:
|
||||
if host == '0.0.0.0':
|
||||
try:
|
||||
with _socket.socket(_socket.AF_INET, _socket.SOCK_DGRAM) as _s:
|
||||
_s.connect(('8.8.8.8', 80))
|
||||
link_host = _s.getsockname()[0]
|
||||
except OSError:
|
||||
link_host = '127.0.0.1'
|
||||
return link_host
|
||||
else:
|
||||
return host
|
||||
Reference in New Issue
Block a user