Commit 4cc8a9bd by Torkel Ödegaard

More work on getting grafana pro to work in sub url

parent f25a415a
...@@ -19,3 +19,4 @@ data/*.db ...@@ -19,3 +19,4 @@ data/*.db
data/log data/log
/bin/* /bin/*
/grafana-pro /grafana-pro
grafana.custom.ini
app_name = Grafana
app_mode = development app_mode = development
[server] [server]
protocol = http
domain = localhost
root_url = %(protocol)s://%(domain)s:%(http_port)s/
http_addr =
http_port = 3000
router_logging = false router_logging = false
static_root_path = grafana/src static_root_path = grafana/src
root_url = %(protocol)s://%(domain)s:%(http_port)s/
[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 =
[oauth] [oauth]
enabled = true enabled = true
...@@ -53,56 +24,4 @@ scopes = https://www.googleapis.com/auth/userinfo.profile https://www.googleapis ...@@ -53,56 +24,4 @@ scopes = https://www.googleapis.com/auth/userinfo.profile https://www.googleapis
auth_url = https://accounts.google.com/o/oauth2/auth auth_url = https://accounts.google.com/o/oauth2/auth
token_url = https://accounts.google.com/o/oauth2/token 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
Subproject commit 5feed2344ab8a5eb65ffeda9ccae8b768e9b8764 Subproject commit 9be53f0a79753d22205a5db6ac42aa1e455a58c3
...@@ -6,6 +6,7 @@ import ( ...@@ -6,6 +6,7 @@ import (
"github.com/torkelo/grafana-pro/pkg/bus" "github.com/torkelo/grafana-pro/pkg/bus"
"github.com/torkelo/grafana-pro/pkg/middleware" "github.com/torkelo/grafana-pro/pkg/middleware"
m "github.com/torkelo/grafana-pro/pkg/models" m "github.com/torkelo/grafana-pro/pkg/models"
"github.com/torkelo/grafana-pro/pkg/setting"
) )
func getFrontendSettings(c *middleware.Context) (map[string]interface{}, error) { func getFrontendSettings(c *middleware.Context) (map[string]interface{}, error) {
...@@ -28,7 +29,7 @@ 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 url := ds.Url
if ds.Access == m.DS_ACCESS_PROXY { 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{}{ var dsMap = map[string]interface{}{
...@@ -56,12 +57,12 @@ func getFrontendSettings(c *middleware.Context) (map[string]interface{}, error) ...@@ -56,12 +57,12 @@ func getFrontendSettings(c *middleware.Context) (map[string]interface{}, error)
// add grafana backend data source // add grafana backend data source
datasources["grafana"] = map[string]interface{}{ datasources["grafana"] = map[string]interface{}{
"type": "grafana", "type": "grafana",
"url": "",
"grafanaDB": true, "grafanaDB": true,
} }
jsonObj := map[string]interface{}{ jsonObj := map[string]interface{}{
"datasources": datasources, "datasources": datasources,
"appSubUrl": setting.AppSubUrl,
} }
return jsonObj, nil return jsonObj, nil
......
...@@ -80,39 +80,49 @@ func getWorkDir() string { ...@@ -80,39 +80,49 @@ func getWorkDir() string {
return p return p
} }
func findConfigFile() string { func findConfigFiles() []string {
WorkDir = getWorkDir() WorkDir = getWorkDir()
ConfRootPath = path.Join(WorkDir, "conf") ConfRootPath = path.Join(WorkDir, "conf")
filenames := make([]string, 0)
configFile := path.Join(ConfRootPath, "grafana.ini") configFile := path.Join(ConfRootPath, "grafana.ini")
//log.Info("Looking for config file: %v", configFile)
if com.IsFile(configFile) { if com.IsFile(configFile) {
return configFile filenames = append(filenames, configFile)
} }
configFile = path.Join(ConfRootPath, "grafana.dev.ini") configFile = path.Join(ConfRootPath, "grafana.dev.ini")
//log.Info("Looking for config file: %v", configFile)
if com.IsFile(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) { 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() { func NewConfigContext() {
configFile := findConfigFile() configFiles := findConfigFiles()
log.Info("Loading config file: %v", configFile) log.Info("Loading config files: %v", configFiles)
var err error var err error
Cfg, err = goconfig.LoadConfigFile(configFile) Cfg, err = goconfig.LoadConfigFile(configFiles[0])
if err != nil { 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") AppName = Cfg.MustValue("", "app_name", "Grafana")
...@@ -128,7 +138,6 @@ func NewConfigContext() { ...@@ -128,7 +138,6 @@ func NewConfigContext() {
} }
AppSubUrl = strings.TrimSuffix(url.Path, "/") AppSubUrl = strings.TrimSuffix(url.Path, "/")
log.Info("AppSubUrl: %v", AppSubUrl)
Protocol = HTTP Protocol = HTTP
if Cfg.MustValue("server", "protocol") == "https" { if Cfg.MustValue("server", "protocol") == "https" {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment