aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/HOS/Services/Sockets/Sfdnsres/Proxy/DnsBlacklist.cs
blob: 608ea2f51a0114b7e34343eaed1ea3d13341c513 (plain)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
using System.Text.RegularExpressions;

namespace Ryujinx.HLE.HOS.Services.Sockets.Sfdnsres.Proxy
{
    static partial class DnsBlacklist
    {
        const RegexOptions RegexOpts = RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture;

        [GeneratedRegex(@"^(.*)\-lp1\.(n|s)\.n\.srv\.nintendo\.net$", RegexOpts)]
        private static partial Regex BlockedHost1();
        [GeneratedRegex(@"^(.*)\-lp1\.lp1\.t\.npln\.srv\.nintendo\.net$", RegexOpts)]
        private static partial Regex BlockedHost2();
        [GeneratedRegex(@"^(.*)\-lp1\.(znc|p)\.srv\.nintendo\.net$", RegexOpts)]
        private static partial Regex BlockedHost3();
        [GeneratedRegex(@"^(.*)\-sb\-api\.accounts\.nintendo\.com$", RegexOpts)]
        private static partial Regex BlockedHost4();
        [GeneratedRegex(@"^(.*)\-sb\.accounts\.nintendo\.com$", RegexOpts)]
        private static partial Regex BlockedHost5();
        [GeneratedRegex(@"^accounts\.nintendo\.com$", RegexOpts)]
        private static partial Regex BlockedHost6();

        private static readonly Regex[] _blockedHosts = {
            BlockedHost1(),
            BlockedHost2(),
            BlockedHost3(),
            BlockedHost4(),
            BlockedHost5(),
            BlockedHost6(),
        };

        public static bool IsHostBlocked(string host)
        {
            foreach (Regex regex in _blockedHosts)
            {
                if (regex.IsMatch(host))
                {
                    return true;
                }
            }

            return false;
        }
    }
}