feat(self-check): check stream if stream loaded #1028
Some checks are pending
Build / build_app (push) Waiting to run
Build / build (386, linux) (push) Blocked by required conditions
Build / build (386, windows) (push) Blocked by required conditions
Build / build (amd64, darwin) (push) Blocked by required conditions
Build / build (amd64, linux) (push) Blocked by required conditions
Build / build (amd64, windows) (push) Blocked by required conditions
Build / build (arm, 5, linux) (push) Blocked by required conditions
Build / build (arm, 6, linux) (push) Blocked by required conditions
Build / build (arm, 7, linux) (push) Blocked by required conditions
Build / build (arm64, darwin) (push) Blocked by required conditions
Build / build (arm64, linux) (push) Blocked by required conditions
Build / build (arm64, windows) (push) Blocked by required conditions
Build / build (loong64, linux) (push) Blocked by required conditions
Build / build (mips, linux) (push) Blocked by required conditions
Build / build (mips64, linux) (push) Blocked by required conditions
Build / build (mips64le, linux) (push) Blocked by required conditions
Build / build (mipsle, linux) (push) Blocked by required conditions
Build / build (riscv64, linux) (push) Blocked by required conditions
Build / docker-build (push) Blocked by required conditions
CodeQL / Analyze (go) (push) Waiting to run
CodeQL / Analyze (javascript-typescript) (push) Waiting to run

This commit is contained in:
Jacky 2025-05-09 08:52:47 +08:00
parent c59b81e4c7
commit 202ac03537
No known key found for this signature in database
GPG key ID: 215C21B10DF38B4D
15 changed files with 2695 additions and 2106 deletions

44
internal/nginx/modules.go Normal file
View file

@ -0,0 +1,44 @@
package nginx
import (
"regexp"
"strings"
)
const (
ModuleStream = "stream_module"
)
func GetModules() (modules []string) {
out := getNginxV()
// Regular expression to find modules in nginx -V output
r := regexp.MustCompile(`--with-([a-zA-Z0-9_-]+)(_module)?`)
// Find all matches
matches := r.FindAllStringSubmatch(out, -1)
// Extract module names from matches
for _, match := range matches {
module := match[1]
// If the module doesn't end with "_module", add it
if !strings.HasSuffix(module, "_module") {
module = module + "_module"
}
modules = append(modules, module)
}
return modules
}
func IsModuleLoaded(module string) bool {
modules := GetModules()
for _, m := range modules {
if m == module {
return true
}
}
return false
}

View file

@ -5,6 +5,7 @@ import (
"github.com/0xJacky/Nginx-UI/internal/translation"
"github.com/elliotchance/orderedmap/v3"
"github.com/uozi-tech/cosy"
"github.com/0xJacky/Nginx-UI/internal/nginx"
)
type Task struct {
@ -44,15 +45,6 @@ var selfCheckTasks = []*Task{
CheckFunc: CheckSitesDirectory,
FixFunc: FixSitesDirectory,
},
{
Key: "Directory-Streams",
Name: translation.C("Streams directory exists"),
Description: translation.C("Check if the " +
"streams-available and streams-enabled directories are " +
"under the nginx configuration directory"),
CheckFunc: CheckStreamDirectory,
FixFunc: FixStreamDirectory,
},
{
Key: "NginxConf-Sites-Enabled",
Name: translation.C("Nginx.conf includes sites-enabled directory"),
@ -61,14 +53,6 @@ var selfCheckTasks = []*Task{
CheckFunc: CheckNginxConfIncludeSites,
FixFunc: FixNginxConfIncludeSites,
},
{
Key: "NginxConf-Streams-Enabled",
Name: translation.C("Nginx.conf includes streams-enabled directory"),
Description: translation.C("Check if the nginx.conf includes the " +
"streams-enabled directory"),
CheckFunc: CheckNginxConfIncludeStreams,
FixFunc: FixNginxConfIncludeStreams,
},
{
Key: "NginxConf-ConfD",
Name: translation.C("Nginx.conf includes conf.d directory"),
@ -112,8 +96,23 @@ var selfCheckTasks = []*Task{
var selfCheckTaskMap = orderedmap.NewOrderedMap[string, *Task]()
func init() {
for _, task := range selfCheckTasks {
selfCheckTaskMap.Set(task.Key, task)
if nginx.IsModuleLoaded(nginx.ModuleStream) {
selfCheckTasks = append(selfCheckTasks, &Task{
Key: "Directory-Streams",
Name: translation.C("Streams directory exists"),
Description: translation.C("Check if the " +
"streams-available and streams-enabled directories are " +
"under the nginx configuration directory"),
CheckFunc: CheckStreamDirectory,
FixFunc: FixStreamDirectory,
}, &Task{
Key: "NginxConf-Streams-Enabled",
Name: translation.C("Nginx.conf includes streams-enabled directory"),
Description: translation.C("Check if the nginx.conf includes the " +
"streams-enabled directory"),
CheckFunc: CheckNginxConfIncludeStreams,
FixFunc: FixNginxConfIncludeStreams,
})
}
if helper.InNginxUIOfficialDocker() {
selfCheckTasks = append(selfCheckTasks, &Task{
@ -124,4 +123,8 @@ func init() {
CheckFunc: CheckDockerSocket,
})
}
for _, task := range selfCheckTasks {
selfCheckTaskMap.Set(task.Key, task)
}
}