proxy + multi client
This commit is contained in:
parent
e4c0c11c24
commit
2a80cef03e
4
.gitignore
vendored
4
.gitignore
vendored
@ -4,3 +4,7 @@
|
||||
**/.venv
|
||||
|
||||
test*.*
|
||||
.proxies
|
||||
.accounts
|
||||
.words
|
||||
.names
|
||||
|
@ -13,8 +13,8 @@ from .tools import big_fuckin_mac
|
||||
|
||||
class Client(ClientBase):
|
||||
|
||||
def __init__(self, names=None, loop=None, username=None, password=None):
|
||||
super().__init__(loop)
|
||||
def __init__(self, names=None, loop=None, username=None, password=None, proxy=None):
|
||||
super().__init__(loop=loop, proxy=proxy)
|
||||
self._username = username
|
||||
self._password = password
|
||||
self._worlds = {}
|
||||
|
@ -1,37 +1,32 @@
|
||||
from asyncio import (
|
||||
Event, Lock, Queue, Task, get_event_loop, get_running_loop,
|
||||
run_coroutine_threadsafe, sleep
|
||||
)
|
||||
from asyncio import (Event, Lock, Queue, Task, get_event_loop, sleep)
|
||||
from ipaddress import IPv4Address
|
||||
from socket import AF_INET, IPPROTO_TCP, SOCK_STREAM, TCP_NODELAY, socket
|
||||
|
||||
# from rich import print
|
||||
from pproxy import Connection
|
||||
from rich import print
|
||||
|
||||
from .crypto import MapleAes, MapleIV, decrypt_transform, encrypt_transform
|
||||
from .opcodes import SendOps, RecvOps
|
||||
from .packet import PacketHandler, iPacket, oPacket
|
||||
from .packet import PacketHandler, iPacket
|
||||
|
||||
|
||||
class ClientBase:
|
||||
|
||||
def __init__(self, loop=None):
|
||||
def __init__(self, loop=None, proxy=None):
|
||||
self._loop = loop or get_event_loop()
|
||||
self._proxy = Connection(proxy)
|
||||
self._packet_handlers = []
|
||||
self._ready = Event()
|
||||
self._lock = Lock()
|
||||
self._action_queue = Queue()
|
||||
self._action_task: Task | None = None
|
||||
|
||||
self._login_sock = socket(AF_INET, SOCK_STREAM)
|
||||
self._game_sock = None
|
||||
self._sock: socket
|
||||
self._version = None
|
||||
self._sub_version = None
|
||||
self._locale = None
|
||||
self._recv_iv: MapleIV = None # type: ignore
|
||||
self._send_iv: MapleIV = None # type: ignore
|
||||
self._g_recv_iv: MapleIV = None # type: ignore
|
||||
self._g_send_iv: MapleIV = None # type: ignore
|
||||
self._buff = bytearray()
|
||||
self._prev_buff = bytearray()
|
||||
self._recv_task = None
|
||||
@ -41,15 +36,12 @@ class ClientBase:
|
||||
self._game_port = 0
|
||||
|
||||
self._transfer_server = False
|
||||
self._game_ip = None
|
||||
self._game_port = None
|
||||
self._migrating = False
|
||||
self._migration_event = Event()
|
||||
|
||||
self.add_packet_handlers()
|
||||
|
||||
def _create_sock(self, game_sock=False):
|
||||
# if game_sock:
|
||||
self._sock = socket(AF_INET, SOCK_STREAM)
|
||||
self._sock.setblocking(False)
|
||||
self._sock.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1)
|
||||
@ -88,10 +80,6 @@ class ClientBase:
|
||||
|
||||
return self._loop.create_task(schd())
|
||||
|
||||
@property
|
||||
def is_game_session(self):
|
||||
return self._game_port and self._game_sock
|
||||
|
||||
async def _sock_recv(self):
|
||||
# 51.222.56.169
|
||||
await self._ready.wait()
|
||||
@ -164,7 +152,8 @@ class ClientBase:
|
||||
del self._action_queue
|
||||
self._action_queue = Queue()
|
||||
|
||||
if self._game_sock and port_used == self._game_port and self._game_port:
|
||||
if port_used == self._game_port and self._game_port and self._game_ip:
|
||||
self._game_ip = None
|
||||
self._game_port = 0
|
||||
|
||||
break
|
||||
|
Loading…
Reference in New Issue
Block a user