// options package main import ( // "encoding/json" "flag" "fmt" // "io/ioutil" "log" "os" "path" "path/filepath" "time" ) // Options structure type Options struct { RedisTTL time.Duration CurrentPath string Exe string LogFile string ConfigFile string Timeout time.Duration MaxLogins int Debug bool Version bool Concurrent int MaxError int Xymon string Influxdb string Hostname string Month string Pidfile string } var ( opts = Options{ RedisTTL: time.Hour * 11688, // 16 mesi LogFile: "log/llmongo.log", MaxLogins: -1, } ) func usage() { fmt.Println("Usage: llmongo -m -r -t -l -b -T -x -H -i -v") fmt.Println() os.Exit(0) } func init() { var err error opts.CurrentPath, err = filepath.Abs(filepath.Dir(os.Args[0])) if err != nil { log.Fatal(err) } opts.LogFile = path.Join(opts.CurrentPath, opts.LogFile) opts.Pidfile = path.Join(opts.CurrentPath, "run", path.Base(os.Args[0])+".pid") opts.Exe = path.Base(os.Args[0]) flag.StringVar(&opts.Xymon, "x", "", "xymon server") flag.StringVar(&opts.Influxdb, "i", "", "influxdb server") flag.StringVar(&opts.Hostname, "H", "", "hostname") flag.StringVar(&dbs.MongoURI, "m", dbs.MongoURI, "Mongodb") flag.StringVar(&dbs.Database, "d", dbs.Database, "Mongodb Database") flag.StringVar(&dbs.RedisURI, "r", dbs.RedisURI, "Redis") flag.StringVar(&opts.LogFile, "l", opts.LogFile, "Logs filename") flag.IntVar(&opts.MaxLogins, "L", opts.MaxLogins, "Max lastlogins") flag.DurationVar(&opts.RedisTTL, "t", opts.RedisTTL, "Redis keys TTL") flag.BoolVar(&opts.Version, "v", false, "Version") flag.DurationVar(&opts.Timeout, "T", 0, "Running timeout") flag.BoolVar(&opts.Debug, "D", false, "Debug") flag.IntVar(&opts.Concurrent, "c", 1, "Concurrent thread") flag.IntVar(&opts.MaxError, "E", 100, "Max Mongodb Error") flag.StringVar(&opts.Pidfile, "p", opts.Pidfile, "pid file") }