This commit is contained in:
Ivan Vazhenin
2023-03-26 20:22:27 +03:00
parent b5edf1bab2
commit ac960cd670
3 changed files with 23 additions and 16 deletions

View File

@@ -38,7 +38,7 @@ class ParcelDownloader(Worker):
parcel_dir = os.path.join(self.static_dir, parcel.id) parcel_dir = os.path.join(self.static_dir, parcel.id)
if not os.path.exists(parcel_dir) and files: if not os.path.exists(parcel_dir) and files:
os.mkdir(parcel_dir, 750) os.mkdir(parcel_dir)
try: try:
for f in files: for f in files:
@@ -59,25 +59,30 @@ class ParcelDownloader(Worker):
self.log.info('Downloading file url %s', url) self.log.info('Downloading file url %s', url)
match = self.re_url.match(url) match = self.re_url.match(url)
if match is None: local = match is None
raise urllib.error.URLError('Url does not match the http pattern!') if not local:
url_groups = match.groupdict() url_groups = match.groupdict()
if 'login' in url_groups: if 'login' in url_groups:
url = url_groups['protocol'] + url_groups['path'] url = url_groups['protocol'] + url_groups['path']
passman = urllib.request.HTTPPasswordMgrWithDefaultRealm() passman = urllib.request.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, url_groups.get('login'), url_groups.get('password') or '') passman.add_password(None, url, url_groups.get('login'), url_groups.get('password') or '')
opener = urllib.request.build_opener(urllib.request.HTTPBasicAuthHandler(passman)) opener = urllib.request.build_opener(urllib.request.HTTPBasicAuthHandler(passman))
urllib.request.install_opener(opener) urllib.request.install_opener(opener)
fspath = os.path.join(parcel_dir, name) fspath = os.path.join(parcel_dir, name)
with open(fspath, 'wb') as f: 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: while True:
b = u.read(self.bufsize) b = u.read(self.bufsize)
f.write(b) f.write(b)
if len(b) < self.bufsize: if len(b) < self.bufsize:
break break
if local:
u.close()
return fspath return fspath
def transfer_parcel(self, parcel): def transfer_parcel(self, parcel):

View File

@@ -185,7 +185,7 @@ class TCPServerWorker(threading.Thread):
return self.workers return self.workers
def process_disconnected(self): 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): class AuthError(Exception):
@@ -498,7 +498,7 @@ class TCPWorker(threading.Thread):
data = self.bufdata.popleft() data = self.bufdata.popleft()
log.debug('%s - Received data: %s', self.name, data) log.debug('%s - Received data: %s', self.name, data)
return json.loads(data) return json.loads(data)
data = '' data = b''
self.data_pos = 0 self.data_pos = 0
self.data_size = 0 self.data_size = 0
while True: while True:
@@ -518,7 +518,7 @@ class TCPWorker(threading.Thread):
if not data: if not data:
break break
data = self.bufdata.popleft() 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) log.debug('%s - Received data: %s', self.name, data)
return json.loads(data) return json.loads(data)
@@ -589,7 +589,7 @@ class TCPWorker(threading.Thread):
data = json.dumps(data) data = json.dumps(data)
if 'ping' not in data and 'pong' not in data: if 'ping' not in data and 'pong' not in data:
log.debug('%s - Sending data: %s', self.name, 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): def send_pong(self):
self.send_data({'pong': True}) self.send_data({'pong': True})

4
start.sh Normal file → Executable file
View File

@@ -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/ 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/