main.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package main
  2. import (
  3. "log"
  4. "os"
  5. "strings"
  6. )
  7. const timeout = 5
  8. func main() {
  9. //log.SetFlags(log.Ldate | log.Lmicroseconds | log.Lshortfile)
  10. log.SetFlags(log.Ldate | log.Lmicroseconds)
  11. printWelcome()
  12. args := os.Args
  13. argc := len(os.Args)
  14. if argc <= 2 {
  15. printHelp()
  16. os.Exit(0)
  17. }
  18. switch args[1] {
  19. case "-listen":
  20. if argc < 3 {
  21. log.Fatalln(`-listen need two arguments, like "nb -listen 1997 2017".`)
  22. }
  23. port1 := checkPort(args[2])
  24. port2 := checkPort(args[3])
  25. log.Println("[√]", "start to listen port:", port1, "and port:", port2)
  26. port2port(port1, port2)
  27. break
  28. case "-tran":
  29. if argc < 3 {
  30. log.Fatalln(`-tran need two arguments, like "nb -tran 1997 192.168.1.2:3389".`)
  31. }
  32. port := checkPort(args[2])
  33. var remoteAddress string
  34. if checkIp(args[3]) {
  35. remoteAddress = args[3]
  36. }
  37. split := strings.SplitN(remoteAddress, ":", 2)
  38. log.Println("[√]", "start to transmit address:", remoteAddress, "to address:", split[0]+":"+port)
  39. port2host(port, remoteAddress)
  40. break
  41. case "-slave":
  42. if argc < 3 {
  43. log.Fatalln(`-slave need two arguments, like "nb -slave 127.0.0.1:3389 8.8.8.8:1997".`)
  44. }
  45. var address1, address2 string
  46. checkIp(args[2])
  47. if checkIp(args[2]) {
  48. address1 = args[2]
  49. }
  50. checkIp(args[3])
  51. if checkIp(args[3]) {
  52. address2 = args[3]
  53. }
  54. log.Println("[√]", "start to connect address:", address1, "and address:", address2)
  55. host2host(address1, address2)
  56. break
  57. default:
  58. printHelp()
  59. }
  60. }