101 lines
2.5 KiB
Go
101 lines
2.5 KiB
Go
package nginx
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"os"
|
|
"os/exec"
|
|
"strings"
|
|
|
|
"gitea.micah.wiki/pandora/naive/pkg/filex"
|
|
|
|
"gitea.micah.wiki/pandora/magic/config"
|
|
"gitea.micah.wiki/pandora/magic/pkg/loggerx"
|
|
)
|
|
|
|
func Create(ctx context.Context, current *config.Nginx) error {
|
|
file := fmt.Sprintf("%s/%s", current.ConfigPath, current.Domain)
|
|
isExist, err := filex.Exists(file)
|
|
if err != nil {
|
|
loggerx.Nginx().Errorf("config file Exists error, err: %+v", err)
|
|
return err
|
|
}
|
|
if isExist {
|
|
err = os.Remove(file)
|
|
if err != nil {
|
|
loggerx.Nginx().Errorf("config file Remove error, err: %+v", err)
|
|
return err
|
|
}
|
|
}
|
|
f, err := filex.CreateIfNotExists(file)
|
|
if err != nil {
|
|
loggerx.Nginx().Errorf("CreateIfNotExists error, err: %+v", err)
|
|
return err
|
|
}
|
|
defer func() { _ = f.Close() }()
|
|
_, err = f.Write([]byte(GetInfo(ctx, current)))
|
|
if err != nil {
|
|
loggerx.Nginx().Errorf("Write config error, err: %+v", err)
|
|
return err
|
|
}
|
|
|
|
if strings.Contains(current.ConfigPath, "sites-available") {
|
|
lnFile := fmt.Sprintf("%s/../sites-enabled/%s", current.ConfigPath, current.Domain)
|
|
isExist, err = filex.Exists(lnFile)
|
|
if err != nil {
|
|
loggerx.Nginx().Errorf("ln config file Exists error, err: %+v", err)
|
|
return err
|
|
}
|
|
|
|
if isExist {
|
|
err = os.Remove(lnFile)
|
|
if err != nil {
|
|
loggerx.Nginx().Errorf("ln config file Remove error, err: %+v", err)
|
|
return err
|
|
}
|
|
}
|
|
cmd := exec.Command("ln", "-s", file, lnFile)
|
|
// 执行命令并捕获输出
|
|
_, err = cmd.CombinedOutput()
|
|
if err != nil {
|
|
loggerx.Nginx().Errorf("ln config error, err: %+v", err)
|
|
// 若执行命令出错,打印错误信息和命令输出
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func ReStart(_ context.Context) error {
|
|
_, err := exec.LookPath("brew")
|
|
if err == nil {
|
|
// 如果存在brew 则按照 brew运行
|
|
cmd := exec.Command("brew", "services", "restart", "nginx")
|
|
// 执行命令并捕获输出
|
|
output, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
// 若执行命令出错,打印错误信息和命令输出
|
|
return err
|
|
}
|
|
fmt.Println(string(output))
|
|
return nil
|
|
}
|
|
cmd := exec.Command("systemctl", "restart", "nginx")
|
|
// 执行命令并捕获输出
|
|
output, err := cmd.CombinedOutput()
|
|
if err == nil {
|
|
fmt.Println(string(output))
|
|
// 若执行命令出错,打印错误信息和命令输出
|
|
return nil
|
|
}
|
|
cmd = exec.Command("nginx", "-s", "reload")
|
|
// 执行命令并捕获输出
|
|
output, err = cmd.CombinedOutput()
|
|
if err != nil {
|
|
// 若执行命令出错,打印错误信息和命令输出
|
|
return err
|
|
}
|
|
fmt.Println(string(output))
|
|
return nil
|
|
}
|