From d7ee4b4573c8ddab301af13df3e5d7e52aff37c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Wed, 26 Nov 2014 09:58:36 +0100 Subject: [PATCH] Added missing files --- .gitignore | 2 +- Makefile | 8 +++ pkg/cmd/grafana-pro/grafana-pro.go | 24 ++++++++ pkg/cmd/grafana-pro/web.go | 97 ++++++++++++++++++++++++++++++ 4 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 Makefile create mode 100644 pkg/cmd/grafana-pro/grafana-pro.go create mode 100644 pkg/cmd/grafana-pro/web.go diff --git a/.gitignore b/.gitignore index e1ba17ed3d5..65045bd264e 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,4 @@ config.js data/sessions data/*.db data/log -grafana-pro +/grafana-pro diff --git a/Makefile b/Makefile new file mode 100644 index 00000000000..fe11beda719 --- /dev/null +++ b/Makefile @@ -0,0 +1,8 @@ + + +all: build + +build: + go build ../pkg/cmd/grafana-pro/ + + diff --git a/pkg/cmd/grafana-pro/grafana-pro.go b/pkg/cmd/grafana-pro/grafana-pro.go new file mode 100644 index 00000000000..a4d5af5822e --- /dev/null +++ b/pkg/cmd/grafana-pro/grafana-pro.go @@ -0,0 +1,24 @@ +package main + +import ( + "os" + "runtime" + + "github.com/codegangsta/cli" +) + +const APP_VER = "0.1.0 Alpha" + +func init() { + runtime.GOMAXPROCS(runtime.NumCPU()) +} + +func main() { + app := cli.NewApp() + app.Name = "Grafana Pro" + app.Usage = "Grafana Pro Service" + app.Version = APP_VER + app.Commands = []cli.Command{CmdWeb} + app.Flags = append(app.Flags, []cli.Flag{}...) + app.Run(os.Args) +} diff --git a/pkg/cmd/grafana-pro/web.go b/pkg/cmd/grafana-pro/web.go new file mode 100644 index 00000000000..9b7541c26a6 --- /dev/null +++ b/pkg/cmd/grafana-pro/web.go @@ -0,0 +1,97 @@ +// Copyright 2014 Unknwon +// Copyright 2014 Torkel Ödegaard + +package main + +import ( + "fmt" + "net/http" + "path" + + "github.com/Unknwon/macaron" + "github.com/codegangsta/cli" + "github.com/macaron-contrib/session" + + "github.com/torkelo/grafana-pro/pkg/log" + "github.com/torkelo/grafana-pro/pkg/middleware" + "github.com/torkelo/grafana-pro/pkg/routes" + "github.com/torkelo/grafana-pro/pkg/setting" + "github.com/torkelo/grafana-pro/pkg/social" + "github.com/torkelo/grafana-pro/pkg/stores/sqlstore" +) + +var CmdWeb = cli.Command{ + Name: "web", + Usage: "Start Grafana Pro web server", + Description: `Start Grafana Pro server`, + Action: runWeb, + Flags: []cli.Flag{}, +} + +func newMacaron() *macaron.Macaron { + m := macaron.New() + m.Use(middleware.Logger()) + m.Use(macaron.Recovery()) + + mapStatic(m, "public", "public") + mapStatic(m, "public/app", "app") + mapStatic(m, "public/img", "img") + + m.Use(session.Sessioner(session.Options{ + Provider: setting.SessionProvider, + Config: *setting.SessionConfig, + })) + + m.Use(macaron.Renderer(macaron.RenderOptions{ + Directory: path.Join(setting.StaticRootPath, "views"), + IndentJSON: macaron.Env != macaron.PROD, + Delims: macaron.Delims{Left: "[[", Right: "]]"}, + })) + + m.Use(middleware.GetContextHandler()) + return m +} + +func mapStatic(m *macaron.Macaron, dir string, prefix string) { + m.Use(macaron.Static( + path.Join(setting.StaticRootPath, dir), + macaron.StaticOptions{ + SkipLogging: true, + Prefix: prefix, + }, + )) +} + +func runWeb(*cli.Context) { + log.Info("Starting Grafana-Pro v.2-alpha") + + setting.NewConfigContext() + setting.InitServices() + sqlstore.Init() + social.NewOAuthService() + + // init database + sqlstore.LoadModelsConfig() + if err := sqlstore.NewEngine(); err != nil { + log.Fatal(4, "fail to initialize orm engine: %v", err) + } + + m := newMacaron() + routes.Register(m) + + var err error + listenAddr := fmt.Sprintf("%s:%s", setting.HttpAddr, setting.HttpPort) + log.Info("Listen: %v://%s%s", setting.Protocol, listenAddr, setting.AppSubUrl) + switch setting.Protocol { + case setting.HTTP: + err = http.ListenAndServe(listenAddr, m) + case setting.HTTPS: + err = http.ListenAndServeTLS(listenAddr, setting.CertFile, setting.KeyFile, m) + default: + log.Fatal(4, "Invalid protocol: %s", setting.Protocol) + } + + if err != nil { + log.Fatal(4, "Fail to start server: %v", err) + } +}