From ed58bacd12d07e6c0ec186fcd1c33c74f5cc1f52 Mon Sep 17 00:00:00 2001 From: Ivan Vazhenin Date: Wed, 6 Sep 2023 18:46:15 +0300 Subject: [PATCH] Events: connect and disconnect --- enserver/worker/tcp.py | 19 ++++++++++++++++++- enserver/worker/xmlrpc.py | 2 +- start.sh | 2 +- start1.sh | 2 +- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/enserver/worker/tcp.py b/enserver/worker/tcp.py index ae990f1..ddedde8 100644 --- a/enserver/worker/tcp.py +++ b/enserver/worker/tcp.py @@ -1,5 +1,4 @@ # coding: utf-8 - import json import logging import os @@ -263,6 +262,8 @@ class TCPWorker(threading.Thread): if ex.send_error: self.send_data({'auth_error': True}) self.stop_event.set() + if self.is_incoming: + self.bnd_connected(self.connected_id) while not self.stop_event.is_set(): try: @@ -273,6 +274,8 @@ class TCPWorker(threading.Thread): self.in_q.put(self.parcel) except Exception as exc: log.exception('Unexpected error: %s', exc) + if self.is_incoming: + self.bnd_disconnected(self.connected_id) self.socket.close() log.info('%s - Bye!', self.name) @@ -608,3 +611,17 @@ class TCPWorker(threading.Thread): self.send_data({'notice': True, 'parcel_id': self.parcel.id, 'parcel_state': self.parcel.state}) + + def bnd_connected(self, bnd_name: str): + s = ServerProxy(settings.auth_provider) + try: + return s.bnd_connected(bnd_name) + except Exception: + raise socket.error('Authentication provider not available') + + def bnd_disconnected(self, bnd_name: str): + s = ServerProxy(settings.auth_provider) + try: + return s.bnd_disconnected(bnd_name) + except Exception: + raise socket.error('Authentication provider not available') diff --git a/enserver/worker/xmlrpc.py b/enserver/worker/xmlrpc.py index 7f01764..9ebfd6e 100644 --- a/enserver/worker/xmlrpc.py +++ b/enserver/worker/xmlrpc.py @@ -211,7 +211,7 @@ class XMLRPCMethods(object): def queueList(self): return {'success': True, - 'rows': parcelqueue.manager.queue_list()} + 'rows': list(parcelqueue.manager.queue_list())} def deleteReplicationsParcels(self, replications_recipients, replications_ids): replications_recipients = ['tcp://%s' % recipient for recipient in replications_recipients] diff --git a/start.sh b/start.sh index a8d87b4..65998c6 100755 --- a/start.sh +++ b/start.sh @@ -1,3 +1,3 @@ source venv/bin/activate -python3 enserver/enserver.py --id bnd127 --db-host 10.10.8.83 --db-port 32101 --storage store --auth-provider http://10.10.8.81:9000/ --debug http://10.10.8.81:9000/ +python3 enserver/enserver.py --id bnd127 --db-host 10.10.8.83 --db-port 32101 --storage store --auth-provider http://10.10.8.70:9000/ --debug http://10.10.8.70:9000/ # --debug --port=7001 --pidfile=/tmp/enserver.pid --logfile=/var/log/enserver.log --id=prilvbox --address=enserv --storage=/share/store/enserver --db-host=10.10.8.83 --db-port=32101 --host=10.10.78.40 --db-user=postgres --db-passwd=Root12345678 --auth-provider=http://10.10.8.81:9000/ --replication-provider=http://10.10.8.81:9000/ http://10.10.8.81:9000/ http://10.10.8.81:9000/ diff --git a/start1.sh b/start1.sh index ed03a60..b92d562 100755 --- a/start1.sh +++ b/start1.sh @@ -1,3 +1,3 @@ source venv/bin/activate -python3 enserver/enserver.py --id bnd128 --db-host 10.10.8.83 --db-port 32101 --db-name db128 --storage store1 --http-port 7002 --tcp-port 7003 --host 10.10.8.81 --port 7001 --auth-provider http://10.10.8.81:9000/ --pidfile /tmp/enserver1.pid --logfile enserver1.log --debug http://10.10.8.81:9000/ +python3 enserver/enserver.py --id bnd128 --db-host 10.10.8.83 --db-port 32101 --db-name db128 --storage store1 --http-port 7002 --tcp-port 7003 --host 10.10.8.70 --port 7001 --auth-provider http://10.10.8.70:9000/ --pidfile /tmp/enserver1.pid --logfile enserver1.log --debug http://10.10.8.70:9000/ # --debug --port=7001 --pidfile=/tmp/enserver.pid --logfile=/var/log/enserver.log --id=prilvbox --address=enserv --storage=/share/store/enserver --db-host=10.10.8.83 --db-port=32101 --host=10.10.78.40 --db-user=postgres --db-passwd=Root12345678 --auth-provider=http://10.10.8.81:9000/ --replication-provider=http://10.10.8.81:9000/ http://10.10.8.81:9000/ http://10.10.8.81:9000/