tangled
alpha
login
or
join now
tjh.dev
/
nixpkgs
Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
0
fork
atom
overview
issues
pulls
pipelines
sing-geosite: add rule-set
linsui
2 years ago
d25514ad
11273b60
+34
2 changed files
expand all
collapse all
unified
split
pkgs
data
misc
sing-geosite
default.nix
main.go
+1
pkgs/data/misc/sing-geosite/default.nix
···
38
38
installPhase = ''
39
39
runHook preInstall
40
40
install -Dm644 geosite.db $out/share/sing-box/geosite.db
41
41
+
install -Dm644 rule-set/* -t $out/share/sing-box/rule-set
41
42
runHook postInstall
42
43
'';
43
44
+33
pkgs/data/misc/sing-geosite/main.go
···
16
16
if err != nil {
17
17
panic(err)
18
18
}
19
19
+
20
20
+
ruleSetOutput := "rule-set"
21
21
+
err = os.MkdirAll(ruleSetOutput, 0o755)
22
22
+
if err != nil {
23
23
+
panic(err)
24
24
+
}
25
25
+
for code, domains := range domainMap {
26
26
+
var headlessRule option.DefaultHeadlessRule
27
27
+
defaultRule := geosite.Compile(domains)
28
28
+
headlessRule.Domain = defaultRule.Domain
29
29
+
headlessRule.DomainSuffix = defaultRule.DomainSuffix
30
30
+
headlessRule.DomainKeyword = defaultRule.DomainKeyword
31
31
+
headlessRule.DomainRegex = defaultRule.DomainRegex
32
32
+
var plainRuleSet option.PlainRuleSet
33
33
+
plainRuleSet.Rules = []option.HeadlessRule{
34
34
+
{
35
35
+
Type: C.RuleTypeDefault,
36
36
+
DefaultOptions: headlessRule,
37
37
+
},
38
38
+
}
39
39
+
srsPath, _ := filepath.Abs(filepath.Join(ruleSetOutput, "geosite-"+code+".srs"))
40
40
+
os.Stderr.WriteString("write " + srsPath + "\n")
41
41
+
outputRuleSet, err := os.Create(srsPath)
42
42
+
if err != nil {
43
43
+
panic(err)
44
44
+
}
45
45
+
err = srs.Write(outputRuleSet, plainRuleSet)
46
46
+
if err != nil {
47
47
+
outputRuleSet.Close()
48
48
+
panic(err)
49
49
+
}
50
50
+
outputRuleSet.Close()
51
51
+
}
19
52
}