From 6c04bcd122dd4e3002dc60180c73367072492a93 Mon Sep 17 00:00:00 2001 From: Yigithan Karabulut Date: Sun, 21 Jul 2024 03:07:42 +0300 Subject: [PATCH] fix some bugs. --- .env | 26 +++---- apigateway/Dockerfile | 1 + apigateway/apigateway/settings.py | 2 +- apigateway/src/middleware.py | 4 +- apigateway/src/views.py | 22 +++--- authservice/Dockerfile | 1 + authservice/authservice/settings.py | 2 +- bucketservice/Dockerfile | 1 + bucketservice/media/images/author.jpg | Bin 0 -> 81942 bytes docker-compose.yml | 71 +++++++++++++------ friendservice/Dockerfile | 1 + frontend/Dockerfile | 3 +- frontend/src/contants/contants.js | 2 +- frontend/src/routes/game/Game.js | 10 ++- frontend/src/routes/join/Join.js | 9 ++- gameplayservice/gameplayservice/consumers.py | 5 +- gameplayservice/gameplayservice/settings.py | 2 +- gameservice/Dockerfile | 1 + gameservice/gameservice/settings.py | 6 +- mailservice/Dockerfile | 2 + mailservice/mailservice/settings.py | 2 +- statusservice/Dockerfile | 2 + statusservice/statusservice/settings.py | 17 +---- usermanagement/Dockerfile | 2 + usermanagement/usermanagement/settings.py | 2 +- 25 files changed, 113 insertions(+), 83 deletions(-) create mode 100644 bucketservice/media/images/author.jpg diff --git a/.env b/.env index b0babcb..399ed3a 100644 --- a/.env +++ b/.env @@ -1,3 +1,4 @@ +# TODO: user search boş gönderilmiycek, form validation. avatar eklenmeden istek atılınca erroru handlela. gameplayde updategame token kaldır. friends ->>><<<< # ------ Common Storages Credentials ------ REDIS_HOST=redis REDIS_PORT=6379 @@ -8,11 +9,12 @@ RABBITMQ_DEFAULT_PASS=guest RABBITMQ_DEFAULT_VHOST=/ RABBITMQ_QUEUE_NAME=mail-service -FRONTEND_URL="http://127.0.0.1:808" +FRONTEND_URL="https://127.0.0.1:443" +NGINX_SSL_CN="127.0.0.1:443" # Apigateway TODO: update apigateway cors and allowed hosts settings ApiGateway_SECRET_KEY="MySecretKey-ApiGateway-123-ABC-456-DEF" -ApiGateway_DEBUG=True +ApiGateway_DEBUG=False # Gameservice GameService_SECRET_KEY="MySecretKey-GameService-123-ABC-456-DEF" @@ -25,16 +27,16 @@ GameService_DB_PORT=5432 # Authservice TODO: update authservice cors and allowed hosts settings AuthService_SECRET_KEY="MySecretKey-AuthService-123-ABC-456-DEF" -AuthService_DEBUG=True -INTRA_REDIRECT_URL='https://api.intra.42.fr/oauth/authorize?client_id=u-s4t2ud-dc37cfd139ab23e08bf900d921dfd5e1aaa6d5d5884b8f2d701707e575cc6b36&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fauth%2Fintra%2Fcallback&response_type=code' +AuthService_DEBUG=False +INTRA_REDIRECT_URL='https://api.intra.42.fr/oauth/authorize?client_id=u-s4t2ud-dc37cfd139ab23e08bf900d921dfd5e1aaa6d5d5884b8f2d701707e575cc6b36&redirect_uri=https%3A%2F%2F127.0.0.1%3A443%2Fapi%2Fauth%2Fintra%2Fcallback&response_type=code' INTRA_UID='u-s4t2ud-dc37cfd139ab23e08bf900d921dfd5e1aaa6d5d5884b8f2d701707e575cc6b36' INTRA_SECRET='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' INTRA_API_URL="https://api.intra.42.fr" -INTRA_CALLBACK_URL="http://localhost:8000/auth/intra/callback" +INTRA_CALLBACK_URL="https://127.0.0.1:443/api/auth/intra/callback" # Bucketservice BucketService_SECRET_KEY="MySecretKey-BucketService-123-ABC-456-DEF" -BucketService_DEBUG=True +BucketService_DEBUG=False BucketService_DB_NAME=bucketpostgres BucketService_DB_USER=yigit BucketService_DB_PASSWORD=yigit @@ -43,7 +45,7 @@ BucketService_DB_PORT=5432 # Friendservice FriendService_SECRET_KEY="MySecretKey-FriendService-123-ABC-456-DEF" -FriendService_DEBUG=True +FriendService_DEBUG=False FriendService_DB_NAME=friendpostgres FriendService_DB_USER=yigit FriendService_DB_PASSWORD=yigit @@ -52,11 +54,11 @@ FriendService_DB_PORT=5432 # Gameplayservice GamePlayService_SECRET_KEY="MySecretKey-GameplayService-123-ABC-456-DEF" -GamePlayService_DEBUG=True +GamePlayService_DEBUG=False # TODO: Mailservice rabbitmq/host/port/debug/secrkey and smtp server needs to be updated MailService_SECRET_KEY="MySecretKey-MailService-123-ABC-456-DEF" -MailService_DEBUG=True +MailService_DEBUG=False MailService_EMAIL_HOST=smtp.gmail.com MailService_EMAIL_PORT=587 MailService_EMAIL_USE_TLS=True @@ -65,13 +67,13 @@ MailService_EMAIL_HOST_PASSWORD=aowjdppvonjvayng # Statusservice StatusService_SECRET_KEY="MySecretKey-StatusService-123-ABC-456-DEF" -StatusService_DEBUG=True +StatusService_DEBUG=False # UserManagemen UserManagement_SECRET_KEY="MySecretKey-UserManagement-123-ABC-456-DEF" -UserManagement_DEBUG=True +UserManagement_DEBUG=False UserManagement_DB_NAME=userpostgres UserManagement_DB_USER=yigit UserManagement_DB_PASSWORD=yigit UserManagement_DB_HOST=userpostgres -UserManagement_DB_PORT=5432 \ No newline at end of file +UserManagement_DB_PORT=5432 diff --git a/apigateway/Dockerfile b/apigateway/Dockerfile index 1d3180c..89420d4 100644 --- a/apigateway/Dockerfile +++ b/apigateway/Dockerfile @@ -8,5 +8,6 @@ RUN pip3 install --upgrade pip RUN pip3 install -r requirements.txt +EXPOSE 8000 CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"] diff --git a/apigateway/apigateway/settings.py b/apigateway/apigateway/settings.py index 9b08866..22ec87d 100644 --- a/apigateway/apigateway/settings.py +++ b/apigateway/apigateway/settings.py @@ -26,7 +26,7 @@ # SECURITY WARNING: don't run with debug turned on in production! DEBUG = os.environ.get('DEBUG') -ALLOWED_HOSTS = ['35.242.209.3', 'localhost', '127.0.0.1', '0.0.0.0', 'apigateway', 'usermanagement', 'authservice', 'gameservice', 'friendservice', 'statusservice', 'gameplayservice', '[::1]'] +ALLOWED_HOSTS = ['*'] # Application definition diff --git a/apigateway/src/middleware.py b/apigateway/src/middleware.py index 619e5d2..59c20c0 100644 --- a/apigateway/src/middleware.py +++ b/apigateway/src/middleware.py @@ -20,7 +20,7 @@ def process_view(self, request, view_func, view_args, view_kwargs): if request.path in self.paths_to_exclude: return None - if request.path.startswith('/user/email_verify'): + if request.path.startswith('/user/email_verify') or request.path.startswith('/user/reset-password') or request.path.startswith('/user/pwd/change'): return None token = request.headers.get('Authorization') @@ -35,4 +35,4 @@ def process_view(self, request, view_func, view_args, view_kwargs): return JsonResponse({'error': err_msg}, status=status) request.user_id = response.json().get('user_id') - return None + return None \ No newline at end of file diff --git a/apigateway/src/views.py b/apigateway/src/views.py index cc50871..b4ef12c 100644 --- a/apigateway/src/views.py +++ b/apigateway/src/views.py @@ -1,5 +1,4 @@ import logging - import requests from django.conf import settings from django.http import HttpResponseRedirect @@ -12,8 +11,7 @@ class APIGatewayView(APIView): def operations(self, request, path): headers = dict(request.headers) - if request.path.startswith('/user/email_verify'): - headers['Content-Type'] = 'application/json' + if request.path.startswith('/user/email_verify') or request.path.startswith('/user/reset-password') or request.path.startswith('/user/pwd/change'): return pass_request_to_destination_service(request, path, headers) if not (settings.EXCLUDED_ROUTES and request.path in settings.EXCLUDED_ROUTES): headers['id'] = str(request.user_id) @@ -41,10 +39,17 @@ def pass_request_to_destination_service(request, path, headers): return Response({'error': 'Invalid path'}, status=status.HTTP_404_NOT_FOUND) full_url = f"{base_url}/{path}" + logging.error("--++++++++ full_url: %s", full_url) params = request.query_params if params: full_url += f"?{params.urlencode()}" method = request.method.lower() + if path.startswith('user/email_verify') or path.startswith('user/reset-password'): + logging.error("---------------------<>>>>>>>>>>>>>>>>> ") + response = requests.get(full_url) + json_response = response.json() + if 'redirect_url' in json_response: + return HttpResponseRedirect(json_response['redirect_url']) try: response = requests.request(method, full_url, headers=headers, json=request.data) except requests.exceptions.RequestException as e: @@ -56,15 +61,6 @@ def pass_request_to_destination_service(request, path, headers): if 'redirect_url' in json_response: return HttpResponseRedirect(json_response['redirect_url']) - if path.startswith('user/email_verify') and response.status_code == 200: - try: - json_response = response.json() - if 'redirect_url' in json_response: - return HttpResponseRedirect(json_response['redirect_url']) - except Exception as e: - logging.error(f"Error in request: {e}") - return Response({'error': 'Internal server error'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) - if response.headers.get('content-type') == 'application/json': return Response(response.json(), status=response.status_code) return Response(response.content, status=response.status_code) @@ -74,4 +70,4 @@ def get_service_url(path): for route, url in settings.SERVICE_ROUTES.items(): if path.startswith(route): return url - return None + return None \ No newline at end of file diff --git a/authservice/Dockerfile b/authservice/Dockerfile index 334e0cd..97f0478 100644 --- a/authservice/Dockerfile +++ b/authservice/Dockerfile @@ -8,5 +8,6 @@ RUN pip3 install --upgrade pip RUN pip3 install -r requirements.txt +EXPOSE 8001 CMD [ "python3", "manage.py", "runserver", "0.0.0.0:8001"] diff --git a/authservice/authservice/settings.py b/authservice/authservice/settings.py index d71b559..fb5c446 100644 --- a/authservice/authservice/settings.py +++ b/authservice/authservice/settings.py @@ -26,7 +26,7 @@ # SECURITY WARNING: don't run with debug turned on in production! DEBUG = os.environ.get('DEBUG') -ALLOWED_HOSTS = ['35.242.209.3', 'localhost', '127.0.0.1', '0.0.0.0', 'authservice', 'apigateway', 'usermanagement', 'gameservice', 'friendservice', 'statusservice', 'gameplayservice'] +ALLOWED_HOSTS = ['*'] INTRA_REDIRECT_URL = os.environ.get('INTRA_REDIRECT_URL') INTRA_UID = os.environ.get('INTRA_UID') diff --git a/bucketservice/Dockerfile b/bucketservice/Dockerfile index f627c74..5b37741 100644 --- a/bucketservice/Dockerfile +++ b/bucketservice/Dockerfile @@ -16,6 +16,7 @@ COPY start.sh /app/start.sh RUN chmod +x /app/start.sh +EXPOSE 8014 ENTRYPOINT ["sh", "./start.sh"] diff --git a/bucketservice/media/images/author.jpg b/bucketservice/media/images/author.jpg new file mode 100644 index 0000000000000000000000000000000000000000..98963c80a771b512484010d4a44a7b60f0d2f789 GIT binary patch literal 81942 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 { const row = document.createElement("tr"); @@ -84,4 +87,4 @@ export async function fetchJoin() { currentPage = newPage; fetchJoin(); }, "pagination-container"); -} +} \ No newline at end of file diff --git a/gameplayservice/gameplayservice/consumers.py b/gameplayservice/gameplayservice/consumers.py index 33ba81a..f5f9dfd 100644 --- a/gameplayservice/gameplayservice/consumers.py +++ b/gameplayservice/gameplayservice/consumers.py @@ -101,10 +101,11 @@ async def connect(self): 'username': tmp_player_name } } + rooms[self.room_id]['game_status'] = 0 self.username = tmp_player_name #rooms[self.room_id]['user_count'] = 1 logging.error(rooms[self.room_id]) - elif len(rooms[self.room_id]) == 1: + elif len(rooms[self.room_id]) > 1: if tmp_player_name == rooms[self.room_id]['padd_left']['username']: await self.close() return @@ -322,6 +323,8 @@ async def receive(self, text_data=None, bytes_data=None): # rooms[room_id]['padd_left']['info']['positionY'] += rooms[room_id]['padd_left']['info']['speed'] # elif self.channel_name in rooms[room_id]['padd_right']['player']: # rooms[room_id]['padd_right']['info']['positionY'] += rooms[room_id]['padd_right']['info']['speed'] + if rooms[room_id]['game_status'] != 1: + return if text_data == 'w': if self.username == rooms[room_id]['padd_left']['username']: rooms[room_id]['padd_left']['info']['positionY'] -= rooms[room_id]['padd_left']['info']['speed'] diff --git a/gameplayservice/gameplayservice/settings.py b/gameplayservice/gameplayservice/settings.py index e0de2a5..f1f51a6 100644 --- a/gameplayservice/gameplayservice/settings.py +++ b/gameplayservice/gameplayservice/settings.py @@ -26,7 +26,7 @@ # SECURITY WARNING: don't run with debug turned on in production! DEBUG = os.environ.get('DEBUG') -ALLOWED_HOSTS = ['localhost', '127.0.0.1', '[::1]'] +ALLOWED_HOSTS = ['*'] # Application definition diff --git a/gameservice/Dockerfile b/gameservice/Dockerfile index 20d1c8e..a0072fa 100644 --- a/gameservice/Dockerfile +++ b/gameservice/Dockerfile @@ -16,6 +16,7 @@ COPY start.sh /app/start.sh RUN chmod +x /app/start.sh +EXPOSE 8010 ENTRYPOINT ["sh", "./start.sh"] diff --git a/gameservice/gameservice/settings.py b/gameservice/gameservice/settings.py index 918654b..29da3a0 100644 --- a/gameservice/gameservice/settings.py +++ b/gameservice/gameservice/settings.py @@ -26,7 +26,7 @@ # SECURITY WARNING: don't run with debug turned on in production! DEBUG = os.environ.get('DEBUG') -ALLOWED_HOSTS = ['35.242.209.3', 'localhost', '127.0.0.1', '0.0.0.0', 'apigateway', 'usermanagement', 'authservice', 'gameservice', 'friendservice', 'statusservice', 'gameplayservice'] +ALLOWED_HOSTS = ['*'] # Application definition @@ -45,10 +45,6 @@ SERVICE_ROUTES = { '/auth': 'http://authservice:8001', '/user': 'http://usermanagement:8004', - # '/user': 'http://localhost:8004', - # '/friend': 'http://friend:8002', - # '/friend': 'http://localhost:8002', - # '/match': 'http://localhost:8008', } MIDDLEWARE = [ diff --git a/mailservice/Dockerfile b/mailservice/Dockerfile index 801caa0..c5c53d3 100644 --- a/mailservice/Dockerfile +++ b/mailservice/Dockerfile @@ -8,4 +8,6 @@ RUN pip3 install --upgrade pip RUN pip3 install -r requirements.txt +EXPOSE 8005 + CMD [ "python3", "manage.py", "runserver", "0.0.0.0:8005"] diff --git a/mailservice/mailservice/settings.py b/mailservice/mailservice/settings.py index 737f4b4..80639a8 100644 --- a/mailservice/mailservice/settings.py +++ b/mailservice/mailservice/settings.py @@ -26,7 +26,7 @@ # SECURITY WARNING: don't run with debug turned on in production! DEBUG = os.environ.get('DEBUG') -ALLOWED_HOSTS = [] +ALLOWED_HOSTS = ['*'] # Application definition diff --git a/statusservice/Dockerfile b/statusservice/Dockerfile index 13093ac..5511793 100644 --- a/statusservice/Dockerfile +++ b/statusservice/Dockerfile @@ -12,4 +12,6 @@ RUN pip3 install --upgrade pip RUN pip3 install -r requirements.txt +EXPOSE 8020 + CMD ["daphne", "statusservice.asgi:application", "-b", "0.0.0.0", "-p", "8020"] diff --git a/statusservice/statusservice/settings.py b/statusservice/statusservice/settings.py index a8ef727..ca481b2 100644 --- a/statusservice/statusservice/settings.py +++ b/statusservice/statusservice/settings.py @@ -26,7 +26,7 @@ # SECURITY WARNING: don't run with debug turned on in production! DEBUG = os.environ.get('DEBUG') -ALLOWED_HOSTS = ['localhost', '127.0.0.1', '[::1]', '*'] +ALLOWED_HOSTS = ['*'] # Application definition @@ -79,21 +79,6 @@ WSGI_APPLICATION = 'statusservice.wsgi.application' ASGI_APPLICATION = "statusservice.asgi.application" -# CHANNEL_LAYERS = { -# 'default': { -# 'BACKEND': 'channels.layers.InMemoryChannelLayer', -# }, -# } - -# CHANNEL_LAYERS = { -# 'default': { -# 'BACKEND': 'channels.layers.RedisChannelLayer', -# 'CONFIG': { -# 'hosts': [(os.environ.get('REDIS_HOST'), os.environ.get('REDIS_PORT'))], -# }, -# }, -# } - CHANNEL_LAYERS = { "default": { "BACKEND": "channels_redis.core.RedisChannelLayer", diff --git a/usermanagement/Dockerfile b/usermanagement/Dockerfile index 5c51524..0515fab 100644 --- a/usermanagement/Dockerfile +++ b/usermanagement/Dockerfile @@ -16,6 +16,8 @@ COPY start.sh /app/start.sh RUN chmod +x /app/start.sh +EXPOSE 8004 + ENTRYPOINT ["sh", "./start.sh"] CMD ["python3", "manage.py", "runserver", "0.0.0.0:8004"] diff --git a/usermanagement/usermanagement/settings.py b/usermanagement/usermanagement/settings.py index f424250..c78046f 100644 --- a/usermanagement/usermanagement/settings.py +++ b/usermanagement/usermanagement/settings.py @@ -26,7 +26,7 @@ # SECURITY WARNING: don't run with debug turned on in production! DEBUG = os.environ.get('DEBUG') -ALLOWED_HOSTS = ['0.0.0.0', 'localhost', '127.0.0.1', 'apigateway', 'usermanagement', 'authservice', '35.242.209.3'] +ALLOWED_HOSTS = ['*'] # Application definition