diff --git a/src/main/java/eu/siacs/conversations/AppSettings.java b/src/main/java/eu/siacs/conversations/AppSettings.java index 4287d694f69fc51fe3ba976fcc32e39ad0aecdf2..45cd9a0a1e35dc3766ed4c8086d5aaa768e23ba0 100644 --- a/src/main/java/eu/siacs/conversations/AppSettings.java +++ b/src/main/java/eu/siacs/conversations/AppSettings.java @@ -7,6 +7,7 @@ import androidx.annotation.BoolRes; import androidx.annotation.NonNull; import androidx.preference.PreferenceManager; import com.google.common.base.Strings; +import eu.siacs.conversations.services.QuickConversationsService; import java.security.SecureRandom; public class AppSettings { @@ -121,7 +122,14 @@ public class AppSettings { } public boolean isUseTor() { - return getBooleanPreference(USE_TOR, R.bool.use_tor); + return QuickConversationsService.isConversations() + && getBooleanPreference(USE_TOR, R.bool.use_tor); + } + + public boolean isExtendedConnectionOptions() { + return QuickConversationsService.isConversations() + && getBooleanPreference( + AppSettings.SHOW_CONNECTION_OPTIONS, R.bool.show_connection_options); } public boolean isAcceptInvitesFromStrangers() { diff --git a/src/main/java/eu/siacs/conversations/entities/Account.java b/src/main/java/eu/siacs/conversations/entities/Account.java index 294d27df6088ad77d99edba45f629553f4ad2bcf..ef5e4152d6be0b700ea10b6d4acb743565cfb0e8 100644 --- a/src/main/java/eu/siacs/conversations/entities/Account.java +++ b/src/main/java/eu/siacs/conversations/entities/Account.java @@ -20,6 +20,7 @@ import eu.siacs.conversations.crypto.sasl.HashedTokenSha512; import eu.siacs.conversations.crypto.sasl.SaslMechanism; import eu.siacs.conversations.services.AvatarService; import eu.siacs.conversations.services.XmppConnectionService; +import eu.siacs.conversations.utils.Resolver; import eu.siacs.conversations.utils.UIHelper; import eu.siacs.conversations.utils.XmppUri; import eu.siacs.conversations.xmpp.Jid; @@ -116,7 +117,7 @@ public class Account extends AbstractEntity implements AvatarService.Avatarable null, null, null, - 5222, + Resolver.XMPP_PORT_STARTTLS, Presence.Status.ONLINE, null, null, diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 058e37edc3fef322f8cad31e22aa5cf069c95e27..a27886f5e3851da778eaa84407adf9e77989558e 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -5433,12 +5433,6 @@ public class XmppConnectionService extends Service { && getBooleanPreference("use_tor", R.bool.use_tor); } - public boolean showExtendedConnectionOptions() { - return QuickConversationsService.isConversations() - && getBooleanPreference( - AppSettings.SHOW_CONNECTION_OPTIONS, R.bool.show_connection_options); - } - public boolean broadcastLastActivity() { return getBooleanPreference(AppSettings.BROADCAST_LAST_ACTIVITY, R.bool.last_activity); } diff --git a/src/main/java/eu/siacs/conversations/ui/fragment/settings/ConnectionSettingsFragment.java b/src/main/java/eu/siacs/conversations/ui/fragment/settings/ConnectionSettingsFragment.java index 61843bd93c6e946ee327680a453feb672c57b1e3..ab8caa5c984118b18faf9d3e54f71b1105ca61a1 100644 --- a/src/main/java/eu/siacs/conversations/ui/fragment/settings/ConnectionSettingsFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/fragment/settings/ConnectionSettingsFragment.java @@ -1,17 +1,18 @@ package eu.siacs.conversations.ui.fragment.settings; import android.os.Bundle; +import android.util.Log; import android.widget.Toast; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; - import com.google.common.base.Strings; - import eu.siacs.conversations.AppSettings; import eu.siacs.conversations.Config; import eu.siacs.conversations.R; +import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.services.QuickConversationsService; +import eu.siacs.conversations.utils.Resolver; +import java.util.Arrays; public class ConnectionSettingsFragment extends XmppPreferenceFragment { @@ -59,9 +60,26 @@ public class ConnectionSettingsFragment extends XmppPreferenceFragment { reconnectAccounts(); requireService().reinitializeMuclumbusService(); } - case AppSettings.SHOW_CONNECTION_OPTIONS -> { - reconnectAccounts(); + case AppSettings.SHOW_CONNECTION_OPTIONS -> reconnectAccounts(); + } + if (Arrays.asList(AppSettings.USE_TOR, AppSettings.SHOW_CONNECTION_OPTIONS).contains(key)) { + final var appSettings = new AppSettings(requireContext()); + if (appSettings.isUseTor() || appSettings.isExtendedConnectionOptions()) { + return; } + resetUserDefinedHostname(); + } + } + + private void resetUserDefinedHostname() { + final var service = requireService(); + for (final Account account : service.getAccounts()) { + Log.d( + Config.LOGTAG, + account.getJid().asBareJid() + ": resetting hostname and port to defaults"); + account.setHostname(null); + account.setPort(Resolver.XMPP_PORT_STARTTLS); + service.databaseBackend.updateAccount(account); } } diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 0fbdf57f80c1d88712ddd05f83cc304dc61f9307..654a7e7e8b52e7a975dd9c7da6980a21a10732cc 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -304,8 +304,8 @@ public class XmppConnection implements Runnable { Socket localSocket; shouldAuthenticate = !account.isOptionSet(Account.OPTION_REGISTER); this.changeStatus(Account.State.CONNECTING); - final boolean useTorSetting = mXmppConnectionService.useTorToConnect(); - final boolean extended = mXmppConnectionService.showExtendedConnectionOptions(); + final boolean useTorSetting = appSettings.isUseTor(); + final boolean extended = appSettings.isExtendedConnectionOptions(); final boolean useTor = useTorSetting || account.isOnion(); // TODO collapse Tor usage into normal connection code path if (useTor) { @@ -1885,8 +1885,7 @@ public class XmppConnection implements Runnable { is = null; } } else { - final boolean useTor = - mXmppConnectionService.useTorToConnect() || account.isOnion(); + final boolean useTor = this.appSettings.isUseTor() || account.isOnion(); try { final String url = data.getValue("url"); final String fallbackUrl = data.getValue("captcha-fallback-url");