Skip to content

Commit 2934a09

Browse files
authored
Merge pull request #697 from jmpsec/multiple-fixes-osctrl-cli
Fixed incorrect URL for all `osctrl-api` calls
2 parents 24fc0e1 + 8f49065 commit 2934a09

File tree

11 files changed

+192
-34
lines changed

11 files changed

+192
-34
lines changed

cmd/api/handlers/get.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package handlers
22

33
import (
4+
"fmt"
45
"net/http"
56

7+
"github.com/jmpsec/osctrl/pkg/users"
68
"github.com/jmpsec/osctrl/pkg/utils"
79
)
810

@@ -16,6 +18,32 @@ func (h *HandlersApi) HealthHandler(w http.ResponseWriter, r *http.Request) {
1618
utils.HTTPResponse(w, "", http.StatusOK, []byte(okContent))
1719
}
1820

21+
// CheckHandlerNoAuth - Handle unauthenticated check requests
22+
func (h *HandlersApi) CheckHandlerNoAuth(w http.ResponseWriter, r *http.Request) {
23+
// Debug HTTP if enabled
24+
if h.DebugHTTPConfig.Enabled {
25+
utils.DebugHTTPDump(h.DebugHTTP, r, h.DebugHTTPConfig.ShowBody)
26+
}
27+
// Send response
28+
utils.HTTPResponse(w, "Checked", http.StatusOK, []byte(okContent))
29+
}
30+
31+
// CheckHandlerAuth - Handle authenticated check requests
32+
func (h *HandlersApi) CheckHandlerAuth(w http.ResponseWriter, r *http.Request) {
33+
// Debug HTTP if enabled
34+
if h.DebugHTTPConfig.Enabled {
35+
utils.DebugHTTPDump(h.DebugHTTP, r, h.DebugHTTPConfig.ShowBody)
36+
}
37+
// Get context data and check access
38+
ctx := r.Context().Value(ContextKey(contextAPI)).(ContextValue)
39+
if !h.Users.CheckPermissions(ctx[ctxUser], users.UserLevel, users.NoEnvironment) {
40+
apiErrorResponse(w, "no access", http.StatusForbidden, fmt.Errorf("attempt to use API by user %s", ctx[ctxUser]))
41+
return
42+
}
43+
// Send response
44+
utils.HTTPResponse(w, "Checked", http.StatusOK, []byte(okContent))
45+
}
46+
1947
// RootHandler - Handle root requests
2048
func (h *HandlersApi) RootHandler(w http.ResponseWriter, r *http.Request) {
2149
// Debug HTTP if enabled

cmd/api/main.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ const (
5757
// HTTP errors path
5858
errorPath = "/error"
5959
forbiddenPath = "/forbidden"
60+
// API checks path
61+
checksNoAuthPath = "/checks-no-auth"
62+
checksAuthPath = "/checks-auth"
6063
// API prefix path
6164
apiPrefixPath = "/api"
6265
// API version path
@@ -222,12 +225,16 @@ func osctrlAPIService() {
222225
muxAPI.HandleFunc("GET "+errorPath, handlersApi.ErrorHandler)
223226
// API: forbidden
224227
muxAPI.HandleFunc("GET "+forbiddenPath, handlersApi.ForbiddenHandler)
228+
// API: check status
229+
muxAPI.HandleFunc("GET "+_apiPath(checksNoAuthPath), handlersApi.CheckHandlerNoAuth)
225230

226231
// ///////////////////////// UNAUTHENTICATED
227232
muxAPI.Handle(
228233
"POST "+_apiPath(apiLoginPath)+"/{env}",
229234
handlerAuthCheck(http.HandlerFunc(handlersApi.LoginHandler), flagParams.ConfigValues.Auth, flagParams.JWTConfigValues.JWTSecret))
230235
// ///////////////////////// AUTHENTICATED
236+
// API: check status
237+
muxAPI.HandleFunc("GET "+_apiPath(checksAuthPath), handlersApi.CheckHandlerAuth)
231238
// API: nodes by environment
232239
muxAPI.Handle(
233240
"GET "+_apiPath(apiNodesPath)+"/{env}/all",

cmd/cli/api-carve.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
// GetCarveQueries to retrieve carves from osctrl
1717
func (api *OsctrlAPI) GetCarveQueries(target, env string) ([]queries.DistributedQuery, error) {
1818
var qs []queries.DistributedQuery
19-
reqURL := path.Join(api.Configuration.URL, APIPath, APICarves, env, "queries", target)
19+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APICarves, env, "queries", target))
2020
rawCs, err := api.GetGeneric(reqURL, nil)
2121
if err != nil {
2222
return qs, fmt.Errorf("error api request - %w - %s", err, string(rawCs))
@@ -30,7 +30,7 @@ func (api *OsctrlAPI) GetCarveQueries(target, env string) ([]queries.Distributed
3030
// GetCarves to retrieve carves from osctrl
3131
func (api *OsctrlAPI) GetCarves(env string) ([]carves.CarvedFile, error) {
3232
var cs []carves.CarvedFile
33-
reqURL := path.Join(api.Configuration.URL, APIPath, APICarves, env, "list")
33+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APICarves, env, "list"))
3434
rawCs, err := api.GetGeneric(reqURL, nil)
3535
if err != nil {
3636
return cs, fmt.Errorf("error api request - %w - %s", err, string(rawCs))
@@ -44,7 +44,7 @@ func (api *OsctrlAPI) GetCarves(env string) ([]carves.CarvedFile, error) {
4444
// GetCarve to retrieve one carve from osctrl
4545
func (api *OsctrlAPI) GetCarve(env, name string) (carves.CarvedFile, error) {
4646
var c carves.CarvedFile
47-
reqURL := path.Join(api.Configuration.URL, APIPath, APICarves, env, name)
47+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APICarves, env, name))
4848
rawC, err := api.GetGeneric(reqURL, nil)
4949
if err != nil {
5050
return c, fmt.Errorf("error api request - %w - %s", err, string(rawC))
@@ -58,7 +58,7 @@ func (api *OsctrlAPI) GetCarve(env, name string) (carves.CarvedFile, error) {
5858
// DeleteCarve to delete carve from osctrl
5959
func (api *OsctrlAPI) DeleteCarve(env, name string) (types.ApiGenericResponse, error) {
6060
var r types.ApiGenericResponse
61-
reqURL := path.Join(api.Configuration.URL, APIPath, APICarves, env, settings.CarveDelete, name)
61+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APICarves, env, settings.CarveDelete, name))
6262
rawQ, err := api.PostGeneric(reqURL, nil)
6363
if err != nil {
6464
return r, fmt.Errorf("error api request - %w - %s", err, string(rawQ))
@@ -72,7 +72,7 @@ func (api *OsctrlAPI) DeleteCarve(env, name string) (types.ApiGenericResponse, e
7272
// ExpireCarve to expire carve from osctrl
7373
func (api *OsctrlAPI) ExpireCarve(env, name string) (types.ApiGenericResponse, error) {
7474
var r types.ApiGenericResponse
75-
reqURL := path.Join(api.Configuration.URL, APIPath, APICarves, env, settings.QueryExpire, name)
75+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APICarves, env, settings.QueryExpire, name))
7676
rawQ, err := api.PostGeneric(reqURL, nil)
7777
if err != nil {
7878
return r, fmt.Errorf("error api request - %w - %s", err, string(rawQ))
@@ -86,7 +86,7 @@ func (api *OsctrlAPI) ExpireCarve(env, name string) (types.ApiGenericResponse, e
8686
// CompleteCarve to complete a carve from osctrl
8787
func (api *OsctrlAPI) CompleteCarve(env, name string) (types.ApiGenericResponse, error) {
8888
var r types.ApiGenericResponse
89-
reqURL := path.Join(api.Configuration.URL, APIPath, APICarves, env, settings.CarveComplete, name)
89+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APICarves, env, settings.CarveComplete, name))
9090
rawQ, err := api.PostGeneric(reqURL, nil)
9191
if err != nil {
9292
return r, fmt.Errorf("error api request - %w - %s", err, string(rawQ))
@@ -105,7 +105,7 @@ func (api *OsctrlAPI) RunCarve(env, uuid, fPath string, exp int) (types.ApiQueri
105105
ExpHours: exp,
106106
}
107107
var r types.ApiQueriesResponse
108-
reqURL := path.Join(api.Configuration.URL, APIPath, APICarves, env)
108+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APICarves, env))
109109
jsonMessage, err := json.Marshal(c)
110110
if err != nil {
111111
log.Err(err).Msg("error marshaling data")

cmd/cli/api-environment.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
// GetEnvironments to retrieve all environments from osctrl
1515
func (api *OsctrlAPI) GetEnvironments() ([]environments.TLSEnvironment, error) {
1616
var envs []environments.TLSEnvironment
17-
reqURL := path.Join("%s%s%s", api.Configuration.URL, APIPath, APIEnvironments)
17+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APIEnvironments))
1818
rawEnvs, err := api.GetGeneric(reqURL, nil)
1919
if err != nil {
2020
return envs, fmt.Errorf("error api request - %w - %s", err, string(rawEnvs))
@@ -28,7 +28,7 @@ func (api *OsctrlAPI) GetEnvironments() ([]environments.TLSEnvironment, error) {
2828
// GetEnvironment to retrieve users from osctrl
2929
func (api *OsctrlAPI) GetEnvironment(identifier string) (environments.TLSEnvironment, error) {
3030
var e environments.TLSEnvironment
31-
reqURL := path.Join("%s%s%s/%s", api.Configuration.URL, APIPath, APIEnvironments, identifier)
31+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APIEnvironments, identifier))
3232
rawE, err := api.GetGeneric(reqURL, nil)
3333
if err != nil {
3434
return e, fmt.Errorf("error api request - %w - %s", err, string(rawE))

cmd/cli/api-login.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func (api *OsctrlAPI) PostLogin(env, username, password string, expHours int) (t
2222
return res, fmt.Errorf("error marshaling data %w", err)
2323
}
2424
jsonParam := bytes.NewReader(jsonMessage)
25-
reqURL := path.Join(api.Configuration.URL, APIPath, APILogin, env)
25+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APILogin, env))
2626
rawRes, err := api.PostGeneric(reqURL, jsonParam)
2727
if err != nil {
2828
return res, fmt.Errorf("error api request - %w - %s", err, string(rawRes))

cmd/cli/api-node.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
// GetNodes to retrieve nodes from osctrl
1414
func (api *OsctrlAPI) GetNodes(env, target string) ([]nodes.OsqueryNode, error) {
1515
var nds []nodes.OsqueryNode
16-
reqURL := path.Join(api.Configuration.URL, APIPath, APINodes, env, target)
16+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APINodes, env, target))
1717
rawNodes, err := api.GetGeneric(reqURL, nil)
1818
if err != nil {
1919
return nds, fmt.Errorf("error api request - %w - %s", err, string(rawNodes))
@@ -27,7 +27,7 @@ func (api *OsctrlAPI) GetNodes(env, target string) ([]nodes.OsqueryNode, error)
2727
// GetNode to retrieve one node from osctrl
2828
func (api *OsctrlAPI) GetNode(env, identifier string) (nodes.OsqueryNode, error) {
2929
var node nodes.OsqueryNode
30-
reqURL := path.Join(api.Configuration.URL, APIPath, APINodes, env, "node", identifier)
30+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APINodes, env, "node", identifier))
3131
rawNode, err := api.GetGeneric(reqURL, nil)
3232
if err != nil {
3333
return node, fmt.Errorf("error api request - %w - %s", err, string(rawNode))
@@ -44,7 +44,7 @@ func (api *OsctrlAPI) DeleteNode(env, identifier string) error {
4444
UUID: identifier,
4545
}
4646
var r types.ApiGenericResponse
47-
reqURL := path.Join(api.Configuration.URL, APIPath, APINodes, env, "delete")
47+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APINodes, env, "delete"))
4848
jsonMessage, err := json.Marshal(n)
4949
if err != nil {
5050
return fmt.Errorf("error marshaling data - %w", err)
@@ -68,7 +68,7 @@ func (api *OsctrlAPI) TagNode(env, identifier, tag string, tagType uint) error {
6868
Type: tagType,
6969
}
7070
var r types.ApiGenericResponse
71-
reqURL := path.Join(api.Configuration.URL, APIPath, APINodes, env, "tag")
71+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APINodes, env, "tag"))
7272
jsonMessage, err := json.Marshal(t)
7373
if err != nil {
7474
return fmt.Errorf("error marshaling data - %w", err)
@@ -95,7 +95,7 @@ func (api *OsctrlAPI) LookupNode(identifier string) (nodes.OsqueryNode, error) {
9595
return node, fmt.Errorf("error marshaling data %w", err)
9696
}
9797
jsonParam := bytes.NewReader(jsonMessage)
98-
reqURL := path.Join(api.Configuration.URL, APIPath, APINodes, "lookup")
98+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APINodes, "lookup"))
9999
rawNode, err := api.PostGeneric(reqURL, jsonParam)
100100
if err != nil {
101101
return node, fmt.Errorf("error api request - %w - %s", err, string(rawNode))

cmd/cli/api-query.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
// GetQueries to retrieve queries from osctrl
1515
func (api *OsctrlAPI) GetQueries(target, env string) ([]queries.DistributedQuery, error) {
1616
var qs []queries.DistributedQuery
17-
reqURL := path.Join(api.Configuration.URL, APIPath, APIQueries, env, "list", target)
17+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APIQueries, env, "list", target))
1818
rawQs, err := api.GetGeneric(reqURL, nil)
1919
if err != nil {
2020
return qs, fmt.Errorf("error api request - %w - %s", err, string(rawQs))
@@ -28,7 +28,7 @@ func (api *OsctrlAPI) GetQueries(target, env string) ([]queries.DistributedQuery
2828
// GetQuery to retrieve one query from osctrl
2929
func (api *OsctrlAPI) GetQuery(env, name string) (queries.DistributedQuery, error) {
3030
var q queries.DistributedQuery
31-
reqURL := path.Join(api.Configuration.URL, APIPath, APIQueries, env, name)
31+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APIQueries, env, name))
3232
rawQ, err := api.GetGeneric(reqURL, nil)
3333
if err != nil {
3434
return q, fmt.Errorf("error api request - %w - %s", err, string(rawQ))
@@ -42,7 +42,7 @@ func (api *OsctrlAPI) GetQuery(env, name string) (queries.DistributedQuery, erro
4242
// DeleteQuery to delete query from osctrl
4343
func (api *OsctrlAPI) DeleteQuery(env, name string) (types.ApiGenericResponse, error) {
4444
var r types.ApiGenericResponse
45-
reqURL := path.Join(api.Configuration.URL, APIPath, APIQueries, env, settings.QueryDelete, name)
45+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APIQueries, env, settings.QueryDelete, name))
4646
rawQ, err := api.PostGeneric(reqURL, nil)
4747
if err != nil {
4848
return r, fmt.Errorf("error api request - %w - %s", err, string(rawQ))
@@ -56,7 +56,7 @@ func (api *OsctrlAPI) DeleteQuery(env, name string) (types.ApiGenericResponse, e
5656
// ExpireQuery to expire query from osctrl
5757
func (api *OsctrlAPI) ExpireQuery(env, name string) (types.ApiGenericResponse, error) {
5858
var r types.ApiGenericResponse
59-
reqURL := path.Join(api.Configuration.URL, APIPath, APIQueries, env, settings.QueryExpire, name)
59+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APIQueries, env, settings.QueryExpire, name))
6060
rawQ, err := api.PostGeneric(reqURL, nil)
6161
if err != nil {
6262
return r, fmt.Errorf("error api request - %w - %s", err, string(rawQ))
@@ -70,7 +70,7 @@ func (api *OsctrlAPI) ExpireQuery(env, name string) (types.ApiGenericResponse, e
7070
// CompleteQuery to complete a query from osctrl
7171
func (api *OsctrlAPI) CompleteQuery(env, name string) (types.ApiGenericResponse, error) {
7272
var r types.ApiGenericResponse
73-
reqURL := path.Join(api.Configuration.URL, APIPath, APIQueries, env, settings.QueryComplete, name)
73+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APIQueries, env, settings.QueryComplete, name))
7474
rawQ, err := api.PostGeneric(reqURL, nil)
7575
if err != nil {
7676
return r, fmt.Errorf("error api request - %w - %s", err, string(rawQ))
@@ -90,7 +90,7 @@ func (api *OsctrlAPI) RunQuery(env, uuid, query string, hidden bool, exp int) (t
9090
ExpHours: exp,
9191
}
9292
var r types.ApiQueriesResponse
93-
reqURL := path.Join(api.Configuration.URL, APIPath, APIQueries, env)
93+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APIQueries, env))
9494
jsonMessage, err := json.Marshal(q)
9595
if err != nil {
9696
return r, fmt.Errorf("error marshaling data - %w", err)

cmd/cli/api-tag.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
// GetAllTags to retrieve all tags from osctrl
1414
func (api *OsctrlAPI) GetAllTags() ([]tags.AdminTag, error) {
1515
var tgs []tags.AdminTag
16-
reqURL := path.Join(api.Configuration.URL, APIPath, APITags)
16+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APITags))
1717
rawTgs, err := api.GetGeneric(reqURL, nil)
1818
if err != nil {
1919
return tgs, fmt.Errorf("error api request - %w - %s", err, string(rawTgs))
@@ -27,7 +27,7 @@ func (api *OsctrlAPI) GetAllTags() ([]tags.AdminTag, error) {
2727
// GetTags to retrieve tags from osctrl by environment
2828
func (api *OsctrlAPI) GetTags(env string) ([]tags.AdminTag, error) {
2929
var tgs []tags.AdminTag
30-
reqURL := path.Join(api.Configuration.URL, APIPath, APITags, env)
30+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APITags, env))
3131
rawTgs, err := api.GetGeneric(reqURL, nil)
3232
if err != nil {
3333
return tgs, fmt.Errorf("error api request - %w - %s", err, string(rawTgs))
@@ -41,7 +41,7 @@ func (api *OsctrlAPI) GetTags(env string) ([]tags.AdminTag, error) {
4141
// GetTag to retrieve a tag from osctrl by environment and name
4242
func (api *OsctrlAPI) GetTag(env, name string) (tags.AdminTag, error) {
4343
var t tags.AdminTag
44-
reqURL := path.Join(api.Configuration.URL, APIPath, APITags, env, name)
44+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APITags, env, name))
4545
rawT, err := api.GetGeneric(reqURL, nil)
4646
if err != nil {
4747
return t, fmt.Errorf("error api request - %w - %s", err, string(rawT))
@@ -63,7 +63,7 @@ func (api *OsctrlAPI) AddTag(envUUID, name, color, icon, description string, tag
6363
EnvUUID: envUUID,
6464
TagType: tagType,
6565
}
66-
reqURL := path.Join(api.Configuration.URL, APIPath, APITags, envUUID, tags.ActionAdd)
66+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APITags, envUUID, tags.ActionAdd))
6767
jsonMessage, err := json.Marshal(t)
6868
if err != nil {
6969
return r, fmt.Errorf("error marshaling data - %w", err)
@@ -86,7 +86,7 @@ func (api *OsctrlAPI) DeleteTag(envUUID, name string) (types.ApiGenericResponse,
8686
Name: name,
8787
EnvUUID: envUUID,
8888
}
89-
reqURL := path.Join(api.Configuration.URL, APIPath, APITags, envUUID, tags.ActionRemove)
89+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APITags, envUUID, tags.ActionRemove))
9090
jsonMessage, err := json.Marshal(t)
9191
if err != nil {
9292
return r, fmt.Errorf("error marshaling data - %w", err)
@@ -113,7 +113,7 @@ func (api *OsctrlAPI) EditTag(envUUID, name, color, icon, description string, ta
113113
EnvUUID: envUUID,
114114
TagType: tagType,
115115
}
116-
reqURL := path.Join(api.Configuration.URL, APIPath, APITags, envUUID, tags.ActionEdit)
116+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APITags, envUUID, tags.ActionEdit))
117117
jsonMessage, err := json.Marshal(t)
118118
if err != nil {
119119
return r, fmt.Errorf("error marshaling data - %w", err)

cmd/cli/api-user.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
// GetUsers to retrieve users from osctrl
1414
func (api *OsctrlAPI) GetUsers() ([]users.AdminUser, error) {
1515
var us []users.AdminUser
16-
reqURL := path.Join(api.Configuration.URL, APIPath, APIUSers)
16+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APIUSers))
1717
rawUs, err := api.GetGeneric(reqURL, nil)
1818
if err != nil {
1919
return us, fmt.Errorf("error api request - %w - %s", err, string(rawUs))
@@ -27,7 +27,7 @@ func (api *OsctrlAPI) GetUsers() ([]users.AdminUser, error) {
2727
// GetUser to retrieve one user from osctrl
2828
func (api *OsctrlAPI) GetUser(username string) (users.AdminUser, error) {
2929
var u users.AdminUser
30-
reqURL := path.Join("%s%s%s/%s", api.Configuration.URL, APIPath, APIUSers, username)
30+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APIUSers, username))
3131
rawU, err := api.GetGeneric(reqURL, nil)
3232
if err != nil {
3333
return u, fmt.Errorf("error api request - %w - %s", err, string(rawU))
@@ -44,7 +44,7 @@ func (api *OsctrlAPI) DeleteUser(username string) error {
4444
Username: username,
4545
}
4646
var r types.ApiGenericResponse
47-
reqURL := path.Join(api.Configuration.URL, APIPath, APIUSers, username, users.ActionRemove)
47+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APIUSers, username, users.ActionRemove))
4848
jsonMessage, err := json.Marshal(u)
4949
if err != nil {
5050
return fmt.Errorf("error marshaling data - %w", err)
@@ -72,7 +72,7 @@ func (api *OsctrlAPI) CreateUser(username, password, email, fullname, environmen
7272
Environments: []string{environment},
7373
}
7474
var r types.ApiGenericResponse
75-
reqURL := path.Join(api.Configuration.URL, APIPath, APIUSers, username, users.ActionAdd)
75+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APIUSers, username, users.ActionAdd))
7676
jsonMessage, err := json.Marshal(u)
7777
if err != nil {
7878
return fmt.Errorf("error marshaling data - %w", err)
@@ -91,7 +91,7 @@ func (api *OsctrlAPI) CreateUser(username, password, email, fullname, environmen
9191
// EditUserReq to edit a user in osctrl, it takes a ApiUserRequest as input
9292
func (api *OsctrlAPI) EditUserReq(u types.ApiUserRequest) error {
9393
var r types.ApiGenericResponse
94-
reqURL := path.Join(api.Configuration.URL, APIPath, APIUSers, u.Username, users.ActionEdit)
94+
reqURL := fmt.Sprintf("%s%s", api.Configuration.URL, path.Join(APIPath, APIUSers, u.Username, users.ActionEdit))
9595
jsonMessage, err := json.Marshal(u)
9696
if err != nil {
9797
return fmt.Errorf("error marshaling data - %w", err)

0 commit comments

Comments
 (0)