ping端口

This commit is contained in:
wh_zcy 2023-01-05 19:46:43 +08:00
parent 2807ec89ab
commit 7dcb823d1d
4 changed files with 81 additions and 61 deletions

View File

@ -8,8 +8,6 @@ import (
"go_dreamfactory/cmd/v2/service/observer" "go_dreamfactory/cmd/v2/service/observer"
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/pb" "go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"strings"
"time" "time"
"fyne.io/fyne/v2" "fyne.io/fyne/v2"
@ -133,49 +131,49 @@ func (app *perfChoose) LazyInit(ptService service.PttService, obs observer.Obser
closeApp3(perfWin.tabs, common.TOOLBAR_PERF_CHOOSE) closeApp3(perfWin.tabs, common.TOOLBAR_PERF_CHOOSE)
openApp3(perfWin.tabs, common.TOOLBAR_PERF_RES) openApp3(perfWin.tabs, common.TOOLBAR_PERF_RES)
if tables, err := cfg.NewTables(common.Loader); err != nil { // if tables, err := cfg.NewTables(common.Loader); err != nil {
println(err.Error()) // println(err.Error())
} else { // } else {
for _, v := range tables.TestFlow.GetDataList() { // for _, v := range tables.TestFlow.GetDataList() {
p, ok := pbMap[v.Route] // p, ok := pbMap[v.Route]
if !ok { // if !ok {
logrus.WithField("route", v.Route).Debug("未注册") // logrus.WithField("route", v.Route).Debug("未注册")
continue // continue
} // }
routeStr := strings.SplitN(v.Route, ".", 2) // routeStr := strings.SplitN(v.Route, ".", 2)
for _, account := range app.binduids { // for _, account := range app.binduids {
rq := ReqParams{ // rq := ReqParams{
Sid: app.conf.SId, // Sid: app.conf.SId,
Account: account, // Account: account,
PbReq: p, // PbReq: p,
MainType: routeStr[0], // MainType: routeStr[0],
SubType: routeStr[1], // SubType: routeStr[1],
} // }
b, err := app.buildReq(rq) // b, err := app.buildReq(rq)
if err != nil { // if err != nil {
logrus.Error(err) // logrus.Error(err)
return // return
} // }
app.handler.SetReq(b, true) // app.handler.SetReq(b, true)
} // }
param := lib.ParamMgr{ // param := lib.ParamMgr{
Caller: app.handler, // Caller: app.handler,
Timeout: time.Duration(app.conf.Pressure.TimeoutMs) * time.Millisecond, // Timeout: time.Duration(app.conf.Pressure.TimeoutMs) * time.Millisecond,
Lps: uint32(app.conf.Pressure.Concurrency), // Lps: uint32(app.conf.Pressure.Concurrency),
Duration: time.Duration(app.conf.Pressure.DurationS) * time.Second, // Duration: time.Duration(app.conf.Pressure.DurationS) * time.Second,
ResultCh: make(chan *lib.CallResult, 50), // ResultCh: make(chan *lib.CallResult, 50),
} // }
a, err := lib.NewAssistant(obs, param) // a, err := lib.NewAssistant(obs, param)
if err != nil { // if err != nil {
logrus.Error(err) // logrus.Error(err)
} // }
a.Start() // a.Start()
a.ShowResult() // a.ShowResult()
} // }
} // }
} }
//上一步 //上一步

View File

@ -1,7 +1,6 @@
package ui package ui
import ( import (
"fmt"
"go_dreamfactory/cmd/v2/lib" "go_dreamfactory/cmd/v2/lib"
"go_dreamfactory/cmd/v2/lib/common" "go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/lib/storage" "go_dreamfactory/cmd/v2/lib/storage"
@ -20,7 +19,6 @@ import (
"fyne.io/fyne/v2/widget" "fyne.io/fyne/v2/widget"
"github.com/Pallinder/go-randomdata" "github.com/Pallinder/go-randomdata"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"github.com/spf13/cast"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
) )
@ -47,18 +45,18 @@ func (app *perfPb) LazyInit(ptService service.PttService, obs observer.Observer)
app.itemList.ItemList = app.itemList.CreateList() app.itemList.ItemList = app.itemList.CreateList()
app.pbList = func() { app.pbList = func() {
if tables, err := cfg.NewTables(common.Loader); err != nil { // if tables, err := cfg.NewTables(common.Loader); err != nil {
println(err.Error()) // println(err.Error())
} else { // } else {
for _, v := range tables.TestFlow.GetDataList() { // for _, v := range tables.TestFlow.GetDataList() {
item := common.Item{ // item := common.Item{
Id: cast.ToString(v.Id), // Id: cast.ToString(v.Id),
Text: fmt.Sprintf("%-6d %-20s %-20s %s", v.Id, v.Msg, v.Route, v.Params), // Text: fmt.Sprintf("%-6d %-20s %-20s %s", v.Id, v.Msg, v.Route, v.Params),
Data: v, // Data: v,
} // }
app.itemList.AddItem(item) // app.itemList.AddItem(item)
} // }
} // }
} }
defer app.pbList() defer app.pbList()

View File

@ -14,6 +14,7 @@ import (
"fyne.io/fyne/v2/container" "fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget" "fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
"github.com/spf13/cast" "github.com/spf13/cast"
) )
@ -25,8 +26,6 @@ type appPing struct {
func (this *appPing) LazyInit(ptService service.PttService, obs observer.Observer) error { func (this *appPing) LazyInit(ptService service.PttService, obs observer.Observer) error {
this.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_PING, theme.DownloadIcon(), nil) this.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_PING, theme.DownloadIcon(), nil)
this.resultCh = make(chan int)
content := container.NewMax() content := container.NewMax()
content.Objects = []fyne.CanvasObject{} content.Objects = []fyne.CanvasObject{}
@ -36,18 +35,41 @@ func (this *appPing) LazyInit(ptService service.PttService, obs observer.Observe
portEntry := widget.NewMultiLineEntry() portEntry := widget.NewMultiLineEntry()
portEntry.Text = "80,3306,6379" portEntry.Text = "80,3306,6379"
form := widget.NewForm( form := widget.NewForm(
widget.NewFormItem("主机", targetHost),
widget.NewFormItem("端口", portEntry), widget.NewFormItem("端口", portEntry),
) )
// result
result := widget.NewMultiLineEntry()
form.OnSubmit = func() { form.OnSubmit = func() {
result.Text = ""
if portEntry.Text == "" {
return
}
this.resultCh = make(chan int)
ports := strings.Split(portEntry.Text, ",") ports := strings.Split(portEntry.Text, ",")
this.ping(targetHost.Text, ports) this.ping(targetHost.Text, ports)
var msgs []string
for p := range this.resultCh { for p := range this.resultCh {
fmt.Println(p, "ok") for _, v := range ports {
if cast.ToInt(v) == p {
msgs = append(msgs, fmt.Sprintf("端口:%d OK", p))
} else {
msgs = append(msgs, fmt.Sprintf("端口:%s ERR", v))
}
result.Text = strings.Join(msgs, "\n")
result.Refresh()
}
} }
} }
form.Items[1].HintText = "多个端口使用英文,号分隔" form.Items[1].HintText = "多个端口使用英文,号分隔"
content.Objects = append(content.Objects, form)
result.OnChanged = func(s string) {
result.Refresh()
}
content.Objects = append(content.Objects, container.NewBorder(form, nil, nil, nil, result))
this.tabItem.Content = content this.tabItem.Content = content
return nil return nil
} }
@ -61,6 +83,8 @@ func (this *appPing) ping(targetHost string, ports []string) {
_, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%d", targetHost, p), time.Millisecond*500) _, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%d", targetHost, p), time.Millisecond*500)
if err == nil { if err == nil {
this.resultCh <- p this.resultCh <- p
} else {
logrus.Error(err)
} }
}(cast.ToInt(port)) }(cast.ToInt(port))
} }

View File

@ -53,7 +53,7 @@ func NewToolWindow(ui *UIImpl, parent fyne.Window) ToolWindow {
openApp2(mw.at, common.TOOLBAR_TERM) openApp2(mw.at, common.TOOLBAR_TERM)
}), }),
widget.NewToolbarAction(theme.MailSendIcon(), func() { widget.NewToolbarAction(theme.ComputerIcon(), func() {
openApp2(mw.at, common.TOOLBAR_PING) openApp2(mw.at, common.TOOLBAR_PING)
}), }),