diff --git a/cantaloupe/rootfs/etc/confd/templates/cantaloupe.properties.tmpl b/cantaloupe/rootfs/etc/confd/templates/cantaloupe.properties.tmpl index 1085344b..1604cc86 100644 --- a/cantaloupe/rootfs/etc/confd/templates/cantaloupe.properties.tmpl +++ b/cantaloupe/rootfs/etc/confd/templates/cantaloupe.properties.tmpl @@ -165,41 +165,41 @@ FilesystemSource.BasicLookupStrategy.path_suffix = {{ getenv "CANTALOUPE_FILESYS #---------------------------------------- # Trusts insecure certificates and cipher suites. -HttpSource.allow_insecure = {{ getenv "CANTALOUPE_HTTPS_URCE_ALLOW_INSECURE" }} +HttpSource.allow_insecure = {{ getenv "CANTALOUPE_HTTPSOURCE_ALLOW_INSECURE" }} # Request timeout in seconds. -HttpSource.request_timeout = {{ getenv "CANTALOUPE_HTTPS_URCE_REQUEST_TIMEOUT" }} +HttpSource.request_timeout = {{ getenv "CANTALOUPE_HTTPSOURCE_REQUEST_TIMEOUT" }} # Tells HttpSource how to look up resources. Allowed values are # `BasicLookupStrategy` and `ScriptLookupStrategy`. ScriptLookupStrategy # uses a delegate method for dynamic lookups; see the user manual. -HttpSource.lookup_strategy = {{ getenv "CANTALOUPE_HTTPS_URCE_LOOKUP_STRATEGY" }} +HttpSource.lookup_strategy = {{ getenv "CANTALOUPE_HTTPSOURCE_LOOKUP_STRATEGY" }} # URL that will be prefixed to the identifier in the request URL. # Trailing slash is important! -HttpSource.BasicLookupStrategy.url_prefix = {{ getenv "CANTALOUPE_HTTPS_URCE_BASICLOOKUPSTRATEGY_URL_PREFIX" }} +HttpSource.BasicLookupStrategy.url_prefix = {{ getenv "CANTALOUPE_HTTPSOURCE_BASICLOOKUPSTRATEGY_URL_PREFIX" }} # Path, extension, query string, etc. that will be suffixed to the # identifier in the request URL. -HttpSource.BasicLookupStrategy.url_suffix = {{ getenv "CANTALOUPE_HTTPS_URCE_BASICLOOKUPSTRATEGY_URL_SUFFIX" }} +HttpSource.BasicLookupStrategy.url_suffix = {{ getenv "CANTALOUPE_HTTPSOURCE_BASICLOOKUPSTRATEGY_URL_SUFFIX" }} # Enables access to resources that require HTTP Basic authentication. -HttpSource.BasicLookupStrategy.auth.basic.username = {{ getenv "CANTALOUPE_HTTPS_URCE_BASICLOOKUPSTRATEGY_AUTH_BASIC_USERNAME" }} -HttpSource.BasicLookupStrategy.auth.basic.secret = {{ getenv "CANTALOUPE_HTTPS_URCE_BASICLOOKUPSTRATEGY_AUTH_BASIC_SECRET" }} +HttpSource.BasicLookupStrategy.auth.basic.username = {{ getenv "CANTALOUPE_HTTPSOURCE_BASICLOOKUPSTRATEGY_AUTH_BASIC_USERNAME" }} +HttpSource.BasicLookupStrategy.auth.basic.secret = {{ getenv "CANTALOUPE_HTTPSOURCE_BASICLOOKUPSTRATEGY_AUTH_BASIC_SECRET" }} # Read data in chunks when it may be more efficient. (This also may end up # being less efficient, depending on many variables; see the user manual.) -HttpSource.chunking.enabled = {{ getenv "CANTALOUPE_HTTPS_URCE_CHUNKING_ENABLED" }} +HttpSource.chunking.enabled = {{ getenv "CANTALOUPE_HTTPSOURCE_CHUNKING_ENABLED" }} # Chunk size. -HttpSource.chunking.chunk_size = {{ getenv "CANTALOUPE_HTTPS_URCE_CHUNKING_CHUNK_SIZE" }} +HttpSource.chunking.chunk_size = {{ getenv "CANTALOUPE_HTTPSOURCE_CHUNKING_CHUNK_SIZE" }} # The per-request chunk cache caches downloaded chunks in memory during # a request, and clears them when the request is complete. -HttpSource.chunking.cache.enabled = {{ getenv "CANTALOUPE_HTTPS_URCE_CHUNKING_CACHE_ENABLED" }} +HttpSource.chunking.cache.enabled = {{ getenv "CANTALOUPE_HTTPSOURCE_CHUNKING_CACHE_ENABLED" }} # Max per-request chunk cache size. -HttpSource.chunking.cache.max_size = {{ getenv "CANTALOUPE_HTTPS_URCE_CHUNKING_CACHE_MAX_SIZE" }} +HttpSource.chunking.cache.max_size = {{ getenv "CANTALOUPE_HTTPSOURCE_CHUNKING_CACHE_MAX_SIZE" }} #---------------------------------------- # S3Source diff --git a/docker-bake.hcl b/docker-bake.hcl index 6516e401..577a32b7 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -298,7 +298,7 @@ target "base-common" { # N.B. This should match the value used in: # - # - - alpine = "docker-image://alpine:3.17.1@sha256:f271e74b17ced29b915d351685fd4644785c6d1559dd1f2d4189a5e851ef753a" + alpine = "docker-image://alpine:3.18.3@sha256:7144f7bab3d4c2648d7e59409f15ec52a18006a128c733fcff20d3a4a54ba44a" } } @@ -357,7 +357,7 @@ target "houdini-common" { context = "houdini" contexts = { # Produced by this repository . - imagemagick = "docker-image://islandora/imagemagick:7.1.0.16@sha256:6183916c95e5207033022ba92035ae9723df86b1ddfd90a737d953d4a829d7f3" + imagemagick = "docker-image://islandora/imagemagick:7.1.1.13@sha256:f95f073798966ca963b1337480bbdadedd958fadb5cee1af7c8c5dc2b9618797" } } @@ -366,7 +366,7 @@ target "hypercube-common" { context = "hypercube" contexts = { # Produced by this repository . - leptonica = "docker-image://islandora/leptonica:1.82.0@sha256:142c4fe8215625e2c4eca0ad990b36b87791e4e319aa2dab34d5ef9f4eae8bd0" + leptonica = "docker-image://islandora/leptonica:1.83.1@sha256:621b7ff8480b8f9c450259b6610141f5200cf1a0169e2802df74af2f97a3b928" } } diff --git a/drupal/Dockerfile b/drupal/Dockerfile index b6174ab3..41b97e4e 100644 --- a/drupal/Dockerfile +++ b/drupal/Dockerfile @@ -2,25 +2,11 @@ FROM nginx ARG TARGETARCH -ARG DRUSH_VERSION="0.6.0" -ARG DRUSH_FILE="drush.phar" -ARG DRUSH_URL="https://github.com/drush-ops/drush-launcher/releases/download/${DRUSH_VERSION}/${DRUSH_FILE}" -ARG DRUSH_SHA256="c3f32a800a2f18470b0010cd71c49e49ef5c087f8131eecfe9b686dc1f3f3d4e" EXPOSE 80 WORKDIR /var/www/drupal -# Platform agnostic does not require arch specific identifier. -RUN --mount=type=cache,id=drupal-downloads-${TARGETARCH},sharing=locked,target=/opt/downloads \ - download.sh \ - --url "${DRUSH_URL}" \ - --sha256 "${DRUSH_SHA256}" \ - && \ - cp "${DOWNLOAD_CACHE_DIRECTORY}/${DRUSH_FILE}" /usr/bin/drush && \ - chmod a+x /usr/bin/drush && \ - cleanup.sh - # Platform specific does require arch specific identifier. RUN --mount=type=cache,id=drupal-apk-${TARGETARCH},sharing=locked,target=/var/cache/apk \ apk add \ diff --git a/drupal/rootfs/etc/islandora/utilities.sh b/drupal/rootfs/etc/islandora/utilities.sh index 250f49bb..658b38eb 100755 --- a/drupal/rootfs/etc/islandora/utilities.sh +++ b/drupal/rootfs/etc/islandora/utilities.sh @@ -481,7 +481,7 @@ function configure_islandora_module { # Configure Solr port and host. function configure_islandora_default_module { local site site_url host port - if ! drush pm-list --pipe --type=module --status=enabled --no-core | grep -q search_api; then + if ! drush pm-list --format=string --type=module --status=enabled --no-core | grep -q search_api; then echo "Search API is not installed. Skipping configuration" return 0 fi @@ -514,7 +514,7 @@ function configure_search_api_solr_module { # Enables and sets carapace as the default theme. function set_carapace_default_theme { local site site_url - if ! drush pm-list --pipe --type=theme --status=enabled --no-core | grep -q carapace; then + if ! drush pm-list --format=string --type=theme --status=enabled --no-core | grep -q carapace; then echo "carapace is not available. Skipping configuration." return 0 fi @@ -539,7 +539,7 @@ function generate_solr_config { mkdir -p "/tmp/${core}" || true chmod a+rwx "/tmp/${core}" - if ! drush -l "${site_url}" -y search-api-solr:get-server-config default_solr_server "/tmp/${core}/solr_config.zip" 7.1; then + if ! drush -l "${site_url}" -y search-api-solr:get-server-config default_solr_server "/tmp/${core}/solr_config.zip" 8; then echo -e "\n\nERROR: Could not generate SOLR config.zip!\nIn Drupal, check Configuration -> Search API -> SOLR Server, and use the\n"+ Get config.zip" option which should give you information into the actual error.\n\n" return 1 fi @@ -569,7 +569,7 @@ function create_solr_core { # Generate solr config and create a core for it. function create_solr_core_with_default_config { local site - if ! drush pm-list --pipe --type=module --status=enabled --no-core | grep -q search_api_solr; then + if ! drush pm-list --format=string --type=module --status=enabled --no-core | grep -q search_api_solr; then echo "search_api_solr is not installed. Skipping core setup." return 0 fi @@ -584,7 +584,7 @@ function create_solr_core_with_default_config { function configure_matomo_module { local site site_url site_id matomo_url matomo_http_url - if ! drush pm-list --pipe --type=module --status=enabled --no-core | grep -q matomo; then + if ! drush pm-list --format=string --type=module --status=enabled --no-core | grep -q matomo; then echo "matomo is not installed. Skipping configuration" return 0 fi @@ -605,7 +605,7 @@ function configure_matomo_module { function configure_openseadragon { local site site_url cantaloupe_url - if ! drush pm-list --pipe --type=module --status=enabled --no-core | grep -q openseadragon; then + if ! drush pm-list --format=string --type=module --status=enabled --no-core | grep -q openseadragon; then echo "openseadragon is not installed. Skipping configuration" return 0 fi diff --git a/drupal/rootfs/usr/local/bin/drush b/drupal/rootfs/usr/local/bin/drush index 1c522095..cba50aee 100755 --- a/drupal/rootfs/usr/local/bin/drush +++ b/drupal/rootfs/usr/local/bin/drush @@ -6,9 +6,9 @@ set -e # regardless of which shell is used or how it is started (login, interactive, etc) if test "$(id -u)" -eq 0; then # If root run as nginx. - s6-setuidgid nginx php -d memory_limit=-1 /usr/bin/drush "${@}" + s6-setuidgid nginx php -d memory_limit=-1 /var/www/drupal/vendor/bin/drush "${@}" else # If non-root user, then run as current user # as we do not have permissions to switch user. - php -d memory_limit=-1 /usr/bin/drush "${@}" + php -d memory_limit=-1 /var/www/drupal/vendor/bin/drush "${@}" fi diff --git a/drupal/rootfs/usr/share/drush/Commands/UpdateSettingsCommands.php b/drupal/rootfs/usr/share/drush/Commands/UpdateSettingsCommands.php index 4e14020c..403133c6 100644 --- a/drupal/rootfs/usr/share/drush/Commands/UpdateSettingsCommands.php +++ b/drupal/rootfs/usr/share/drush/Commands/UpdateSettingsCommands.php @@ -201,7 +201,9 @@ public function setReverseProxySettings($reverse_proxy_ips) { 'required' => TRUE, ]; $settings['settings']['reverse_proxy_trusted_headers'] = (object) [ - 'value' => \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED, + 'value' => \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_FOR | + \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PROTO | + \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_PORT, 'required' => TRUE, ]; $this->writeSettings($settings); diff --git a/drupal/tests/ServiceStartsWithBackendMySQL/test.sh b/drupal/tests/ServiceStartsWithBackendMySQL/test.sh index 79bc4b5a..b81e0255 100755 --- a/drupal/tests/ServiceStartsWithBackendMySQL/test.sh +++ b/drupal/tests/ServiceStartsWithBackendMySQL/test.sh @@ -7,7 +7,7 @@ source /usr/local/share/isle/utilities.sh # Install basic Drupal cd /var/www/drupal || exit 1 rm -fr /var/www/drupal/* -composer create-project drupal/recommended-project:^9.4 \ +composer create-project drupal/recommended-project:^10.1.2 \ --prefer-dist \ --no-interaction \ --stability stable \ @@ -15,7 +15,7 @@ composer create-project drupal/recommended-project:^9.4 \ -- /var/www/drupal # Install Drush. -composer require drush/drush:^11.0 +composer require drush/drush:^12.1.3 # Install actual site. # shellcheck disable=SC1091 diff --git a/drupal/tests/ServiceStartsWithBackendPostgreSQL/test.sh b/drupal/tests/ServiceStartsWithBackendPostgreSQL/test.sh index c52e770b..5f64bb2a 100755 --- a/drupal/tests/ServiceStartsWithBackendPostgreSQL/test.sh +++ b/drupal/tests/ServiceStartsWithBackendPostgreSQL/test.sh @@ -7,7 +7,7 @@ source /usr/local/share/isle/utilities.sh # Install basic Drupal cd /var/www/drupal || exit 1 rm -fr /var/www/drupal/* -composer create-project drupal/recommended-project:^9.4 \ +composer create-project drupal/recommended-project:^10.1.2 \ --prefer-dist \ --no-interaction \ --stability stable \ @@ -15,7 +15,7 @@ composer create-project drupal/recommended-project:^9.4 \ -- /var/www/drupal # Install Drush. -composer require drush/drush:^11.0 +composer require drush/drush:^12.1.3 # Install actual site. # shellcheck disable=SC1091 diff --git a/fcrepo6/Dockerfile b/fcrepo6/Dockerfile index 05c89310..cc02f509 100644 --- a/fcrepo6/Dockerfile +++ b/fcrepo6/Dockerfile @@ -2,10 +2,10 @@ FROM tomcat ARG TARGETARCH -ARG FCREPO_VERSION="6.3.0" +ARG FCREPO_VERSION="6.4.0" ARG FCREPO_FILE="fcrepo-webapp-${FCREPO_VERSION}.war" ARG FCREPO_URL="https://github.com/fcrepo/fcrepo/releases/download/fcrepo-${FCREPO_VERSION}/${FCREPO_FILE}" -ARG FCREPO_SHA256="e7589081b6c747f1e06f46b78d568bb1a3a6853106b884f6f9b1fce4e41d673f" +ARG FCREPO_SHA256="50c4300b71a16e644ea0f2fec0a888ff9ae9f3a4a295a54e9c09cd213483028f" ARG SYN_VERSION="1.1.0" ARG SYN_FILE="islandora-syn-${SYN_VERSION}-all.jar" diff --git a/fcrepo6/README.md b/fcrepo6/README.md index 3fcb7f14..14cbd5be 100644 --- a/fcrepo6/README.md +++ b/fcrepo6/README.md @@ -1,6 +1,6 @@ # Fcrepo -Docker image for [Fcrepo] version 6.2.0. +Docker image for [Fcrepo] version 6.4.0. Please refer to the [Fcrepo Documentation] for more in-depth information. diff --git a/fcrepo6/tests/ServiceStartsWithBackendFile/build.gradle.kts b/fcrepo6/tests/ServiceStartsWithBackendFile/build.gradle.kts new file mode 100644 index 00000000..dc591889 --- /dev/null +++ b/fcrepo6/tests/ServiceStartsWithBackendFile/build.gradle.kts @@ -0,0 +1,6 @@ +import plugins.TestsPlugin.DockerComposeUp + +tasks.named("test") { + // Remove 143 when https://github.com/Islandora-Devops/isle-buildkit/issues/269 is resolved. + expectExitCodes("fcrepo6", 0, 143) +} diff --git a/fcrepo6/tests/ServiceStartsWithBackendFile/docker-compose.yml b/fcrepo6/tests/ServiceStartsWithBackendFile/docker-compose.yml new file mode 100644 index 00000000..73f4fdae --- /dev/null +++ b/fcrepo6/tests/ServiceStartsWithBackendFile/docker-compose.yml @@ -0,0 +1,24 @@ +# file: docker-compose.yml +# +# Tests that the base values for database environment variables can be +# overridden by prefixing them. +# +# `base/rootfs/etc/cont-init.d/00-container-environment-00-init.sh` +version: "3.8" + +x-common: &common + restart: "no" + +name: fcrepo6-servicestartswithbackendfile +services: + activemq: + <<: *common + image: ${ACTIVEMQ:-islandora/activemq:local} + fcrepo6: + volumes: + - ./test.sh:/test.sh # Test to run. + command: + - /test.sh # Run test and exit. + image: ${FCREPO6:-islandora/fcrepo6:local} + depends_on: + - activemq diff --git a/fcrepo6/tests/ServiceStartsWithBackendFile/test.sh b/fcrepo6/tests/ServiceStartsWithBackendFile/test.sh new file mode 100755 index 00000000..a69afcc2 --- /dev/null +++ b/fcrepo6/tests/ServiceStartsWithBackendFile/test.sh @@ -0,0 +1,15 @@ +#!/command/with-contenv bash +# shellcheck shell=bash + +# shellcheck disable=SC1091 +source /usr/local/share/isle/utilities.sh + +# Wait for fcrepo to start. +wait_20x http://localhost:8080/fcrepo/rest + +# Add some content. +object=$(curl --fail -X POST -H "Authorization: Bearer islandora" -H "Content-Type:text/plain" "http://localhost:8080/fcrepo/rest" 2>/dev/null) +echo "Create Object: $object" + +# All tests were successful +exit 0 diff --git a/hypercube/Dockerfile b/hypercube/Dockerfile index 6eaf16d3..552bc555 100644 --- a/hypercube/Dockerfile +++ b/hypercube/Dockerfile @@ -23,6 +23,7 @@ RUN --mount=type=cache,id=hypercube-apk-${TARGETARCH},sharing=locked,target=/var /packages/leptonica-*.apk \ poppler-utils \ tesseract-ocr \ + tesseract-ocr-data-eng \ tesseract-ocr-data-fra \ tesseract-ocr-data-spa \ tesseract-ocr-data-ita \ diff --git a/mariadb/Dockerfile b/mariadb/Dockerfile index 6007aed8..7b670c2b 100644 --- a/mariadb/Dockerfile +++ b/mariadb/Dockerfile @@ -10,6 +10,7 @@ RUN --mount=type=cache,id=mariadb-apk-${TARGETARCH},sharing=locked,target=/var/c apk add \ mariadb \ mysql-client \ + mariadb-server-utils \ && \ mkdir -p /var/lib/mysql-files && \ chown -R mysql:mysql \ diff --git a/milliner/Dockerfile b/milliner/Dockerfile index 90d5bad0..1bfead93 100644 --- a/milliner/Dockerfile +++ b/milliner/Dockerfile @@ -15,7 +15,7 @@ RUN --mount=type=cache,id=milliner-composer-${TARGETARCH},sharing=locked,target= ENV \ MILLINER_FCREPO_URL=http://fcrepo:8080/fcrepo/rest \ - MILLINER_FEDORA6=false \ + MILLINER_FEDORA6=true \ MILLINER_LOG_LEVEL=info COPY --link rootfs /