Store and verify connection parameters
This commit is contained in:
10
rpc.py
10
rpc.py
@@ -99,7 +99,8 @@ class ClientSync(object):
|
||||
self.sock.connect((host, port))
|
||||
self.recv_rpc_msg = recv_rpc_msg(self.sock)
|
||||
self.lock = threading.Lock()
|
||||
self._server = self._user = None
|
||||
self._server = { 'host': host, 'port': port }
|
||||
self._user = None
|
||||
self.context = 'XUS SIGNON'
|
||||
if TCPConnect and (res := self.TCPConnect(self.sock.getsockname()[0], '0', socket.gethostname())) != 'accept':
|
||||
raise RPCExcInvalidResult('TCPConnect', self.sock.getsockname()[0], '0', socket.gethostname(), res)
|
||||
@@ -129,7 +130,7 @@ class ClientSync(object):
|
||||
self.sock = self.recv_rpc_msg = None
|
||||
return res
|
||||
def authenticate(self, identity: str, *, context=('XUS SIGNON',)):
|
||||
self._server = RecordServerInfo(*self('XUS SIGNON SETUP', '', '1', context=context))
|
||||
self._server.update(RecordServerInfo(*self('XUS SIGNON SETUP', '', '1', context=context))._asdict())
|
||||
res = self('XUS AV CODE', XWBHash_encrypt(identity))
|
||||
if res[0] == '0' or res[2] != '0':
|
||||
raise RPCExcAuth(res[3], res)
|
||||
@@ -170,7 +171,8 @@ class ClientAsync(object):
|
||||
self.reader, self.writer = await asyncio.open_connection(host, port)
|
||||
self.arecv_rpc_msg = arecv_rpc_msg(self.reader)
|
||||
self.lock = asyncio.Lock()
|
||||
self._server = self._user = None
|
||||
self._server = { 'host': host, 'port': port, 'info': None }
|
||||
self._user = None
|
||||
self.context = 'XUS SIGNON'
|
||||
if TCPConnect and (res := await self.TCPConnect(self.writer.get_extra_info('sockname')[0], '0', socket.gethostname())) != 'accept':
|
||||
raise RPCExcInvalidResult('TCPConnect', self.writer.get_extra_info('sockname')[0], '0', socket.gethostname(), res)
|
||||
@@ -205,7 +207,7 @@ class ClientAsync(object):
|
||||
self.reader = self.writer = None
|
||||
return res
|
||||
async def authenticate(self, identity: str, *, context=('XUS SIGNON',)):
|
||||
self._server = RecordServerInfo(*await self('XUS SIGNON SETUP', '', '1', context=context))
|
||||
self._server.update(RecordServerInfo(*await self('XUS SIGNON SETUP', '', '1', context=context))._asdict())
|
||||
res = await self('XUS AV CODE', XWBHash_encrypt(identity))
|
||||
if res[0] == '0' or res[2] != '0':
|
||||
raise RPCExcAuth(res[3], res)
|
||||
|
Reference in New Issue
Block a user