mirror of
https://github.com/AudebertAdrien/ft_transcendence.git
synced 2026-02-04 11:40:25 +01:00
Merge branch 'adrien' of github.com:AudebertAdrien/ft_transcendence into trash
This commit is contained in:
commit
2f9d24d4e5
1
.env
1
.env
@ -13,6 +13,7 @@ DB_HOST=db
|
|||||||
DB_PORT=5432
|
DB_PORT=5432
|
||||||
PWD_PATH=${PWD}
|
PWD_PATH=${PWD}
|
||||||
PROJECT_PATH=${PWD_PATH}/pong
|
PROJECT_PATH=${PWD_PATH}/pong
|
||||||
|
DJANGO_LOGS=${PWD_PATH}/logs
|
||||||
|
|
||||||
# ElasticSearch settings
|
# ElasticSearch settings
|
||||||
STACK_VERSION=8.14.3
|
STACK_VERSION=8.14.3
|
||||||
|
|||||||
@ -1,21 +1,28 @@
|
|||||||
input {
|
input {
|
||||||
udp {
|
file {
|
||||||
host => "0.0.0.0"
|
path => "/usr/share/logstash/logs/django.log"
|
||||||
port => 5044
|
start_position => "beginning"
|
||||||
|
sincedb_path => "/dev/null"
|
||||||
|
codec => "json"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
filter {}
|
filter {
|
||||||
|
json {
|
||||||
|
source => "message"
|
||||||
|
target => "json_message"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
output {
|
output {
|
||||||
elasticsearch {
|
elasticsearch {
|
||||||
index => "logstash-%{+YYYY.MM.dd}"
|
|
||||||
hosts => ["https://es01:9200"]
|
hosts => ["https://es01:9200"]
|
||||||
user => "elastic"
|
user => "elastic"
|
||||||
password => elastic_pass
|
password => "${ELASTIC_PASSWORD}"
|
||||||
ssl_enabled => true
|
ssl_enabled => true
|
||||||
ssl_certificate_authorities => "/usr/share/logstash/certs/ca/ca.crt"
|
ssl_certificate_authorities => "/usr/share/logstash/certs/ca/ca.crt"
|
||||||
ssl_verification_mode => "full"
|
ssl_verification_mode => "full"
|
||||||
|
index => "django-logs-%{+YYYY.MM.dd}"
|
||||||
|
}
|
||||||
|
stdout { codec => rubydebug }
|
||||||
}
|
}
|
||||||
#stdout {}
|
|
||||||
}
|
|
||||||
|
|||||||
@ -74,6 +74,7 @@ services:
|
|||||||
venv/bin/daphne -b 0.0.0.0 -p 8080 pong.asgi:application"
|
venv/bin/daphne -b 0.0.0.0 -p 8080 pong.asgi:application"
|
||||||
volumes:
|
volumes:
|
||||||
- pong:/transcendence/pong
|
- pong:/transcendence/pong
|
||||||
|
- pong_django_logs:/transcendence/logs
|
||||||
ports:
|
ports:
|
||||||
- 8080:8080
|
- 8080:8080
|
||||||
networks:
|
networks:
|
||||||
@ -200,6 +201,7 @@ services:
|
|||||||
- certs:/usr/share/logstash/certs
|
- certs:/usr/share/logstash/certs
|
||||||
- pong_logstash_data01:/usr/share/logstash/data
|
- pong_logstash_data01:/usr/share/logstash/data
|
||||||
- ./config/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:ro
|
- ./config/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:ro
|
||||||
|
- pong_django_logs:/usr/share/logstash/logs
|
||||||
ports:
|
ports:
|
||||||
- "5044:5044/udp"
|
- "5044:5044/udp"
|
||||||
command: logstash -f /usr/share/logstash/pipeline/logstash.conf
|
command: logstash -f /usr/share/logstash/pipeline/logstash.conf
|
||||||
@ -217,6 +219,12 @@ volumes:
|
|||||||
type: none
|
type: none
|
||||||
device: ${PROJECT_PATH}
|
device: ${PROJECT_PATH}
|
||||||
o: bind
|
o: bind
|
||||||
|
pong_django_logs:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
device: ${DJANGO_LOGS}
|
||||||
|
o: bind
|
||||||
pong_pg_data:
|
pong_pg_data:
|
||||||
driver: local
|
driver: local
|
||||||
pong_es_data_01:
|
pong_es_data_01:
|
||||||
|
|||||||
1
logs/django.log
Normal file
1
logs/django.log
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"message": "Not Found: /totofaitduvelo", "taskName": null, "status_code": 404, "request": "<ASGIRequest: GET '/totofaitduvelo'>"}
|
||||||
6
makefile
6
makefile
@ -4,7 +4,7 @@ CONTAINER=$(c)
|
|||||||
|
|
||||||
up: down
|
up: down
|
||||||
$(COMPOSE) build
|
$(COMPOSE) build
|
||||||
$(COMPOSE) up $(CONTAINER) || true
|
$(COMPOSE) up -d $(CONTAINER) || true
|
||||||
|
|
||||||
build:
|
build:
|
||||||
$(COMPOSE) build $(CONTAINER)
|
$(COMPOSE) build $(CONTAINER)
|
||||||
@ -20,8 +20,8 @@ down:
|
|||||||
|
|
||||||
destroy:
|
destroy:
|
||||||
$(COMPOSE) down -v --rmi all
|
$(COMPOSE) down -v --rmi all
|
||||||
#sudo lsof -i :5432 | awk 'NR>1 {print $$2}' | xargs sudo kill -9 || true
|
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 :80 | awk 'NR>1 {print $$2}' | xargs sudo kill -9 || true
|
||||||
|
|
||||||
logs:
|
logs:
|
||||||
$(COMPOSE) logs -f $(CONTAINER)
|
$(COMPOSE) logs -f $(CONTAINER)
|
||||||
|
|||||||
@ -40,7 +40,7 @@ class MatchMaker:
|
|||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
self.timer += 1
|
self.timer += 1
|
||||||
# Waiting for more than 30s -> BOT game
|
# Waiting for more than 30s -> BOT game
|
||||||
if self.timer >= 30 and self.waiting_players:
|
if self.timer >= 15 and self.waiting_players:
|
||||||
player1 = self.waiting_players.pop(0)
|
player1 = self.waiting_players.pop(0)
|
||||||
print(f"*** MATCH FOUND: {player1.user.username} vs BOT")
|
print(f"*** MATCH FOUND: {player1.user.username} vs BOT")
|
||||||
self.botgame = True
|
self.botgame = True
|
||||||
@ -112,4 +112,4 @@ class MatchMaker:
|
|||||||
match_maker = MatchMaker()
|
match_maker = MatchMaker()
|
||||||
|
|
||||||
# to get what you want use get_player_p_win(player_name) !! (voir utils.py)
|
# to get what you want use get_player_p_win(player_name) !! (voir utils.py)
|
||||||
#
|
#
|
||||||
|
|||||||
@ -6,8 +6,9 @@ Django settings for pong project.
|
|||||||
Generated by 'django-admin startproject' using Django 3.2.
|
Generated by 'django-admin startproject' using Django 3.2.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from pathlib import Path
|
|
||||||
import os
|
import os
|
||||||
|
import logging.config
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
@ -136,18 +137,36 @@ CHANNEL_LAYERS = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
LOGGING = {
|
LOGGING = {
|
||||||
'version': 1,
|
'version': 1, # The version of the logging configuration schema
|
||||||
'disable_existing_loggers': False,
|
'disable_existing_loggers': False, # Allows existing loggers to keep logging
|
||||||
'handlers': {
|
'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': {
|
'console': {
|
||||||
'level': 'DEBUG',
|
'level': 'DEBUG', # Minimum log level to be handled (DEBUG and above)
|
||||||
'class': 'logging.StreamHandler',
|
'class': 'logging.StreamHandler',
|
||||||
|
'formatter': 'default', # Uses the default text formatter
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'loggers': {
|
'loggers': { # Loggers are the actual log streams that get configured
|
||||||
'django': {
|
'django': { # The Django logger catches all messages sent by the Django framework
|
||||||
'handlers': ['console'],
|
'handlers': ['file', 'console'], # Sends logs to both the file and the console
|
||||||
'level': 'DEBUG',
|
'level': 'DEBUG', # Minimum log level to be logged
|
||||||
|
'propagate': True, # If True, messages will be passed to the parent loggers as well
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@ -557,28 +557,31 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
const matchListBody = document.querySelector('#match-list tbody');
|
const matchListBody = document.querySelector('#match-list tbody');
|
||||||
matchListBody.innerHTML = '';
|
matchListBody.innerHTML = '';
|
||||||
|
|
||||||
if (matches.length === 0) {
|
const row = document.createElement('tr');
|
||||||
console.log('No matches to display');
|
if (matches.length != 0) {
|
||||||
}
|
matches.forEach(match => {
|
||||||
|
row.innerHTML = `
|
||||||
matches.forEach(match => {
|
<td>${match.id}</td>
|
||||||
const row = document.createElement('tr');
|
<td>${match.player1__name}</td>
|
||||||
row.innerHTML = `
|
<td>${match.player2__name}</td>
|
||||||
<td>${match.id}</td>
|
<td>${match.score_player1}</td>
|
||||||
<td>${match.player1__name}</td>
|
<td>${match.score_player2}</td>
|
||||||
<td>${match.player2__name}</td>
|
<td>${match.winner__name}</td>
|
||||||
<td>${match.score_player1}</td>
|
<td>${match.nbr_ball_touch_p1}</td>
|
||||||
<td>${match.score_player2}</td>
|
<td>${match.nbr_ball_touch_p2}</td>
|
||||||
<td>${match.winner__name}</td>
|
<td>${match.duration}</td>
|
||||||
<td>${match.nbr_ball_touch_p1}</td>
|
<td>${match.date}</td>
|
||||||
<td>${match.nbr_ball_touch_p2}</td>
|
<td>${match.is_tournoi}</td>
|
||||||
<td>${match.duration}</td>
|
<td>${match.tournoi__name}</td>
|
||||||
<td>${match.date}</td>
|
`;
|
||||||
<td>${match.is_tournoi}</td>
|
matchListBody.appendChild(row);
|
||||||
<td>${match.tournoi__name}</td>
|
});
|
||||||
`;
|
} else {
|
||||||
matchListBody.appendChild(row);
|
row.innerHTML = `
|
||||||
});
|
<td colspan="12">No matches found.</td>
|
||||||
|
`;
|
||||||
|
matchListBody.appendChild(row);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function displayPlayers(players) {
|
function displayPlayers(players) {
|
||||||
@ -586,51 +589,58 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
const playersListBody = document.querySelector('#player-list tbody');
|
const playersListBody = document.querySelector('#player-list tbody');
|
||||||
playersListBody.innerHTML = '';
|
playersListBody.innerHTML = '';
|
||||||
|
|
||||||
if (players.length === 0) {
|
const row = document.createElement('tr');
|
||||||
console.log('No players to display');
|
if (players.length != 0) {
|
||||||
}
|
players.forEach(player => {
|
||||||
|
row.innerHTML = `
|
||||||
|
<td>${player.id}</td>
|
||||||
|
<td>${player.name}</td>
|
||||||
|
<td>${player.total_match}</td>
|
||||||
|
<td>${player.total_win}</td>
|
||||||
|
<td>${player.p_win}</td>
|
||||||
|
<td>${player.m_score_match}</td>
|
||||||
|
<td>${player.m_score_adv_match}</td>
|
||||||
|
<td>${player.best_score}</td>
|
||||||
|
<td>${player.m_nbr_ball_touch}</td>
|
||||||
|
<td>${player.total_duration}</td>
|
||||||
|
<td>${player.m_duration}</td>
|
||||||
|
<td>${player.num_participated_tournaments}</td>
|
||||||
|
<td>${player.num_won_tournaments}</td>
|
||||||
|
`;
|
||||||
|
playersListBody.appendChild(row);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
row.innerHTML = `
|
||||||
|
<td colspan="12">No matches found.</td>
|
||||||
|
`
|
||||||
|
playersListBody.appendChild(row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
players.forEach(player => {
|
function displayTournois(tournois) {
|
||||||
const row = document.createElement('tr');
|
console.log('Displaying tournois:');
|
||||||
row.innerHTML = `
|
const tournoisListBody = document.querySelector('#tournoi-list tbody');
|
||||||
<td>${player.id}</td>
|
tournoisListBody.innerHTML = '';
|
||||||
<td>${player.name}</td>
|
|
||||||
<td>${player.total_match}</td>
|
|
||||||
<td>${player.total_win}</td>
|
|
||||||
<td>${player.p_win}</td>
|
|
||||||
<td>${player.m_score_match}</td>
|
|
||||||
<td>${player.m_score_adv_match}</td>
|
|
||||||
<td>${player.best_score}</td>
|
|
||||||
<td>${player.m_nbr_ball_touch}</td>
|
|
||||||
<td>${player.total_duration}</td>
|
|
||||||
<td>${player.m_duration}</td>
|
|
||||||
<td>${player.num_participated_tournaments}</td>
|
|
||||||
<td>${player.num_won_tournaments}</td>
|
|
||||||
`;
|
|
||||||
playersListBody.appendChild(row);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function displayTournois(tournois) {
|
const row = document.createElement('tr');
|
||||||
console.log('Displaying tournois:');
|
if (tournois.length != 0) {
|
||||||
const tournoisListBody = document.querySelector('#tournoi-list tbody');
|
tournois.forEach(tournoi => {
|
||||||
tournoisListBody.innerHTML = '';
|
row.innerHTML = `
|
||||||
|
<td>${tournoi.id}</td>
|
||||||
if (tournois.length === 0) {
|
<td>${tournoi.name}</td>
|
||||||
console.log('No tournois to display');
|
<td>${tournoi.nbr_player}</td>
|
||||||
}
|
<td>${tournoi.date}</td>
|
||||||
|
<td>${tournoi.winner.name}</td>
|
||||||
tournois.forEach(tournoi => {
|
`;
|
||||||
const row = document.createElement('tr');
|
tournoisListBody.appendChild(row);
|
||||||
row.innerHTML = `
|
});
|
||||||
<td>${tournoi.id}</td>
|
} else {
|
||||||
<td>${tournoi.name}</td>
|
row.innerHTML = `
|
||||||
<td>${tournoi.nbr_player}</td>
|
<td colspan="12">No matches found.</td>
|
||||||
<td>${tournoi.date}</td>
|
`
|
||||||
<td>${tournoi.winner.name}</td>
|
tournoisListBody.appendChild(row);
|
||||||
`;
|
}
|
||||||
tournoisListBody.appendChild(row);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////// END BURGER BUTTON ////////////////////////////////
|
////////////////////////////// END BURGER BUTTON ////////////////////////////////
|
||||||
|
|||||||
@ -144,27 +144,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for match in matches %}
|
</tbody>
|
||||||
<tr>
|
|
||||||
<td>{{ match.id }}</td>
|
|
||||||
<td>{{ match.player1.name }}</td>
|
|
||||||
<td>{{ match.player2.name }}</td>
|
|
||||||
<td>{{ match.score_player1 }}</td>
|
|
||||||
<td>{{ match.score_player2 }}</td>
|
|
||||||
<td>{{ match.winner.name }}</td>
|
|
||||||
<td>{{ match.nbr_ball_touch_p1 }}</td>
|
|
||||||
<td>{{ match.nbr_ball_touch_p2 }}</td>
|
|
||||||
<td>{{ match.duration }}</td>
|
|
||||||
<td>{{ match.date }}</td>
|
|
||||||
<td>{{ match.is_tournoi }}</td>
|
|
||||||
<td>{{ match.tournoi.name }}</td>
|
|
||||||
</tr>
|
|
||||||
{% empty %}
|
|
||||||
<tr>
|
|
||||||
<td colspan="12">No matches found.</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -189,28 +169,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for player in players %}
|
</tbody>
|
||||||
<tr>
|
|
||||||
<td>{{ player.id }}</td>
|
|
||||||
<td>{{ player.name }}</td>
|
|
||||||
<td>{{ player.total_match }}</td>
|
|
||||||
<td>{{ player.total_win }}</td>
|
|
||||||
<td>{{ player.p_win }}</td>
|
|
||||||
<td>{{ player.m_score_match }}</td>
|
|
||||||
<td>{{ player.m_score_adv_match }}</td>
|
|
||||||
<td>{{ player.best_score }}</td>
|
|
||||||
<td>{{ player.m_nbr_ball_touch }}</td>
|
|
||||||
<td>{{ player.total_duration }}</td>
|
|
||||||
<td>{{ player.m_duration }}</td>
|
|
||||||
<td>{{ player.num_participated_tournaments }}</td>
|
|
||||||
<td>{{ player.num_won_tournaments }}</td>
|
|
||||||
</tr>
|
|
||||||
{% empty %}
|
|
||||||
<tr>
|
|
||||||
<td colspan="13">No players found.</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -226,21 +185,8 @@
|
|||||||
<th>Winner</th>
|
<th>Winner</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for tournoi in tournois %}
|
</tbody>
|
||||||
<tr>
|
|
||||||
<td>{{ tournoi.id }}</td>
|
|
||||||
<td>{{ tournoi.name }}</td>
|
|
||||||
<td>{{ tournoi.nbr_player }}</td>
|
|
||||||
<td>{{ tournoi.date }}</td>
|
|
||||||
<td>{{ tournoi.winner.name }}</td>
|
|
||||||
</tr>
|
|
||||||
{% empty %}
|
|
||||||
<tr>
|
|
||||||
<td colspan="14">No tournois found.</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -5,3 +5,4 @@ channels
|
|||||||
daphne
|
daphne
|
||||||
djangorestframework
|
djangorestframework
|
||||||
web3
|
web3
|
||||||
|
python-json-logger==2.0.7
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user