45 lines
864 B
Go
45 lines
864 B
Go
package service
|
|
|
|
import (
|
|
"github.com/IceWhaleTech/CasaOS-Common/utils/port"
|
|
"github.com/IceWhaleTech/CasaOS-Common/utils/systemctl"
|
|
)
|
|
|
|
type HealthService interface {
|
|
Services() (map[bool]*[]string, error)
|
|
Ports() ([]int, []int, error)
|
|
}
|
|
|
|
type service struct{}
|
|
|
|
func (s *service) Services() (map[bool]*[]string, error) {
|
|
services, err := systemctl.ListServices("casaos*")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var running, notRunning []string
|
|
|
|
for _, service := range services {
|
|
if service.Running {
|
|
running = append(running, service.Name)
|
|
} else {
|
|
notRunning = append(notRunning, service.Name)
|
|
}
|
|
}
|
|
|
|
result := map[bool]*[]string{
|
|
true: &running,
|
|
false: ¬Running,
|
|
}
|
|
|
|
return result, nil
|
|
}
|
|
|
|
func (s *service) Ports() ([]int, []int, error) {
|
|
return port.ListPortsInUse()
|
|
}
|
|
|
|
func NewHealthService() HealthService {
|
|
return &service{}
|
|
}
|