You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
star/net/cmd.go

98 lines
3.3 KiB
Go

2 years ago
package net
12 months ago
import (
"b612.me/apps/b612/netforward"
10 months ago
"b612.me/starlog"
"fmt"
12 months ago
"github.com/spf13/cobra"
10 months ago
"time"
12 months ago
)
var Cmd = &cobra.Command{
Use: "net",
10 months ago
Short: "网络工具包括nat穿透端口转发等",
12 months ago
}
func init() {
Cmd.AddCommand(netforward.CmdNetforward)
}
10 months ago
var natc NatClient
var nats NatServer
10 months ago
var dns, ipinfoaddr string
var timeout int
var maxHop int
var disableIpInfo bool
10 months ago
var bindAddr string
var hideIncorrect bool
10 months ago
10 months ago
func init() {
CmdNatClient.Flags().StringVarP(&natc.ServiceTarget, "target", "t", "", "forward server target address")
CmdNatClient.Flags().StringVarP(&natc.CmdTarget, "server", "s", "", "nat server command address")
CmdNatClient.Flags().StringVarP(&natc.Passwd, "passwd", "p", "", "password")
CmdNatClient.Flags().BoolVarP(&natc.enableTCP, "enable-tcp", "T", true, "enable tcp forward")
CmdNatClient.Flags().BoolVarP(&natc.enableUDP, "enable-udp", "U", true, "enable udp forward")
CmdNatClient.Flags().IntVarP(&natc.DialTimeout, "dial-timeout", "d", 10000, "dial timeout milliseconds")
CmdNatClient.Flags().IntVarP(&natc.UdpTimeout, "udp-timeout", "D", 60000, "udp connection timeout milliseconds")
Cmd.AddCommand(CmdNatClient)
CmdNatServer.Flags().StringVarP(&nats.ListenAddr, "listen", "l", "", "listen address")
CmdNatServer.Flags().StringVarP(&nats.Passwd, "passwd", "p", "", "password")
CmdNatServer.Flags().Int64VarP(&nats.UDPTimeout, "udp-timeout", "D", 60000, "udp connection timeout milliseconds")
CmdNatServer.Flags().Int64VarP(&nats.NetTimeout, "dial-timeout", "d", 10000, "dial timeout milliseconds")
CmdNatServer.Flags().BoolVarP(&nats.enableTCP, "enable-tcp", "T", true, "enable tcp forward")
CmdNatServer.Flags().BoolVarP(&nats.enableUDP, "enable-udp", "U", true, "enable udp forward")
Cmd.AddCommand(CmdNatServer)
10 months ago
CmdNetTrace.Flags().StringVarP(&dns, "dns", "d", "", "自定义dns服务器")
CmdNetTrace.Flags().StringVarP(&ipinfoaddr, "ipinfo", "i", "https://ip.b612.me/{ip}/detail", "自定义ip信息查询地址")
CmdNetTrace.Flags().IntVarP(&timeout, "timeout", "t", 800, "超时时间,单位毫秒")
CmdNetTrace.Flags().IntVarP(&maxHop, "max-hop", "m", 32, "最大跳数")
CmdNetTrace.Flags().BoolVarP(&disableIpInfo, "disable-ipinfo", "D", false, "禁用ip信息查询")
10 months ago
CmdNetTrace.Flags().StringVarP(&bindAddr, "bind", "b", "0.0.0.0", "绑定地址")
CmdNetTrace.Flags().BoolVarP(&hideIncorrect, "hide-incorrect", "H", false, "隐藏错误节点")
10 months ago
Cmd.AddCommand(CmdNetTrace)
10 months ago
}
var CmdNatClient = &cobra.Command{
Use: "natc",
10 months ago
Short: "nat穿透客户端",
10 months ago
Run: func(cmd *cobra.Command, args []string) {
if natc.ServiceTarget == "" || natc.CmdTarget == "" {
cmd.Help()
return
}
natc.Run()
},
}
var CmdNatServer = &cobra.Command{
Use: "nats",
10 months ago
Short: "nat穿透服务端",
10 months ago
Run: func(cmd *cobra.Command, args []string) {
nats.Run()
},
}
10 months ago
var CmdNetTrace = &cobra.Command{
Use: "trace",
Short: "网络路径追踪",
Run: func(cmd *cobra.Command, args []string) {
if len(args) == 0 {
cmd.Help()
return
}
if disableIpInfo {
ipinfoaddr = ""
}
for _, target := range args {
starlog.Infoln("Traceroute to ", target)
10 months ago
Traceroute(target, bindAddr, dns, maxHop, time.Millisecond*time.Duration(timeout), ipinfoaddr, hideIncorrect)
10 months ago
fmt.Println("-----------------------------")
}
},
}