Skip to content

Commit c750c38

Browse files
authored
feat: tls in CLI added (#251)
1 parent 4d8b756 commit c750c38

File tree

12 files changed

+517
-133
lines changed

12 files changed

+517
-133
lines changed

cmd/auto-service-tls-renew.go

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
package cmd
2+
3+
import (
4+
_ "embed"
5+
"os"
6+
"os/exec"
7+
8+
"github.com/spf13/cobra"
9+
)
10+
11+
//go:embed swiftwave-service-tls-renew.service
12+
var swiftwaveServiceTLSRenewService string
13+
14+
//go:embed swiftwave-service-tls-renew.timer
15+
var swiftwaveServiceTLSRenewTimer string
16+
17+
func init() {
18+
autoServiceTLSRenewCmd.AddCommand(enableServiceTLSRenewServiceCmd)
19+
autoServiceTLSRenewCmd.AddCommand(disableServiceTLSRenewServiceCmd)
20+
}
21+
22+
var autoServiceTLSRenewCmd = &cobra.Command{
23+
Use: "auto-renew",
24+
Short: "Auto renew swiftwave service TLS certificates going to expire in 30 days",
25+
Long: `Auto update swiftwave service TLS certificates going to expire in 30 days`,
26+
Run: func(cmd *cobra.Command, args []string) {
27+
// print help
28+
err := cmd.Help()
29+
if err != nil {
30+
return
31+
}
32+
},
33+
}
34+
35+
var enableServiceTLSRenewServiceCmd = &cobra.Command{
36+
Use: "enable",
37+
Short: "Enable auto renew service",
38+
Long: `Enable auto renew service`,
39+
Run: func(cmd *cobra.Command, args []string) {
40+
// Move swiftwave-service-tls-renew.service to /etc/systemd/system/
41+
err := os.WriteFile("/etc/systemd/system/swiftwave-service-tls-renew.service", []byte(swiftwaveServiceTLSRenewService), 0644)
42+
if err != nil {
43+
printError("Failed to write swiftwave-service-tls-renew.service file")
44+
return
45+
}
46+
// Move swiftwave-service-tls-renew.timer to /etc/systemd/system/
47+
err = os.WriteFile("/etc/systemd/system/swiftwave-service-tls-renew.timer", []byte(swiftwaveServiceTLSRenewTimer), 0644)
48+
if err != nil {
49+
printError("Failed to write swiftwave-service-tls-renew.timer file")
50+
return
51+
}
52+
// Reload systemd daemon
53+
runCommand := exec.Command("systemctl", "daemon-reload")
54+
err = runCommand.Run()
55+
if err != nil {
56+
printError("Failed to reload systemd daemon")
57+
} else {
58+
printSuccess("Reloaded systemd daemon")
59+
}
60+
// Enable swiftwave service tls renew timer
61+
runCommand = exec.Command("systemctl", "enable", "swiftwave-service-tls-renew.timer")
62+
err = runCommand.Run()
63+
if err != nil {
64+
printError("Failed to enable swiftwave service tls renew service")
65+
} else {
66+
printSuccess("Enabled swiftwave service tls renew service")
67+
}
68+
// Start swiftwave service
69+
runCommand = exec.Command("systemctl", "start", "swiftwave-service-tls-renew.timer")
70+
err = runCommand.Run()
71+
if err != nil {
72+
printError("Failed to start swiftwave service tls renew service")
73+
} else {
74+
printSuccess("Started swiftwave service tls renew service")
75+
}
76+
},
77+
}
78+
79+
var disableServiceTLSRenewServiceCmd = &cobra.Command{
80+
Use: "disable",
81+
Short: "Disable auto renew service",
82+
Long: `Disable auto renew service`,
83+
Run: func(cmd *cobra.Command, args []string) {
84+
// Stop swiftwave service
85+
runCommand := exec.Command("systemctl", "stop", "swiftwave-service-tls-renew.timer")
86+
err := runCommand.Run()
87+
if err != nil {
88+
printError("Failed to stop swiftwave auto service tls renew service")
89+
} else {
90+
printSuccess("Stopped swiftwave auto service tls renew service")
91+
}
92+
// Disable swiftwave service
93+
runCommand = exec.Command("systemctl", "disable", "swiftwave-service-tls-renew.timer")
94+
err = runCommand.Run()
95+
if err != nil {
96+
printError("Failed to disable swiftwave auto service tls renew service")
97+
} else {
98+
printSuccess("Disabled swiftwave auto service tls renew service")
99+
}
100+
// Remove swiftwave-service-tls-renew.service from /etc/systemd/system/
101+
err = os.Remove("/etc/systemd/system/swiftwave-service-tls-renew.service")
102+
if err != nil {
103+
printError("Failed to remove swiftwave-service-tls-renew.service file")
104+
}
105+
// Remove swiftwave-service-tls-renew.timer from /etc/systemd/system/
106+
err = os.Remove("/etc/systemd/system/swiftwave-service-tls-renew.timer")
107+
if err != nil {
108+
printError("Failed to remove swiftwave-service-tls-renew.timer file")
109+
}
110+
// Reload systemd daemon
111+
runCommand = exec.Command("systemctl", "daemon-reload")
112+
err = runCommand.Run()
113+
if err != nil {
114+
printError("Failed to reload systemd daemon")
115+
} else {
116+
printSuccess("Reloaded systemd daemon")
117+
}
118+
},
119+
}

cmd/generate-tls.go

Lines changed: 0 additions & 128 deletions
This file was deleted.

cmd/haproxy.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,6 @@ var haproxyStartCmd = &cobra.Command{
7171
}
7272
}
7373
dockerImage := systemConfig.HAProxyConfig.DockerImage
74-
if !systemConfig.ServiceConfig.UseTLS {
75-
dockerImage = dockerImage + "-http"
76-
}
7774
// base directory for socket file
7875
unixSocketMountDir := filepath.Dir(systemConfig.HAProxyConfig.UnixSocketPath)
7976
err := generateDefaultHAProxyConfiguration(systemConfig)

cmd/init.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66
"io"
77
"log"
8+
"math/rand"
89
"net/http"
910
"os"
1011
"strings"
@@ -179,11 +180,17 @@ var initCmd = &cobra.Command{
179180
return
180181
}
181182

183+
configTemplate.ServiceConfig.JwtSecretKey = generateRandomString(64)
182184
configTemplate.ServiceConfig.AddressOfCurrentNode = domainName
183185
configTemplate.LetsEncryptConfig.EmailID = letsEncryptEmail
184186
configTemplate.HAProxyConfig.User = haproxyUser
185187
configTemplate.HAProxyConfig.Password = haproxyPassword
186-
188+
hostname, err := os.Hostname()
189+
if err != nil {
190+
printError("Failed to fetch system hostname")
191+
os.Exit(1)
192+
}
193+
configTemplate.TaskQueueConfig.AMQPConfig.ClientName = hostname
187194
isCreated = createConfig(configTemplate, configFilePath)
188195

189196
if isCreated {
@@ -270,3 +277,12 @@ func getIPAddress() (string, error) {
270277
}
271278
return string(body), nil
272279
}
280+
281+
func generateRandomString(length int) string {
282+
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
283+
result := make([]byte, length)
284+
for i := range result {
285+
result[i] = charset[rand.Intn(len(charset))]
286+
}
287+
return string(result)
288+
}

cmd/root.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ func init() {
2323
rootCmd.AddCommand(configCmd)
2424
rootCmd.AddCommand(createUserCmd)
2525
rootCmd.AddCommand(deleteUserCmd)
26+
rootCmd.AddCommand(tlsCmd)
2627
rootCmd.AddCommand(startCmd)
2728
rootCmd.AddCommand(haproxyCmd)
2829
rootCmd.AddCommand(udpProxyCmd)
2930
rootCmd.AddCommand(postgresCmd)
30-
rootCmd.AddCommand(generateTLSCommand)
3131
rootCmd.AddCommand(dbMigrateCmd)
3232
rootCmd.AddCommand(serviceCmd)
3333
rootCmd.AddCommand(updateCmd)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[Unit]
2+
Description=Swiftwave Service TLS Ceritificate Updater Service
3+
After=multi-user.target
4+
5+
[Service]
6+
ExecStart=/bin/sh -c "/usr/bin/swiftwave tls renew-certificates || true"
7+
Type=simple
8+
9+
[Install]
10+
WantedBy=multi-user.target
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[Unit]
2+
Description=Swiftwave Service TLS Ceritificate Updater
3+
4+
[Timer]
5+
OnCalendar=*-*-* 00:00:00
6+
Unit=swiftwave-service-tls-renew.service
7+
Persistent=true
8+
9+
[Install]
10+
WantedBy=timers.target

0 commit comments

Comments
 (0)