func main() { flag.BoolVar(&getVersion, "version", false, "Get Version info") flag.BoolVar(&debug, "debug", false, "Provide debug info") flag.StringVar(&cfgFile, "config", "", "configfile") flag.Parse() if getVersion { fmt.Println("GoHop: Yet Another VPN to Escape from Censorship") fmt.Printf("Version: %s\n", VERSION) os.Exit(0) } logging.InitLogger(debug) logger := logging.GetLogger() checkerr := func(err error) { if err != nil { logger.Error(err.Error()) trace := make([]byte, 1024) count := runtime.Stack(trace, true) logger.Error("Stack of %d bytes: %s", count, trace) os.Exit(1) } } if cfgFile == "" { cfgFile = flag.Arg(0) } logger.Info("using config file: %v", cfgFile) icfg, err := hop.ParseHopConfig(cfgFile) logger.Debug("%v", icfg) logger.Debug("checking") checkerr(err) switch cfg := icfg.(type) { case hop.HopServerConfig: err := hop.NewServer(cfg) logger.Debug("checking") checkerr(err) case hop.HopClientConfig: err := hop.NewClient(cfg) checkerr(err) default: logger.Error("Invalid config file") } }
func main() { flag.BoolVar(&cltMode, "client", false, "Run in client mode") flag.BoolVar(&srvMode, "server", false, "Run in server mode") flag.BoolVar(&debug, "debug", true, "Provide debug info") flag.StringVar(&cfgFile, "config", "", "configfile") flag.Parse() logging.InitLogger(debug) logger := logging.GetLogger() if srvMode == cltMode { logger.Error("Invalid run mode") return } if cfgFile == "" { cfgFile = flag.Arg(0) } logger.Info("using config file: %v", cfgFile) if srvMode { err := gohop.NewServer(cfgFile) if err != nil { logger.Error(err.Error()) return } } if cltMode { err := gohop.NewClient(cfgFile) if err != nil { logger.Error(err.Error()) return } } }