nginx.go 2.2 KB

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