From 7d48af1fec9ed01930eabeb033bc6df6ced99d34 Mon Sep 17 00:00:00 2001 From: Adrien Audebert Date: Tue, 10 Sep 2024 14:36:59 +0200 Subject: [PATCH 01/13] Remove all .env files and add to .gitignore --- .env | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100644 .env diff --git a/.env b/.env deleted file mode 100644 index 28e29d9..0000000 --- a/.env +++ /dev/null @@ -1,32 +0,0 @@ -# Django settings -SECRET_KEY="FollowTheWhiteRabbit" -DEBUG=True -DJANGO_ALLOWED_HOSTS=['*'] - -# PostgreSQL settings -POSTGRES_DB=players_db -POSTGRES_USER=42student -POSTGRES_PASSWORD=qwerty - -# Django settings -DB_HOST=db -DB_PORT=5432 -PWD_PATH=${PWD} -PROJECT_PATH=${PWD_PATH}/pong -DJANGO_LOGS=${PWD_PATH}/logs - -# ElasticSearch settings -STACK_VERSION=8.14.3 -CLUSTER_NAME=docker-cluster -LICENSE=basic - -ELASTIC_USERNAME=elastic -ELASTIC_PASSWORD=elastic_pass - -# Kibana settings -KIBANA_PORT=5601 -KIBANA_USERNAME=kibana_system -KIBANA_PASSWORD=kibana_pass - -ENCRYPTION_KEY=c34d38b3a14956121ff2170e5030b471551370178f43e5626eec58b04a30fae2 - From a83984a6473736561ae3c01fae9b3eb0629cdc5c Mon Sep 17 00:00:00 2001 From: Adrien Audebert Date: Tue, 10 Sep 2024 15:14:55 +0200 Subject: [PATCH 02/13] merge chaku --- .gitignore | 6 ------ makefile | 4 ++-- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index acddfd3..5500a2b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,3 @@ venv/ __pycache__/ -data/ .env -makefile -docker-compose.old.yml -docker-compose.yml -logs/django.log -pong/settings.py \ No newline at end of file diff --git a/makefile b/makefile index 45a9a55..6d3c8d1 100644 --- a/makefile +++ b/makefile @@ -4,7 +4,7 @@ CONTAINER=$(c) up: down $(COMPOSE) build - $(COMPOSE) up --remove-orphans $(CONTAINER) + $(COMPOSE) up $(CONTAINER) build: $(COMPOSE) build $(CONTAINER) @@ -19,7 +19,7 @@ down: $(COMPOSE) down $(CONTAINER) destroy: - $(COMPOSE) down -v --rmi all + $(COMPOSE) down -v --rmi all --remove-orphans sudo lsof -i :5432 | awk 'NR>1 {print $$2}' | xargs sudo kill -9 || true sudo lsof -i :80 | awk 'NR>1 {print $$2}' | xargs sudo kill -9 || true From 0be57c836927e7cb8adfe3bbf8f300fb12d1e773 Mon Sep 17 00:00:00 2001 From: Adrien Audebert Date: Tue, 10 Sep 2024 15:44:00 +0200 Subject: [PATCH 03/13] merge thouch --- env_template | 1 + logs/django.log | 1 + makefile | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/env_template b/env_template index b297aeb..5d52cf0 100644 --- a/env_template +++ b/env_template @@ -13,6 +13,7 @@ DB_HOST=db DB_PORT=5432 PWD_PATH=${PWD} PROJECT_PATH=${PWD_PATH}/pong +DJANGO_LOGS=${PWD_PATH}/logs # ElasticSearch settings STACK_VERSION=8.14.3 diff --git a/logs/django.log b/logs/django.log index 39a3693..444904d 100644 --- a/logs/django.log +++ b/logs/django.log @@ -6,3 +6,4 @@ {"message": "Not Found: /favicon.ico", "taskName": null, "status_code": 404, "request": ""} {"message": "Not Found: /favicon.ico", "taskName": null, "status_code": 404, "request": ""} {"message": "Not Found: /favicon.ico", "taskName": null, "status_code": 404, "request": ""} +{"message": "Not Found: /favicon.ico", "taskName": null, "status_code": 404, "request": ""} diff --git a/makefile b/makefile index 6d3c8d1..87de884 100644 --- a/makefile +++ b/makefile @@ -4,7 +4,7 @@ CONTAINER=$(c) up: down $(COMPOSE) build - $(COMPOSE) up $(CONTAINER) + $(COMPOSE) up -d $(CONTAINER) || true build: $(COMPOSE) build $(CONTAINER) From 66fca33ca456fe9e21301325a0ada160d4b5eaf8 Mon Sep 17 00:00:00 2001 From: Adrien Audebert Date: Tue, 10 Sep 2024 15:50:32 +0200 Subject: [PATCH 04/13] fix issue --- makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefile b/makefile index 87de884..c1bb2b8 100644 --- a/makefile +++ b/makefile @@ -19,7 +19,7 @@ down: $(COMPOSE) down $(CONTAINER) destroy: - $(COMPOSE) down -v --rmi all --remove-orphans + $(COMPOSE) down -v --rmi all sudo lsof -i :5432 | awk 'NR>1 {print $$2}' | xargs sudo kill -9 || true sudo lsof -i :80 | awk 'NR>1 {print $$2}' | xargs sudo kill -9 || true From 7c1c4a868f065b10f0b6e8012bfdf8fed20a51e1 Mon Sep 17 00:00:00 2001 From: Adrien Audebert Date: Tue, 10 Sep 2024 15:58:40 +0200 Subject: [PATCH 05/13] remove log path --- docker-compose.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 33a4a7e..062be5a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -219,10 +219,6 @@ volumes: o: bind pong_django_logs: driver: local - driver_opts: - type: none - device: ${DJANGO_LOGS} - o: bind pong_pg_data: driver: local pong_es_data_01: From 6fb4641d9990849adb1bcde4c96deb397920d211 Mon Sep 17 00:00:00 2001 From: Adrien Audebert Date: Tue, 10 Sep 2024 16:09:03 +0200 Subject: [PATCH 06/13] kill pid makefile --- docker-compose.yml | 2 -- makefile | 9 ++++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index e4c2828..33a4a7e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -58,8 +58,6 @@ services: timeout: 5s retries: 120 - - backend: build: context: . diff --git a/makefile b/makefile index 0c6d19d..dc489d3 100644 --- a/makefile +++ b/makefile @@ -20,8 +20,15 @@ down: destroy: $(COMPOSE) down -v --rmi all + +kill-pid: sudo lsof -i :5432 | awk 'NR>1 {print $$2}' | xargs sudo kill -9 || true - sudo lsof -i :80 | awk 'NR>1 {print $$2}' | xargs sudo kill -9 || true + sudo lsof -i :5601 | awk 'NR>1 {print $$2}' | xargs sudo kill -9 || true + sudo lsof -i :9200 | awk 'NR>1 {print $$2}' | xargs sudo kill -9 || true + sudo lsof -i :8080 | awk 'NR>1 {print $$2}' | xargs sudo kill -9 || true + sudo lsof -i :5044 | awk 'NR>1 {print $$2}' | xargs sudo kill -9 || true + + logs: $(COMPOSE) logs -f $(CONTAINER) From 5d75be718d30d072d4a41413f650a66b8c6b9b41 Mon Sep 17 00:00:00 2001 From: Adrien Audebert Date: Tue, 10 Sep 2024 16:41:28 +0200 Subject: [PATCH 07/13] remove old --- docker-compose.yml_old | 75 ------------------------------------------ 1 file changed, 75 deletions(-) delete mode 100644 docker-compose.yml_old diff --git a/docker-compose.yml_old b/docker-compose.yml_old deleted file mode 100644 index aa21870..0000000 --- a/docker-compose.yml_old +++ /dev/null @@ -1,75 +0,0 @@ -services: - backend: - build: - context: . - dockerfile: Dockerfile - image: backend - container_name: backend - restart: always - command: /bin/sh -c "sleep 5 && - venv/bin/python manage.py makemigrations --noinput && - venv/bin/python manage.py migrate --noinput && - venv/bin/python manage.py collectstatic --noinput && - venv/bin/daphne -b 0.0.0.0 -p 8080 pong.asgi:application" - volumes: - - pong:/transcendence/pong - - pong_django_logs:/transcendence/logs - ports: - - 8080:8080 - networks: - - app-network - environment: - DB_HOST: db - DB_PORT: 5432 - DB_NAME: ${POSTGRES_DB} - DB_USER: ${POSTGRES_USER} - DB_PASSWORD: ${POSTGRES_PASSWORD} - depends_on: - - db - healthcheck: - test: ["CMD-SHELL", "curl", "http://localhost:8080"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 10s - - db: - image: postgres:latest - container_name: postgres - restart: always - volumes: - - pong_pg_data:/var/lib/postgresql/data - ports: - - "5432:5432" - networks: - - app-network - environment: - POSTGRES_DB: ${POSTGRES_DB} - POSTGRES_USER: ${POSTGRES_USER} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - healthcheck: - test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] - interval: 10s - timeout: 5s - retries: 5 - -volumes: - pong: - driver: local - driver_opts: - type: none - device: ${PROJECT_PATH} - o: bind - pong_django_logs: - driver: local - driver_opts: - type: none - device: ${DJANGO_LOGS} - o: bind - pong_pg_data: - driver: local - -networks: - app-network: - name: app-network - driver: bridge From 239d6ef51cbc2614047c24002aa01551be9f967f Mon Sep 17 00:00:00 2001 From: CHIBOUB Chakib Date: Tue, 10 Sep 2024 17:34:49 +0200 Subject: [PATCH 08/13] log in tournament end game --- pong/game/game.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pong/game/game.py b/pong/game/game.py index f8b6059..56fe7ed 100644 --- a/pong/game/game.py +++ b/pong/game/game.py @@ -245,9 +245,11 @@ class Game: await self.player2.send(end_message) if hasattr(self, 'tournament'): len_tournament = await sync_to_async(getlen)() + name_tournament = self.tournament.name + " #" + str(len_tournament + 1) + print(f"- Saving match game #{self.game_id} of tournament: {name_tournament}") await sync_to_async(handle_game_data)(self.game_state['player1_name'], self.game_state['player2_name'], self.game_state['player1_score'], self.game_state['player2_score'], - self.bt1, self.bt2, duration, True, self.tournament.name + " #" + str(len_tournament + 1)) + self.bt1, self.bt2, duration, True, name_tournament) else: await sync_to_async(handle_game_data)(self.game_state['player1_name'], self.game_state['player2_name'], self.game_state['player1_score'], self.game_state['player2_score'], From f4a93fd6043f28fce7a710f888f9c177801a218f Mon Sep 17 00:00:00 2001 From: Adrien Audebert Date: Tue, 10 Sep 2024 17:43:30 +0200 Subject: [PATCH 09/13] remove unused path --- docker-compose.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 33a4a7e..062be5a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -219,10 +219,6 @@ volumes: o: bind pong_django_logs: driver: local - driver_opts: - type: none - device: ${DJANGO_LOGS} - o: bind pong_pg_data: driver: local pong_es_data_01: From b86386edb57539060af6e2480b47be19b2b35ead Mon Sep 17 00:00:00 2001 From: CHIBOUB Chakib Date: Tue, 10 Sep 2024 17:45:52 +0200 Subject: [PATCH 10/13] fixed my .gitignore --- docker-compose.yml | 240 ----------------------------------------- docker-compose.yml_old | 75 ------------- pong/settings.py | 172 ----------------------------- 3 files changed, 487 deletions(-) delete mode 100644 docker-compose.yml delete mode 100644 docker-compose.yml_old delete mode 100644 pong/settings.py diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 33a4a7e..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,240 +0,0 @@ -services: - setup: - image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} - container_name: setup - user: "0" - volumes: - - certs:/usr/share/elasticsearch/config/certs - command: > - bash -c ' - if [ x${ELASTIC_PASSWORD} == x ]; then - echo "Set the ELASTIC_PASSWORD environment variable in the .env file"; - exit 1; - elif [ x${KIBANA_PASSWORD} == x ]; then - echo "Set the KIBANA_PASSWORD environment variable in the .env file"; - exit 1; - fi; - if [ ! -f config/certs/ca.zip ]; then - echo "Creating CA"; - bin/elasticsearch-certutil ca --silent --pem -out config/certs/ca.zip; - unzip config/certs/ca.zip -d config/certs; - fi; - if [ ! -f config/certs/certs.zip ]; then - echo "Creating certs"; - echo -ne \ - "instances:\n"\ - " - name: es01\n"\ - " dns:\n"\ - " - es01\n"\ - " - localhost\n"\ - " ip:\n"\ - " - 127.0.0.1\n"\ - " - name: kibana\n"\ - " dns:\n"\ - " - kibana\n"\ - " - localhost\n"\ - " ip:\n"\ - " - 127.0.0.1\n"\ - > config/certs/instances.yml; - - bin/elasticsearch-certutil cert --silent --pem -out config/certs/certs.zip --in config/certs/instances.yml --ca-cert config/certs/ca/ca.crt --ca-key config/certs/ca/ca.key; - unzip config/certs/certs.zip -d config/certs; - fi; - - echo "Setting file permissions" - chown -R root:root config/certs; - find . -type d -exec chmod 750 \{\} \;; - find . -type f -exec chmod 640 \{\} \;; - - echo "Waiting for Elasticsearch availability"; - until curl -s --cacert config/certs/ca/ca.crt https://es01:9200 | grep -q "missing authentication credentials"; do sleep 30; done; - echo "Setting kibana_system password"; - until curl -s -X POST --cacert config/certs/ca/ca.crt -u "elastic:${ELASTIC_PASSWORD}" -H "Content-Type: application/json" https://es01:9200/_security/user/kibana_system/_password -d "{\"password\":\"${KIBANA_PASSWORD}\"}" | grep -q "^{}"; do sleep 10; done; - echo "All done!"; - ' - healthcheck: - test: ["CMD-SHELL", "[ -f config/certs/es01/es01.crt ]"] - interval: 1s - timeout: 5s - retries: 120 - - backend: - build: - context: . - dockerfile: Dockerfile - image: backend - container_name: backend - restart: always - command: /bin/sh -c "sleep 5 && - venv/bin/python manage.py makemigrations --noinput && - venv/bin/python manage.py migrate --noinput && - venv/bin/python manage.py collectstatic --noinput && - venv/bin/daphne -b 0.0.0.0 -p 8080 pong.asgi:application" - volumes: - - pong:/transcendence/pong - - pong_django_logs:/transcendence/logs - ports: - - 8080:8080 - networks: - - app-network - environment: - DB_HOST: db - DB_PORT: 5432 - DB_NAME: ${POSTGRES_DB} - DB_USER: ${POSTGRES_USER} - DB_PASSWORD: ${POSTGRES_PASSWORD} - depends_on: - - db - healthcheck: - test: ["CMD-SHELL", "curl", "http://localhost:8080"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 10s - - db: - image: postgres:latest - container_name: postgres - restart: always - volumes: - - pong_pg_data:/var/lib/postgresql/data - ports: - - "5432:5432" - networks: - - app-network - environment: - POSTGRES_DB: ${POSTGRES_DB} - POSTGRES_USER: ${POSTGRES_USER} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - healthcheck: - test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] - interval: 10s - timeout: 5s - retries: 5 - - es01: - image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} - container_name: es01 - depends_on: - setup: - condition: service_healthy - volumes: - - certs:/usr/share/elasticsearch/config/certs:ro - - pong_es_data_01:/usr/share/elasticsearch/data - labels: - co.elastic.logs/module: elasticsearch - ports: - - 9200:9200 - environment: - - node.name=es01 - - cluster.name=${CLUSTER_NAME} - - discovery.type=single-node - - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} - - bootstrap.memory_lock=true - - xpack.security.enabled=true - - xpack.security.http.ssl.enabled=true - - xpack.security.http.ssl.key=certs/es01/es01.key - - xpack.security.http.ssl.certificate=certs/es01/es01.crt - - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt - - xpack.security.transport.ssl.enabled=true - - xpack.security.transport.ssl.key=certs/es01/es01.key - - xpack.security.transport.ssl.certificate=certs/es01/es01.crt - - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt - - xpack.security.transport.ssl.verification_mode=certificate - - xpack.license.self_generated.type=${LICENSE} - healthcheck: - test: - [ - "CMD-SHELL", - "curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'", - ] - interval: 10s - timeout: 10s - retries: 120 - - kibana: - image: docker.elastic.co/kibana/kibana:${STACK_VERSION} - container_name: kibana - labels: - co.elastic.logs/module: kibana - depends_on: - es01: - condition: service_healthy - volumes: - - certs:/usr/share/kibana/config/certs:ro - - pong_kibana:/usr/share/kibana/data - ports: - - 5601:5601 - environment: - - SERVERNAME=kibana - - ELASTICSEARCH_HOSTS=https://es01:9200 - - ELASTICSEARCH_USERNAME=${KIBANA_USERNAME} - - ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD} - - ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=config/certs/ca/ca.crt - - XPACK_SECURITY_ENCRYPTIONKEY=${ENCRYPTION_KEY} - - XPACK_ENCRYPTEDSAVEDOBJECTS_ENCRYPTIONKEY=${ENCRYPTION_KEY} - - XPACK_REPORTING_ENCRYPTIONKEY=${ENCRYPTION_KEY} - healthcheck: - test: - [ - "CMD-SHELL", - "curl -s -I http://localhost:5601 | grep -q 'HTTP/1.1 302 Found'" - ] - interval: 10s - timeout: 10s - retries: 120 - - logstash01: - image: docker.elastic.co/logstash/logstash:${STACK_VERSION} - container_name: logstash01 - labels: - co.elastic.logs/module: logstash - user: root - depends_on: - es01: - condition: service_healthy - kibana: - condition: service_healthy - volumes: - - certs:/usr/share/logstash/certs - - pong_logstash_data01:/usr/share/logstash/data - - ./config/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:ro - - pong_django_logs:/usr/share/logstash/logs - ports: - - "5044:5044/udp" - command: logstash -f /usr/share/logstash/pipeline/logstash.conf - environment: - - NODE_NAME="logstash" - - ELASTIC_HOSTS=https://es01:9200 - - ELASTIC_USER=${ELASTIC_USERNAME} - - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} - - xpack.monitoring.enabled=false - -volumes: - pong: - driver: local - driver_opts: - type: none - device: ${PROJECT_PATH} - o: bind - pong_django_logs: - driver: local - driver_opts: - type: none - device: ${DJANGO_LOGS} - o: bind - pong_pg_data: - driver: local - pong_es_data_01: - driver: local - pong_kibana: - driver: local - pong_logstash_data01: - driver: local - certs: - driver: local - -networks: - app-network: - name: app-network - driver: bridge diff --git a/docker-compose.yml_old b/docker-compose.yml_old deleted file mode 100644 index aa21870..0000000 --- a/docker-compose.yml_old +++ /dev/null @@ -1,75 +0,0 @@ -services: - backend: - build: - context: . - dockerfile: Dockerfile - image: backend - container_name: backend - restart: always - command: /bin/sh -c "sleep 5 && - venv/bin/python manage.py makemigrations --noinput && - venv/bin/python manage.py migrate --noinput && - venv/bin/python manage.py collectstatic --noinput && - venv/bin/daphne -b 0.0.0.0 -p 8080 pong.asgi:application" - volumes: - - pong:/transcendence/pong - - pong_django_logs:/transcendence/logs - ports: - - 8080:8080 - networks: - - app-network - environment: - DB_HOST: db - DB_PORT: 5432 - DB_NAME: ${POSTGRES_DB} - DB_USER: ${POSTGRES_USER} - DB_PASSWORD: ${POSTGRES_PASSWORD} - depends_on: - - db - healthcheck: - test: ["CMD-SHELL", "curl", "http://localhost:8080"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 10s - - db: - image: postgres:latest - container_name: postgres - restart: always - volumes: - - pong_pg_data:/var/lib/postgresql/data - ports: - - "5432:5432" - networks: - - app-network - environment: - POSTGRES_DB: ${POSTGRES_DB} - POSTGRES_USER: ${POSTGRES_USER} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - healthcheck: - test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] - interval: 10s - timeout: 5s - retries: 5 - -volumes: - pong: - driver: local - driver_opts: - type: none - device: ${PROJECT_PATH} - o: bind - pong_django_logs: - driver: local - driver_opts: - type: none - device: ${DJANGO_LOGS} - o: bind - pong_pg_data: - driver: local - -networks: - app-network: - name: app-network - driver: bridge diff --git a/pong/settings.py b/pong/settings.py deleted file mode 100644 index b44ccdf..0000000 --- a/pong/settings.py +++ /dev/null @@ -1,172 +0,0 @@ -# /pong/settings.py - -""" -Django settings for pong project. - -Generated by 'django-admin startproject' using Django 3.2. -""" - -import os -import logging.config -from pathlib import Path - -# Build paths inside the project like this: BASE_DIR / 'subdir'. -BASE_DIR = Path(__file__).resolve().parent.parent - - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = '12345678' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = ['*'] - - -# Application definition - -INSTALLED_APPS = [ - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'channels', - 'pong.game', - 'rest_framework' -] - -MIDDLEWARE = [ - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', -] - -ROOT_URLCONF = 'pong.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(BASE_DIR, 'pong', 'static')], # Ensure templates are found - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - -ASGI_APPLICATION = 'pong.asgi.application' - -# Database -# https://docs.djangoproject.com/en/3.2/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql', - 'NAME': os.getenv('DB_NAME'), - 'USER': os.getenv('DB_USER'), - 'PASSWORD': os.getenv('DB_PASSWORD'), - 'HOST': os.getenv('DB_HOST'), - 'PORT': '5432', - } -} - -# Password validation -# https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, -] - -# Internationalization -# https://docs.djangoproject.com/en/3.2/topics/i18n/ - -LANGUAGE_CODE = 'en-us' - -TIME_ZONE = 'UTC' - -USE_I18N = True - -USE_L10N = True - -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/3.2/howto/static-files/ - -STATIC_URL = '/static/' -STATICFILES_DIRS = [os.path.join(BASE_DIR, 'pong/static')] -STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') - -# Default primary key field type -# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field - -DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' - -# Channels -# Define the channel layers for WebSockets -CHANNEL_LAYERS = { - 'default': { - 'BACKEND': 'channels.layers.InMemoryChannelLayer', - }, -} - -LOGGING = { - 'version': 1, # The version of the logging configuration schema - 'disable_existing_loggers': False, # Allows existing loggers to keep logging - 'formatters': { # Defines how log messages will be formatted - 'json': { - '()': 'pythonjsonlogger.jsonlogger.JsonFormatter', - # Formatter that outputs logs in JSON format, which is ideal for ingestion by Logstash. - }, - 'default': { - 'format': '[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s', - # This is a basic text formatter with timestamp, log level, logger name, line number, and the actual message. - }, - }, - 'handlers': { # Handlers determine where the log messages are sent - 'file': { - 'level': 'INFO', # Minimum log level to be handled (INFO and above) - 'class': 'logging.FileHandler', - 'filename': os.path.join(BASE_DIR, 'logs/django.log'), # The file where logs will be saved - 'formatter': 'json', # Uses the JSON formatter defined above - }, - 'console': { - 'level': 'DEBUG', # Minimum log level to be handled (DEBUG and above) - 'class': 'logging.StreamHandler', - 'formatter': 'default', # Uses the default text formatter - }, - }, - 'loggers': { # Loggers are the actual log streams that get configured - 'django': { # The Django logger catches all messages sent by the Django framework - 'handlers': ['file', 'console'], # Sends logs to both the file and the console - 'level': 'DEBUG', # Minimum log level to be logged - 'propagate': True, # If True, messages will be passed to the parent loggers as well - }, - }, -} From 0e9193f98a2222cda57d10776e98278cb3fd2f6c Mon Sep 17 00:00:00 2001 From: Adrien Audebert Date: Wed, 11 Sep 2024 14:47:27 +0200 Subject: [PATCH 11/13] repare project --- .env | 31 +++++++++ env_template | 3 +- pong/settings.py | 172 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 204 insertions(+), 2 deletions(-) create mode 100644 .env create mode 100644 pong/settings.py diff --git a/.env b/.env new file mode 100644 index 0000000..66aac01 --- /dev/null +++ b/.env @@ -0,0 +1,31 @@ +# Django settings +SECRET_KEY="FollowTheWhiteRabbit" +DEBUG=True +DJANGO_ALLOWED_HOSTS=['*'] + +# PostgreSQL settings +POSTGRES_DB=players_db +POSTGRES_USER=42student +POSTGRES_PASSWORD=qwerty + +# Django settings +DB_HOST=db +DB_PORT=5432 +PWD_PATH=${PWD} +PROJECT_PATH=${PWD_PATH}/pong + +# ElasticSearch settings +STACK_VERSION=8.14.3 +CLUSTER_NAME=docker-cluster +LICENSE=basic + +ELASTIC_USERNAME=elastic +ELASTIC_PASSWORD=elastic_pass + +# Kibana settings +KIBANA_PORT=5601 +KIBANA_USERNAME=kibana_system +KIBANA_PASSWORD=kibana_pass + +ENCRYPTION_KEY=c34d38b3a14956121ff2170e5030b471551370178f43e5626eec58b04a30fae2 + diff --git a/env_template b/env_template index 5d52cf0..165b010 100644 --- a/env_template +++ b/env_template @@ -13,7 +13,6 @@ DB_HOST=db DB_PORT=5432 PWD_PATH=${PWD} PROJECT_PATH=${PWD_PATH}/pong -DJANGO_LOGS=${PWD_PATH}/logs # ElasticSearch settings STACK_VERSION=8.14.3 @@ -25,7 +24,7 @@ ELASTIC_PASSWORD= # Kibana settings KIBANA_PORT=5601 -KIBANA_USERNAME= +KIBANA_USERNAME=kibana_system KIBANA_PASSWORD= ENCRYPTION_KEY=c34d38b3a14956121ff2170e5030b471551370178f43e5626eec58b04a30fae2 diff --git a/pong/settings.py b/pong/settings.py new file mode 100644 index 0000000..b44ccdf --- /dev/null +++ b/pong/settings.py @@ -0,0 +1,172 @@ +# /pong/settings.py + +""" +Django settings for pong project. + +Generated by 'django-admin startproject' using Django 3.2. +""" + +import os +import logging.config +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = '12345678' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = ['*'] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'channels', + 'pong.game', + 'rest_framework' +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'pong.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [os.path.join(BASE_DIR, 'pong', 'static')], # Ensure templates are found + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +ASGI_APPLICATION = 'pong.asgi.application' + +# Database +# https://docs.djangoproject.com/en/3.2/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql', + 'NAME': os.getenv('DB_NAME'), + 'USER': os.getenv('DB_USER'), + 'PASSWORD': os.getenv('DB_PASSWORD'), + 'HOST': os.getenv('DB_HOST'), + 'PORT': '5432', + } +} + +# Password validation +# https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + +# Internationalization +# https://docs.djangoproject.com/en/3.2/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/3.2/howto/static-files/ + +STATIC_URL = '/static/' +STATICFILES_DIRS = [os.path.join(BASE_DIR, 'pong/static')] +STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') + +# Default primary key field type +# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + +# Channels +# Define the channel layers for WebSockets +CHANNEL_LAYERS = { + 'default': { + 'BACKEND': 'channels.layers.InMemoryChannelLayer', + }, +} + +LOGGING = { + 'version': 1, # The version of the logging configuration schema + 'disable_existing_loggers': False, # Allows existing loggers to keep logging + 'formatters': { # Defines how log messages will be formatted + 'json': { + '()': 'pythonjsonlogger.jsonlogger.JsonFormatter', + # Formatter that outputs logs in JSON format, which is ideal for ingestion by Logstash. + }, + 'default': { + 'format': '[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s', + # This is a basic text formatter with timestamp, log level, logger name, line number, and the actual message. + }, + }, + 'handlers': { # Handlers determine where the log messages are sent + 'file': { + 'level': 'INFO', # Minimum log level to be handled (INFO and above) + 'class': 'logging.FileHandler', + 'filename': os.path.join(BASE_DIR, 'logs/django.log'), # The file where logs will be saved + 'formatter': 'json', # Uses the JSON formatter defined above + }, + 'console': { + 'level': 'DEBUG', # Minimum log level to be handled (DEBUG and above) + 'class': 'logging.StreamHandler', + 'formatter': 'default', # Uses the default text formatter + }, + }, + 'loggers': { # Loggers are the actual log streams that get configured + 'django': { # The Django logger catches all messages sent by the Django framework + 'handlers': ['file', 'console'], # Sends logs to both the file and the console + 'level': 'DEBUG', # Minimum log level to be logged + 'propagate': True, # If True, messages will be passed to the parent loggers as well + }, + }, +} From 77610e64f3a99f566ed687682d7c749f1ee5f91c Mon Sep 17 00:00:00 2001 From: Adrien Audebert Date: Wed, 11 Sep 2024 14:48:11 +0200 Subject: [PATCH 12/13] clena code --- makefile | 2 -- 1 file changed, 2 deletions(-) diff --git a/makefile b/makefile index 0fb37fb..e7fbc31 100644 --- a/makefile +++ b/makefile @@ -28,8 +28,6 @@ kill-pid: sudo lsof -i :8080 | awk 'NR>1 {print $$2}' | xargs sudo kill -9 || true sudo lsof -i :5044 | awk 'NR>1 {print $$2}' | xargs sudo kill -9 || true - - logs: $(COMPOSE) logs -f $(CONTAINER) From 0cbc6c4e43a1df7bda0f88354d17852ba9282f76 Mon Sep 17 00:00:00 2001 From: Adrien Audebert Date: Wed, 11 Sep 2024 14:49:46 +0200 Subject: [PATCH 13/13] remove .env --- .env | 31 ------------------------------- 1 file changed, 31 deletions(-) delete mode 100644 .env diff --git a/.env b/.env deleted file mode 100644 index 66aac01..0000000 --- a/.env +++ /dev/null @@ -1,31 +0,0 @@ -# Django settings -SECRET_KEY="FollowTheWhiteRabbit" -DEBUG=True -DJANGO_ALLOWED_HOSTS=['*'] - -# PostgreSQL settings -POSTGRES_DB=players_db -POSTGRES_USER=42student -POSTGRES_PASSWORD=qwerty - -# Django settings -DB_HOST=db -DB_PORT=5432 -PWD_PATH=${PWD} -PROJECT_PATH=${PWD_PATH}/pong - -# ElasticSearch settings -STACK_VERSION=8.14.3 -CLUSTER_NAME=docker-cluster -LICENSE=basic - -ELASTIC_USERNAME=elastic -ELASTIC_PASSWORD=elastic_pass - -# Kibana settings -KIBANA_PORT=5601 -KIBANA_USERNAME=kibana_system -KIBANA_PASSWORD=kibana_pass - -ENCRYPTION_KEY=c34d38b3a14956121ff2170e5030b471551370178f43e5626eec58b04a30fae2 -