mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-11 02:15:48 +02:00
86 lines
1.7 KiB
Go
86 lines
1.7 KiB
Go
package self_check
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/0xJacky/Nginx-UI/internal/helper"
|
|
"github.com/uozi-tech/cosy"
|
|
)
|
|
|
|
type Task struct {
|
|
Name string
|
|
CheckFunc func() error
|
|
FixFunc func() error
|
|
}
|
|
|
|
type Report struct {
|
|
Name string `json:"name"`
|
|
Err *cosy.Error `json:"err,omitempty"`
|
|
}
|
|
|
|
type Reports []*Report
|
|
|
|
var selfCheckTasks = []*Task{
|
|
{
|
|
Name: "Directory-Sites",
|
|
CheckFunc: CheckSitesDirectory,
|
|
FixFunc: FixSitesDirectory,
|
|
},
|
|
{
|
|
Name: "Directory-Streams",
|
|
CheckFunc: CheckStreamDirectory,
|
|
FixFunc: FixStreamDirectory,
|
|
},
|
|
{
|
|
Name: "NginxConf-Sites-Enabled",
|
|
CheckFunc: CheckNginxConfIncludeSites,
|
|
FixFunc: FixNginxConfIncludeSites,
|
|
},
|
|
{
|
|
Name: "NginxConf-Streams-Enabled",
|
|
CheckFunc: CheckNginxConfIncludeStreams,
|
|
FixFunc: FixNginxConfIncludeStreams,
|
|
},
|
|
{
|
|
Name: "NginxConf-ConfD",
|
|
CheckFunc: CheckNginxConfIncludeConfD,
|
|
FixFunc: FixNginxConfIncludeConfD,
|
|
},
|
|
}
|
|
|
|
var selfCheckTaskMap = make(map[string]*Task)
|
|
|
|
func init() {
|
|
for _, task := range selfCheckTasks {
|
|
selfCheckTaskMap[task.Name] = task
|
|
}
|
|
if helper.InNginxUIOfficialDocker() {
|
|
selfCheckTasks = append(selfCheckTasks, &Task{
|
|
Name: "Docker-Socket",
|
|
CheckFunc: CheckDockerSocket,
|
|
})
|
|
}
|
|
}
|
|
|
|
func Run() (reports Reports) {
|
|
reports = make(Reports, 0)
|
|
for _, task := range selfCheckTasks {
|
|
var cErr *cosy.Error
|
|
if err := task.CheckFunc(); err != nil {
|
|
errors.As(err, &cErr)
|
|
}
|
|
reports = append(reports, &Report{
|
|
Name: task.Name,
|
|
Err: cErr,
|
|
})
|
|
}
|
|
return
|
|
}
|
|
|
|
func AttemptFix(taskName string) (err error) {
|
|
task, ok := selfCheckTaskMap[taskName]
|
|
if !ok {
|
|
return ErrTaskNotFound
|
|
}
|
|
return task.FixFunc()
|
|
}
|