mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* Plugins: Pass hashes for SRI to frontend
* Add SRI hashes to frontendsettings DTOs
* Add docstring
* TestSriHashes
* Fix typo
* Changed SriHashes to ModuleHash
* update loader_test compareOpts
* update ModuleHash error message
* Add TestModuleHash/no_module.js
* Add omitEmpty to moduleHash
* Add ModuleHash to api/plugins/${pluginId}/settings
* moved ModuleHash field
* feat(plugins): add moduleHash to bootData and plugin types
* feat(plugins): if moduleHash is available apply it to systemjs importmap
* Calculate ModuleHash for CDN provisioned plugins
* Add ModuleHash tests for TestCalculate
* adjust test case name
* removed .envrc
* Fix signature verification failing for internal plugins
* fix tests
* Add pluginsFilesystemSriChecks feature togglemk
* renamed FilesystemSriChecksEnabled
* refactor(plugin_loader): prefer extending type declaration over ts-error
* added a couple more tests
* Removed unused features
* Removed unused argument from signature.DefaultCalculator call
* Removed unused argument from bootstrap.DefaultConstructFunc
* Moved ModuleHash to pluginassets service
* update docstring
* lint
* Removed cdn dependency from manifest.Signature
* add tests
* fix extra parameters in tests
* "fix" tests
* removed outdated test
* removed unused cdn dependency in signature.DefaultCalculator
* reduce diff
* Cache returned values
* Add support for deeply nested plugins (more than 1 hierarchy level)
* simplify cache usage
* refactor TestService_ModuleHash_Cache
* removed unused testdata
* re-generate feature toggles
* use version for module hash cache
* Renamed feature toggle to pluginsSriChecks and use it for both cdn and filesystem
* Removed app/types/system-integrity.d.ts
* re-generate feature toggles
* re-generate feature toggles
* feat(plugins): put systemjs integrity hash behind feature flag
---------
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
91 lines
1.8 KiB
Go
91 lines
1.8 KiB
Go
package pluginstore
|
|
|
|
import (
|
|
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
|
|
|
"github.com/grafana/grafana/pkg/plugins"
|
|
"github.com/grafana/grafana/pkg/plugins/auth"
|
|
)
|
|
|
|
type Plugin struct {
|
|
plugins.JSONData
|
|
|
|
FS plugins.FS
|
|
supportsStreaming bool
|
|
|
|
Class plugins.Class
|
|
|
|
// App fields
|
|
Parent *ParentPlugin
|
|
IncludedInAppID string
|
|
DefaultNavURL string
|
|
Pinned bool
|
|
|
|
// Signature fields
|
|
Signature plugins.SignatureStatus
|
|
SignatureType plugins.SignatureType
|
|
SignatureOrg string
|
|
|
|
Error *plugins.Error
|
|
|
|
// SystemJS fields
|
|
Module string
|
|
BaseURL string
|
|
|
|
Angular plugins.AngularMeta
|
|
|
|
ExternalService *auth.ExternalService
|
|
}
|
|
|
|
func (p Plugin) SupportsStreaming() bool {
|
|
return p.supportsStreaming
|
|
}
|
|
|
|
func (p Plugin) Base() string {
|
|
return p.FS.Base()
|
|
}
|
|
|
|
func (p Plugin) IsApp() bool {
|
|
return p.Type == plugins.TypeApp
|
|
}
|
|
|
|
func (p Plugin) IsCorePlugin() bool {
|
|
return p.Class == plugins.ClassCore
|
|
}
|
|
|
|
func ToGrafanaDTO(p *plugins.Plugin) Plugin {
|
|
supportsStreaming := false
|
|
pc, exists := p.Client()
|
|
if exists && pc != nil && pc.(backend.StreamHandler) != nil {
|
|
supportsStreaming = true
|
|
}
|
|
|
|
dto := Plugin{
|
|
FS: p.FS,
|
|
supportsStreaming: supportsStreaming,
|
|
Class: p.Class,
|
|
JSONData: p.JSONData,
|
|
IncludedInAppID: p.IncludedInAppID,
|
|
DefaultNavURL: p.DefaultNavURL,
|
|
Pinned: p.Pinned,
|
|
Signature: p.Signature,
|
|
SignatureType: p.SignatureType,
|
|
SignatureOrg: p.SignatureOrg,
|
|
Error: p.Error,
|
|
Module: p.Module,
|
|
BaseURL: p.BaseURL,
|
|
ExternalService: p.ExternalService,
|
|
Angular: p.Angular,
|
|
}
|
|
|
|
if p.Parent != nil {
|
|
dto.Parent = &ParentPlugin{ID: p.Parent.ID}
|
|
}
|
|
|
|
return dto
|
|
}
|
|
|
|
type ParentPlugin struct {
|
|
ID string
|
|
}
|