nginx.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package nginx
  2. import (
  3. "github.com/0xJacky/Nginx-UI/server/internal/logger"
  4. "github.com/0xJacky/Nginx-UI/server/settings"
  5. "os/exec"
  6. "path/filepath"
  7. "regexp"
  8. )
  9. func execShell(cmdArgs ...string) (out string) {
  10. cmd := []string{"-c"}
  11. cmd = append(cmd, cmdArgs...)
  12. bytes, err := exec.Command("/bin/sh", cmd...).CombinedOutput()
  13. out = string(bytes)
  14. if err != nil {
  15. out += " " + err.Error()
  16. }
  17. return
  18. }
  19. func TestConf() (out string) {
  20. if settings.NginxSettings.TestConfigCmd != "" {
  21. out = execShell(settings.NginxSettings.TestConfigCmd)
  22. return
  23. }
  24. out = execShell("nginx", "-t")
  25. return
  26. }
  27. func Reload() (out string) {
  28. if settings.NginxSettings.ReloadCmd != "" {
  29. out = execShell(settings.NginxSettings.ReloadCmd)
  30. return
  31. }
  32. out = execShell("nginx", "-s", "reload")
  33. return
  34. }
  35. func Restart() (out string) {
  36. if settings.NginxSettings.RestartCmd != "" {
  37. out = execShell(settings.NginxSettings.RestartCmd)
  38. return
  39. }
  40. out = execShell("nginx", "-s", "reopen")
  41. return
  42. }
  43. func GetConfPath(dir ...string) string {
  44. var confPath string
  45. if settings.NginxSettings.ConfigDir == "" {
  46. out, err := exec.Command("nginx", "-V").CombinedOutput()
  47. if err != nil {
  48. logger.Error(err)
  49. return ""
  50. }
  51. r, _ := regexp.Compile("--conf-path=(.*)/(.*.conf)")
  52. match := r.FindStringSubmatch(string(out))
  53. if len(match) < 1 {
  54. logger.Error("nginx.GetConfPath len(match) < 1")
  55. return ""
  56. }
  57. confPath = r.FindStringSubmatch(string(out))[1]
  58. } else {
  59. confPath = settings.NginxSettings.ConfigDir
  60. }
  61. return filepath.Join(confPath, filepath.Join(dir...))
  62. }
  63. func GetNginxPIDPath() string {
  64. var confPath string
  65. if settings.NginxSettings.PIDPath == "" {
  66. out, err := exec.Command("nginx", "-V").CombinedOutput()
  67. if err != nil {
  68. logger.Error(err)
  69. return ""
  70. }
  71. r, _ := regexp.Compile("--pid-path=(.*.pid)")
  72. match := r.FindStringSubmatch(string(out))
  73. if len(match) < 1 {
  74. logger.Error("nginx.GetNginxPIDPath len(match) < 1")
  75. return ""
  76. }
  77. confPath = r.FindStringSubmatch(string(out))[1]
  78. } else {
  79. confPath = settings.NginxSettings.PIDPath
  80. }
  81. return confPath
  82. }