mirror of
https://github.com/M66B/FairEmail.git
synced 2026-01-06 12:54:11 +01:00
Added setting to prefer IPv4 addresses
This commit is contained in:
@@ -103,7 +103,7 @@ public class ApplicationEx extends Application {
|
||||
if (Helper.hasWebView(this))
|
||||
CookieManager.getInstance().setAcceptCookie(false);
|
||||
|
||||
MessageHelper.setSystemProperties();
|
||||
MessageHelper.setSystemProperties(this);
|
||||
ContactInfo.init(this);
|
||||
|
||||
try {
|
||||
|
||||
@@ -55,6 +55,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
||||
private SwitchCompat swDoubleBack;
|
||||
private SwitchCompat swEnglish;
|
||||
private SwitchCompat swWatchdog;
|
||||
private SwitchCompat swPreferIp4;
|
||||
private SwitchCompat swUpdates;
|
||||
private SwitchCompat swCrashReports;
|
||||
private SwitchCompat swDebug;
|
||||
@@ -68,7 +69,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
||||
private Group grpDebug;
|
||||
|
||||
private final static String[] RESET_OPTIONS = new String[]{
|
||||
"badge", "subscriptions", "subscribed_only", "biometrics_timeout", "double_back", "english", "watchdog", "updates", "crash_reports", "debug"
|
||||
"badge", "subscriptions", "subscribed_only", "biometrics_timeout", "double_back", "english", "watchdog", "prefer_ip4", "updates", "crash_reports", "debug"
|
||||
};
|
||||
|
||||
private final static String[] RESET_QUESTIONS = new String[]{
|
||||
@@ -93,6 +94,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
||||
swDoubleBack = view.findViewById(R.id.swDoubleBack);
|
||||
swEnglish = view.findViewById(R.id.swEnglish);
|
||||
swWatchdog = view.findViewById(R.id.swWatchdog);
|
||||
swPreferIp4 = view.findViewById(R.id.swPreferIp4);
|
||||
swUpdates = view.findViewById(R.id.swUpdates);
|
||||
swCrashReports = view.findViewById(R.id.swCrashReports);
|
||||
swDebug = view.findViewById(R.id.swDebug);
|
||||
@@ -172,6 +174,15 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
||||
}
|
||||
});
|
||||
|
||||
swPreferIp4.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
|
||||
prefs.edit().putBoolean("prefer_ip4", checked).apply();
|
||||
System.setProperty("java.net.preferIPv4Stack", Boolean.toString(checked));
|
||||
ServiceSynchronize.reload(getContext(), "prefer_ip4=" + checked);
|
||||
}
|
||||
});
|
||||
|
||||
swUpdates.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
|
||||
@@ -310,6 +321,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
||||
swDoubleBack.setChecked(prefs.getBoolean("double_back", true));
|
||||
swEnglish.setChecked(prefs.getBoolean("english", false));
|
||||
swWatchdog.setChecked(prefs.getBoolean("watchdog", true));
|
||||
swPreferIp4.setChecked(prefs.getBoolean("prefer_ip4", false));
|
||||
swUpdates.setChecked(prefs.getBoolean("updates", true));
|
||||
swUpdates.setVisibility(Helper.isPlayStoreInstall(getContext()) ? View.GONE : View.VISIBLE);
|
||||
swCrashReports.setChecked(prefs.getBoolean("crash_reports", false));
|
||||
|
||||
@@ -20,10 +20,13 @@ package eu.faircode.email;
|
||||
*/
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.net.MailTo;
|
||||
import android.text.TextUtils;
|
||||
import android.webkit.MimeTypeMap;
|
||||
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
import com.sun.mail.util.FolderClosedIOException;
|
||||
import com.sun.mail.util.MessageRemovedIOException;
|
||||
|
||||
@@ -86,7 +89,7 @@ public class MessageHelper {
|
||||
|
||||
static final int DEFAULT_ATTACHMENT_DOWNLOAD_SIZE = 256 * 1024; // bytes
|
||||
|
||||
static void setSystemProperties() {
|
||||
static void setSystemProperties(Context context) {
|
||||
System.setProperty("mail.mime.decodetext.strict", "false");
|
||||
|
||||
System.setProperty("mail.mime.ignoreunknownencoding", "true"); // Content-Transfer-Encoding
|
||||
@@ -99,6 +102,12 @@ public class MessageHelper {
|
||||
// https://docs.oracle.com/javaee/6/api/javax/mail/internet/MimeMultipart.html
|
||||
System.setProperty("mail.mime.multipart.ignoremissingboundaryparameter", "true"); // javax.mail.internet.ParseException: In parameter list
|
||||
System.setProperty("mail.mime.multipart.ignoreexistingboundaryparameter", "true");
|
||||
|
||||
// https://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
boolean prefer_ip4 = prefs.getBoolean("prefer_ip4", false);
|
||||
Log.i("Prefer ip4=" + prefer_ip4);
|
||||
System.setProperty("java.net.preferIPv4Stack", Boolean.toString(prefer_ip4));
|
||||
}
|
||||
|
||||
static Properties getSessionProperties(String realm, boolean insecure) {
|
||||
@@ -194,11 +203,6 @@ public class MessageHelper {
|
||||
props.put("mail.mime.allowutf8", "false"); // SMTPTransport, MimeMessage
|
||||
props.put("mail.mime.address.strict", "false");
|
||||
|
||||
if (false) {
|
||||
Log.i("Prefering IPv4");
|
||||
System.setProperty("java.net.preferIPv4Stack", "true");
|
||||
}
|
||||
|
||||
return props;
|
||||
}
|
||||
|
||||
|
||||
@@ -158,6 +158,29 @@
|
||||
app:layout_constraintTop_toBottomOf="@id/tvEnglishHint"
|
||||
app:switchPadding="12dp" />
|
||||
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
android:id="@+id/swPreferIp4"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:text="@string/title_advanced_prefer_ip4"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/swWatchdog"
|
||||
app:switchPadding="12dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvPreferIp4Hint"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="48dp"
|
||||
android:text="@string/title_advanced_prefer_ip4_hint"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||
android:textStyle="italic"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/swPreferIp4" />
|
||||
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
android:id="@+id/swUpdates"
|
||||
android:layout_width="0dp"
|
||||
@@ -167,7 +190,7 @@
|
||||
android:text="@string/title_advanced_updates"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/swWatchdog"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvPreferIp4Hint"
|
||||
app:switchPadding="12dp" />
|
||||
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
|
||||
@@ -260,6 +260,7 @@
|
||||
<string name="title_advanced_double_back">Double \'back\' to exit</string>
|
||||
<string name="title_advanced_english">Force English language</string>
|
||||
<string name="title_advanced_watchdog">Periodically check if FairEmail is still active</string>
|
||||
<string name="title_advanced_prefer_ip4">Prefer IPv4 addresses</string>
|
||||
<string name="title_advanced_updates">Check for updates</string>
|
||||
<string name="title_advanced_crash_reports">Send error reports</string>
|
||||
<string name="title_advanced_debug">Debug mode</string>
|
||||
@@ -300,6 +301,7 @@
|
||||
<string name="title_advanced_badge_hint">Only available on supported launchers</string>
|
||||
<string name="title_advanced_subscribed_only_hint">Enabling this will delete all local folders without subscription</string>
|
||||
<string name="title_advanced_english_hint">This will restart the app</string>
|
||||
<string name="title_advanced_prefer_ip4_hint">Enable this only if IPv6 connectivity does not work properly</string>
|
||||
<string name="title_advanced_debug_hint">Enable extra logging and show debug information at various places</string>
|
||||
<string name="title_advanced_cleanup_hint">This will delete all temporary files</string>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user