Example #1
0
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")
	}
}
Example #2
0
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
		}

	}
}