nginx.go 2.2 KB

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