mirror of
				https://github.com/TeaOSLab/EdgeNode.git
				synced 2025-11-04 07:40:56 +08:00 
			
		
		
		
	在节点重新实现缓存策略和WAF策略
This commit is contained in:
		@@ -5,11 +5,13 @@ import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeNode/internal/apps"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeNode/internal/caches"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeNode/internal/configs"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeNode/internal/events"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeNode/internal/logs"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeNode/internal/remotelogs"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeNode/internal/rpc"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeNode/internal/utils"
 | 
			
		||||
	"github.com/go-yaml/yaml"
 | 
			
		||||
@@ -62,14 +64,14 @@ func (this *Node) Start() {
 | 
			
		||||
	// 本地Sock
 | 
			
		||||
	err := this.listenSock()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logs.Error("NODE", err.Error())
 | 
			
		||||
		remotelogs.Error("NODE", err.Error())
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 读取API配置
 | 
			
		||||
	err = this.syncConfig(false)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logs.Error("NODE", err.Error())
 | 
			
		||||
		remotelogs.Error("NODE", err.Error())
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -82,12 +84,12 @@ func (this *Node) Start() {
 | 
			
		||||
	// 读取配置
 | 
			
		||||
	nodeConfig, err := nodeconfigs.SharedNodeConfig()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logs.Error("NODE", "start failed: read node config failed: "+err.Error())
 | 
			
		||||
		remotelogs.Error("NODE", "start failed: read node config failed: "+err.Error())
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	err = nodeConfig.Init()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logs.Error("NODE", "init node config failed: "+err.Error())
 | 
			
		||||
		remotelogs.Error("NODE", "init node config failed: "+err.Error())
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	sharedNodeConfig = nodeConfig
 | 
			
		||||
@@ -104,14 +106,14 @@ func (this *Node) Start() {
 | 
			
		||||
	// 启动端口
 | 
			
		||||
	err = sharedListenerManager.Start(nodeConfig)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logs.Error("NODE", "start failed: "+err.Error())
 | 
			
		||||
		remotelogs.Error("NODE", "start failed: "+err.Error())
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 写入PID
 | 
			
		||||
	err = apps.WritePid()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logs.Error("NODE", "write pid failed: "+err.Error())
 | 
			
		||||
		remotelogs.Error("NODE", "write pid failed: "+err.Error())
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -212,14 +214,22 @@ func (this *Node) syncConfig(isFirstTime bool) error {
 | 
			
		||||
 | 
			
		||||
	// 刷新配置
 | 
			
		||||
	if isFirstTime {
 | 
			
		||||
		logs.Println("NODE", "reloading config ...")
 | 
			
		||||
		remotelogs.Println("NODE", "reloading config ...")
 | 
			
		||||
	} else {
 | 
			
		||||
		logs.Println("NODE", "loading config ...")
 | 
			
		||||
		remotelogs.Println("NODE", "loading config ...")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	nodeconfigs.ResetNodeConfig(nodeConfig)
 | 
			
		||||
	caches.SharedManager.UpdatePolicies(nodeConfig.AllCachePolicies())
 | 
			
		||||
	sharedWAFManager.UpdatePolicies(nodeConfig.AllHTTPFirewallPolicies())
 | 
			
		||||
	if nodeConfig.HTTPCachePolicy != nil {
 | 
			
		||||
		caches.SharedManager.UpdatePolicies([]*serverconfigs.HTTPCachePolicy{nodeConfig.HTTPCachePolicy})
 | 
			
		||||
	} else {
 | 
			
		||||
		caches.SharedManager.UpdatePolicies([]*serverconfigs.HTTPCachePolicy{})
 | 
			
		||||
	}
 | 
			
		||||
	if nodeConfig.HTTPFirewallPolicy != nil {
 | 
			
		||||
		sharedWAFManager.UpdatePolicies([]*firewallconfigs.HTTPFirewallPolicy{nodeConfig.HTTPFirewallPolicy})
 | 
			
		||||
	} else {
 | 
			
		||||
		sharedWAFManager.UpdatePolicies([]*firewallconfigs.HTTPFirewallPolicy{})
 | 
			
		||||
	}
 | 
			
		||||
	sharedNodeConfig = nodeConfig
 | 
			
		||||
 | 
			
		||||
	// 发送事件
 | 
			
		||||
@@ -237,7 +247,7 @@ func (this *Node) startSyncTimer() {
 | 
			
		||||
	// TODO 这个时间间隔可以自行设置
 | 
			
		||||
	ticker := time.NewTicker(60 * time.Second)
 | 
			
		||||
	events.On(events.EventQuit, func() {
 | 
			
		||||
		logs.Println("NODE", "quit sync timer")
 | 
			
		||||
		remotelogs.Println("NODE", "quit sync timer")
 | 
			
		||||
		ticker.Stop()
 | 
			
		||||
	})
 | 
			
		||||
	go func() {
 | 
			
		||||
@@ -246,13 +256,13 @@ func (this *Node) startSyncTimer() {
 | 
			
		||||
			case <-ticker.C:
 | 
			
		||||
				err := this.syncConfig(false)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					logs.Error("NODE", "sync config error: "+err.Error())
 | 
			
		||||
					remotelogs.Error("NODE", "sync config error: "+err.Error())
 | 
			
		||||
					continue
 | 
			
		||||
				}
 | 
			
		||||
			case <-changeNotify:
 | 
			
		||||
				err := this.syncConfig(false)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					logs.Error("NODE", "sync config error: "+err.Error())
 | 
			
		||||
					remotelogs.Error("NODE", "sync config error: "+err.Error())
 | 
			
		||||
					continue
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
@@ -333,7 +343,7 @@ func (this *Node) listenSock() error {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	events.On(events.EventQuit, func() {
 | 
			
		||||
		logs.Println("NODE", "quit unix sock")
 | 
			
		||||
		remotelogs.Println("NODE", "quit unix sock")
 | 
			
		||||
		_ = listener.Close()
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user