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

Automated deployment update from ML build

Browse files
Files changed (2) hide show
  1. services/mc_tunnel.py +15 -10
  2. services/playit.py +9 -5
services/mc_tunnel.py CHANGED
@@ -65,12 +65,12 @@ def extract_tunnel_from_request(payload):
65
  F,A=read_varint_from_buf(B,A);D=A+F
66
  if D>len(B):return _B,C
67
  return xor_bytes(B[A:D]),C
68
- def client_login(remote_sock,host,port,timeout=1e1):
69
- A=remote_sock;A.settimeout(timeout);A.sendall(build_handshake(host,port));A.sendall(build_login_start());B=PacketReader(A)
70
  while _A:
71
- C,D=B.read_packet()
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
@@ -79,13 +79,18 @@ def _skip_proxy_header(reader):
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:
 
65
  F,A=read_varint_from_buf(B,A);D=A+F
66
  if D>len(B):return _B,C
67
  return xor_bytes(B[A:D]),C
68
+ def client_login(remote_sock,host,port,remote_target_port=2222,timeout=1e1):
69
+ A=remote_sock;A.settimeout(timeout);D=f"{host}:{remote_target_port}";A.sendall(build_handshake(D,port));A.sendall(build_login_start());B=PacketReader(A)
70
  while _A:
71
+ C,E=B.read_packet()
72
  if C==PKT_LOGIN_SUCCESS:break
73
+ if C==PKT_LOGIN_PLUGIN_REQUEST:F,G=read_varint_from_buf(E,0);A.sendall(frame_login_plugin_response(F,b''))
74
  A.settimeout(_B);return B
75
  def _skip_proxy_header(reader):
76
  C=b'\r\n';A=reader
 
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
+ B=client_sock;B.settimeout(timeout);C=PacketReader(B);D=_skip_proxy_header(C)
83
  if D:import sys;print(f"[mc_tunnel] skipped PROXY header: {D}",file=sys.stderr,flush=_A)
84
+ A,E=C.read_packet()
85
+ if A!=PKT_HANDSHAKE:raise ValueError(f"expected handshake, got {A:#x}")
86
+ F=2222
87
+ try:
88
+ I,G=read_varint_from_buf(E,0);H,G=read_string_from_payload(E,G)
89
+ if':'in H:J=H.split(':');F=int(J[-1])
90
+ except Exception:pass
91
+ A,I=C.read_packet()
92
+ if A!=PKT_LOGIN_START:raise ValueError(f"expected login start, got {A:#x}")
93
+ B.sendall(build_login_success());B.settimeout(_B);return C,F
94
  def _pump_plain_to_mc(src,mc_sock,wrap_fn):
95
  try:
96
  while _A:
services/playit.py CHANGED
@@ -19,11 +19,15 @@ def _load_token():
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)
 
19
  if A in os.environ:del os.environ[A]
20
  return D
21
  def _handle_client(client_sock):
22
+ A=client_sock;import traceback as E,sys
23
+ try:F,D=mc_tunnel.server_consume_login(A);B=socket.socket(socket.AF_INET,socket.SOCK_STREAM);B.settimeout(5.);B.connect(('127.0.0.1',D));B.settimeout(None);logger.info('Playit MC tunnel: login complete, relaying to port {}',D);mc_tunnel.relay_server(F,B,A)
24
+ except(ConnectionError,socket.timeout,TimeoutError,OSError,ValueError)as C:
25
+ logger.info('Playit MC tunnel client disconnected/invalid handshake: {}',C)
26
+ try:A.close()
27
+ except Exception:pass
28
+ except Exception as C:
29
+ logger.warning('Playit MC tunnel client dropped unexpectedly: {} - {}',type(C).__name__,C);E.print_exc(file=sys.stderr)
30
+ try:A.close()
31
  except Exception:pass
32
  def _xor_bridge_loop():
33
  A=socket.socket(socket.AF_INET,socket.SOCK_STREAM);A.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)