From f2e05c6a771927d582bb86a7db34e06ac185f016 Mon Sep 17 00:00:00 2001 From: ErikrafT Date: Fri, 16 Oct 2026 19:50:43 -0300 Subject: [PATCH] Fix insecure FTP/FTPS/SFTP default configuration --- .../erikraft/drop/FtpSecurityDefaults.java | 88 +++++++++++++++++++ .../com/erikraft/drop/FtpServerService.java | 8 +- .../erikraft/drop/FtpSettingsActivity.java | 7 +- .../com/erikraft/drop/SftpServerService.java | 4 + .../erikraft/drop/SftpSettingsActivity.java | 1 + .../main/res/values-af-rZA/ftp_security.xml | 4 + .../main/res/values-ar-rSA/ftp_security.xml | 4 + .../main/res/values-bg-rBG/ftp_security.xml | 4 + .../main/res/values-ca-rES/ftp_security.xml | 4 + .../main/res/values-cs-rCZ/ftp_security.xml | 4 + .../main/res/values-da-rDK/ftp_security.xml | 4 + .../main/res/values-de-rDE/ftp_security.xml | 4 + .../main/res/values-el-rGR/ftp_security.xml | 4 + .../main/res/values-es-rES/ftp_security.xml | 4 + .../main/res/values-fi-rFI/ftp_security.xml | 4 + .../main/res/values-fr-rFR/ftp_security.xml | 4 + .../main/res/values-hi-rIN/ftp_security.xml | 4 + .../main/res/values-hr-rHR/ftp_security.xml | 4 + .../main/res/values-hu-rHU/ftp_security.xml | 4 + .../main/res/values-in-rID/ftp_security.xml | 4 + .../main/res/values-it-rIT/ftp_security.xml | 4 + .../main/res/values-iw-rIL/ftp_security.xml | 4 + .../main/res/values-ja-rJP/ftp_security.xml | 4 + .../main/res/values-ko-rKR/ftp_security.xml | 4 + .../main/res/values-mk-rMK/ftp_security.xml | 4 + .../main/res/values-ne-rNP/ftp_security.xml | 4 + .../main/res/values-nl-rNL/ftp_security.xml | 4 + .../main/res/values-no-rNO/ftp_security.xml | 4 + .../main/res/values-pl-rPL/ftp_security.xml | 4 + .../main/res/values-pt-rBR/ftp_security.xml | 4 + .../main/res/values-pt-rPT/ftp_security.xml | 4 + .../main/res/values-ro-rRO/ftp_security.xml | 4 + .../main/res/values-ru-rRU/ftp_security.xml | 4 + .../main/res/values-sk-rSK/ftp_security.xml | 4 + .../main/res/values-sl-rSI/ftp_security.xml | 4 + .../main/res/values-sr-rRS/ftp_security.xml | 4 + .../main/res/values-sr-rSP/ftp_security.xml | 4 + app/src/main/res/values-sr/ftp_security.xml | 4 + .../main/res/values-sv-rSE/ftp_security.xml | 4 + .../main/res/values-tr-rTR/ftp_security.xml | 4 + .../main/res/values-uk-rUA/ftp_security.xml | 4 + .../main/res/values-vi-rVN/ftp_security.xml | 4 + .../main/res/values-zh-rCN/ftp_security.xml | 4 + .../main/res/values-zh-rTW/ftp_security.xml | 4 + app/src/main/res/values/ftp_security.xml | 4 + 45 files changed, 263 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/com/erikraft/drop/FtpSecurityDefaults.java create mode 100644 app/src/main/res/values-af-rZA/ftp_security.xml create mode 100644 app/src/main/res/values-ar-rSA/ftp_security.xml create mode 100644 app/src/main/res/values-bg-rBG/ftp_security.xml create mode 100644 app/src/main/res/values-ca-rES/ftp_security.xml create mode 100644 app/src/main/res/values-cs-rCZ/ftp_security.xml create mode 100644 app/src/main/res/values-da-rDK/ftp_security.xml create mode 100644 app/src/main/res/values-de-rDE/ftp_security.xml create mode 100644 app/src/main/res/values-el-rGR/ftp_security.xml create mode 100644 app/src/main/res/values-es-rES/ftp_security.xml create mode 100644 app/src/main/res/values-fi-rFI/ftp_security.xml create mode 100644 app/src/main/res/values-fr-rFR/ftp_security.xml create mode 100644 app/src/main/res/values-hi-rIN/ftp_security.xml create mode 100644 app/src/main/res/values-hr-rHR/ftp_security.xml create mode 100644 app/src/main/res/values-hu-rHU/ftp_security.xml create mode 100644 app/src/main/res/values-in-rID/ftp_security.xml create mode 100644 app/src/main/res/values-it-rIT/ftp_security.xml create mode 100644 app/src/main/res/values-iw-rIL/ftp_security.xml create mode 100644 app/src/main/res/values-ja-rJP/ftp_security.xml create mode 100644 app/src/main/res/values-ko-rKR/ftp_security.xml create mode 100644 app/src/main/res/values-mk-rMK/ftp_security.xml create mode 100644 app/src/main/res/values-ne-rNP/ftp_security.xml create mode 100644 app/src/main/res/values-nl-rNL/ftp_security.xml create mode 100644 app/src/main/res/values-no-rNO/ftp_security.xml create mode 100644 app/src/main/res/values-pl-rPL/ftp_security.xml create mode 100644 app/src/main/res/values-pt-rBR/ftp_security.xml create mode 100644 app/src/main/res/values-pt-rPT/ftp_security.xml create mode 100644 app/src/main/res/values-ro-rRO/ftp_security.xml create mode 100644 app/src/main/res/values-ru-rRU/ftp_security.xml create mode 100644 app/src/main/res/values-sk-rSK/ftp_security.xml create mode 100644 app/src/main/res/values-sl-rSI/ftp_security.xml create mode 100644 app/src/main/res/values-sr-rRS/ftp_security.xml create mode 100644 app/src/main/res/values-sr-rSP/ftp_security.xml create mode 100644 app/src/main/res/values-sr/ftp_security.xml create mode 100644 app/src/main/res/values-sv-rSE/ftp_security.xml create mode 100644 app/src/main/res/values-tr-rTR/ftp_security.xml create mode 100644 app/src/main/res/values-uk-rUA/ftp_security.xml create mode 100644 app/src/main/res/values-vi-rVN/ftp_security.xml create mode 100644 app/src/main/res/values-zh-rCN/ftp_security.xml create mode 100644 app/src/main/res/values-zh-rTW/ftp_security.xml create mode 100644 app/src/main/res/values/ftp_security.xml diff --git a/app/src/main/java/com/erikraft/drop/FtpSecurityDefaults.java b/app/src/main/java/com/erikraft/drop/FtpSecurityDefaults.java new file mode 100644 index 000000000..96a00af46 --- /dev/null +++ b/app/src/main/java/com/erikraft/drop/FtpSecurityDefaults.java @@ -0,0 +1,88 @@ +package com.erikraft.drop; + +import android.content.Context; +import android.content.SharedPreferences; +import android.util.Base64; + +import androidx.preference.PreferenceManager; + +import java.security.SecureRandom; +import java.util.Locale; + +/** Secure one-time migration and credential checks for the local FTP/FTPS/SFTP servers. */ +public final class FtpSecurityDefaults { + private static final String MIGRATION_KEY = "security_ftp_sftp_defaults_v1"; + private static final SecureRandom RANDOM = new SecureRandom(); + + private FtpSecurityDefaults() { } + + public static synchronized void ensureSecureDefaults(Context context) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + if (prefs.getBoolean(MIGRATION_KEY, false)) return; + + String ftpUserKey = context.getString(R.string.pref_ftp_username); + String ftpPasswordKey = context.getString(R.string.pref_ftp_password); + String sftpUserKey = context.getString(R.string.pref_sftp_username); + String sftpPasswordKey = context.getString(R.string.pref_sftp_password); + + String ftpUser = prefs.getString(ftpUserKey, "android"); + String ftpPassword = prefs.getString(ftpPasswordKey, ""); + String sftpUser = prefs.getString(sftpUserKey, "android"); + String sftpPassword = prefs.getString(sftpPasswordKey, ""); + + SharedPreferences.Editor editor = prefs.edit(); + if (ftpUser == null || ftpUser.trim().isEmpty()) editor.putString(ftpUserKey, "android"); + if (!hasStrongCredentials(ftpUser, ftpPassword)) { + editor.putString(ftpPasswordKey, generatePassword()); + } + if (sftpUser == null || sftpUser.trim().isEmpty()) editor.putString(sftpUserKey, "android"); + if (!hasStrongCredentials(sftpUser, sftpPassword)) { + editor.putString(sftpPasswordKey, generatePassword()); + } + + // These settings were previously persisted with insecure defaults. Migrate once; + // users can still deliberately change them again from the settings screen. + editor.putBoolean(context.getString(R.string.pref_ftp_anonymous), false); + editor.putBoolean(context.getString(R.string.pref_ftp_ftps), true); + editor.putBoolean(MIGRATION_KEY, true); + editor.apply(); + } + + public static boolean hasStrongCredentials(String username, String password) { + if (username == null || username.trim().isEmpty() || password == null || password.trim().length() < 12) { + return false; + } + String trimmedPassword = password.trim(); + if (trimmedPassword.equalsIgnoreCase(username.trim())) return false; + String normalized = trimmedPassword.toLowerCase(Locale.ROOT); + if (normalized.equals("android") + || normalized.equals("admin") + || normalized.equals("erikraft") + || normalized.equals("password") + || normalized.equals("123456789012") + || normalized.equals("abcdefghijkl") + || normalized.equals("qwertyuiopas")) return false; + + boolean lower = false, upper = false, digit = false, symbol = false; + char previous = 0; + boolean allSame = true; + for (int i = 0; i < trimmedPassword.length(); i++) { + char c = trimmedPassword.charAt(i); + lower |= Character.isLowerCase(c); + upper |= Character.isUpperCase(c); + digit |= Character.isDigit(c); + symbol |= !Character.isLetterOrDigit(c); + if (i > 0 && c != previous) allSame = false; + previous = c; + } + int characterClasses = (lower ? 1 : 0) + (upper ? 1 : 0) + + (digit ? 1 : 0) + (symbol ? 1 : 0); + return !allSame && characterClasses >= 3; + } + + private static String generatePassword() { + byte[] bytes = new byte[24]; + RANDOM.nextBytes(bytes); + return Base64.encodeToString(bytes, Base64.URL_SAFE | Base64.NO_WRAP | Base64.NO_PADDING); + } +} diff --git a/app/src/main/java/com/erikraft/drop/FtpServerService.java b/app/src/main/java/com/erikraft/drop/FtpServerService.java index 707e37685..5284ffd8f 100644 --- a/app/src/main/java/com/erikraft/drop/FtpServerService.java +++ b/app/src/main/java/com/erikraft/drop/FtpServerService.java @@ -97,13 +97,17 @@ public int onStartCommand(Intent intent, int flags, int startId) { private void startServer(long generation) { try { + FtpSecurityDefaults.ensureSecureDefaults(this); android.content.SharedPreferences prefs = androidx.preference.PreferenceManager.getDefaultSharedPreferences(this); int port = parsePort(prefs.getString(getString(R.string.pref_ftp_port), "" + DEFAULT_PORT)); String username = valueOrDefault(prefs.getString(getString(R.string.pref_ftp_username), ""), "android"); String password = valueOrDefault(prefs.getString(getString(R.string.pref_ftp_password), ""), "android"); - boolean anonymous = prefs.getBoolean(getString(R.string.pref_ftp_anonymous), true); - boolean ftps = prefs.getBoolean(getString(R.string.pref_ftp_ftps), false); + boolean anonymous = prefs.getBoolean(getString(R.string.pref_ftp_anonymous), false); + boolean ftps = prefs.getBoolean(getString(R.string.pref_ftp_ftps), true); boolean implicitFtps = prefs.getBoolean(getString(R.string.pref_ftp_ftps_implicit), false); + if (!FtpSecurityDefaults.hasStrongCredentials(username, password)) { + throw new IllegalStateException(getString(R.string.ftp_sftp_weak_credentials_error)); + } boolean readOnly = prefs.getBoolean(getString(R.string.pref_ftp_read_only), false); File home = resolveHome(prefs.getString(getString(R.string.pref_save_location), "")); if (!home.exists() && !home.mkdirs()) throw new IllegalStateException("Não foi possível criar a pasta base: " + home); diff --git a/app/src/main/java/com/erikraft/drop/FtpSettingsActivity.java b/app/src/main/java/com/erikraft/drop/FtpSettingsActivity.java index 3e54c7a29..4688e8720 100644 --- a/app/src/main/java/com/erikraft/drop/FtpSettingsActivity.java +++ b/app/src/main/java/com/erikraft/drop/FtpSettingsActivity.java @@ -78,6 +78,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SnapdropApplication.setAppTheme(this); prefs = PreferenceManager.getDefaultSharedPreferences(this); + FtpSecurityDefaults.ensureSecureDefaults(this); notificationPermissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), granted -> { if (stopNotificationSwitch != null) stopNotificationSwitch.setChecked(granted); prefs.edit().putBoolean(getString(R.string.pref_ftp_stop_notification), granted).apply(); @@ -157,11 +158,11 @@ private void buildUi() { content.addView((TextInputLayout) passwordInput.getTag(), lpTop(dp(8))); anonymousSwitch = new SwitchCompat(this); anonymousSwitch.setText(R.string.ftp_anonymous_title); - anonymousSwitch.setChecked(prefs.getBoolean(getString(R.string.pref_ftp_anonymous), true)); + anonymousSwitch.setChecked(prefs.getBoolean(getString(R.string.pref_ftp_anonymous), false)); content.addView(anonymousSwitch, lpTop(dp(8))); ftpsSwitch = new SwitchCompat(this); ftpsSwitch.setText(R.string.ftp_ftps_title); - ftpsSwitch.setChecked(prefs.getBoolean(getString(R.string.pref_ftp_ftps), false)); + ftpsSwitch.setChecked(prefs.getBoolean(getString(R.string.pref_ftp_ftps), true)); content.addView(ftpsSwitch, lpTop(dp(4))); ftpsModeButton = new MaterialButton(this); content.addView(ftpsModeButton, lpTop(dp(4))); @@ -289,7 +290,7 @@ private void updateAddress() { private String buildAddress() { String port = prefs.getString(getString(R.string.pref_ftp_port), "2221"); - String scheme = prefs.getBoolean(getString(R.string.pref_ftp_ftps), false) ? "ftps" : "ftp"; + String scheme = prefs.getBoolean(getString(R.string.pref_ftp_ftps), true) ? "ftps" : "ftp"; return scheme + "://" + getWifiAddress() + ":" + port; } diff --git a/app/src/main/java/com/erikraft/drop/SftpServerService.java b/app/src/main/java/com/erikraft/drop/SftpServerService.java index 075a001c6..f78399c18 100644 --- a/app/src/main/java/com/erikraft/drop/SftpServerService.java +++ b/app/src/main/java/com/erikraft/drop/SftpServerService.java @@ -99,6 +99,7 @@ private void startServer() { // Android provides its own crypto primitives; avoid SSHD's optional BC registrar. System.setProperty("org.apache.sshd.security.provider.BC.enabled", "false"); + FtpSecurityDefaults.ensureSecureDefaults(this); android.content.SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); int port = parsePort(prefs.getString(getString(R.string.pref_sftp_port), "" + DEFAULT_PORT)); @@ -106,6 +107,9 @@ private void startServer() { prefs.getString(getString(R.string.pref_sftp_username), ""), "android"); String password = valueOrDefault( prefs.getString(getString(R.string.pref_sftp_password), ""), "android"); + if (!FtpSecurityDefaults.hasStrongCredentials(username, password)) { + throw new IllegalStateException(getString(R.string.ftp_sftp_weak_credentials_error)); + } String configuredHome = prefs.getString(getString(R.string.pref_sftp_save_location), ""); boolean readOnly = prefs.getBoolean(getString(R.string.pref_sftp_read_only), false); File home = new File(configuredHome); diff --git a/app/src/main/java/com/erikraft/drop/SftpSettingsActivity.java b/app/src/main/java/com/erikraft/drop/SftpSettingsActivity.java index 80ade0433..e1aaf782b 100644 --- a/app/src/main/java/com/erikraft/drop/SftpSettingsActivity.java +++ b/app/src/main/java/com/erikraft/drop/SftpSettingsActivity.java @@ -46,6 +46,7 @@ public class SftpSettingsActivity extends DropPipActivity { @Override protected void onCreate(Bundle state) { super.onCreate(state); + FtpSecurityDefaults.ensureSecureDefaults(this); notificationPermissionLauncher = registerForActivityResult( new ActivityResultContracts.RequestPermission(), granted -> { if (stopNotificationSwitch != null) stopNotificationSwitch.setChecked(granted); diff --git a/app/src/main/res/values-af-rZA/ftp_security.xml b/app/src/main/res/values-af-rZA/ftp_security.xml new file mode 100644 index 000000000..4158cd0ca --- /dev/null +++ b/app/src/main/res/values-af-rZA/ftp_security.xml @@ -0,0 +1,4 @@ + + + Gebruik vir sekuriteit ’n unieke wagwoord van minstens 12 karakters in die FTP/FTPS/SFTP-instellings. + diff --git a/app/src/main/res/values-ar-rSA/ftp_security.xml b/app/src/main/res/values-ar-rSA/ftp_security.xml new file mode 100644 index 000000000..28b79b31c --- /dev/null +++ b/app/src/main/res/values-ar-rSA/ftp_security.xml @@ -0,0 +1,4 @@ + + + لأسباب أمنية، استخدم كلمة مرور فريدة من 12 حرفًا على الأقل في إعدادات FTP/FTPS/SFTP. + diff --git a/app/src/main/res/values-bg-rBG/ftp_security.xml b/app/src/main/res/values-bg-rBG/ftp_security.xml new file mode 100644 index 000000000..60c0722e3 --- /dev/null +++ b/app/src/main/res/values-bg-rBG/ftp_security.xml @@ -0,0 +1,4 @@ + + + За сигурност използвайте уникална парола с поне 12 знака в настройките за FTP/FTPS/SFTP. + diff --git a/app/src/main/res/values-ca-rES/ftp_security.xml b/app/src/main/res/values-ca-rES/ftp_security.xml new file mode 100644 index 000000000..2742f0e78 --- /dev/null +++ b/app/src/main/res/values-ca-rES/ftp_security.xml @@ -0,0 +1,4 @@ + + + Per seguretat, fes servir una contrasenya única d’almenys 12 caràcters a la configuració FTP/FTPS/SFTP. + diff --git a/app/src/main/res/values-cs-rCZ/ftp_security.xml b/app/src/main/res/values-cs-rCZ/ftp_security.xml new file mode 100644 index 000000000..daac63ba1 --- /dev/null +++ b/app/src/main/res/values-cs-rCZ/ftp_security.xml @@ -0,0 +1,4 @@ + + + Z bezpečnostních důvodů použijte v nastavení FTP/FTPS/SFTP jedinečné heslo o délce alespoň 12 znaků. + diff --git a/app/src/main/res/values-da-rDK/ftp_security.xml b/app/src/main/res/values-da-rDK/ftp_security.xml new file mode 100644 index 000000000..2cf8cb027 --- /dev/null +++ b/app/src/main/res/values-da-rDK/ftp_security.xml @@ -0,0 +1,4 @@ + + + Af sikkerhedshensyn skal du bruge en unik adgangskode på mindst 12 tegn i FTP/FTPS/SFTP-indstillingerne. + diff --git a/app/src/main/res/values-de-rDE/ftp_security.xml b/app/src/main/res/values-de-rDE/ftp_security.xml new file mode 100644 index 000000000..f5a9060e6 --- /dev/null +++ b/app/src/main/res/values-de-rDE/ftp_security.xml @@ -0,0 +1,4 @@ + + + Verwende aus Sicherheitsgründen in den FTP/FTPS/SFTP-Einstellungen ein einzigartiges Passwort mit mindestens 12 Zeichen. + diff --git a/app/src/main/res/values-el-rGR/ftp_security.xml b/app/src/main/res/values-el-rGR/ftp_security.xml new file mode 100644 index 000000000..490476391 --- /dev/null +++ b/app/src/main/res/values-el-rGR/ftp_security.xml @@ -0,0 +1,4 @@ + + + Για λόγους ασφαλείας, χρησιμοποιήστε μοναδικό κωδικό πρόσβασης τουλάχιστον 12 χαρακτήρων στις ρυθμίσεις FTP/FTPS/SFTP. + diff --git a/app/src/main/res/values-es-rES/ftp_security.xml b/app/src/main/res/values-es-rES/ftp_security.xml new file mode 100644 index 000000000..7eb33e0f4 --- /dev/null +++ b/app/src/main/res/values-es-rES/ftp_security.xml @@ -0,0 +1,4 @@ + + + Por seguridad, utiliza una contraseña única de al menos 12 caracteres en los ajustes de FTP/FTPS/SFTP. + diff --git a/app/src/main/res/values-fi-rFI/ftp_security.xml b/app/src/main/res/values-fi-rFI/ftp_security.xml new file mode 100644 index 000000000..0a8475ac2 --- /dev/null +++ b/app/src/main/res/values-fi-rFI/ftp_security.xml @@ -0,0 +1,4 @@ + + + Käytä turvallisuussyistä FTP/FTPS/SFTP-asetuksissa yksilöllistä salasanaa, jossa on vähintään 12 merkkiä. + diff --git a/app/src/main/res/values-fr-rFR/ftp_security.xml b/app/src/main/res/values-fr-rFR/ftp_security.xml new file mode 100644 index 000000000..1cd2fe4cf --- /dev/null +++ b/app/src/main/res/values-fr-rFR/ftp_security.xml @@ -0,0 +1,4 @@ + + + Pour votre sécurité, utilisez un mot de passe unique d’au moins 12 caractères dans les paramètres FTP/FTPS/SFTP. + diff --git a/app/src/main/res/values-hi-rIN/ftp_security.xml b/app/src/main/res/values-hi-rIN/ftp_security.xml new file mode 100644 index 000000000..45254935e --- /dev/null +++ b/app/src/main/res/values-hi-rIN/ftp_security.xml @@ -0,0 +1,4 @@ + + + सुरक्षा के लिए, FTP/FTPS/SFTP सेटिंग में कम से कम 12 अक्षरों वाला विशिष्ट पासवर्ड इस्तेमाल करें। + diff --git a/app/src/main/res/values-hr-rHR/ftp_security.xml b/app/src/main/res/values-hr-rHR/ftp_security.xml new file mode 100644 index 000000000..5b3a7a9a9 --- /dev/null +++ b/app/src/main/res/values-hr-rHR/ftp_security.xml @@ -0,0 +1,4 @@ + + + Radi sigurnosti koristite jedinstvenu lozinku od najmanje 12 znakova u postavkama FTP/FTPS/SFTP-a. + diff --git a/app/src/main/res/values-hu-rHU/ftp_security.xml b/app/src/main/res/values-hu-rHU/ftp_security.xml new file mode 100644 index 000000000..341e270b0 --- /dev/null +++ b/app/src/main/res/values-hu-rHU/ftp_security.xml @@ -0,0 +1,4 @@ + + + Biztonsági okokból használjon legalább 12 karakteres, egyedi jelszót az FTP/FTPS/SFTP beállításaiban. + diff --git a/app/src/main/res/values-in-rID/ftp_security.xml b/app/src/main/res/values-in-rID/ftp_security.xml new file mode 100644 index 000000000..6ad2676ae --- /dev/null +++ b/app/src/main/res/values-in-rID/ftp_security.xml @@ -0,0 +1,4 @@ + + + Demi keamanan, gunakan kata sandi unik minimal 12 karakter di pengaturan FTP/FTPS/SFTP. + diff --git a/app/src/main/res/values-it-rIT/ftp_security.xml b/app/src/main/res/values-it-rIT/ftp_security.xml new file mode 100644 index 000000000..c3129b7af --- /dev/null +++ b/app/src/main/res/values-it-rIT/ftp_security.xml @@ -0,0 +1,4 @@ + + + Per sicurezza, usa una password univoca di almeno 12 caratteri nelle impostazioni FTP/FTPS/SFTP. + diff --git a/app/src/main/res/values-iw-rIL/ftp_security.xml b/app/src/main/res/values-iw-rIL/ftp_security.xml new file mode 100644 index 000000000..dd3f1a7b8 --- /dev/null +++ b/app/src/main/res/values-iw-rIL/ftp_security.xml @@ -0,0 +1,4 @@ + + + למען האבטחה, יש להשתמש בהגדרות FTP/FTPS/SFTP בסיסמה ייחודית בת 12 תווים לפחות. + diff --git a/app/src/main/res/values-ja-rJP/ftp_security.xml b/app/src/main/res/values-ja-rJP/ftp_security.xml new file mode 100644 index 000000000..ba83528dd --- /dev/null +++ b/app/src/main/res/values-ja-rJP/ftp_security.xml @@ -0,0 +1,4 @@ + + + セキュリティのため、FTP/FTPS/SFTP の設定では 12 文字以上の固有のパスワードを使用してください。 + diff --git a/app/src/main/res/values-ko-rKR/ftp_security.xml b/app/src/main/res/values-ko-rKR/ftp_security.xml new file mode 100644 index 000000000..c9f121b26 --- /dev/null +++ b/app/src/main/res/values-ko-rKR/ftp_security.xml @@ -0,0 +1,4 @@ + + + 보안을 위해 FTP/FTPS/SFTP 설정에서 12자 이상의 고유한 비밀번호를 사용하세요. + diff --git a/app/src/main/res/values-mk-rMK/ftp_security.xml b/app/src/main/res/values-mk-rMK/ftp_security.xml new file mode 100644 index 000000000..b0380e195 --- /dev/null +++ b/app/src/main/res/values-mk-rMK/ftp_security.xml @@ -0,0 +1,4 @@ + + + За безбедност, користете единствена лозинка со најмалку 12 знаци во поставките за FTP/FTPS/SFTP. + diff --git a/app/src/main/res/values-ne-rNP/ftp_security.xml b/app/src/main/res/values-ne-rNP/ftp_security.xml new file mode 100644 index 000000000..049f343e1 --- /dev/null +++ b/app/src/main/res/values-ne-rNP/ftp_security.xml @@ -0,0 +1,4 @@ + + + सुरक्षाका लागि FTP/FTPS/SFTP सेटिङमा कम्तीमा १२ वर्णको अद्वितीय पासवर्ड प्रयोग गर्नुहोस्। + diff --git a/app/src/main/res/values-nl-rNL/ftp_security.xml b/app/src/main/res/values-nl-rNL/ftp_security.xml new file mode 100644 index 000000000..63823dcf0 --- /dev/null +++ b/app/src/main/res/values-nl-rNL/ftp_security.xml @@ -0,0 +1,4 @@ + + + Gebruik voor de veiligheid een uniek wachtwoord van minimaal 12 tekens in de FTP/FTPS/SFTP-instellingen. + diff --git a/app/src/main/res/values-no-rNO/ftp_security.xml b/app/src/main/res/values-no-rNO/ftp_security.xml new file mode 100644 index 000000000..e6c0cf252 --- /dev/null +++ b/app/src/main/res/values-no-rNO/ftp_security.xml @@ -0,0 +1,4 @@ + + + Av sikkerhetshensyn må du bruke et unikt passord på minst 12 tegn i FTP/FTPS/SFTP-innstillingene. + diff --git a/app/src/main/res/values-pl-rPL/ftp_security.xml b/app/src/main/res/values-pl-rPL/ftp_security.xml new file mode 100644 index 000000000..c8e2f1319 --- /dev/null +++ b/app/src/main/res/values-pl-rPL/ftp_security.xml @@ -0,0 +1,4 @@ + + + Ze względów bezpieczeństwa użyj unikalnego hasła o długości co najmniej 12 znaków w ustawieniach FTP/FTPS/SFTP. + diff --git a/app/src/main/res/values-pt-rBR/ftp_security.xml b/app/src/main/res/values-pt-rBR/ftp_security.xml new file mode 100644 index 000000000..62836bdd5 --- /dev/null +++ b/app/src/main/res/values-pt-rBR/ftp_security.xml @@ -0,0 +1,4 @@ + + + Por segurança, use uma senha exclusiva com pelo menos 12 caracteres nas configurações de FTP/FTPS/SFTP. + diff --git a/app/src/main/res/values-pt-rPT/ftp_security.xml b/app/src/main/res/values-pt-rPT/ftp_security.xml new file mode 100644 index 000000000..697199bac --- /dev/null +++ b/app/src/main/res/values-pt-rPT/ftp_security.xml @@ -0,0 +1,4 @@ + + + Por segurança, utilize uma palavra-passe exclusiva com pelo menos 12 caracteres nas definições de FTP/FTPS/SFTP. + diff --git a/app/src/main/res/values-ro-rRO/ftp_security.xml b/app/src/main/res/values-ro-rRO/ftp_security.xml new file mode 100644 index 000000000..9c7453756 --- /dev/null +++ b/app/src/main/res/values-ro-rRO/ftp_security.xml @@ -0,0 +1,4 @@ + + + Pentru securitate, folosiți o parolă unică de cel puțin 12 caractere în setările FTP/FTPS/SFTP. + diff --git a/app/src/main/res/values-ru-rRU/ftp_security.xml b/app/src/main/res/values-ru-rRU/ftp_security.xml new file mode 100644 index 000000000..29ebacbdf --- /dev/null +++ b/app/src/main/res/values-ru-rRU/ftp_security.xml @@ -0,0 +1,4 @@ + + + В целях безопасности используйте в настройках FTP/FTPS/SFTP уникальный пароль длиной не менее 12 символов. + diff --git a/app/src/main/res/values-sk-rSK/ftp_security.xml b/app/src/main/res/values-sk-rSK/ftp_security.xml new file mode 100644 index 000000000..0b552094f --- /dev/null +++ b/app/src/main/res/values-sk-rSK/ftp_security.xml @@ -0,0 +1,4 @@ + + + Z bezpečnostných dôvodov použite v nastaveniach FTP/FTPS/SFTP jedinečné heslo s dĺžkou aspoň 12 znakov. + diff --git a/app/src/main/res/values-sl-rSI/ftp_security.xml b/app/src/main/res/values-sl-rSI/ftp_security.xml new file mode 100644 index 000000000..6ed101253 --- /dev/null +++ b/app/src/main/res/values-sl-rSI/ftp_security.xml @@ -0,0 +1,4 @@ + + + Zaradi varnosti v nastavitvah FTP/FTPS/SFTP uporabite edinstveno geslo z najmanj 12 znaki. + diff --git a/app/src/main/res/values-sr-rRS/ftp_security.xml b/app/src/main/res/values-sr-rRS/ftp_security.xml new file mode 100644 index 000000000..3344dd326 --- /dev/null +++ b/app/src/main/res/values-sr-rRS/ftp_security.xml @@ -0,0 +1,4 @@ + + + Ради безбедности користите јединствену лозинку од најмање 12 знакова у FTP/FTPS/SFTP подешавањима. + diff --git a/app/src/main/res/values-sr-rSP/ftp_security.xml b/app/src/main/res/values-sr-rSP/ftp_security.xml new file mode 100644 index 000000000..5ec12ac1c --- /dev/null +++ b/app/src/main/res/values-sr-rSP/ftp_security.xml @@ -0,0 +1,4 @@ + + + Radi bezbednosti koristite jedinstvenu lozinku od najmanje 12 znakova u FTP/FTPS/SFTP podešavanjima. + diff --git a/app/src/main/res/values-sr/ftp_security.xml b/app/src/main/res/values-sr/ftp_security.xml new file mode 100644 index 000000000..3344dd326 --- /dev/null +++ b/app/src/main/res/values-sr/ftp_security.xml @@ -0,0 +1,4 @@ + + + Ради безбедности користите јединствену лозинку од најмање 12 знакова у FTP/FTPS/SFTP подешавањима. + diff --git a/app/src/main/res/values-sv-rSE/ftp_security.xml b/app/src/main/res/values-sv-rSE/ftp_security.xml new file mode 100644 index 000000000..0de62dad6 --- /dev/null +++ b/app/src/main/res/values-sv-rSE/ftp_security.xml @@ -0,0 +1,4 @@ + + + Använd av säkerhetsskäl ett unikt lösenord på minst 12 tecken i FTP/FTPS/SFTP-inställningarna. + diff --git a/app/src/main/res/values-tr-rTR/ftp_security.xml b/app/src/main/res/values-tr-rTR/ftp_security.xml new file mode 100644 index 000000000..fc3f13e3b --- /dev/null +++ b/app/src/main/res/values-tr-rTR/ftp_security.xml @@ -0,0 +1,4 @@ + + + Güvenlik için FTP/FTPS/SFTP ayarlarında en az 12 karakterli benzersiz bir parola kullanın. + diff --git a/app/src/main/res/values-uk-rUA/ftp_security.xml b/app/src/main/res/values-uk-rUA/ftp_security.xml new file mode 100644 index 000000000..e9b01fd24 --- /dev/null +++ b/app/src/main/res/values-uk-rUA/ftp_security.xml @@ -0,0 +1,4 @@ + + + Для безпеки використовуйте в налаштуваннях FTP/FTPS/SFTP унікальний пароль довжиною щонайменше 12 символів. + diff --git a/app/src/main/res/values-vi-rVN/ftp_security.xml b/app/src/main/res/values-vi-rVN/ftp_security.xml new file mode 100644 index 000000000..071d26542 --- /dev/null +++ b/app/src/main/res/values-vi-rVN/ftp_security.xml @@ -0,0 +1,4 @@ + + + Để bảo mật, hãy dùng mật khẩu riêng biệt dài ít nhất 12 ký tự trong cài đặt FTP/FTPS/SFTP. + diff --git a/app/src/main/res/values-zh-rCN/ftp_security.xml b/app/src/main/res/values-zh-rCN/ftp_security.xml new file mode 100644 index 000000000..873108618 --- /dev/null +++ b/app/src/main/res/values-zh-rCN/ftp_security.xml @@ -0,0 +1,4 @@ + + + 为确保安全,请在 FTP/FTPS/SFTP 设置中使用至少 12 个字符的唯一密码。 + diff --git a/app/src/main/res/values-zh-rTW/ftp_security.xml b/app/src/main/res/values-zh-rTW/ftp_security.xml new file mode 100644 index 000000000..de98d8f34 --- /dev/null +++ b/app/src/main/res/values-zh-rTW/ftp_security.xml @@ -0,0 +1,4 @@ + + + 為確保安全,請在 FTP/FTPS/SFTP 設定中使用至少 12 個字元的專用密碼。 + diff --git a/app/src/main/res/values/ftp_security.xml b/app/src/main/res/values/ftp_security.xml new file mode 100644 index 000000000..0ea6f3dbc --- /dev/null +++ b/app/src/main/res/values/ftp_security.xml @@ -0,0 +1,4 @@ + + + For security, use a unique password with at least 12 characters in FTP/FTPS/SFTP settings. +