diff --git a/Dockerfile b/Dockerfile index 29df3ba6efe4c07d5b328803e6c53384d1c56a29..893d94957e40be9a5ab69ea054e2f29ecac372b1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,93 +1,58 @@ -FROM nextcloud:30.0.14-fpm AS nextcloud +FROM nextcloud:31.0.10-fpm AS nextcloud ARG BASE_DIR="/usr/src/nextcloud" ARG TMP_PATCH_DIR="/tmp/build_patches" -ARG THEME_HELPER_JOB_ID="1313213" -ARG NOTES_VERSION="4.11.0" -ARG CONTACTS_JOB_ID="1313223" -ARG CALENDAR_JOB_ID="1313255" -ARG EMAIL_RECOVERY_JOB_ID="1313239" -ARG EA_JOB_ID="1289726" -ARG LAUNCHER_JOB_ID="1313268" -ARG GOOGLE_INTEGRATION_VERSION="3.2.0" -ARG DASHBOARD_JOB_ID="1313279" -ARG SNAPPY_VERSION="2.37.2" -ARG SNAPPY_THEME_VERSION="4.0.4" -ARG USER_MIGRATION_JOB_ID="1313296" -ARG MEMORIES_VERSION="7.5.2" -ARG DROP_ACCOUNT_VERSION="2.7.1" - -RUN sed -i 's/30,0,14,1/30,0,14,8/' ${BASE_DIR}/version.php + +ARG CONTACTS_URL="https://gitlab.e.foundation/api/v4/projects/1238/packages/generic/contacts/v7.2.0+murena-20251111/contacts-v7.2.0+murena-20251111.tar.gz" +ARG CALENDAR_URL="https://gitlab.e.foundation/api/v4/projects/1199/packages/generic/calendar/v5.3.5+murena-20251016/calendar-v5.3.5+murena-20251016.tar.gz" +ARG THEME_HELPER_URL="https://gitlab.e.foundation/api/v4/projects/952/packages/generic/ecloud-theme-helper/v9.0.0/ecloud-theme-helper-v9.0.0.tar.gz" +ARG LAUNCHER_URL="https://gitlab.e.foundation/api/v4/projects/927/packages/generic/murena_launcher/v9.0.0/murena_launcher-v9.0.0.tar.gz" +ARG DASHBOARD_URL="https://gitlab.e.foundation/api/v4/projects/1195/packages/generic/murena-dashboard/v9.0.0/murena-dashboard-v9.0.0.tar.gz" +ARG SNAPPY_URL="https://gitlab.e.foundation/api/v4/projects/1367/packages/generic/snappymail/v2.38.2+murena-20251117/snappymail-v2.38.2+murena-20251117.tar.gz" +ARG OIDC_LOGIN_URL="https://gitlab.e.foundation/api/v4/projects/1496/packages/generic/oidc_login/v3.2.2+murena-20251028/oidc_login-v3.2.2+murena-20251028.tar.gz" +ARG SNAPPY_THEME_VERSION="https://gitlab.e.foundation/api/v4/projects/1377/packages/generic/snappymail/v4.0.5/snappymail-v4.0.5.tar.gz" +ARG EA_URL="https://gitlab.e.foundation/api/v4/projects/648/packages/generic/ecloud-accounts/v13.0.0/ecloud-accounts-v13.0.0.tar.gz" +ARG EMAIL_RECOVERY_URL="https://gitlab.e.foundation/api/v4/projects/868/packages/generic/email-recovery/v12.2.0/email-recovery-v12.2.0.tar.gz" +ARG USER_MIGRATION_URL="https://gitlab.e.foundation/api/v4/projects/1468/packages/generic/user_migration/8.0.0+murena-20251020/user_migration-8.0.0+murena-20251020.tar.gz" + +ARG NOTES_URL="https://github.com/nextcloud-releases/notes/releases/download/v4.11.0/notes-v4.11.0.tar.gz" +ARG MEMORIES_URL="https://github.com/pulsejet/memories/releases/download/v7.5.2/memories.tar.gz" +ARG DROP_ACCOUNT_URL="https://packages.framasoft.org/projects/nextcloud-apps/drop-account/drop_account-2.7.1.tar.gz" +ARG GOOGLE_INTEGRATION_URL="https://github.com/nextcloud/integration_google/releases/download/v1.0.9/integration_google-1.0.9.tar.gz" + +RUN sed -i 's/31,0,10,2/31,0,10,11/' ${BASE_DIR}/version.php COPY custom_entrypoint.sh / RUN chmod +x /custom_entrypoint.sh RUN mkdir -p /var/www/skeleton/Documents && mkdir -p /var/www/skeleton/Images # Install unzip for unzipping artifacts RUN apt-get update && apt-get install -y unzip ffmpeg -RUN curl -fsSL -o notes.tar.gz \ - "https://github.com/nextcloud-releases/notes/releases/download/v${NOTES_VERSION}/notes-v${NOTES_VERSION}.tar.gz" && \ - tar -xf notes.tar.gz -C ${BASE_DIR}/custom_apps/ && \ - rm notes.tar.gz; - -# custom Contact -RUN curl -fsSL -o contacts.zip \ - "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/contacts/-/jobs/${CONTACTS_JOB_ID}/artifacts/download" && \ - unzip contacts.zip && \ - mv dist/contacts ${BASE_DIR}/custom_apps/ && \ - rm contacts.zip; - -RUN curl -fsSL -o calendar.zip \ - "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/calendar/-/jobs/${CALENDAR_JOB_ID}/artifacts/download" && \ - unzip calendar.zip && \ - mv dist/calendar ${BASE_DIR}/custom_apps/ && \ - rm calendar.zip; - -RUN curl -fsSL -o email-recovery.zip \ - "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/email-recovery/-/jobs/${EMAIL_RECOVERY_JOB_ID}/artifacts/download" && \ - unzip email-recovery.zip && \ - mv dist/email-recovery ${BASE_DIR}/custom_apps/ && \ - rm email-recovery.zip; - - -RUN curl -fsSL -o ecloud-theme-helper.zip \ - "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/ecloud-theme-helper/-/jobs/${THEME_HELPER_JOB_ID}/artifacts/download" && \ - unzip ecloud-theme-helper.zip && \ - mv dist/ecloud-theme-helper ${BASE_DIR}/custom_apps/ && \ - rm ecloud-theme-helper.zip; - -RUN curl -fsSL -o murena_launcher.zip \ - "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/launcher/-/jobs/${LAUNCHER_JOB_ID}/artifacts/download" && \ - unzip murena_launcher.zip && \ - mv dist/murena_launcher ${BASE_DIR}/custom_apps/ && \ - rm murena_launcher.zip; - -RUN curl -fsSL -o integration_google.tar.gz \ - "https://github.com/nextcloud-releases/integration_google/releases/download/v${GOOGLE_INTEGRATION_VERSION}/integration_google-v${GOOGLE_INTEGRATION_VERSION}.tar.gz" && \ - tar -xf integration_google.tar.gz -C ${BASE_DIR}/custom_apps/ && \ - chown -R www-data:www-data ${BASE_DIR}/custom_apps/integration_google && \ - rm integration_google.tar.gz; - -RUN curl -fsSL -o ecloud-accounts.zip \ - "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/ecloud-accounts/-/jobs/${EA_JOB_ID}/artifacts/download" && \ - unzip ecloud-accounts.zip && \ - mv dist/ecloud-accounts ${BASE_DIR}/custom_apps/ && \ - rm ecloud-accounts.zip; - -RUN curl -fsSL -o ecloud-dashboard.zip \ - "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/murena-dashboard/-/jobs/${DASHBOARD_JOB_ID}/artifacts/download" && \ - unzip ecloud-dashboard.zip && \ - mv dist/murena-dashboard ${BASE_DIR}/custom_apps/ && \ - rm ecloud-dashboard.zip; - -#RUN curl -fsSL -o snappymail.tar.gz \ -# "https://snappymail.eu/repository/nextcloud/snappymail-${SNAPPY_VERSION}-nextcloud.tar.gz" && \ -# tar -xf snappymail.tar.gz -C ${BASE_DIR}/custom_apps/ && \ -# rm snappymail.tar.gz; - -RUN curl -fsSL -o user_migration.zip \ - "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/user_migration/-/jobs/${USER_MIGRATION_JOB_ID}/artifacts/download" && \ - unzip user_migration.zip && \ - mv dist/user_migration ${BASE_DIR}/custom_apps/ && \ - rm user_migration.zip; + +RUN rm -rf ${BASE_DIR}/core/skeleton/* ${BASE_DIR}/themes/example \ + && mkdir -p ${BASE_DIR}/core/skeleton/Documents \ + && mkdir -p ${BASE_DIR}/core/skeleton/Images \ + && mkdir -p ${BASE_DIR}/themes/Murena \ + && mkdir -p ${BASE_DIR}/themes/eCloud + +# Install unzip for unzipping artifacts +RUN apt-get update && apt-get install -y unzip ffmpeg syslog-ng + +# Murena apps +RUN curl -sL ${CONTACTS_URL} | tar xzf - -C ${BASE_DIR}/custom_apps +RUN curl -sL ${CALENDAR_URL} | tar xzf - -C ${BASE_DIR}/custom_apps +RUN curl -sL ${THEME_HELPER_URL} | tar xzf - -C ${BASE_DIR}/custom_apps +RUN curl -sL ${LAUNCHER_URL} | tar xzf - -C ${BASE_DIR}/custom_apps +RUN curl -sL ${DASHBOARD_URL} | tar xzf - -C ${BASE_DIR}/custom_apps +RUN curl -sL ${SNAPPY_URL} | tar xzf - -C ${BASE_DIR}/custom_apps +RUN curl -sL ${OIDC_LOGIN_URL} | tar xzf - -C ${BASE_DIR}/custom_apps +RUN curl -sL ${EA_URL} | tar xzf - -C ${BASE_DIR}/custom_apps +RUN curl -sL ${EMAIL_RECOVERY_URL} | tar xzf - -C ${BASE_DIR}/custom_apps +RUN curl -sL ${USER_MIGRATION_URL} | tar xzf - -C ${BASE_DIR}/custom_apps + +# External apps +RUN curl -sL ${NOTES_URL} | tar xzf - -C ${BASE_DIR}/custom_apps +RUN curl -sL ${MEMORIES_URL} | tar xzf - -C ${BASE_DIR}/custom_apps +RUN curl -sL ${DROP_ACCOUNT_URL} | tar xzf - -C ${BASE_DIR}/custom_apps +RUN curl -sL ${GOOGLE_INTEGRATION_URL} | tar xzf - -C ${BASE_DIR}/custom_apps # Fix snappymail icon #RUN sed -i 's/logo-white-64x64.png/app.svg/' ${BASE_DIR}/custom_apps/snappymail/appinfo/info.xml @@ -96,24 +61,8 @@ RUN curl -fsSL -o user_migration.zip \ #RUN sed -i "s/'additional'/null/" ${BASE_DIR}/custom_apps/snappymail/lib/Settings/PersonalSettings.php # Snappy theme -#RUN curl -fsSL -o Murena-snappymail-theme.tar.gz \ -# "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/snappymail-theme/-/archive/${SNAPPY_THEME_VERSION}/snappymail-theme-${SNAPPY_THEME_VERSION}.tar.gz" && \ -# tar -xf Murena-snappymail-theme.tar.gz -C /tmp/ && \ -# mkdir -p ${BASE_DIR}/themes/Murena && \ -# mv /tmp/snappymail-theme-${SNAPPY_THEME_VERSION}/ ${BASE_DIR}/themes/Murena/snappymail && \ -# chown -R www-data:www-data ${BASE_DIR}/themes/Murena/ && \ -# rm -rf Murena-snappymail-theme.tar.gz - -RUN curl -fsSL -o memories.tar.gz \ - "https://github.com/pulsejet/memories/releases/download/v${MEMORIES_VERSION}/memories.tar.gz" && \ - tar -xf memories.tar.gz -C ${BASE_DIR}/custom_apps/ && \ - rm memories.tar.gz; - -RUN curl -fsSL -o drop_account.tar.gz \ - "https://packages.framasoft.org/projects/nextcloud-apps/drop-account/drop_account-${DROP_ACCOUNT_VERSION}.tar.gz" && \ - tar -xf drop_account.tar.gz -C ${BASE_DIR}/custom_apps/ && \ - rm drop_account.tar.gz; - +RUN rm -rf ${BASE_DIR}/themes/Murena/* && \ + curl -sL ${SNAPPY_THEME_VERSION} | tar xzf - -C ${BASE_DIR}/themes/Murena/ # Remove unzip when unzipping is done @@ -132,7 +81,7 @@ CMD ["php-fpm"] From nextcloud as selfhost ARG BASE_DIR="/usr/src/nextcloud" ARG TMP_PATCH_DIR="/tmp/build_patches" -ARG THEME_VERSION="26.0.2" +ARG THEME_VERSION="https://gitlab.e.foundation/api/v4/projects/315/packages/generic/eCloud/v26.0.2/eCloud-v26.0.2.tar.gz" #ARG USER_BACKEND_RAW_SQL_VERSION="2.0.1" ARG SELFHOST_THEME_VERSION="2.0.0" ARG IS_SELFHOST=true @@ -149,7 +98,7 @@ RUN patch -u ${BASE_DIR}/lib/private/Authentication/Token/PublicKeyTokenProvider RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/014-add-mail-usage.patch RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/015-email-mail-template.patch RUN patch -u ${BASE_DIR}/core/Command/User/Setting.php -i ${TMP_PATCH_DIR}/018-occ-user-setting.patch -RUN patch -u ${BASE_DIR}/apps/files/js/files.js -i ${TMP_PATCH_DIR}/021-repeated-storage-dialog-fix.patch +#RUN patch -u ${BASE_DIR}/apps/files/js/files.js -i ${TMP_PATCH_DIR}/021-repeated-storage-dialog-fix.patch RUN cd ${BASE_DIR} && patch -u ${BASE_DIR}/3rdparty/sabre/vobject/lib/ITip/Broker.php -i ${TMP_PATCH_DIR}/022-significantchange.patch RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/026-primary-color-fix.patch RUN patch -u ${BASE_DIR}/lib/private/Template/JSResourceLocator.php -i ${TMP_PATCH_DIR}/031-theme-custom-app-translations.patch @@ -160,12 +109,9 @@ RUN cd ${BASE_DIR} && patch -p1 < ${TMP_PATCH_DIR}/036-user-config-change-event. RUN rm -rf ${TMP_PATCH_DIR} # Custom theme -RUN curl -fsSL -o eCloud-theme.tar.gz \ - "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/nextcloud-theme/-/archive/${THEME_VERSION}/nextcloud-theme-${THEME_VERSION}.tar.gz" && \ - tar -xf eCloud-theme.tar.gz -C /tmp/ && \ - mv /tmp/nextcloud-theme-${THEME_VERSION}/ ${BASE_DIR}/themes/eCloud && \ - chown -R www-data:www-data ${BASE_DIR}/themes/eCloud/ && \ - rm -rf eCloud-theme.tar.gz ${BASE_DIR}/themes/example/ +RUN rm -rf ${BASE_DIR}/themes/eCloud && \ + curl -sL ${THEME_VERSION} | tar xzf - -C ${BASE_DIR}/themes + # User Backend #RUN curl -fsSL -o user_backend_sql_raw.tar.gz \ @@ -198,16 +144,16 @@ RUN sed -i 's/this.appLimit=e/this.appLimit=this.appList.length/' ${BASE_DIR}/di # Fix total quota value for users in settings and files RUN sed -i "s/'total'/'quota'/" ${BASE_DIR}/apps/settings/lib/Settings/Personal/PersonalInfo.php -RUN sed -i "s/\['total'\]/\['quota'\]/" ${BASE_DIR}/apps/provisioning_api/lib/Controller/AUserData.php +RUN sed -i "s/\['total'\]/\['quota'\]/" ${BASE_DIR}/apps/provisioning_api/lib/Controller/AUserDataOCSController.php -# Fix API call in files script -RUN sed -i "s/ajax\/getstoragestats/api\/v1\/stats/g" ${BASE_DIR}/apps/files/js/files.js +# Fix API call in files script -Not needed in NC 31 +#RUN sed -i "s/ajax\/getstoragestats/api\/v1\/stats/g" ${BASE_DIR}/apps/files/js/files.js From selfhost as ecloud ARG BASE_DIR="/usr/src/nextcloud" ARG TMP_PATCH_DIR="/tmp/build_patches" -ARG THEME_VERSION="30.0.0" -ARG LDAP_WRITE_SUPPORT_VERSION="1.12.1" +ARG THEME_VERSION="https://gitlab.e.foundation/api/v4/projects/315/packages/generic/eCloud/v31.0.3/eCloud-v31.0.3.tar.gz" +ARG LDAP_WRITE_SUPPORT_VERSION="1.13.0" ARG IS_SELFHOST=false RUN curl -fsSL -o ldap_write_support.tar.gz \ @@ -222,14 +168,14 @@ RUN patch -u ${BASE_DIR}/core/Controller/ContactsMenuController.php -i ${TMP_PAT RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/005-autocomplete-user-leak-core.patch RUN patch -u ${BASE_DIR}/core/templates/layout.guest.php -i ${TMP_PATCH_DIR}/016-login-screen.patch RUN patch -u ${BASE_DIR}/lib/private/Notification/Manager.php -i ${TMP_PATCH_DIR}/020-fairuse-notification-fix.patch -RUN cd ${BASE_DIR} && patch -u ${BASE_DIR}/apps/user_ldap/lib/User_LDAP.php -i ${TMP_PATCH_DIR}/023-ldap-check-pwd-optimization.patch +#RUN cd ${BASE_DIR} && patch -u ${BASE_DIR}/apps/user_ldap/lib/User_LDAP.php -i ${TMP_PATCH_DIR}/023-ldap-check-pwd-optimization.patch - already added in nc31 RUN patch -u ${BASE_DIR}/lib/private/User/Manager.php -i ${TMP_PATCH_DIR}/025-optimize-get-by-email.patch RUN patch -u ${BASE_DIR}/apps/dav/lib/Connector/Sabre/Principal.php -i ${TMP_PATCH_DIR}/027-displayname-user-leak-dav.patch RUN patch -u ${BASE_DIR}/apps/dav/lib/HookManager.php -i ${TMP_PATCH_DIR}/028-default-task-calendar.patch RUN patch -u ${BASE_DIR}/apps/provisioning_api/lib/Controller/UsersController.php -i ${TMP_PATCH_DIR}/029-restrict-user-to-change-primary-email.patch RUN patch -u ${BASE_DIR}/lib/private/Security/VerificationToken/VerificationToken.php -i ${TMP_PATCH_DIR}/033-verification-token-private.patch RUN patch -u ${BASE_DIR}/lib/private/AppFramework/Middleware/Security/CORSMiddleware.php -i ${TMP_PATCH_DIR}/034-oidc-bearer-token-auth.patch - +#RUN patch -u ${BASE_DIR}/custom_apps/snappymail/app/snappymail/v/2.38.2+murena-20251112/app/libraries/RainLoop/Actions/Contacts.php -i ${TMP_PATCH_DIR}/037-snappymail-contact.patch RUN rm -rf ${TMP_PATCH_DIR} @@ -243,7 +189,7 @@ RUN sed -i 's/$this->getAvatarImage($user)/null/' ${BASE_DIR}/apps/dav/lib/CardD # RUN cd ${BASE_DIR}/dist && sed -i 's/resetPassword:!1/resetPassword:!1||Z.showResetPassword==="1"/' core-login.js # add attr about how many notifications to notif icon -RUN sed -i 's/attrs:{id:"notifications",/attrs:{id:"notifications","data-has-notifications":0!==u.notifications.length,/' ${BASE_DIR}/apps/notifications/js/NotificationsApp-DS2Cdf60.chunk.mjs +RUN sed -i 's/attrs:{id:"notifications",/attrs:{id:"notifications","data-has-notifications":0!==u.notifications.length,/' ${BASE_DIR}/apps/notifications/js/NotificationsApp-CL5l4zBd.chunk.mjs # Rename Memories to Gallery RUN sed -i 's/Memories<\/name>/Gallery<\/name>/g' ${BASE_DIR}/custom_apps/memories/appinfo/info.xml @@ -252,7 +198,7 @@ RUN cd ${BASE_DIR}/custom_apps/memories/js && sed -i 's/Memories Settings/Galler # autocomplete leak tweak apps frontend with sed, disable group suggestion -RUN cd ${BASE_DIR}/custom_apps/contacts && sed -i 's/\["INDIVIDUAL"\]/\[\]/g' js/contacts-main.mjs +#RUN cd ${BASE_DIR}/custom_apps/contacts && sed -i 's/\["INDIVIDUAL"\]/\[\]/g' js/contacts-main.mjs RUN cd ${BASE_DIR}/custom_apps/calendar && sed -i 's/"GROUP","INDIVIDUAL"/"INDIVIDUAL"/g' js/calendar-main.js RUN cd ${BASE_DIR}/custom_apps/calendar && sed -i 's/{name:\[a,"displayname"\]},//' js/calendar-main.js RUN cd ${BASE_DIR}/custom_apps/notes && sed -i 's/OCA\\Notes\\Migration\\EditorHint<\/step>//g' appinfo/info.xml @@ -280,12 +226,7 @@ RUN sed -i 's/{attrs:{name:t.t("theming","Navigation bar settings")}}/{staticCla # Custom theme RUN rm -rf ${BASE_DIR}/themes/eCloud && \ - curl -fsSL -o eCloud-theme.tar.gz \ - "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/nextcloud-theme/-/archive/${THEME_VERSION}/nextcloud-theme-${THEME_VERSION}.tar.gz" && \ - tar -xf eCloud-theme.tar.gz -C /tmp/ && \ - mv /tmp/nextcloud-theme-${THEME_VERSION}/ ${BASE_DIR}/themes/eCloud && \ - chown -R www-data:www-data ${BASE_DIR}/themes/eCloud/ && \ - rm -rf eCloud-theme.tar.gz ${BASE_DIR}/themes/example/ + curl -sL ${THEME_VERSION} | tar xzf - -C ${BASE_DIR}/themes # Remove Selfhost theme RUN if [ "$IS_SELFHOST" = false ]; then \ diff --git a/config/nextcloud/murena.config.php b/config/nextcloud/murena.config.php index ccf639b360baffe4477bf0c11120a5c26a752df0..d7d9c60d6a829dbe710bc2d4c25209acf312f767 100644 --- a/config/nextcloud/murena.config.php +++ b/config/nextcloud/murena.config.php @@ -9,19 +9,6 @@ $CONFIG = array( 'loglevel' => 2, 'syslog_tag' => 'nextcloud', 'cron_log' => true, - 'enabledPreviewProviders' => array( - 'OC\\Preview\\PNG', - 'OC\\Preview\\JPEG', - 'OC\\Preview\\GIF', - 'OC\\Preview\\BMP', - 'OC\\Preview\\XBitmap', - 'OC\\Preview\\MP3', - 'OC\\Preview\\TXT', - 'OC\\Preview\\MarkDown', - 'OC\\Preview\\OpenDocument', - 'OC\\Preview\\Krita', - 'OC\\Preview\\Movie', - ), 'preview_max_x' => 1024, 'preview_max_y' => 1024, 'default_phone_region' => getenv('NEXTCLOUD_DEFAULT_PHONE_REGION_CODE') ?: 'FR', diff --git a/custom_entrypoint.sh b/custom_entrypoint.sh index 76a1b266ac1174200a83e5a307129152dc2c5bd7..bb74336355dcafe95fdffe2d2731c3e9e8e8f46f 100755 --- a/custom_entrypoint.sh +++ b/custom_entrypoint.sh @@ -22,12 +22,13 @@ if version_greater "$image_version" "$installed_version"; then rsync $rsync_options --include "/user_backend_sql_raw/" --exclude '/*' $SRC_DIR/custom_apps/ $DST_DIR/custom_apps/ rsync $rsync_options --include "/email-recovery/" --exclude '/*' $SRC_DIR/custom_apps/ $DST_DIR/custom_apps/ rsync $rsync_options --include "/ecloud-accounts/" --exclude '/*' $SRC_DIR/custom_apps/ $DST_DIR/custom_apps/ + rsync $rsync_options --include "/oidc_login/" --exclude '/*' $SRC_DIR/custom_apps/ $DST_DIR/custom_apps/ rsync $rsync_options --include "/ecloud-theme-helper/" --exclude '/*' $SRC_DIR/custom_apps/ $DST_DIR/custom_apps/ rsync $rsync_options --include "/murena_launcher/" --exclude '/*' $SRC_DIR/custom_apps/ $DST_DIR/custom_apps/ rsync $rsync_options --include "/integration_google/" --exclude '/*' $SRC_DIR/custom_apps/ $DST_DIR/custom_apps/ rsync $rsync_options --include "/ldap_write_support/" --exclude '/*' $SRC_DIR/custom_apps/ $DST_DIR/custom_apps/ rsync $rsync_options --include "/murena-dashboard/" --exclude '/*' $SRC_DIR/custom_apps/ /$DST_DIR/custom_apps/ - #rsync $rsync_options --include "/snappymail/" --exclude '/*' $SRC_DIR/custom_apps/ /$DST_DIR/custom_apps/ + rsync $rsync_options --include "/snappymail/" --exclude '/*' $SRC_DIR/custom_apps/ /$DST_DIR/custom_apps/ rsync $rsync_options --include "/eCloud/" --exclude '/*' $SRC_DIR/themes/ $DST_DIR/themes/ rsync $rsync_options --include "/Murena/" --exclude '/*' $SRC_DIR/themes/ $DST_DIR/themes/ rsync $rsync_options --include "/memories/" --exclude '/*' $SRC_DIR/custom_apps/ $DST_DIR/custom_apps/ diff --git a/hooks.d/post-installation/murena-config.sh b/hooks.d/post-installation/murena-config.sh index 78e8b4e3c80106964dc13ef7c4379cb2ba143b2f..1509f4d28c3fd81d5ab858b350df47de778de67d 100755 --- a/hooks.d/post-installation/murena-config.sh +++ b/hooks.d/post-installation/murena-config.sh @@ -22,6 +22,7 @@ occ app:enable onlyoffice occ app:disable firstrunwizard occ app:disable logreader +occ app:disable files_pdfviewer # database occ db:add-missing-indices diff --git a/patches/005-autocomplete-user-leak-core.patch b/patches/005-autocomplete-user-leak-core.patch index b8d92820bb441e51dacd3bcf101bf1461b36a845..dad34cca20b9430860d87f8bf02733b2097034ef 100644 --- a/patches/005-autocomplete-user-leak-core.patch +++ b/patches/005-autocomplete-user-leak-core.patch @@ -14,22 +14,22 @@ this filtering works in conjunction with the autocomplete feature disabled in ne diff --git lib/private/Collaboration/Collaborators/UserPlugin.php lib/private/Collaboration/Collaborators/UserPlugin-new.php --- lib/private/Collaboration/Collaborators/UserPlugin.php 2025-02-13 19:30:40 +++ lib/private/Collaboration/Collaborators/UserPlugin-new.php 2025-03-07 12:48:50 -@@ -150,8 +150,8 @@ - if ( - $this->shareeEnumerationFullMatch && - $lowerSearch !== '' && (strtolower($uid) === $lowerSearch || -- strtolower($userDisplayName) === $lowerSearch || -- ($this->shareeEnumerationFullMatchIgnoreSecondDisplayName && trim(strtolower(preg_replace('/ \(.*\)$/', '', $userDisplayName))) === $lowerSearch) || -+ // strtolower($userDisplayName) === $lowerSearch || -+ // ($this->shareeEnumerationFullMatchIgnoreSecondDisplayName && trim(strtolower(preg_replace('/ \(.*\)$/', '', $userDisplayName))) === $lowerSearch) || - ($this->shareeEnumerationFullMatchEmail && strtolower($userEmail ?? '') === $lowerSearch)) +@@ -159,8 +159,8 @@ + && $lowerSearch !== '' + && ( + strtolower($uid) === $lowerSearch +- || strtolower($userDisplayName) === $lowerSearch +- || ($this->shareeEnumerationFullMatchIgnoreSecondDisplayName && trim(strtolower(preg_replace('/ \(.*\)$/', '', $userDisplayName))) === $lowerSearch) ++ //|| strtolower($userDisplayName) === $lowerSearch ++ //|| ($this->shareeEnumerationFullMatchIgnoreSecondDisplayName && trim(strtolower(preg_replace('/ \(.*\)$/', '', $userDisplayName))) === $lowerSearch) + || ($this->shareeEnumerationFullMatchEmail && strtolower($userEmail ?? '') === $lowerSearch) + ) ) { - if (strtolower($uid) === $lowerSearch) { diff --git lib/private/Collaboration/Collaborators/MailPlugin.php lib/private/Collaboration/Collaborators/MailPlugin-new.php --- lib/private/Collaboration/Collaborators/MailPlugin.php 2025-02-13 19:30:40 +++ lib/private/Collaboration/Collaborators/MailPlugin-new.php 2025-03-07 12:55:25 -@@ -19,6 +19,7 @@ +@@ -18,6 +18,7 @@ use OCP\IUserSession; use OCP\Mail\IMailer; use OCP\Share\IShare; @@ -37,7 +37,7 @@ diff --git lib/private/Collaboration/Collaborators/MailPlugin.php lib/private/Co class MailPlugin implements ISearchPlugin { protected bool $shareWithGroupOnly; -@@ -42,8 +43,10 @@ +@@ -40,8 +41,10 @@ private KnownUserService $knownUserService, private IUserSession $userSession, private IMailer $mailer, @@ -48,7 +48,7 @@ diff --git lib/private/Collaboration/Collaborators/MailPlugin.php lib/private/Co $this->shareeEnumeration = $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') === 'yes'; $this->shareWithGroupOnly = $this->config->getAppValue('core', 'shareapi_only_share_with_group_members', 'no') === 'yes'; $this->shareeEnumerationInGroupOnly = $this->shareeEnumeration && $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_group', 'no') === 'yes'; -@@ -204,27 +207,61 @@ +@@ -200,27 +203,63 @@ if ($exactEmailMatch) { $searchResult->markExactIdMatch($emailType); } @@ -64,31 +64,32 @@ diff --git lib/private/Collaboration/Collaborators/MailPlugin.php lib/private/Co - ]; + $isUserinInstance = $this->userManager->get($emailAddress); + if ($isUserinInstance === null) { -+ // /e/ user is not in ecloud -+ $result['exact'][] = [ -+ 'label' => $displayName, -+ 'uuid' => $contact['UID'], -+ 'name' => $contact['FN'], -+ 'type' => $emailAddressType ?? '', -+ 'value' => [ -+ 'shareType' => IShare::TYPE_EMAIL, -+ 'shareWith' => $emailAddress, -+ ], -+ ]; ++ // /e/ user is not in ecloud ++ $result['exact'][] = [ ++ 'label' => $displayName, ++ 'uuid' => $contact['UID'], ++ 'name' => $contact['FN'], ++ 'type' => $emailAddressType ?? '', ++ 'value' => [ ++ 'shareType' => IShare::TYPE_EMAIL, ++ 'shareWith' => $emailAddress, ++ ], ++ ]; + } else { + // /e/ user IS an ecloud user, convert to user share type -+ if (!$isUserinInstance->isEnabled()) { ++ if (!$isUserinInstance->isEnabled()) { + // Ignore disabled users + continue; + } + $result['exact'][] = [ + 'label' => $displayName, + 'value' => [ -+ 'shareType' => IShare::TYPE_USER, -+ 'shareWith' => $emailAddress, ++ 'shareType' => IShare::TYPE_USER, ++ 'shareWith' => $emailAddress, + ], + ]; + } ++ } else { - $result['wide'][] = [ - 'label' => $displayName, @@ -102,31 +103,32 @@ diff --git lib/private/Collaboration/Collaborators/MailPlugin.php lib/private/Co - ]; + $isUserinInstance = $this->userManager->get($emailAddress); + if ($isUserinInstance === null) { -+ // /e/ user is not in ecloud -+ $result['wide'][] = [ -+ 'label' => $displayName, -+ 'uuid' => $contact['UID'], -+ 'name' => $contact['FN'], -+ 'type' => $emailAddressType ?? '', -+ 'value' => [ -+ 'shareType' => IShare::TYPE_EMAIL, -+ 'shareWith' => $emailAddress, -+ ], -+ ]; ++ // /e/ user is not in ecloud ++ $result['wide'][] = [ ++ 'label' => $displayName, ++ 'uuid' => $contact['UID'], ++ 'name' => $contact['FN'], ++ 'type' => $emailAddressType ?? '', ++ 'value' => [ ++ 'shareType' => IShare::TYPE_EMAIL, ++ 'shareWith' => $emailAddress, ++ ], ++ ]; + } else { -+ // /e/ user IS an ecloud user, convert to user share type -+ if (!$isUserinInstance->isEnabled()) { -+ // Ignore disabled users -+ continue; -+ } -+ $result['wide'][] = [ -+ 'label' => $displayName, -+ 'value' => [ -+ 'shareType' => IShare::TYPE_USER, -+ 'shareWith' => $emailAddress, -+ ], -+ ]; ++ // /e/ user IS an ecloud user, convert to user share type ++ if (!$isUserinInstance->isEnabled()) { ++ // Ignore disabled users ++ continue; ++ } ++ $result['wide'][] = [ ++ 'label' => $displayName, ++ 'value' => [ ++ 'shareType' => IShare::TYPE_USER, ++ 'shareWith' => $emailAddress, ++ ], ++ ]; + } ++ } } } diff --git a/patches/011-privacy-settings.patch b/patches/011-privacy-settings.patch index 940d8eacc6a84e09b7fdcbda6a8cbc5162350bf0..7d669d32a05eb5e8823f179405aa14c52b0fdf03 100644 --- a/patches/011-privacy-settings.patch +++ b/patches/011-privacy-settings.patch @@ -4,6 +4,17 @@ Subject: [PATCH] Removes sections in "privacy" section in personal settings This patch removes certain unnecessary sections from the "privacy" section in personal settings +--- ./apps/privacy/lib/Settings/WhoHasAccessSettings.php 2025-11-05 00:20:31 ++++ ./apps/privacy/lib/Settings/WhoHasAccessSettings-new.php 2025-11-05 00:21:36 +@@ -77,6 +77,7 @@ + $this->initialStateService->provideInitialState('privacy', 'serverSideEncryptionEnabled', $this->encryptionManager->isEnabled()); + $this->initialStateService->provideInitialState('privacy', 'homeStorageEncryptionEnabled', $isHomeStorageEncrypted); + $this->initialStateService->provideInitialState('privacy', 'masterKeyEncryptionEnabled', $isMasterKeyEnabled); ++ $this->initialStateService->provideInitialState('privacy', 'serverName', $themingDefaults->getEntity()); + + + return new TemplateResponse('privacy', 'who-has-access'); + --- ./apps/privacy/lib/Settings/MissionSettings.php 2021-09-07 17:38:08.650902445 +0530 +++ ./apps/privacy/lib/Settings/MissionSettings-new.php 2021-09-07 17:40:30.078256502 +0530 @@ -36,7 +36,7 @@ diff --git a/patches/014-add-mail-usage.patch b/patches/014-add-mail-usage.patch index 4418b3e15bc2307765220dfab542671e00c3ccc0..a8bf3a1d113bd5017c6d24fbd65ab36c071f3b1e 100644 --- a/patches/014-add-mail-usage.patch +++ b/patches/014-add-mail-usage.patch @@ -1,22 +1,24 @@ --- lib/private/legacy/OC_Helper.php 2025-05-25 16:00:00.880495300 +0530 +++ lib/private/legacy/OC_Helper-new.php 2025-05-25 16:02:00.970495300 +0530 -@@ -512,6 +512,12 @@ +@@ -512,6 +512,13 @@ } try { $free = $sourceStorage->free_space($rootInfo->getInternalPath()); -+ $ownerId = $storage->getOwner($path); -+ $mailQuotaUsage = (int) \OC::$server->getConfig()->getUserValue($ownerId, 'ecloud-accounts', 'mailQuotaUsage', 0); -+ $free = max(0, $free - $mailQuotaUsage); -+ if($path === '/') { -+ $used = $used + $mailQuotaUsage; -+ } ++ $ownerId = $storage->getOwner($path); ++ $mailQuotaUsage = (int) \OC::$server->getConfig()->getUserValue($ownerId, 'ecloud-accounts', 'mailQuotaUsage', 0); ++ $free = max(0, $free - $mailQuotaUsage); ++ if ($path === '/') { ++ $used = $used + $mailQuotaUsage; ++ } ++ if (is_bool($free)) { $free = 0.0; } -@@ -547,7 +553,6 @@ +@@ -547,7 +554,6 @@ */ $isRemoteShare = $storage->instanceOfStorage(\OCA\Files_Sharing\External\Storage::class); - $ownerId = $storage->getOwner($path); - $hasOwnerId = $ownerId !== false && $ownerId !== null; - $ownerDisplayName = ''; \ No newline at end of file + $ownerDisplayName = ''; + + if ($isRemoteShare === false && $ownerId !== false) { \ No newline at end of file diff --git a/patches/016-login-screen.patch b/patches/016-login-screen.patch index d7d7b98af69044bcd7a358fdd9ef4d765aa7e3ab..79414a44a74476003a553309265fcef67ddab40c 100644 --- a/patches/016-login-screen.patch +++ b/patches/016-login-screen.patch @@ -1,5 +1,5 @@ ---- layout.guest.php 2025-07-24 10:37:50 -+++ layout.guest-new.php 2025-07-24 10:58:20 +--- layout.guest.php 2025-10-10 12:39:23 ++++ layout.guest-new.php 2025-10-10 12:53:43 @@ -32,6 +32,7 @@ @@ -8,63 +8,68 @@ -@@ -42,10 +43,38 @@ +@@ -42,10 +43,37 @@
+
" > -+ -+