From ac960cd6704623b23edc51323c5b3209a122c612 Mon Sep 17 00:00:00 2001 From: Ivan Vazhenin Date: Sun, 26 Mar 2023 20:22:27 +0300 Subject: [PATCH] fix --- enserver/worker/downloader.py | 27 ++++++++++++++++----------- enserver/worker/tcp.py | 8 ++++---- start.sh | 4 +++- 3 files changed, 23 insertions(+), 16 deletions(-) mode change 100644 => 100755 start.sh diff --git a/enserver/worker/downloader.py b/enserver/worker/downloader.py index 4707841..80eaf4a 100644 --- a/enserver/worker/downloader.py +++ b/enserver/worker/downloader.py @@ -38,7 +38,7 @@ class ParcelDownloader(Worker): parcel_dir = os.path.join(self.static_dir, parcel.id) if not os.path.exists(parcel_dir) and files: - os.mkdir(parcel_dir, 750) + os.mkdir(parcel_dir) try: for f in files: @@ -59,25 +59,30 @@ class ParcelDownloader(Worker): self.log.info('Downloading file url %s', url) match = self.re_url.match(url) - if match is None: - raise urllib.error.URLError('Url does not match the http pattern!') - url_groups = match.groupdict() + local = match is None + if not local: + url_groups = match.groupdict() - if 'login' in url_groups: - url = url_groups['protocol'] + url_groups['path'] - passman = urllib.request.HTTPPasswordMgrWithDefaultRealm() - passman.add_password(None, url, url_groups.get('login'), url_groups.get('password') or '') - opener = urllib.request.build_opener(urllib.request.HTTPBasicAuthHandler(passman)) - urllib.request.install_opener(opener) + if 'login' in url_groups: + url = url_groups['protocol'] + url_groups['path'] + passman = urllib.request.HTTPPasswordMgrWithDefaultRealm() + passman.add_password(None, url, url_groups.get('login'), url_groups.get('password') or '') + opener = urllib.request.build_opener(urllib.request.HTTPBasicAuthHandler(passman)) + urllib.request.install_opener(opener) fspath = os.path.join(parcel_dir, name) with open(fspath, 'wb') as f: - u = urllib.request.urlopen(url) + if local: + u = open(url, 'rb') + else: + u = urllib.request.urlopen(url) while True: b = u.read(self.bufsize) f.write(b) if len(b) < self.bufsize: break + if local: + u.close() return fspath def transfer_parcel(self, parcel): diff --git a/enserver/worker/tcp.py b/enserver/worker/tcp.py index 39b12f5..ae990f1 100644 --- a/enserver/worker/tcp.py +++ b/enserver/worker/tcp.py @@ -185,7 +185,7 @@ class TCPServerWorker(threading.Thread): return self.workers def process_disconnected(self): - self.workers = filter(lambda worker: worker.is_alive(), self.workers) + self.workers = [x for x in self.workers if x.is_alive()] class AuthError(Exception): @@ -498,7 +498,7 @@ class TCPWorker(threading.Thread): data = self.bufdata.popleft() log.debug('%s - Received data: %s', self.name, data) return json.loads(data) - data = '' + data = b'' self.data_pos = 0 self.data_size = 0 while True: @@ -518,7 +518,7 @@ class TCPWorker(threading.Thread): if not data: break data = self.bufdata.popleft() - if 'ping' not in data and 'pong' not in data: + if b'ping' not in data and b'pong' not in data: log.debug('%s - Received data: %s', self.name, data) return json.loads(data) @@ -589,7 +589,7 @@ class TCPWorker(threading.Thread): data = json.dumps(data) if 'ping' not in data and 'pong' not in data: log.debug('%s - Sending data: %s', self.name, data) - self.socket.sendall(struct.pack('q', len(data)) + data) + self.socket.sendall(struct.pack('q', len(data)) + data.encode('utf-8')) def send_pong(self): self.send_data({'pong': True}) diff --git a/start.sh b/start.sh old mode 100644 new mode 100755 index 490bb59..59a7a84 --- a/start.sh +++ b/start.sh @@ -1 +1,3 @@ -python enserver.py --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/ \ No newline at end of file +source venv/bin/activate +python3 enserver/enserver.py --id bnd127 --db-host 10.10.8.83 --db-port 32101 --auth-provider http://10.10.8.27:9000/ --debug http://10.10.8.27: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/