diff --git a/README.md b/README.md index 380d435..916cd52 100644 --- a/README.md +++ b/README.md @@ -207,12 +207,14 @@ On the other hand, profiles are simply objects that contain data used to populat type Profile struct { ID string `json:"id"` // profile ID Description string `json:"description,omitempty"` // profile description - Tags []string `json:"tags,omitempty"` // tags used for filtering (not implemented yet) + Tags []string `json:"tags,omitempty"` // tags used for ... + Paths []string `json:"paths,omitempty"` // paths to download + Plugins []string `json:"plugins,omitempty"` // plugins to run Data map[string]any `json:"data,omitempty"` // include render data } ``` -Profiles can be created using JSON and only require an `id` with optional `data`. See the example in `$MAKESHIFT_ROOT/profiles/default.json`. +Profiles can be created using JSON. See the example in `$MAKESHIFT_ROOT/profiles/default.json`. ```json { @@ -233,9 +235,12 @@ Profiles can be created using JSON and only require an `id` with optional `data` There are some features still missing that will be added later. -1. Running `makeshift` locally with profiles and plugins -2. Plugin to add user data for one-time use without creating a profile -3. Optionally build plugins directly into the main driver -4. Protected routes that require authentication -5. Configuration file for persistent runs -6. `Dockerfile` and `docker-compose.yml` files to build containers \ No newline at end of file +1. Uploading files and directories +2. Uploading new profiles and plugins +3. Running `makeshift` locally with profiles and plugins +4. Plugin to add user data for one-time use without creating a profile +5. Optionally build plugins directly into the main driver +6. Protected routes that require authentication +7. Configuration file for persistent runs +8. `Dockerfile` and `docker-compose.yml` files to build containers +9. Including certs with requests \ No newline at end of file diff --git a/bin/compile-plugins.sh b/bin/compile-plugins.sh old mode 100755 new mode 100644 diff --git a/cmd/delete.go b/cmd/delete.go index 4bdb767..85dbd71 100644 --- a/cmd/delete.go +++ b/cmd/delete.go @@ -24,29 +24,17 @@ var deleteCmd = &cobra.Command{ PersistentPreRun: func(cmd *cobra.Command, args []string) { setenv(cmd, "host", "MAKESHIFT_HOST") setenv(cmd, "path", "MAKESHIFT_PATH") - setenv(cmd, "cacert", "MAKESHIFT_CACERT") }, Run: func(cmd *cobra.Command, args []string) { var ( - host, _ = cmd.Flags().GetString("host") - paths, _ = cmd.Flags().GetStringSlice("path") - cacertPath, _ = cmd.Flags().GetString("cacert") + host, _ = cmd.Flags().GetString("host") + paths, _ = cmd.Flags().GetStringSlice("path") c = client.New(host) res *http.Response query string err error ) - - log.Debug(). - Str("host", host). - Str("cacert", cacertPath). - Send() - - if cacertPath != "" { - c.LoadCertificateFromPath(cacertPath) - } - for _, path := range paths { if path == "" { log.Warn().Msg("skipping empty path") @@ -73,8 +61,7 @@ var deleteProfilesCmd = &cobra.Command{ Short: "Delete profile(s)", Run: func(cmd *cobra.Command, args []string) { var ( - host, _ = cmd.Flags().GetString("host") - cacertPath, _ = cmd.Flags().GetString("cacert") + host, _ = cmd.Flags().GetString("host") c = client.New(host) res *http.Response @@ -82,14 +69,6 @@ var deleteProfilesCmd = &cobra.Command{ err error ) - log.Debug(). - Str("host", host). - Str("cacert", cacertPath). - Send() - - if cacertPath != "" { - c.LoadCertificateFromPath(cacertPath) - } for _, profileID := range args { if profileID == "default" { log.Warn().Msg("cannot delete the default profile") @@ -116,8 +95,7 @@ var deletePluginsCmd = &cobra.Command{ Short: "Delete plugin(s)", Run: func(cmd *cobra.Command, args []string) { var ( - host, _ = cmd.Flags().GetString("host") - cacertPath, _ = cmd.Flags().GetString("cacert") + host, _ = cmd.Flags().GetString("host") c = client.New(host) res *http.Response @@ -125,15 +103,6 @@ var deletePluginsCmd = &cobra.Command{ err error ) - log.Debug(). - Str("host", host). - Str("cacert", cacertPath). - Send() - - if cacertPath != "" { - c.LoadCertificateFromPath(cacertPath) - } - for _, pluginName := range args { query = fmt.Sprintf("/plugins/%s", pluginName) res, _, err = c.MakeRequest(client.HTTPEnvelope{ @@ -147,7 +116,6 @@ var deletePluginsCmd = &cobra.Command{ func init() { deleteCmd.PersistentFlags().String("host", "http://localhost:5050", "Set the makeshift server host (can be set with MAKESHIFT_HOST)") - deleteCmd.PersistentFlags().String("cacert", "", "Set the CA certificate path to load") deleteCmd.Flags().StringSliceP("path", "p", []string{}, "Set the paths to delete files and directories") deleteCmd.AddCommand(deleteProfilesCmd, deletePluginsCmd) diff --git a/cmd/download.go b/cmd/download.go index 03bf061..25e87aa 100644 --- a/cmd/download.go +++ b/cmd/download.go @@ -37,14 +37,12 @@ var downloadCmd = cobra.Command{ PersistentPreRun: func(cmd *cobra.Command, args []string) { setenv(cmd, "host", "MAKESHIFT_HOST") setenv(cmd, "path", "MAKESHIFT_PATH") - setenv(cmd, "cacert", "MAKESHIFT_CACERT") }, Run: func(cmd *cobra.Command, args []string) { var ( host, _ = cmd.Flags().GetString("host") path, _ = cmd.Flags().GetString("path") outputPath, _ = cmd.Flags().GetString("output") - cacertPath, _ = cmd.Flags().GetString("cacert") pluginNames, _ = cmd.Flags().GetStringSlice("plugins") profileIDs, _ = cmd.Flags().GetStringSlice("profiles") extract, _ = cmd.Flags().GetBool("extract") @@ -74,10 +72,6 @@ var downloadCmd = cobra.Command{ Strs("plugins", pluginNames). Send() - if cacertPath != "" { - c.LoadCertificateFromPath(cacertPath) - } - res, body, err = c.MakeRequest(client.HTTPEnvelope{ Path: query, Method: http.MethodGet, @@ -169,7 +163,6 @@ var downloadProfileCmd = &cobra.Command{ var ( host, _ = cmd.Flags().GetString("host") outputPath, _ = cmd.Flags().GetString("output") - cacertPath, _ = cmd.Flags().GetString("cacert") c = client.New(host) res *http.Response @@ -183,10 +176,6 @@ var downloadProfileCmd = &cobra.Command{ Str("output", outputPath). Send() - if cacertPath != "" { - c.LoadCertificateFromPath(cacertPath) - } - for _, profileID := range args { query = fmt.Sprintf("/profiles/%s", profileID) res, body, err = c.MakeRequest(client.HTTPEnvelope{ @@ -230,7 +219,6 @@ var downloadPluginCmd = &cobra.Command{ var ( host, _ = cmd.Flags().GetString("host") outputPath, _ = cmd.Flags().GetString("output") - cacertPath, _ = cmd.Flags().GetString("cacert") c = client.New(host) res *http.Response @@ -244,10 +232,6 @@ var downloadPluginCmd = &cobra.Command{ Str("output", outputPath). Send() - if cacertPath != "" { - c.LoadCertificateFromPath(cacertPath) - } - for _, pluginName := range args { query = fmt.Sprintf("/plugins/%s/raw", pluginName) res, body, err = c.MakeRequest(client.HTTPEnvelope{ @@ -283,7 +267,6 @@ var downloadPluginCmd = &cobra.Command{ func init() { downloadCmd.PersistentFlags().String("host", "http://localhost:5050", "Set the makeshift remote host (can be set with MAKESHIFT_HOST)") downloadCmd.PersistentFlags().StringP("output", "o", "", "Set the output path to write files") - downloadCmd.PersistentFlags().String("cacert", "", "Set the CA certificate path to load") downloadCmd.Flags().StringP("path", "p", ".", "Set the path to list files (can be set with MAKESHIFT_PATH)") downloadCmd.Flags().StringSlice("profiles", []string{}, "Set the profile(s) to use to populate data store") downloadCmd.Flags().StringSlice("plugins", []string{}, "Set the plugin(s) to run before downloading files") diff --git a/cmd/list.go b/cmd/list.go index 4c5898c..1fa3fe6 100644 --- a/cmd/list.go +++ b/cmd/list.go @@ -24,16 +24,14 @@ var listCmd = &cobra.Command{ `, Args: cobra.NoArgs, Short: "List all files in a remote data directory", - PersistentPreRun: func(cmd *cobra.Command, args []string) { + PreRun: func(cmd *cobra.Command, args []string) { setenv(cmd, "host", "MAKESHIFT_HOST") setenv(cmd, "path", "MAKESHIFT_PATH") - setenv(cmd, "cacert", "MAKESHIFT_CACERT") }, Run: func(cmd *cobra.Command, args []string) { var ( - host, _ = cmd.Flags().GetString("host") - path, _ = cmd.Flags().GetString("path") - cacertPath, _ = cmd.Flags().GetString("cacert") + host, _ = cmd.Flags().GetString("host") + path, _ = cmd.Flags().GetString("path") c = client.New(host) body []byte @@ -44,13 +42,8 @@ var listCmd = &cobra.Command{ log.Debug(). Str("host", host). Str("path", path). - Str("cacert", cacertPath). Send() - if cacertPath != "" { - c.LoadCertificateFromPath(cacertPath) - } - // make request to /list endpoint _, body, err = c.MakeRequest(client.HTTPEnvelope{ Path: fmt.Sprintf("/list/%s", path), @@ -87,8 +80,7 @@ var listPluginsCmd = &cobra.Command{ Short: "Show plugins information", Run: func(cmd *cobra.Command, args []string) { var ( - host, _ = cmd.Flags().GetString("host") - cacertPath, _ = cmd.Flags().GetString("cacert") + host, _ = cmd.Flags().GetString("host") c = client.New(host) res *http.Response @@ -98,15 +90,6 @@ var listPluginsCmd = &cobra.Command{ err error ) - log.Debug(). - Str("host", host). - Str("cacert", cacertPath). - Send() - - if cacertPath != "" { - c.LoadCertificateFromPath(cacertPath) - } - if len(args) == 0 { // make request to /list endpoint res, body, err = c.MakeRequest(client.HTTPEnvelope{ @@ -138,19 +121,11 @@ var listPluginsCmd = &cobra.Command{ } var listProfilesCmd = &cobra.Command{ - Use: "profiles", - Example: ` - # list all profiles - makeshift list profiles - - # live individual profiles - makeshift list profiles default custom -`, + Use: "profiles", Short: "Show all available profiles", Run: func(cmd *cobra.Command, args []string) { var ( - host, _ = cmd.Flags().GetString("host") - cacertPath, _ = cmd.Flags().GetString("cacert") + host, _ = cmd.Flags().GetString("host") c = client.New(host) res *http.Response @@ -160,15 +135,6 @@ var listProfilesCmd = &cobra.Command{ err error ) - log.Debug(). - Str("host", host). - Str("cacert", cacertPath). - Send() - - if cacertPath != "" { - c.LoadCertificateFromPath(cacertPath) - } - if len(args) == 0 { // make request to /list endpoint res, body, err = c.MakeRequest(client.HTTPEnvelope{ @@ -188,7 +154,7 @@ var listProfilesCmd = &cobra.Command{ // make request to /list endpoint query = fmt.Sprintf("/profiles/%s", profileID) res, body, err = c.MakeRequest(client.HTTPEnvelope{ - Path: query, + Path: fmt.Sprintf(query), Method: http.MethodGet, }) handleResponseError(res, host, query, err) @@ -208,7 +174,6 @@ var listProfilesCmd = &cobra.Command{ func init() { listCmd.PersistentFlags().String("host", "http://localhost:5050", "Set the configurator remote host (can be set with MAKESHIFT_HOST)") - listCmd.PersistentFlags().String("cacert", "", "Set the CA certificate path to load") listCmd.Flags().StringP("path", "p", ".", "Set the path to list files (can be set with MAKESHIFT_PATH)") listCmd.AddCommand(listPluginsCmd, listProfilesCmd) diff --git a/cmd/serve.go b/cmd/serve.go index 9c8c046..22c793c 100644 --- a/cmd/serve.go +++ b/cmd/serve.go @@ -23,16 +23,12 @@ var serveCmd = &cobra.Command{ setenv(cmd, "host", "MAKESHIFT_HOST") setenv(cmd, "root", "MAKESHIFT_ROOT") setenv(cmd, "timeout", "MAKESHIFT_TIMEOUT") - setenv(cmd, "cacert", "MAKESHIFT_CACERT") - setenv(cmd, "keyfile", "MAKESHIFT_KEYFILE") }, Run: func(cmd *cobra.Command, args []string) { var ( - host, _ = cmd.Flags().GetString("host") - rootPath, _ = cmd.Flags().GetString("root") - cacertPath, _ = cmd.Flags().GetString("cacert") - keyfile, _ = cmd.Flags().GetString("keyfile") - timeout, _ = cmd.Flags().GetInt("timeout") + host, _ = cmd.Flags().GetString("host") + rootPath, _ = cmd.Flags().GetString("root") + timeout, _ = cmd.Flags().GetInt("timeout") parsed *url.URL server *service.Service @@ -51,8 +47,6 @@ var serveCmd = &cobra.Command{ server = service.New() server.Addr = parsed.Host server.RootPath = rootPath - server.CACertFile = cacertPath - server.CACertKeyfile = keyfile server.Timeout = time.Duration(timeout) * time.Second // show some debugging information @@ -60,8 +54,6 @@ var serveCmd = &cobra.Command{ Str("host", parsed.Host). Any("paths", map[string]string{ "root": rootPath, - "cacert": cacertPath, - "keyfile": keyfile, "data": server.PathForData(), "profiles": server.PathForProfiles(), "plugins": server.PathForPlugins(), @@ -92,10 +84,6 @@ func init() { serveCmd.Flags().String("host", "localhost:5050", "Set the configurator server host (can be set with MAKESHIFT_HOST)") serveCmd.Flags().String("root", "./", "Set the root path to serve files (can be set with MAKESHIFT_ROOT)") serveCmd.Flags().IntP("timeout", "t", 60, "Set the timeout in seconds for requests (can be set with MAKESHIFT_TIMEOUT)") - serveCmd.Flags().String("cacert", "", "Set the CA certificate path to load (can be set with MAKESHIFT_CACERT)") - serveCmd.Flags().String("keyfile", "", "Set the CA key file to use (can be set with MAKESHIFT_KEYFILE)") - - serveCmd.MarkFlagsRequiredTogether("cacert", "keyfile") rootCmd.AddCommand(serveCmd) } diff --git a/cmd/upload.go b/cmd/upload.go index b4d09cb..4472a18 100644 --- a/cmd/upload.go +++ b/cmd/upload.go @@ -4,8 +4,6 @@ import ( "bufio" "encoding/json" "fmt" - "io/fs" - "maps" "net/http" "os" "path/filepath" @@ -43,14 +41,12 @@ var uploadCmd = &cobra.Command{ PersistentPreRun: func(cmd *cobra.Command, args []string) { setenv(cmd, "host", "MAKESHIFT_HOST") setenv(cmd, "path", "MAKESHIFT_PATH") - setenv(cmd, "cacert", "MAKESHIFT_CACERT") }, Run: func(cmd *cobra.Command, args []string) { var ( - host, _ = cmd.Flags().GetString("host") - path, _ = cmd.Flags().GetString("path") - cacertPath, _ = cmd.Flags().GetString("cacert") - dataArgs, _ = cmd.Flags().GetStringArray("data") + host, _ = cmd.Flags().GetString("host") + path, _ = cmd.Flags().GetString("path") + dataArgs, _ = cmd.Flags().GetStringArray("data") inputData = processFiles(dataArgs) useDirectoryPath = len(inputData) > 1 @@ -59,21 +55,8 @@ var uploadCmd = &cobra.Command{ query string err error ) - - log.Debug(). - Str("host", host). - Str("path", path). - Str("query", query). - Str("cacert", cacertPath). - Any("input", inputData). - Send() - - if cacertPath != "" { - c.LoadCertificateFromPath(cacertPath) - } - for inputPath, contents := range inputData { - log.Debug().Str("path", path).Int("size", len(contents)).Send() + log.Info().Str("path", path).Int("size", len(contents)).Send() if useDirectoryPath { query = path + "/" + filepath.Clean(inputPath) } else { @@ -109,10 +92,9 @@ var uploadProfilesCmd = &cobra.Command{ Short: "Upload a new profile", Run: func(cmd *cobra.Command, args []string) { var ( - host, _ = cmd.Flags().GetString("host") - dataArgs, _ = cmd.Flags().GetStringArray("data") - cacertPath, _ = cmd.Flags().GetString("cacert") - profiles = processProfiles(dataArgs) + host, _ = cmd.Flags().GetString("host") + dataArgs, _ = cmd.Flags().GetStringArray("data") + profiles = processProfiles(dataArgs) c = client.New(host) res *http.Response @@ -121,16 +103,6 @@ var uploadProfilesCmd = &cobra.Command{ err error ) - log.Debug(). - Str("host", host). - Str("query", query). - Str("cacert", cacertPath). - Send() - - if cacertPath != "" { - c.LoadCertificateFromPath(cacertPath) - } - // load files from args for i, path := range args { body, err = os.ReadFile(path) @@ -188,9 +160,8 @@ var uploadPluginsCmd = &cobra.Command{ // make one request be host positional argument (restricted to 1 for now) // temp := append(handleArgs(args), processDataArgs(dataArgs)...) var ( - host, _ = cmd.Flags().GetString("host") - dataArgs, _ = cmd.Flags().GetStringArray("data") - cacertPath, _ = cmd.Flags().GetString("cacert") + host, _ = cmd.Flags().GetString("host") + dataArgs, _ = cmd.Flags().GetStringArray("data") plugins = processFiles(dataArgs) c = client.New(host) @@ -201,16 +172,6 @@ var uploadPluginsCmd = &cobra.Command{ err error ) - log.Debug(). - Str("host", host). - Str("query", query). - Str("cacert", cacertPath). - Send() - - if cacertPath != "" { - c.LoadCertificateFromPath(cacertPath) - } - // load files from args for i, path := range args { body, err = os.ReadFile(path) @@ -247,8 +208,6 @@ var uploadPluginsCmd = &cobra.Command{ func init() { uploadCmd.PersistentFlags().String("host", "http://localhost:5050", "Set the makeshift remote host (can be set with MAKESHIFT_HOST)") uploadCmd.PersistentFlags().StringArrayP("data", "d", []string{}, "Set the data to send to specified host (prepend @ for files)") - uploadCmd.PersistentFlags().String("cacert", "", "Set the CA certificate path to load") - uploadCmd.Flags().StringP("path", "p", ".", "Set the path to list files (can be set with MAKESHIFT_PATH)") uploadProfilesCmd.Flags().VarP(&inputFormat, "format", "F", "Set the input format for profile") @@ -261,27 +220,31 @@ func processFiles(args []string) map[string][]byte { // load data either from file or directly from args var collection = make(map[string][]byte, len(args)) for _, arg := range args { - // skip empty string args + // if arg is empty string, then skip and continue if len(arg) > 0 { // determine if we're reading from file to load contents if strings.HasPrefix(arg, "@") { - var path string = strings.TrimLeft(arg, "@") - - // process sub-directories recursively - newCollection, err := processDir(path) + var ( + path string = strings.TrimLeft(arg, "@") + contents []byte + err error + ) + contents, err = os.ReadFile(path) if err != nil { - log.Warn(). - Err(err). - Str("path", path). - Msg("failed to process directory at path") + log.Error().Err(err).Str("path", path).Msg("failed to read file") + continue } - log.Trace(). - Str("path", path). - Msg("new collection added at path") - maps.Copy(collection, newCollection) + // skip empty files + if len(contents) == 0 { + log.Warn().Str("path", path).Msg("file is empty") + continue + } + + // add loaded data to collection of all data + collection[path] = contents } else { - log.Warn().Msg("only files can be uploaded (add @ before the path with '--data' flag)") + log.Warn().Msg("only files can be uploaded (add @ before the path)") continue } @@ -312,28 +275,20 @@ func processProfiles(args []string) []*makeshift.Profile { ) contents, err = os.ReadFile(path) if err != nil { - log.Error(). - Err(err). - Str("path", path). - Msg("failed to read file") + log.Error().Err(err).Str("path", path).Msg("failed to read file") continue } // skip empty files if len(contents) == 0 { - log.Warn(). - Str("path", path). - Msg("file is empty") + log.Warn().Str("path", path).Msg("file is empty") continue } // convert/validate input data data, err = parseProfile(contents, format.DataFormatFromFileExt(path, inputFormat)) if err != nil { - log.Error(). - Err(err). - Str("path", path). - Msg("failed to validate input from file") + log.Error().Err(err).Str("path", path).Msg("failed to validate input from file") } // add loaded data to collection of all data @@ -351,9 +306,7 @@ func processProfiles(args []string) []*makeshift.Profile { } err = json.Unmarshal(input, &data) if err != nil { - log.Error(). - Err(err). - Msgf("failed to unmarshal input for argument %d", i) + log.Error().Err(err).Msgf("failed to unmarshal input for argument %d", i) } return []*makeshift.Profile{data} } @@ -362,73 +315,6 @@ func processProfiles(args []string) []*makeshift.Profile { return collection } -func processDir(path string) (map[string][]byte, error) { - var ( - collection = map[string][]byte{} - fileInfo os.FileInfo - contents []byte - err error - ) - // determine if path is directory - if fileInfo, err = os.Stat(path); err == nil { - if fileInfo.IsDir() { - filepath.WalkDir(path, func(path string, d fs.DirEntry, err error) error { - if !d.IsDir() { - contents, err = os.ReadFile(path) - if err != nil { - log.Error().Err(err).Str("path", path).Msg("failed to read file") - return nil - } - - // skip empty files - if len(contents) == 0 { - log.Warn().Str("path", path).Msg("file is empty") - return nil - } - - log.Debug(). - Str("path", path). - Msg("file added to collection") - - // add loaded data to collection of all data - collection[path] = contents - } else { - // process sub-directories recursively - newCollection, err := processDir(path) - if err != nil { - return fmt.Errorf("failed to process directory at path '%s': %v", path, err) - } - log.Trace(). - Str("path", path). - Msg("new collection added from nested directory") - maps.Copy(collection, newCollection) - } - return nil - }) - } else { - contents, err = os.ReadFile(path) - if err != nil { - return collection, fmt.Errorf("failed to read file at path '%s': %v", path, err) - } - - // skip empty files - if len(contents) == 0 { - return collection, fmt.Errorf("file is empty") - } - - log.Debug(). - Str("path", path). - Msg("file added to collection") - - // add loaded data to collection of all data - collection[path] = contents - } - } else { - return nil, fmt.Errorf("failed to stat file: %v", err) - } - return collection, nil -} - func parseProfile(contents []byte, dataFormat format.DataFormat) (*makeshift.Profile, error) { var ( data *makeshift.Profile diff --git a/internal/archive/archive.go b/internal/archive/archive.go index 4fadf22..eaf6412 100644 --- a/internal/archive/archive.go +++ b/internal/archive/archive.go @@ -133,18 +133,10 @@ func addToArchive(tw *tar.Writer, filename string, hooks []makeshift.Hook) error } hook.Data.Set("file", contents) - err = hook.Init() - if err != nil { - return err - } err = hook.Run() if err != nil { return err } - err = hook.Cleanup() - if err != nil { - return err - } // create temporary file to use to add to archive hook = hooks[len(hooks)-1] diff --git a/pkg/models.go b/pkg/models.go index ff2e823..1b45444 100644 --- a/pkg/models.go +++ b/pkg/models.go @@ -29,18 +29,10 @@ type Hook struct { Plugin Plugin } -func (h *Hook) Init() error { - return h.Plugin.Init() -} - func (h *Hook) Run() error { return h.Plugin.Run(h.Data, h.Args) } -func (h *Hook) Cleanup() error { - return h.Plugin.Cleanup() -} - func PluginToMap(p Plugin) map[string]any { return map[string]any{ "name": p.Name(), diff --git a/pkg/service/routes.go b/pkg/service/routes.go index 7d371c9..b5dd890 100644 --- a/pkg/service/routes.go +++ b/pkg/service/routes.go @@ -142,14 +142,6 @@ func (s *Service) Download() http.HandlerFunc { "version": hook.Plugin.Version(), }, }).Send() - err = hook.Init() - if err != nil { - log.Error(). - Err(err). - Str("plugin", hook.Plugin.Name()). - Msg("failed to initialize plugin") - continue - } err = hook.Run() if err != nil { log.Error(). @@ -158,14 +150,6 @@ func (s *Service) Download() http.HandlerFunc { Msg("failed to run plugin") continue } - err = hook.Cleanup() - if err != nil { - log.Error(). - Err(err). - Str("plugin", hook.Plugin.Name()). - Msg("failed to cleanup plugin") - continue - } } // take the contents from the last hook and update files @@ -206,9 +190,7 @@ func (s *Service) Upload() http.HandlerFunc { ) // show what we're uploading - log.Debug(). - Str("path", path). - Msg("Service.Upload()") + log.Debug().Str("path", path).Msg("Service.Upload()") // take the provided path and store the file contents dirpath = filepath.Dir(path) @@ -314,7 +296,7 @@ func (s *Service) loadProfiles(profileIDs []string, store storage.KVStore, errs profile *makeshift.Profile err error ) - if i > s.ProfilesMaxCount { + if i > DEFAULT_PROFILES_MAX_COUNT { log.Warn().Msg("max profiles count reached...stopping") return errs } @@ -347,7 +329,7 @@ func (s *Service) loadPlugins(pluginNames []string, store storage.KVStore, args plugin makeshift.Plugin err error ) - if i > s.PluginsMaxCount { + if i > DEFAULT_PLUGINS_MAX_COUNT { log.Warn().Msg("max plugins count reached or exceeded...stopping") return hooks, errs } diff --git a/pkg/service/service.go b/pkg/service/service.go index 7197876..362a08c 100644 --- a/pkg/service/service.go +++ b/pkg/service/service.go @@ -19,10 +19,9 @@ import ( ) type Service struct { - Addr string - RootPath string `yaml:"root,omitempty"` - CACertFile string `yaml:"cacert,omitempty"` - CACertKeyfile string `yaml:"keyfile,omitempty"` + Addr string + RootPath string `yaml:"root,omitempty"` + Environment map[string]string // max counts PluginsMaxCount int @@ -33,8 +32,13 @@ type Service struct { // New creates a new Service instance with default values func New() *Service { return &Service{ - Addr: ":5050", - RootPath: "./", + Addr: ":5050", + RootPath: "./", + Environment: map[string]string{ + "MAKESHIFT_HOST": "", + "MAKESHIFT_ROOT": "", + "ACCESS_TOKEN": "", + }, PluginsMaxCount: DEFAULT_PLUGINS_MAX_COUNT, ProfilesMaxCount: DEFAULT_PROFILES_MAX_COUNT, Timeout: DEFAULT_TIMEOUT_IN_SECS, @@ -117,11 +121,7 @@ func (s *Service) Serve() error { // always available public routes go here router.HandleFunc("/status", s.GetStatus) - if s.CACertFile != "" && s.CACertKeyfile != "" { - return http.ListenAndServeTLS(s.Addr, s.CACertFile, s.CACertKeyfile, router) - } else { - return http.ListenAndServe(s.Addr, router) - } + return http.ListenAndServe(s.Addr, router) } func (s *Service) requireAuth() bool {