add persistent storage on postgres and django
This commit is contained in:
15
Makefile
15
Makefile
@ -6,7 +6,7 @@
|
|||||||
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
|
# By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2024/10/28 19:26:13 by tomoron #+# #+# #
|
# Created: 2024/10/28 19:26:13 by tomoron #+# #+# #
|
||||||
# Updated: 2024/10/28 19:26:16 by tomoron ### ########.fr #
|
# Updated: 2024/11/08 19:47:48 by tomoron ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
|
|
||||||
@ -18,19 +18,22 @@ all: up
|
|||||||
|
|
||||||
up:
|
up:
|
||||||
$(COMPOSE) up --build -d
|
$(COMPOSE) up --build -d
|
||||||
|
|
||||||
up_att:
|
up_att:
|
||||||
$(COMPOSE) up --build
|
$(COMPOSE) up --build
|
||||||
|
|
||||||
watch:
|
watch:
|
||||||
$(COMPOSE) watch
|
$(COMPOSE) watch
|
||||||
down:
|
|
||||||
$(COMPOSE) down -v
|
|
||||||
|
|
||||||
clean:
|
down:
|
||||||
$(COMPOSE) down -v
|
$(COMPOSE) down
|
||||||
docker system prune -af --volumes
|
|
||||||
|
clean: down
|
||||||
|
docker system prune -af
|
||||||
|
|
||||||
fclean:clean
|
fclean:clean
|
||||||
|
$(COMPOSE) down -v
|
||||||
|
docker system prune -af
|
||||||
|
|
||||||
re: fclean all
|
re: fclean all
|
||||||
|
|
||||||
|
@ -19,8 +19,8 @@ services:
|
|||||||
|
|
||||||
djangoserver:
|
djangoserver:
|
||||||
container_name: djangoserver
|
container_name: djangoserver
|
||||||
# volumes:
|
volumes:
|
||||||
# - website_data:/var/www/djangoserver
|
- django_storage:/var/www/djangoserver/storage
|
||||||
networks:
|
networks:
|
||||||
- transcendence
|
- transcendence
|
||||||
develop:
|
develop:
|
||||||
@ -55,6 +55,8 @@ services:
|
|||||||
DB_PASSWORD: ${DB_PASSWORD}
|
DB_PASSWORD: ${DB_PASSWORD}
|
||||||
networks:
|
networks:
|
||||||
- transcendence
|
- transcendence
|
||||||
|
volumes:
|
||||||
|
- postgres:/var/lib/postgresql/13/main
|
||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
adminer:
|
adminer:
|
||||||
@ -65,12 +67,8 @@ services:
|
|||||||
- transcendence
|
- transcendence
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
website_data:
|
postgres:
|
||||||
driver: local
|
django_storage:
|
||||||
driver_opts:
|
|
||||||
type: none
|
|
||||||
o: bind
|
|
||||||
device: '~/METH_data'
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
transcendence:
|
transcendence:
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
|
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2024/09/24 17:26:12 by edbernar #+# #+# #
|
# Created: 2024/09/24 17:26:12 by edbernar #+# #+# #
|
||||||
# Updated: 2024/09/27 03:40:12 by tomoron ### ########.fr #
|
# Updated: 2024/11/09 15:53:51 by tomoron ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
|
|
||||||
@ -14,6 +14,7 @@ from asgiref.sync import sync_to_async
|
|||||||
from ..models import User
|
from ..models import User
|
||||||
from ..utils import genString
|
from ..utils import genString
|
||||||
from random import randint
|
from random import randint
|
||||||
|
from django.db.models import Q
|
||||||
import base64
|
import base64
|
||||||
import json
|
import json
|
||||||
|
|
||||||
@ -21,11 +22,11 @@ import json
|
|||||||
def changeBanner(socket, content):
|
def changeBanner(socket, content):
|
||||||
while True:
|
while True:
|
||||||
generate_name = genString(50)
|
generate_name = genString(50)
|
||||||
if (not User.objects.filter(banner=f"/banner/{generate_name}.jpg").exists()):
|
if (not User.objects.filter(Q(banner=f"/storage/{generate_name}.jpg") | Q(pfp=f"/storage/{generate_name}.jpg")).exists()):
|
||||||
break
|
break
|
||||||
user = User.objects.get(id=socket.id)
|
user = User.objects.get(id=socket.id)
|
||||||
user.banner = f"/banner/{generate_name}.jpg"
|
user.banner = f"/storage/{generate_name}.jpg"
|
||||||
user.save()
|
user.save()
|
||||||
with open(f"/var/www/djangoserver/banner/{generate_name}.jpg", "wb") as image_file:
|
with open(f"/var/www/djangoserver/storage/{generate_name}.jpg", "wb") as image_file:
|
||||||
image_file.write(base64.b64decode(content["img"]))
|
image_file.write(base64.b64decode(content["img"]))
|
||||||
socket.sync_send(json.dumps({"type": "change_pfp", "content": {'banner': user.banner}}))
|
socket.sync_send(json.dumps({"type": "change_pfp", "content": {'banner': user.banner}}))
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
|
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2024/09/23 23:35:41 by edbernar #+# #+# #
|
# Created: 2024/09/23 23:35:41 by edbernar #+# #+# #
|
||||||
# Updated: 2024/10/04 21:13:28 by tomoron ### ########.fr #
|
# Updated: 2024/11/09 15:58:16 by tomoron ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
|
|
||||||
@ -14,6 +14,7 @@ from asgiref.sync import sync_to_async
|
|||||||
from ..models import User
|
from ..models import User
|
||||||
from ..utils import genString
|
from ..utils import genString
|
||||||
from random import randint
|
from random import randint
|
||||||
|
from django.db.models import Q
|
||||||
import base64
|
import base64
|
||||||
import json
|
import json
|
||||||
|
|
||||||
@ -21,12 +22,12 @@ import json
|
|||||||
def changePfp(socket, content):
|
def changePfp(socket, content):
|
||||||
while True:
|
while True:
|
||||||
generate_name = genString(50)
|
generate_name = genString(50)
|
||||||
if (not User.objects.filter(pfp=f"/pfp/{generate_name}.jpg").exists()):
|
if (not User.objects.filter(Q(banner=f"/storage/{generate_name}.jpg") | Q(pfp=f"/storage/{generate_name}.jpg")).exists()):
|
||||||
break
|
break
|
||||||
with open(f"/var/www/djangoserver/pfp/{generate_name}.jpg", "wb") as image_file:
|
with open(f"/var/www/djangoserver/storage/{generate_name}.jpg", "wb") as image_file:
|
||||||
image_file.write(base64.b64decode(content["img"]))
|
image_file.write(base64.b64decode(content["img"]))
|
||||||
user = User.objects.get(id=socket.id)
|
user = User.objects.get(id=socket.id)
|
||||||
user.pfp = f"/pfp/{generate_name}.jpg"
|
user.pfp = f"/storage/{generate_name}.jpg"
|
||||||
user.save()
|
user.save()
|
||||||
socket.pfp = user.pfp
|
socket.pfp = user.pfp
|
||||||
socket.scope["session"]["pfp"] = user.pfp
|
socket.scope["session"]["pfp"] = user.pfp
|
||||||
|
@ -32,8 +32,7 @@ urlpatterns = [
|
|||||||
path("logout", views.logout, name='logout'),
|
path("logout", views.logout, name='logout'),
|
||||||
path("verify", views.verify, name='verify'),
|
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("storage/<str>", views.getStorage, name='getStorage'),
|
||||||
path("banner/<str>", views.banner, name='banner'),
|
|
||||||
path("settingsPage", views.settingsPage, name='settingsPage'),
|
path("settingsPage", views.settingsPage, name='settingsPage'),
|
||||||
path("tournamentPage", views.tournamentPage, name='tournamentPage'),
|
path("tournamentPage", views.tournamentPage, name='tournamentPage'),
|
||||||
]
|
]
|
||||||
|
@ -137,19 +137,10 @@ def handler404(request, exception):
|
|||||||
def err404(request):
|
def err404(request):
|
||||||
return(render(request, "err404.html"))
|
return(render(request, "err404.html"))
|
||||||
|
|
||||||
def pfp(request, str):
|
def getStorage(request, str):
|
||||||
ret = None
|
ret = None
|
||||||
try:
|
try:
|
||||||
image_path = os.path.join('/var/www/djangoserver/pfp/', str)
|
image_path = os.path.join('/var/www/djangoserver/storage/', str)
|
||||||
ret = FileResponse(open(image_path, 'rb'), content_type='image/png')
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
return ret
|
|
||||||
|
|
||||||
def banner(request, str):
|
|
||||||
ret = None
|
|
||||||
try:
|
|
||||||
image_path = os.path.join('/var/www/djangoserver/banner/', str)
|
|
||||||
ret = FileResponse(open(image_path, 'rb'), content_type='image/png')
|
ret = FileResponse(open(image_path, 'rb'), content_type='image/png')
|
||||||
except Exception:
|
except Exception:
|
||||||
ret = FileResponse("banner not found", status=404)
|
ret = FileResponse("banner not found", status=404)
|
||||||
|
@ -10,4 +10,6 @@ RUN openssl req -x509 -nodes -out /etc/nginx/ssl/inception.crt -keyout /etc/ngin
|
|||||||
COPY nginx.conf /etc/nginx/nginx.conf
|
COPY nginx.conf /etc/nginx/nginx.conf
|
||||||
COPY static /var/www/static
|
COPY static /var/www/static
|
||||||
|
|
||||||
|
STOPSIGNAL SIGKILL
|
||||||
|
|
||||||
ENTRYPOINT ["nginx", "-g", "daemon off;"]
|
ENTRYPOINT ["nginx", "-g", "daemon off;"]
|
||||||
|
Reference in New Issue
Block a user