Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)

sing-geosite: add rule-set

linsui d25514ad 11273b60

+34
+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 + 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 + 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 + } 19 52 }