http server implemented
This commit is contained in:
parent
7241c4c499
commit
04d0c01536
10
go.mod
10
go.mod
@ -4,12 +4,10 @@ go 1.23.5
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
git.tordarus.net/tordarus/channel v0.1.18
|
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.1
|
git.tordarus.net/tordarus/omada-api v0.0.1
|
||||||
git.tordarus.net/tordarus/slices v0.0.12
|
git.tordarus.net/tordarus/slices v0.0.13
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require git.tordarus.net/tordarus/ezhttp v0.0.3 // indirect
|
||||||
git.milar.in/milarin/gmath v0.0.6 // indirect
|
|
||||||
git.tordarus.net/tordarus/envvars v0.0.0-20250114175450-d73e12b838a5 // indirect
|
|
||||||
git.tordarus.net/tordarus/ezhttp v0.0.3 // indirect
|
|
||||||
)
|
|
||||||
|
8
go.sum
8
go.sum
@ -1,12 +1,12 @@
|
|||||||
git.milar.in/milarin/gmath v0.0.6 h1:NNtlh4PLsQT/hqq3F87Xm3u0PLapgBU/L2mN9mb8SPs=
|
|
||||||
git.milar.in/milarin/gmath v0.0.6/go.mod h1:HDLftG5RLpiNGKiIWh+O2G1PYkNzyLDADO8Cd/1abiE=
|
|
||||||
git.tordarus.net/tordarus/channel v0.1.18 h1:/9BDbkyXbVpFB+dQbToniX6g/ApBnzjslYt4NiycMQo=
|
git.tordarus.net/tordarus/channel v0.1.18 h1:/9BDbkyXbVpFB+dQbToniX6g/ApBnzjslYt4NiycMQo=
|
||||||
git.tordarus.net/tordarus/channel v0.1.18/go.mod h1:8/dWFTdGO7g4AeSZ7cF6GerkGbe9c4dBVMVDBxOd9m4=
|
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 h1:rKNDX/YGunqg8TEU6q1rgS2BcDKVmUW2cg61JOE/wws=
|
||||||
git.tordarus.net/tordarus/envvars v0.0.0-20250114175450-d73e12b838a5/go.mod h1:/qVGwrEmqtIrZyuuoIQl4vquSkPWUNJmlGNedDrdYfg=
|
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 h1:K6IlLmqkAFUF68HJsOTKcP3ejco7qfm+MuEagohoouo=
|
||||||
git.tordarus.net/tordarus/ezhttp v0.0.3/go.mod h1:Zq9o0Hibny61GqSCwJHa0PfGjVoUFv/zt2PjiQHXvmY=
|
git.tordarus.net/tordarus/ezhttp v0.0.3/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.1 h1:w4WozETL00JygidOXGkGs9UxUQhUNlNnlfqWiYYriHo=
|
git.tordarus.net/tordarus/omada-api v0.0.1 h1:w4WozETL00JygidOXGkGs9UxUQhUNlNnlfqWiYYriHo=
|
||||||
git.tordarus.net/tordarus/omada-api v0.0.1/go.mod h1:Ufp8hdXMyrXK7JFHq4WL1WSIlr9L6rhOBfQnqWNpXyM=
|
git.tordarus.net/tordarus/omada-api v0.0.1/go.mod h1:Ufp8hdXMyrXK7JFHq4WL1WSIlr9L6rhOBfQnqWNpXyM=
|
||||||
git.tordarus.net/tordarus/slices v0.0.12 h1:/0GDo1oGTIZB4+Nr/0dxUf7Z3mE8H8Ew+orFedGbxb8=
|
git.tordarus.net/tordarus/slices v0.0.13 h1:S/6PtIxAtERwlyQvZAZZaq6RVo2kLrAsrA+19ThRRvY=
|
||||||
git.tordarus.net/tordarus/slices v0.0.12/go.mod h1:bu97dfPWRJ8iqwijWcpzRnFkry4sfY6mc+/bxLai4fU=
|
git.tordarus.net/tordarus/slices v0.0.13/go.mod h1:RgE7A1aSAezIvPUgcbUuMHu0q4xGKoRevT+DC0eJmwI=
|
||||||
|
25
main.go
25
main.go
@ -1,19 +1,22 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.milar.in/milarin/gmath"
|
|
||||||
"git.tordarus.net/tordarus/channel"
|
"git.tordarus.net/tordarus/channel"
|
||||||
"git.tordarus.net/tordarus/envvars"
|
"git.tordarus.net/tordarus/envvars"
|
||||||
|
"git.tordarus.net/tordarus/gmath"
|
||||||
omadaapi "git.tordarus.net/tordarus/omada-api"
|
omadaapi "git.tordarus.net/tordarus/omada-api"
|
||||||
omadamodel "git.tordarus.net/tordarus/omada-api/model"
|
omadamodel "git.tordarus.net/tordarus/omada-api/model"
|
||||||
"git.tordarus.net/tordarus/slices"
|
"git.tordarus.net/tordarus/slices"
|
||||||
)
|
)
|
||||||
|
|
||||||
var ( // flags
|
var ( // flags
|
||||||
FlagSiteNames = envvars.StringSlice("SITES", ",", []string{})
|
FlagSiteNames = envvars.StringSlice("SITES", ",", []string{})
|
||||||
|
|
||||||
FlagOmadaURL = envvars.String("OMADA_URL", "http://localhost:8088")
|
FlagOmadaURL = envvars.String("OMADA_URL", "http://localhost:8088")
|
||||||
FlagOmadaID = envvars.String("OMADA_ID", "")
|
FlagOmadaID = envvars.String("OMADA_ID", "")
|
||||||
FlagOmadaClientID = envvars.String("OMADA_CLIENT_ID", "")
|
FlagOmadaClientID = envvars.String("OMADA_CLIENT_ID", "")
|
||||||
@ -21,10 +24,15 @@ var ( // flags
|
|||||||
FlagOmadaUsername = envvars.String("OMADA_USERNAME", "")
|
FlagOmadaUsername = envvars.String("OMADA_USERNAME", "")
|
||||||
FlagOmadaPassword = envvars.String("OMADA_PASSWORD", "")
|
FlagOmadaPassword = envvars.String("OMADA_PASSWORD", "")
|
||||||
FlagRefreshInterval = envvars.Duration("REFRESH_INTERVAL", 30*time.Second)
|
FlagRefreshInterval = envvars.Duration("REFRESH_INTERVAL", 30*time.Second)
|
||||||
|
|
||||||
|
FlagHttpInterface = envvars.String("HTTP_INTERFACE", "")
|
||||||
|
FlagHttpPort = envvars.Uint16("HTTP_PORT", 8080)
|
||||||
)
|
)
|
||||||
|
|
||||||
var MinRefreshInterval = 30 * time.Second
|
var MinRefreshInterval = 30 * time.Second
|
||||||
|
|
||||||
|
var CurrentTraffic = &TrafficStats{}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
FlagRefreshInterval = gmath.Max(FlagRefreshInterval, MinRefreshInterval)
|
FlagRefreshInterval = gmath.Max(FlagRefreshInterval, MinRefreshInterval)
|
||||||
|
|
||||||
@ -41,6 +49,16 @@ func main() {
|
|||||||
panic(err)
|
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)
|
||||||
|
}()
|
||||||
|
|
||||||
sites := slices.Filter(channel.ToSlice(api.GetSites()), FilterSitesByName(FlagSiteNames...))
|
sites := slices.Filter(channel.ToSlice(api.GetSites()), FilterSitesByName(FlagSiteNames...))
|
||||||
|
|
||||||
ticker := time.NewTicker(FlagRefreshInterval)
|
ticker := time.NewTicker(FlagRefreshInterval)
|
||||||
@ -49,8 +67,7 @@ func main() {
|
|||||||
|
|
||||||
lastTick := time.Now()
|
lastTick := time.Now()
|
||||||
for now := range ticker.C {
|
for now := range ticker.C {
|
||||||
trafficStats := CalculateSiteTraffic(api, sites, now.Sub(lastTick))
|
CurrentTraffic = CalculateSiteTraffic(api, sites, now.Sub(lastTick))
|
||||||
fmt.Println(trafficStats)
|
|
||||||
lastTick = now
|
lastTick = now
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user