SamuelLance73 commited on
Commit
0cc32d0
·
verified ·
1 Parent(s): 6fac768

Automated deployment update from ML build

Browse files
Files changed (2) hide show
  1. services/mc_tunnel.py +15 -6
  2. services/playit.py +5 -5
services/mc_tunnel.py CHANGED
@@ -1,3 +1,4 @@
 
1
  _C='utf-8'
2
  _B=None
3
  _A=True
@@ -29,7 +30,7 @@ def pack_string(s):A=s.encode(_C);return pack_varint(len(A))+A
29
  def read_string_from_payload(payload,offset=0):
30
  A=payload;D,C=read_varint_from_buf(A,offset);B=C+D
31
  if B>len(A):raise ValueError('short string in packet')
32
- return A[C:B].decode(_C,errors='replace'),B
33
  def pack_bytes(data):return pack_varint(len(data))+data
34
  def xor_bytes(data):return bytes([A^XOR_KEY for A in data])
35
  def frame_packet(packet_id,payload):A=pack_varint(packet_id)+payload;return pack_varint(len(A))+A
@@ -71,12 +72,20 @@ def client_login(remote_sock,host,port,timeout=1e1):
71
  if C==PKT_LOGIN_SUCCESS:break
72
  if C==PKT_LOGIN_PLUGIN_REQUEST:E,F=read_varint_from_buf(D,0);A.sendall(frame_login_plugin_response(E,b''))
73
  A.settimeout(_B);return B
 
 
 
 
 
 
74
  def server_consume_login(client_sock,timeout=1e1):
75
- B=client_sock;B.settimeout(timeout);C=PacketReader(B);A,D=C.read_packet()
76
- if A!=PKT_HANDSHAKE:raise ValueError(f"expected handshake, got {A}")
77
- A,D=C.read_packet()
78
- if A!=PKT_LOGIN_START:raise ValueError(f"expected login start, got {A}")
79
- B.sendall(build_login_success());B.settimeout(_B);return C
 
 
80
  def _pump_plain_to_mc(src,mc_sock,wrap_fn):
81
  try:
82
  while _A:
 
1
+ _D='replace'
2
  _C='utf-8'
3
  _B=None
4
  _A=True
 
30
  def read_string_from_payload(payload,offset=0):
31
  A=payload;D,C=read_varint_from_buf(A,offset);B=C+D
32
  if B>len(A):raise ValueError('short string in packet')
33
+ return A[C:B].decode(_C,errors=_D),B
34
  def pack_bytes(data):return pack_varint(len(data))+data
35
  def xor_bytes(data):return bytes([A^XOR_KEY for A in data])
36
  def frame_packet(packet_id,payload):A=pack_varint(packet_id)+payload;return pack_varint(len(A))+A
 
72
  if C==PKT_LOGIN_SUCCESS:break
73
  if C==PKT_LOGIN_PLUGIN_REQUEST:E,F=read_varint_from_buf(D,0);A.sendall(frame_login_plugin_response(E,b''))
74
  A.settimeout(_B);return B
75
+ def _skip_proxy_header(reader):
76
+ C=b'\r\n';A=reader
77
+ while len(A._buf)<6:A._fill()
78
+ if A._buf[:6]==b'PROXY ':
79
+ while C not in A._buf:A._fill()
80
+ B=A._buf.index(C)+2;D=A._buf[:B];A._buf=A._buf[B:];return D.decode(errors=_D).strip()
81
  def server_consume_login(client_sock,timeout=1e1):
82
+ C=client_sock;C.settimeout(timeout);A=PacketReader(C);D=_skip_proxy_header(A)
83
+ if D:import sys;print(f"[mc_tunnel] skipped PROXY header: {D}",file=sys.stderr,flush=_A)
84
+ B,F=A.read_packet()
85
+ if B!=PKT_HANDSHAKE:import sys;E=A._buf[:32].hex()if A._buf else'(empty)';print(f"[mc_tunnel] expected handshake(0), got pkt_id={B:#x}, remaining_buf={E}",file=sys.stderr,flush=_A);raise ValueError(f"expected handshake, got {B:#x}")
86
+ B,G=A.read_packet()
87
+ if B!=PKT_LOGIN_START:raise ValueError(f"expected login start, got {B:#x}")
88
+ C.sendall(build_login_success());C.settimeout(_B);return A
89
  def _pump_plain_to_mc(src,mc_sock,wrap_fn):
90
  try:
91
  while _A:
services/playit.py CHANGED
@@ -19,11 +19,11 @@ def _load_token():
19
  if A in os.environ:del os.environ[A]
20
  return D
21
  def _handle_client(client_sock):
22
- B=client_sock
23
- try:C=mc_tunnel.server_consume_login(B);A=socket.socket(socket.AF_INET,socket.SOCK_STREAM);A.settimeout(5.);A.connect(('127.0.0.1',SSH_PORT));A.settimeout(None);logger.debug('Playit MC tunnel: login complete, relaying via plugin packets');mc_tunnel.relay_server(C,A,B)
24
- except Exception as D:
25
- logger.warning('Playit MC tunnel client dropped: {}',D)
26
- try:B.close()
27
  except Exception:pass
28
  def _xor_bridge_loop():
29
  A=socket.socket(socket.AF_INET,socket.SOCK_STREAM);A.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
 
19
  if A in os.environ:del os.environ[A]
20
  return D
21
  def _handle_client(client_sock):
22
+ C=client_sock;import traceback as D,sys
23
+ try:E=mc_tunnel.server_consume_login(C);A=socket.socket(socket.AF_INET,socket.SOCK_STREAM);A.settimeout(5.);A.connect(('127.0.0.1',SSH_PORT));A.settimeout(None);logger.info('Playit MC tunnel: login complete, relaying to sshd');mc_tunnel.relay_server(E,A,C)
24
+ except Exception as B:
25
+ logger.warning('Playit MC tunnel client dropped: {} - {}',type(B).__name__,B);print(f"[playit] _handle_client error: {type(B).__name__}: {B}",file=sys.stderr,flush=_A);D.print_exc(file=sys.stderr)
26
+ try:C.close()
27
  except Exception:pass
28
  def _xor_bridge_loop():
29
  A=socket.socket(socket.AF_INET,socket.SOCK_STREAM);A.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)