129 lines
2.2 KiB
Go
129 lines
2.2 KiB
Go
package app
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/alireza0/s-ui/config"
|
|
"github.com/alireza0/s-ui/core"
|
|
"github.com/alireza0/s-ui/cronjob"
|
|
"github.com/alireza0/s-ui/database"
|
|
"github.com/alireza0/s-ui/logger"
|
|
"github.com/alireza0/s-ui/service"
|
|
"github.com/alireza0/s-ui/sub"
|
|
"github.com/alireza0/s-ui/web"
|
|
|
|
"github.com/op/go-logging"
|
|
)
|
|
|
|
type APP struct {
|
|
service.SettingService
|
|
configService *service.ConfigService
|
|
webServer *web.Server
|
|
subServer *sub.Server
|
|
cronJob *cronjob.CronJob
|
|
logger *logging.Logger
|
|
core *core.Core
|
|
}
|
|
|
|
func NewApp() *APP {
|
|
return &APP{}
|
|
}
|
|
|
|
func (a *APP) Init() error {
|
|
log.Printf("%v %v", config.GetName(), config.GetVersion())
|
|
|
|
a.initLog()
|
|
|
|
err := database.InitDB(config.GetDBPath())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Init Setting
|
|
a.SettingService.GetAllSetting()
|
|
|
|
a.core = core.NewCore()
|
|
|
|
a.cronJob = cronjob.NewCronJob()
|
|
a.webServer = web.NewServer()
|
|
a.subServer = sub.NewServer()
|
|
|
|
a.configService = service.NewConfigService(a.core)
|
|
|
|
return nil
|
|
}
|
|
|
|
func (a *APP) Start() error {
|
|
loc, err := a.SettingService.GetTimeLocation()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
trafficAge, err := a.SettingService.GetTrafficAge()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = a.cronJob.Start(loc, trafficAge)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = a.webServer.Start()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = a.subServer.Start()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = a.configService.StartCore()
|
|
if err != nil {
|
|
logger.Error(err)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (a *APP) Stop() {
|
|
a.cronJob.Stop()
|
|
err := a.subServer.Stop()
|
|
if err != nil {
|
|
logger.Warning("stop Sub Server err:", err)
|
|
}
|
|
err = a.webServer.Stop()
|
|
if err != nil {
|
|
logger.Warning("stop Web Server err:", err)
|
|
}
|
|
err = a.configService.StopCore()
|
|
if err != nil {
|
|
logger.Warning("stop Core err:", err)
|
|
}
|
|
}
|
|
|
|
func (a *APP) initLog() {
|
|
switch config.GetLogLevel() {
|
|
case config.Debug:
|
|
logger.InitLogger(logging.DEBUG)
|
|
case config.Info:
|
|
logger.InitLogger(logging.INFO)
|
|
case config.Warn:
|
|
logger.InitLogger(logging.WARNING)
|
|
case config.Error:
|
|
logger.InitLogger(logging.ERROR)
|
|
default:
|
|
log.Fatal("unknown log level:", config.GetLogLevel())
|
|
}
|
|
}
|
|
|
|
func (a *APP) RestartApp() {
|
|
a.Stop()
|
|
a.Start()
|
|
}
|
|
|
|
func (a *APP) GetCore() *core.Core {
|
|
return a.core
|
|
}
|