From 08f04e19efeeda85b6d3479acab1f8955ee5bd95 Mon Sep 17 00:00:00 2001 From: Bezalel Brandwine Date: Wed, 13 Oct 2021 12:24:21 +0300 Subject: [PATCH] fix download framework (create dir if necessary, lower case "download") --- cautils/getter/downloadreleasedpolicy.go | 3 +- cautils/getter/getpoliciesutils.go | 46 +++++++++--------------- cmd/download.go | 2 +- 3 files changed, 19 insertions(+), 32 deletions(-) diff --git a/cautils/getter/downloadreleasedpolicy.go b/cautils/getter/downloadreleasedpolicy.go index 1740888a..cad48259 100644 --- a/cautils/getter/downloadreleasedpolicy.go +++ b/cautils/getter/downloadreleasedpolicy.go @@ -5,6 +5,7 @@ import ( "fmt" "io" "net/http" + "time" "github.com/armosec/kubescape/cautils/opapolicy" ) @@ -22,7 +23,7 @@ type DownloadReleasedPolicy struct { func NewDownloadReleasedPolicy() *DownloadReleasedPolicy { return &DownloadReleasedPolicy{ hostURL: "", - httpClient: &http.Client{}, + httpClient: &http.Client{Timeout: 61 * time.Second}, } } diff --git a/cautils/getter/getpoliciesutils.go b/cautils/getter/getpoliciesutils.go index 8eba7a87..05259f5f 100644 --- a/cautils/getter/getpoliciesutils.go +++ b/cautils/getter/getpoliciesutils.go @@ -5,8 +5,8 @@ import ( "fmt" "io" "net/http" - "net/url" "os" + "path" "path/filepath" "strings" @@ -21,14 +21,26 @@ func GetDefaultPath(name string) string { return defaultfilePath } -func SaveFrameworkInFile(framework *opapolicy.Framework, path string) error { +func SaveFrameworkInFile(framework *opapolicy.Framework, pathStr string) error { encodedData, err := json.Marshal(framework) if err != nil { return err } - err = os.WriteFile(path, []byte(fmt.Sprintf("%v", string(encodedData))), 0644) + err = os.WriteFile(pathStr, []byte(fmt.Sprintf("%v", string(encodedData))), 0644) if err != nil { - return err + if os.IsNotExist(err) { + pathDir := path.Dir(pathStr) + if err := os.Mkdir(pathDir, 0744); err != nil { + return err + } + } else { + return err + + } + err = os.WriteFile(pathStr, []byte(fmt.Sprintf("%v", string(encodedData))), 0644) + if err != nil { + return err + } } return nil } @@ -86,29 +98,3 @@ func httpRespToString(resp *http.Response) (string, error) { return respStr, err } - -// URLEncoder encode url -func urlEncoder(oldURL string) string { - fullURL := strings.Split(oldURL, "?") - baseURL, err := url.Parse(fullURL[0]) - if err != nil { - return "" - } - - // Prepare Query Parameters - if len(fullURL) > 1 { - params := url.Values{} - queryParams := strings.Split(fullURL[1], "&") - for _, i := range queryParams { - queryParam := strings.Split(i, "=") - val := "" - if len(queryParam) > 1 { - val = queryParam[1] - } - params.Add(queryParam[0], val) - } - baseURL.RawQuery = params.Encode() - } - - return baseURL.String() -} diff --git a/cmd/download.go b/cmd/download.go index a27123ac..550c42f8 100644 --- a/cmd/download.go +++ b/cmd/download.go @@ -11,7 +11,7 @@ import ( var downloadInfo cautils.DownloadInfo var downloadCmd = &cobra.Command{ - Use: fmt.Sprintf("Download framework [flags]\nSupported frameworks: %s", validFrameworks), + Use: fmt.Sprintf("download framework [flags]\nSupported frameworks: %s", validFrameworks), Short: "Download framework controls", Long: ``, Args: func(cmd *cobra.Command, args []string) error {