Initial Commit to Add RestAPI Server to IEC
[iec.git] / src / foundation / api / apiserver / app / init.go
diff --git a/src/foundation/api/apiserver/app/init.go b/src/foundation/api/apiserver/app/init.go
new file mode 100644 (file)
index 0000000..117dd4e
--- /dev/null
@@ -0,0 +1,59 @@
+package app
+
+import (
+       "github.com/revel/revel"
+)
+
+var (
+       // AppVersion revel app version (ldflags)
+       AppVersion string
+
+       // BuildTime revel app build-time (ldflags)
+       BuildTime string
+)
+
+func init() {
+       // Filters is the default set of global filters.
+       revel.Filters = []revel.Filter{
+               revel.PanicFilter,             // Recover from panics and display an error page instead.
+               revel.RouterFilter,            // Use the routing table to select the right Action
+               revel.FilterConfiguringFilter, // A hook for adding or removing per-Action filters.
+               revel.ParamsFilter,            // Parse parameters into Controller.Params.
+               revel.SessionFilter,           // Restore and write the session cookie.
+               revel.FlashFilter,             // Restore and write the flash cookie.
+               revel.ValidationFilter,        // Restore kept validation errors and save new ones from cookie.
+               revel.I18nFilter,              // Resolve the requested language
+               HeaderFilter,                  // Add some security based headers
+               revel.InterceptorFilter,       // Run interceptors around the action.
+               revel.CompressFilter,          // Compress the result.
+               revel.BeforeAfterFilter,       // Call the before and after filter functions
+               revel.ActionInvoker,           // Invoke the action.
+       }
+
+       // Register startup functions with OnAppStart
+       // revel.DevMode and revel.RunMode only work inside of OnAppStart. See Example Startup Script
+       // ( order dependent )
+       // revel.OnAppStart(ExampleStartupScript)
+       // revel.OnAppStart(InitDB)
+       // revel.OnAppStart(FillCache)
+}
+
+// HeaderFilter adds common security headers
+// There is a full implementation of a CSRF filter in
+// https://github.com/revel/modules/tree/master/csrf
+var HeaderFilter = func(c *revel.Controller, fc []revel.Filter) {
+       c.Response.Out.Header().Add("X-Frame-Options", "SAMEORIGIN")
+       c.Response.Out.Header().Add("X-XSS-Protection", "1; mode=block")
+       c.Response.Out.Header().Add("X-Content-Type-Options", "nosniff")
+       c.Response.Out.Header().Add("Referrer-Policy", "strict-origin-when-cross-origin")
+
+       fc[0](c, fc[1:]) // Execute the next filter stage.
+}
+
+//func ExampleStartupScript() {
+//     // revel.DevMod and revel.RunMode work here
+//     // Use this script to check for dev mode and set dev/prod startup scripts here!
+//     if revel.DevMode == true {
+//             // Dev mode
+//     }
+//}