mirror of
				https://github.com/ClusterCockpit/cc-backend
				synced 2025-11-04 01:25:06 +01:00 
			
		
		
		
	Cleanup and add wildcard for IP Filter
This commit is contained in:
		@@ -193,6 +193,10 @@ func securedCheck(r *http.Request) error {
 | 
				
			|||||||
			return fmt.Errorf("missing configuration key ApiAllowedIPs")
 | 
								return fmt.Errorf("missing configuration key ApiAllowedIPs")
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if config.Keys.ApiAllowedIPs[0] == "*" {
 | 
				
			||||||
 | 
								return nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// extract IP address
 | 
							// extract IP address
 | 
				
			||||||
		IPAddress := r.Header.Get("X-Real-Ip")
 | 
							IPAddress := r.Header.Get("X-Real-Ip")
 | 
				
			||||||
		if IPAddress == "" {
 | 
							if IPAddress == "" {
 | 
				
			||||||
@@ -1130,71 +1134,6 @@ func (api *RestApi) updateUser(rw http.ResponseWriter, r *http.Request) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// func (api *RestApi) secureUpdateUser(rw http.ResponseWriter, r *http.Request) {
 | 
					 | 
				
			||||||
// 	if user := auth.GetUser(r.Context()); user != nil && !user.HasRole(auth.RoleApi) {
 | 
					 | 
				
			||||||
// 		handleError(fmt.Errorf("missing role: %v", auth.GetRoleString(auth.RoleApi)), http.StatusForbidden, rw)
 | 
					 | 
				
			||||||
// 		return
 | 
					 | 
				
			||||||
// 	}
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 	// IP CHECK HERE (WIP)
 | 
					 | 
				
			||||||
// 	// Probably better as private routine
 | 
					 | 
				
			||||||
// 	IPAddress := r.Header.Get("X-Real-Ip")
 | 
					 | 
				
			||||||
// 	if IPAddress == "" {
 | 
					 | 
				
			||||||
// 		IPAddress = r.Header.Get("X-Forwarded-For")
 | 
					 | 
				
			||||||
// 	}
 | 
					 | 
				
			||||||
// 	if IPAddress == "" {
 | 
					 | 
				
			||||||
// 		IPAddress = r.RemoteAddr
 | 
					 | 
				
			||||||
// 	}
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 	// Also This
 | 
					 | 
				
			||||||
// 	ipOk := false
 | 
					 | 
				
			||||||
// 	for _, a := range config.Keys.ApiAllowedAddrs {
 | 
					 | 
				
			||||||
// 		if a == IPAddress {
 | 
					 | 
				
			||||||
// 			ipOk = true
 | 
					 | 
				
			||||||
// 		}
 | 
					 | 
				
			||||||
// 	}
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 	if IPAddress == "" || ipOk == false {
 | 
					 | 
				
			||||||
// 		handleError(fmt.Errorf("unknown ip: %v", IPAddress), http.StatusForbidden, rw)
 | 
					 | 
				
			||||||
// 		return
 | 
					 | 
				
			||||||
// 	}
 | 
					 | 
				
			||||||
// 	// IP CHECK END
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 	// Get Values
 | 
					 | 
				
			||||||
// 	id := mux.Vars(r)["id"]
 | 
					 | 
				
			||||||
// 	newproj := mux.Vars(r)["project"]
 | 
					 | 
				
			||||||
// 	newrole := mux.Vars(r)["role"]
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 	// TODO: Handle anything but roles...
 | 
					 | 
				
			||||||
// 	if newrole != "" {
 | 
					 | 
				
			||||||
// 		if err := api.Authentication.AddRole(r.Context(), id, newrole); err != nil {
 | 
					 | 
				
			||||||
// 			handleError(errors.New(err.Error()), http.StatusUnprocessableEntity, rw)
 | 
					 | 
				
			||||||
// 			return
 | 
					 | 
				
			||||||
// 		}
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 		rw.Header().Add("Content-Type", "application/json")
 | 
					 | 
				
			||||||
// 		rw.WriteHeader(http.StatusOK)
 | 
					 | 
				
			||||||
// 		json.NewEncoder(rw).Encode(UpdateUserApiResponse{
 | 
					 | 
				
			||||||
// 			Message: fmt.Sprintf("Successfully added role %s to %s", newrole, id),
 | 
					 | 
				
			||||||
// 		})
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 	} else if newproj != "" {
 | 
					 | 
				
			||||||
// 		if err := api.Authentication.AddProject(r.Context(), id, newproj); err != nil {
 | 
					 | 
				
			||||||
// 			handleError(errors.New(err.Error()), http.StatusUnprocessableEntity, rw)
 | 
					 | 
				
			||||||
// 			return
 | 
					 | 
				
			||||||
// 		}
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 		rw.Header().Add("Content-Type", "application/json")
 | 
					 | 
				
			||||||
// 		rw.WriteHeader(http.StatusOK)
 | 
					 | 
				
			||||||
// 		json.NewEncoder(rw).Encode(UpdateUserApiResponse{
 | 
					 | 
				
			||||||
// 			Message: fmt.Sprintf("Successfully added project %s to %s", newproj, id),
 | 
					 | 
				
			||||||
// 		})
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 	} else {
 | 
					 | 
				
			||||||
// 		handleError(errors.New("Not Add [role|project]?"), http.StatusBadRequest, rw)
 | 
					 | 
				
			||||||
// 	}
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (api *RestApi) updateConfiguration(rw http.ResponseWriter, r *http.Request) {
 | 
					func (api *RestApi) updateConfiguration(rw http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
	rw.Header().Set("Content-Type", "text/plain")
 | 
						rw.Header().Set("Content-Type", "text/plain")
 | 
				
			||||||
	key, value := r.FormValue("key"), r.FormValue("value")
 | 
						key, value := r.FormValue("key"), r.FormValue("value")
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user