@@ -15,12 +15,14 @@ func (c *Controller) startTasks(node *panel.NodeInfo) {
1515 Name : "nodeInfoMonitor" ,
1616 Interval : node .PullInterval ,
1717 Execute : c .nodeInfoMonitor ,
18+ Reload : c .reloadTask ,
1819 }
1920 // fetch user list task
2021 c .userReportPeriodic = & task.Task {
2122 Name : "reportUserTrafficTask" ,
2223 Interval : node .PushInterval ,
2324 Execute : c .reportUserTrafficTask ,
25+ Reload : c .reloadTask ,
2426 }
2527 log .WithField ("tag" , c .tag ).Info ("Start monitor node status" )
2628 // delay to start nodeInfoMonitor
@@ -35,6 +37,7 @@ func (c *Controller) startTasks(node *panel.NodeInfo) {
3537 Name : "renewCertTask" ,
3638 Interval : time .Hour * 24 ,
3739 Execute : c .renewCertTask ,
40+ Reload : c .reloadTask ,
3841 }
3942 log .WithField ("tag" , c .tag ).Info ("Start renew cert" )
4043 // delay to start renewCert
@@ -43,8 +46,21 @@ func (c *Controller) startTasks(node *panel.NodeInfo) {
4346 }
4447}
4548
46- func (c * Controller ) nodeInfoMonitor () (err error ) {
49+ func (c * Controller ) reloadTask () {
50+ newClient , err := panel .New (c .conf )
51+ if err != nil {
52+ log .Panic ("Tasks reload failed" )
53+ }
54+ c .apiClient = newClient
55+ c .nodeInfoMonitorPeriodic .Close ()
56+ c .userReportPeriodic .Close ()
57+ if c .renewCertPeriodic != nil {
58+ c .renewCertPeriodic .Close ()
59+ }
60+ c .startTasks (c .info )
61+ }
4762
63+ func (c * Controller ) nodeInfoMonitor () (err error ) {
4864 // get node info
4965 newN , err := c .apiClient .GetNodeInfo ()
5066 if err != nil {
0 commit comments