示例#1
0
文件: main.go 项目: filiptc/navpatch
func main() {
	listenAddr, baseDir, rawPatch := processArgs()

	nav, err := navpatch.NewNavigator(baseDir, rawPatch)
	if err != nil {
		internal.ErrorExit(err)
	}

	listener, err := net.Listen("tcp", listenAddr)
	if err != nil {
		internal.ErrorExit("starting server:", err)
	}

	fmt.Println("Serving at " + listener.Addr().String())
	log.Fatal(http.Serve(listener, nav))
}
示例#2
0
文件: main.go 项目: filiptc/navpatch
func processArgs() (string, string, []byte) {
	args := os.Args
	if len(args) < 2 || len(args) > 4 {
		badArgs()
	}

	if args[1] == "-h" {
		usage()
		os.Exit(0)
	} else if len(args) < 3 {
		badArgs()
	}

	var rawPatch []byte
	var err error
	if len(args) == 3 {
		rawPatch, err = ioutil.ReadAll(os.Stdin)
	} else {
		rawPatch, err = ioutil.ReadFile(args[3])
		if err != nil {
			resp, getErr := http.Get(args[3])
			if getErr == nil {
				rawPatch, err = ioutil.ReadAll(resp.Body)
			}
		}
	}
	if err != nil {
		internal.ErrorExit(err)
	}

	return args[1], args[2], rawPatch
}
示例#3
0
文件: main.go 项目: filiptc/navpatch
func main() {
	flag.Parse()

	whitelistStr := strings.Split(*whitelistFlag, "|")
	whitelist := make([]*regexp.Regexp, 0, len(whitelistStr))
	for _, s := range whitelistStr {
		rgx, err := regexp.Compile(s)
		if err != nil {
			internal.ErrorExit("compiling whitelist regexps:", err)
		}
		whitelist = append(whitelist, rgx)
	}

	h := navpatchserve.NewHandler(*cloneDir, "git_command_unix", *sessionsLimit, whitelist, *timePerSession)

	listener, err := net.Listen("tcp", *listenAddr)
	if err != nil {
		internal.ErrorExit("starting server:", err)
	}

	fmt.Println("Serving at " + listener.Addr().String())
	log.Fatal(http.Serve(listener, h))
}