diff --git a/docker-compose.yml b/docker-compose.yml index fa238bc7ca2b9357f5228841beae6548c415c35a..bcea88b521c3a85f68a80d45c88233f576cee1b4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -39,7 +39,7 @@ services: CANTALOUPE_S3SOURCE_SECRET_KEY: ${AWS_SECRET_ACCESS_KEY} CANTALOUPE_S3SOURCE_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID} CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME: ${AWS_STORAGE_BUCKET_NAME} - CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_PATH_PREFIX: "" + CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_PATH_PREFIX: "iiif/" CANTALOUPE_S3SOURCE_ENDPOINT: "https://s3.unistra.fr" kibana: diff --git a/poetry.lock b/poetry.lock index c2a6ff027e66763f3370377cbddc5c0cac6dc03e..9cf9875b1661f2fd23165737270bee317b5713d9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -867,6 +867,24 @@ redis = ">=3,<4.0.0 || >4.0.0,<4.0.1 || >4.0.1" [package.extras] hiredis = ["redis[hiredis] (>=3,!=4.0.0,!=4.0.1)"] +[[package]] +name = "django-revproxy" +version = "0.13.0" +description = "Yet another Django reverse proxy application" +optional = false +python-versions = ">=3.7" +files = [ + {file = "django_revproxy-0.13.0-py3-none-any.whl", hash = "sha256:6130d52d5042624c918134369be0a825e9f7e87d15e12b739d6666e5ed1f32ef"}, +] + +[package.dependencies] +Django = ">=3.0" +urllib3 = ">=1.12" + +[package.extras] +diazo = ["diazo (>=1.0.5)", "lxml (>=3.4)"] +tests = ["coverage", "diazo", "flake8", "lxml (>=3.4)"] + [[package]] name = "django-rich" version = "1.13.0" @@ -2624,4 +2642,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "~3.9" -content-hash = "be750ea57e28eaf53d9182a915f65e78b7475c24c0463394f24c572724cc624f" +content-hash = "11f98c82e7582d4ec57e51ddb0c7abede4b73e0414974959150f9ff457649c58" diff --git a/pount/apps/iiif/__init__.py b/pount/apps/iiif/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/pount/apps/iiif/apps.py b/pount/apps/iiif/apps.py new file mode 100644 index 0000000000000000000000000000000000000000..08c5b2d62d20ff0e24139619bbb08e0a4fbf1607 --- /dev/null +++ b/pount/apps/iiif/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class IiifAppConfig(AppConfig): + name = "pount.apps.iiif" diff --git a/pount/apps/iiif/urls.py b/pount/apps/iiif/urls.py new file mode 100644 index 0000000000000000000000000000000000000000..f8e01e4e8f90041f991916e0cc9eab454862cb50 --- /dev/null +++ b/pount/apps/iiif/urls.py @@ -0,0 +1,10 @@ +from django.urls import re_path + +from pount.apps.iiif import views + +app_name = "iiif" + + +urlpatterns = [ + re_path(r"(?P<path>.*)", views.TestProxyView.as_view()), +] diff --git a/pount/apps/iiif/views.py b/pount/apps/iiif/views.py new file mode 100644 index 0000000000000000000000000000000000000000..9915b6cc045f4473b7ad51a6435721d37da708f2 --- /dev/null +++ b/pount/apps/iiif/views.py @@ -0,0 +1,20 @@ +from os import environ + +from django.contrib.auth import get_user_model +from revproxy.views import ProxyView + +User = get_user_model() + + +# class TestProxyView(LoginRequiredMixin, ProxyView): +class TestProxyView(ProxyView): + upstream = environ.get("IIIF_UPSTREAM_URL", "http://localhost:8182/iiif/") + add_x_forwarded = True + + def dispatch(self, request, *args, **kwargs): + # for k in request.META.keys(): + # print(k) + # print(request.user) + # print(args) + # print(kwargs) + return super().dispatch(request, *args, **kwargs) diff --git a/pount/settings/common.py b/pount/settings/common.py index 6f0611a3518a28215b476b45a76804b9395cd581..dc19a24404a38e33314ce5db566fb283affd3111 100644 --- a/pount/settings/common.py +++ b/pount/settings/common.py @@ -329,6 +329,7 @@ THIRD_PARTY_APPS = [ "health_check.db", "health_check.contrib.s3boto3_storage", "health_check.contrib.rabbitmq", + "revproxy.apps.RevProxyConfig", ] LOCAL_APPS = [ diff --git a/pount/urls.py b/pount/urls.py index 5db554e8828412aa2b7e807deeda4c69aa8a5000..b1efcd2573ba7ac7c2c5c6c33bd6ec2d7919e66c 100644 --- a/pount/urls.py +++ b/pount/urls.py @@ -15,6 +15,7 @@ urlpatterns = [ path("cas/", include("django_cas.urls")), path("admin/", admin.site.urls), path("_hc/", HealthCheckView.as_view()), + path("iiif/", include("pount.apps.iiif.urls")), ] if settings.DEBUG and "debug_toolbar" in settings.INSTALLED_APPS: diff --git a/pyproject.toml b/pyproject.toml index 8faae89640d7cd3ac5dc8d37b4ca875eb493c167..45d36f4b91fd2770249e9334f1fce714ae504d02 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,6 +42,7 @@ django-filter = "^23.3" django-health-check = "3.17.0" django-notifications-hq = "^1.8.0" django-redis = "^5.4.0" +django-revproxy = "^0.13.0" django-rich = "^1.8.0" django-storages = "^1.14.2" django-stubs = "^4.2"