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) } InitLogger(debug) logger := GetLogger() checkerr := func(err error) { if err != nil { logger.Error(err.Error()) 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) checkerr(err) maxProcs := runtime.GOMAXPROCS(0) if maxProcs < 2 { runtime.GOMAXPROCS(2) } switch cfg := icfg.(type) { case hop.HopServerConfig: err := hop.NewServer(cfg) checkerr(err) case hop.HopClientConfig: err := hop.NewClient(cfg) checkerr(err) default: logger.Error("Invalid config file") } }
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") } }