resolve_cmd.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package nginx
  2. import (
  3. "os/exec"
  4. "runtime"
  5. "github.com/0xJacky/Nginx-UI/settings"
  6. "github.com/uozi-tech/cosy/logger"
  7. )
  8. var (
  9. nginxSbinPath string
  10. nginxVOutput string
  11. nginxTOutput string
  12. )
  13. // Returns the path to the nginx executable
  14. func getNginxSbinPath() string {
  15. // load from cache
  16. if nginxSbinPath != "" {
  17. return nginxSbinPath
  18. }
  19. // load from settings
  20. if settings.NginxSettings.SbinPath != "" {
  21. nginxSbinPath = settings.NginxSettings.SbinPath
  22. return nginxSbinPath
  23. }
  24. // load from system
  25. var path string
  26. var err error
  27. if runtime.GOOS == "windows" {
  28. path, err = exec.LookPath("nginx.exe")
  29. } else {
  30. path, err = exec.LookPath("nginx")
  31. }
  32. if err == nil {
  33. nginxSbinPath = path
  34. return nginxSbinPath
  35. }
  36. return nginxSbinPath
  37. }
  38. func getNginxV() string {
  39. // load from cache
  40. if nginxVOutput != "" {
  41. return nginxVOutput
  42. }
  43. // load from system
  44. exePath := getNginxSbinPath()
  45. out, err := execCommand(exePath, "-V")
  46. if err != nil {
  47. logger.Error(err)
  48. return ""
  49. }
  50. nginxVOutput = string(out)
  51. return nginxVOutput
  52. }
  53. // getNginxT executes nginx -T and returns the output
  54. func getNginxT() string {
  55. // load from cache
  56. if nginxTOutput != "" {
  57. return nginxTOutput
  58. }
  59. // load from system
  60. exePath := getNginxSbinPath()
  61. out, err := execCommand(exePath, "-T")
  62. if err != nil {
  63. logger.Error(err)
  64. return ""
  65. }
  66. nginxTOutput = out
  67. return nginxTOutput
  68. }