Просмотр исходного кода

More work on getting grafana pro to work in sub url

Torkel Ödegaard 11 лет назад
Родитель
Сommit
4cc8a9bd18
6 измененных файлов с 30 добавлено и 100 удалено
  1. 1 0
      .gitignore
  2. 1 82
      conf/grafana.dev.ini
  3. 0 0
      conf/grafana.ini
  4. 1 1
      grafana
  5. 3 2
      pkg/api/frontendsettings.go
  6. 24 15
      pkg/setting/setting.go

+ 1 - 0
.gitignore

@@ -19,3 +19,4 @@ data/*.db
 data/log
 /bin/*
 /grafana-pro
+grafana.custom.ini

+ 1 - 82
conf/grafana.dev.ini

@@ -1,38 +1,9 @@
-app_name = Grafana
 app_mode = development
 
 [server]
-protocol = http
-domain = localhost
-root_url = %(protocol)s://%(domain)s:%(http_port)s/
-http_addr =
-http_port = 3000
 router_logging = false
 static_root_path = grafana/src
-
-[session]
-; Either "memory", "file", default is "memory"
-provider = file
-; Provider config options
-; memory: not have any config yet
-; file: session file path, e.g. `data/sessions`
-; redis: config like redis server addr, poolSize, password, e.g. `127.0.0.1:6379,100,grafana`
-; mysql: go-sql-driver/mysql dsn config string, e.g. `root:password@/session_table`
-provider_config = data/sessions
-; Session cookie name
-cookie_name = grafana_sess
-; If you use session in https only, default is false
-cookie_secure = false
-; Enable set cookie, default is true
-enable_set_cookie = true
-; Session GC time interval, default is 86400
-gc_time_interval = 86400
-; Session life time, default is 86400
-session_life_time = 86400
-; session id hash func, Either "sha1", "sha256" or "md5" default is sha1
-session_id_hashfunc = sha1
-; Session hash key, default is use random string
-session_id_hashkey =
+root_url = %(protocol)s://%(domain)s:%(http_port)s/
 
 [oauth]
 enabled = true
@@ -53,56 +24,4 @@ scopes = https://www.googleapis.com/auth/userinfo.profile https://www.googleapis
 auth_url = https://accounts.google.com/o/oauth2/auth
 token_url = https://accounts.google.com/o/oauth2/token
 
-[database]
-; Either "mysql", "postgres" or "sqlite3", it's your choice
-type = sqlite3
-host = 127.0.0.1:3306
-name = grafana
-user = root
-PASSWD =
-; For "postgres" only, either "disable", "require" or "verify-full"
-ssl_mode = disable
-; For "sqlite3" only
-path = data/grafana.db
-
-; [database]
-; ; Either "mysql", "postgres" or "sqlite3", it's your choice
-; type = postgres
-; host = 127.0.0.1:5432
-; name = grafana
-; user = grafana
-; password = grafana
-; ; For "postgres" only, either "disable", "require" or "verify-full"
-; ssl_mode = disable
-; ; For "sqlite3" only
-; path = data/grafana.db
-;
-[log]
-root_path =
-; Either "console", "file", "conn", "smtp" or "database", default is "console"
-; Use comma to separate multiple modes, e.g. "console, file"
-mode = console
-; Buffer length of channel, keep it as it is if you don't know what it is.
-buffer_len = 10000
-; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace"
-level = Trace
-
-; For "console" mode only
-[log.console]
-level =
-
-; For "file" mode only
-[log.file]
-level =
-; This enables automated log rotate(switch of following options), default is true
-log_rotate = true
-; Max line number of single file, default is 1000000
-max_lines = 1000000
-; Max size shift of single file, default is 28 means 1 << 28, 256MB
-max_lines_shift = 28
-; Segment log daily, default is true
-daily_rotate = true
-; Expired days of log file(delete after max days), default is 7
-max_days = 7
-
 

+ 0 - 0
conf/grafana.example.ini → conf/grafana.ini


+ 1 - 1
grafana

@@ -1 +1 @@
-Subproject commit 5feed2344ab8a5eb65ffeda9ccae8b768e9b8764
+Subproject commit 9be53f0a79753d22205a5db6ac42aa1e455a58c3

+ 3 - 2
pkg/api/frontendsettings.go

@@ -6,6 +6,7 @@ import (
 	"github.com/torkelo/grafana-pro/pkg/bus"
 	"github.com/torkelo/grafana-pro/pkg/middleware"
 	m "github.com/torkelo/grafana-pro/pkg/models"
+	"github.com/torkelo/grafana-pro/pkg/setting"
 )
 
 func getFrontendSettings(c *middleware.Context) (map[string]interface{}, error) {
@@ -28,7 +29,7 @@ func getFrontendSettings(c *middleware.Context) (map[string]interface{}, error)
 		url := ds.Url
 
 		if ds.Access == m.DS_ACCESS_PROXY {
-			url = "/api/datasources/proxy/" + strconv.FormatInt(ds.Id, 10)
+			url = setting.AppSubUrl + "/api/datasources/proxy/" + strconv.FormatInt(ds.Id, 10)
 		}
 
 		var dsMap = map[string]interface{}{
@@ -56,12 +57,12 @@ func getFrontendSettings(c *middleware.Context) (map[string]interface{}, error)
 	// add grafana backend data source
 	datasources["grafana"] = map[string]interface{}{
 		"type":      "grafana",
-		"url":       "",
 		"grafanaDB": true,
 	}
 
 	jsonObj := map[string]interface{}{
 		"datasources": datasources,
+		"appSubUrl":   setting.AppSubUrl,
 	}
 
 	return jsonObj, nil

+ 24 - 15
pkg/setting/setting.go

@@ -80,39 +80,49 @@ func getWorkDir() string {
 	return p
 }
 
-func findConfigFile() string {
+func findConfigFiles() []string {
 	WorkDir = getWorkDir()
 	ConfRootPath = path.Join(WorkDir, "conf")
+	filenames := make([]string, 0)
 
 	configFile := path.Join(ConfRootPath, "grafana.ini")
-	//log.Info("Looking for config file: %v", configFile)
 	if com.IsFile(configFile) {
-		return configFile
+		filenames = append(filenames, configFile)
 	}
+
 	configFile = path.Join(ConfRootPath, "grafana.dev.ini")
-	//log.Info("Looking for config file: %v", configFile)
 	if com.IsFile(configFile) {
-		return configFile
+		filenames = append(filenames, configFile)
 	}
-	configFile = path.Join(ConfRootPath, "grafana.example.ini")
-	//log.Info("Looking for config file: %v", configFile)
+
+	configFile = path.Join(ConfRootPath, "grafana.custom.ini")
 	if com.IsFile(configFile) {
-		return configFile
+		filenames = append(filenames, configFile)
+	}
+
+	if len(filenames) == 0 {
+		log.Fatal(3, "Could not find any config file")
 	}
 
-	log.Fatal(3, "Could not find any config file")
-	return ""
+	return filenames
 }
 
 func NewConfigContext() {
-	configFile := findConfigFile()
+	configFiles := findConfigFiles()
 
-	log.Info("Loading config file: %v", configFile)
+	log.Info("Loading config files: %v", configFiles)
 	var err error
 
-	Cfg, err = goconfig.LoadConfigFile(configFile)
+	Cfg, err = goconfig.LoadConfigFile(configFiles[0])
 	if err != nil {
-		log.Fatal(4, "Fail to parse %v, error: %v", configFile, err)
+		log.Fatal(4, "Fail to parse config file, error: %v", err)
+	}
+
+	if len(configFiles) > 1 {
+		err = Cfg.AppendFiles(configFiles[1:]...)
+		if err != nil {
+			log.Fatal(4, "Fail to parse config file, error: %v", err)
+		}
 	}
 
 	AppName = Cfg.MustValue("", "app_name", "Grafana")
@@ -128,7 +138,6 @@ func NewConfigContext() {
 	}
 
 	AppSubUrl = strings.TrimSuffix(url.Path, "/")
-	log.Info("AppSubUrl: %v", AppSubUrl)
 
 	Protocol = HTTP
 	if Cfg.MustValue("server", "protocol") == "https" {