summary refs log tree commit diff
path: root/ReferenceClientProxyImplementation/Patches/Implementations/JSPatches/DisableSentryPatch.cs
blob: 7424a322c5b7d6462159094ac116c04937700d33 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System.Text;
using System.Text.RegularExpressions;

namespace ReferenceClientProxyImplementation.Patches.Implementations.JSPatches;

public partial class DisableSentryPatch : IPatch {
    public int GetOrder() => 0;

    public string GetName() => "JS: Disable sentry";
    public bool Applies(string relativeName, byte[] content) => relativeName.StartsWith("assets/sentry.") && relativeName.EndsWith(".js");

    public async Task<byte[]> Execute(string _, byte[] content) {
        var stringContent = Encoding.UTF8.GetString(content);

        stringContent = SentryInitRegex().Replace(stringContent, "window.DiscordSentry = undefined;");
        stringContent = SentryConsoleHookRegex().Replace(
            stringContent,
            m => m.Value.Replace(" &&", " && false &&")
        );

        return Encoding.UTF8.GetBytes(stringContent);
    }
    
    [GeneratedRegex(@"window\.DiscordSentry =", RegexOptions.Compiled)]
    private static partial Regex SentryInitRegex();
    
    // hopefully specific enough?
    [GeneratedRegex(@"function ([a-zA-Z0-9]+)\(\) {\n\s+""console"" in ([a-zA-Z0-9]+) &&\n\s+([a-zA-Z0-9]+)\.forEach\(", RegexOptions.Compiled)]
    private static partial Regex SentryConsoleHookRegex();
    
}