aboutsummaryrefslogtreecommitdiff
path: root/tools/Crupest.V2ray/Crupest.V2ray/V2rayRoutingRule.cs
blob: 1928de0b95091dcae1a9f6b29efc95868dff02a9 (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
namespace Crupest.V2ray;

public record V2rayRoutingRule(V2rayRoutingRuleMatcher Matcher, string OutboundTag)
{
    public static Dictionary<string, List<V2rayRoutingRule>> GroupByOutboundTag(List<V2rayRoutingRule> rules)
    {
        var result = new Dictionary<string, List<V2rayRoutingRule>>();
        foreach (var group in rules.GroupBy(r => r.OutboundTag))
        {
            result[group.Key] = group.ToList();
        }
        return result;
    }

    public static Dictionary<V2rayRoutingRuleMatcher.MatchByKind, List<V2rayRoutingRule>> GroupByMatchByKind(List<V2rayRoutingRule> rules)
    {
        var result = new Dictionary<V2rayRoutingRuleMatcher.MatchByKind, List<V2rayRoutingRule>>();
        foreach (var group in rules.GroupBy(r => r.Matcher.MatchBy))
        {
            result[group.Key] = group.ToList();
        }
        return result;
    }

    public static Dictionary<V2rayRoutingRuleMatcher.V5MatchByKind, List<V2rayRoutingRule>> V5GroupByMatchByKind(List<V2rayRoutingRule> rules)
    {
        var result = new Dictionary<V2rayRoutingRuleMatcher.V5MatchByKind, List<V2rayRoutingRule>>();
        foreach (var group in rules.GroupBy(r => r.Matcher.V5MatchBy))
        {
            result[group.Key] = group.ToList();
        }
        return result;
    }
}