X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2FApp.java;h=920187e9fb54d98b69e0766ff097031ae0b53c7a;hb=34ab3549cf6cbd1e9db2da1707b5932514f5e3a7;hp=051a17c308540ac2b15dc2cd15e997207361b746;hpb=90383a155ec16a9f13b1e6ac94a118033e09b3aa;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/App.java b/app/src/main/java/net/ktnx/mobileledger/App.java index 051a17c3..920187e9 100644 --- a/app/src/main/java/net/ktnx/mobileledger/App.java +++ b/app/src/main/java/net/ktnx/mobileledger/App.java @@ -23,18 +23,32 @@ 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 { public static App instance; private MobileLedgerDatabase dbHelper; + public static SQLiteDatabase getDatabase() { + if (instance == null) throw new RuntimeException("Application not created yet"); + + return instance.getDB(); + } @Override public void onCreate() { + Logger.debug("flow", "App onCreate()"); instance = this; super.onCreate(); updateMonthNames(); @@ -44,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(); @@ -51,6 +89,7 @@ public class App extends Application { } @Override public void onTerminate() { + Logger.debug("flow", "App onTerminate()"); if (dbHelper != null) dbHelper.close(); super.onTerminate(); } @@ -59,11 +98,6 @@ public class App extends Application { super.onConfigurationChanged(newConfig); updateMonthNames(); } - public static SQLiteDatabase getDatabase() { - if (instance == null) throw new RuntimeException("Application not created yet"); - - return instance.getDB(); - } public SQLiteDatabase getDB() { if (dbHelper == null) initDb();