diff --git a/Dockerfile b/Dockerfile index 361bc55492fa0c43e69e1cb09046518bf2f1d5b1..5b6c8c327ba06fc1c8e5f090bde7edf15d3b5561 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,15 @@ -FROM nextcloud:29.0.12-fpm AS nextcloud +FROM nextcloud:29.0.16-fpm AS nextcloud ARG BASE_DIR="/usr/src/nextcloud" ARG TMP_PATCH_DIR="/tmp/build_patches" -ARG THEME_HELPER_JOB_ID="1168069" +ARG THEME_HELPER_JOB_ID="1210583" ARG NOTES_VERSION="4.11.0" ARG CONTACTS_JOB_ID="881946" ARG CALENDAR_JOB_ID="991372" -ARG EMAIL_RECOVERY_JOB_ID="1168177" -ARG EA_JOB_ID="1168157" +ARG EMAIL_RECOVERY_JOB_ID="1210606" +ARG EA_JOB_ID="1203572" ARG LAUNCHER_JOB_ID="1168135" ARG GOOGLE_INTEGRATION_VERSION="3.2.0" -ARG DASHBOARD_JOB_ID="1168115" +ARG DASHBOARD_JOB_ID="1210106" ARG SNAPPY_VERSION="2.37.2" ARG SNAPPY_THEME_VERSION="4.0.1" ARG USER_MIGRATION_JOB_ID="1168093" @@ -212,7 +212,7 @@ RUN sed -i 's|.replace("{linkclose}","")|.replace("{linkclose}","").repl From selfhost as ecloud ARG BASE_DIR="/usr/src/nextcloud" ARG TMP_PATCH_DIR="/tmp/build_patches" -ARG THEME_VERSION="28.0.2" +ARG THEME_VERSION="29.0.16-beta" ARG LDAP_WRITE_SUPPORT_VERSION="1.11.0" ARG IS_SELFHOST=false @@ -232,7 +232,7 @@ RUN cd ${BASE_DIR} && patch -u ${BASE_DIR}/apps/user_ldap/lib/User_LDAP.php -i $ 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}/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 diff --git a/patches/002-login-without-domain.patch b/patches/002-login-without-domain.patch index aa1f15e6448343196a60c1c278071c1f0d25df73..45e02cb9273376eae389d5b87389c8466e35f486 100644 --- a/patches/002-login-without-domain.patch +++ b/patches/002-login-without-domain.patch @@ -9,11 +9,10 @@ only the admin user (also configured in env var) will not have his login appende diff --git ./core/Controller/LoginController.php ./core/Controller/LoginController-new.php --- ./core/Controller/LoginController.php 2024-04-26 15:08:54.979407062 +0530 +++ ./core/Controller/LoginController-new.php 2024-04-26 15:16:48.582366408 +0530 -@@ -315,7 +315,28 @@ - self::LOGIN_MSG_CSRFCHECKFAILED +@@ -340,6 +340,26 @@ + $this->l10n->t('Unsupported email length (>255)') ); } -+ $user = trim($user); + $user = mb_strtolower($user, 'UTF-8'); + $actualUser = $user; + $legacyDomain = $this->config->getSystemValue('legacy_domain', ''); @@ -22,7 +21,7 @@ diff --git ./core/Controller/LoginController.php ./core/Controller/LoginControll + $mainDomainSuffix = !empty($mainDomain) ? '@' . $mainDomain : ''; + $admin_username = $_ENV["NEXTCLOUD_ADMIN_USER"]; + $is_admin = strcmp($user, $admin_username) === 0; - ++ + if (!$is_admin && str_ends_with($user, $legacyDomainSuffix)) { + $user = str_replace($legacyDomainSuffix, '', $user); + } @@ -34,11 +33,10 @@ diff --git ./core/Controller/LoginController.php ./core/Controller/LoginControll + if (!$this->userManager->userExists($user)) { + $user = $user . $legacyDomainSuffix; + } -+ + $data = new LoginData( $this->request, - trim($user), -@@ -328,7 +349,7 @@ +@@ -353,7 +373,7 @@ if (!$result->isSuccess()) { return $this->createLoginFailedResponse( $data->getUsername(), @@ -49,7 +47,7 @@ diff --git ./core/Controller/LoginController.php ./core/Controller/LoginControll ); --- ./core/Controller/WebAuthnController.php 2023-04-21 15:18:58.813220092 +0530 +++ ./core/Controller/WebAuthnController-new.php 2023-04-21 15:24:40.036538414 +0530 -@@ -66,6 +66,27 @@ +@@ -69,6 +69,27 @@ $this->logger->debug('Converting login name to UID'); $uid = $loginName; @@ -80,9 +78,9 @@ diff --git ./core/Controller/LoginController.php ./core/Controller/LoginControll --- ./lib/private/User/Session.php 2023-04-21 15:27:00.417034490 +0530 +++ ./lib/private/User/Session-new.php 2023-04-21 15:28:18.309111435 +0530 -@@ -430,6 +430,10 @@ +@@ -413,6 +413,10 @@ $remoteAddress = $request->getRemoteAddress(); - $currentDelay = $throttler->sleepDelay($remoteAddress, 'login'); + $currentDelay = $throttler->sleepDelayOrThrowOnMax($remoteAddress, 'login'); + $mainDomain = $this->config->getSystemValue('main_domain', ''); + $mainDomainSuffix = !empty($mainDomain) ? '@' . $mainDomain : ''; diff --git a/patches/003-contact-search-removal.patch b/patches/003-contact-search-removal.patch index aef513aa0fa8c8cd328a7b840706b3e13aa700ef..26b84267c06018b5fe248f76eb24b51e049114f0 100644 --- a/patches/003-contact-search-removal.patch +++ b/patches/003-contact-search-removal.patch @@ -7,7 +7,7 @@ This patch removes the top right icon enabling the global user search function a diff --git layout.user.php layout.user.php-new --- ./core/templates/layout.user.php 2023-03-28 14:54:05.873566570 +0530 +++ ./core/templates/layout.user-new.php 2023-03-28 14:54:35.044218831 +0530 -@@ -76,7 +76,6 @@ +@@ -70,7 +70,6 @@
diff --git a/patches/004-contact-search-controller-removal.patch b/patches/004-contact-search-controller-removal.patch index e9b8a360943ecf1a6f997aebb2aaba2af67636dd..996d751e6f53c471b94cfee61a42c0b65e90d4dc 100644 --- a/patches/004-contact-search-controller-removal.patch +++ b/patches/004-contact-search-controller-removal.patch @@ -7,11 +7,12 @@ This patch removes some results from the contact menu controller, not to leak us diff --git ContactsMenuController.php ContactsMenuController-new.php --- ./core/Controller/ContactsMenuController.php 2023-02-01 21:40:07.515628276 +0530 +++ ./core/Controller/ContactsMenuController-new.php 2023-02-01 21:39:07.398140201 +0530 -@@ -49,7 +49,7 @@ - * @throws Exception +@@ -50,7 +50,7 @@ */ + #[FrontpageRoute(verb: 'POST', url: '/contactsmenu/contacts')] public function index(?string $filter = null): array { - return $this->manager->getEntries($this->userSession->getUser(), $filter); + return []; } + /** diff --git a/patches/005-autocomplete-user-leak-core.patch b/patches/005-autocomplete-user-leak-core.patch index bf69e89e0705548aebf3463367f4bcb42982e086..fb1d9fbde3f245f18378d90ee35778de9275501f 100644 --- a/patches/005-autocomplete-user-leak-core.patch +++ b/patches/005-autocomplete-user-leak-core.patch @@ -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'; -@@ -216,27 +219,61 @@ +@@ -221,27 +224,61 @@ if ($exactEmailMatch) { $searchResult->markExactIdMatch($emailType); } diff --git a/patches/006-recovery-email-changes.patch b/patches/006-recovery-email-changes.patch index a424dd06e44ac80480b897266e971b9b3567f60a..bf9301798365b5dbfc863fb2f5aab0fd6a0fabd0 100644 --- a/patches/006-recovery-email-changes.patch +++ b/patches/006-recovery-email-changes.patch @@ -1,6 +1,6 @@ --- ./core/Controller/LostController.php 2023-05-05 18:38:07.080445742 +0530 +++ ./core/Controller/LostController-new.php 2023-05-05 18:48:27.385043088 +0530 -@@ -172,8 +172,23 @@ +@@ -151,8 +151,23 @@ */ protected function checkPasswordResetToken(string $token, string $userId): void { try { @@ -25,7 +25,7 @@ } catch (InvalidTokenException $e) { $error = $e->getCode() === InvalidTokenException::TOKEN_EXPIRED ? $this->l10n->t('Could not reset password because the token is expired') -@@ -273,9 +288,22 @@ +@@ -266,9 +281,22 @@ * @throws \OCP\PreConditionNotMetException */ protected function sendEmail(string $input): void { diff --git a/patches/009-help-links.patch b/patches/009-help-links.patch index ce58874f4607da112b248deadaabc85981e34f2e..2ea989a77bc0860e8f8d0cc28e5bde91832d366e 100644 --- a/patches/009-help-links.patch +++ b/patches/009-help-links.patch @@ -15,7 +15,7 @@ help links are shown 'knowledgebaseEmbedded' => $knowledgebaseEmbedded, 'legalNoticeUrl' => $legalNoticeUrl, 'privacyUrl' => $privacyUrl, -\ No newline at end of file + --- ./apps/settings/templates/help.php 2025-03-13 21:19:20 +++ ./apps/settings/templates/help-new.php 2025-03-26 13:04:36 @@ -5,85 +5,48 @@ diff --git a/patches/010-disable-app-store-upgrade.patch b/patches/010-disable-app-store-upgrade.patch index 569905c90f84a0e8536745c41f2d5f89b94d0fec..59e4f0db537ac4d80588e58324d14bab8d179337 100644 --- a/patches/010-disable-app-store-upgrade.patch +++ b/patches/010-disable-app-store-upgrade.patch @@ -6,7 +6,7 @@ This patch disables checking the app store for app updates during "occ upgrade" --- ./lib/private/Updater.php 2021-11-16 12:12:35.631823438 +0530 +++ ./lib/private/Updater-new.php 2021-11-16 12:14:28.445155684 +0530 -@@ -268,11 +268,11 @@ +@@ -272,11 +272,11 @@ $appManager = \OC::$server->getAppManager(); // upgrade appstore apps diff --git a/patches/011-privacy-settings.patch b/patches/011-privacy-settings.patch index fbf44d2f7b6e335a4c91ae8f8c755bad1a6df81c..3593bc39cae5a29b70e9107569f6894909c9f5e9 100644 --- a/patches/011-privacy-settings.patch +++ b/patches/011-privacy-settings.patch @@ -39,5 +39,4 @@ This patch removes certain unnecessary sections from the "privacy" section in pe return new JSONResponse($uids, Http::STATUS_OK); } } -\ No newline at end of file diff --git a/patches/014-add-mail-usage.patch b/patches/014-add-mail-usage.patch index 2ccfa97cd64e79dfc031374e73132f23f7d02c34..081afa3269f8512c715ded135ae8651b7a361656 100644 --- a/patches/014-add-mail-usage.patch +++ b/patches/014-add-mail-usage.patch @@ -1,24 +1,22 @@ ---- lib/private/legacy/OC_Helper.php 2022-11-23 19:35:50.880495300 +0530 -+++ lib/private/legacy/OC_Helper-new.php 2022-11-23 19:40:09.970495300 +0530 +--- 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 @@ -542,6 +542,12 @@ } 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); ++ $free = max(0, $free - $mailQuotaUsage); + if($path === '/') { + $used = $used + $mailQuotaUsage; -+ } ++ } if (is_bool($free)) { $free = 0.0; } -@@ -571,8 +577,6 @@ - $relative = 0; - } +@@ -577,7 +583,6 @@ + */ + $isRemoteShare = $storage->instanceOfStorage(\OCA\Files_Sharing\External\Storage::class); -- /** @var string $ownerId */ - $ownerId = $storage->getOwner($path); + $hasOwnerId = $ownerId !== false && $ownerId !== null; $ownerDisplayName = ''; - if ($ownerId) { - $ownerDisplayName = \OC::$server->getUserManager()->getDisplayName($ownerId) ?? ''; \ No newline at end of file diff --git a/patches/015-email-mail-template.patch b/patches/015-email-mail-template.patch index 039ee020c004d8de472a6960a660d4c862e16316..d568956f9b6db80c09ae2ba93eddb809215b198a 100644 --- a/patches/015-email-mail-template.patch +++ b/patches/015-email-mail-template.patch @@ -7,7 +7,7 @@ This patch helps in indentifying that For a recurring event, the invitee knows w --- ./apps/dav/lib/CalDAV/Schedule/IMipPlugin.php 2024-03-18 11:18:20 +++ ./apps/dav/lib/CalDAV/Schedule/IMipPlugin-new.php 2024-03-11 11:18:22 -@@ -174,7 +174,29 @@ +@@ -171,7 +171,29 @@ /** @var VEvent $oldVevent */ $oldVevent = !empty($modified['old']) && is_array($modified['old']) ? array_pop($modified['old']) : null; $isModified = isset($oldVevent); @@ -38,7 +38,7 @@ This patch helps in indentifying that For a recurring event, the invitee knows w // No changed events after all - this shouldn't happen if there is significant change yet here we are // The scheduling status is debatable if(empty($vEvent)) { -@@ -242,6 +266,13 @@ +@@ -238,6 +260,13 @@ $data['invitee_name'] = ($senderName ?: $sender); $fromEMail = Util::getDefaultEmailAddress('invitations-noreply'); @@ -52,7 +52,7 @@ This patch helps in indentifying that For a recurring event, the invitee knows w $fromName = $this->imipService->getFrom($senderName, $this->defaults->getName()); $message = $this->mailer->createMessage() -@@ -262,7 +293,22 @@ +@@ -258,7 +287,22 @@ $template = $this->mailer->createEMailTemplate('dav.calendarInvite.' . $method, $data); $template->addHeader(); @@ -76,7 +76,7 @@ This patch helps in indentifying that For a recurring event, the invitee knows w $this->imipService->addBulletList($template, $vEvent, $data); // Only add response buttons to invitation requests: Fix Issue #11230 -@@ -295,7 +341,6 @@ +@@ -291,7 +335,6 @@ || in_array(strtolower($recipientDomain), $invitationLinkRecipients)) { $token = $this->imipService->createInvitationToken($iTipMessage, $vEvent, $lastOccurrence); $this->imipService->addResponseButtons($template, $token); @@ -86,7 +86,7 @@ This patch helps in indentifying that For a recurring event, the invitee knows w --- ./apps/dav/lib/CalDAV/Schedule/IMipService.php 2024-03-18 11:40:39 +++ ./apps/dav/lib/CalDAV/Schedule/IMipService-new.php 2024-03-18 13:47:17 -@@ -169,10 +169,30 @@ +@@ -170,10 +170,30 @@ $oldUrl = self::readPropertyWithDefault($oldVEvent, 'URL', $defaultVal); $data['meeting_url_html'] = !empty($oldUrl) && $oldUrl !== $data['meeting_url'] ? sprintf('%1$s', $oldUrl) : $data['meeting_url']; @@ -119,7 +119,7 @@ This patch helps in indentifying that For a recurring event, the invitee knows w } return $data; } -@@ -444,6 +464,51 @@ +@@ -446,6 +466,51 @@ } /** @@ -171,7 +171,7 @@ This patch helps in indentifying that For a recurring event, the invitee knows w * @param string $path * @return string */ -@@ -537,12 +602,36 @@ +@@ -539,12 +604,36 @@ $data['meeting_title_html'] ?? $data['meeting_title'], $this->l10n->t('Title:'), $this->getAbsoluteImagePath('caldav/title.png'), $data['meeting_title'], '', IMipPlugin::IMIP_INDENT); if ($data['meeting_when'] !== '') { @@ -191,10 +191,10 @@ This patch helps in indentifying that For a recurring event, the invitee knows w + $timeTitle = $this->l10n->t('Repeats yearly:'); + } + $template->addBodyListItem($data['meeting_when_html'] ?? $data['meeting_when'], $timeTitle, - $this->getAbsoluteImagePath('caldav/time.png'), $data['meeting_when'], '', IMipPlugin::IMIP_INDENT); ++ $this->getAbsoluteImagePath('caldav/time.png'), $data['meeting_when'], '', IMipPlugin::IMIP_INDENT); + } else { + $template->addBodyListItem($data['meeting_when_html'] ?? $data['meeting_when'], $this->l10n->t('Time:'), -+ $this->getAbsoluteImagePath('caldav/time.png'), $data['meeting_when'], '', IMipPlugin::IMIP_INDENT); + $this->getAbsoluteImagePath('caldav/time.png'), $data['meeting_when'], '', IMipPlugin::IMIP_INDENT); + } } if ($data['meeting_location'] !== '') { @@ -211,7 +211,7 @@ This patch helps in indentifying that For a recurring event, the invitee knows w } if ($data['meeting_url'] !== '') { $template->addBodyListItem($data['meeting_url_html'] ?? $data['meeting_url'], $this->l10n->t('Link:'), -@@ -637,7 +726,7 @@ +@@ -642,7 +731,7 @@ * @param $token */ public function addResponseButtons(IEMailTemplate $template, $token) { @@ -220,7 +220,7 @@ This patch helps in indentifying that For a recurring event, the invitee knows w $this->l10n->t('Accept'), $this->urlGenerator->linkToRouteAbsolute('dav.invitation_response.accept', [ 'token' => $token, -@@ -645,20 +734,10 @@ +@@ -650,22 +739,12 @@ $this->l10n->t('Decline'), $this->urlGenerator->linkToRouteAbsolute('dav.invitation_response.decline', [ 'token' => $token, @@ -229,8 +229,8 @@ This patch helps in indentifying that For a recurring event, the invitee knows w + $this->l10n->t('MayBe'), + $this->urlGenerator->getAbsoluteUrl('apps/calendar/invitation/tentative/'.$token) ); -- } -- + } + - public function addMoreOptionsButton(IEMailTemplate $template, $token) { - $moreOptionsURL = $this->urlGenerator->linkToRouteAbsolute('dav.invitation_response.options', [ - 'token' => $token, @@ -241,13 +241,14 @@ This patch helps in indentifying that For a recurring event, the invitee knows w - $text = $this->l10n->t('More options at %s', [$moreOptionsURL]); - - $template->addBodyText($html, $text); - } - +- } +- public function getReplyingAttendee(Message $iTipMessage): ?Property { - + /** @var VEvent $vevent */ + $vevent = $iTipMessage->message->VEVENT; --- ./apps/dav/lib/CalDAV/EventComparisonService.php 2024-05-06 12:46:29 +++ ./apps/dav/lib/CalDAV/EventComparisonService-new.php 2024-05-06 12:47:11 -@@ -100,11 +100,10 @@ +@@ -94,11 +94,10 @@ unset($newEventComponents[$k]); } } @@ -261,7 +262,7 @@ This patch helps in indentifying that For a recurring event, the invitee knows w $oldEventComponents = $old->getComponents(); if(is_array($oldEventComponents) && !empty($oldEventComponents)) { foreach ($oldEventComponents as $k => $event) { -@@ -113,11 +112,15 @@ +@@ -107,11 +106,15 @@ continue; } if($this->removeIfUnchanged($event, $newEventComponents)) { @@ -279,4 +280,3 @@ This patch helps in indentifying that For a recurring event, the invitee knows w + return ['old' => array_values($oldEventComponents), 'new' => array_values($newEventComponents), 'sentOld' => $sentOld]; } } -\ No newline at end of file diff --git a/patches/016-login-screen.patch b/patches/016-login-screen.patch index 939529202b36db9198cdda77bfdbbc63758e5cdb..d8a1dacd417988b1c68ed22f16e091bbb2125a90 100644 --- a/patches/016-login-screen.patch +++ b/patches/016-login-screen.patch @@ -1,7 +1,5 @@ --- ./core/templates/layout.guest.php 2024-03-15 19:20:21 +++ ./core/templates/layout.guest-new.php 2024-03-15 19:24:49 ---- layout.guest.php 2024-07-25 19:23:57 -+++ layout.guest-new.php 2024-07-25 19:34:27 @@ -22,6 +22,7 @@ @@ -10,7 +8,7 @@ -@@ -30,12 +31,37 @@ +@@ -32,12 +33,37 @@ $initialState) { ?> @@ -50,7 +48,7 @@
-@@ -44,18 +70,24 @@ +@@ -46,18 +72,24 @@ getName()); ?> @@ -85,5 +83,4 @@ - -\ No newline at end of file diff --git a/patches/018-occ-user-setting.patch b/patches/018-occ-user-setting.patch index 7c15dc1c6d77e9cd4746ad78079e0709f4d2d42a..090e2b76a1242164b71290c66ff58f02261c5083 100644 --- a/patches/018-occ-user-setting.patch +++ b/patches/018-occ-user-setting.patch @@ -14,8 +14,8 @@ This patch triggers a user changed event when quota is updated via the occ comma +use OCP\User\Events\UserChangedEvent; class Setting extends Base { - /** @var IUserManager */ -@@ -201,6 +203,11 @@ + public function __construct( +@@ -192,6 +194,11 @@ } $this->config->setUserValue($uid, $app, $key, $input->getArgument('value')); diff --git a/patches/020-fairuse-notification-fix.patch b/patches/020-fairuse-notification-fix.patch index 47760192ed3f5bbc40ddc104fd9e4b8c0225a233..89dbafebdd8ec1127e7819a3fb8e8565980e854f 100644 --- a/patches/020-fairuse-notification-fix.patch +++ b/patches/020-fairuse-notification-fix.patch @@ -1,6 +1,6 @@ --- lib/private/Notification/Manager.php 2023-03-28 15:06:21.073329171 +0530 +++ lib/private/Notification/Manager-new.php 2023-03-28 15:07:06.854351797 +0530 -@@ -298,18 +298,7 @@ +@@ -285,18 +285,7 @@ * {@inheritDoc} */ public function isFairUseOfFreePushService(): bool { diff --git a/patches/022-significantchange.patch b/patches/022-significantchange.patch index 769174993d999ac331f5e896511cc7065c966e1a..6ba2202629abe64507c1744b7890dfa180723791 100644 --- a/patches/022-significantchange.patch +++ b/patches/022-significantchange.patch @@ -14,5 +14,5 @@ This patch is allowing to to send mail for summary and description change + 'DESCRIPTION', + 'LOCATION', ]; - - /** \ No newline at end of file + + /** diff --git a/patches/023-ldap-check-pwd-optimization.patch b/patches/023-ldap-check-pwd-optimization.patch index 60bbe61d7be728dc5982722335d3abf613d943c8..5349508e6f7bc7f216e9512d0633aa5d05080e72 100644 --- a/patches/023-ldap-check-pwd-optimization.patch +++ b/patches/023-ldap-check-pwd-optimization.patch @@ -4,7 +4,7 @@ Subject: [PATCH] This patch optimize the ldap checkPassword function to reduce n --- ./apps/user_ldap/lib/User_LDAP.php 2023-01-04 16:20:02.747181606 +0530 +++ ./apps/user_ldap/lib/User_LDAP-new.php 2023-01-17 19:22:51.776857415 +0530 -@@ -114,11 +114,12 @@ +@@ -107,11 +107,12 @@ * @return string|false * @throws \Exception */ @@ -19,7 +19,7 @@ Subject: [PATCH] This patch optimize the ldap checkPassword function to reduce n return $username; } -@@ -133,6 +134,9 @@ +@@ -126,6 +127,9 @@ } $username = $user->getUsername(); $this->access->connection->writeToCache($cacheKey, $username); @@ -29,7 +29,7 @@ Subject: [PATCH] This patch optimize the ldap checkPassword function to reduce n return $username; } catch (NotOnLDAP $e) { $this->access->connection->writeToCache($cacheKey, false); -@@ -176,16 +180,11 @@ +@@ -169,16 +173,11 @@ * @return false|string */ public function checkPassword($uid, $password) { @@ -49,7 +49,7 @@ Subject: [PATCH] This patch optimize the ldap checkPassword function to reduce n $user = $this->access->userManager->get($dn); if (!$user instanceof User) { -@@ -203,7 +202,6 @@ +@@ -196,7 +195,6 @@ } $this->access->cacheUserExists($user->getUsername()); diff --git a/patches/025-optimize-get-by-email.patch b/patches/025-optimize-get-by-email.patch index 29b51b66af0869bdf5183d2ba8cb5b1000699af0..6471718521a7e6a93f7d0be926ae3c030da5a02e 100644 --- a/patches/025-optimize-get-by-email.patch +++ b/patches/025-optimize-get-by-email.patch @@ -4,7 +4,7 @@ Subject: [PATCH] To optimize getByEmail as we have boundary conditions that emai --- ./lib/private/User/Manager.php 2023-05-05 18:29:34.818568291 +0530 +++ ./lib/private/User/Manager-new.php 2023-05-05 18:33:49.872682118 +0530 -@@ -693,12 +693,33 @@ +@@ -679,12 +679,33 @@ */ public function getByEmail($email) { // looking for 'email' only (and not primary_mail) is intentional diff --git a/patches/026-primary-color-fix.patch b/patches/026-primary-color-fix.patch index 2e3feea67b02f96db48f9375d040510aa8036ecd..1ec6cdd1b8fb167676323a0cb12ccacf4d1d4e06 100644 --- a/patches/026-primary-color-fix.patch +++ b/patches/026-primary-color-fix.patch @@ -17,7 +17,6 @@ Subject: [PATCH] To fix the primary color in nextcloud 25 onwards --- apps/theming/lib/Util.php 2024-08-02 10:10:38 +++ apps/theming/lib/Util-new.php 2024-08-02 10:11:41 -@@ -57,7 +57,7 @@ * @return bool */ public function invertTextColor(string $color): bool { @@ -25,4 +24,4 @@ Subject: [PATCH] To fix the primary color in nextcloud 25 onwards + return $this->isBrightColor($color); } - /** + /** diff --git a/patches/027-displayname-user-leak-dav.patch b/patches/027-displayname-user-leak-dav.patch index 329de5eadb1445fdb896ef6db10ac9a99207ac77..c0fe891cbb48f3a29be97e9060251ffd769f9f20 100644 --- a/patches/027-displayname-user-leak-dav.patch +++ b/patches/027-displayname-user-leak-dav.patch @@ -7,7 +7,7 @@ of the user and not on the display name property --- ./apps/dav/lib/Connector/Sabre/Principal.php 2023-05-09 15:49:02.397783639 +0530 +++ ./apps/dav/lib/Connector/Sabre/Principal-new.php 2023-05-09 15:49:56.555305986 +0530 -@@ -358,7 +358,7 @@ +@@ -364,7 +364,7 @@ if (!$allowEnumeration) { if ($allowEnumerationFullMatch) { $lowerSearch = strtolower($value); diff --git a/patches/028-default-task-calendar.patch b/patches/028-default-task-calendar.patch index 15832a2c54a53b5eaafbec3a70e48d3a17bd6689..283244d41c8f4483abb68bf320a558a8012e8207 100644 --- a/patches/028-default-task-calendar.patch +++ b/patches/028-default-task-calendar.patch @@ -6,18 +6,19 @@ This patch creates a default task VTODO calender on first login --- apps/dav/lib/HookManager.php 2023-09-27 15:22:49 +++ apps/dav/lib/HookManager-new.php 2023-09-27 15:24:15 -@@ -170,8 +170,13 @@ +@@ -173,9 +173,14 @@ try { $this->calDav->createCalendar($principal, CalDavBackend::PERSONAL_CALENDAR_URI, [ '{DAV:}displayname' => CalDavBackend::PERSONAL_CALENDAR_NAME, - '{http://apple.com/ns/ical/}calendar-color' => $this->themingDefaults->getColorPrimary(), + '{http://apple.com/ns/ical/}calendar-color' => '#007FFF', 'components' => 'VEVENT' -+ ]); + ]); + $this->calDav->createCalendar($principal, 'tasks', [ + '{DAV:}displayname' => 'Tasks', + '{http://apple.com/ns/ical/}calendar-color' => '#007FFF', + 'components' => 'VTODO' - ]); ++ ]); } catch (\Exception $e) { \OC::$server->get(LoggerInterface::class)->error($e->getMessage(), ['exception' => $e]); + } diff --git a/patches/034-oidc-bearer-token-auth.patch b/patches/034-oidc-bearer-token-auth.patch index 51bd0156c7c46494b157bfae30e40d01926d40cf..ab1045e82e8e8ca372d8c94ef3cdcc9ff24c6679 100644 --- a/patches/034-oidc-bearer-token-auth.patch +++ b/patches/034-oidc-bearer-token-auth.patch @@ -1,6 +1,6 @@ --- lib/private/AppFramework/Middleware/Security/CORSMiddleware.php 2024-04-08 08:53:20.410444998 +0530 +++ lib/private/AppFramework/Middleware/Security/CORSMiddleware-new.php 2024-04-09 19:05:21.133629632 +0530 -@@ -97,6 +97,10 @@ +@@ -91,6 +91,10 @@ // Allow to use the current session if a CSRF token is provided if ($this->request->passesCSRFCheck()) { return; diff --git a/patches/036-user-config-change-event.patch b/patches/036-user-config-change-event.patch index 2234e3d6e8d091b1edc8a6f99247de55fef78b6c..a2277972737fd44d3b679f74d652dfd83f53d3fd 100644 --- a/patches/036-user-config-change-event.patch +++ b/patches/036-user-config-change-event.patch @@ -9,7 +9,7 @@ /** * Class to combine all the configuration options ownCloud offers -@@ -278,6 +280,7 @@ +@@ -283,6 +285,7 @@ $qb->executeStatement(); $this->userCache[$userId][$appName][$key] = (string)$value; @@ -17,7 +17,7 @@ return; } } -@@ -304,8 +307,15 @@ +@@ -309,8 +312,15 @@ } $this->userCache[$userId][$appName][$key] = (string)$value; } @@ -34,30 +34,27 @@ * Getting a user defined value * - --- ./lib/composer/composer/autoload_static.php 2024-03-28 01:02:39 +++ ./lib/composer/composer/autoload_static-new.php 2024-04-15 16:34:18 -@@ -710,6 +710,7 @@ +@@ -822,6 +822,7 @@ 'OCP\\User\\Events\\PasswordUpdatedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/PasswordUpdatedEvent.php', 'OCP\\User\\Events\\PostLoginEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/PostLoginEvent.php', 'OCP\\User\\Events\\UserChangedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserChangedEvent.php', + 'OCP\\User\\Events\\UserConfigChangedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserConfigChangedEvent.php', 'OCP\\User\\Events\\UserCreatedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserCreatedEvent.php', 'OCP\\User\\Events\\UserDeletedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserDeletedEvent.php', - 'OCP\\User\\Events\\UserLiveStatusEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserLiveStatusEvent.php', - + 'OCP\\User\\Events\\UserFirstTimeLoggedInEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserFirstTimeLoggedInEvent.php', --- ./lib/composer/composer/autoload_classmap.php 2024-03-28 01:02:39 +++ ./lib/composer/composer/autoload_classmap-new.php 2024-04-15 16:33:19 -@@ -683,6 +683,7 @@ +@@ -796,6 +796,7 @@ 'OCP\\User\\Events\\UserLoggedInEvent' => $baseDir . '/lib/public/User/Events/UserLoggedInEvent.php', 'OCP\\User\\Events\\UserLoggedInWithCookieEvent' => $baseDir . '/lib/public/User/Events/UserLoggedInWithCookieEvent.php', 'OCP\\User\\Events\\UserLoggedOutEvent' => $baseDir . '/lib/public/User/Events/UserLoggedOutEvent.php', + 'OCP\\User\\Events\\UserConfigChangedEvent' => $baseDir . '/lib/public/User/Events/UserConfigChangedEvent.php', 'OCP\\User\\GetQuotaEvent' => $baseDir . '/lib/public/User/GetQuotaEvent.php', - 'OCP\\Util' => $baseDir . '/lib/public/Util.php', - 'OCP\\WorkflowEngine\\EntityContext\\IContextPortation' => $baseDir . '/lib/public/WorkflowEngine/EntityContext/IContextPortation.php', - + 'OCP\\User\\IAvailabilityCoordinator' => $baseDir . '/lib/public/User/IAvailabilityCoordinator.php', + 'OCP\\User\\IOutOfOfficeData' => $baseDir . '/lib/public/User/IOutOfOfficeData.php', --- /dev/null 2024-04-16 13:44:50 +++ ./lib/public/User/Events/UserConfigChangedEvent.php 2024-04-16 13:43:17