feat: basic input validation

This commit is contained in:
eneller
2025-03-16 19:51:52 +01:00
parent e423b32102
commit f022cec5cf

View File

@@ -2,13 +2,17 @@ from django.shortcuts import render
from django.http import HttpRequest, HttpResponse, FileResponse
from django.conf import settings
from epub2go.convert import get_all_books, Book, GBConvert
from epub2go.convert import get_all_books, Book, GBConvert, allbooks_url
import os
from urllib.parse import urlparse
import logging
logger = logging.getLogger(__name__) #TODO configure logging
converter = GBConvert(downloaddir=settings.MEDIA_ROOT)
# TODO get from pickle
books = get_all_books()
books = get_all_books()# TODO get from pickle
gbnetloc = urlparse(allbooks_url).netloc
def index(request: HttpRequest):
context = {
@@ -17,7 +21,7 @@ def index(request: HttpRequest):
}
targetParam = request.GET.get('t', None)
if targetParam:
if validateUrl(targetParam):
epub = getEpub(targetParam)
fname = os.path.join(settings.MEDIA_ROOT, epub)
file = open(fname, 'rb')
@@ -28,8 +32,15 @@ def index(request: HttpRequest):
return render(request, 'index.html', context)
def validateUrl(param)->bool :
if not param: return False
netloc = urlparse(param).netloc
if(netloc == gbnetloc): return True
return False
def getEpub(param):
print(param)
# TODO validate / sanitize input
# TODO check for existing file and age
#GBConvert(param,downloaddir=settings.MEDIA_ROOT).run()