diff --git a/conf/defaults.ini b/conf/defaults.ini index 3350954a150..92ed0d7d344 100644 --- a/conf/defaults.ini +++ b/conf/defaults.ini @@ -125,6 +125,12 @@ disable_gravatar = false # data source proxy whitelist (ip_or_domain:port seperated by spaces) data_source_proxy_whitelist = +[snapshots] +# snapshot sharing options +external_enabled = true +external_snapshot_url = https://snapshots-origin.raintank.io +external_snapshot_name = Publish to snapshot.raintank.io + #################################### Users #################################### [users] # disable user signup / registration diff --git a/conf/sample.ini b/conf/sample.ini index df092cda5ed..97480e6e008 100644 --- a/conf/sample.ini +++ b/conf/sample.ini @@ -120,6 +120,12 @@ # data source proxy whitelist (ip_or_domain:port seperated by spaces) ;data_source_proxy_whitelist = +[snapshots] +# snapshot sharing options +;external_enabled = true +;external_snapshot_url = https://snapshots-origin.raintank.io +;external_snapshot_name = Publish to snapshot.raintank.io + #################################### Users #################################### [users] # disable user signup / registration diff --git a/pkg/api/api.go b/pkg/api/api.go index 3d1b28d7aa3..e899bff0eef 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -65,6 +65,7 @@ func Register(r *macaron.Macaron) { r.Post("/api/snapshots/", bind(m.CreateDashboardSnapshotCommand{}), CreateDashboardSnapshot) r.Get("/dashboard/snapshot/*", Index) + r.Get("/api/snapshot/shared-options/", GetSharingOptions) r.Get("/api/snapshots/:key", GetDashboardSnapshot) r.Get("/api/snapshots-delete/:key", DeleteDashboardSnapshot) diff --git a/pkg/api/dashboard_snapshot.go b/pkg/api/dashboard_snapshot.go index be044cc25eb..521dee29a63 100644 --- a/pkg/api/dashboard_snapshot.go +++ b/pkg/api/dashboard_snapshot.go @@ -12,6 +12,14 @@ import ( "github.com/grafana/grafana/pkg/util" ) +func GetSharingOptions(c *middleware.Context) { + c.JSON(200, util.DynMap{ + "externalSnapshotURL": setting.ExternalSnapshotUrl, + "externalSnapshotName": setting.ExternalSnapshotName, + "externalEnabled": setting.ExternalEnabled, + }) +} + func CreateDashboardSnapshot(c *middleware.Context, cmd m.CreateDashboardSnapshotCommand) { if cmd.External { // external snapshot ref requires key and delete key diff --git a/pkg/api/frontendsettings.go b/pkg/api/frontendsettings.go index 65a863f548a..19f29924236 100644 --- a/pkg/api/frontendsettings.go +++ b/pkg/api/frontendsettings.go @@ -114,6 +114,7 @@ func getFrontendSettingsMap(c *middleware.Context) (map[string]interface{}, erro "datasources": datasources, "appSubUrl": setting.AppSubUrl, "allowOrgCreate": (setting.AllowUserOrgCreate && c.IsSignedIn) || c.IsGrafanaAdmin, + "authProxyEnabled": setting.AuthProxyEnabled, "buildInfo": map[string]interface{}{ "version": setting.BuildVersion, "commit": setting.BuildCommit, diff --git a/pkg/setting/setting.go b/pkg/setting/setting.go index f59333f8426..11ac931a7b2 100644 --- a/pkg/setting/setting.go +++ b/pkg/setting/setting.go @@ -76,6 +76,11 @@ var ( EmailCodeValidMinutes int DataProxyWhiteList map[string]bool + // Snapshots + ExternalSnapshotUrl string + ExternalSnapshotName string + ExternalEnabled bool + // User settings AllowUserSignUp bool AllowUserOrgCreate bool @@ -421,6 +426,12 @@ func NewConfigContext(args *CommandLineArgs) error { CookieRememberName = security.Key("cookie_remember_name").String() DisableGravatar = security.Key("disable_gravatar").MustBool(true) + // read snapshots settings + snapshots := Cfg.Section("snapshots") + ExternalSnapshotUrl = snapshots.Key("external_snapshot_url").String() + ExternalSnapshotName = snapshots.Key("external_snapshot_name").String() + ExternalEnabled = snapshots.Key("external_enabled").MustBool(true) + // read data source proxy white list DataProxyWhiteList = make(map[string]bool) for _, hostAndIp := range security.Key("data_source_proxy_whitelist").Strings(" ") { diff --git a/public/app/core/controllers/sidemenu_ctrl.js b/public/app/core/controllers/sidemenu_ctrl.js index c2ee868323f..d18b4ebf86a 100644 --- a/public/app/core/controllers/sidemenu_ctrl.js +++ b/public/app/core/controllers/sidemenu_ctrl.js @@ -120,6 +120,7 @@ function (angular, _, $, coreModule, config) { }; $scope.init = function() { + $scope.showSignout = contextSrv.isSignedIn && !config['authProxyEnabled']; $scope.updateMenu(); $scope.$on('$routeChangeSuccess', $scope.updateMenu); }; diff --git a/public/app/features/dashboard/partials/shareModal.html b/public/app/features/dashboard/partials/shareModal.html index 75af7ee4c22..a8db481ca91 100644 --- a/public/app/features/dashboard/partials/shareModal.html +++ b/public/app/features/dashboard/partials/shareModal.html @@ -107,7 +107,7 @@