eliminati tutti i warning
This commit is contained in:
parent
8e384215b7
commit
c2a5e09323
7 changed files with 47 additions and 21 deletions
|
@ -20,7 +20,7 @@ type consumed struct {
|
||||||
|
|
||||||
func contains(s []Ips, e string) bool {
|
func contains(s []Ips, e string) bool {
|
||||||
for _, a := range s {
|
for _, a := range s {
|
||||||
if a.Ip == e {
|
if a.IP == e {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ func consumer(id int) {
|
||||||
ml := MongoLogin{
|
ml := MongoLogin{
|
||||||
User: prod.user,
|
User: prod.user,
|
||||||
Protocol: sval[0],
|
Protocol: sval[0],
|
||||||
Ip: sval[2],
|
IP: sval[2],
|
||||||
Date: time.Unix(date, 0),
|
Date: time.Unix(date, 0),
|
||||||
Insert: time.Now(),
|
Insert: time.Now(),
|
||||||
}
|
}
|
||||||
|
@ -95,6 +95,10 @@ func consumer(id int) {
|
||||||
if opts.Debug {
|
if opts.Debug {
|
||||||
log.Printf("%+v\n", ml)
|
log.Printf("%+v\n", ml)
|
||||||
}
|
}
|
||||||
|
// inserisce last timestamp su redis per consolidamento
|
||||||
|
/*
|
||||||
|
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
cons.logins = append(cons.logins, login)
|
cons.logins = append(cons.logins, login)
|
||||||
|
|
17
counter.go
17
counter.go
|
@ -6,6 +6,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Counter structure
|
||||||
type Counter struct {
|
type Counter struct {
|
||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
user int
|
user int
|
||||||
|
@ -17,6 +18,7 @@ type Counter struct {
|
||||||
wg []int
|
wg []int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewCounter iniitialized Counter structure
|
||||||
func NewCounter() *Counter {
|
func NewCounter() *Counter {
|
||||||
return &Counter{
|
return &Counter{
|
||||||
user: 0,
|
user: 0,
|
||||||
|
@ -29,48 +31,56 @@ func NewCounter() *Counter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddUser increment number of users managed
|
||||||
func (c *Counter) AddUser() {
|
func (c *Counter) AddUser() {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
c.user++
|
c.user++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddDuplicate increment number of duplicates log
|
||||||
func (c *Counter) AddDuplicate() {
|
func (c *Counter) AddDuplicate() {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
c.dup++
|
c.dup++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddLog increment number of log's rows managed
|
||||||
func (c *Counter) AddLog(add int) {
|
func (c *Counter) AddLog(add int) {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
c.log += add
|
c.log += add
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//AddRem increment removed logs row
|
||||||
func (c *Counter) AddRem(add int) {
|
func (c *Counter) AddRem(add int) {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
c.rem += add
|
c.rem += add
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddWG ...
|
||||||
func (c *Counter) AddWG(id int) {
|
func (c *Counter) AddWG(id int) {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
c.wg[id]++
|
c.wg[id]++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddErr ...
|
||||||
func (c *Counter) AddErr() {
|
func (c *Counter) AddErr() {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
c.err++
|
c.err++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DelWG ...
|
||||||
func (c *Counter) DelWG(id int) {
|
func (c *Counter) DelWG(id int) {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
c.wg[id]--
|
c.wg[id]--
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetUser return total users
|
||||||
func (c *Counter) GetUser() (ret int) {
|
func (c *Counter) GetUser() (ret int) {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
|
@ -78,6 +88,7 @@ func (c *Counter) GetUser() (ret int) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetDup return total duplicated logins
|
||||||
func (c *Counter) GetDup() (ret int) {
|
func (c *Counter) GetDup() (ret int) {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
|
@ -85,6 +96,7 @@ func (c *Counter) GetDup() (ret int) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetLog return total log's rows
|
||||||
func (c *Counter) GetLog() (ret int) {
|
func (c *Counter) GetLog() (ret int) {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
|
@ -92,6 +104,7 @@ func (c *Counter) GetLog() (ret int) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetErr return total errors
|
||||||
func (c *Counter) GetErr() (ret int) {
|
func (c *Counter) GetErr() (ret int) {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
|
@ -99,6 +112,7 @@ func (c *Counter) GetErr() (ret int) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetRem return total removed log's rows
|
||||||
func (c *Counter) GetRem() (ret int) {
|
func (c *Counter) GetRem() (ret int) {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
|
@ -106,6 +120,7 @@ func (c *Counter) GetRem() (ret int) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetWG ...
|
||||||
func (c *Counter) GetWG(id int) (ret int) {
|
func (c *Counter) GetWG(id int) (ret int) {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
|
@ -113,6 +128,7 @@ func (c *Counter) GetWG(id int) (ret int) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetTime ...
|
||||||
func (c *Counter) GetTime() (ret float64) {
|
func (c *Counter) GetTime() (ret float64) {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
|
@ -120,6 +136,7 @@ func (c *Counter) GetTime() (ret float64) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetTime ...
|
||||||
func (c *Counter) SetTime(t time.Duration) {
|
func (c *Counter) SetTime(t time.Duration) {
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
|
|
21
dbs.go
21
dbs.go
|
@ -14,40 +14,45 @@ import (
|
||||||
|
|
||||||
var (
|
var (
|
||||||
dbs = Dbs{
|
dbs = Dbs{
|
||||||
MongoUri: "mongodb://127.0.0.1:27018",
|
MongoURI: "mongodb://127.0.0.1:27018",
|
||||||
RedisUri: "127.0.0.1:6379",
|
RedisURI: "127.0.0.1:6379",
|
||||||
Database: "lastlogin",
|
Database: "lastlogin",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Dbs structure
|
||||||
type Dbs struct {
|
type Dbs struct {
|
||||||
MongoUri string
|
MongoURI string
|
||||||
Database string
|
Database string
|
||||||
RedisUri string
|
RedisURI string
|
||||||
rdb *redis.Pool //*redis.Client
|
rdb *redis.Pool //*redis.Client
|
||||||
mdb *mgo.Session
|
mdb *mgo.Session
|
||||||
ll *mgo.Collection
|
ll *mgo.Collection
|
||||||
// us *mgo.Collection
|
// us *mgo.Collection
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MongoLogin structure
|
||||||
type MongoLogin struct {
|
type MongoLogin struct {
|
||||||
User string `json:"user"`
|
User string `json:"user"`
|
||||||
Protocol string `json:"protocol"`
|
Protocol string `json:"protocol"`
|
||||||
Ip string `json:"ip"`
|
IP string `json:"ip"`
|
||||||
Date time.Time `json:"date"`
|
Date time.Time `json:"date"`
|
||||||
Insert time.Time `json:"insert"`
|
Insert time.Time `json:"insert"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ips structure
|
||||||
type Ips struct {
|
type Ips struct {
|
||||||
Ip string `json:"ip"`
|
IP string `json:"ip"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UserLogin structure
|
||||||
type UserLogin struct {
|
type UserLogin struct {
|
||||||
User string `json:"user"`
|
User string `json:"user"`
|
||||||
Date time.Time `json:"date"`
|
Date time.Time `json:"date"`
|
||||||
Lock bool `json:"lock"`
|
Lock bool `json:"lock"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Index structure
|
||||||
type Index struct {
|
type Index struct {
|
||||||
User string `json:"user"`
|
User string `json:"user"`
|
||||||
Date time.Time `json:"date"`
|
Date time.Time `json:"date"`
|
||||||
|
@ -61,7 +66,7 @@ func (db *Dbs) poolRedis() {
|
||||||
Wait: true,
|
Wait: true,
|
||||||
IdleTimeout: 1 * time.Second,
|
IdleTimeout: 1 * time.Second,
|
||||||
Dial: func() (redis.Conn, error) {
|
Dial: func() (redis.Conn, error) {
|
||||||
c, err := redis.Dial("tcp", db.RedisUri)
|
c, err := redis.Dial("tcp", db.RedisURI)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -77,7 +82,7 @@ func (db *Dbs) poolRedis() {
|
||||||
|
|
||||||
func (db *Dbs) connectMongo() {
|
func (db *Dbs) connectMongo() {
|
||||||
var err error
|
var err error
|
||||||
db.mdb, err = mgo.Dial(db.MongoUri)
|
db.mdb, err = mgo.Dial(db.MongoURI)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Mongodb connect Error: ", err.Error())
|
log.Println("Mongodb connect Error: ", err.Error())
|
||||||
os.Exit(-3)
|
os.Exit(-3)
|
||||||
|
|
4
main.go
4
main.go
|
@ -11,7 +11,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
_VERSION = "v2.8.0"
|
_Version = "v2.8.0.1"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -31,7 +31,7 @@ func main() {
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
if opts.Version {
|
if opts.Version {
|
||||||
fmt.Println(os.Args[0], _VERSION)
|
fmt.Println(os.Args[0], _Version)
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Options structure
|
||||||
type Options struct {
|
type Options struct {
|
||||||
RedisTTL time.Duration
|
RedisTTL time.Duration
|
||||||
CurrentPath string
|
CurrentPath string
|
||||||
|
@ -41,7 +42,8 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
func usage() {
|
func usage() {
|
||||||
fmt.Println("Usage: llmongo -m <mongo uri> -r <redis uri> -t <redis keys ttl> -l <logfile> -b <concurrent thread> -T <running ttl> -x <xymon server> -H <hostname> -i <influxdb uri> -v\n")
|
fmt.Println("Usage: llmongo -m <mongo uri> -r <redis uri> -t <redis keys ttl> -l <logfile> -b <concurrent thread> -T <running ttl> -x <xymon server> -H <hostname> -i <influxdb uri> -v")
|
||||||
|
fmt.Println()
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,9 +61,9 @@ func init() {
|
||||||
flag.StringVar(&opts.Xymon, "x", "", "xymon server")
|
flag.StringVar(&opts.Xymon, "x", "", "xymon server")
|
||||||
flag.StringVar(&opts.Influxdb, "i", "", "influxdb server")
|
flag.StringVar(&opts.Influxdb, "i", "", "influxdb server")
|
||||||
flag.StringVar(&opts.Hostname, "H", "", "hostname")
|
flag.StringVar(&opts.Hostname, "H", "", "hostname")
|
||||||
flag.StringVar(&dbs.MongoUri, "m", dbs.MongoUri, "Mongodb")
|
flag.StringVar(&dbs.MongoURI, "m", dbs.MongoURI, "Mongodb")
|
||||||
flag.StringVar(&dbs.Database, "d", dbs.Database, "Mongodb Database")
|
flag.StringVar(&dbs.Database, "d", dbs.Database, "Mongodb Database")
|
||||||
flag.StringVar(&dbs.RedisUri, "r", dbs.RedisUri, "Redis")
|
flag.StringVar(&dbs.RedisURI, "r", dbs.RedisURI, "Redis")
|
||||||
flag.StringVar(&opts.LogFile, "l", opts.LogFile, "Logs filename")
|
flag.StringVar(&opts.LogFile, "l", opts.LogFile, "Logs filename")
|
||||||
flag.IntVar(&opts.MaxLogins, "L", opts.MaxLogins, "Max lastlogins")
|
flag.IntVar(&opts.MaxLogins, "L", opts.MaxLogins, "Max lastlogins")
|
||||||
flag.DurationVar(&opts.RedisTTL, "t", opts.RedisTTL, "Redis keys TTL")
|
flag.DurationVar(&opts.RedisTTL, "t", opts.RedisTTL, "Redis keys TTL")
|
||||||
|
|
8
pid.go
8
pid.go
|
@ -16,6 +16,7 @@ var (
|
||||||
pid = PID{}
|
pid = PID{}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// PID structure
|
||||||
type PID struct {
|
type PID struct {
|
||||||
PID string
|
PID string
|
||||||
PIDFile string
|
PIDFile string
|
||||||
|
@ -42,11 +43,8 @@ func (p *PID) readCmd() bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
cmd := bytes.Trim(bcmd, "\x00")
|
cmd := bytes.Trim(bcmd, "\x00")
|
||||||
if strings.Contains(string(cmd), opts.Exe) {
|
if !strings.Contains(string(cmd), opts.Exe) {
|
||||||
return true
|
|
||||||
} else {
|
|
||||||
fmt.Printf("PID %s used by %s\n", pid, cmd)
|
fmt.Printf("PID %s used by %s\n", pid, cmd)
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -78,7 +76,7 @@ func (p *PID) Write(l bool) {
|
||||||
fpid.Close()
|
fpid.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cancella il PIDFile
|
// Remove cancella il PIDFile
|
||||||
func (p *PID) Remove() {
|
func (p *PID) Remove() {
|
||||||
err := os.Remove(p.PIDFile)
|
err := os.Remove(p.PIDFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -39,7 +39,7 @@ func producer(id int) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
// estrae tutti i login dell'utente "user"
|
// estrae <MaxLogins> login dell'utente "user"
|
||||||
logs, err := redis.Strings(conn.Do("lrange", user, "1", strconv.Itoa(opts.MaxLogins)))
|
logs, err := redis.Strings(conn.Do("lrange", user, "1", strconv.Itoa(opts.MaxLogins)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if opts.Debug {
|
if opts.Debug {
|
||||||
|
|
Loading…
Add table
Reference in a new issue