Skip to content
Permalink
Browse files
Allow geoip files to passed in as arguments
Paths to geoip files can now be passed in as arguments.
These values will default to /usr/share/tor/geoip(6), which is where the
Debian tor-geoip package installs database files
  • Loading branch information
cohosh committed Mar 15, 2019
1 parent dcf7fde commit fbb87b508641bbbcfd3163d1f2a43b9aff4e0085
Showing with 14 additions and 5 deletions.
  1. +6 −0 broker/broker.go
  2. +8 −5 broker/metrics.go
@@ -230,18 +230,24 @@ func main() {
var acmeEmail string
var acmeHostnamesCommas string
var addr string
var geoipDatabase string
var geoip6Database string
var disableTLS bool

flag.StringVar(&acmeEmail, "acme-email", "", "optional contact email for Let's Encrypt notifications")
flag.StringVar(&acmeHostnamesCommas, "acme-hostnames", "", "comma-separated hostnames for TLS certificate")
flag.StringVar(&addr, "addr", ":443", "address to listen on")
flag.StringVar(&geoipDatabase, "geoipdb", "/usr/share/tor/geoip", "path to correctly formatted geoip database mapping IPv4 address ranges to country codes")
flag.StringVar(&geoip6Database, "geoip6db", "/usr/share/tor/geoip6", "path to correctly formatted geoip database mapping IPv6 address ranges to country codes")
flag.BoolVar(&disableTLS, "disable-tls", false, "don't use HTTPS")
flag.Parse()

log.SetFlags(log.LstdFlags | log.LUTC)

ctx := NewBrokerContext()

ctx.metrics.LoadGeoipDatabases(geoipDatabase, geoip6Database)

go ctx.Broker()

http.HandleFunc("/robots.txt", robotsTxtHandler)
@@ -47,13 +47,12 @@ func (m Metrics) UpdateCountryStats(addr string) {

}

func NewMetrics() *Metrics {
m := new(Metrics)
func (m Metrics) LoadGeoipDatabases(geoipDB string, geoip6DB string) {

// Load geoip databases
log.Println("Loading geoip databases")
tablev4 := new(GeoIPv4Table)
err := GeoIPLoadFile(tablev4, "./geoip")
err := GeoIPLoadFile(tablev4, geoipDB)
if err != nil {
m.tablev4 = nil
log.Println("Failed to load geoip database ")
@@ -62,13 +61,17 @@ func NewMetrics() *Metrics {
}

tablev6 := new(GeoIPv6Table)
err = GeoIPLoadFile(tablev6, "./geoip6")
err = GeoIPLoadFile(tablev6, geoip6DB)
if err != nil {
m.tablev6 = nil
log.Println("Failed to load geoip database ")
log.Println("Failed to load geoip6 database ")
} else {
m.tablev6 = tablev6
}
}

func NewMetrics() *Metrics {
m := new(Metrics)

m.countryStats = CountryStats{
counts: make(map[string]int),

0 comments on commit fbb87b5

Please sign in to comment.