aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_external
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_external')
-rw-r--r--apps/files_external/appinfo/info.xml1
-rw-r--r--apps/files_external/composer/composer/autoload_classmap.php1
-rw-r--r--apps/files_external/composer/composer/autoload_static.php1
-rw-r--r--apps/files_external/l10n/de.js8
-rw-r--r--apps/files_external/l10n/de.json8
-rw-r--r--apps/files_external/l10n/de_DE.js8
-rw-r--r--apps/files_external/l10n/de_DE.json8
-rw-r--r--apps/files_external/l10n/et_EE.js41
-rw-r--r--apps/files_external/l10n/et_EE.json41
-rw-r--r--apps/files_external/lib/Command/Dependencies.php56
-rw-r--r--apps/files_external/lib/Lib/Backend/SMB.php23
-rw-r--r--apps/files_external/lib/Lib/MissingDependency.php13
-rw-r--r--apps/files_external/lib/Lib/Storage/Swift.php26
-rw-r--r--apps/files_external/lib/Service/BackendService.php4
14 files changed, 198 insertions, 41 deletions
diff --git a/apps/files_external/appinfo/info.xml b/apps/files_external/appinfo/info.xml
index eda96446ac0..e746f052619 100644
--- a/apps/files_external/appinfo/info.xml
+++ b/apps/files_external/appinfo/info.xml
@@ -53,6 +53,7 @@ External storage can be configured using the GUI or at the command line. This se
<command>OCA\Files_External\Command\Verify</command>
<command>OCA\Files_External\Command\Notify</command>
<command>OCA\Files_External\Command\Scan</command>
+ <command>OCA\Files_External\Command\Dependencies</command>
</commands>
<settings>
diff --git a/apps/files_external/composer/composer/autoload_classmap.php b/apps/files_external/composer/composer/autoload_classmap.php
index 3e246225484..90f41f0e920 100644
--- a/apps/files_external/composer/composer/autoload_classmap.php
+++ b/apps/files_external/composer/composer/autoload_classmap.php
@@ -14,6 +14,7 @@ return array(
'OCA\\Files_External\\Command\\Config' => $baseDir . '/../lib/Command/Config.php',
'OCA\\Files_External\\Command\\Create' => $baseDir . '/../lib/Command/Create.php',
'OCA\\Files_External\\Command\\Delete' => $baseDir . '/../lib/Command/Delete.php',
+ 'OCA\\Files_External\\Command\\Dependencies' => $baseDir . '/../lib/Command/Dependencies.php',
'OCA\\Files_External\\Command\\Export' => $baseDir . '/../lib/Command/Export.php',
'OCA\\Files_External\\Command\\Import' => $baseDir . '/../lib/Command/Import.php',
'OCA\\Files_External\\Command\\ListCommand' => $baseDir . '/../lib/Command/ListCommand.php',
diff --git a/apps/files_external/composer/composer/autoload_static.php b/apps/files_external/composer/composer/autoload_static.php
index 86ad9eb3f78..7b5eb5feabe 100644
--- a/apps/files_external/composer/composer/autoload_static.php
+++ b/apps/files_external/composer/composer/autoload_static.php
@@ -29,6 +29,7 @@ class ComposerStaticInitFiles_External
'OCA\\Files_External\\Command\\Config' => __DIR__ . '/..' . '/../lib/Command/Config.php',
'OCA\\Files_External\\Command\\Create' => __DIR__ . '/..' . '/../lib/Command/Create.php',
'OCA\\Files_External\\Command\\Delete' => __DIR__ . '/..' . '/../lib/Command/Delete.php',
+ 'OCA\\Files_External\\Command\\Dependencies' => __DIR__ . '/..' . '/../lib/Command/Dependencies.php',
'OCA\\Files_External\\Command\\Export' => __DIR__ . '/..' . '/../lib/Command/Export.php',
'OCA\\Files_External\\Command\\Import' => __DIR__ . '/..' . '/../lib/Command/Import.php',
'OCA\\Files_External\\Command\\ListCommand' => __DIR__ . '/..' . '/../lib/Command/ListCommand.php',
diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js
index 719065c6e6a..1ae634dfb0e 100644
--- a/apps/files_external/l10n/de.js
+++ b/apps/files_external/l10n/de.js
@@ -33,7 +33,7 @@ OC.L10N.register(
"Client ID" : "Client-ID",
"Client secret" : "Geheime Zeichenkette des Clients",
"OpenStack v2" : "OpenStack v2",
- "Login" : "Anmelden",
+ "Login" : "Anmeldename",
"Password" : "Passwort",
"Tenant name" : "Name des Mieters",
"Identity endpoint URL" : "Identität Endpunkt-URL",
@@ -117,7 +117,7 @@ OC.L10N.register(
"External mount error" : "Fehler beim Einbinden des externen Speichers",
"List of external storage." : "Liste der externen Speicher.",
"There is no external storage configured. You can configure them in your Personal settings." : "Es ist kein externer Speicher eingerichtet. Du kannst diese in deinen persönlichen Einstellungen konfigurieren.",
- "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet und du hast nicht die Berechtigung, einen solchen einzurichten.",
+ "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet oder du hast keine Berechtigung, einen solchen einzurichten.",
"No external storage" : "Kein externer Speicher",
"Storage type" : "Speichertyp",
"Unknown" : "Unbekannt",
@@ -146,7 +146,7 @@ OC.L10N.register(
"Save" : "Speichern",
"Failed to save global credentials" : "Globale Anmeldeinformationen konnten nicht gespeichert werden",
"Failed to save global credentials: {message}" : "Globale Anmeldeinformationen konnten nicht gespeichert werden: {message}",
- "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder du hast keine Berechtigung dies zu tun.",
+ "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder du hast keine Berechtigung, diesen einzurichten.",
"Open documentation" : "Dokumentation öffnen",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Personen erlaubt werden eigene externe Speicherdienste einzubinden.",
"Folder name" : "Ordnername",
@@ -157,6 +157,6 @@ OC.L10N.register(
"All people" : "Alle Personen",
"Advanced settings" : "Erweiterte Einstellungen",
"Allow people to mount external storage" : "Personen erlauben, externen Speicher einzubinden",
- "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Anmeldung bei mehreren externen Speichern mit denselben Anmeldeinformationen verwendet werden."
+ "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Authentifizierung bei mehreren externen Speichern verwendet werden, die dieselben Anmeldeinformationen haben."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json
index d6448798ae4..86d08fb5c73 100644
--- a/apps/files_external/l10n/de.json
+++ b/apps/files_external/l10n/de.json
@@ -31,7 +31,7 @@
"Client ID" : "Client-ID",
"Client secret" : "Geheime Zeichenkette des Clients",
"OpenStack v2" : "OpenStack v2",
- "Login" : "Anmelden",
+ "Login" : "Anmeldename",
"Password" : "Passwort",
"Tenant name" : "Name des Mieters",
"Identity endpoint URL" : "Identität Endpunkt-URL",
@@ -115,7 +115,7 @@
"External mount error" : "Fehler beim Einbinden des externen Speichers",
"List of external storage." : "Liste der externen Speicher.",
"There is no external storage configured. You can configure them in your Personal settings." : "Es ist kein externer Speicher eingerichtet. Du kannst diese in deinen persönlichen Einstellungen konfigurieren.",
- "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet und du hast nicht die Berechtigung, einen solchen einzurichten.",
+ "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet oder du hast keine Berechtigung, einen solchen einzurichten.",
"No external storage" : "Kein externer Speicher",
"Storage type" : "Speichertyp",
"Unknown" : "Unbekannt",
@@ -144,7 +144,7 @@
"Save" : "Speichern",
"Failed to save global credentials" : "Globale Anmeldeinformationen konnten nicht gespeichert werden",
"Failed to save global credentials: {message}" : "Globale Anmeldeinformationen konnten nicht gespeichert werden: {message}",
- "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder du hast keine Berechtigung dies zu tun.",
+ "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder du hast keine Berechtigung, diesen einzurichten.",
"Open documentation" : "Dokumentation öffnen",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Personen erlaubt werden eigene externe Speicherdienste einzubinden.",
"Folder name" : "Ordnername",
@@ -155,6 +155,6 @@
"All people" : "Alle Personen",
"Advanced settings" : "Erweiterte Einstellungen",
"Allow people to mount external storage" : "Personen erlauben, externen Speicher einzubinden",
- "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Anmeldung bei mehreren externen Speichern mit denselben Anmeldeinformationen verwendet werden."
+ "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Authentifizierung bei mehreren externen Speichern verwendet werden, die dieselben Anmeldeinformationen haben."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/de_DE.js b/apps/files_external/l10n/de_DE.js
index d0541618efe..dfe6f0bc387 100644
--- a/apps/files_external/l10n/de_DE.js
+++ b/apps/files_external/l10n/de_DE.js
@@ -33,7 +33,7 @@ OC.L10N.register(
"Client ID" : "Client-ID",
"Client secret" : "Geheime Zeichenkette des Clients",
"OpenStack v2" : "OpenStack v2",
- "Login" : "Anmelden",
+ "Login" : "Anmeldename",
"Password" : "Passwort",
"Tenant name" : "Name des Mieters",
"Identity endpoint URL" : "Identität Endpunkt-URL",
@@ -117,7 +117,7 @@ OC.L10N.register(
"External mount error" : "Fehler beim Einbinden des externen Speichers",
"List of external storage." : "Liste der externen Speicher.",
"There is no external storage configured. You can configure them in your Personal settings." : "Es ist kein externer Speicher eingerichtet. Sie können diese in Ihren persönlichen Einstellungen konfigurieren.",
- "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet und Sie haben nicht die Berechtigung, einen solchen einzurichten.",
+ "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet und Sie haben keine Berechtigung, einen solchen einzurichten.",
"No external storage" : "Kein externer Speicher",
"Storage type" : "Speichertyp",
"Unknown" : "Unbekannt",
@@ -146,7 +146,7 @@ OC.L10N.register(
"Save" : "Speichern",
"Failed to save global credentials" : "Globale Anmeldeinformationen konnten nicht gespeichert werden",
"Failed to save global credentials: {message}" : "Globale Anmeldeinformationen konnten nicht gespeichert werden: {message}",
- "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder Sie haben keine Berechtigung diesen einzurichten",
+ "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder Sie haben keine Berechtigung, diesen einzurichten.",
"Open documentation" : "Dokumentation öffnen",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Personen erlaubt werden eigene externe Speicherdienste einzubinden.",
"Folder name" : "Ordnername",
@@ -157,6 +157,6 @@ OC.L10N.register(
"All people" : "Alle Personen",
"Advanced settings" : "Erweiterte Einstellungen",
"Allow people to mount external storage" : "Personen erlauben, externen Speicher einzubinden",
- "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Zugangsdaten können für die Authentifizierung für mehrere externe Speicher verwendet werden, solange sie identische Zugangsdaten benötigen."
+ "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Authentifizierung bei mehreren externen Speichern verwendet werden, die dieselben Anmeldeinformationen haben."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/de_DE.json b/apps/files_external/l10n/de_DE.json
index e5fc8adb012..e51c610c829 100644
--- a/apps/files_external/l10n/de_DE.json
+++ b/apps/files_external/l10n/de_DE.json
@@ -31,7 +31,7 @@
"Client ID" : "Client-ID",
"Client secret" : "Geheime Zeichenkette des Clients",
"OpenStack v2" : "OpenStack v2",
- "Login" : "Anmelden",
+ "Login" : "Anmeldename",
"Password" : "Passwort",
"Tenant name" : "Name des Mieters",
"Identity endpoint URL" : "Identität Endpunkt-URL",
@@ -115,7 +115,7 @@
"External mount error" : "Fehler beim Einbinden des externen Speichers",
"List of external storage." : "Liste der externen Speicher.",
"There is no external storage configured. You can configure them in your Personal settings." : "Es ist kein externer Speicher eingerichtet. Sie können diese in Ihren persönlichen Einstellungen konfigurieren.",
- "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet und Sie haben nicht die Berechtigung, einen solchen einzurichten.",
+ "There is no external storage configured and you don't have the permission to configure them." : "Es ist kein externer Speicher eingerichtet und Sie haben keine Berechtigung, einen solchen einzurichten.",
"No external storage" : "Kein externer Speicher",
"Storage type" : "Speichertyp",
"Unknown" : "Unbekannt",
@@ -144,7 +144,7 @@
"Save" : "Speichern",
"Failed to save global credentials" : "Globale Anmeldeinformationen konnten nicht gespeichert werden",
"Failed to save global credentials: {message}" : "Globale Anmeldeinformationen konnten nicht gespeichert werden: {message}",
- "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder Sie haben keine Berechtigung diesen einzurichten",
+ "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder Sie haben keine Berechtigung, diesen einzurichten.",
"Open documentation" : "Dokumentation öffnen",
"External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Personen erlaubt werden eigene externe Speicherdienste einzubinden.",
"Folder name" : "Ordnername",
@@ -155,6 +155,6 @@
"All people" : "Alle Personen",
"Advanced settings" : "Erweiterte Einstellungen",
"Allow people to mount external storage" : "Personen erlauben, externen Speicher einzubinden",
- "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Zugangsdaten können für die Authentifizierung für mehrere externe Speicher verwendet werden, solange sie identische Zugangsdaten benötigen."
+ "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Authentifizierung bei mehreren externen Speichern verwendet werden, die dieselben Anmeldeinformationen haben."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/et_EE.js b/apps/files_external/l10n/et_EE.js
index 7e339e40b96..c43471fe499 100644
--- a/apps/files_external/l10n/et_EE.js
+++ b/apps/files_external/l10n/et_EE.js
@@ -3,12 +3,19 @@ OC.L10N.register(
{
"Grant access" : "Anna ligipääs",
"Error configuring OAuth1" : "OAuth1 seadistamise tõrge",
+ "Please provide a valid app key and secret." : "Palun sisesta rakenduse ketiva võti ja saladus.",
"Error configuring OAuth2" : "OAuth2 seadistamise tõrge",
"Generate keys" : "Loo võtmed",
"Error generating key pair" : "Viga võtmepaari loomisel",
+ "You are not logged in" : "Sa pole sisse logitud.",
+ "Permission denied" : "Õigus on keelatud",
+ "Storage with ID \"%d\" not found" : "Andmeruumi tunnusega „%d“ ei leidu",
+ "Invalid backend or authentication mechanism class" : "Vigane taustateenus või autentimismeetodi klass",
"Invalid mount point" : "Vigane haakepunkt",
"Objectstore forbidden" : "Objectstore on keelatud",
"Invalid storage backend \"%s\"" : "Vigane salvestuskoha taustsüsteem \"%s\"",
+ "Not permitted to use backend \"%s\"" : "Pole luba kasutada „%s“ taustateenust",
+ "Not permitted to use authentication mechanism \"%s\"" : "Pole luba kasutada „%s“ autentimismeetodit",
"Unsatisfied backend parameters" : "Rahuldamata taustarakenduse parameetrid",
"Insufficient data: %s" : "Pole piisavalt andmeid: %s",
"%s" : "%s",
@@ -25,10 +32,17 @@ OC.L10N.register(
"OpenStack v2" : "OpenStack v2",
"Login" : "Logi sisse",
"Password" : "Salasõna",
+ "Tenant name" : "Kliendi nimi",
+ "Identity endpoint URL" : "Tuvastuse otspunkti võrguaadress",
"OpenStack v3" : "OpenStack v3",
"Domain" : "Domeen",
"Rackspace" : "Rackspace",
"API key" : "API võti",
+ "Global credentials" : "Üldinekasutajanimi/salasõna",
+ "Log-in credentials, save in database" : "Salvesta sisselogimise kasutajanimi/salasõna andmebaasi",
+ "Login and password" : "Kasutajanimi ja salasõna",
+ "Log-in credentials, save in session" : "Salvesta sisselogimise kasutajanimi/salasõna sessioonis",
+ "Global credentials, manually entered" : "Käsitsi sisestatud üldine kasutajanimi/salasõna",
"RSA public key" : "RSA avalik võti",
"Public key" : "Avalik võti",
"RSA private key" : "RSA privaatvõti",
@@ -40,9 +54,11 @@ OC.L10N.register(
"Region" : "Piirkond",
"Enable SSL" : "SSL-i kasutamine",
"Enable Path Style" : "Luba otsingtee stiilis",
+ "Legacy (v2) authentication" : "Pärandvormis autentimine (v2)",
+ "SSE-C encryption key" : "SSE-C krüptimisvõti",
"WebDAV" : "WebDAV",
"URL" : "URL",
- "Remote subfolder" : "Mujahl olev alamkaust",
+ "Remote subfolder" : "Mujal olev alamkaust",
"Secure https://" : "Turvaline https://",
"FTP" : "FTP",
"Host" : "Host",
@@ -56,14 +72,26 @@ OC.L10N.register(
"SMB/CIFS" : "SMB/CIFS",
"Share" : "Jaga",
"Show hidden files" : "Näita peidetud faile",
+ "Case sensitive file system" : "Tõstutundlik failisüsteem",
+ "Timeout" : "Aegumine",
+ "SMB/CIFS using OC login" : "SMB / CIFS kasutades OC sisselogimist",
"OpenStack Object Storage" : "OpenStack Object Storage",
"Service name" : "Teenuse nimi",
+ "Request timeout (seconds)" : "Päringu aegumine (sekundites)",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL-i tugi on PHP-s on kas paigaldamata või pole kasutusele võetud. „%s“ haakimine pole võimalik. Palun oma peakasutajat, et ta teeks cURL-i toe tagamiseks vajalikud muudatused.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP tugi on PHP-s on kas paigaldamata või pole kasutusele võetud. „%s“ haakimine pole võimalik. Palun oma peakasutajat, et ta teeks FTP toe tagamiseks vajalikud muudatused.",
"External storage" : "Väline andmehoidla",
"External storage support" : "Väliste andmehoidlate tugi",
"Adds basic external storage support" : "Lisab väliste andmehoidlate toe baasiteratsioonis",
"Confirm" : "Kinnita",
+ "Storage credentials" : "Andmeruumi kasutajanimi/salasõna",
+ "To access the storage, you need to provide the authentication credentials." : "Selle andmeruumi jaoks pead autentimiseks lisama kasutajanime ja salasõna.",
"Enter the storage login" : "Sisesta andmeruumi kasutajatunnus",
"Enter the storage password" : "Sisesta andmeruumi kasutaja salasõna",
+ "Enter missing credentials" : "Lisa puuduvad kasutajanimi/salasõna",
+ "Credentials successfully set" : "Kasutajanime/salasõna lisamine õnnestus",
+ "Error while setting credentials: {error}" : "Viga kasutajanime/salasõna lisamisel: {error}",
+ "Checking storage …" : "Kontrollin andmeruumi…",
"Open in Files" : "Ava failirakenduses",
"External mount error" : "Välise seostamise tõrge",
"Storage type" : "Andmehoidla tüüp",
@@ -71,7 +99,9 @@ OC.L10N.register(
"Scope" : "Skoop",
"Personal" : "Isiklik",
"System" : "Süsteem",
- "Enable encryption" : "Luba krüpteerimine",
+ "(Group)" : "(Grupp)",
+ "Compatibility with Mac NFD encoding (slow)" : "Ühilduvus Mac NFD kodeeringuga (aeglane)",
+ "Enable encryption" : "Luba krüptimine",
"Enable previews" : "Luba eelvaated",
"Enable sharing" : "Luba jagamine",
"Check for changes" : "Otsi uuendusi",
@@ -79,10 +109,15 @@ OC.L10N.register(
"Once every direct access" : "Kord iga otsese pöördumise korral",
"Read only" : "kirjutuskaitstud",
"Disconnect" : "Ühenda lahti",
+ "Unknown backend: {backendName}" : "Tundmatu taustateenus: {backendName}",
"Admin defined" : "Admini poolt määratud",
+ "Delete storage?" : "Kas kustutame andmeruumi?",
+ "Click to recheck the configuration" : "Klõpsi seadistuste uuesti kontrollimiseks",
"Saved" : "Salvestatud",
- "Saving …" : "Salvestamine …",
+ "Saving …" : "Salvestan…",
"Save" : "Salvesta",
+ "Failed to save global credentials" : "Üldise kasutajanime/salasõna salvestamine ei õnnestunud",
+ "Failed to save global credentials: {message}" : "Üldise kasutajanime/salasõna salvestamine ei õnnestunud: {message}",
"Open documentation" : "Ava dokumentatsioon",
"Folder name" : "Kausta nimi",
"Authentication" : "Autentimine",
diff --git a/apps/files_external/l10n/et_EE.json b/apps/files_external/l10n/et_EE.json
index 4f5ae6f5243..108e1ad18aa 100644
--- a/apps/files_external/l10n/et_EE.json
+++ b/apps/files_external/l10n/et_EE.json
@@ -1,12 +1,19 @@
{ "translations": {
"Grant access" : "Anna ligipääs",
"Error configuring OAuth1" : "OAuth1 seadistamise tõrge",
+ "Please provide a valid app key and secret." : "Palun sisesta rakenduse ketiva võti ja saladus.",
"Error configuring OAuth2" : "OAuth2 seadistamise tõrge",
"Generate keys" : "Loo võtmed",
"Error generating key pair" : "Viga võtmepaari loomisel",
+ "You are not logged in" : "Sa pole sisse logitud.",
+ "Permission denied" : "Õigus on keelatud",
+ "Storage with ID \"%d\" not found" : "Andmeruumi tunnusega „%d“ ei leidu",
+ "Invalid backend or authentication mechanism class" : "Vigane taustateenus või autentimismeetodi klass",
"Invalid mount point" : "Vigane haakepunkt",
"Objectstore forbidden" : "Objectstore on keelatud",
"Invalid storage backend \"%s\"" : "Vigane salvestuskoha taustsüsteem \"%s\"",
+ "Not permitted to use backend \"%s\"" : "Pole luba kasutada „%s“ taustateenust",
+ "Not permitted to use authentication mechanism \"%s\"" : "Pole luba kasutada „%s“ autentimismeetodit",
"Unsatisfied backend parameters" : "Rahuldamata taustarakenduse parameetrid",
"Insufficient data: %s" : "Pole piisavalt andmeid: %s",
"%s" : "%s",
@@ -23,10 +30,17 @@
"OpenStack v2" : "OpenStack v2",
"Login" : "Logi sisse",
"Password" : "Salasõna",
+ "Tenant name" : "Kliendi nimi",
+ "Identity endpoint URL" : "Tuvastuse otspunkti võrguaadress",
"OpenStack v3" : "OpenStack v3",
"Domain" : "Domeen",
"Rackspace" : "Rackspace",
"API key" : "API võti",
+ "Global credentials" : "Üldinekasutajanimi/salasõna",
+ "Log-in credentials, save in database" : "Salvesta sisselogimise kasutajanimi/salasõna andmebaasi",
+ "Login and password" : "Kasutajanimi ja salasõna",
+ "Log-in credentials, save in session" : "Salvesta sisselogimise kasutajanimi/salasõna sessioonis",
+ "Global credentials, manually entered" : "Käsitsi sisestatud üldine kasutajanimi/salasõna",
"RSA public key" : "RSA avalik võti",
"Public key" : "Avalik võti",
"RSA private key" : "RSA privaatvõti",
@@ -38,9 +52,11 @@
"Region" : "Piirkond",
"Enable SSL" : "SSL-i kasutamine",
"Enable Path Style" : "Luba otsingtee stiilis",
+ "Legacy (v2) authentication" : "Pärandvormis autentimine (v2)",
+ "SSE-C encryption key" : "SSE-C krüptimisvõti",
"WebDAV" : "WebDAV",
"URL" : "URL",
- "Remote subfolder" : "Mujahl olev alamkaust",
+ "Remote subfolder" : "Mujal olev alamkaust",
"Secure https://" : "Turvaline https://",
"FTP" : "FTP",
"Host" : "Host",
@@ -54,14 +70,26 @@
"SMB/CIFS" : "SMB/CIFS",
"Share" : "Jaga",
"Show hidden files" : "Näita peidetud faile",
+ "Case sensitive file system" : "Tõstutundlik failisüsteem",
+ "Timeout" : "Aegumine",
+ "SMB/CIFS using OC login" : "SMB / CIFS kasutades OC sisselogimist",
"OpenStack Object Storage" : "OpenStack Object Storage",
"Service name" : "Teenuse nimi",
+ "Request timeout (seconds)" : "Päringu aegumine (sekundites)",
+ "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL-i tugi on PHP-s on kas paigaldamata või pole kasutusele võetud. „%s“ haakimine pole võimalik. Palun oma peakasutajat, et ta teeks cURL-i toe tagamiseks vajalikud muudatused.",
+ "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP tugi on PHP-s on kas paigaldamata või pole kasutusele võetud. „%s“ haakimine pole võimalik. Palun oma peakasutajat, et ta teeks FTP toe tagamiseks vajalikud muudatused.",
"External storage" : "Väline andmehoidla",
"External storage support" : "Väliste andmehoidlate tugi",
"Adds basic external storage support" : "Lisab väliste andmehoidlate toe baasiteratsioonis",
"Confirm" : "Kinnita",
+ "Storage credentials" : "Andmeruumi kasutajanimi/salasõna",
+ "To access the storage, you need to provide the authentication credentials." : "Selle andmeruumi jaoks pead autentimiseks lisama kasutajanime ja salasõna.",
"Enter the storage login" : "Sisesta andmeruumi kasutajatunnus",
"Enter the storage password" : "Sisesta andmeruumi kasutaja salasõna",
+ "Enter missing credentials" : "Lisa puuduvad kasutajanimi/salasõna",
+ "Credentials successfully set" : "Kasutajanime/salasõna lisamine õnnestus",
+ "Error while setting credentials: {error}" : "Viga kasutajanime/salasõna lisamisel: {error}",
+ "Checking storage …" : "Kontrollin andmeruumi…",
"Open in Files" : "Ava failirakenduses",
"External mount error" : "Välise seostamise tõrge",
"Storage type" : "Andmehoidla tüüp",
@@ -69,7 +97,9 @@
"Scope" : "Skoop",
"Personal" : "Isiklik",
"System" : "Süsteem",
- "Enable encryption" : "Luba krüpteerimine",
+ "(Group)" : "(Grupp)",
+ "Compatibility with Mac NFD encoding (slow)" : "Ühilduvus Mac NFD kodeeringuga (aeglane)",
+ "Enable encryption" : "Luba krüptimine",
"Enable previews" : "Luba eelvaated",
"Enable sharing" : "Luba jagamine",
"Check for changes" : "Otsi uuendusi",
@@ -77,10 +107,15 @@
"Once every direct access" : "Kord iga otsese pöördumise korral",
"Read only" : "kirjutuskaitstud",
"Disconnect" : "Ühenda lahti",
+ "Unknown backend: {backendName}" : "Tundmatu taustateenus: {backendName}",
"Admin defined" : "Admini poolt määratud",
+ "Delete storage?" : "Kas kustutame andmeruumi?",
+ "Click to recheck the configuration" : "Klõpsi seadistuste uuesti kontrollimiseks",
"Saved" : "Salvestatud",
- "Saving …" : "Salvestamine …",
+ "Saving …" : "Salvestan…",
"Save" : "Salvesta",
+ "Failed to save global credentials" : "Üldise kasutajanime/salasõna salvestamine ei õnnestunud",
+ "Failed to save global credentials: {message}" : "Üldise kasutajanime/salasõna salvestamine ei õnnestunud: {message}",
"Open documentation" : "Ava dokumentatsioon",
"Folder name" : "Kausta nimi",
"Authentication" : "Autentimine",
diff --git a/apps/files_external/lib/Command/Dependencies.php b/apps/files_external/lib/Command/Dependencies.php
new file mode 100644
index 00000000000..1bb57778129
--- /dev/null
+++ b/apps/files_external/lib/Command/Dependencies.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+namespace OCA\Files_External\Command;
+
+use OC\Core\Command\Base;
+use OCA\Files_External\Service\BackendService;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class Dependencies extends Base {
+ public function __construct(
+ private readonly BackendService $backendService,
+ ) {
+ parent::__construct();
+ }
+
+ protected function configure(): void {
+ $this
+ ->setName('files_external:dependencies')
+ ->setDescription('Show information about the backend dependencies');
+ parent::configure();
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output): int {
+ $storageBackends = $this->backendService->getBackends();
+
+ $anyMissing = false;
+
+ foreach ($storageBackends as $backend) {
+ if ($backend->getDeprecateTo() !== null) {
+ continue;
+ }
+ $missingDependencies = $backend->checkDependencies();
+ if ($missingDependencies) {
+ $anyMissing = true;
+ $output->writeln($backend->getText() . ':');
+ foreach ($missingDependencies as $missingDependency) {
+ if ($missingDependency->getMessage()) {
+ $output->writeln(" - <comment>{$missingDependency->getDependency()}</comment>: {$missingDependency->getMessage()}");
+ } else {
+ $output->writeln(" - <comment>{$missingDependency->getDependency()}</comment>");
+ }
+ }
+ }
+ }
+
+ if (!$anyMissing) {
+ $output->writeln('<info>All dependencies are met</info>');
+ }
+
+ return self::SUCCESS;
+ }
+}
diff --git a/apps/files_external/lib/Lib/Backend/SMB.php b/apps/files_external/lib/Lib/Backend/SMB.php
index b246b0638f0..3549f69cbe3 100644
--- a/apps/files_external/lib/Lib/Backend/SMB.php
+++ b/apps/files_external/lib/Lib/Backend/SMB.php
@@ -10,19 +10,20 @@ namespace OCA\Files_External\Lib\Backend;
use Icewind\SMB\BasicAuth;
use Icewind\SMB\KerberosApacheAuth;
use Icewind\SMB\KerberosAuth;
+use Icewind\SMB\Native\NativeServer;
+use Icewind\SMB\Wrapped\Server;
use OCA\Files_External\Lib\Auth\AuthMechanism;
use OCA\Files_External\Lib\Auth\Password\Password;
use OCA\Files_External\Lib\Auth\SMB\KerberosApacheAuth as KerberosApacheAuthMechanism;
use OCA\Files_External\Lib\DefinitionParameter;
use OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException;
-use OCA\Files_External\Lib\LegacyDependencyCheckPolyfill;
+use OCA\Files_External\Lib\MissingDependency;
+use OCA\Files_External\Lib\Storage\SystemBridge;
use OCA\Files_External\Lib\StorageConfig;
use OCP\IL10N;
use OCP\IUser;
class SMB extends Backend {
- use LegacyDependencyCheckPolyfill;
-
public function __construct(IL10N $l, Password $legacyAuth) {
$this
->setIdentifier('smb')
@@ -122,4 +123,20 @@ class SMB extends Backend {
$storage->setBackendOption('auth', $smbAuth);
}
+
+ public function checkDependencies() {
+ $system = \OCP\Server::get(SystemBridge::class);
+ if (NativeServer::available($system)) {
+ return [];
+ } elseif (Server::available($system)) {
+ $missing = new MissingDependency('php-smbclient');
+ $missing->setOptional(true);
+ $missing->setMessage('The php-smbclient library provides improved compatibility and performance for SMB storages.');
+ return [$missing];
+ } else {
+ $missing = new MissingDependency('php-smbclient');
+ $missing->setMessage('Either the php-smbclient library (preferred) or the smbclient binary is required for SMB storages.');
+ return [$missing, new MissingDependency('smbclient')];
+ }
+ }
}
diff --git a/apps/files_external/lib/Lib/MissingDependency.php b/apps/files_external/lib/Lib/MissingDependency.php
index 5c2c6880f23..da4cbb1de46 100644
--- a/apps/files_external/lib/Lib/MissingDependency.php
+++ b/apps/files_external/lib/Lib/MissingDependency.php
@@ -12,13 +12,14 @@ namespace OCA\Files_External\Lib;
class MissingDependency {
/** @var string|null Custom message */
- private $message = null;
+ private ?string $message = null;
+ private bool $optional = false;
/**
* @param string $dependency
*/
public function __construct(
- private $dependency,
+ private readonly string $dependency,
) {
}
@@ -38,4 +39,12 @@ class MissingDependency {
$this->message = $message;
return $this;
}
+
+ public function isOptional(): bool {
+ return $this->optional;
+ }
+
+ public function setOptional(bool $optional): void {
+ $this->optional = $optional;
+ }
}
diff --git a/apps/files_external/lib/Lib/Storage/Swift.php b/apps/files_external/lib/Lib/Storage/Swift.php
index a71331766d4..e80570f14ba 100644
--- a/apps/files_external/lib/Lib/Storage/Swift.php
+++ b/apps/files_external/lib/Lib/Storage/Swift.php
@@ -288,7 +288,6 @@ class Swift extends Common {
public function stat(string $path): array|false {
$path = $this->normalizePath($path);
-
if ($path === '.') {
$path = '';
} elseif ($this->is_dir($path)) {
@@ -308,22 +307,23 @@ class Swift extends Common {
return false;
}
- $dateTime = $object->lastModified ? \DateTime::createFromFormat(\DateTime::RFC1123, $object->lastModified) : false;
- $mtime = $dateTime ? $dateTime->getTimestamp() : null;
- $objectMetadata = $object->getMetadata();
- if (isset($objectMetadata['timestamp'])) {
- $mtime = $objectMetadata['timestamp'];
+ $mtime = null;
+ if (!empty($object->lastModified)) {
+ $dateTime = \DateTime::createFromFormat(\DateTime::RFC1123, $object->lastModified);
+ if ($dateTime !== false) {
+ $mtime = $dateTime->getTimestamp();
+ }
}
- if (!empty($mtime)) {
- $mtime = floor($mtime);
+ if (is_numeric($object->getMetadata()['timestamp'] ?? null)) {
+ $mtime = (float)$object->getMetadata()['timestamp'];
}
- $stat = [];
- $stat['size'] = (int)$object->contentLength;
- $stat['mtime'] = $mtime;
- $stat['atime'] = time();
- return $stat;
+ return [
+ 'size' => (int)$object->contentLength,
+ 'mtime' => isset($mtime) ? (int)floor($mtime) : null,
+ 'atime' => time(),
+ ];
}
public function filetype(string $path) {
diff --git a/apps/files_external/lib/Service/BackendService.php b/apps/files_external/lib/Service/BackendService.php
index 4726dbd4cad..586ce5330ad 100644
--- a/apps/files_external/lib/Service/BackendService.php
+++ b/apps/files_external/lib/Service/BackendService.php
@@ -12,6 +12,7 @@ use OCA\Files_External\Lib\Auth\AuthMechanism;
use OCA\Files_External\Lib\Backend\Backend;
use OCA\Files_External\Lib\Config\IAuthMechanismProvider;
use OCA\Files_External\Lib\Config\IBackendProvider;
+use OCA\Files_External\Lib\MissingDependency;
use OCP\EventDispatcher\GenericEvent;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IAppConfig;
@@ -187,7 +188,8 @@ class BackendService {
*/
public function getAvailableBackends() {
return array_filter($this->getBackends(), function ($backend) {
- return !$backend->checkDependencies();
+ $missing = array_filter($backend->checkDependencies(), fn (MissingDependency $dependency) => !$dependency->isOptional());
+ return count($missing) === 0;
});
}