Compare commits

...

16 Commits

29 changed files with 381 additions and 362 deletions

104
bot.py
View File

@ -1,104 +0,0 @@
import os
import discord
import discord.utils
import urllib.request, json
import asyncio
import json
import logging
TOKEN = os.getenv('DISCORD_TOKEN')
GUILD = '42ctf'
intents = discord.Intents.all()
client = discord.Client(intents=intents)
db_file = open('members.json', 'r')
users = json.load(db_file)
db_file.close()
logging.basicConfig(filename='bot.log', format='%(asctime)s %(message)s', level=logging.INFO)
guild = ''
roles = {}
def get_rank(token):
url = urllib.request.urlopen("https://www.42ctf.org/accounts/rank/" + token)
data = json.loads(url.read().decode())
rank = data['rank']
return rank
async def watch_roles():
global users
await client.wait_until_ready() # ensures cache is loaded
while not client.is_closed():
for member_id, token in users.items():
if (token == "0000"):
continue
member = discord.utils.get(guild.members, id=int(member_id))
rank = get_rank(token)
if rank == 1 and roles['top1'] not in member.roles:
await member.add_roles(roles['top1'])
await member.remove_roles(roles['top10'])
await member.remove_roles(roles['top50'])
elif rank > 1 and rank <= 10 and roles['top10'] not in member.roles:
await member.add_roles(roles['top10'])
await member.remove_roles(roles['top1'])
await member.remove_roles(roles['top50'])
elif rank > 10 and rank <= 50 and roles['top50'] not in member.roles:
await member.add_roles(roles['top50'])
await member.remove_roles(roles['top10'])
await member.remove_roles(roles['top1'])
elif rank > 50:
await member.remove_roles(roles['top1'])
await member.remove_roles(roles['top10'])
await member.remove_roles(roles['top50'])
await asyncio.sleep(60)
@client.event
async def on_ready():
global guild, roles
guild = discord.utils.get(client.guilds, name=GUILD)
roles['top10'] = discord.utils.get(guild.roles, id=801787467064672286)
roles['top1'] = discord.utils.get(guild.roles, id=798638767359524875)
roles['top50'] = discord.utils.get(guild.roles, id=803729539145924649)
logging.info('%s is connected to the following guild: %s(id: %d)', client.user, guild.name, guild.id)
client.loop.create_task(watch_roles())
@client.event
async def on_message(message):
global guild, roles
if message.author == client.user:
return
if '!connect' in message.content:
try:
user_token = message.content.split(' ')[1]
member = discord.utils.get(guild.members, name=message.author.name)
rank = get_rank(user_token)
users[str(member.id)] = user_token
logging.info("MESSAGE: from %s with token %s", message.author.name, user_token)
with open('members.json', 'w') as json_file:
json.dump(users, json_file)
if rank == 1:
await member.add_roles(roles['top1'])
response = "Congratulations, you're now Top 1. But for how long ?"
elif (rank <= 10):
await member.add_roles(roles['top10'])
response = "You've been granted the Top 10 role. Now, go away and flag !"
elif rank <= 50:
await member.add_roles(roles['top50'])
response = "You've been granted the Top 50 role. Now, go away and flag !"
else:
response = "No role for you now, but I'll keep watching you."
except IndexError:
response = 'usage: !connect 42ctf_token'
await message.author.create_dm()
await message.author.dm_channel.send(response)
client.run(TOKEN)

View File

@ -33,15 +33,38 @@
</br>Token
<input type='text' readonly value='{{token}}'>
</br>
<input class="form-control" type="submit" value="{% trans "Apply" %}">
<input class="form-control" type="submit" value="{% trans " Apply" %}">
</div>
</form>
</div>
</div>
</div>
<div class="ctf-block">
<div class="ctf-head">
<h3>{% trans "Connected accounts" %}</h3>
</div>
<div class="d-none d-md-block col-10 col-md-3 right-sidebar">
<div class="bloc-body">
<div class="d-flex">
{% if user.userprofileinfo.discord_id|length > 0 %}
<form action="{% url 'accounts:connections-disconnect-discord' %}" method='POST'
class="form-inline p-2">
{%csrf_token%}
<button class="btn btn-dark" type="submit">{% trans "Disconnect Discord" %}</button>
</form>
{% else %}
<form action="{% url 'accounts:connections-connect-discord' %}" method='POST'
class="form-inline p-2">
{%csrf_token%}
<button class="btn btn-dark" type="submit">{% trans "Connect Discord" %}</button>
</form>
{% endif %}
</div>
</div>
</div>
</div>
<div class="d-none d-md-block col-10 col-md-3 right-sidebar">
<ul class="list-group">
<li class="list-group-item">{{ user.username }}</li>
<li class="list-group-item">{% trans "Score" %} : {{ user.userprofileinfo.score }}</li>
@ -58,11 +81,10 @@
<form method='GET' action="{% url 'accounts:delete_account' %}">
{%csrf_token%}
<li class="list-group-item">
<input class="form-control" type="submit" value="{% trans "Delete my account" %}">
<input class="form-control" type="submit" value="{% trans " Delete my account" %}">
</li>
</form>
</ul>
</div>
</div>
</div>
{% endblock %}

View File

@ -4,6 +4,7 @@ from django.views.decorators.http import require_POST
from django.views.defaults import bad_request
from django.urls import reverse
from django.shortcuts import redirect
from django.contrib.sites.models import Site
import os
oauth = OAuth()
@ -23,8 +24,9 @@ oauth.register(
def connect(request):
if request.user.userprofileinfo.discord_id:
return bad_request(request, "Already connected")
site = Site.objects.get_current()
redirect_uri = reverse('accounts:connections-connect-discord-authorize')
redirect_uri = request.build_absolute_uri(redirect_uri)
redirect_uri = "https://" + site.domain + redirect_uri[3:] # remove language code
print(redirect_uri)
return oauth.discord.authorize_redirect(request, redirect_uri)

View File

@ -154,17 +154,7 @@ def profile(request, user_name):
return render(request,'accounts/profile.html', {'user':user_obj, 'solves':solves,'solved':solved,'catsDatas': catsDatas, 'pointDatas': pointDatas,
'rank': rank, 'score' : somme, 'member' : member, 'cats':cats})
def rank(request, token):
all_users = UserProfileInfo.objects.filter(score__gt=0).select_related().order_by('-score', 'last_submission_date', 'user__username')
rank = 1
for elem in all_users:
if elem.token == token:
break
rank += 1
data = {"rank": rank}
return JsonResponse(data)
<<<<<<< HEAD
@login_required
def delete_account(request):
@ -182,3 +172,14 @@ def delete_account(request):
else:
return render(request, 'accounts/delete.html', {'deleted': False, 'bad_password': False} )
def rank(request, token):
all_users = UserProfileInfo.objects.filter(score__gt=0).select_related().order_by('-score', 'last_submission_date', 'user__username')
rank = 1
for elem in all_users:
if elem.token == token:
break
rank += 1
data = {"rank": rank}
return JsonResponse(data)

0
src/api/__init__.py Normal file
View File

3
src/api/admin.py Normal file
View File

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

6
src/api/apps.py Normal file
View File

@ -0,0 +1,6 @@
from django.apps import AppConfig
class ApiConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'api'

View File

3
src/api/models.py Normal file
View File

@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

3
src/api/tests.py Normal file
View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

6
src/api/urls.py Normal file
View File

@ -0,0 +1,6 @@
from django.urls import path
from . import views
urlpatterns = [
path('bot/discord', views.discord_bot, name='discord_bot'),
]

27
src/api/views.py Normal file
View File

@ -0,0 +1,27 @@
from django.shortcuts import render
from accounts.models import UserProfileInfo
from django.http import JsonResponse
import os
# Create your views here.
def discord_bot(request):
if request.method != 'GET':
return JsonResponse({'error':'bad request'})
token = request.GET.get('token')
auth_token = os.getenv('BOT_TOKEN')
if (token != auth_token or not auth_token):
return JsonResponse({'error':'not authorized'})
all_users = UserProfileInfo.objects.select_related().order_by('-score', 'last_submission_date', 'user__username')
data = {}
rank = 1
for user in all_users:
if user.discord_id:
data[user.discord_id] = rank
rank += 1
return JsonResponse(data)

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-14 19:36+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: 2022-02-10 19:50+0100\n"
"Last-Translator: Clément Hamada <clementhamada@pm.me>\n"
"Language-Team: \n"
@ -48,7 +48,7 @@ msgstr "Passwort"
#: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:61 ctfs/templates/ctfs/ctfs_list.html:12
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:65
#: events/templates/events/event_info.html:64
#: scoreboard/templates/scoreboard/scoreboard.html:13
@ -60,7 +60,7 @@ msgid "Email"
msgstr "Email"
#: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:62
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:66
#: events/templates/events/event_info.html:65
#: scoreboard/templates/scoreboard/scoreboard.html:14
@ -74,7 +74,7 @@ msgstr "Anwenden"
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/profile.html:46
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:13
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
#: events/templates/events/event_info.html:66
#: events/templates/events/event_info.html:89
#: events/templates/events/manage_team.html:40
@ -138,7 +138,7 @@ msgid "Points"
msgstr "Punkte"
#: accounts/templates/accounts/profile.html:24
#: ctfs/templates/ctfs/ctf_info.html:64
#: ctfs/templates/ctfs/ctf_info.html:66
#: events/templates/events/ctf_info.html:67
#: events/templates/events/team.html:23
msgid "Date"
@ -219,66 +219,58 @@ msgstr "Nutzername bereits vergeben."
msgid "Updated."
msgstr "Aktualisiert."
#: ctfs/templates/ctfs/ctf_info.html:10
#: ctfs/templates/ctfs/ctf_info.html:12
#: events/templates/events/ctf_info.html:12
msgid "Published date"
msgstr "Veröffentlichungsdatum"
#: ctfs/templates/ctfs/ctf_info.html:14
#: ctfs/templates/ctfs/ctf_info.html:16
msgid "Challenge is not yet available."
msgstr "Herausforderung ist noch nicht verfügbar."
#: ctfs/templates/ctfs/ctf_info.html:21
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
"Keine Übersetzung verfügbar. Bitte versuchen Sie es auf einer anderen "
"Sprache noch einmal (Englisch oder Französisch)."
#: ctfs/templates/ctfs/ctf_info.html:27
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr "Herzlichen Glückwunsch!"
#: ctfs/templates/ctfs/ctf_info.html:29
#: ctfs/templates/ctfs/ctf_info.html:31
#: events/templates/events/ctf_info.html:26
msgid "Already flagged"
msgstr "Schon gelöst"
#: ctfs/templates/ctfs/ctf_info.html:31 ctfs/templates/ctfs/ctf_info.html:40
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:36
#: events/templates/events/ctf_info.html:45
msgid "Start the challenge"
msgstr "Herausforderung beginnen"
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:47
msgid "Download"
msgstr "Herunterladen"
#: ctfs/templates/ctfs/ctf_info.html:37
#: ctfs/templates/ctfs/ctf_info.html:39
#: events/templates/events/ctf_info.html:42
msgid "Wrong flag ! You can do it !"
msgstr "Falsche flagge! Sie können es schaffen!"
#: ctfs/templates/ctfs/ctf_info.html:56
#: ctfs/templates/ctfs/ctf_info.html:58
#: events/templates/events/ctf_info.html:60
msgid "Solved by"
msgstr "Gelöst von"
#: ctfs/templates/ctfs/ctf_info.html:80
#: ctfs/templates/ctfs/ctf_info.html:82
#: events/templates/events/ctf_info.html:90
msgid "Nobody has solved this challenge yet."
msgstr "Bisher hat noch niemand diese Herausforderung gelöst."
#: ctfs/templates/ctfs/ctf_info.html:87
#: ctfs/templates/ctfs/ctf_info.html:89
#: events/templates/events/ctf_info.html:97
msgid "Author"
msgstr "Autor/-in"
#: ctfs/templates/ctfs/ctf_info.html:88
#: ctfs/templates/ctfs/ctf_info.html:90
#: events/templates/events/ctf_info.html:98
msgid "Point reward"
msgstr "Belohnungspunkte"
@ -371,6 +363,13 @@ msgstr "Finde mir einen Team!"
msgid "Event"
msgstr "Ereignis"
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
"Keine Übersetzung verfügbar. Bitte versuchen Sie es auf einer anderen "
"Sprache noch einmal (Englisch oder Französisch)."
#: events/templates/events/ctf_info.html:28
#: events/templates/events/event_info.html:18
msgid "This event is over."

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-14 19:36+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -49,7 +49,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:61 ctfs/templates/ctfs/ctfs_list.html:12
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:65
#: events/templates/events/event_info.html:64
#: scoreboard/templates/scoreboard/scoreboard.html:13
@ -61,7 +61,7 @@ msgid "Email"
msgstr ""
#: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:62
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:66
#: events/templates/events/event_info.html:65
#: scoreboard/templates/scoreboard/scoreboard.html:14
@ -75,7 +75,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/profile.html:46
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:13
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
#: events/templates/events/event_info.html:66
#: events/templates/events/event_info.html:89
#: events/templates/events/manage_team.html:40
@ -139,7 +139,7 @@ msgid "Points"
msgstr ""
#: accounts/templates/accounts/profile.html:24
#: ctfs/templates/ctfs/ctf_info.html:64
#: ctfs/templates/ctfs/ctf_info.html:66
#: events/templates/events/ctf_info.html:67
#: events/templates/events/team.html:23
msgid "Date"
@ -218,64 +218,58 @@ msgstr ""
msgid "Updated."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:10
#: ctfs/templates/ctfs/ctf_info.html:12
#: events/templates/events/ctf_info.html:12
msgid "Published date"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:14
#: ctfs/templates/ctfs/ctf_info.html:16
msgid "Challenge is not yet available."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:27
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:29
#: ctfs/templates/ctfs/ctf_info.html:31
#: events/templates/events/ctf_info.html:26
msgid "Already flagged"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:31 ctfs/templates/ctfs/ctf_info.html:40
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:36
#: events/templates/events/ctf_info.html:45
msgid "Start the challenge"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:47
msgid "Download"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:37
#: ctfs/templates/ctfs/ctf_info.html:39
#: events/templates/events/ctf_info.html:42
msgid "Wrong flag ! You can do it !"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:56
#: ctfs/templates/ctfs/ctf_info.html:58
#: events/templates/events/ctf_info.html:60
msgid "Solved by"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:80
#: ctfs/templates/ctfs/ctf_info.html:82
#: events/templates/events/ctf_info.html:90
msgid "Nobody has solved this challenge yet."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:87
#: ctfs/templates/ctfs/ctf_info.html:89
#: events/templates/events/ctf_info.html:97
msgid "Author"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:88
#: ctfs/templates/ctfs/ctf_info.html:90
#: events/templates/events/ctf_info.html:98
msgid "Point reward"
msgstr ""
@ -368,6 +362,11 @@ msgstr ""
msgid "Event"
msgstr ""
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: events/templates/events/ctf_info.html:28
#: events/templates/events/event_info.html:18
msgid "This event is over."

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-14 19:36+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: 2022-02-09 10:55+0100\n"
"Last-Translator: Javier Uhagón (uhagontorralvojavier@gmail.com)\n"
"Language-Team: \n"
@ -49,7 +49,7 @@ msgstr "Contraseña"
#: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:61 ctfs/templates/ctfs/ctfs_list.html:12
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:65
#: events/templates/events/event_info.html:64
#: scoreboard/templates/scoreboard/scoreboard.html:13
@ -61,7 +61,7 @@ msgid "Email"
msgstr "Email"
#: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:62
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:66
#: events/templates/events/event_info.html:65
#: scoreboard/templates/scoreboard/scoreboard.html:14
@ -75,7 +75,7 @@ msgstr "Aplicar"
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/profile.html:46
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:13
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
#: events/templates/events/event_info.html:66
#: events/templates/events/event_info.html:89
#: events/templates/events/manage_team.html:40
@ -139,7 +139,7 @@ msgid "Points"
msgstr "Puntos"
#: accounts/templates/accounts/profile.html:24
#: ctfs/templates/ctfs/ctf_info.html:64
#: ctfs/templates/ctfs/ctf_info.html:66
#: events/templates/events/ctf_info.html:67
#: events/templates/events/team.html:23
msgid "Date"
@ -220,65 +220,58 @@ msgstr "Nombre de usuario ya usado."
msgid "Updated."
msgstr "Actualizado."
#: ctfs/templates/ctfs/ctf_info.html:10
#: ctfs/templates/ctfs/ctf_info.html:12
#: events/templates/events/ctf_info.html:12
msgid "Published date"
msgstr "Fecha de publicación"
#: ctfs/templates/ctfs/ctf_info.html:14
#: ctfs/templates/ctfs/ctf_info.html:16
msgid "Challenge is not yet available."
msgstr "El reto aún no está disponible."
#: ctfs/templates/ctfs/ctf_info.html:21
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
"Traducción no disponible. Por favor pruebe otro idioma (inglés o francés)."
#: ctfs/templates/ctfs/ctf_info.html:27
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr "¡ Felicidades !"
#: ctfs/templates/ctfs/ctf_info.html:29
#: ctfs/templates/ctfs/ctf_info.html:31
#: events/templates/events/ctf_info.html:26
msgid "Already flagged"
msgstr "Flag ya conseguida"
#: ctfs/templates/ctfs/ctf_info.html:31 ctfs/templates/ctfs/ctf_info.html:40
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:36
#: events/templates/events/ctf_info.html:45
msgid "Start the challenge"
msgstr "Comenzar el reto"
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:47
msgid "Download"
msgstr "Descargar"
#: ctfs/templates/ctfs/ctf_info.html:37
#: ctfs/templates/ctfs/ctf_info.html:39
#: events/templates/events/ctf_info.html:42
msgid "Wrong flag ! You can do it !"
msgstr "¡ Flag incorrecta ! ¡ Puedes hacerlo !"
#: ctfs/templates/ctfs/ctf_info.html:56
#: ctfs/templates/ctfs/ctf_info.html:58
#: events/templates/events/ctf_info.html:60
msgid "Solved by"
msgstr "Resuelto por"
#: ctfs/templates/ctfs/ctf_info.html:80
#: ctfs/templates/ctfs/ctf_info.html:82
#: events/templates/events/ctf_info.html:90
msgid "Nobody has solved this challenge yet."
msgstr "Nadie ha resuelto este reto aún."
#: ctfs/templates/ctfs/ctf_info.html:87
#: ctfs/templates/ctfs/ctf_info.html:89
#: events/templates/events/ctf_info.html:97
msgid "Author"
msgstr "Autor"
#: ctfs/templates/ctfs/ctf_info.html:88
#: ctfs/templates/ctfs/ctf_info.html:90
#: events/templates/events/ctf_info.html:98
msgid "Point reward"
msgstr "Recompensa de puntos"
@ -371,6 +364,12 @@ msgstr "¡ Encuentrame un equipo !"
msgid "Event"
msgstr "Evento"
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
"Traducción no disponible. Por favor pruebe otro idioma (inglés o francés)."
#: events/templates/events/ctf_info.html:28
#: events/templates/events/event_info.html:18
msgid "This event is over."

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-14 19:36+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -53,7 +53,7 @@ msgstr "Mot de passe"
#: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:61 ctfs/templates/ctfs/ctfs_list.html:12
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:65
#: events/templates/events/event_info.html:64
#: scoreboard/templates/scoreboard/scoreboard.html:13
@ -65,7 +65,7 @@ msgid "Email"
msgstr "Email"
#: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:62
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:66
#: events/templates/events/event_info.html:65
#: scoreboard/templates/scoreboard/scoreboard.html:14
@ -79,7 +79,7 @@ msgstr "Appliquer"
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/profile.html:46
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:13
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
#: events/templates/events/event_info.html:66
#: events/templates/events/event_info.html:89
#: events/templates/events/manage_team.html:40
@ -145,7 +145,7 @@ msgid "Points"
msgstr "Points"
#: accounts/templates/accounts/profile.html:24
#: ctfs/templates/ctfs/ctf_info.html:64
#: ctfs/templates/ctfs/ctf_info.html:66
#: events/templates/events/ctf_info.html:67
#: events/templates/events/team.html:23
msgid "Date"
@ -228,66 +228,60 @@ msgstr "Le pseudo est déjà utilisé."
msgid "Updated."
msgstr "Mis à jour."
#: ctfs/templates/ctfs/ctf_info.html:10
#: ctfs/templates/ctfs/ctf_info.html:12
#: events/templates/events/ctf_info.html:12
msgid "Published date"
msgstr "Date de publication"
#: ctfs/templates/ctfs/ctf_info.html:14
#: ctfs/templates/ctfs/ctf_info.html:16
#, fuzzy
#| msgid "No category available."
msgid "Challenge is not yet available."
msgstr "Il n'y a pas de catégorie disponible."
#: ctfs/templates/ctfs/ctf_info.html:21
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:27
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr "Félicitations !"
#: ctfs/templates/ctfs/ctf_info.html:29
#: ctfs/templates/ctfs/ctf_info.html:31
#: events/templates/events/ctf_info.html:26
msgid "Already flagged"
msgstr "Déjà résolu"
#: ctfs/templates/ctfs/ctf_info.html:31 ctfs/templates/ctfs/ctf_info.html:40
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:36
#: events/templates/events/ctf_info.html:45
msgid "Start the challenge"
msgstr "Démarrer le challenge"
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:47
msgid "Download"
msgstr "Télécharger"
#: ctfs/templates/ctfs/ctf_info.html:37
#: ctfs/templates/ctfs/ctf_info.html:39
#: events/templates/events/ctf_info.html:42
msgid "Wrong flag ! You can do it !"
msgstr "Mauvais flag ! Vous pouvez le faire !"
#: ctfs/templates/ctfs/ctf_info.html:56
#: ctfs/templates/ctfs/ctf_info.html:58
#: events/templates/events/ctf_info.html:60
msgid "Solved by"
msgstr "Résolu par"
#: ctfs/templates/ctfs/ctf_info.html:80
#: ctfs/templates/ctfs/ctf_info.html:82
#: events/templates/events/ctf_info.html:90
msgid "Nobody has solved this challenge yet."
msgstr "Personne n'a résolu ce CTF."
#: ctfs/templates/ctfs/ctf_info.html:87
#: ctfs/templates/ctfs/ctf_info.html:89
#: events/templates/events/ctf_info.html:97
msgid "Author"
msgstr "Auteur"
#: ctfs/templates/ctfs/ctf_info.html:88
#: ctfs/templates/ctfs/ctf_info.html:90
#: events/templates/events/ctf_info.html:98
msgid "Point reward"
msgstr "Points"
@ -386,6 +380,11 @@ msgstr ""
msgid "Event"
msgstr "Événement"
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: events/templates/events/ctf_info.html:28
#: events/templates/events/event_info.html:18
msgid "This event is over."

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-14 19:36+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -49,7 +49,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:61 ctfs/templates/ctfs/ctfs_list.html:12
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:65
#: events/templates/events/event_info.html:64
#: scoreboard/templates/scoreboard/scoreboard.html:13
@ -61,7 +61,7 @@ msgid "Email"
msgstr ""
#: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:62
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:66
#: events/templates/events/event_info.html:65
#: scoreboard/templates/scoreboard/scoreboard.html:14
@ -75,7 +75,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/profile.html:46
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:13
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
#: events/templates/events/event_info.html:66
#: events/templates/events/event_info.html:89
#: events/templates/events/manage_team.html:40
@ -139,7 +139,7 @@ msgid "Points"
msgstr ""
#: accounts/templates/accounts/profile.html:24
#: ctfs/templates/ctfs/ctf_info.html:64
#: ctfs/templates/ctfs/ctf_info.html:66
#: events/templates/events/ctf_info.html:67
#: events/templates/events/team.html:23
msgid "Date"
@ -218,64 +218,58 @@ msgstr ""
msgid "Updated."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:10
#: ctfs/templates/ctfs/ctf_info.html:12
#: events/templates/events/ctf_info.html:12
msgid "Published date"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:14
#: ctfs/templates/ctfs/ctf_info.html:16
msgid "Challenge is not yet available."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:27
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:29
#: ctfs/templates/ctfs/ctf_info.html:31
#: events/templates/events/ctf_info.html:26
msgid "Already flagged"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:31 ctfs/templates/ctfs/ctf_info.html:40
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:36
#: events/templates/events/ctf_info.html:45
msgid "Start the challenge"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:47
msgid "Download"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:37
#: ctfs/templates/ctfs/ctf_info.html:39
#: events/templates/events/ctf_info.html:42
msgid "Wrong flag ! You can do it !"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:56
#: ctfs/templates/ctfs/ctf_info.html:58
#: events/templates/events/ctf_info.html:60
msgid "Solved by"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:80
#: ctfs/templates/ctfs/ctf_info.html:82
#: events/templates/events/ctf_info.html:90
msgid "Nobody has solved this challenge yet."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:87
#: ctfs/templates/ctfs/ctf_info.html:89
#: events/templates/events/ctf_info.html:97
msgid "Author"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:88
#: ctfs/templates/ctfs/ctf_info.html:90
#: events/templates/events/ctf_info.html:98
msgid "Point reward"
msgstr ""
@ -368,6 +362,11 @@ msgstr ""
msgid "Event"
msgstr ""
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: events/templates/events/ctf_info.html:28
#: events/templates/events/event_info.html:18
msgid "This event is over."

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-14 19:36+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -49,7 +49,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:61 ctfs/templates/ctfs/ctfs_list.html:12
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:65
#: events/templates/events/event_info.html:64
#: scoreboard/templates/scoreboard/scoreboard.html:13
@ -61,7 +61,7 @@ msgid "Email"
msgstr ""
#: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:62
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:66
#: events/templates/events/event_info.html:65
#: scoreboard/templates/scoreboard/scoreboard.html:14
@ -75,7 +75,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/profile.html:46
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:13
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
#: events/templates/events/event_info.html:66
#: events/templates/events/event_info.html:89
#: events/templates/events/manage_team.html:40
@ -139,7 +139,7 @@ msgid "Points"
msgstr ""
#: accounts/templates/accounts/profile.html:24
#: ctfs/templates/ctfs/ctf_info.html:64
#: ctfs/templates/ctfs/ctf_info.html:66
#: events/templates/events/ctf_info.html:67
#: events/templates/events/team.html:23
msgid "Date"
@ -218,64 +218,58 @@ msgstr ""
msgid "Updated."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:10
#: ctfs/templates/ctfs/ctf_info.html:12
#: events/templates/events/ctf_info.html:12
msgid "Published date"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:14
#: ctfs/templates/ctfs/ctf_info.html:16
msgid "Challenge is not yet available."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:21
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:27
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:29
#: ctfs/templates/ctfs/ctf_info.html:31
#: events/templates/events/ctf_info.html:26
msgid "Already flagged"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:31 ctfs/templates/ctfs/ctf_info.html:40
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:36
#: events/templates/events/ctf_info.html:45
msgid "Start the challenge"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:47
msgid "Download"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:37
#: ctfs/templates/ctfs/ctf_info.html:39
#: events/templates/events/ctf_info.html:42
msgid "Wrong flag ! You can do it !"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:56
#: ctfs/templates/ctfs/ctf_info.html:58
#: events/templates/events/ctf_info.html:60
msgid "Solved by"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:80
#: ctfs/templates/ctfs/ctf_info.html:82
#: events/templates/events/ctf_info.html:90
msgid "Nobody has solved this challenge yet."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:87
#: ctfs/templates/ctfs/ctf_info.html:89
#: events/templates/events/ctf_info.html:97
msgid "Author"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:88
#: ctfs/templates/ctfs/ctf_info.html:90
#: events/templates/events/ctf_info.html:98
msgid "Point reward"
msgstr ""
@ -368,6 +362,11 @@ msgstr ""
msgid "Event"
msgstr ""
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: events/templates/events/ctf_info.html:28
#: events/templates/events/event_info.html:18
msgid "This event is over."

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-14 19:36+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -51,7 +51,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:21
#: accounts/templates/accounts/login.html:18
#: accounts/templates/accounts/register.html:22
#: ctfs/templates/ctfs/ctf_info.html:61 ctfs/templates/ctfs/ctfs_list.html:12
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:12
#: events/templates/events/ctf_info.html:65
#: events/templates/events/event_info.html:64
#: scoreboard/templates/scoreboard/scoreboard.html:13
@ -63,7 +63,7 @@ msgid "Email"
msgstr ""
#: accounts/templates/accounts/edit.html:30
#: ctfs/templates/ctfs/ctf_info.html:62
#: ctfs/templates/ctfs/ctf_info.html:64
#: events/templates/events/ctf_info.html:66
#: events/templates/events/event_info.html:65
#: scoreboard/templates/scoreboard/scoreboard.html:14
@ -77,7 +77,7 @@ msgstr ""
#: accounts/templates/accounts/edit.html:47
#: accounts/templates/accounts/profile.html:46
#: ctfs/templates/ctfs/ctf_info.html:63 ctfs/templates/ctfs/ctfs_list.html:13
#: ctfs/templates/ctfs/ctf_info.html:65 ctfs/templates/ctfs/ctfs_list.html:13
#: events/templates/events/event_info.html:66
#: events/templates/events/event_info.html:89
#: events/templates/events/manage_team.html:40
@ -141,7 +141,7 @@ msgid "Points"
msgstr ""
#: accounts/templates/accounts/profile.html:24
#: ctfs/templates/ctfs/ctf_info.html:64
#: ctfs/templates/ctfs/ctf_info.html:66
#: events/templates/events/ctf_info.html:67
#: events/templates/events/team.html:23
msgid "Date"
@ -220,66 +220,60 @@ msgstr ""
msgid "Updated."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:10
#: ctfs/templates/ctfs/ctf_info.html:12
#: events/templates/events/ctf_info.html:12
msgid "Published date"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:14
#: ctfs/templates/ctfs/ctf_info.html:16
#, fuzzy
#| msgid "No article available."
msgid "Challenge is not yet available."
msgstr "Нет доступных статей."
#: ctfs/templates/ctfs/ctf_info.html:21
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:27
#: ctfs/templates/ctfs/ctf_info.html:29
#: events/templates/events/ctf_info.html:24
msgid "Congratulation !"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:29
#: ctfs/templates/ctfs/ctf_info.html:31
#: events/templates/events/ctf_info.html:26
msgid "Already flagged"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:31 ctfs/templates/ctfs/ctf_info.html:40
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: events/templates/events/ctf_info.html:36
#: events/templates/events/ctf_info.html:45
msgid "Start the challenge"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:33 ctfs/templates/ctfs/ctf_info.html:42
#: ctfs/templates/ctfs/ctf_info.html:35 ctfs/templates/ctfs/ctf_info.html:44
#: events/templates/events/ctf_info.html:38
#: events/templates/events/ctf_info.html:47
msgid "Download"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:37
#: ctfs/templates/ctfs/ctf_info.html:39
#: events/templates/events/ctf_info.html:42
msgid "Wrong flag ! You can do it !"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:56
#: ctfs/templates/ctfs/ctf_info.html:58
#: events/templates/events/ctf_info.html:60
msgid "Solved by"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:80
#: ctfs/templates/ctfs/ctf_info.html:82
#: events/templates/events/ctf_info.html:90
msgid "Nobody has solved this challenge yet."
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:87
#: ctfs/templates/ctfs/ctf_info.html:89
#: events/templates/events/ctf_info.html:97
msgid "Author"
msgstr ""
#: ctfs/templates/ctfs/ctf_info.html:88
#: ctfs/templates/ctfs/ctf_info.html:90
#: events/templates/events/ctf_info.html:98
msgid "Point reward"
msgstr ""
@ -372,6 +366,11 @@ msgstr ""
msgid "Event"
msgstr ""
#: events/templates/events/ctf_info.html:18
msgid ""
"No translation available. Please try another language (English or French)."
msgstr ""
#: events/templates/events/ctf_info.html:28
#: events/templates/events/event_info.html:18
msgid "This event is over."

View File

@ -38,6 +38,7 @@ INSTALLED_APPS = [
'scoreboard.apps.ScoreboardConfig',
'resources.apps.ResourcesConfig',
'django.contrib.sites',
'api.apps.ApiConfig',
]
MIDDLEWARE = [

View File

@ -24,6 +24,7 @@ urlpatterns = [
path('', include('home.urls')),
path('set_lang/<str:lang_code>', home.views.set_language, name="set_language"),
path('dashboard/secret/admin', admin.site.urls),
path('api/', include('api.urls'))
]
urlpatterns += i18n_patterns(

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-14 19:36+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: 2022-02-10 19:27+0100\n"
"Last-Translator: Clément Hamada <clementhamada@pm.me>\n"
"Language-Team: \n"
@ -36,7 +36,9 @@ msgstr ""
"die meisten Punkte zu verdienen."
#: resources/templates/resources/42ctf.html:12
msgid "The challenges require participants to find sort of passwords called \\"
msgid ""
"The challenges require participants to find sort of passwords called \"flags"
"\" and to submit them on the platform."
msgstr ""
"Die Herausforderungen bestehen darin eine Art Passwort zu finden: sogenannte "
"\\"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-14 19:36+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -34,7 +34,9 @@ msgid ""
msgstr ""
#: resources/templates/resources/42ctf.html:12
msgid "The challenges require participants to find sort of passwords called \\"
msgid ""
"The challenges require participants to find sort of passwords called \"flags"
"\" and to submit them on the platform."
msgstr ""
#: resources/templates/resources/42ctf.html:15

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-14 19:36+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: 2022-02-09 10:55+0100\n"
"Last-Translator: Javier Uhagón (uhagontorralvojavier@gmail.com)\n"
"Language-Team: \n"
@ -37,7 +37,9 @@ msgstr ""
"para ganar puntos y progresar en la Tabla de puntos."
#: resources/templates/resources/42ctf.html:12
msgid "The challenges require participants to find sort of passwords called \\"
msgid ""
"The challenges require participants to find sort of passwords called \"flags"
"\" and to submit them on the platform."
msgstr ""
"Los retos requieren que los participantes encuentren unas contraseñas "
"llamadas \\"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-14 19:36+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -20,7 +20,7 @@ msgstr ""
#: resources/templates/resources/42ctf.html:7
msgid "What is 42CTF ?"
msgstr "Qu'est ce que 42CTF ?"
msgstr "Qu'est-ce que 42CTF ?"
#: resources/templates/resources/42ctf.html:10
msgid "A short introduction to CTF"
@ -32,90 +32,114 @@ msgid ""
"participants have to solve challenges of various categories to gain points "
"and progress on the scoreboard."
msgstr ""
"CTF veut dire Capture The Flag. C'est une compétition de cybersécurité où "
"les participants doivent résoudre des challenges dans différentes catégories "
"pour gagner des points et progresser dans le classement."
#: resources/templates/resources/42ctf.html:12
msgid "The challenges require participants to find sort of passwords called \\"
#: resources/templates/resources/42ctf.html:122
msgid ""
"The challenges require participants to find sort of passwords called \"flags"
"\" and to submit them on the platform."
msgstr ""
"Les challenges demandent aux participants de trouver des sortes de mots de "
"passe appelés \"flags\" et de les soumettre sur la plateforme."
#: resources/templates/resources/42ctf.html:15
msgid "Functionment of 42CTF"
msgstr ""
msgstr "Fonctionnement de 42CTF"
#: resources/templates/resources/42ctf.html:16
msgid "42CTF is what we call a permanent CTF."
msgstr ""
msgstr "42CTF est ce qu'on appelle un CTF permanent."
#: resources/templates/resources/42ctf.html:17
msgid "Except from the"
msgstr ""
msgstr "Sauf pour les"
#: resources/templates/resources/42ctf.html:17
msgid "events"
msgstr ""
msgstr "évènements"
#: resources/templates/resources/42ctf.html:17
msgid "challenges are available on the platform without time limitations."
msgstr ""
"les challenges sont disponnibles sur la plateforme sans limites de temps."
#: resources/templates/resources/42ctf.html:18
msgid "The registration on 42CTF is open to everyone, 42 students or not."
msgstr ""
msgstr "L'inscription à 42CTF est ouverte à tous, étudiant de 42 ou"
#: resources/templates/resources/42ctf.html:19
msgid ""
"Events may or may not be open. If you would like to organize an event on "
"42CTF, feel free to contact us."
msgstr ""
"Les évènements peuvent être publics ou non. Si vous souhaitez organiser un "
"évènement sur 42CTF, n'hésitez pas à nous contacter."
#: resources/templates/resources/42ctf.html:22
msgid "42CTF Team"
msgstr ""
msgstr "Équipe de 42CTF"
#: resources/templates/resources/42ctf.html:23
msgid "42CTF is managed by 42 students."
msgstr ""
msgstr "42CTF est géré par des étudiants de 42"
#: resources/templates/resources/42ctf.html:24
msgid "You can meet the team on"
msgstr ""
msgstr "Vous pouvez rencontrer l'équipe sur"
#: resources/templates/resources/42ctf.html:25
msgid ""
"Challenges are created by various contributors, not necessarily 42 students."
msgstr ""
"Les challenges sont créés par divers contributeurs, pas nécessairement des "
"étudiants de 42."
#: resources/templates/resources/42ctf.html:26
msgid ""
"Anyone is welcome to submit their own challenges, either on the permanent "
"CTF or for a specific event."
msgstr ""
"Tout le monde est invité à soumettre ses propres défis, que ce soit sur le "
"CTF permanent ou pour un évènement spécifique."
#: resources/templates/resources/create_challenge.html:7
msgid "Create new challenges"
msgstr ""
msgstr "Créer de nouveaux challenges"
#: resources/templates/resources/create_challenge.html:10
msgid "If you want to create new challenges for 42CTF, send us a message on "
msgstr ""
"Si vous souhaitez créer de nouveaux challenges pour 42CTF, envoyez-nous un "
"message sur "
#: resources/templates/resources/create_challenge.html:11
msgid "If your challenge is offline, then you don't have to ask us in advance."
msgstr ""
"Si votre défi est hors ligne, vous n'avez pas besoin de nous demander à "
"l'avance."
#: resources/templates/resources/create_challenge.html:12
msgid ""
"If your challenge is online (for example web or pwn), then you should give "
"us a short description of what you want to do."
msgstr ""
"Si votre challenge est en ligne (par exemple web or pwn), alors vous devrez "
"nous donner une courte description de ce que vous voulez faire."
#: resources/templates/resources/create_challenge.html:13
msgid ""
"We may be able to help you or to give you resources such as dockerfiles."
msgstr ""
"Nous pouvons être en mesure de vous aider ou de vous fournir des ressources "
"comme des dockerfiles."
#: resources/templates/resources/create_challenge.html:14
msgid "We plan to make those resources publicly available in a near future."
msgstr ""
"Nous prévoyons de rendre ces ressources accessibles au public dans un avenir "
"proche."
#: resources/templates/resources/donate.html:7
msgid "Donate"
@ -159,7 +183,7 @@ msgid ""
"in the form of private events with the people of your choice."
msgstr ""
"La possibilité de jouer de nouveau aux CTF passés, avec des challenges qui "
"ne sont plus disponibles, sous la forme d'un événement privé avec les "
"ne sont plus disponibles, sous la forme d'un évènement privé avec les "
"personnes de votre choix."
#: resources/templates/resources/donate.html:18
@ -187,7 +211,7 @@ msgid ""
"for all."
msgstr ""
"Cependant, nous n'organiserons pas de CTF en temps limité réservé aux "
"membres, car cela serait équivalent à organiser des événements payants, and "
"membres, car cela serait équivalent à organiser des évènements payants, et "
"nous voulons que 42CTF reste GRATUIT pour tous."
#: resources/templates/resources/donate.html:26
@ -206,14 +230,14 @@ msgid ""
"cash, send us a message !"
msgstr ""
"Si vous aimeriez qu'on ajoute un autre moyen de paiement, ou si vous voulez "
"payer en liquide, envoyez nous un message !"
"payer en liquide, envoyez-nous un message !"
#: resources/templates/resources/donate.html:48
msgid ""
"If you're paying for your membership, don't forget to send us your first and "
"last name, as well as your 42CTF pseudo."
msgstr ""
"Si vous payez pour l'adhesion, n'oubliez pas de nous envoyer vos noms et "
"Si vous payez pour l'adhésion, n'oubliez pas de nous envoyer vos noms et "
"prénoms, ainsi que votre pseudo 42CTF."
#: resources/templates/resources/donate.html:49
@ -227,61 +251,69 @@ msgstr ""
#: resources/templates/resources/edit.html:7
msgid "Edit this page"
msgstr ""
msgstr "Modifier cette page"
#: resources/templates/resources/edit.html:12
msgid ""
"More information coming soon, but as you can guess it involves making a pull "
"request to your favorite"
msgstr ""
"De plus amples informations seront bientôt disponibles, mais comme vous "
"pouvez le deviner, vous pouvez faire une pull request sur votre bien aimé"
#: resources/templates/resources/tools.html:7
msgid "Recommended Tools"
msgstr ""
msgstr "Outils recommandés"
#: resources/templates/resources/tools.html:10
msgid "To get you started, we built a VM that you can simply import in"
msgstr ""
"Pour commencer, nous avons construit une VM que vous pouvez simplement "
"importer dans"
#: resources/templates/resources/tools.html:10
msgid "with a bunch of useful tools."
msgstr ""
msgstr "avec quelques outils utiles"
#: resources/templates/resources/tools.html:11
msgid "You can dowload this OVA"
msgstr ""
msgstr "Vous pouvez télécharger l'OVA"
#: resources/templates/resources/tools.html:11
msgid "here"
msgstr ""
msgstr "ici"
#: resources/templates/resources/tools.html:13
msgid "Here are the tools installed on the VM:"
msgstr ""
msgstr "Voici la liste des outils installés sur la VM:"
#: resources/templates/resources/tools.html:22
msgid ""
"If you want to solve the challenges on your own machine, we recommend you to "
"use a Linux operating system."
msgstr ""
"Si vous voulez résoudre les challenges sur votre propre machine, nous "
"recommandons l'utilisation de Linux."
#: resources/templates/resources/tools.html:23
msgid ""
"Most of the reverse challenges are ELF binaries and won't run on Mac OS or "
"Windows."
msgstr ""
"La plupart des challenges de reverse sont des binaies ELF et ne "
"fonctionneront pas sur MacOS ou Windows."
#: resources/templates/resources/tools.html:25
msgid "Additionnaly, you will need the following languages interpreters:"
msgstr ""
msgstr "De plus, vous aurez besoin des interpréteurs de langage suivants :"
#: resources/templates/resources/translate.html:7
msgid "Translate 42CTF"
msgstr ""
msgstr "Traduire 42CTF"
#: resources/templates/resources/translate.html:10
msgid "42CTF source code is publicly available on this"
msgstr ""
msgstr "Le code source de 42CTF est publiquement disponible sur ce"
#: resources/templates/resources/translate.html:11
msgid ""
@ -289,21 +321,29 @@ msgid ""
"contribute if you want to help us, by making the platform always more "
"accessible."
msgstr ""
"La traduction ne nécessite aucune compétence en programmation et constitue "
"un bon moyen de contribuer si vous souhaitez nous aider, en rendant la "
"plateforme toujours plus accessible."
#: resources/templates/resources/translate.html:12
msgid "We have a"
msgstr ""
msgstr "Nous avons un"
#: resources/templates/resources/translate.html:12
msgid ""
"describing how to translate pages with the Django internalization module."
msgstr ""
"qui décrit comment traduire des pages avec le module d'internalisation de "
"Django."
#: resources/templates/resources/translate.html:13
msgid ""
"We invite you to read it to know all the details, but it merely requires you "
"to edit text files, so you see, no programming skills required ;)"
msgstr ""
"Nous vous invitons à le lire pour connaitre tous les détails, mais il suffit "
"simplement de modifier des fichiers texte, donc vous voyez, aucune "
"compétence en programmation n'est requise ;)"
#: resources/templates/resources/translate.html:14
msgid ""
@ -311,7 +351,10 @@ msgid ""
"then open a pull request so that we can merge your contributions into our "
"repository."
msgstr ""
"Vous devrez forker le dépôt git, effectuer vos modifications, les push, puis "
"ouvrir une pull request afin que nous puissions merge vos contributions dans "
"notre repo."
#: resources/templates/resources/translate.html:15
msgid "Don't hesitate to reach for help on"
msgstr ""
msgstr "N'hésitez pas à demander de l'aide sur"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-14 19:36+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -34,7 +34,9 @@ msgid ""
msgstr ""
#: resources/templates/resources/42ctf.html:12
msgid "The challenges require participants to find sort of passwords called \\"
msgid ""
"The challenges require participants to find sort of passwords called \"flags"
"\" and to submit them on the platform."
msgstr ""
#: resources/templates/resources/42ctf.html:15

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-14 19:36+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -34,7 +34,9 @@ msgid ""
msgstr ""
#: resources/templates/resources/42ctf.html:12
msgid "The challenges require participants to find sort of passwords called \\"
msgid ""
"The challenges require participants to find sort of passwords called \"flags"
"\" and to submit them on the platform."
msgstr ""
#: resources/templates/resources/42ctf.html:15

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-14 19:36+0100\n"
"POT-Creation-Date: 2022-02-16 20:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -36,7 +36,9 @@ msgid ""
msgstr ""
#: resources/templates/resources/42ctf.html:12
msgid "The challenges require participants to find sort of passwords called \\"
msgid ""
"The challenges require participants to find sort of passwords called \"flags"
"\" and to submit them on the platform."
msgstr ""
#: resources/templates/resources/42ctf.html:15

View File

@ -9,7 +9,7 @@
<div class="ctf-body">
<h4>{% trans "A short introduction to CTF" %}</h4>
{% trans "CTF stands for Capture The Flag. It is a cybersecurity competition, where participants have to solve challenges of various categories to gain points and progress on the scoreboard." %}
{% trans "The challenges require participants to find sort of passwords called \"flags\" and to submit them on the platform."%}
{% blocktranslate %}The challenges require participants to find sort of passwords called "flags" and to submit them on the platform.{% endblocktranslate %}
<br><br>
<h4>{% trans "Functionment of 42CTF" %}</h4>