5 ruleSetOutput
:= "rule-set"
7 binary
, err
:= os
.ReadFile(input
)
11 metadata
, countryMap
, err
:= parse(binary
)
15 allCodes
:= make([]string, 0, len(countryMap
))
16 for code
:= range countryMap
{
17 allCodes
= append(allCodes
, code
)
20 writer
, err
:= newWriter(metadata
, allCodes
)
24 err
= write(writer
, countryMap
, "geoip.db", nil)
29 writer
, err
= newWriter(metadata
, []string{"cn"})
33 err
= write(writer
, countryMap
, "geoip-cn.db", []string{"cn"})
38 err
= os
.MkdirAll(ruleSetOutput
, 0o755
)
42 for countryCode
, ipNets
:= range countryMap
{
43 var headlessRule option
.DefaultHeadlessRule
44 headlessRule
.IPCIDR
= make([]string, 0, len(ipNets
))
45 for _
, cidr
:= range ipNets
{
46 headlessRule
.IPCIDR
= append(headlessRule
.IPCIDR
, cidr
.String())
48 var plainRuleSet option
.PlainRuleSet
49 plainRuleSet
.Rules
= []option
.HeadlessRule
{
51 Type
: C
.RuleTypeDefault
,
52 DefaultOptions
: headlessRule
,
55 srsPath
, _
:= filepath
.Abs(filepath
.Join(ruleSetOutput
, "geoip-"+countryCode
+".srs"))
56 os
.Stderr
.WriteString("write " + srsPath
+ "\n")
57 outputRuleSet
, err
:= os
.Create(srsPath
)
61 err
= srs
.Write(outputRuleSet
, plainRuleSet
)