diff --git a/viewer/templates/browse.html b/viewer/templates/browse.html index eebe1ae..33ada3c 100644 --- a/viewer/templates/browse.html +++ b/viewer/templates/browse.html @@ -17,7 +17,9 @@ - {{ file.0 }} + + {{ file.0 }} + {% endfor %} diff --git a/viewer/urls.py b/viewer/urls.py index c6bf29a..2b2acb8 100644 --- a/viewer/urls.py +++ b/viewer/urls.py @@ -5,4 +5,5 @@ from . import views urlpatterns = [ path('', views.index, name='index'), path('//', views.browse, name='browse'), + path('///', views.file, name='file') ] diff --git a/viewer/views.py b/viewer/views.py index ae250e2..98c7d8c 100644 --- a/viewer/views.py +++ b/viewer/views.py @@ -37,3 +37,24 @@ def browse(request, directory_id): ) } return render(request, 'message.html', context, status=500) + + +def file(request, directory_id, file): + dir = get_object_or_404(ServedDirectory, id=directory_id) + if os.path.isdir(dir.path): + path = os.path.join(dir.path, file) + if os.path.exists(path): + return FileResponse(open(path, 'rb')) + else: + context = { + 'title': 'Invalid File', + 'message': 'The file requested from this directory was not found on the server.' + } + return render(request, 'message.html', context, status=500) + context = { + 'title': 'Invalid Directory', + 'message': 'The path this server directory points to {}.'.format( + 'exists, but is not a directory' if os.path.exists(dir.path) else 'does not exist' + ) + } + return render(request, 'message.html', context, status=500)