diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/l10n/be.js | 4 | ||||
-rw-r--r-- | lib/l10n/be.json | 4 | ||||
-rw-r--r-- | lib/l10n/ga.js | 18 | ||||
-rw-r--r-- | lib/l10n/ga.json | 18 | ||||
-rw-r--r-- | lib/private/AppConfig.php | 29 | ||||
-rw-r--r-- | lib/private/Security/Ip/BruteforceAllowList.php | 5 | ||||
-rw-r--r-- | lib/private/Updater.php | 7 | ||||
-rw-r--r-- | lib/public/IAppConfig.php | 16 |
8 files changed, 95 insertions, 6 deletions
diff --git a/lib/l10n/be.js b/lib/l10n/be.js index 4e912495dae..2f708b7e024 100644 --- a/lib/l10n/be.js +++ b/lib/l10n/be.js @@ -2,7 +2,10 @@ OC.L10N.register( "lib", { "Files" : "Файлы", + "seconds ago" : "с таму", + "Templates" : "Шаблоны", "__language_name__" : "Беларуская", + "Apps" : "Праграмы", "Settings" : "Налады", "Accounts" : "Уліковыя запісы", "Email" : "Электронная пошта", @@ -32,6 +35,7 @@ OC.L10N.register( "October" : "Кастрычнік", "November" : "Лістапад", "December" : "Снежань", + "Text" : "Тэкст", "Translate" : "Перакласці" }, "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/lib/l10n/be.json b/lib/l10n/be.json index d45139618d2..9b5b6f1be14 100644 --- a/lib/l10n/be.json +++ b/lib/l10n/be.json @@ -1,6 +1,9 @@ { "translations": { "Files" : "Файлы", + "seconds ago" : "с таму", + "Templates" : "Шаблоны", "__language_name__" : "Беларуская", + "Apps" : "Праграмы", "Settings" : "Налады", "Accounts" : "Уліковыя запісы", "Email" : "Электронная пошта", @@ -30,6 +33,7 @@ "October" : "Кастрычнік", "November" : "Лістапад", "December" : "Снежань", + "Text" : "Тэкст", "Translate" : "Перакласці" },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" }
\ No newline at end of file diff --git a/lib/l10n/ga.js b/lib/l10n/ga.js index 7093ce8a110..2de5f97ab4c 100644 --- a/lib/l10n/ga.js +++ b/lib/l10n/ga.js @@ -324,18 +324,36 @@ OC.L10N.register( "Storage is temporarily not available" : "Níl stóráil ar fáil go sealadach", "Storage connection timeout. %s" : "Teorainn ama ceangail stórála. %s", "To allow this check to run you have to make sure that your Web server can connect to itself. Therefore it must be able to resolve and connect to at least one of its `trusted_domains` or the `overwrite.cli.url`. This failure may be the result of a server-side DNS mismatch or outbound firewall rule." : "Le gur féidir an tseiceáil seo a rith caithfidh tú a chinntiú gur féidir le do fhreastalaí Gréasáin nascadh leis féin. Mar sin caithfidh sé a bheith in ann réiteach agus ceangal a dhéanamh le ceann amháin ar a laghad dá chuid `fearainn_iontaofa` nó an `overwrite.cli.url`. D'fhéadfadh an teip seo a bheith mar thoradh ar mhímheaitseáil DNS ar thaobh an fhreastalaí nó riail balla dóiteáin amach.", + "Analyze images" : "Anailísigh íomhánna", + "Ask a question about the given images." : "Cuir ceist faoi na híomhánna a thugtar.", "Images" : "Íomhánna", + "Images to ask a question about" : "Íomhánna le ceist a chur fúthu", "Question" : "Ceist", + "What to ask about the images." : "Cad atá le fiafraí faoi na híomhánna.", "Generated response" : "Freagra ginte", + "The answer to the question" : "An freagra ar an gceist", + "Audio chat" : "Comhrá fuaime", + "Voice chat with the assistant" : "Comhrá gutha leis an gcúntóir", "System prompt" : "Leid córais", "Define rules and assumptions that the assistant should follow during the conversation." : "Sainmhínigh na rialacha agus na toimhdí ba chóir don chúntóir a leanúint le linn an chomhrá.", + "Chat voice message" : "Teachtaireacht gutha comhrá", + "Describe a task that you want the assistant to do or ask a question." : "Déan cur síos ar thasc ar mhaith leat go ndéanfadh an cúntóir é nó ar cheist a chur.", "Chat history" : "Stair comhrá", + "The history of chat messages before the current message, starting with a message by the user." : "Stair na dteachtaireachtaí comhrá roimh an teachtaireacht reatha, ag tosú le teachtaireacht ón úsáideoir.", + "Input transcript" : "Tras-scríbhinn ionchuir", + "Transcription of the audio input" : "Tras-scríobh an ionchuir fuaime", + "Response voice message" : "Teachtaireacht gutha freagartha", + "The generated voice response as part of the conversation" : "An freagra gutha a ghintear mar chuid den chomhrá", + "Output transcript" : "Tras-scríbhinn aschuir", + "Transcription of the audio output" : "Tras-scríobh an aschuir fuaime", "Transcribe audio" : "Trascríobh fuaime", "Transcribe the things said in an audio" : "Tras-scríobh na rudaí a dúradh i bhfuaim", "Audio input" : "Ionchur fuaime", "The audio to transcribe" : "Fuaime le tras-scríobh", "Transcription" : "Trascríobh", "The transcribed text" : "An téacs tras-scríofa", + "Chat by voice with an agent" : "Comhrá gutha le gníomhaire", + "Describe a task that you want the agent to do or ask a question." : "Déan cur síos ar thasc ar mhaith leat go ndéanfadh an gníomhaire é nó ar cheist a chur.", "Confirmation" : "Daingniú", "Whether to confirm previously requested actions: 0 for denial and 1 for confirmation." : "Cibé ar cheart gníomhartha a iarradh roimhe seo a dhearbhú: 0 le séanadh agus 1 le deimhniú.", "Conversation token" : "Comhartha comhartha", diff --git a/lib/l10n/ga.json b/lib/l10n/ga.json index a8fe7126c59..a81cebc37e0 100644 --- a/lib/l10n/ga.json +++ b/lib/l10n/ga.json @@ -322,18 +322,36 @@ "Storage is temporarily not available" : "Níl stóráil ar fáil go sealadach", "Storage connection timeout. %s" : "Teorainn ama ceangail stórála. %s", "To allow this check to run you have to make sure that your Web server can connect to itself. Therefore it must be able to resolve and connect to at least one of its `trusted_domains` or the `overwrite.cli.url`. This failure may be the result of a server-side DNS mismatch or outbound firewall rule." : "Le gur féidir an tseiceáil seo a rith caithfidh tú a chinntiú gur féidir le do fhreastalaí Gréasáin nascadh leis féin. Mar sin caithfidh sé a bheith in ann réiteach agus ceangal a dhéanamh le ceann amháin ar a laghad dá chuid `fearainn_iontaofa` nó an `overwrite.cli.url`. D'fhéadfadh an teip seo a bheith mar thoradh ar mhímheaitseáil DNS ar thaobh an fhreastalaí nó riail balla dóiteáin amach.", + "Analyze images" : "Anailísigh íomhánna", + "Ask a question about the given images." : "Cuir ceist faoi na híomhánna a thugtar.", "Images" : "Íomhánna", + "Images to ask a question about" : "Íomhánna le ceist a chur fúthu", "Question" : "Ceist", + "What to ask about the images." : "Cad atá le fiafraí faoi na híomhánna.", "Generated response" : "Freagra ginte", + "The answer to the question" : "An freagra ar an gceist", + "Audio chat" : "Comhrá fuaime", + "Voice chat with the assistant" : "Comhrá gutha leis an gcúntóir", "System prompt" : "Leid córais", "Define rules and assumptions that the assistant should follow during the conversation." : "Sainmhínigh na rialacha agus na toimhdí ba chóir don chúntóir a leanúint le linn an chomhrá.", + "Chat voice message" : "Teachtaireacht gutha comhrá", + "Describe a task that you want the assistant to do or ask a question." : "Déan cur síos ar thasc ar mhaith leat go ndéanfadh an cúntóir é nó ar cheist a chur.", "Chat history" : "Stair comhrá", + "The history of chat messages before the current message, starting with a message by the user." : "Stair na dteachtaireachtaí comhrá roimh an teachtaireacht reatha, ag tosú le teachtaireacht ón úsáideoir.", + "Input transcript" : "Tras-scríbhinn ionchuir", + "Transcription of the audio input" : "Tras-scríobh an ionchuir fuaime", + "Response voice message" : "Teachtaireacht gutha freagartha", + "The generated voice response as part of the conversation" : "An freagra gutha a ghintear mar chuid den chomhrá", + "Output transcript" : "Tras-scríbhinn aschuir", + "Transcription of the audio output" : "Tras-scríobh an aschuir fuaime", "Transcribe audio" : "Trascríobh fuaime", "Transcribe the things said in an audio" : "Tras-scríobh na rudaí a dúradh i bhfuaim", "Audio input" : "Ionchur fuaime", "The audio to transcribe" : "Fuaime le tras-scríobh", "Transcription" : "Trascríobh", "The transcribed text" : "An téacs tras-scríofa", + "Chat by voice with an agent" : "Comhrá gutha le gníomhaire", + "Describe a task that you want the agent to do or ask a question." : "Déan cur síos ar thasc ar mhaith leat go ndéanfadh an gníomhaire é nó ar cheist a chur.", "Confirmation" : "Daingniú", "Whether to confirm previously requested actions: 0 for denial and 1 for confirmation." : "Cibé ar cheart gníomhartha a iarradh roimhe seo a dhearbhú: 0 le séanadh agus 1 le deimhniú.", "Conversation token" : "Comhartha comhartha", diff --git a/lib/private/AppConfig.php b/lib/private/AppConfig.php index 0eb91fb1be4..f050deba1ca 100644 --- a/lib/private/AppConfig.php +++ b/lib/private/AppConfig.php @@ -95,8 +95,9 @@ class AppConfig implements IAppConfig { * @inheritDoc * * @param string $app id of the app - * * @return list<string> list of stored config keys + * @see searchKeys to not load lazy config keys + * * @since 29.0.0 */ public function getKeys(string $app): array { @@ -112,6 +113,32 @@ class AppConfig implements IAppConfig { * @inheritDoc * * @param string $app id of the app + * @param string $prefix returns only keys starting with this value + * @param bool $lazy TRUE to search in lazy config keys + * @return list<string> list of stored config keys + * @since 32.0.0 + */ + public function searchKeys(string $app, string $prefix = '', bool $lazy = false): array { + $this->assertParams($app); + $this->loadConfig($app, $lazy); + if ($lazy) { + $keys = array_keys($this->lazyCache[$app] ?? []); + } else { + $keys = array_keys($this->fastCache[$app] ?? []); + } + + if ($prefix !== '') { + $keys = array_filter($keys, static fn (string $key): bool => str_starts_with($key, $prefix)); + } + + sort($keys); + return array_values(array_unique($keys)); + } + + /** + * @inheritDoc + * + * @param string $app id of the app * @param string $key config key * @param bool|null $lazy TRUE to search within lazy loaded config, NULL to search within all config * diff --git a/lib/private/Security/Ip/BruteforceAllowList.php b/lib/private/Security/Ip/BruteforceAllowList.php index cc4f0ceebe5..fb837690a7b 100644 --- a/lib/private/Security/Ip/BruteforceAllowList.php +++ b/lib/private/Security/Ip/BruteforceAllowList.php @@ -36,10 +36,7 @@ class BruteforceAllowList { return false; } - $keys = $this->appConfig->getKeys('bruteForce'); - $keys = array_filter($keys, static fn ($key): bool => str_starts_with($key, 'whitelist_')); - - foreach ($keys as $key) { + foreach ($this->appConfig->searchKeys('bruteForce', 'whitelist_') as $key) { $rangeString = $this->appConfig->getValueString('bruteForce', $key); try { $range = $this->factory->rangeFromString($rangeString); diff --git a/lib/private/Updater.php b/lib/private/Updater.php index 6495bad2da2..9cd33863612 100644 --- a/lib/private/Updater.php +++ b/lib/private/Updater.php @@ -385,6 +385,13 @@ class Updater extends BasicEmitter { if ($this->installer->isUpdateAvailable($app)) { $this->emit('\OC\Updater', 'upgradeAppStoreApp', [$app]); $this->installer->updateAppstoreApp($app); + } elseif (!empty($previousEnableStates)) { + /** + * When updating a local app we still need to run updateApp + * so that repair steps and migrations are correctly executed + * Ref: https://github.com/nextcloud/server/issues/53985 + */ + \OC_App::updateApp($app); } $this->emit('\OC\Updater', 'checkAppStoreApp', [$app]); diff --git a/lib/public/IAppConfig.php b/lib/public/IAppConfig.php index fcc528fe11f..68d4332146e 100644 --- a/lib/public/IAppConfig.php +++ b/lib/public/IAppConfig.php @@ -65,13 +65,27 @@ interface IAppConfig { * **WARNING:** ignore lazy filtering, all config values are loaded from database * * @param string $app id of the app - * * @return list<string> list of stored config keys + * @see searchKeys to avoid loading lazy config keys + * * @since 29.0.0 */ public function getKeys(string $app): array; /** + * Returns list of keys stored in database, related to an app. + * Please note that the values are not returned. + * + * @param string $app id of the app + * @param string $prefix returns only keys starting with this value + * @param bool $lazy TRUE to search in lazy config keys + * + * @return list<string> list of stored config keys + * @since 32.0.0 + */ + public function searchKeys(string $app, string $prefix = '', bool $lazy = false): array; + + /** * Check if a key exists in the list of stored config values. * * @param string $app id of the app |