Skip to content

Commit 621af93

Browse files
Merge pull request #15 from stackroost/dev
feat(cli): add disable-ssl command to remove domain SSL certificates
2 parents b098caf + 4dd2b67 commit 621af93

1 file changed

Lines changed: 58 additions & 0 deletions

File tree

cmd/disable_ssl.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package cmd
2+
3+
import (
4+
"fmt"
5+
"os"
6+
7+
"github.com/spf13/cobra"
8+
"stackroost/internal"
9+
"stackroost/internal/logger"
10+
)
11+
12+
var disableSSLCmd = &cobra.Command{
13+
Use: "disable-ssl",
14+
Short: "Disable and remove SSL certificate for a specific domain",
15+
Run: func(cmd *cobra.Command, args []string) {
16+
domain, _ := cmd.Flags().GetString("domain")
17+
if internal.IsNilOrEmpty(domain) {
18+
logger.Error("Please provide a domain using --domain")
19+
os.Exit(1)
20+
}
21+
22+
serverType := internal.DetectServerType(domain)
23+
if serverType == "" {
24+
logger.Error(fmt.Sprintf("Could not detect server type for domain: %s", domain))
25+
os.Exit(1)
26+
}
27+
28+
if serverType == "caddy" {
29+
logger.Info("Caddy auto-manages SSL — no need to disable manually.")
30+
return
31+
}
32+
33+
logger.Info(fmt.Sprintf("Detected %s configuration for %s", serverType, domain))
34+
logger.Info("Removing SSL certificate using Certbot")
35+
36+
cmdArgs := []string{
37+
"delete",
38+
"--cert-name", domain,
39+
"--non-interactive",
40+
"--quiet",
41+
"--agree-tos",
42+
}
43+
44+
err := internal.RunCommand("sudo", append([]string{"certbot"}, cmdArgs...)...)
45+
if err != nil {
46+
logger.Warn(fmt.Sprintf("Certbot failed to delete certificate: %v", err))
47+
os.Exit(1)
48+
}
49+
50+
logger.Success(fmt.Sprintf("SSL certificate removed for %s", domain))
51+
},
52+
}
53+
54+
func init() {
55+
rootCmd.AddCommand(disableSSLCmd)
56+
disableSSLCmd.Flags().String("domain", "", "Domain name to disable SSL for")
57+
disableSSLCmd.MarkFlagRequired("domain")
58+
}

0 commit comments

Comments
 (0)