Site/Django

- can change pfp and banner
This commit is contained in:
Kum1ta
2024-09-24 17:44:20 +02:00
parent 5d46b06669
commit 47c8a64f5d
9 changed files with 176 additions and 40 deletions

View File

@ -34,6 +34,8 @@ RUN mkdir -p /var/www/djangoserver/
WORKDIR /var/www/djangoserver
STOPSIGNAL SIGKILL
RUN mkdir -p /var/www/djangoserver/static/
RUN mkdir -p /var/www/djangoserver/pfp/
RUN mkdir -p /var/www/djangoserver/banner/
COPY file/server /var/www/djangoserver/server
RUN chmod 755 /var/www/djangoserver/ && chown -R www-data:www-data /var/www/djangoserver/

View File

@ -0,0 +1,38 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# changeBanner.py :+: :+: :+: #
# +:+ +:+ +:+ #
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/09/24 17:26:12 by edbernar #+# #+# #
# Updated: 2024/09/24 17:32:09 by edbernar ### ########.fr #
# #
# **************************************************************************** #
from asgiref.sync import sync_to_async
from ..models import User
from random import randint
import base64
import json
def genereateRandomName():
chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
len = 50
name = "a"
for i in range(0, len):
name += chars[randint(0, 61)]
return name
@sync_to_async
def changeBanner(socket, content):
while True:
generate_name = genereateRandomName()
if (not User.objects.filter(banner=f"/banner/{generate_name}.jpg").exists()):
break
user = User.objects.get(id=socket.id)
user.banner = f"/banner/{generate_name}.jpg"
user.save()
with open(f"/var/www/djangoserver/banner/{generate_name}.jpg", "wb") as image_file:
image_file.write(base64.b64decode(content["img"]))
socket.sync_send(json.dumps({"type": "change_pfp", "content": {'banner': user.banner}}))

View File

@ -6,16 +6,33 @@
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/09/23 23:35:41 by edbernar #+# #+# #
# Updated: 2024/09/23 23:48:45 by edbernar ### ########.fr #
# Updated: 2024/09/24 15:53:26 by edbernar ### ########.fr #
# #
# **************************************************************************** #
from asgiref.sync import sync_to_async
from ..models import User
from random import randint
import base64
import json
def genereateRandomName():
chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
len = 50
name = "a"
for i in range(0, len):
name += chars[randint(0, 61)]
return name
@sync_to_async
def changePfp(socket, content):
with open("./a.jpg", "w") as image_file:
image_file.write(content["img"])
while True:
generate_name = genereateRandomName()
if (not User.objects.filter(pfp=f"/pfp/{generate_name}.jpg").exists()):
break
user = User.objects.get(id=socket.id)
user.pfp = f"/pfp/{generate_name}.jpg"
user.save()
with open(f"/var/www/djangoserver/pfp/{generate_name}.jpg", "wb") as image_file:
image_file.write(base64.b64decode(content["img"]))
socket.sync_send(json.dumps({"type": "change_pfp", "content": {'pfp': user.pfp}}))

View File

@ -30,7 +30,9 @@ urlpatterns = [
path("login42", views.login42, name='login42'),
path("logout", views.logout, name='logout'),
path("verify", views.verify, name='verify'),
path("404", views.err404, name='err404')
path("404", views.err404, name='err404'),
path("pfp/<str>", views.pfp, name='pfp'),
path("banner/<str>", views.banner, name='banner'),
]
handler404 = "server.views.handler404"

View File

@ -1,4 +1,4 @@
from django.http import HttpResponse
from django.http import HttpResponse, FileResponse
from django.shortcuts import render, redirect
from .models import User, MailVerify
from .data import UID42, SECRET42, SERVER_URL
@ -126,7 +126,15 @@ def logout(request):
return redirect("/")
def handler404(request, exception):
return(index(request));
return(index(request))
def err404(request):
return(render(request, "err404.html"))
def pfp(request, str):
image_path = os.path.join('/var/www/djangoserver/pfp/', str)
return FileResponse(open(image_path, 'rb'), content_type='image/png')
def banner(request, str):
image_path = os.path.join('/var/www/djangoserver/banner/', str)
return FileResponse(open(image_path, 'rb'), content_type='image/png')

View File

@ -6,7 +6,7 @@
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/09/09 14:31:30 by tomoron #+# #+# #
# Updated: 2024/09/23 23:36:04 by edbernar ### ########.fr #
# Updated: 2024/09/24 17:25:54 by edbernar ### ########.fr #
# #
# **************************************************************************** #
@ -26,17 +26,18 @@ from .typeRequests.searchUser import searchUser
from .typeRequests.createAccount import createAccount
from .typeRequests.login import login
from .typeRequests.getAllListUser import getAllListUser
from .typeRequests.changeBanner import changeBanner
from .typeRequests.gameRequest import gameRequest
from .typeRequests.getUserInfo import getUserInfo
from .typeRequests.changePfp import changePfp
typeRequest = ["login", "get_private_list_user", "get_private_list_message",
"send_private_message", "create_account", "get_all_list_user", "game",
"search_user", "get_user_info", "change_pfp"
"search_user", "get_user_info", "change_pfp", "change_banner"
]
functionRequest = [login, getPrivateListUser, getPrivateListMessage,
sendPrivateMessage, createAccount, getAllListUser, gameRequest,
searchUser, getUserInfo, changePfp
searchUser, getUserInfo, changePfp, changeBanner
]
from random import randint