From 592ab16b94d30d080f8a3074ea97dc5285d6b2fc Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Mon, 25 Dec 2017 13:04:27 +0100 Subject: [PATCH] Add setting to server config to allow self-signed certificates. It is disabled by default. Signed-off-by: Yahor Berdnikau --- .../ultrasonic/fragment/ServerSettingsFragment.java | 13 +++++++++++++ .../ultrasonic/service/MusicServiceFactory.java | 6 ++++-- .../java/org/moire/ultrasonic/util/Constants.java | 3 +-- ultrasonic/src/main/res/values-es/strings.xml | 1 + ultrasonic/src/main/res/values-fr/strings.xml | 1 + ultrasonic/src/main/res/values-hu/strings.xml | 1 + ultrasonic/src/main/res/values-pt-rBR/strings.xml | 1 + ultrasonic/src/main/res/values-pt/strings.xml | 1 + ultrasonic/src/main/res/values/strings.xml | 2 ++ ultrasonic/src/main/res/xml/server_settings.xml | 6 ++++++ 10 files changed, 31 insertions(+), 4 deletions(-) diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/ServerSettingsFragment.java b/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/ServerSettingsFragment.java index 6c8e4d9e..b9fcb529 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/ServerSettingsFragment.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/fragment/ServerSettingsFragment.java @@ -37,6 +37,7 @@ public class ServerSettingsFragment extends PreferenceFragment private EditTextPreference serverPasswordPref; private CheckBoxPreference equalizerPref; private CheckBoxPreference jukeboxPref; + private CheckBoxPreference allowSelfSignedCertificatePref; private Preference removeServerPref; private Preference testConnectionPref; @@ -74,6 +75,8 @@ public class ServerSettingsFragment extends PreferenceFragment jukeboxPref = (CheckBoxPreference) findPreference(getString(R.string.jukebox_is_default)); removeServerPref = findPreference(getString(R.string.settings_server_remove_server)); testConnectionPref = findPreference(getString(R.string.settings_test_connection_title)); + allowSelfSignedCertificatePref = (CheckBoxPreference) findPreference( + getString(R.string.settings_allow_self_signed_certificate)); setupPreferencesValues(); setupPreferencesListeners(); @@ -132,6 +135,11 @@ public class ServerSettingsFragment extends PreferenceFragment .putBoolean(Constants.PREFERENCES_KEY_JUKEBOX_BY_DEFAULT + serverId, (Boolean) newValue) .apply(); return true; + } else if (preference == allowSelfSignedCertificatePref) { + sharedPreferences.edit() + .putBoolean(Constants.PREFERENCES_KEY_ALLOW_SELF_SIGNED_CERTIFICATE + serverId, (Boolean) newValue) + .apply(); + return true; } return false; } @@ -164,6 +172,9 @@ public class ServerSettingsFragment extends PreferenceFragment jukeboxPref.setChecked(sharedPreferences .getBoolean(Constants.PREFERENCES_KEY_JUKEBOX_BY_DEFAULT + serverId, false)); + + allowSelfSignedCertificatePref.setChecked(sharedPreferences + .getBoolean(Constants.PREFERENCES_KEY_ALLOW_SELF_SIGNED_CERTIFICATE + serverId, false)); } private void updatePassword() { @@ -201,6 +212,7 @@ public class ServerSettingsFragment extends PreferenceFragment serverPasswordPref.setOnPreferenceChangeListener(this); equalizerPref.setOnPreferenceChangeListener(this); jukeboxPref.setOnPreferenceChangeListener(this); + allowSelfSignedCertificatePref.setOnPreferenceChangeListener(this); removeServerPref.setOnPreferenceClickListener(this); testConnectionPref.setOnPreferenceClickListener(this); @@ -262,6 +274,7 @@ public class ServerSettingsFragment extends PreferenceFragment .remove(Constants.PREFERENCES_KEY_PASSWORD + serverId) .remove(Constants.PREFERENCES_KEY_SERVER_ENABLED + serverId) .remove(Constants.PREFERENCES_KEY_JUKEBOX_BY_DEFAULT + serverId) + .remove(Constants.PREFERENCES_KEY_ALLOW_SELF_SIGNED_CERTIFICATE + serverId) .apply(); if (serverId < activeServers) { diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/service/MusicServiceFactory.java b/ultrasonic/src/main/java/org/moire/ultrasonic/service/MusicServiceFactory.java index 3fa24033..e274412a 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/service/MusicServiceFactory.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/service/MusicServiceFactory.java @@ -84,6 +84,8 @@ public class MusicServiceFactory { String serverUrl = preferences.getString(Constants.PREFERENCES_KEY_SERVER_URL + instance, null); String username = preferences.getString(Constants.PREFERENCES_KEY_USERNAME + instance, null); String password = preferences.getString(Constants.PREFERENCES_KEY_PASSWORD + instance, null); + boolean allowSelfSignedCertificate = preferences + .getBoolean(Constants.PREFERENCES_KEY_ALLOW_SELF_SIGNED_CERTIFICATE + instance, false); if (serverUrl == null || username == null || @@ -91,11 +93,11 @@ public class MusicServiceFactory { Log.i("MusicServiceFactory", "Server credentials is not available"); return new SubsonicAPIClient("http://localhost", "", "", SubsonicAPIVersions.fromApiVersion(Constants.REST_PROTOCOL_VERSION), - Constants.REST_CLIENT_ID, BuildConfig.DEBUG); + Constants.REST_CLIENT_ID, allowSelfSignedCertificate, BuildConfig.DEBUG); } return new SubsonicAPIClient(serverUrl, username, password, SubsonicAPIVersions.fromApiVersion(Constants.REST_PROTOCOL_VERSION), - Constants.REST_CLIENT_ID, BuildConfig.DEBUG); + Constants.REST_CLIENT_ID, allowSelfSignedCertificate, BuildConfig.DEBUG); } } diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/util/Constants.java b/ultrasonic/src/main/java/org/moire/ultrasonic/util/Constants.java index 19c4a199..a3aab7e5 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/util/Constants.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/util/Constants.java @@ -72,11 +72,11 @@ public final class Constants public static final String PREFERENCES_KEY_SERVER_URL = "serverUrl"; public static final String PREFERENCES_KEY_SERVERS_KEY = "serversKey"; public static final String PREFERENCES_KEY_ADD_SERVER = "addServer"; - public static final String PREFERENCES_KEY_REMOVE_SERVER = "removeServer"; public static final String PREFERENCES_KEY_ACTIVE_SERVERS = "activeServers"; public static final String PREFERENCES_KEY_MUSIC_FOLDER_ID = "musicFolderId"; public static final String PREFERENCES_KEY_USERNAME = "username"; public static final String PREFERENCES_KEY_PASSWORD = "password"; + public static final String PREFERENCES_KEY_ALLOW_SELF_SIGNED_CERTIFICATE = "allowSSCertificate"; public static final String PREFERENCES_KEY_INSTALL_TIME = "installTime"; public static final String PREFERENCES_KEY_THEME = "theme"; public static final String PREFERENCES_KEY_DISPLAY_BITRATE_WITH_ARTIST = "displayBitrateWithArtist"; @@ -109,7 +109,6 @@ public final class Constants public static final String PREFERENCES_KEY_GAPLESS_PLAYBACK = "gaplessPlayback"; public static final String PREFERENCES_KEY_PLAYBACK_CONTROL_SETTINGS = "playbackControlSettings"; public static final String PREFERENCES_KEY_CLEAR_SEARCH_HISTORY = "clearSearchHistory"; - public static final String PREFERENCES_KEY_TEST_CONNECTION = "testConnection"; public static final String PREFERENCES_KEY_DOWNLOAD_TRANSITION = "transitionToDownloadOnPlay"; public static final String PREFERENCES_KEY_INCREMENT_TIME = "incrementTime"; public static final String PREFERENCES_KEY_ID3_TAGS = "useId3Tags"; diff --git a/ultrasonic/src/main/res/values-es/strings.xml b/ultrasonic/src/main/res/values-es/strings.xml index 7a04ad5b..499ba26c 100644 --- a/ultrasonic/src/main/res/values-es/strings.xml +++ b/ultrasonic/src/main/res/values-es/strings.xml @@ -300,6 +300,7 @@ Oscuro Claro Tema + Permita el certificado HTTPS autofirmado Usar carpetas para el nombre del artista Se asume que la carpeta en el nivel mal alto es el nombre del artista del álbum Navegar usando las etiquetas ID3 diff --git a/ultrasonic/src/main/res/values-fr/strings.xml b/ultrasonic/src/main/res/values-fr/strings.xml index f9255200..643fad6a 100644 --- a/ultrasonic/src/main/res/values-fr/strings.xml +++ b/ultrasonic/src/main/res/values-fr/strings.xml @@ -300,6 +300,7 @@ Sombre Clair Thème + Autoriser le certificat HTTPS auto-signé Utilisez des dossiers pour les noms d\'artistes Dossier de niveau supérieur devient le nom de l\'artiste de l\'album Naviguer en utilisant ID3 Tags diff --git a/ultrasonic/src/main/res/values-hu/strings.xml b/ultrasonic/src/main/res/values-hu/strings.xml index 4a92588b..6389458c 100644 --- a/ultrasonic/src/main/res/values-hu/strings.xml +++ b/ultrasonic/src/main/res/values-hu/strings.xml @@ -300,6 +300,7 @@ Sötét Világos Téma + Engedélyezze az önaláírt HTTPS tanúsítványt Mappanevek használata az előadók neveként Feltételezi, hogy a legfelső szintű mappa az előadó neve. Böngészés ID3 Tag használatával diff --git a/ultrasonic/src/main/res/values-pt-rBR/strings.xml b/ultrasonic/src/main/res/values-pt-rBR/strings.xml index 552061ce..839c8643 100644 --- a/ultrasonic/src/main/res/values-pt-rBR/strings.xml +++ b/ultrasonic/src/main/res/values-pt-rBR/strings.xml @@ -303,6 +303,7 @@ Escuro Claro Tema + Permitir o certificado HTTPS auto-assinado Pasta para Nome do Artista Assume que a pasta mais acima é o nome do artista Navegar Usando Etiquetas ID3 diff --git a/ultrasonic/src/main/res/values-pt/strings.xml b/ultrasonic/src/main/res/values-pt/strings.xml index 5ce59f3a..2767ebec 100644 --- a/ultrasonic/src/main/res/values-pt/strings.xml +++ b/ultrasonic/src/main/res/values-pt/strings.xml @@ -303,6 +303,7 @@ Escuro Claro Tema + Permitir o certificado HTTPS auto-assinado Pasta para Nome do Artista Assume que a pasta mais acima é o nome do artista Navegar Usando Etiquetas ID3 diff --git a/ultrasonic/src/main/res/values/strings.xml b/ultrasonic/src/main/res/values/strings.xml index ccbba6c9..7ed490c8 100644 --- a/ultrasonic/src/main/res/values/strings.xml +++ b/ultrasonic/src/main/res/values/strings.xml @@ -146,6 +146,7 @@ No genres found No saved playlists on server Contacting server, please wait. + allowSelfSignedCertificate Appearance Buffer Length Disabled @@ -303,6 +304,7 @@ Dark Light Theme + Allow self-signed HTTPS certificate Use Folders For Artist Name Assume top-level folder is the name of the album artist Browse Using ID3 Tags diff --git a/ultrasonic/src/main/res/xml/server_settings.xml b/ultrasonic/src/main/res/xml/server_settings.xml index cc107299..3f755b58 100644 --- a/ultrasonic/src/main/res/xml/server_settings.xml +++ b/ultrasonic/src/main/res/xml/server_settings.xml @@ -38,6 +38,12 @@ android:defaultValue="true" android:title="@string/equalizer.enabled" /> +