Fix key ids

This commit is contained in:
Ultradesu
2025-03-13 01:43:33 +02:00
parent ed8bfe7f06
commit 43c86e2075
3 changed files with 16 additions and 15 deletions

View File

@ -2,9 +2,9 @@ FROM python:3.12.3
WORKDIR /app WORKDIR /app
#COPY requirements.txt ./ COPY ./requirements.txt .
COPY . .
RUN pip install --no-cache-dir -r requirements.txt RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN python manage.py collectstatic --noinput RUN python manage.py collectstatic --noinput

View File

@ -3,8 +3,6 @@ services:
#image: ultradesu/outfleet:v2 #image: ultradesu/outfleet:v2
image: outfleet:local image: outfleet:local
container_name: outfleet-web container_name: outfleet-web
# volumes:
# - .:/app
build: build:
context: . context: .
ports: ports:
@ -27,7 +25,7 @@ services:
python manage.py create_admin && python manage.py create_admin &&
python manage.py runserver 0.0.0.0:8000" python manage.py runserver 0.0.0.0:8000"
worker: worker:
image: ultradesu/outfleet:v2 image: outfleet:local
container_name: outfleet-worker container_name: outfleet-worker
# volumes: # volumes:
# - .:/app # - .:/app
@ -46,7 +44,7 @@ services:
command: > command: >
sh -c "sleep 3 && celery -A mysite worker" sh -c "sleep 3 && celery -A mysite worker"
beat: beat:
image: ultradesu/outfleet:v2 image: outfleet:local
container_name: outfleet-beat container_name: outfleet-beat
# volumes: # volumes:
# - .:/app # - .:/app

View File

@ -67,6 +67,9 @@ class OutlineServer(Server):
def get_server_status(self, raw=False): def get_server_status(self, raw=False):
status = {} status = {}
for key in self.client.get_keys():
c.delete_key(key.key_id)
try: try:
info = self.client.get_server_information() info = self.client.get_server_information()
if raw: if raw:
@ -115,7 +118,10 @@ class OutlineServer(Server):
raise OutlineConnectionError("Client error. Can't connect.", original_exception=e) raise OutlineConnectionError("Client error. Can't connect.", original_exception=e)
def _get_key(self, user): def _get_key(self, user):
return self.client.get_key(user.hash) logger.error(f"Asking for key for user {user.username}")
result = self.client.get_key(str(user.username))
logger.error(f"Got key for user {user.username} - {result}")
return result
def get_user(self, user, raw=False): def get_user(self, user, raw=False):
user_info = self._get_key(user) user_info = self._get_key(user)
@ -150,9 +156,8 @@ class OutlineServer(Server):
self.client.delete_key(user.hash): self.client.delete_key(user.hash):
self.delete_user(user) self.delete_user(user)
key_id = f"{user.username}-{user.hash}"
key = self.client.create_key( key = self.client.create_key(
key_id=key_id, key_id=user.username,
name=user.username, name=user.username,
method=server_user.method, method=server_user.method,
password=user.hash, password=user.hash,
@ -162,9 +167,8 @@ class OutlineServer(Server):
logger.debug(f"[{self.name}] User {user.username} updated") logger.debug(f"[{self.name}] User {user.username} updated")
else: else:
try: try:
key_id = f"{user.username}-{user.hash}"
key = self.client.create_key( key = self.client.create_key(
key_id=key_id, key_id=user.username,
name=user.username, name=user.username,
method="chacha20-ietf-poly1305", method="chacha20-ietf-poly1305",
password=user.hash, password=user.hash,
@ -177,10 +181,9 @@ class OutlineServer(Server):
if "code\":\"Conflict" in error_message: if "code\":\"Conflict" in error_message:
logger.warning(f"[{self.name}] Conflict for User {user.username}, trying to force sync. {error_message}") logger.warning(f"[{self.name}] Conflict for User {user.username}, trying to force sync. {error_message}")
for key in self.client.get_keys(): for key in self.client.get_keys():
logger.warning(f"[{self.name}] hash: {user.hash}, password: {key.password}") logger.warning(f"[{self.name}] checking user: {key.name} passowrd: {key.password}")
if key.password == user.hash: if key.password == user.hash:
self.client.delete_key(key.key_id) self.delete_user(user)
logger.warning(f"[{self.name}] Removed orphan key{str(key)}")
return self.add_user(user) return self.add_user(user)
else: else:
raise OutlineConnectionError("API Error", original_exception=e) raise OutlineConnectionError("API Error", original_exception=e)
@ -203,7 +206,7 @@ class OutlineServer(Server):
return {"status": "User not found on server. Nothing to do."} return {"status": "User not found on server. Nothing to do."}
if server_user: if server_user:
self.logger.info(f"[{self.name}] TEST") self.logger.info(f"Deleting key with key_id: {server_user.key_id}")
self.client.delete_key(server_user.key_id) self.client.delete_key(server_user.key_id)
result = {"status": "User was deleted"} result = {"status": "User was deleted"}
self.logger.info(f"[{self.name}] User deleted: {user.username} on server {self.name}") self.logger.info(f"[{self.name}] User deleted: {user.username} on server {self.name}")