38 lines
855 B
Go
38 lines
855 B
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"path/filepath"
|
|
)
|
|
|
|
func main() {
|
|
cfgPath := flag.String("c", "nutils.toml", "config file path")
|
|
flag.Parse()
|
|
|
|
cfg, err := LoadConfig(*cfgPath)
|
|
if err != nil {
|
|
log.Fatalf("config: %v", err)
|
|
}
|
|
|
|
geo, err := InitGeo(&GeoConfig{
|
|
AsnURL: cfg.Geo.DownloadURLAsn,
|
|
CityURL: cfg.Geo.DownloadURLCity,
|
|
AsnPath: filepath.Join(cfg.Geo.CacheDir, filepath.Base(cfg.Geo.AsnDB)),
|
|
CityPath: filepath.Join(cfg.Geo.CacheDir, filepath.Base(cfg.Geo.CityDB)),
|
|
})
|
|
if err != nil {
|
|
log.Fatalf("geo init: %v", err)
|
|
}
|
|
defer geo.Close()
|
|
|
|
services := BuildServices(cfg)
|
|
if len(services) == 0 {
|
|
log.Fatal("no services enabled")
|
|
}
|
|
|
|
fmt.Printf("nutils listening on %s with %d services\n", cfg.Server.Listen, len(services))
|
|
log.Fatal(http.ListenAndServe(cfg.Server.Listen, Handle(services, geo)))
|
|
}
|