nathole: support discover without configuration file (#3395)

This commit is contained in:
fatedier 2023-04-10 21:45:00 +08:00 committed by GitHub
parent 2c2c4ecdbc
commit f6b8645f56
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -26,7 +26,10 @@ import (
"github.com/fatedier/frp/pkg/nathole" "github.com/fatedier/frp/pkg/nathole"
) )
var natHoleSTUNServer string var (
natHoleSTUNServer string
serverUDPPort int
)
func init() { func init() {
RegisterCommonFlags(natholeCmd) RegisterCommonFlags(natholeCmd)
@ -34,7 +37,8 @@ func init() {
rootCmd.AddCommand(natholeCmd) rootCmd.AddCommand(natholeCmd)
natholeCmd.AddCommand(natholeDiscoveryCmd) natholeCmd.AddCommand(natholeDiscoveryCmd)
natholeCmd.PersistentFlags().StringVarP(&natHoleSTUNServer, "nat_hole_stun_server", "", "", "STUN server address for nathole") natholeCmd.PersistentFlags().StringVarP(&natHoleSTUNServer, "nat_hole_stun_server", "", "stun.easyvoip.com:3478", "STUN server address for nathole")
natholeCmd.PersistentFlags().IntVarP(&serverUDPPort, "server_udp_port", "", 0, "UDP port of frps for nathole")
} }
var natholeCmd = &cobra.Command{ var natholeCmd = &cobra.Command{
@ -46,14 +50,14 @@ var natholeDiscoveryCmd = &cobra.Command{
Use: "discover", Use: "discover",
Short: "Discover nathole information by frps and stun server", Short: "Discover nathole information by frps and stun server",
RunE: func(cmd *cobra.Command, args []string) error { RunE: func(cmd *cobra.Command, args []string) error {
cfg, _, _, err := config.ParseClientConfig(cfgFile) // ignore error here, because we can use command line pameters
if err != nil { cfg, _, _, _ := config.ParseClientConfig(cfgFile)
fmt.Println(err)
os.Exit(1)
}
if natHoleSTUNServer != "" { if natHoleSTUNServer != "" {
cfg.NatHoleSTUNServer = natHoleSTUNServer cfg.NatHoleSTUNServer = natHoleSTUNServer
} }
if serverUDPPort != 0 {
cfg.ServerUDPPort = serverUDPPort
}
if err := validateForNatHoleDiscovery(cfg); err != nil { if err := validateForNatHoleDiscovery(cfg); err != nil {
fmt.Println(err) fmt.Println(err)