1
0

nginx.go 2.4 KB

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