Bots filter
This commit is contained in:
parent
f59b999899
commit
068ce0ca5e
|
@ -94,6 +94,8 @@ The following filters are available:
|
||||||
|
|
||||||
`ua`: filter user agents containing the string provided, so `Firefox` filters out all user agents that don't contain `Firefox`
|
`ua`: filter user agents containing the string provided, so `Firefox` filters out all user agents that don't contain `Firefox`
|
||||||
|
|
||||||
|
`bots`: filter out bots (`0`) or show only bots (`1`)
|
||||||
|
|
||||||
`ordercol`: column to use for ordering, `first` for the data groups, `second` for the view counts
|
`ordercol`: column to use for ordering, `first` for the data groups, `second` for the view counts
|
||||||
|
|
||||||
`order`: select whether to use ascending order (`ASC`) or descending order (`DESC`)
|
`order`: select whether to use ascending order (`ASC`) or descending order (`DESC`)
|
||||||
|
@ -120,7 +122,7 @@ KISSS has a feature that can send you daily reports. It basically requests the s
|
||||||
// Email configuration
|
// Email configuration
|
||||||
"name": "Daily stats from KISSS",
|
"name": "Daily stats from KISSS",
|
||||||
"time": "15:00",
|
"time": "15:00",
|
||||||
"query": "view=pages&ordercol=second&order=desc",
|
"query": "view=pages&bots=0&ordercol=second&order=desc",
|
||||||
"from": "myemailaddress@mydomain.tld",
|
"from": "myemailaddress@mydomain.tld",
|
||||||
"to": "myemailaddress@mydomain.tld"
|
"to": "myemailaddress@mydomain.tld"
|
||||||
},
|
},
|
||||||
|
@ -129,7 +131,7 @@ KISSS has a feature that can send you daily reports. It basically requests the s
|
||||||
"name": "Daily stats from KISSS",
|
"name": "Daily stats from KISSS",
|
||||||
"type": "telegram", // Add this for Telegram
|
"type": "telegram", // Add this for Telegram
|
||||||
"time": "15:00",
|
"time": "15:00",
|
||||||
"query": "view=pages&ordercol=second&order=desc",
|
"query": "view=pages&bots=0&ordercol=second&order=desc",
|
||||||
"tgUserId": 123456
|
"tgUserId": 123456
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
16
database.go
16
database.go
|
@ -105,6 +105,7 @@ type ViewsRequest struct {
|
||||||
ordercol string
|
ordercol string
|
||||||
order string
|
order string
|
||||||
limit string
|
limit string
|
||||||
|
bots string
|
||||||
}
|
}
|
||||||
|
|
||||||
type RequestResultRow struct {
|
type RequestResultRow struct {
|
||||||
|
@ -214,6 +215,7 @@ func (request *ViewsRequest) buildFilter() (filters string, parameters []sql.Nam
|
||||||
request.buildUrlFilter(¶meters),
|
request.buildUrlFilter(¶meters),
|
||||||
request.buildRefFilter(¶meters),
|
request.buildRefFilter(¶meters),
|
||||||
request.buildUseragentFilter(¶meters),
|
request.buildUseragentFilter(¶meters),
|
||||||
|
request.buildBotFilter(¶meters),
|
||||||
} {
|
} {
|
||||||
if len(filter) > 0 {
|
if len(filter) > 0 {
|
||||||
allFilters = append(allFilters, filter)
|
allFilters = append(allFilters, filter)
|
||||||
|
@ -269,10 +271,20 @@ func (request *ViewsRequest) buildRefFilter(namedArg *[]sql.NamedArg) (refFilter
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (request *ViewsRequest) buildUseragentFilter(namedArg *[]sql.NamedArg) (refFilter string) {
|
func (request *ViewsRequest) buildUseragentFilter(namedArg *[]sql.NamedArg) (uaFilter string) {
|
||||||
if len(request.ua) > 0 {
|
if len(request.ua) > 0 {
|
||||||
*namedArg = append(*namedArg, sql.Named("ua", "%"+request.ua+"%"))
|
*namedArg = append(*namedArg, sql.Named("ua", "%"+request.ua+"%"))
|
||||||
refFilter = "useragent like :ua"
|
uaFilter = "useragent like :ua"
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (request *ViewsRequest) buildBotFilter(namedArg *[]sql.NamedArg) (botFilter string) {
|
||||||
|
if len(request.bots) > 0 {
|
||||||
|
if request.bots == "0" || request.bots == "1" {
|
||||||
|
*namedArg = append(*namedArg, sql.Named("bot", request.bots))
|
||||||
|
}
|
||||||
|
botFilter = "bot like :bot"
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -20,7 +20,7 @@ require (
|
||||||
github.com/whiteshtef/clockwork v0.0.0-20190417075149-ecf7d9abe8ec
|
github.com/whiteshtef/clockwork v0.0.0-20190417075149-ecf7d9abe8ec
|
||||||
github.com/ziutek/mymysql v1.5.4 // indirect
|
github.com/ziutek/mymysql v1.5.4 // indirect
|
||||||
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4 // indirect
|
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4 // indirect
|
||||||
golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7 // indirect
|
golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3 // indirect
|
||||||
google.golang.org/appengine v1.6.1 // indirect
|
google.golang.org/appengine v1.6.1 // indirect
|
||||||
gopkg.in/gorp.v1 v1.7.2 // indirect
|
gopkg.in/gorp.v1 v1.7.2 // indirect
|
||||||
)
|
)
|
||||||
|
|
4
go.sum
4
go.sum
|
@ -111,8 +111,8 @@ golang.org/x/sys v0.0.0-20190515120540-06a5c4944438 h1:khxRGsvPk4n2y8I/mLLjp7e5d
|
||||||
golang.org/x/sys v0.0.0-20190515120540-06a5c4944438/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190515120540-06a5c4944438/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c h1:+EXw7AwNOKzPFXMZ1yNjO40aWCh3PIquJB2fYlv9wcs=
|
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c h1:+EXw7AwNOKzPFXMZ1yNjO40aWCh3PIquJB2fYlv9wcs=
|
||||||
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7 h1:LepdCS8Gf/MVejFIt8lsiexZATdoGVyp5bcyS+rYoUI=
|
golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3 h1:4y9KwBHBgBNwDbtu44R5o1fdOCQUEXhbk/P4A9WmJq0=
|
||||||
golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
|
1
stats.go
1
stats.go
|
@ -81,6 +81,7 @@ func doRequest(queries url.Values) (result []*RequestResultRow, e error) {
|
||||||
ordercol: strings.ToLower(queries.Get("ordercol")),
|
ordercol: strings.ToLower(queries.Get("ordercol")),
|
||||||
order: strings.ToUpper(queries.Get("order")),
|
order: strings.ToUpper(queries.Get("order")),
|
||||||
limit: queries.Get("limit"),
|
limit: queries.Get("limit"),
|
||||||
|
bots: queries.Get("bots"),
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue