Compare commits

..

2 Commits

Author SHA1 Message Date
37072c247f updated dependencies 2025-02-02 20:05:12 +01:00
a82184ee33 refactor 2025-02-02 19:47:56 +01:00
3 changed files with 31 additions and 31 deletions

4
go.mod
View File

@ -6,8 +6,8 @@ require (
git.tordarus.net/tordarus/channel v0.1.18
git.tordarus.net/tordarus/envvars v0.0.0-20250114175450-d73e12b838a5
git.tordarus.net/tordarus/gmath v0.0.7
git.tordarus.net/tordarus/omada-api v0.0.2
git.tordarus.net/tordarus/omada-api v0.0.5
git.tordarus.net/tordarus/slices v0.0.13
)
require git.tordarus.net/tordarus/ezhttp v0.0.3 // indirect
require git.tordarus.net/tordarus/ezhttp v0.0.4 // indirect

8
go.sum
View File

@ -2,11 +2,11 @@ git.tordarus.net/tordarus/channel v0.1.18 h1:/9BDbkyXbVpFB+dQbToniX6g/ApBnzjslYt
git.tordarus.net/tordarus/channel v0.1.18/go.mod h1:8/dWFTdGO7g4AeSZ7cF6GerkGbe9c4dBVMVDBxOd9m4=
git.tordarus.net/tordarus/envvars v0.0.0-20250114175450-d73e12b838a5 h1:rKNDX/YGunqg8TEU6q1rgS2BcDKVmUW2cg61JOE/wws=
git.tordarus.net/tordarus/envvars v0.0.0-20250114175450-d73e12b838a5/go.mod h1:/qVGwrEmqtIrZyuuoIQl4vquSkPWUNJmlGNedDrdYfg=
git.tordarus.net/tordarus/ezhttp v0.0.3 h1:K6IlLmqkAFUF68HJsOTKcP3ejco7qfm+MuEagohoouo=
git.tordarus.net/tordarus/ezhttp v0.0.3/go.mod h1:Zq9o0Hibny61GqSCwJHa0PfGjVoUFv/zt2PjiQHXvmY=
git.tordarus.net/tordarus/ezhttp v0.0.4 h1:wm7rhol9MHZTZXOzH5I6Q4idjCiFfA4XwAMISZhTcCs=
git.tordarus.net/tordarus/ezhttp v0.0.4/go.mod h1:Zq9o0Hibny61GqSCwJHa0PfGjVoUFv/zt2PjiQHXvmY=
git.tordarus.net/tordarus/gmath v0.0.7 h1:tR48idt9AUL0r556ww3ZxByTKJEr6NWCTlhl2ihzYxQ=
git.tordarus.net/tordarus/gmath v0.0.7/go.mod h1:mO7aPlvNrGVE9UFXEuuACjZgMDsM63l3OcQy6xSQnoE=
git.tordarus.net/tordarus/omada-api v0.0.2 h1:Pe7tLRRyPBasEvFam6c+83A3axMcxUKgPDmAXAkJMzQ=
git.tordarus.net/tordarus/omada-api v0.0.2/go.mod h1:Ufp8hdXMyrXK7JFHq4WL1WSIlr9L6rhOBfQnqWNpXyM=
git.tordarus.net/tordarus/omada-api v0.0.5 h1:mh9M/mepjKtak48qu/U5isgUCepiD21OLEECi/y7IhI=
git.tordarus.net/tordarus/omada-api v0.0.5/go.mod h1:lz0T5Wtn0R16IbQFgglUhqMdBtSz6Ujn+fsDyV/hTOI=
git.tordarus.net/tordarus/slices v0.0.13 h1:S/6PtIxAtERwlyQvZAZZaq6RVo2kLrAsrA+19ThRRvY=
git.tordarus.net/tordarus/slices v0.0.13/go.mod h1:RgE7A1aSAezIvPUgcbUuMHu0q4xGKoRevT+DC0eJmwI=

50
main.go
View File

@ -18,13 +18,14 @@ import (
var ( // flags
FlagSiteNames = envvars.StringSlice("SITES", ",", []string{})
FlagOmadaURL = envvars.String("OMADA_URL", "http://localhost:8088")
FlagOmadaID = envvars.String("OMADA_ID", "")
FlagOmadaClientID = envvars.String("OMADA_CLIENT_ID", "")
FlagOmadaClientSecret = envvars.String("OMADA_CLIENT_SECRET", "")
FlagOmadaUsername = envvars.String("OMADA_USERNAME", "")
FlagOmadaPassword = envvars.String("OMADA_PASSWORD", "")
FlagRefreshInterval = envvars.Duration("REFRESH_INTERVAL", 30*time.Second)
FlagOmadaURL = envvars.String("OMADA_URL", "http://localhost:8088")
FlagOmadaID = envvars.String("OMADA_ID", "")
FlagOmadaClientID = envvars.String("OMADA_CLIENT_ID", "")
FlagOmadaClientSecret = envvars.String("OMADA_CLIENT_SECRET", "")
FlagOmadaUsername = envvars.String("OMADA_USERNAME", "")
FlagOmadaPassword = envvars.String("OMADA_PASSWORD", "")
FlagRefreshInterval = envvars.Duration("REFRESH_INTERVAL", 30*time.Second)
FlagRefreshBeforeExpiration = envvars.Duration("REFRESH_BEFORE", time.Minute)
FlagHttpInterface = envvars.String("HTTP_INTERFACE", "")
FlagHttpPort = envvars.Uint16("HTTP_PORT", 8080)
@ -50,29 +51,14 @@ func main() {
panic(err)
}
go func() {
if err := api.AutoRefresh(context.Background()); err != nil {
panic(err)
}
}()
go func() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if err := json.NewEncoder(w).Encode(CurrentTraffic); err != nil {
w.WriteHeader(http.StatusInternalServerError)
}
})
http.ListenAndServe(fmt.Sprintf("%s:%d", FlagHttpInterface, FlagHttpPort), nil)
}()
go api.MustAutoRefresh(context.Background(), FlagRefreshBeforeExpiration)
go StartHttpServer()
sites := slices.Filter(channel.ToSlice(api.GetSites()), FilterSitesByName(FlagSiteNames...))
ticker := time.NewTicker(FlagRefreshInterval)
CalculateSiteTraffic(api, sites, 0)
lastTick := time.Now()
CalculateSiteTraffic(api, sites, 0)
for now := range ticker.C {
CurrentTraffic = CalculateSiteTraffic(api, sites, now.Sub(lastTick))
lastTick = now
@ -109,3 +95,17 @@ func FilterSitesByName(allowedSiteNames ...string) func(site *omadamodel.Site) b
return ok
}
}
func StartHttpServer() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if err := json.NewEncoder(w).Encode(CurrentTraffic); err != nil {
w.WriteHeader(http.StatusInternalServerError)
}
})
connString := fmt.Sprintf("%s:%d", FlagHttpInterface, FlagHttpPort)
if err := http.ListenAndServe(connString, nil); err != nil {
panic(err)
}
}