89 lines
1.9 KiB
Go
89 lines
1.9 KiB
Go
// dbs
|
|
package main
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
"time"
|
|
|
|
"gopkg.in/mgo.v2"
|
|
)
|
|
|
|
type Dbs struct {
|
|
mdbSrc *mgo.Session
|
|
mdbDst *mgo.Session
|
|
ll *mgo.Collection
|
|
lc *mgo.Collection
|
|
bulk *mgo.Bulk
|
|
}
|
|
|
|
type LastLogin struct {
|
|
User string `json: "user" bson:"user"`
|
|
Protocol string `json: "protocol" bson:"protocol"`
|
|
IP string `json: "ip" bson:"ip"`
|
|
Date time.Time `json: "date" bson:"date"`
|
|
ID string `json: "_id" bson:"_id"`
|
|
}
|
|
|
|
type LastLoginDay struct {
|
|
User string `json:"user" bson:"user"`
|
|
Date time.Time `json:"date" bson:"date"`
|
|
Protocols Protocols `json:"protocols" bson:"protocols"`
|
|
IPs []IPs `json:"ips" bson:"ips"`
|
|
}
|
|
|
|
type IPs struct {
|
|
IP string `json:"ip" bson:"ip"`
|
|
Date time.Time `json:"date" bson:"date"`
|
|
Protocol string `json:"protocol" bson:"protocol"`
|
|
}
|
|
|
|
type Protocols struct {
|
|
Pop int `json:"pop" bson:"pop"`
|
|
Imap int `json:"imap" bson:"imap"`
|
|
Web int `json:"web" bson:"web"`
|
|
}
|
|
|
|
type Index struct {
|
|
User string `json:"user" bson:"user"`
|
|
Date time.Time `json:"date" bson:"date"`
|
|
}
|
|
|
|
type Users struct {
|
|
User string `json:"_id" bson:"_id"`
|
|
Logins []IPs `json:"logins" bson:"logins"`
|
|
}
|
|
|
|
/*
|
|
type Users struct {
|
|
User string `json:"user"`
|
|
}
|
|
*/
|
|
|
|
func connectMongo() {
|
|
|
|
if opts.MongoSrc == "" {
|
|
log.Fatalf("Mongodb URI invalid: '%s'\n", opts.MongoSrc)
|
|
}
|
|
var err error
|
|
//opts.mdbSrc, err = mgo.DialWithTimeout(opts.MongoSrc, time.Minute*5)
|
|
dbs.mdbSrc, err = mgo.Dial(opts.MongoSrc)
|
|
if err != nil {
|
|
log.Println("Mongodb connect Error: ", err.Error())
|
|
os.Exit(-3)
|
|
}
|
|
dbs.mdbSrc.SetSocketTimeout(0)
|
|
dbs.ll = dbs.mdbSrc.DB("dovecot").C("lastlogin")
|
|
|
|
if opts.MongoDst == "" {
|
|
dbs.mdbDst = dbs.mdbSrc
|
|
dbs.lc = dbs.mdbSrc.DB("dovecot").C("lastlogin_day")
|
|
} else {
|
|
dbs.mdbDst, err = mgo.Dial(opts.MongoDst)
|
|
if err != nil {
|
|
log.Println("Mongodb connect Error: ", err.Error())
|
|
os.Exit(-3)
|
|
}
|
|
dbs.lc = dbs.mdbDst.DB("dovecot").C("lastlogin_day")
|
|
}
|
|
}
|