Move service enable/disable functionality to esvm

This commit is contained in:
2025-08-27 15:57:56 +03:00
parent d344347782
commit 0df715dda1
5 changed files with 127 additions and 105 deletions
+62
View File
@@ -1,6 +1,7 @@
package main
import (
"io"
"os"
"os/exec"
"path"
@@ -308,3 +309,64 @@ func (service *EnitService) RestartService() error {
return nil
}
// Functions will be rewritten at some point to allow enabling unloaded services
func (service *EnitService) isEnabled() bool {
contents, err := os.ReadFile(path.Join(serviceConfigDir, "enabled_services"))
if err != nil {
return false
}
for _, line := range strings.Split(string(contents), "\n") {
line = strings.TrimSpace(line)
if line == "" {
continue
}
if line == service.Name {
return true
}
}
return false
}
func (service *EnitService) SetEnabled(isEnabled bool) error {
// Return if service is already in correct state
if service.isEnabled() == isEnabled {
return nil
}
// Create or open enabled_services file
file, err := os.OpenFile(path.Join(serviceConfigDir, "enabled_services"), os.O_CREATE|os.O_RDWR, 0644)
if err != nil {
return err
}
defer file.Close()
// Get enabled_services file contents
contents, err := io.ReadAll(file)
if err != nil {
return err
}
// Modify contents
strContents := string(contents)
if isEnabled {
strContents += service.Name + "\n"
} else {
strContents = strings.ReplaceAll(strContents, service.Name+"\n", "")
}
// Write new contents to file
file.Truncate(0)
file.Seek(0, 0)
_, err = file.WriteString(strContents)
if err != nil {
return err
}
file.Sync()
return nil
}