diff --git a/install/config.go b/install/config.go index fa10fa5..4957704 100644 --- a/install/config.go +++ b/install/config.go @@ -164,7 +164,7 @@ func AddCrowdSecService(configPath string) error { Image: "crowdsecurity/crowdsec:latest", ContainerName: "crowdsec", Environment: map[string]string{ - "GID": "${GID-1000}", + "GID": "1000", "COLLECTIONS": "crowdsecurity/traefik crowdsecurity/appsec-virtual-patching crowdsecurity/appsec-generic-rules", "ENROLL_INSTANCE_NAME": "pangolin-crowdsec", "PARSERS": "crowdsecurity/whitelists", diff --git a/install/crowdsec.go b/install/crowdsec.go index 02e9c71..1d9bef6 100644 --- a/install/crowdsec.go +++ b/install/crowdsec.go @@ -24,8 +24,8 @@ func installCrowdsec(config Config) error { os.Exit(1) } - moveFile("config/crowdsec/traefik_config.yaml", "config/traefik/traefik_config.yaml") - moveFile("config/crowdsec/dynamic.yaml", "config/traefik/dynamic.yaml") + // moveFile("config/crowdsec/traefik_config.yml", "config/traefik/traefik_config.yml") + moveFile("config/crowdsec/dynamic.yml", "config/traefik/dynamic.yml") if err := retrieveBouncerKey(config); err != nil { return fmt.Errorf("bouncer key retrieval failed: %v", err) diff --git a/install/input.txt b/install/input.txt new file mode 100644 index 0000000..9bca808 --- /dev/null +++ b/install/input.txt @@ -0,0 +1,12 @@ +example.com +pangolin.example.com +admin@example.com +yes +admin@example.com +Password123! +Password123! +yes +no +no +no +yes diff --git a/install/main.go b/install/main.go index 4f7c7df..e5ad98b 100644 --- a/install/main.go +++ b/install/main.go @@ -140,22 +140,24 @@ func readString(reader *bufio.Reader, prompt string, defaultValue string) string return input } -func readPassword(prompt string) string { - fmt.Print(prompt + ": ") - - // Read password without echo - password, err := term.ReadPassword(int(syscall.Stdin)) - fmt.Println() // Add a newline since ReadPassword doesn't add one - - if err != nil { - return "" - } - - input := strings.TrimSpace(string(password)) - if input == "" { - return readPassword(prompt) - } - return input +func readPassword(prompt string, reader *bufio.Reader) string { + if term.IsTerminal(int(syscall.Stdin)) { + fmt.Print(prompt + ": ") + // Read password without echo if we're in a terminal + password, err := term.ReadPassword(int(syscall.Stdin)) + fmt.Println() // Add a newline since ReadPassword doesn't add one + if err != nil { + return "" + } + input := strings.TrimSpace(string(password)) + if input == "" { + return readPassword(prompt, reader) + } + return input + } else { + // Fallback to reading from stdin if not in a terminal + return readString(reader, prompt, "") + } } func readBool(reader *bufio.Reader, prompt string, defaultValue bool) bool { @@ -196,8 +198,8 @@ func collectUserInput(reader *bufio.Reader) Config { fmt.Println("\n=== Admin User Configuration ===") config.AdminUserEmail = readString(reader, "Enter admin user email", "admin@"+config.BaseDomain) for { - pass1 := readPassword("Create admin user password") - pass2 := readPassword("Confirm admin user password") + pass1 := readPassword("Create admin user password", reader) + pass2 := readPassword("Confirm admin user password", reader) if pass1 != pass2 { fmt.Println("Passwords do not match")