فهرست منبع

Added missing files

Torkel Ödegaard 11 سال پیش
والد
کامیت
d7ee4b4573
4فایلهای تغییر یافته به همراه130 افزوده شده و 1 حذف شده
  1. 1 1
      .gitignore
  2. 8 0
      Makefile
  3. 24 0
      pkg/cmd/grafana-pro/grafana-pro.go
  4. 97 0
      pkg/cmd/grafana-pro/web.go

+ 1 - 1
.gitignore

@@ -17,4 +17,4 @@ config.js
 data/sessions
 data/*.db
 data/log
-grafana-pro
+/grafana-pro

+ 8 - 0
Makefile

@@ -0,0 +1,8 @@
+
+
+all: build
+
+build:
+	go build ../pkg/cmd/grafana-pro/
+
+

+ 24 - 0
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)
+}

+ 97 - 0
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)
+	}
+}