package customlists import ( "strings" "github.com/safing/portbase/config" ) var ( // CfgOptionCustomListBlockingKey is the config key for the listen address.. CfgOptionCustomListBlockingKey = "filter/customListBlocking" cfgOptionCustomListBlockingOrder = 35 cfgOptionCustomListCategoryAnnotation = "Filter Lists" ) var ( getFilePath func() string ) func registerConfig() error { help := strings.ReplaceAll(`Put all domains, Ip addresses, country codes and autonomous system that you want to block in a file in which each entry is on a new line. Lines that start with a '#' symbol are ignored. Everything after the first space/tab is ignored. Example: """ # Domains: example.com google.com # IP addresses 1.2.3.4 4.3.2.1 # Countries AU BG # Autonomous Systems AS123 """ > * All the records are stored in RAM, careful with large block lists. > * Hosts files are not supported.`, "\"", "`") // register a setting for the file path in the ui err := config.Register(&config.Option{ Name: "Custom Filter List", Key: CfgOptionCustomListBlockingKey, Description: "Path to the file that contains a list of Domain, IP addresses, country codes and autonomous systems that you want to block", Help: help, OptType: config.OptTypeString, ExpertiseLevel: config.ExpertiseLevelExpert, ReleaseLevel: config.ReleaseLevelStable, DefaultValue: "", RequiresRestart: false, Annotations: config.Annotations{ config.DisplayOrderAnnotation: cfgOptionCustomListBlockingOrder, config.CategoryAnnotation: cfgOptionCustomListCategoryAnnotation, }, }) if err != nil { return err } getFilePath = config.GetAsString(CfgOptionCustomListBlockingKey, "") return nil }