Skip to content
This repository has been archived by the owner on Oct 26, 2024. It is now read-only.

Commit

Permalink
chore: Merge branch dev to main (#676)
Browse files Browse the repository at this point in the history
  • Loading branch information
oSumAtrIX authored Aug 15, 2024
2 parents c8d381d + 95bb8a7 commit 71233ef
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 1 deletion.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
# [1.13.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.12.0...v1.13.0-dev.1) (2024-08-15)


### Features

* **YouTube:** Add `Check watch history domain name resolution` patch ([#675](https://github.com/ReVanced/revanced-integrations/issues/675)) ([57d6834](https://github.com/ReVanced/revanced-integrations/commit/57d6834a2ce1893d8eea16346cc854beef065a33))

# [1.12.0](https://github.com/ReVanced/revanced-integrations/compare/v1.11.1...v1.12.0) (2024-08-06)


Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package app.revanced.integrations.youtube.patches;

import static app.revanced.integrations.shared.StringRef.str;

import android.app.Activity;
import android.text.Html;

import java.net.InetAddress;
import java.net.UnknownHostException;

import app.revanced.integrations.shared.Logger;
import app.revanced.integrations.shared.Utils;
import app.revanced.integrations.youtube.settings.Settings;

@SuppressWarnings("unused")
public class CheckWatchHistoryDomainNameResolutionPatch {

private static final String HISTORY_TRACKING_ENDPOINT = "s.youtube.com";

private static final String SINKHOLE_IPV4 = "0.0.0.0";
private static final String SINKHOLE_IPV6 = "::";

/** @noinspection SameParameterValue */
private static boolean domainResolvesToValidIP(String host) {
try {
InetAddress address = InetAddress.getByName(host);
String hostAddress = address.getHostAddress();

if (address.isLoopbackAddress()) {
Logger.printDebug(() -> host + " resolves to localhost");
} else if (SINKHOLE_IPV4.equals(hostAddress) || SINKHOLE_IPV6.equals(hostAddress)) {
Logger.printDebug(() -> host + " resolves to sinkhole ip");
} else {
return true; // Domain is not blocked.
}
} catch (UnknownHostException e) {
Logger.printDebug(() -> host + " failed to resolve");
}

return false;
}

/**
* Injection point.
*
* Checks if s.youtube.com is blacklisted and playback history will fail to work.
*/
public static void checkDnsResolver(Activity context) {
if (!Utils.isNetworkConnected() || !Settings.CHECK_WATCH_HISTORY_DOMAIN_NAME.get()) return;

Utils.runOnBackgroundThread(() -> {
try {
if (domainResolvesToValidIP(HISTORY_TRACKING_ENDPOINT)) {
return;
}

Utils.runOnMainThread(() -> {
var alertDialog = new android.app.AlertDialog.Builder(context)
.setTitle(str("revanced_check_watch_history_domain_name_dialog_title"))
.setMessage(Html.fromHtml(str("revanced_check_watch_history_domain_name_dialog_message")))
.setIconAttribute(android.R.attr.alertDialogIcon)
.setPositiveButton(android.R.string.ok, (dialog, which) -> {
dialog.dismiss();
}).setNegativeButton(str("revanced_check_watch_history_domain_name_dialog_ignore"), (dialog, which) -> {
Settings.CHECK_WATCH_HISTORY_DOMAIN_NAME.save(false);
dialog.dismiss();
})
.setCancelable(false)
.show();
});
} catch (Exception ex) {
Logger.printException(() -> "checkDnsResolver failure", ex);
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,7 @@ public class Settings extends BaseSettings {
@Deprecated
public static final StringSetting DEPRECATED_ANNOUNCEMENT_LAST_HASH = new StringSetting("revanced_announcement_last_hash", "");
public static final IntegerSetting ANNOUNCEMENT_LAST_ID = new IntegerSetting("revanced_announcement_last_id", -1);
public static final BooleanSetting CHECK_WATCH_HISTORY_DOMAIN_NAME = new BooleanSetting("revanced_check_watch_history_domain_name", TRUE, false, false);
public static final BooleanSetting REMOVE_TRACKING_QUERY_PARAMETER = new BooleanSetting("revanced_remove_tracking_query_parameter", TRUE);

// Debugging
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
android.useAndroidX = true
version = 1.12.0
version = 1.13.0-dev.1

0 comments on commit 71233ef

Please sign in to comment.