|
@@ -10,36 +10,60 @@ import (
|
|
|
|
|
|
// limit consts
|
|
|
const (
|
|
|
- node_l = 0
|
|
|
- networks_l = 1
|
|
|
- users_l = 2
|
|
|
- clients_l = 3
|
|
|
+ limitChoiceNetworks = iota
|
|
|
+ limitChoiceUsers
|
|
|
+ limitChoiceMachines
|
|
|
+ limitChoiceIngress
|
|
|
+ limitChoiceEgress
|
|
|
)
|
|
|
|
|
|
-func checkFreeTierLimits(limit_choice int, next http.Handler) http.HandlerFunc {
|
|
|
+func checkFreeTierLimits(limitChoice int, next http.Handler) http.HandlerFunc {
|
|
|
return func(w http.ResponseWriter, r *http.Request) {
|
|
|
var errorResponse = models.ErrorResponse{
|
|
|
- Code: http.StatusForbidden, Message: "free tier limits exceeded on networks",
|
|
|
+ Code: http.StatusForbidden, Message: "free tier limits exceeded on ",
|
|
|
}
|
|
|
|
|
|
- if logic.Free_Tier { // check that free tier limits not exceeded
|
|
|
- if limit_choice == networks_l {
|
|
|
+ if logic.FreeTier { // check that free tier limits not exceeded
|
|
|
+ switch limitChoice {
|
|
|
+ case limitChoiceNetworks:
|
|
|
currentNetworks, err := logic.GetNetworks()
|
|
|
- if (err != nil && !database.IsEmptyRecord(err)) || len(currentNetworks) >= logic.Networks_Limit {
|
|
|
+ if (err != nil && !database.IsEmptyRecord(err)) ||
|
|
|
+ len(currentNetworks) >= logic.NetworksLimit {
|
|
|
+ errorResponse.Message += "networks"
|
|
|
logic.ReturnErrorResponse(w, r, errorResponse)
|
|
|
return
|
|
|
}
|
|
|
- } else if limit_choice == users_l {
|
|
|
+ case limitChoiceUsers:
|
|
|
users, err := logic.GetUsers()
|
|
|
- if (err != nil && !database.IsEmptyRecord(err)) || len(users) >= logic.Users_Limit {
|
|
|
- errorResponse.Message = "free tier limits exceeded on users"
|
|
|
+ if (err != nil && !database.IsEmptyRecord(err)) ||
|
|
|
+ len(users) >= logic.UsersLimit {
|
|
|
+ errorResponse.Message += "users"
|
|
|
logic.ReturnErrorResponse(w, r, errorResponse)
|
|
|
return
|
|
|
}
|
|
|
- } else if limit_choice == clients_l {
|
|
|
- clients, err := logic.GetAllExtClients()
|
|
|
- if (err != nil && !database.IsEmptyRecord(err)) || len(clients) >= logic.Clients_Limit {
|
|
|
- errorResponse.Message = "free tier limits exceeded on external clients"
|
|
|
+ case limitChoiceMachines:
|
|
|
+ hosts, hErr := logic.GetAllHosts()
|
|
|
+ clients, cErr := logic.GetAllExtClients()
|
|
|
+ if (hErr != nil && !database.IsEmptyRecord(hErr)) ||
|
|
|
+ (cErr != nil && !database.IsEmptyRecord(cErr)) ||
|
|
|
+ len(hosts)+len(clients) >= logic.MachinesLimit {
|
|
|
+ errorResponse.Message += "machines"
|
|
|
+ logic.ReturnErrorResponse(w, r, errorResponse)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ case limitChoiceIngress:
|
|
|
+ ingresses, err := logic.GetAllIngresses()
|
|
|
+ if (err != nil && !database.IsEmptyRecord(err)) ||
|
|
|
+ len(ingresses) >= logic.IngressesLimit {
|
|
|
+ errorResponse.Message += "ingresses"
|
|
|
+ logic.ReturnErrorResponse(w, r, errorResponse)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ case limitChoiceEgress:
|
|
|
+ egresses, err := logic.GetAllEgresses()
|
|
|
+ if (err != nil && !database.IsEmptyRecord(err)) ||
|
|
|
+ len(egresses) >= logic.EgressesLimit {
|
|
|
+ errorResponse.Message += "egresses"
|
|
|
logic.ReturnErrorResponse(w, r, errorResponse)
|
|
|
return
|
|
|
}
|