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 }