From 0b2d6ba879cad605e86ba71f73e1a992bba9f4ee Mon Sep 17 00:00:00 2001 From: Marcus Sorensen Date: Tue, 7 May 2024 09:05:44 -0600 Subject: [PATCH] Use POST for user sensitive calls --- cloudstack/UserService.go | 4 ++-- cloudstack/VPNService.go | 2 +- generate/generate.go | 16 +++++++++++++++- generate/listApis.json | 6 +++--- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/cloudstack/UserService.go b/cloudstack/UserService.go index d622f39..8aad5de 100644 --- a/cloudstack/UserService.go +++ b/cloudstack/UserService.go @@ -243,7 +243,7 @@ func (s *UserService) NewCreateUserParams(account string, email string, firstnam // Creates a user for an account that already exists func (s *UserService) CreateUser(p *CreateUserParams) (*CreateUserResponse, error) { - resp, err := s.cs.newRequest("createUser", p.toURLValues()) + resp, err := s.cs.newPostRequest("createUser", p.toURLValues()) if err != nil { return nil, err } @@ -1478,7 +1478,7 @@ func (s *UserService) NewUpdateUserParams(id string) *UpdateUserParams { // Updates a user account func (s *UserService) UpdateUser(p *UpdateUserParams) (*UpdateUserResponse, error) { - resp, err := s.cs.newRequest("updateUser", p.toURLValues()) + resp, err := s.cs.newPostRequest("updateUser", p.toURLValues()) if err != nil { return nil, err } diff --git a/cloudstack/VPNService.go b/cloudstack/VPNService.go index 741b935..4cc1050 100644 --- a/cloudstack/VPNService.go +++ b/cloudstack/VPNService.go @@ -191,7 +191,7 @@ func (s *VPNService) NewAddVpnUserParams(password string, username string) *AddV // Adds vpn users func (s *VPNService) AddVpnUser(p *AddVpnUserParams) (*AddVpnUserResponse, error) { - resp, err := s.cs.newRequest("addVpnUser", p.toURLValues()) + resp, err := s.cs.newPostRequest("addVpnUser", p.toURLValues()) if err != nil { return nil, err } diff --git a/generate/generate.go b/generate/generate.go index a671908..2dbb9c6 100644 --- a/generate/generate.go +++ b/generate/generate.go @@ -58,6 +58,20 @@ var detailsRequireZeroIndex = map[string]bool{ "updateAccount": true, } +// requiresPost is a prefilled set of API names that require POST +// for security or size purposes +var requiresPostMethod = map[string]bool{ + "login": true, + "deployVirtualMachine": true, + "updateVirtualMachine": true, + "createUser": true, + "updateUser": true, + "addVpnUser": true, + "registerUserData": true, + "setupUserTwoFactorAuthentication": true, + "validateUserTwoFactorAuthenticationCode": true, +} + var mapRequireList = map[string]map[string]bool{ "deployVirtualMachine": map[string]bool{ "dhcpoptionsnetworklist": true, @@ -1698,7 +1712,7 @@ func (s *service) generateNewAPICallFunc(a *API) { pn(" time.Sleep(500 * time.Millisecond)") pn(" }") } else { - if a.Name == "deployVirtualMachine" || a.Name == "login" || a.Name == "updateVirtualMachine" { + if requiresPostMethod[a.Name] { pn(" resp, err := s.cs.newPostRequest(\"%s\", p.toURLValues())", a.Name) } else { pn(" resp, err := s.cs.newRequest(\"%s\", p.toURLValues())", a.Name) diff --git a/generate/listApis.json b/generate/listApis.json index df050bd..bbc5c76 100644 --- a/generate/listApis.json +++ b/generate/listApis.json @@ -44786,7 +44786,7 @@ ] }, { - "description": "Lists OpenDyalight controllers", + "description": "Lists OpenDaylight controllers", "isasync": false, "name": "listOpenDaylightControllers", "params": [ @@ -55892,7 +55892,7 @@ "since": "4.15.0" }, { - "description": "Removes an OpenDyalight controler", + "description": "Removes an OpenDaylight controller", "isasync": true, "name": "deleteOpenDaylightController", "params": [ @@ -117752,7 +117752,7 @@ ] }, { - "description": "Adds an OpenDyalight controler", + "description": "Adds an OpenDaylight controller", "isasync": true, "name": "addOpenDaylightController", "params": [