mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-05 08:47:35 +08:00
GRA-1298: License check changes, free tier limits for saas (#2418)
* set free tier limits through config * add host limit to config * check for host limit on free tier * fix license validation, replace node limit with hosts * add hosts to telemetry data * debug init * validate license every 1hr * hook manager, api to fetch server usage * hook manager, server usage api * encode json server usage api * update ngork url * update license validation endpoint * avoid setting limits on eer * adding hotfix * correct users limits env var * add comments to exported funcs --------- Co-authored-by: afeiszli <alex.feiszli@gmail.com>
This commit is contained in:
@@ -22,6 +22,38 @@ func serverHandlers(r *mux.Router) {
|
||||
r.HandleFunc("/api/server/getconfig", allowUsers(http.HandlerFunc(getConfig))).Methods(http.MethodGet)
|
||||
r.HandleFunc("/api/server/getserverinfo", Authorize(true, false, "node", http.HandlerFunc(getServerInfo))).Methods(http.MethodGet)
|
||||
r.HandleFunc("/api/server/status", http.HandlerFunc(getStatus)).Methods(http.MethodGet)
|
||||
r.HandleFunc("/api/server/usage", Authorize(true, false, "user", http.HandlerFunc(getUsage))).Methods(http.MethodGet)
|
||||
}
|
||||
func getUsage(w http.ResponseWriter, r *http.Request) {
|
||||
type usage struct {
|
||||
Hosts int `json:"hosts"`
|
||||
Clients int `json:"clients"`
|
||||
Networks int `json:"networks"`
|
||||
Users int `json:"users"`
|
||||
}
|
||||
var serverUsage usage
|
||||
hosts, err := logic.GetAllHosts()
|
||||
if err == nil {
|
||||
serverUsage.Hosts = len(hosts)
|
||||
}
|
||||
clients, err := logic.GetAllExtClients()
|
||||
if err == nil {
|
||||
serverUsage.Clients = len(clients)
|
||||
}
|
||||
users, err := logic.GetUsers()
|
||||
if err == nil {
|
||||
serverUsage.Users = len(users)
|
||||
}
|
||||
networks, err := logic.GetNetworks()
|
||||
if err == nil {
|
||||
serverUsage.Networks = len(networks)
|
||||
}
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(models.SuccessResponse{
|
||||
Code: http.StatusOK,
|
||||
Response: serverUsage,
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
// swagger:route GET /api/server/status server getStatus
|
||||
@@ -41,6 +73,12 @@ func getStatus(w http.ResponseWriter, r *http.Request) {
|
||||
type status struct {
|
||||
DB bool `json:"db_connected"`
|
||||
Broker bool `json:"broker_connected"`
|
||||
Usage struct {
|
||||
Hosts int `json:"hosts"`
|
||||
Clients int `json:"clients"`
|
||||
Networks int `json:"networks"`
|
||||
Users int `json:"users"`
|
||||
} `json:"usage"`
|
||||
}
|
||||
|
||||
currentServerStatus := status{
|
||||
|
Reference in New Issue
Block a user