X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2FApp.java;h=920187e9fb54d98b69e0766ff097031ae0b53c7a;hp=b6ae697f355409d9b1256b05b57174427d4b598b;hb=34ab3549cf6cbd1e9db2da1707b5932514f5e3a7;hpb=76522e26b306350d61f2358f2f993fddfb30d76d diff --git a/app/src/main/java/net/ktnx/mobileledger/App.java b/app/src/main/java/net/ktnx/mobileledger/App.java index b6ae697f..920187e9 100644 --- a/app/src/main/java/net/ktnx/mobileledger/App.java +++ b/app/src/main/java/net/ktnx/mobileledger/App.java @@ -23,12 +23,19 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.database.sqlite.SQLiteDatabase; import android.preference.PreferenceManager; +import android.util.Log; import net.ktnx.mobileledger.model.Data; +import net.ktnx.mobileledger.model.MobileLedgerProfile; import net.ktnx.mobileledger.utils.Globals; import net.ktnx.mobileledger.utils.Logger; import net.ktnx.mobileledger.utils.MobileLedgerDatabase; +import java.net.Authenticator; +import java.net.MalformedURLException; +import java.net.PasswordAuthentication; +import java.net.URL; + import static net.ktnx.mobileledger.ui.activity.SettingsActivity.PREF_KEY_SHOW_ONLY_STARRED_ACCOUNTS; public class App extends Application { @@ -51,6 +58,30 @@ public class App extends Application { (preference, value) -> Data.optShowOnlyStarred .set(preference.getBoolean(PREF_KEY_SHOW_ONLY_STARRED_ACCOUNTS, false)); p.registerOnSharedPreferenceChangeListener(handler); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + MobileLedgerProfile p = Data.profile.getValue(); + if ((p != null) && p.isAuthEnabled()) { + try { + final URL url = new URL(p.getUrl()); + final String requestingHost = getRequestingHost(); + final String expectedHost = url.getHost(); + if (requestingHost.equalsIgnoreCase(expectedHost)) + return new PasswordAuthentication(p.getAuthUserName(), + p.getAuthPassword().toCharArray()); + else Log.w("http-auth", + String.format("Requesting host [%s] differs from expected [%s]", + requestingHost, expectedHost)); + } + catch (MalformedURLException e) { + e.printStackTrace(); + } + } + + return super.getPasswordAuthentication(); + } + }); } private void updateMonthNames() { Resources rm = getResources();