| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- package config
- // Action represents the core functionality of OliveTin - commands that show up
- // as buttons in the UI.
- type Action struct {
- ID string
- Title string
- Icon string
- Shell string
- CSS map[string]string `mapstructure:"omitempty"`
- Timeout int
- Acls []string
- ExecOnStartup bool
- ExecOnCron []string
- MaxConcurrent int
- Arguments []ActionArgument
- PopupOnStart bool
- }
- // ActionArgument objects appear on Actions.
- type ActionArgument struct {
- Name string
- Title string
- Description string
- Type string
- Default string
- Choices []ActionArgumentChoice
- }
- // ActionArgumentChoice represents a predefined choice for an argument.
- type ActionArgumentChoice struct {
- Value string
- Title string
- }
- // Entity represents a "thing" that can have multiple actions associated with it.
- // for example, a media player with a start and stop action.
- type Entity struct {
- Title string
- Icon string
- Actions []Action `mapstructure:"actions"`
- CSS map[string]string
- }
- // PermissionsList defines what users can do with an action.
- type PermissionsList struct {
- View bool
- Exec bool
- }
- // AccessControlList defines what permissions apply to a user or user group.
- type AccessControlList struct {
- Name string
- AddToEveryAction bool
- MatchUsergroups []string
- MatchUsernames []string
- Permissions PermissionsList
- }
- // Config is the global config used through the whole app.
- type Config struct {
- UseSingleHTTPFrontend bool
- ThemeName string
- ListenAddressSingleHTTPFrontend string
- ListenAddressWebUI string
- ListenAddressRestActions string
- ListenAddressGrpcActions string
- ExternalRestAddress string
- LogLevel string
- Actions []Action `mapstructure:"actions"`
- Entities []Entity `mapstructure:"entities"`
- CheckForUpdates bool
- PageTitle string
- ShowFooter bool
- ShowNavigation bool
- ShowNewVersions bool
- AuthJwtCookieName string
- AuthJwtSecret string // mutually exclusive with pub key config fields
- AuthJwtClaimUsername string
- AuthJwtClaimUserGroup string
- AuthJwtPubKeyPath string // will read pub key from file on disk
- AuthHttpHeaderUsername string
- AuthHttpHeaderUserGroup string
- DefaultPermissions PermissionsList
- AccessControlLists []AccessControlList
- WebUIDir string
- }
- // DefaultConfig gets a new Config structure with sensible default values.
- func DefaultConfig() *Config {
- config := Config{}
- config.UseSingleHTTPFrontend = true
- config.PageTitle = "OliveTin"
- config.ShowFooter = true
- config.ShowNavigation = true
- config.ShowNewVersions = true
- config.ListenAddressSingleHTTPFrontend = "0.0.0.0:1337"
- config.ListenAddressRestActions = "localhost:1338"
- config.ListenAddressGrpcActions = "localhost:1339"
- config.ListenAddressWebUI = "localhost:1340"
- config.ExternalRestAddress = "."
- config.LogLevel = "INFO"
- config.CheckForUpdates = true
- config.DefaultPermissions.Exec = true
- config.DefaultPermissions.View = true
- config.AuthJwtClaimUsername = "name"
- config.AuthJwtClaimUserGroup = "group"
- config.WebUIDir = "./webui"
- return &config
- }
|