diff --git a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyActivity.java b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyActivity.java index ca09b1b..778f411 100644 --- a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyActivity.java +++ b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyActivity.java @@ -36,7 +36,6 @@ import com.fox2code.mmm.utils.IntentHelper; */ public class AndroidacyActivity extends CompatActivity { private static final String TAG = "AndroidacyActivity"; - private static final String REFERRER = "utm_source=FoxMMM&utm_medium=app"; static { if (BuildConfig.DEBUG) { @@ -71,12 +70,11 @@ public class AndroidacyActivity extends CompatActivity { this.forceBackPressed(); return; } - if (!url.endsWith(REFERRER) && (url.startsWith("https://www.androidacy.com/") || - url.startsWith("https://api.androidacy.com/magisk/"))) { + if (!url.endsWith(AndroidacyUtil.REFERRER)) { if (url.lastIndexOf('/') < url.lastIndexOf('?')) { - url = url + '&' + REFERRER; + url = url + '&' + AndroidacyUtil.REFERRER; } else { - url = url + '?' + REFERRER; + url = url + '?' + AndroidacyUtil.REFERRER; } } boolean allowInstall = intent.getBooleanExtra( diff --git a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyRepoData.java b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyRepoData.java index a87c4ee..c8a8490 100644 --- a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyRepoData.java +++ b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyRepoData.java @@ -74,7 +74,7 @@ public class AndroidacyRepoData extends RepoData { if (this.androidacyBlockade > time) return false; this.androidacyBlockade = time + 30_000L; String cookies = AndroidacyRepoData.getCookies(); - int start = cookies == null ? -1 : cookies.indexOf("USER="); + int start = cookies == null ? -1 : cookies.indexOf("USER=") + 5; String token = null; if (start != -1) { int end = cookies.indexOf(";", start); @@ -184,6 +184,8 @@ public class AndroidacyRepoData extends RepoData { repoModule.notesUrl = // Fallback url in case the API doesn't have notesUrl "https://api.androidacy.com/magisk/readme/?module=" + moduleId; } + repoModule.zipUrl = this.injectToken(repoModule.zipUrl); + repoModule.notesUrl = this.injectToken(repoModule.notesUrl); repoModule.qualityText = R.string.module_downloads; repoModule.qualityValue = jsonObject.optInt("downloads", 0); String checksum = jsonObject.optString("checksum", ""); @@ -211,6 +213,7 @@ public class AndroidacyRepoData extends RepoData { moduleInfo.minMagisk = 0; } moduleInfo.needRamdisk = jsonObject.optBoolean("needRamdisk", false); + moduleInfo.changeBoot = jsonObject.optBoolean("changeBoot", false); moduleInfo.support = filterURL(jsonObject.optString("support")); moduleInfo.donate = filterURL(jsonObject.optString("donate")); String config = jsonObject.optString("config", ""); @@ -258,4 +261,19 @@ public class AndroidacyRepoData extends RepoData { return this.token == null ? this.url : this.url + "?token=" + this.token; } + + private String injectToken(String url) { + // Do not inject token for non Androidacy urls + if (!AndroidacyUtil.isAndroidacyLink(url)) + return url; + String token = "token=" + this.token; + if (!url.contains(token)) { + if (url.lastIndexOf('/') < url.lastIndexOf('?')) { + return url + '&' + token; + } else { + return url + '?' + token; + } + } + return url; + } } diff --git a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyUtil.java b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyUtil.java index 7dc72ce..29ba8ab 100644 --- a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyUtil.java +++ b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyUtil.java @@ -6,6 +6,8 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; public class AndroidacyUtil { + public static final String REFERRER = "utm_source=FoxMMM&utm_medium=app"; + public static boolean isAndroidacyLink(@Nullable Uri uri) { return uri != null && isAndroidacyLink(uri.toString(), uri); }