2023-02-09 19:18:06 +00:00
|
|
|
package service
|
|
|
|
|
|
|
|
import (
|
|
|
|
"os"
|
|
|
|
"syscall"
|
|
|
|
"time"
|
2024-03-10 21:31:24 +00:00
|
|
|
|
2025-09-19 08:05:43 +00:00
|
|
|
"github.com/mhsanaei/3x-ui/v2/logger"
|
2023-02-09 19:18:06 +00:00
|
|
|
)
|
|
|
|
|
2025-09-20 07:35:50 +00:00
|
|
|
// PanelService provides business logic for panel management operations.
|
|
|
|
// It handles panel restart, updates, and system-level panel controls.
|
2024-03-10 21:31:24 +00:00
|
|
|
type PanelService struct{}
|
2023-02-09 19:18:06 +00:00
|
|
|
|
|
|
|
func (s *PanelService) RestartPanel(delay time.Duration) error {
|
|
|
|
p, err := os.FindProcess(syscall.Getpid())
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
go func() {
|
|
|
|
time.Sleep(delay)
|
|
|
|
err := p.Signal(syscall.SIGHUP)
|
|
|
|
if err != nil {
|
2024-07-08 21:08:00 +00:00
|
|
|
logger.Error("failed to send SIGHUP signal:", err)
|
2023-02-09 19:18:06 +00:00
|
|
|
}
|
|
|
|
}()
|
|
|
|
return nil
|
|
|
|
}
|