This repository has been archived by the owner on Feb 26, 2024. It is now read-only.
/
destroy.go
46 lines (38 loc) · 1.85 KB
/
destroy.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package proxy_nginx
import (
"fmt"
xfs "github.com/saitho/golang-extended-fs/v2"
"path"
"strings"
"github.com/getstackhead/stackhead/system"
)
func (m Module) Destroy(_modulesSettings interface{}) error {
moduleSettings, err := system.UnpackModuleSettings[ModuleSettings](_modulesSettings)
if err != nil {
return fmt.Errorf("unable to load module settings: " + err.Error())
}
moduleSettings.Config.SetDefaults()
firstDomain := system.Context.Project.Domains[0].Domain
if _, err := system.SimpleRemoteRun("certbot", system.RemoteRunOpts{Args: []string{"delete", "-q", "--cert-name " + firstDomain}, Sudo: true}); err != nil {
if !strings.Contains(err.Error(), "No certificate found") {
return fmt.Errorf("Unable to remove Certbot certificate: " + err.Error())
}
}
domainChallengeDir := path.Join(AcmeChallengesDirectory, firstDomain)
if err := xfs.DeleteFolder("ssh://"+domainChallengeDir, true); err != nil && err.Error() != "file does not exist" {
return fmt.Errorf("Unable to remove ACME challenge directory: " + err.Error())
}
if err := xfs.DeleteFile("ssh:///etc/nginx/sites-available/stackhead_" + system.Context.Project.Name + ".conf"); err != nil {
return fmt.Errorf("Unable to remove Nginx symlink: " + err.Error())
}
if err := xfs.DeleteFile("ssh://" + moduleSettings.Config.VhostPath + "/stackhead_" + system.Context.Project.Name + ".conf"); err != nil {
return fmt.Errorf("Unable to remove Nginx symlink: " + err.Error())
}
if err := xfs.DeleteFolder("ssh://"+CertificatesDirectory+"/"+system.Context.Project.Name, true); err != nil {
return fmt.Errorf("Unable to remove certificates directory: " + err.Error())
}
if _, err := system.SimpleRemoteRun("systemctl", system.RemoteRunOpts{Args: []string{"reload", "nginx"}, Sudo: true}); err != nil {
return fmt.Errorf("Unable to reload Nginx service: " + err.Error())
}
return nil
}