mirror of
				https://github.com/TeaOSLab/EdgeNode.git
				synced 2025-11-04 07:40:56 +08:00 
			
		
		
		
	增加edge-node ip.close IP命令
This commit is contained in:
		@@ -25,7 +25,7 @@ func main() {
 | 
			
		||||
		Product(teaconst.ProductName).
 | 
			
		||||
		Usage(teaconst.ProcessName + " [-v|start|stop|restart|status|quit|test|reload|service|daemon|pprof|accesslog]").
 | 
			
		||||
		Usage(teaconst.ProcessName + " [trackers|goman|conns|gc]").
 | 
			
		||||
		Usage(teaconst.ProcessName + " [ip.drop|ip.reject|ip.remove] IP")
 | 
			
		||||
		Usage(teaconst.ProcessName + " [ip.drop|ip.reject|ip.remove|ip.close] IP")
 | 
			
		||||
 | 
			
		||||
	app.On("test", func() {
 | 
			
		||||
		err := nodes.NewNode().Test()
 | 
			
		||||
@@ -241,6 +241,38 @@ func main() {
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
	app.On("ip.close", func() {
 | 
			
		||||
		var args = os.Args[2:]
 | 
			
		||||
		if len(args) == 0 {
 | 
			
		||||
			fmt.Println("Usage: edge-node ip.close IP")
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		var ip = args[0]
 | 
			
		||||
		if len(net.ParseIP(ip)) == 0 {
 | 
			
		||||
			fmt.Println("IP '" + ip + "' is invalid")
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		fmt.Println("close ip '" + ip)
 | 
			
		||||
 | 
			
		||||
		var sock = gosock.NewTmpSock(teaconst.ProcessName)
 | 
			
		||||
		reply, err := sock.Send(&gosock.Command{
 | 
			
		||||
			Code: "closeIP",
 | 
			
		||||
			Params: map[string]any{
 | 
			
		||||
				"ip": ip,
 | 
			
		||||
			},
 | 
			
		||||
		})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fmt.Println("[ERROR]" + err.Error())
 | 
			
		||||
		} else {
 | 
			
		||||
			var errString = maps.NewMap(reply.Params).GetString("error")
 | 
			
		||||
			if len(errString) > 0 {
 | 
			
		||||
				fmt.Println("[ERROR]" + errString)
 | 
			
		||||
			} else {
 | 
			
		||||
				fmt.Println("ok")
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
	app.On("ip.remove", func() {
 | 
			
		||||
		var args = os.Args[2:]
 | 
			
		||||
		if len(args) == 0 {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7
									
								
								internal/conns/linger.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								internal/conns/linger.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
 | 
			
		||||
 | 
			
		||||
package conns
 | 
			
		||||
 | 
			
		||||
type LingerConn interface {
 | 
			
		||||
	SetLinger(sec int) error
 | 
			
		||||
}
 | 
			
		||||
@@ -102,6 +102,13 @@ func (this *Map) CloseIPConns(ip string) {
 | 
			
		||||
 | 
			
		||||
	if ok {
 | 
			
		||||
		for _, conn := range conns {
 | 
			
		||||
			// 设置Linger
 | 
			
		||||
			lingerConn, isLingerConn := conn.(LingerConn)
 | 
			
		||||
			if isLingerConn {
 | 
			
		||||
				_ = lingerConn.SetLinger(0)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// 关闭
 | 
			
		||||
			_ = conn.Close()
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -923,6 +923,11 @@ func (this *Node) listenSock() error {
 | 
			
		||||
				} else {
 | 
			
		||||
					_ = cmd.ReplyOk()
 | 
			
		||||
				}
 | 
			
		||||
			case "closeIP":
 | 
			
		||||
				var m = maps.NewMap(cmd.Params)
 | 
			
		||||
				var ip = m.GetString("ip")
 | 
			
		||||
				conns.SharedMap.CloseIPConns(ip)
 | 
			
		||||
				_ = cmd.ReplyOk()
 | 
			
		||||
			case "removeIP":
 | 
			
		||||
				var m = maps.NewMap(cmd.Params)
 | 
			
		||||
				var ip = m.GetString("ip")
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user