예제 #1
0
파일: main.go 프로젝트: ruthlessmike/gohop
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")
	}
}
예제 #2
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")
	}
}