Пример #1
0
func main() {
	handler := rest.ResourceHandler{
		EnableStatusService: true,
	}
	auth := &rest.AuthBasicMiddleware{
		Realm: "test zone",
		Authenticator: func(userId string, password string) bool {
			if userId == "admin" && password == "admin" {
				return true
			}
			return false
		},
	}
	handler.SetRoutes(
		&rest.Route{"GET", "/countries", GetAllCountries},
		&rest.Route{"GET", "/.status",
			auth.MiddlewareFunc(
				func(w rest.ResponseWriter, r *rest.Request) {
					w.WriteJson(handler.GetStatus())
				},
			),
		},
	)
	http.ListenAndServe(":8080", &handler)
}
Пример #2
0
func main() {
	handler := rest.ResourceHandler{
		EnableStatusService: true,
	}
	handler.SetRoutes(
		&rest.Route{"GET", "/.status",
			func(w rest.ResponseWriter, r *rest.Request) {
				w.WriteJson(handler.GetStatus())
			},
		},
	)
	http.ListenAndServe(":8080", &handler)
}
Пример #3
0
func main() {

	api := Api{}
	api.InitDB()
	api.InitSchema()

	handler := rest.ResourceHandler{
		EnableStatusService:      true,
		EnableRelaxedContentType: true,
		PreRoutingMiddlewares: []rest.Middleware{
			&rest.AuthBasicMiddleware{
				Realm: "test zone",
				Authenticator: func(userId string, password string) bool {
					if userId == "admin" && password == "admin" {
						return true
					}
					return false
				},
			},
		},
	}
	svmw := SemVerMiddleware{
		MinVersion: "1.2.0",
		MaxVersion: "3.0.0",
	}
	err := handler.SetRoutes(
		&rest.Route{"GET", "/#version/countries", svmw.MiddlewareFunc(GetAllCountries)},
		&rest.Route{"POST", "/countries", PostCountry},
		&rest.Route{"GET", "/countries/:code", GetCountry},
		&rest.Route{"DELETE", "/countries/:code", DeleteCountry},
		&rest.Route{"GET", "/.status",
			func(w rest.ResponseWriter, r *rest.Request) {
				w.WriteJson(handler.GetStatus())
			},
		},
		// ORM
		&rest.Route{"GET", "/reminders", api.GetAllReminders},
		&rest.Route{"POST", "/reminders", api.PostReminder},
		&rest.Route{"GET", "/reminders/:id", api.GetReminder},
		&rest.Route{"PUT", "/reminders/:id", api.PutReminder},
		&rest.Route{"DELETE", "/reminders/:id", api.DeleteReminder},
	)
	if err != nil {
		log.Fatal(err)
	}
	http.Handle("/api/", http.StripPrefix("/api", &handler))
	log.Fatal(http.ListenAndServe(":8080", nil))
	// log.Fatal(http.ListenAndServe(":8080", &handler))

}
Пример #4
0
Файл: api.go Проект: aimless/g0
func (a *Api) Run() {
	handler := rest.ResourceHandler{
		EnableRelaxedContentType: true,
		EnableStatusService:      true,
		XPoweredBy:               "soda-api",
	}
	handler.SetRoutes(
		&rest.Route{"GET", "/meta/newest/:count", a.GetNewest},
		&rest.Route{"GET", "/meta/:imgid/:count", a.GetImages},
		&rest.Route{"GET", "/item/#name", a.GetItem},
		&rest.Route{"GET", "/thumb/#name", a.GetThumbnail},
		&rest.Route{"GET", "/.status",
			func(w rest.ResponseWriter, r *rest.Request) {
				w.WriteJson(handler.GetStatus())
			},
		},
	)
	http.ListenAndServe(a.address, &handler)
}
Пример #5
0
func (a *Api) Run() (err error) {
	handler := rest.ResourceHandler{
		EnableRelaxedContentType: true,
		EnableStatusService:      true,
		XPoweredBy:               "soda-api",
	}
	handler.SetRoutes(
		&rest.Route{"GET", "/api/:imgid/:count", GetIDstuff},
		&rest.Route{"GET", "/api/u/:user/:count", GetImagesByUser},
		&rest.Route{"GET", "/api/r/:imgid/:count", GetIDstuffReverse},
		&rest.Route{"GET", "/.status",
			func(w rest.ResponseWriter, r *rest.Request) {
				w.WriteJson(handler.GetStatus())
			},
		},
		&rest.Route{"GET", "/.statistics", GetStatistics},
	)
	http.ListenAndServe(a.Addr, &handler)
	return nil
}
Пример #6
0
func main() {
	handler := rest.ResourceHandler{
		EnableRelaxedContentType: true,
		EnableStatusService:      true,
	}

	handler.SetRoutes(
		&rest.Route{"GET", "/tools", GetTools},
		&rest.Route{"GET", "/tools/:id", GetTool},
		&rest.Route{"GET", "/status", func(w rest.ResponseWriter, r *rest.Request) { w.WriteJson(handler.GetStatus()) }},
	)

	// Serve static files
	http.Handle("/public/", http.StripPrefix("/", http.FileServer(http.Dir("../client/public/"))))

	// Serve API
	http.Handle("/api/", http.StripPrefix("/api", &handler))

	// Start server
	http.ListenAndServe(":8888", nil)
}
Пример #7
0
Файл: main.go Проект: houcy/push
func startHttp(addr string, cmdTimeout int) {
	log.Infof("Starting HTTP server on %s, command timeout: %ds", addr, cmdTimeout)
	commandTimeout = cmdTimeout

	handler := rest.ResourceHandler{
		DisableXPoweredBy:        true,
		DisableJsonIndent:        true,
		EnableStatusService:      true,
		EnableRelaxedContentType: true,
		EnableResponseStackTrace: true,
	}
	err := handler.SetRoutes(
		&rest.Route{"GET", "/devices", getDeviceList},
		&rest.Route{"GET", "/devices/:devid", getDevice},
		&rest.Route{"POST", "/devices/:devid", AuthMiddlewareFunc(controlDevice)},
		&rest.Route{"GET", "/stats/control", getStats},
		&rest.Route{"DELETE", "/stats/control", deleteStats},
		&rest.Route{"Get", "/stats/app", getAppStats},
		&rest.Route{"Get", "/stats/sys", getSysStats},
		&rest.Route{"GET", "/.status",
			func(w rest.ResponseWriter, r *rest.Request) {
				w.WriteJson(handler.GetStatus())
			},
		},
	)
	if err != nil {
		log.Criticalf("http SetRoutes: ", err)
		os.Exit(1)
	}

	// control API
	http.Handle("/api/v1/", http.StripPrefix("/api/v1", &handler))

	// the adapter API for old system
	err = initPermutation()
	if err != nil {
		log.Criticalf("init permutation: ", err)
		os.Exit(1)
	}

	routerHandler := rest.ResourceHandler{
		DisableXPoweredBy:        true,
		DisableJsonIndent:        true,
		EnableStatusService:      true,
		EnableResponseStackTrace: true,
		EnableRelaxedContentType: true,
		PreRoutingMiddlewares: []rest.Middleware{
			&SignMiddleware{},
		},
	}
	err = routerHandler.SetRoutes(
		&rest.Route{"GET", "/list", getRouterList},
		&rest.Route{"POST", "/command", postRouterCommand},
		&rest.Route{"GET", "/.status",
			func(w rest.ResponseWriter, r *rest.Request) {
				w.WriteJson(routerHandler.GetStatus())
			},
		},
	)
	if err != nil {
		log.Criticalf("http SetRoutes: ", err)
		os.Exit(1)
	}
	http.Handle("/router/", http.StripPrefix("/router", &routerHandler))

	// push API
	http.HandleFunc("/api/v1/message", messageHandler)
	http.HandleFunc("/api/v1/server", serverHandler)
	http.HandleFunc("/api/v1/app", appHandler)
	http.HandleFunc("/api/v1/app2", app2Handler)
	http.HandleFunc("/test/message/confirm", testHandler)

	err = http.ListenAndServe(addr, nil)
	if err != nil {
		log.Criticalf("http listen: ", err)
		os.Exit(1)
	}
}
Пример #8
0
// Main defines the available REST resources, starts up the finspect-http server
// along with various configuration options, settings and sets up logging
func main() {

	// Default generic log handler
	LogFileHandler, err := os.OpenFile(FinspectHttpConfiguration.LogDirectory+"http.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
	if err != nil {
		log.Fatal("Error trying to open general logfile, error returned was: ", err)
		os.Exit(1)
	}
	defer LogFileHandler.Close()
	log.SetOutput(LogFileHandler)
	log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)

	// HTTP access log handler
	AccessLogFileHandler, err := os.OpenFile(FinspectHttpConfiguration.LogDirectory+"http-access.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
	if err != nil {
		log.Fatal("Error trying to open access logfile, error returned was: ", err)
		os.Exit(1)
	}
	defer AccessLogFileHandler.Close()

	// HTTP error log handler
	ErrorLogFileHandler, err := os.OpenFile(FinspectHttpConfiguration.LogDirectory+"http-error.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
	if err != nil {
		log.Fatal("Error trying to open error logfile, error returned was: ", err)
		os.Exit(1)
	}
	defer ErrorLogFileHandler.Close()

	// Setting up configuration for the HTTP REST router
	handler := rest.ResourceHandler{
		EnableGzip:               true,
		DisableJsonIndent:        false,
		EnableStatusService:      true,
		EnableResponseStackTrace: true,
		EnableLogAsJson:          false,
		EnableRelaxedContentType: false,
		Logger:            log.New(AccessLogFileHandler, "", 0),
		LoggerFormat:      CombinedLogFormat,
		DisableLogger:     false,
		ErrorLogger:       log.New(ErrorLogFileHandler, "", 0),
		XPoweredBy:        FINSPECT_NAME + " - " + FINSPECT_VERSION,
		DisableXPoweredBy: false,
	}

	// Define some HTTP REST resources, log a fatal error if something goes wrong
	err = handler.SetRoutes(

		// Watcher related routes
		&rest.Route{"GET", "/watchpaths", getReturnWatchPaths},
		&rest.Route{"POST", "/watchpaths", postAddWatchPath},
		&rest.Route{"DELETE", "/watchpaths/:watchpathid:", deleteRemoveWatchPath},
		&rest.Route{"GET", "/watchpaths/:watchpathid:", getReturnWatchPath},

		// Indexer related routes
		&rest.Route{"POST", "/indexjobs", postAddIndexJob},
		&rest.Route{"GET", "/indexjobs/:indexjobid:", getReturnIndexJob},
		&rest.Route{"DELETE", "/indexjobs/:indexjobid:", deleteRemoveIndexJob},
		&rest.Route{"POST", "/indexjobs/search", postSearchIndexJobs},

		// Ingester related routes
		&rest.Route{"POST", "/ingestjobs", postAddIngestJob},
		&rest.Route{"GET", "/ingestjobs/:ingestjobid:", getReturnIngestJob},
		&rest.Route{"DELETE", "/ingestjobs/:ingestjobid:", deleteRemoveIngestJob},
		&rest.Route{"POST", "/ingestjobs/search", postSearchIngestJobs},

		// File related routes
		&rest.Route{"POST", "/files", postCreateFile},

		// Admin and internally available resources
		&rest.Route{"GET", "/.status", func(w rest.ResponseWriter, r *rest.Request) { w.WriteJson(handler.GetStatus()) }},
		&rest.Route{"POST", "/shutdown", postAdminShutdownHttpServer},
		&rest.Route{"POST", "/reload", postAdminReloadHttpServer},
		&rest.Route{"POST", "/restart", postAdminRestartHttpServer},
	)
	if err != nil {
		log.Fatal("Error with HTTP router, error returned was: ", err)
		os.Exit(1)
	}

	// Start the finspect-http server
	log.Fatal(http.ListenAndServe(":7070", &handler))
	os.Exit(1)
}