nginx.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package nginx
  2. import (
  3. "github.com/0xJacky/Nginx-UI/settings"
  4. "os/exec"
  5. "sync"
  6. )
  7. var mutex sync.Mutex
  8. func execShell(cmd string) (out string) {
  9. bytes, err := exec.Command("/bin/sh", "-c", cmd).CombinedOutput()
  10. out = string(bytes)
  11. if err != nil {
  12. out += " " + err.Error()
  13. }
  14. return
  15. }
  16. func execCommand(name string, cmd ...string) (out string) {
  17. bytes, err := exec.Command(name, cmd...).CombinedOutput()
  18. out = string(bytes)
  19. if err != nil {
  20. out += " " + err.Error()
  21. }
  22. return
  23. }
  24. func TestConf() (out string) {
  25. mutex.Lock()
  26. defer mutex.Unlock()
  27. if settings.NginxSettings.TestConfigCmd != "" {
  28. out = execShell(settings.NginxSettings.TestConfigCmd)
  29. return
  30. }
  31. out = execCommand("nginx", "-t")
  32. return
  33. }
  34. func Reload() (out string) {
  35. mutex.Lock()
  36. defer mutex.Unlock()
  37. if settings.NginxSettings.ReloadCmd != "" {
  38. out = execShell(settings.NginxSettings.ReloadCmd)
  39. return
  40. }
  41. out = execCommand("nginx", "-s", "reload")
  42. return
  43. }
  44. func Restart() (out string) {
  45. mutex.Lock()
  46. defer mutex.Unlock()
  47. if settings.NginxSettings.RestartCmd != "" {
  48. out = execShell(settings.NginxSettings.RestartCmd)
  49. return
  50. }
  51. pidPath := GetPIDPath()
  52. daemon := GetSbinPath()
  53. out = execCommand("start-stop-daemon", "--stop", "--quiet", "--oknodo", "--retry=TERM/30/KILL/5", "--pidfile", pidPath)
  54. if daemon == "" {
  55. out += execCommand("nginx")
  56. return
  57. }
  58. out += execCommand("start-stop-daemon", "--start", "--quiet", "--pidfile", pidPath, "--exec", daemon)
  59. return
  60. }