Prepare for Andoridacy collaboration, remove deep link integration.

pull/42/head
Fox2Code 2 years ago
parent ceee285db9
commit 4af20bbedf

@ -55,28 +55,6 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".deeplink.DeepLinkActivity"
android:exported="true"
android:label="@string/app_name_short"
android:permission="android.permission.INTERNET">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="mmm.fox2code.com"
android:scheme="https" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="${applicationId}"
android:scheme="app" />
</intent-filter>
</activity>
<activity
android:name=".installer.InstallerActivity"
android:parentActivityName=".MainActivity"

@ -1,53 +0,0 @@
package com.fox2code.mmm.deeplink;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.Nullable;
import com.fox2code.mmm.BuildConfig;
import com.fox2code.mmm.MainActivity;
import com.fox2code.mmm.compat.CompatActivity;
import com.fox2code.mmm.settings.SettingsActivity;
/**
* Note: Code must be under high security standard, as any website can do a request to this
*/
public class DeepLinkActivity extends CompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = this.getIntent();
if (intent == null) {
this.forceBackPressed();
return;
}
Uri uri = intent.getData();
String path;
if (uri == null || (path = uri.getPath()) == null || uri.getHost() == null ||
!uri.getHost().equals("https".equals(uri.getScheme()) ?
"mmm.fox2code.com" : BuildConfig.APPLICATION_ID)) {
this.forceBackPressed();
return;
}
while (path.startsWith("/"))
path = path.substring(1);
if (path.isEmpty() || path.equals("home")) {
this.startActivity(MainActivity.class);
return;
}
if (path.equals("settings")) {
this.startActivity(SettingsActivity.class);
return;
}
this.forceBackPressed();
}
private void startActivity(Class<? extends Activity> activity) {
this.startActivityForResult(new Intent(this, activity).addFlags(
Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK),
(resultCode, data) -> this.forceBackPressed());
}
}

@ -3,6 +3,9 @@ package com.fox2code.mmm.utils;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Build;
import android.system.ErrnoException;
import android.system.Os;
import android.util.Log;
import androidx.annotation.NonNull;
@ -49,6 +52,20 @@ public class Http {
private static final FallBackDNS fallbackDNS;
static {
MainApplication mainApplication = MainApplication.getINSTANCE();
if (mainApplication == null) {
Error error = new Error("Initialized Http too soon!");
error.fillInStackTrace();
Log.e(TAG, "Initialized Http too soon!", error);
System.out.flush();
System.err.flush();
try {
Os.kill(Os.getpid(), 9);
} catch (ErrnoException e) {
System.exit(9);
}
throw error;
}
OkHttpClient.Builder httpclientBuilder = new OkHttpClient.Builder();
// Default is 10, extend it a bit for slow mobile connections.
httpclientBuilder.connectTimeout(15, TimeUnit.SECONDS);
@ -84,9 +101,15 @@ public class Http {
Log.e(TAG, "Failed to init DoH", e);
}
httpclientBuilder.cookieJar(CookieJar.NO_COOKIES);
final String androidacyUA = // User-Agent format was agreed on telegram
"Mozilla/5.0 (Linux; Android " + Build.VERSION.RELEASE + "; " + Build.DEVICE +")" +
" AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Mobile Safari/537.36"
+ " FoxMmm/" + BuildConfig.VERSION_CODE;
httpclientBuilder.addInterceptor(chain -> {
Request.Builder request = chain.request().newBuilder();
if (InstallerInitializer.peekMagiskPath() != null) {
if (chain.request().url().host().endsWith(".androidacy.com")) {
request.header("User-Agent", androidacyUA);
} else if (InstallerInitializer.peekMagiskPath() != null) {
request.header("User-Agent", // Declare Magisk version to the server
"Magisk/" + InstallerInitializer.peekMagiskVersion());
}
@ -96,27 +119,19 @@ public class Http {
}
return chain.proceed(request.build());
});
MainApplication mainApplication = MainApplication.getINSTANCE();
if (mainApplication != null) {
// Fallback DNS cache responses in case request fail but already succeeded once in the past
httpclientBuilder.dns(fallbackDNS = new FallBackDNS(mainApplication, dns,
"github.com", "api.github.com", "raw.githubusercontent.com",
"camo.githubusercontent.com", "user-images.githubusercontent.com",
"cdn.jsdelivr.net", "img.shields.io", "magisk-modules-repo.github.io",
"www.androidacy.com", "api.androidacy.com"));
httpClient = httpclientBuilder.build();
httpclientBuilder.cache(new Cache(
new File(mainApplication.getCacheDir(), "http_cache"),
16L * 1024L * 1024L)); // 16Mib of cache
httpclientBuilder.cookieJar(new CDNCookieJar());
httpClientWithCache = httpclientBuilder.build();
Log.i(TAG, "Initialized Http successfully!");
} else {
fallbackDNS = null;
httpclientBuilder.dns(dns);
httpClientWithCache = httpClient = httpclientBuilder.build();
Log.e(TAG, "Initialized Http too soon!");
}
// Fallback DNS cache responses in case request fail but already succeeded once in the past
httpclientBuilder.dns(fallbackDNS = new FallBackDNS(mainApplication, dns,
"github.com", "api.github.com", "raw.githubusercontent.com",
"camo.githubusercontent.com", "user-images.githubusercontent.com",
"cdn.jsdelivr.net", "img.shields.io", "magisk-modules-repo.github.io",
"www.androidacy.com", "api.androidacy.com"));
httpClient = httpclientBuilder.build();
httpclientBuilder.cache(new Cache(
new File(mainApplication.getCacheDir(), "http_cache"),
16L * 1024L * 1024L)); // 16Mib of cache
httpclientBuilder.cookieJar(new CDNCookieJar());
httpClientWithCache = httpclientBuilder.build();
Log.i(TAG, "Initialized Http successfully!");
}
public static OkHttpClient getHttpClient() {

@ -18,16 +18,21 @@
<string name="install_module">Install module</string>
<string name="update_module">Update module</string>
<string name="changelog">Changelog</string>
<string name="website">Website</string>
<string name="support">Support</string>
<string name="donate">Donate</string>
<string name="submit_modules">Submit a module</string>
<!-- Module section translation -->
<string name="module_last_update">Last update:</string>
<string name="module_repo">Repo:</string>
<string name="module_by">by</string>
<string name="module_downloads">Downloads:</string>
<string name="module_stars">Stars:</string>
<!-- Preference Titles -->
<!-- Note: Lockdown mode used to be called showcase mode -->
<string name="manage_repos_pref">Manage repos</string>
<string name="showcase_mode_pref">Lockdown mode</string>
<string name="showcase_mode_desc">Lockdown mode prevent manager to do action on modules</string>
<string name="pref_category_settings">Settings</string>

Loading…
Cancel
Save