modificata la struttura del sorgente
This commit is contained in:
parent
16fd3dbd69
commit
a375f8dedf
3 changed files with 123 additions and 103 deletions
70
dbs.go
Normal file
70
dbs.go
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
// dbs
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gopkg.in/mgo.v2"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type LastLogin struct {
|
||||||
|
User string `json: "user"`
|
||||||
|
Protocol string `json: "protocol"`
|
||||||
|
IP string `json: "ip"`
|
||||||
|
Date time.Time `json: "date"`
|
||||||
|
ID string `json: "_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type LastLoginDay struct {
|
||||||
|
User string `json:"user"`
|
||||||
|
Date time.Time `json:"date"`
|
||||||
|
Protocols Protocols `json:"protocols"`
|
||||||
|
IPs []IPs `json:"ips"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type IPs struct {
|
||||||
|
IP string `json:"ip"`
|
||||||
|
Date time.Time `json:"date"`
|
||||||
|
Protocol string `json:"protocol"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Protocols struct {
|
||||||
|
Pop int `json:"pop"`
|
||||||
|
Imap int `json:"imap"`
|
||||||
|
Web int `json:"web"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Index struct {
|
||||||
|
User string `json:"user"`
|
||||||
|
Date time.Time `json:"date"`
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
opts.mdbSrc, err = mgo.Dial(opts.MongoSrc)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Mongodb connect Error: ", err.Error())
|
||||||
|
os.Exit(-3)
|
||||||
|
}
|
||||||
|
opts.mdbSrc.SetSocketTimeout(0)
|
||||||
|
opts.ll = opts.mdbSrc.DB("dovecot").C("lastlogin")
|
||||||
|
|
||||||
|
if opts.MongoDst == "" {
|
||||||
|
opts.mdbDst = opts.mdbSrc
|
||||||
|
opts.lc = opts.mdbSrc.DB("dovecot").C("lastlogin_day")
|
||||||
|
} else {
|
||||||
|
opts.mdbDst, err = mgo.Dial(opts.MongoDst)
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Mongodb connect Error: ", err.Error())
|
||||||
|
os.Exit(-3)
|
||||||
|
}
|
||||||
|
opts.lc = opts.mdbDst.DB("dovecot").C("lastlogin_day")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -4,17 +4,15 @@ package main
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"gopkg.in/mgo.v2"
|
// "gopkg.in/mgo.v2"
|
||||||
"gopkg.in/mgo.v2/bson"
|
"gopkg.in/mgo.v2/bson"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
|
||||||
"path/filepath"
|
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
_VERSION = "v1.0.9"
|
_VERSION = "v1.0.10"
|
||||||
_tformat = "2006-01-02"
|
_tformat = "2006-01-02"
|
||||||
_24h = (time.Hour * 23) + (time.Minute * 59) + (time.Second * 59)
|
_24h = (time.Hour * 23) + (time.Minute * 59) + (time.Second * 59)
|
||||||
_10m = (time.Minute * 10)
|
_10m = (time.Minute * 10)
|
||||||
|
@ -31,105 +29,6 @@ var (
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
type Options struct {
|
|
||||||
MongoSrc string
|
|
||||||
MongoDst string
|
|
||||||
mdbSrc *mgo.Session
|
|
||||||
mdbDst *mgo.Session
|
|
||||||
ll *mgo.Collection
|
|
||||||
lc *mgo.Collection
|
|
||||||
StartDate string
|
|
||||||
Duration time.Duration
|
|
||||||
Interval time.Duration
|
|
||||||
LogFile string
|
|
||||||
Version bool
|
|
||||||
Debug bool
|
|
||||||
}
|
|
||||||
|
|
||||||
type LastLogin struct {
|
|
||||||
User string `json: "user"`
|
|
||||||
Protocol string `json: "protocol"`
|
|
||||||
IP string `json: "ip"`
|
|
||||||
Date time.Time `json: "date"`
|
|
||||||
ID string `json: "_id"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type LastLoginDay struct {
|
|
||||||
User string `json:"user"`
|
|
||||||
Date time.Time `json:"date"`
|
|
||||||
Protocols Protocols `json:"protocols"`
|
|
||||||
IPs []IPs `json:"ips"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type IPs struct {
|
|
||||||
IP string `json:"ip"`
|
|
||||||
Date time.Time `json:"date"`
|
|
||||||
Protocol string `json:"protocol"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type Protocols struct {
|
|
||||||
Pop int `json:"pop"`
|
|
||||||
Imap int `json:"imap"`
|
|
||||||
Web int `json:"web"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type Index struct {
|
|
||||||
User string `json:"user"`
|
|
||||||
Date time.Time `json:"date"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func usage() {
|
|
||||||
fmt.Println("Usage: lastlogin_consolidate -ms <mongo source mongodb://IP:PORT> -md <mongo destination mongodb://IP:PORT> -l <logfile> -d <date> -dd <duration> -i <interval> -v\n")
|
|
||||||
os.Exit(0)
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
current, err := filepath.Abs(filepath.Dir(os.Args[0]))
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
opts.LogFile = path.Join(current, opts.LogFile)
|
|
||||||
|
|
||||||
flag.StringVar(&opts.MongoSrc, "ms", opts.MongoSrc, "Mongodb Source")
|
|
||||||
flag.StringVar(&opts.MongoDst, "md", "", "Mongodb Destination")
|
|
||||||
flag.StringVar(&opts.LogFile, "l", opts.LogFile, "Logs filename")
|
|
||||||
flag.StringVar(&opts.StartDate, "d", opts.StartDate, "Date")
|
|
||||||
flag.DurationVar(&opts.Duration, "dd", opts.Duration, "Duration")
|
|
||||||
flag.DurationVar(&opts.Interval, "i", opts.Interval, "Duration")
|
|
||||||
flag.BoolVar(&opts.Version, "v", false, "Version")
|
|
||||||
flag.BoolVar(&opts.Debug, "debug", false, "Debug")
|
|
||||||
}
|
|
||||||
|
|
||||||
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)
|
|
||||||
opts.mdbSrc, err = mgo.Dial(opts.MongoSrc)
|
|
||||||
if err != nil {
|
|
||||||
log.Println("Mongodb connect Error: ", err.Error())
|
|
||||||
os.Exit(-3)
|
|
||||||
}
|
|
||||||
opts.mdbSrc.SetSocketTimeout(0)
|
|
||||||
opts.ll = opts.mdbSrc.DB("dovecot").C("lastlogin")
|
|
||||||
|
|
||||||
if opts.MongoDst == "" {
|
|
||||||
opts.mdbDst = opts.mdbSrc
|
|
||||||
opts.lc = opts.mdbSrc.DB("dovecot").C("lastlogin_day")
|
|
||||||
} else {
|
|
||||||
opts.mdbDst, err = mgo.Dial(opts.MongoDst)
|
|
||||||
if err != nil {
|
|
||||||
log.Println("Mongodb connect Error: ", err.Error())
|
|
||||||
os.Exit(-3)
|
|
||||||
}
|
|
||||||
opts.lc = opts.mdbDst.DB("dovecot").C("lastlogin_day")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
flag.Usage = usage
|
flag.Usage = usage
|
||||||
|
|
51
options.go
Normal file
51
options.go
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
// options
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"gopkg.in/mgo.v2"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"path"
|
||||||
|
"path/filepath"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Options struct {
|
||||||
|
MongoSrc string
|
||||||
|
MongoDst string
|
||||||
|
mdbSrc *mgo.Session
|
||||||
|
mdbDst *mgo.Session
|
||||||
|
ll *mgo.Collection
|
||||||
|
lc *mgo.Collection
|
||||||
|
StartDate string
|
||||||
|
Duration time.Duration
|
||||||
|
Interval time.Duration
|
||||||
|
LogFile string
|
||||||
|
Version bool
|
||||||
|
Debug bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func usage() {
|
||||||
|
fmt.Println("Usage: lastlogin_consolidate -ms <mongo source mongodb://IP:PORT> -md <mongo destination mongodb://IP:PORT> -l <logfile> -d <date> -dd <duration> -i <interval> -v\n")
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
current, err := filepath.Abs(filepath.Dir(os.Args[0]))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
opts.LogFile = path.Join(current, opts.LogFile)
|
||||||
|
|
||||||
|
flag.StringVar(&opts.MongoSrc, "ms", opts.MongoSrc, "Mongodb Source")
|
||||||
|
flag.StringVar(&opts.MongoDst, "md", "", "Mongodb Destination")
|
||||||
|
flag.StringVar(&opts.LogFile, "l", opts.LogFile, "Logs filename")
|
||||||
|
flag.StringVar(&opts.StartDate, "d", opts.StartDate, "Date")
|
||||||
|
flag.DurationVar(&opts.Duration, "dd", opts.Duration, "Duration")
|
||||||
|
flag.DurationVar(&opts.Interval, "i", opts.Interval, "Duration")
|
||||||
|
flag.BoolVar(&opts.Version, "v", false, "Version")
|
||||||
|
flag.BoolVar(&opts.Debug, "debug", false, "Debug")
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue