nginx.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package nginx
  2. import (
  3. "github.com/0xJacky/Nginx-UI/server/settings"
  4. "log"
  5. "os/exec"
  6. "path/filepath"
  7. "regexp"
  8. )
  9. func TestConf() string {
  10. out, err := exec.Command("nginx", "-t").CombinedOutput()
  11. if err != nil {
  12. log.Println("[error] nginx.TestConf", err)
  13. }
  14. return string(out)
  15. }
  16. func Reload() string {
  17. out, err := exec.Command("nginx", "-s", "reload").CombinedOutput()
  18. if err != nil {
  19. log.Println("[error] nginx.Reload", err)
  20. }
  21. return string(out)
  22. }
  23. func Restart() string {
  24. out, err := exec.Command("nginx", "-s", "reopen").CombinedOutput()
  25. if err != nil {
  26. log.Println("[error] nginx.Restart", err)
  27. }
  28. return string(out)
  29. }
  30. func GetConfPath(dir ...string) string {
  31. var confPath string
  32. if settings.ServerSettings.NginxConfigDir == "" {
  33. out, err := exec.Command("nginx", "-V").CombinedOutput()
  34. if err != nil {
  35. log.Println("nginx.GetConfPath exec.Command error", err)
  36. return ""
  37. }
  38. r, _ := regexp.Compile("--conf-path=(.*)/(.*.conf)")
  39. match := r.FindStringSubmatch(string(out))
  40. if len(match) < 1 {
  41. log.Println("nginx.GetConfPath len(match) < 1")
  42. return ""
  43. }
  44. confPath = r.FindStringSubmatch(string(out))[1]
  45. } else {
  46. confPath = settings.ServerSettings.NginxConfigDir
  47. }
  48. return filepath.Join(confPath, filepath.Join(dir...))
  49. }
  50. func GetNginxPIDPath() string {
  51. var confPath string
  52. if settings.ServerSettings.NginxPIDPath == "" {
  53. out, err := exec.Command("nginx", "-V").CombinedOutput()
  54. if err != nil {
  55. log.Println("nginx.GetNginxPIDPath exec.Command error", err)
  56. return ""
  57. }
  58. r, _ := regexp.Compile("--pid-path=(.*.pid)")
  59. match := r.FindStringSubmatch(string(out))
  60. if len(match) < 1 {
  61. log.Println("nginx.GetNginxPIDPath len(match) < 1")
  62. return ""
  63. }
  64. confPath = r.FindStringSubmatch(string(out))[1]
  65. } else {
  66. confPath = settings.ServerSettings.NginxPIDPath
  67. }
  68. return confPath
  69. }