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
installPhase = ''
39
runHook preInstall
40
install -Dm644 geosite.db $out/share/sing-box/geosite.db
0
41
runHook postInstall
42
'';
43
···
38
installPhase = ''
39
runHook preInstall
40
install -Dm644 geosite.db $out/share/sing-box/geosite.db
41
+
install -Dm644 rule-set/* -t $out/share/sing-box/rule-set
42
runHook postInstall
43
'';
44
+33
pkgs/data/misc/sing-geosite/main.go
···
16
if err != nil {
17
panic(err)
18
}
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
19
}
···
16
if err != nil {
17
panic(err)
18
}
19
+
20
+
ruleSetOutput := "rule-set"
21
+
err = os.MkdirAll(ruleSetOutput, 0o755)
22
+
if err != nil {
23
+
panic(err)
24
+
}
25
+
for code, domains := range domainMap {
26
+
var headlessRule option.DefaultHeadlessRule
27
+
defaultRule := geosite.Compile(domains)
28
+
headlessRule.Domain = defaultRule.Domain
29
+
headlessRule.DomainSuffix = defaultRule.DomainSuffix
30
+
headlessRule.DomainKeyword = defaultRule.DomainKeyword
31
+
headlessRule.DomainRegex = defaultRule.DomainRegex
32
+
var plainRuleSet option.PlainRuleSet
33
+
plainRuleSet.Rules = []option.HeadlessRule{
34
+
{
35
+
Type: C.RuleTypeDefault,
36
+
DefaultOptions: headlessRule,
37
+
},
38
+
}
39
+
srsPath, _ := filepath.Abs(filepath.Join(ruleSetOutput, "geosite-"+code+".srs"))
40
+
os.Stderr.WriteString("write " + srsPath + "\n")
41
+
outputRuleSet, err := os.Create(srsPath)
42
+
if err != nil {
43
+
panic(err)
44
+
}
45
+
err = srs.Write(outputRuleSet, plainRuleSet)
46
+
if err != nil {
47
+
outputRuleSet.Close()
48
+
panic(err)
49
+
}
50
+
outputRuleSet.Close()
51
+
}
52
}