123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- package nginx
- import (
- "github.com/0xJacky/Nginx-UI/internal/helper"
- "github.com/0xJacky/Nginx-UI/settings"
- "github.com/uozi-tech/cosy/logger"
- "os/exec"
- "path/filepath"
- "regexp"
- )
- func getNginxV() string {
- out, err := exec.Command("nginx", "-V").CombinedOutput()
- if err != nil {
- logger.Error(err)
- return ""
- }
- return string(out)
- }
- func GetConfPath(dir ...string) (confPath string) {
- if settings.NginxSettings.ConfigDir == "" {
- out := getNginxV()
- r, _ := regexp.Compile("--conf-path=(.*)/(.*.conf)")
- match := r.FindStringSubmatch(out)
- if len(match) < 1 {
- logger.Error("nginx.GetConfPath len(match) < 1")
- return ""
- }
- confPath = match[1]
- } else {
- confPath = settings.NginxSettings.ConfigDir
- }
- joined := filepath.Clean(filepath.Join(confPath, filepath.Join(dir...)))
- if !helper.IsUnderDirectory(joined, confPath) {
- return confPath
- }
- return joined
- }
- func GetPIDPath() (path string) {
- if settings.NginxSettings.PIDPath == "" {
- out := getNginxV()
- r, _ := regexp.Compile("--pid-path=(.*.pid)")
- match := r.FindStringSubmatch(out)
- if len(match) < 1 {
- logger.Error("nginx.GetPIDPath len(match) < 1")
- return ""
- }
- path = match[1]
- } else {
- path = settings.NginxSettings.PIDPath
- }
- return path
- }
- func GetSbinPath() (path string) {
- out := getNginxV()
- r, _ := regexp.Compile("--sbin-path=(\\S+)")
- match := r.FindStringSubmatch(out)
- if len(match) < 1 {
- logger.Error("nginx.GetPIDPath len(match) < 1")
- return ""
- }
- path = match[1]
- return path
- }
- func GetAccessLogPath() (path string) {
- if settings.NginxSettings.AccessLogPath == "" {
- out := getNginxV()
- r, _ := regexp.Compile("--http-log-path=(\\S+)")
- match := r.FindStringSubmatch(out)
- if len(match) < 1 {
- logger.Error("nginx.GetAccessLogPath len(match) < 1")
- return ""
- }
- path = match[1]
- } else {
- path = settings.NginxSettings.AccessLogPath
- }
- return path
- }
- func GetErrorLogPath() string {
- if settings.NginxSettings.ErrorLogPath == "" {
- out := getNginxV()
- r, _ := regexp.Compile("--error-log-path=(\\S+)")
- match := r.FindStringSubmatch(out)
- if len(match) < 1 {
- logger.Error("nginx.GetErrorLogPath len(match) < 1")
- return ""
- }
- return match[1]
- } else {
- return settings.NginxSettings.ErrorLogPath
- }
- }
|