mirror of
https://github.com/InazumaV/Ratte.git
synced 2026-02-04 12:40:12 +00:00
89 lines
1.6 KiB
Go
89 lines
1.6 KiB
Go
package trigger
|
|
|
|
import (
|
|
"Ratte/conf"
|
|
"Ratte/handler"
|
|
"fmt"
|
|
"github.com/Yuzuki616/Ratte-Interface/panel"
|
|
"github.com/robfig/cron/v3"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
type Trigger struct {
|
|
l *logrus.Entry
|
|
c *cron.Cron
|
|
h *handler.Handler
|
|
p panel.Panel
|
|
remoteId int
|
|
remoteC *conf.Remote
|
|
hashs map[string]string
|
|
}
|
|
|
|
func NewTrigger(
|
|
l *logrus.Entry,
|
|
tc *conf.Trigger,
|
|
h *handler.Handler,
|
|
p panel.Panel,
|
|
rm *conf.Remote,
|
|
) (*Trigger, error) {
|
|
tr := &Trigger{
|
|
l: l,
|
|
c: cron.New(),
|
|
h: h,
|
|
p: p,
|
|
remoteC: rm,
|
|
}
|
|
|
|
// add pull node cron task
|
|
_, err := tr.addCronHandle(tc.PullNodeCron, tr.pullNodeHandle)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// add pull user cron task
|
|
_, err = tr.addCronHandle(tc.PullUserCron, tr.pullUserHandle)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// add report user cron task
|
|
_, err = tr.addCronHandle(tc.ReportUserCron, tr.reportUserHandle)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// add renew cert cron task
|
|
_, err = tr.addCronHandle(tc.RenewCertCron, tr.renewCertCron)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return tr, nil
|
|
}
|
|
|
|
func (t *Trigger) Start() error {
|
|
r := t.remoteC
|
|
rsp := t.p.AddRemote(&panel.AddRemoteParams{
|
|
Baseurl: r.APIHost,
|
|
NodeId: r.NodeID,
|
|
NodeType: r.NodeType,
|
|
Timeout: r.Timeout,
|
|
})
|
|
if rsp.Err != nil {
|
|
return rsp.Err
|
|
}
|
|
t.remoteId = rsp.RemoteId
|
|
t.pullNodeHandle()
|
|
t.pullUserHandle()
|
|
t.c.Start()
|
|
return nil
|
|
}
|
|
|
|
func (t *Trigger) Close() error {
|
|
t.c.Stop()
|
|
err := t.p.DelRemote(t.remoteId)
|
|
if err != nil {
|
|
return fmt.Errorf("del remote err: %w", err)
|
|
}
|
|
return nil
|
|
}
|