diff options
Diffstat (limited to 'apps/dav')
-rw-r--r-- | apps/dav/l10n/et_EE.js | 21 | ||||
-rw-r--r-- | apps/dav/l10n/et_EE.json | 21 | ||||
-rw-r--r-- | apps/dav/lib/Connector/Sabre/PublicAuth.php | 9 | ||||
-rw-r--r-- | apps/dav/lib/Direct/DirectHome.php | 2 | ||||
-rw-r--r-- | apps/dav/lib/Files/BrowserErrorPagePlugin.php | 6 | ||||
-rw-r--r-- | apps/dav/tests/unit/Direct/DirectHomeTest.php | 2 |
6 files changed, 55 insertions, 6 deletions
diff --git a/apps/dav/l10n/et_EE.js b/apps/dav/l10n/et_EE.js index b833dd9539c..cfa243264fa 100644 --- a/apps/dav/l10n/et_EE.js +++ b/apps/dav/l10n/et_EE.js @@ -68,19 +68,27 @@ OC.L10N.register( "Description: %s" : "Kirjeldus: %s", "Where: %s" : "Kus: %s", "%1$s via %2$s" : "%1$s %2$s kaudu", + "Cancelled: %1$s" : "Tühistatud: %1$s", "\"%1$s\" has been canceled" : "„%1$s“ on tühistatud", + "Re: %1$s" : "Re: %1$s", "%1$s has accepted your invitation" : "„%1$s“ on nõustunud sinu kutsega", "%1$s has tentatively accepted your invitation" : "„%1$s“ on esialgselt nõustunud sinu kutsega", "%1$s has declined your invitation" : "„%1$s“ on sinu kutsest keeldunud", "%1$s has responded to your invitation" : "„%1$s“ on vastanud sinu kutsele", "Invitation updated: %1$s" : "Kutse on uuendatud: %1$s", "%1$s updated the event \"%2$s\"" : "„%1$s“ uuendas sündmust „%2$s“", + "Invitation: %1$s" : "Kutse: %1$s", "%1$s would like to invite you to \"%2$s\"" : "„%1$s“ soovib saata sulle „%2$s“ kutset", + "Organizer:" : "Korraldaja:", + "Attendees:" : "Osalejad:", + "Title:" : "Pealkiri:", "When:" : "Millal:", "Location:" : "Asukoht:", "Link:" : "Link:", "Accept" : "Nõustu", "Decline" : "Keeldu", + "More options …" : "Täiendavad valikud…", + "More options at %s" : "Lisavalikud: %s", "Monday" : "Esmaspäev", "Tuesday" : "Teisipäev", "Wednesday" : "Kolmapäev", @@ -107,6 +115,13 @@ OC.L10N.register( "Fifth" : "Viies", "Last" : "Viimane", "Contacts" : "Kontaktid", + "You created address book {addressbook}" : "Sa lõid aadressiraamatu „{addressbook}“", + "{actor} deleted address book {addressbook}" : "„{actor}“ kustutas „{addressbook}“ aadressiraamatu", + "You deleted address book {addressbook}" : "Sa kustutasid aadressiraamatu „{addressbook}“", + "You shared address book {addressbook} with {user}" : "Sa jagasid „{addressbook}“ aadressiraamatut kasutajaga „{user}“", + "You deleted contact {card} from address book {addressbook}" : "Sa kustutasid „{card}“ kontakti „{addressbook}“ aadressiraamatus", + "You updated contact {card} in address book {addressbook}" : "Sa uuendasid „{card}“ kontakti „{addressbook}“ aadressiraamatus", + "A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Kontakti</strong> või <strong>aadressiraamatut</strong> muudeti", "Accounts" : "Kasutajakontod", "System address book which holds all accounts" : "Süsteemne aadressiraamat, kus leiduvad kõik kasutajakontod", "File is not updatable: %1$s" : "Fail pole uuendatav: %1$s", @@ -124,10 +139,13 @@ OC.L10N.register( "Invalid target path" : "Vigane sihtasukoht", "System is in maintenance mode." : "Server on hooldusrežiimis.", "Upgrade needed" : "Uuendus on vajalik", + "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Selleks, et sinu %s toimiks iOS-is/macOS-is CalDAV-i ja CardDAV-iga peab https olema seadistatud.", "Configures a CalDAV account" : "Seadistab CalDAV-i kasutajakonto", "Configures a CardDAV account" : "Seadistab CardDAV-i kasutajakonto", "Events" : "Sündmused", "Untitled task" : "Ilma nimeta pealkiri", + "Completed on %s" : "Lõpetatud %s", + "Due on %s by %s" : "Tähtaeg: %s, täitjaks %s", "Due on %s" : "Tähtaeg: %s", "System Address Book" : "Süsteemne aadressiraamat", "The system address book contains contact information for all users in your instance." : "Süsteemses aadressiraamatus leiduvad kõikde selle serveri kasutajate kontaktteave.", @@ -166,7 +184,10 @@ OC.L10N.register( "Availability" : "Saadavus", "Absence" : "Äraolek", "Configure your next absence period." : "Seadista järgmise äraoleku ajavahemik.", + "Calendar server" : "Kalendriserver", "Send invitations to attendees" : "Saada osalejatele kutsed", + "Automatically generate a birthday calendar" : "Koosta sünnipäevade kalender automaatselt", + "Send notifications for events" : "Saada sündmuste teavitusi", "Enable notifications for events via push" : "Võta kasutusele tõuketeenustepõhised teavitused", "Cancel" : "Tühista", "Import" : "Impordi", diff --git a/apps/dav/l10n/et_EE.json b/apps/dav/l10n/et_EE.json index f8058169cef..51f4d2bc914 100644 --- a/apps/dav/l10n/et_EE.json +++ b/apps/dav/l10n/et_EE.json @@ -66,19 +66,27 @@ "Description: %s" : "Kirjeldus: %s", "Where: %s" : "Kus: %s", "%1$s via %2$s" : "%1$s %2$s kaudu", + "Cancelled: %1$s" : "Tühistatud: %1$s", "\"%1$s\" has been canceled" : "„%1$s“ on tühistatud", + "Re: %1$s" : "Re: %1$s", "%1$s has accepted your invitation" : "„%1$s“ on nõustunud sinu kutsega", "%1$s has tentatively accepted your invitation" : "„%1$s“ on esialgselt nõustunud sinu kutsega", "%1$s has declined your invitation" : "„%1$s“ on sinu kutsest keeldunud", "%1$s has responded to your invitation" : "„%1$s“ on vastanud sinu kutsele", "Invitation updated: %1$s" : "Kutse on uuendatud: %1$s", "%1$s updated the event \"%2$s\"" : "„%1$s“ uuendas sündmust „%2$s“", + "Invitation: %1$s" : "Kutse: %1$s", "%1$s would like to invite you to \"%2$s\"" : "„%1$s“ soovib saata sulle „%2$s“ kutset", + "Organizer:" : "Korraldaja:", + "Attendees:" : "Osalejad:", + "Title:" : "Pealkiri:", "When:" : "Millal:", "Location:" : "Asukoht:", "Link:" : "Link:", "Accept" : "Nõustu", "Decline" : "Keeldu", + "More options …" : "Täiendavad valikud…", + "More options at %s" : "Lisavalikud: %s", "Monday" : "Esmaspäev", "Tuesday" : "Teisipäev", "Wednesday" : "Kolmapäev", @@ -105,6 +113,13 @@ "Fifth" : "Viies", "Last" : "Viimane", "Contacts" : "Kontaktid", + "You created address book {addressbook}" : "Sa lõid aadressiraamatu „{addressbook}“", + "{actor} deleted address book {addressbook}" : "„{actor}“ kustutas „{addressbook}“ aadressiraamatu", + "You deleted address book {addressbook}" : "Sa kustutasid aadressiraamatu „{addressbook}“", + "You shared address book {addressbook} with {user}" : "Sa jagasid „{addressbook}“ aadressiraamatut kasutajaga „{user}“", + "You deleted contact {card} from address book {addressbook}" : "Sa kustutasid „{card}“ kontakti „{addressbook}“ aadressiraamatus", + "You updated contact {card} in address book {addressbook}" : "Sa uuendasid „{card}“ kontakti „{addressbook}“ aadressiraamatus", + "A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Kontakti</strong> või <strong>aadressiraamatut</strong> muudeti", "Accounts" : "Kasutajakontod", "System address book which holds all accounts" : "Süsteemne aadressiraamat, kus leiduvad kõik kasutajakontod", "File is not updatable: %1$s" : "Fail pole uuendatav: %1$s", @@ -122,10 +137,13 @@ "Invalid target path" : "Vigane sihtasukoht", "System is in maintenance mode." : "Server on hooldusrežiimis.", "Upgrade needed" : "Uuendus on vajalik", + "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Selleks, et sinu %s toimiks iOS-is/macOS-is CalDAV-i ja CardDAV-iga peab https olema seadistatud.", "Configures a CalDAV account" : "Seadistab CalDAV-i kasutajakonto", "Configures a CardDAV account" : "Seadistab CardDAV-i kasutajakonto", "Events" : "Sündmused", "Untitled task" : "Ilma nimeta pealkiri", + "Completed on %s" : "Lõpetatud %s", + "Due on %s by %s" : "Tähtaeg: %s, täitjaks %s", "Due on %s" : "Tähtaeg: %s", "System Address Book" : "Süsteemne aadressiraamat", "The system address book contains contact information for all users in your instance." : "Süsteemses aadressiraamatus leiduvad kõikde selle serveri kasutajate kontaktteave.", @@ -164,7 +182,10 @@ "Availability" : "Saadavus", "Absence" : "Äraolek", "Configure your next absence period." : "Seadista järgmise äraoleku ajavahemik.", + "Calendar server" : "Kalendriserver", "Send invitations to attendees" : "Saada osalejatele kutsed", + "Automatically generate a birthday calendar" : "Koosta sünnipäevade kalender automaatselt", + "Send notifications for events" : "Saada sündmuste teavitusi", "Enable notifications for events via push" : "Võta kasutusele tõuketeenustepõhised teavitused", "Cancel" : "Tühista", "Import" : "Impordi", diff --git a/apps/dav/lib/Connector/Sabre/PublicAuth.php b/apps/dav/lib/Connector/Sabre/PublicAuth.php index ea59d9efc8f..b5d9ce3db72 100644 --- a/apps/dav/lib/Connector/Sabre/PublicAuth.php +++ b/apps/dav/lib/Connector/Sabre/PublicAuth.php @@ -15,6 +15,7 @@ use OCP\Defaults; use OCP\IRequest; use OCP\ISession; use OCP\Security\Bruteforce\IThrottler; +use OCP\Security\Bruteforce\MaxDelayReached; use OCP\Share\Exceptions\ShareNotFound; use OCP\Share\IManager; use OCP\Share\IShare; @@ -56,6 +57,7 @@ class PublicAuth extends AbstractBasic { * * @return array * @throws NotAuthenticated + * @throws MaxDelayReached * @throws ServiceUnavailable */ public function check(RequestInterface $request, ResponseInterface $response): array { @@ -75,7 +77,8 @@ class PublicAuth extends AbstractBasic { } return $this->checkToken(); - } catch (NotAuthenticated $e) { + } catch (NotAuthenticated|MaxDelayReached $e) { + $this->throttler->registerAttempt(self::BRUTEFORCE_ACTION, $this->request->getRemoteAddress()); throw $e; } catch (\Exception $e) { $class = get_class($e); @@ -94,7 +97,7 @@ class PublicAuth extends AbstractBasic { $path = $this->request->getPathInfo() ?: ''; // ['', 'dav', 'files', 'token'] $splittedPath = explode('/', $path); - + if (count($splittedPath) < 4 || $splittedPath[3] === '') { throw new NotFound(); } @@ -176,7 +179,7 @@ class PublicAuth extends AbstractBasic { } return true; } - + if ($this->session->exists(PublicAuth::DAV_AUTHENTICATED) && $this->session->get(PublicAuth::DAV_AUTHENTICATED) === $share->getId()) { return true; diff --git a/apps/dav/lib/Direct/DirectHome.php b/apps/dav/lib/Direct/DirectHome.php index 10e1017f5a4..ac411c9b52f 100644 --- a/apps/dav/lib/Direct/DirectHome.php +++ b/apps/dav/lib/Direct/DirectHome.php @@ -53,7 +53,7 @@ class DirectHome implements ICollection { } catch (DoesNotExistException $e) { // Since the token space is so huge only throttle on non-existing token $this->throttler->registerAttempt('directlink', $this->request->getRemoteAddress()); - $this->throttler->sleepDelay($this->request->getRemoteAddress(), 'directlink'); + $this->throttler->sleepDelayOrThrowOnMax($this->request->getRemoteAddress(), 'directlink'); throw new NotFound(); } diff --git a/apps/dav/lib/Files/BrowserErrorPagePlugin.php b/apps/dav/lib/Files/BrowserErrorPagePlugin.php index de86c4995e2..85ed975a409 100644 --- a/apps/dav/lib/Files/BrowserErrorPagePlugin.php +++ b/apps/dav/lib/Files/BrowserErrorPagePlugin.php @@ -11,6 +11,7 @@ use OC\AppFramework\Http\Request; use OCP\AppFramework\Http\ContentSecurityPolicy; use OCP\AppFramework\Http\TemplateResponse; use OCP\IRequest; +use OCP\Security\Bruteforce\MaxDelayReached; use OCP\Template\ITemplateManager; use Sabre\DAV\Exception; use Sabre\DAV\Server; @@ -60,6 +61,9 @@ class BrowserErrorPagePlugin extends ServerPlugin { if ($ex instanceof Exception) { $httpCode = $ex->getHTTPCode(); $headers = $ex->getHTTPHeaders($this->server); + } elseif ($ex instanceof MaxDelayReached) { + $httpCode = 429; + $headers = []; } else { $httpCode = 500; $headers = []; @@ -81,7 +85,7 @@ class BrowserErrorPagePlugin extends ServerPlugin { $request = \OCP\Server::get(IRequest::class); $templateName = 'exception'; - if ($httpCode === 403 || $httpCode === 404) { + if ($httpCode === 403 || $httpCode === 404 || $httpCode === 429) { $templateName = (string)$httpCode; } diff --git a/apps/dav/tests/unit/Direct/DirectHomeTest.php b/apps/dav/tests/unit/Direct/DirectHomeTest.php index 1134f0cd3af..06fb48a64d8 100644 --- a/apps/dav/tests/unit/Direct/DirectHomeTest.php +++ b/apps/dav/tests/unit/Direct/DirectHomeTest.php @@ -160,7 +160,7 @@ class DirectHomeTest extends TestCase { '1.2.3.4' ); $this->throttler->expects($this->once()) - ->method('sleepDelay') + ->method('sleepDelayOrThrowOnMax') ->with( '1.2.3.4', 'directlink' |