MCPcopy Index your code
hub / github.com/GoEdgeLab/EdgeNode / handleCheckLocalFirewall

Method handleCheckLocalFirewall

internal/nodes/api_stream.go:369–422  ·  view source on GitHub ↗

检查本地防火墙

(message *pb.NodeStreamMessage)

Source from the content-addressed store, hash-verified

367
368// 检查本地防火墙
369func (this *APIStream) handleCheckLocalFirewall(message *pb.NodeStreamMessage) error {
370 var dataMessage = &messageconfigs.CheckLocalFirewallMessage{}
371 err := json.Unmarshal(message.DataJSON, dataMessage)
372 if err != nil {
373 this.replyFail(message.RequestId, "decode message data failed: "+err.Error())
374 return nil
375 }
376
377 // nft
378 if dataMessage.Name == "nftables" {
379 if runtime.GOOS != "linux" {
380 this.replyFail(message.RequestId, "not Linux system")
381 return nil
382 }
383
384 nft, err := executils.LookPath("nft")
385 if err != nil {
386 this.replyFail(message.RequestId, "'nft' not found: "+err.Error())
387 return nil
388 }
389
390 var cmd = executils.NewTimeoutCmd(10*time.Second, nft, "--version")
391 cmd.WithStdout()
392 err = cmd.Run()
393 if err != nil {
394 this.replyFail(message.RequestId, "get version failed: "+err.Error())
395 return nil
396 }
397
398 var outputString = cmd.Stdout()
399 var versionMatches = regexp.MustCompile(`nftables v([\d.]+)`).FindStringSubmatch(outputString)
400 if len(versionMatches) <= 1 {
401 this.replyFail(message.RequestId, "can not get nft version")
402 return nil
403 }
404 var version = versionMatches[1]
405
406 var result = maps.Map{
407 "version": version,
408 }
409
410 var protectionConfig = sharedNodeConfig.DDoSProtection
411 err = firewalls.SharedDDoSProtectionManager.Apply(protectionConfig)
412 if err != nil {
413 this.replyFail(message.RequestId, dataMessage.Name+" was installed, but apply DDoS protection config failed: "+err.Error())
414 } else {
415 this.replyOk(message.RequestId, string(result.AsJSON()))
416 }
417 } else {
418 this.replyFail(message.RequestId, "invalid firewall name '"+dataMessage.Name+"'")
419 }
420
421 return nil
422}
423
424// 修改API地址
425func (this *APIStream) handleChangeAPINode(message *pb.NodeStreamMessage) error {

Callers 1

loopMethod · 0.95

Calls 8

replyFailMethod · 0.95
replyOkMethod · 0.95
WithStdoutMethod · 0.80
StdoutMethod · 0.80
FindStringSubmatchMethod · 0.80
ErrorMethod · 0.45
RunMethod · 0.45
ApplyMethod · 0.45

Tested by

no test coverage detected