From eedf5e3ccefb145419468409478b10d8b0d13f1d Mon Sep 17 00:00:00 2001 From: marco Date: Wed, 29 Jan 2025 16:50:34 +0100 Subject: [PATCH 1/3] don't ask user to reload systemd service when running in docker --- cmd/crowdsec-cli/clicapi/capi.go | 4 +++- cmd/crowdsec-cli/cliconsole/console.go | 8 ++++++-- cmd/crowdsec-cli/clihub/hub.go | 4 ++-- cmd/crowdsec-cli/cliitem/cmdinstall.go | 4 ++-- cmd/crowdsec-cli/cliitem/cmdremove.go | 4 ++-- cmd/crowdsec-cli/cliitem/cmdupgrade.go | 4 ++-- cmd/crowdsec-cli/clilapi/register.go | 4 +++- cmd/crowdsec-cli/clisimulation/simulation.go | 4 ++-- cmd/crowdsec-cli/reload/message.go | 6 ++++++ .../{reload_freebsd.go => message_freebsd.go} | 2 +- .../reload/{reload_linux.go => message_linux.go} | 2 +- cmd/crowdsec-cli/reload/message_windows.go | 3 +++ cmd/crowdsec-cli/reload/reload.go | 15 +++++++++++---- cmd/crowdsec-cli/reload/reload_windows.go | 3 --- 14 files changed, 44 insertions(+), 23 deletions(-) create mode 100644 cmd/crowdsec-cli/reload/message.go rename cmd/crowdsec-cli/reload/{reload_freebsd.go => message_freebsd.go} (64%) rename cmd/crowdsec-cli/reload/{reload_linux.go => message_linux.go} (62%) create mode 100644 cmd/crowdsec-cli/reload/message_windows.go delete mode 100644 cmd/crowdsec-cli/reload/reload_windows.go diff --git a/cmd/crowdsec-cli/clicapi/capi.go b/cmd/crowdsec-cli/clicapi/capi.go index 120acca8b59..d134e04e44c 100644 --- a/cmd/crowdsec-cli/clicapi/capi.go +++ b/cmd/crowdsec-cli/clicapi/capi.go @@ -123,7 +123,9 @@ func (cli *cliCapi) register(ctx context.Context, capiUserPrefix string, outputF fmt.Println(string(apiConfigDump)) } - log.Warning(reload.Message) + if reload.UserMessage() != "" { + log.Warning(reload.UserMessage()) + } return nil } diff --git a/cmd/crowdsec-cli/cliconsole/console.go b/cmd/crowdsec-cli/cliconsole/console.go index dbbe2487cd4..821e717fd64 100644 --- a/cmd/crowdsec-cli/cliconsole/console.go +++ b/cmd/crowdsec-cli/cliconsole/console.go @@ -214,7 +214,9 @@ Enable given information push to the central API. Allows to empower the console` log.Infof("%v have been enabled", args) } - log.Info(reload.Message) + if reload.UserMessage() != "" { + log.Info(reload.UserMessage()) + } return nil }, @@ -248,7 +250,9 @@ Disable given information push to the central API.`, log.Infof("%v have been disabled", args) } - log.Info(reload.Message) + if reload.UserMessage() != "" { + log.Info(reload.UserMessage()) + } return nil }, diff --git a/cmd/crowdsec-cli/clihub/hub.go b/cmd/crowdsec-cli/clihub/hub.go index 0d1e625f715..1c6a99b12ed 100644 --- a/cmd/crowdsec-cli/clihub/hub.go +++ b/cmd/crowdsec-cli/clihub/hub.go @@ -193,8 +193,8 @@ func (cli *cliHub) upgrade(ctx context.Context, yes bool, dryRun bool, force boo return err } - if plan.ReloadNeeded { - fmt.Println("\n" + reload.Message) + if plan.ReloadNeeded && reload.UserMessage() != "" { + fmt.Println("\n" + reload.UserMessage()) } return nil diff --git a/cmd/crowdsec-cli/cliitem/cmdinstall.go b/cmd/crowdsec-cli/cliitem/cmdinstall.go index daddbe84a4b..daeebc45832 100644 --- a/cmd/crowdsec-cli/cliitem/cmdinstall.go +++ b/cmd/crowdsec-cli/cliitem/cmdinstall.go @@ -88,8 +88,8 @@ func (cli cliItem) install(ctx context.Context, args []string, yes bool, dryRun log.Error(err) } - if plan.ReloadNeeded { - fmt.Println("\n" + reload.Message) + if plan.ReloadNeeded && reload.UserMessage() != "" { + fmt.Println("\n" + reload.UserMessage()) } return nil diff --git a/cmd/crowdsec-cli/cliitem/cmdremove.go b/cmd/crowdsec-cli/cliitem/cmdremove.go index ac9410c047d..7a020c1a551 100644 --- a/cmd/crowdsec-cli/cliitem/cmdremove.go +++ b/cmd/crowdsec-cli/cliitem/cmdremove.go @@ -104,8 +104,8 @@ func (cli cliItem) remove(ctx context.Context, args []string, yes bool, dryRun b return err } - if plan.ReloadNeeded { - fmt.Println("\n" + reload.Message) + if plan.ReloadNeeded && reload.UserMessage() != "" { + fmt.Println("\n" + reload.UserMessage()) } return nil diff --git a/cmd/crowdsec-cli/cliitem/cmdupgrade.go b/cmd/crowdsec-cli/cliitem/cmdupgrade.go index 1ddd07485d4..0bf5cd6886f 100644 --- a/cmd/crowdsec-cli/cliitem/cmdupgrade.go +++ b/cmd/crowdsec-cli/cliitem/cmdupgrade.go @@ -66,8 +66,8 @@ func (cli cliItem) upgrade(ctx context.Context, args []string, yes bool, dryRun return err } - if plan.ReloadNeeded { - fmt.Println("\n" + reload.Message) + if plan.ReloadNeeded && reload.UserMessage() != "" { + fmt.Println("\n" + reload.UserMessage()) } return nil diff --git a/cmd/crowdsec-cli/clilapi/register.go b/cmd/crowdsec-cli/clilapi/register.go index e8eb7ddc543..8eabdcb694c 100644 --- a/cmd/crowdsec-cli/clilapi/register.go +++ b/cmd/crowdsec-cli/clilapi/register.go @@ -87,7 +87,9 @@ func (cli *cliLapi) register(ctx context.Context, apiURL string, outputFile stri fmt.Printf("%s\n", string(apiConfigDump)) } - log.Warning(reload.Message) + if reload.UserMessage() != "" { + log.Warning(reload.UserMessage()) + } return nil } diff --git a/cmd/crowdsec-cli/clisimulation/simulation.go b/cmd/crowdsec-cli/clisimulation/simulation.go index c06db56f200..c11bfdbf1e4 100644 --- a/cmd/crowdsec-cli/clisimulation/simulation.go +++ b/cmd/crowdsec-cli/clisimulation/simulation.go @@ -47,8 +47,8 @@ cscli simulation disable crowdsecurity/ssh-bf`, return nil }, PersistentPostRun: func(cmd *cobra.Command, _ []string) { - if cmd.Name() != "status" { - log.Info(reload.Message) + if cmd.Name() != "status" && reload.UserMessage() != "" { + log.Info(reload.UserMessage()) } }, } diff --git a/cmd/crowdsec-cli/reload/message.go b/cmd/crowdsec-cli/reload/message.go new file mode 100644 index 00000000000..cd8e7d4795f --- /dev/null +++ b/cmd/crowdsec-cli/reload/message.go @@ -0,0 +1,6 @@ +//go:build !windows && !freebsd && !linux + +package reload + +// generic message since we don't know the platform +const message = "Please reload the crowdsec process for the new configuration to be effective." diff --git a/cmd/crowdsec-cli/reload/reload_freebsd.go b/cmd/crowdsec-cli/reload/message_freebsd.go similarity index 64% rename from cmd/crowdsec-cli/reload/reload_freebsd.go rename to cmd/crowdsec-cli/reload/message_freebsd.go index 0dac99f2315..9328f935be8 100644 --- a/cmd/crowdsec-cli/reload/reload_freebsd.go +++ b/cmd/crowdsec-cli/reload/message_freebsd.go @@ -1,4 +1,4 @@ package reload // actually sudo is not that popular on freebsd, but this will do -const Message = "Run 'sudo service crowdsec reload' for the new configuration to be effective." +const message = "Run 'sudo service crowdsec reload' for the new configuration to be effective." diff --git a/cmd/crowdsec-cli/reload/reload_linux.go b/cmd/crowdsec-cli/reload/message_linux.go similarity index 62% rename from cmd/crowdsec-cli/reload/reload_linux.go rename to cmd/crowdsec-cli/reload/message_linux.go index fbe16e5f168..11c95165372 100644 --- a/cmd/crowdsec-cli/reload/reload_linux.go +++ b/cmd/crowdsec-cli/reload/message_linux.go @@ -1,4 +1,4 @@ package reload // assume systemd, although gentoo and others may differ -const Message = "Run 'sudo systemctl reload crowdsec' for the new configuration to be effective." +const message = "Run 'sudo systemctl reload crowdsec' for the new configuration to be effective." diff --git a/cmd/crowdsec-cli/reload/message_windows.go b/cmd/crowdsec-cli/reload/message_windows.go new file mode 100644 index 00000000000..888cb44b0d2 --- /dev/null +++ b/cmd/crowdsec-cli/reload/message_windows.go @@ -0,0 +1,3 @@ +package reload + +const message = "Please restart the crowdsec service for the new configuration to be effective." diff --git a/cmd/crowdsec-cli/reload/reload.go b/cmd/crowdsec-cli/reload/reload.go index fe03af1ea79..75771311f36 100644 --- a/cmd/crowdsec-cli/reload/reload.go +++ b/cmd/crowdsec-cli/reload/reload.go @@ -1,6 +1,13 @@ -//go:build !windows && !freebsd && !linux - package reload -// generic message since we don't know the platform -const Message = "Please reload the crowdsec process for the new configuration to be effective." +import ( + "github.com/crowdsecurity/go-cs-lib/version" +) + +func UserMessage() string { + if version.System == "docker" { + return "" + } + + return message +} diff --git a/cmd/crowdsec-cli/reload/reload_windows.go b/cmd/crowdsec-cli/reload/reload_windows.go deleted file mode 100644 index 88642425ae2..00000000000 --- a/cmd/crowdsec-cli/reload/reload_windows.go +++ /dev/null @@ -1,3 +0,0 @@ -package reload - -const Message = "Please restart the crowdsec service for the new configuration to be effective." From 542a9b595c2307b4a1e0a031c7d79a1d241c1fd7 Mon Sep 17 00:00:00 2001 From: marco Date: Wed, 29 Jan 2025 21:09:41 +0100 Subject: [PATCH 2/3] refactor + give appropriate message if terminal is attached --- cmd/crowdsec-cli/clicapi/capi.go | 4 ++-- cmd/crowdsec-cli/cliconsole/console.go | 4 ++-- cmd/crowdsec-cli/clihub/hub.go | 4 ++-- cmd/crowdsec-cli/cliitem/cmdinstall.go | 4 ++-- cmd/crowdsec-cli/cliitem/cmdremove.go | 4 ++-- cmd/crowdsec-cli/cliitem/cmdupgrade.go | 4 ++-- cmd/crowdsec-cli/clilapi/register.go | 4 ++-- cmd/crowdsec-cli/clisimulation/simulation.go | 4 ++-- cmd/crowdsec-cli/reload/reload.go | 7 +++++++ 9 files changed, 23 insertions(+), 16 deletions(-) diff --git a/cmd/crowdsec-cli/clicapi/capi.go b/cmd/crowdsec-cli/clicapi/capi.go index d134e04e44c..14637a26e1a 100644 --- a/cmd/crowdsec-cli/clicapi/capi.go +++ b/cmd/crowdsec-cli/clicapi/capi.go @@ -123,8 +123,8 @@ func (cli *cliCapi) register(ctx context.Context, capiUserPrefix string, outputF fmt.Println(string(apiConfigDump)) } - if reload.UserMessage() != "" { - log.Warning(reload.UserMessage()) + if msg := reload.UserMessage(); msg != "" { + log.Warning(msg) } return nil diff --git a/cmd/crowdsec-cli/cliconsole/console.go b/cmd/crowdsec-cli/cliconsole/console.go index 821e717fd64..fcc128bd5b5 100644 --- a/cmd/crowdsec-cli/cliconsole/console.go +++ b/cmd/crowdsec-cli/cliconsole/console.go @@ -250,8 +250,8 @@ Disable given information push to the central API.`, log.Infof("%v have been disabled", args) } - if reload.UserMessage() != "" { - log.Info(reload.UserMessage()) + if msg := reload.UserMessage(); msg != "" { + log.Info(msg) } return nil diff --git a/cmd/crowdsec-cli/clihub/hub.go b/cmd/crowdsec-cli/clihub/hub.go index 1c6a99b12ed..66fbe7c405a 100644 --- a/cmd/crowdsec-cli/clihub/hub.go +++ b/cmd/crowdsec-cli/clihub/hub.go @@ -193,8 +193,8 @@ func (cli *cliHub) upgrade(ctx context.Context, yes bool, dryRun bool, force boo return err } - if plan.ReloadNeeded && reload.UserMessage() != "" { - fmt.Println("\n" + reload.UserMessage()) + if msg := reload.UserMessage(); msg != "" && plan.ReloadNeeded { + fmt.Println("\n" + msg) } return nil diff --git a/cmd/crowdsec-cli/cliitem/cmdinstall.go b/cmd/crowdsec-cli/cliitem/cmdinstall.go index daeebc45832..74ffbe727f4 100644 --- a/cmd/crowdsec-cli/cliitem/cmdinstall.go +++ b/cmd/crowdsec-cli/cliitem/cmdinstall.go @@ -88,8 +88,8 @@ func (cli cliItem) install(ctx context.Context, args []string, yes bool, dryRun log.Error(err) } - if plan.ReloadNeeded && reload.UserMessage() != "" { - fmt.Println("\n" + reload.UserMessage()) + if msg := reload.UserMessage(); msg != "" && plan.ReloadNeeded { + fmt.Println("\n" + msg) } return nil diff --git a/cmd/crowdsec-cli/cliitem/cmdremove.go b/cmd/crowdsec-cli/cliitem/cmdremove.go index 7a020c1a551..c8ea041acbf 100644 --- a/cmd/crowdsec-cli/cliitem/cmdremove.go +++ b/cmd/crowdsec-cli/cliitem/cmdremove.go @@ -104,8 +104,8 @@ func (cli cliItem) remove(ctx context.Context, args []string, yes bool, dryRun b return err } - if plan.ReloadNeeded && reload.UserMessage() != "" { - fmt.Println("\n" + reload.UserMessage()) + if msg := reload.UserMessage(); msg != "" && plan.ReloadNeeded { + fmt.Println("\n" + msg) } return nil diff --git a/cmd/crowdsec-cli/cliitem/cmdupgrade.go b/cmd/crowdsec-cli/cliitem/cmdupgrade.go index 0bf5cd6886f..5320bc04bc6 100644 --- a/cmd/crowdsec-cli/cliitem/cmdupgrade.go +++ b/cmd/crowdsec-cli/cliitem/cmdupgrade.go @@ -66,8 +66,8 @@ func (cli cliItem) upgrade(ctx context.Context, args []string, yes bool, dryRun return err } - if plan.ReloadNeeded && reload.UserMessage() != "" { - fmt.Println("\n" + reload.UserMessage()) + if msg := reload.UserMessage(); msg != "" && plan.ReloadNeeded { + fmt.Println("\n" + msg) } return nil diff --git a/cmd/crowdsec-cli/clilapi/register.go b/cmd/crowdsec-cli/clilapi/register.go index 8eabdcb694c..7430c73c3c8 100644 --- a/cmd/crowdsec-cli/clilapi/register.go +++ b/cmd/crowdsec-cli/clilapi/register.go @@ -87,8 +87,8 @@ func (cli *cliLapi) register(ctx context.Context, apiURL string, outputFile stri fmt.Printf("%s\n", string(apiConfigDump)) } - if reload.UserMessage() != "" { - log.Warning(reload.UserMessage()) + if msg := reload.UserMessage(); msg != "" { + log.Warning(msg) } return nil diff --git a/cmd/crowdsec-cli/clisimulation/simulation.go b/cmd/crowdsec-cli/clisimulation/simulation.go index c11bfdbf1e4..1b46c70c90a 100644 --- a/cmd/crowdsec-cli/clisimulation/simulation.go +++ b/cmd/crowdsec-cli/clisimulation/simulation.go @@ -47,8 +47,8 @@ cscli simulation disable crowdsecurity/ssh-bf`, return nil }, PersistentPostRun: func(cmd *cobra.Command, _ []string) { - if cmd.Name() != "status" && reload.UserMessage() != "" { - log.Info(reload.UserMessage()) + if msg := reload.UserMessage(); msg != "" && cmd.Name() != "status" { + log.Info(msg) } }, } diff --git a/cmd/crowdsec-cli/reload/reload.go b/cmd/crowdsec-cli/reload/reload.go index 75771311f36..44d001fda0c 100644 --- a/cmd/crowdsec-cli/reload/reload.go +++ b/cmd/crowdsec-cli/reload/reload.go @@ -1,11 +1,18 @@ package reload import ( + "os" + "github.com/crowdsecurity/go-cs-lib/version" + isatty "github.com/mattn/go-isatty" ) func UserMessage() string { if version.System == "docker" { + if isatty.IsTerminal(os.Stdout.Fd()) || isatty.IsCygwinTerminal(os.Stdout.Fd()) { + return "You may need to restart the container to apply the changes." + } + return "" } From f7779c235a6e36ac19277fd89327837bd357a9c9 Mon Sep 17 00:00:00 2001 From: marco Date: Thu, 30 Jan 2025 09:25:53 +0100 Subject: [PATCH 3/3] remove explicit filetype --- Dockerfile | 1 - Dockerfile.debian | 1 - 2 files changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index ee6d54abb02..d368f0f6ede 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,3 @@ -# vim: set ft=dockerfile: FROM docker.io/golang:1.23-alpine3.20 AS build ARG BUILD_VERSION diff --git a/Dockerfile.debian b/Dockerfile.debian index f37ba02a7c2..a9b58c633ed 100644 --- a/Dockerfile.debian +++ b/Dockerfile.debian @@ -1,4 +1,3 @@ -# vim: set ft=dockerfile: FROM docker.io/golang:1.23-bookworm AS build ARG BUILD_VERSION