diff --git a/llmongo.go b/llmongo.go index 9c24c3b..3c73d98 100644 --- a/llmongo.go +++ b/llmongo.go @@ -82,23 +82,25 @@ func init() { flag.BoolVar(&opts.Version, "v", false, "Version") } -func connectRedis() { - var err error - opts.rdb, err = redis.Dial("tcp", opts.RedisUri) +func connectRedis(uri string) *redis.Client { + rdb, err := redis.Dial("tcp", opts.RedisUri) if err != nil { log.Println("Redis connect Error: ", err.Error()) os.Exit(-1) } + + return rdb } -func connectMongo() { - var err error - opts.mdb, err = mgo.Dial(opts.MongoUri) +func connectMongo(uri string) (*mgo.Session, *mgo.Collection) { + mdb, err := mgo.Dial(uri) if err != nil { log.Println("Mongodb connect Error: ", err.Error()) os.Exit(-3) } - opts.ll = opts.mdb.DB("dovecot").C("lastlogin") + ll := opts.mdb.DB("dovecot").C("lastlogin") + + return mdb, ll } func checkPID(bpid []byte) bool { @@ -117,8 +119,14 @@ func checkPID(bpid []byte) bool { return true } -func writePID() { - +func writePID(pfile string) { + fpid, err := os.OpenFile(pfile, os.O_WRONLY|os.O_CREATE, 0666) + if err != nil { + fmt.Println("PID file error: ", err.Error()) + os.Exit(-5) + } + fpid.WriteString(strconv.Itoa(os.Getpid())) + fpid.Close() } func main() { @@ -134,13 +142,7 @@ func main() { fmt.Println("Running: ", string(bpid)) os.Exit(-6) } else { - fpid, err := os.OpenFile(opts.PIDFile, os.O_WRONLY|os.O_CREATE, 0666) - if err != nil { - fmt.Println("PID file error: ", err.Error()) - os.Exit(-5) - } - fpid.WriteString(strconv.Itoa(os.Getpid())) - fpid.Close() + writePID(opts.PIDFile) } defer os.Remove(opts.PIDFile) @@ -159,10 +161,10 @@ func main() { fmt.Printf("Start: %+v\n", opts) log.Printf("Start: %+v\n", opts) - connectRedis() + opts.rdb = connectRedis(opts.RedisUri) defer opts.rdb.Close() - connectMongo() + opts.mdb, opts.ll = connectMongo(opts.MongoUri) defer opts.mdb.Close() // // Estrae la lista degli utenti che hanno fatto login negli ultimi X min.