package main import ( "log" "os" "strings" ) const timeout = 5 func main() { //log.SetFlags(log.Ldate | log.Lmicroseconds | log.Lshortfile) log.SetFlags(log.Ldate | log.Lmicroseconds) printWelcome() args := os.Args argc := len(os.Args) if argc <= 2 { printHelp() os.Exit(0) } switch args[1] { case "-listen": if argc < 3 { log.Fatalln(`-listen need two arguments, like "nb -listen 1997 2017".`) } port1 := checkPort(args[2]) port2 := checkPort(args[3]) log.Println("[√]", "start to listen port:", port1, "and port:", port2) port2port(port1, port2) break case "-tran": if argc < 3 { log.Fatalln(`-tran need two arguments, like "nb -tran 1997 192.168.1.2:3389".`) } port := checkPort(args[2]) var remoteAddress string if checkIp(args[3]) { remoteAddress = args[3] } split := strings.SplitN(remoteAddress, ":", 2) log.Println("[√]", "start to transmit address:", remoteAddress, "to address:", split[0]+":"+port) port2host(port, remoteAddress) break case "-slave": if argc < 3 { log.Fatalln(`-slave need two arguments, like "nb -slave 127.0.0.1:3389 8.8.8.8:1997".`) } var address1, address2 string checkIp(args[2]) if checkIp(args[2]) { address1 = args[2] } checkIp(args[3]) if checkIp(args[3]) { address2 = args[3] } log.Println("[√]", "start to connect address:", address1, "and address:", address2) host2host(address1, address2) break default: printHelp() } }