예제 #1
0
func FindTunnel() string {
	var res interface{}
	response := utilities.HttpGetJson("http://localhost:4040/api/tunnels")
	err := json.Unmarshal(response, &res)
	utilities.CheckError(err)
	tunnels := res.(map[string]interface{})
	for _, v := range tunnels {
		switch vv := v.(type) {
		case []interface{}:
			for _, u := range vv {
				tunnel := u.(map[string]interface{})
				for _, val := range tunnel {
					switch val.(type) {
					case string:
						strval, ok := val.(string)
						if ok && strings.Contains(strval, "https://") {
							//fmt.Println(tunnel["public_url"])
							return strval
						}
					}
				}
			}
		}
	}
	return ""
}
예제 #2
0
func PreRunService() {
	fmt.Println("Starting server!")
	ret, _, errNo := syscall.RawSyscall(syscall.SYS_FORK, 0, 0, 0)
	if errNo != 0 {
		panic(errors.New(fmt.Sprintf("Fork failed err: %d ", errNo)))
	} else {
		return
	}
	switch ret {
	case 0:
		break
	default:
		os.Exit(0)
	}
	sid, err := syscall.Setsid()
	utilities.CheckError(err)
	if sid == -1 {
		os.Exit(-1)
	}

	router := mux.NewRouter().StrictSlash(true)
	router.HandleFunc("/", Index)
	router.HandleFunc("/ls", GetFileList)
	router.HandleFunc("/file", GetFile)
	router.HandleFunc("/tunnel", GetTunnel)

	defer log.Fatal(http.ListenAndServe(":5922", router))
	fmt.Println("WTF!")
}