Documentation
¶
Index ¶
- Constants
- Variables
- func GenerateSelfSignedCertificate(certPath, keyPath string, validityDuration time.Duration) error
- func MatchGlob(appPathGlob string, app types.AppPathDomain) (bool, error)
- func ParseGlob(appPathGlob string, apps []types.AppPathDomain) ([]types.AppPathDomain, error)
- func ParseGlobFromInfo(appPathGlob string, apps []types.AppInfo) ([]types.AppInfo, error)
- type AdminBasicAuth
- type AppStore
- func (a *AppStore) AddApp(app *app.App)
- func (a *AppStore) ClearApps(pathDomains []types.AppPathDomain)
- func (a *AppStore) ClearAppsAudit(ctx context.Context, pathDomains []types.AppPathDomain, op string) error
- func (a *AppStore) ClearAppsNoNotify(pathDomains []types.AppPathDomain)
- func (a *AppStore) ClearLinkedApps(pathDomain types.AppPathDomain) error
- func (a *AppStore) GetAllAppsInfo() ([]types.AppInfo, error)
- func (a *AppStore) GetAllDomains() (map[string]bool, error)
- func (a *AppStore) GetApp(pathDomain types.AppPathDomain) (*app.App, error)
- func (a *AppStore) GetAppInfo(appId types.AppId) (types.AppInfo, bool)
- func (a *AppStore) GetAppsFullInfo() ([]types.AppInfo, map[string]bool, error)
- func (a *AppStore) ResetAllAppCache()
- type CacheDir
- type ContextShared
- type Handler
- type RBACManager
- type Repo
- type RepoCache
- type SSOAuth
- func (s *SSOAuth) CheckAuth(w http.ResponseWriter, r *http.Request, appProvider string, ...) (string, []string, error)
- func (s *SSOAuth) RegisterRoutes(mux *chi.Mux)
- func (s *SSOAuth) Setup() error
- func (s *SSOAuth) ValidateAuthType(authType string) bool
- func (s *SSOAuth) ValidateProviderName(provider string) bool
- type Server
- func (s *Server) Apply(ctx context.Context, inputTx types.Transaction, applyPath string, ...) (*types.AppApplyResponse, []types.AppPathDomain, error)
- func (s *Server) AuthorizeList(userId string, app *types.AppInfo, groups []string) (bool, error)
- func (s *Server) CheckAppValid(domain, matchPath string) (string, error)
- func (s *Server) CompleteTransaction(ctx context.Context, tx types.Transaction, entries []types.AppPathDomain, ...) error
- func (s *Server) CreateApp(ctx context.Context, appPath string, approve, dryRun bool, ...) (*types.AppCreateResponse, error)
- func (s *Server) CreateAppTx(ctx context.Context, currentTx types.Transaction, appPath string, ...) (*types.AppCreateResponse, error)
- func (s *Server) CreateSyncEntry(ctx context.Context, path string, scheduled, dryRun bool, ...) (*types.SyncCreateResponse, error)
- func (s *Server) DeleteApps(ctx context.Context, appPathGlob string, dryRun bool) (*types.AppDeleteResponse, error)
- func (s *Server) DeleteSyncEntry(ctx context.Context, id string, dryRun bool) (*types.SyncDeleteResponse, error)
- func (s *Server) FilterApps(appappPathGlob string, includeInternal bool) ([]types.AppInfo, error)
- func (s *Server) GetApp(pathDomain types.AppPathDomain, init bool) (*app.App, error)
- func (s *Server) GetAppApi(ctx context.Context, appPath string) (*types.AppGetResponse, error)
- func (s *Server) GetAppEntry(ctx context.Context, tx types.Transaction, pathDomain types.AppPathDomain) (*types.AppEntry, error)
- func (s *Server) GetAppSpec(name types.AppSpec) types.SpecFiles
- func (s *Server) GetApps(ctx context.Context, appPathGlob string, internal bool) ([]types.AppResponse, error)
- func (s *Server) GetDynamicConfig() types.DynamicConfig
- func (s *Server) GetListAppsApp() (*app.App, error)
- func (s *Server) InsertAuditEvent(event *types.AuditEvent) error
- func (s *Server) ListSyncEntries(ctx context.Context) (*types.SyncListResponse, error)
- func (s *Server) MatchApp(hostHeader, matchPath string) (types.AppInfo, error)
- func (s *Server) ParseGlob(appGlob string) ([]types.AppInfo, error)
- func (s *Server) PreviewApp(ctx context.Context, mainAppPath, commitId string, approve, dryRun bool) (*types.AppPreviewResponse, error)
- func (s *Server) PromoteApps(ctx context.Context, appPathGlob string, dryRun bool) (*types.AppPromoteResponse, error)
- func (s *Server) ReloadApp(ctx context.Context, tx types.Transaction, appEntry *types.AppEntry, ...) (*types.AppReloadResult, error)
- func (s *Server) ReloadApps(ctx context.Context, appPathGlob string, approve, dryRun, promote bool, ...) (*types.AppReloadResponse, error)
- func (s *Server) RunSync(ctx context.Context, id string, dryRun bool) (*types.SyncJobStatus, error)
- func (s *Server) SaveDynamicConfig(ctx context.Context) error
- func (s *Server) StagedUpdate(ctx context.Context, appPathGlob string, dryRun, promote bool, ...) (*types.AppStagedUpdateResponse, error)
- func (s *Server) StagedUpdateAppsTx(ctx context.Context, tx types.Transaction, appPathGlob string, promote bool, ...) ([]any, []types.AppPathDomain, []types.AppPathDomain, error)
- func (s *Server) Start() error
- func (s *Server) Stop(ctx context.Context) error
- func (s *Server) TokenCreate(ctx context.Context, appPath string, webhookType types.WebhookType, ...) (*types.TokenCreateResponse, error)
- func (s *Server) TokenDelete(ctx context.Context, appPath string, webhookType types.WebhookType, ...) (*types.TokenDeleteResponse, error)
- func (s *Server) TokenList(ctx context.Context, appPath string) (*types.TokenListResponse, error)
- func (s *Server) UpdateAppSettings(ctx context.Context, appPathGlob string, dryRun bool, ...) (*types.AppUpdateSettingsResponse, error)
- func (s *Server) UpdateDynamicConfig(ctx context.Context, newConfig *types.DynamicConfig, force bool) (*types.DynamicConfig, error)
- func (s *Server) VersionFiles(ctx context.Context, mainAppPath, version string) (*types.AppVersionFilesResponse, error)
- func (s *Server) VersionList(ctx context.Context, mainAppPath string) (*types.AppVersionListResponse, error)
- func (s *Server) VersionSwitch(ctx context.Context, mainAppPath string, dryRun bool, version string) (*types.AppVersionSwitchResponse, error)
Constants ¶
const ( DRY_RUN_ARG = "dryRun" PROMOTE_ARG = "promote" )
const ( DEFAULT_CERT_FILE = "default.crt" DEFAULT_KEY_FILE = "default.key" APPSPECS = "appspecs" )
const ( DOCKER_COMMAND = "docker" PODMAN_COMMAND = "podman" )
const ( PROVIDER_NAME_DELIMITER = "_" SESSION_COOKIE = "openrun_session" AUTH_KEY = "authenticated" USER_KEY = "user" // email/userid/nickname (for git email/nickname/userid) USER_ID_KEY = "user_id" USER_EMAIL_KEY = "email" USER_NICKNAME_KEY = "nickname" PROVIDER_NAME_KEY = "provider_name" GROUPS_KEY = "groups" REDIRECT_URL = "redirect" )
const (
APP = "app"
)
const CURRENT_AUDIT_DB_VERSION = 1
const RBAC_AUTH_PREFIX = "rbac:"
const RBAC_GROUP_PREFIX = "group:"
const RBAC_ROLE_PREFIX = "role:"
const (
REALM = "openrun"
)
Variables ¶
var (
COMPRESSION_ENABLED_MIME_TYPES = []string{
"text/html",
"text/css",
"text/plain",
"text/xml",
"text/x-component",
"text/javascript",
"application/x-javascript",
"application/javascript",
"application/json",
"application/manifest+json",
"application/vnd.api+json",
"application/xml",
"application/xhtml+xml",
"application/rss+xml",
"application/atom+xml",
"application/vnd.ms-fontobject",
"application/x-font-ttf",
"application/x-font-opentype",
"application/x-font-truetype",
"image/svg+xml",
"image/x-icon",
"image/vnd.microsoft.icon",
"font/ttf",
"font/eot",
"font/otf",
"font/opentype",
}
)
Functions ¶
func ParseGlob ¶
func ParseGlob(appPathGlob string, apps []types.AppPathDomain) ([]types.AppPathDomain, error)
ParseGlob parses a path spec in the format of domain:path. If domain is not specified, it will match empty domain. glob patters are supported, *:** matches all apps.
Types ¶
type AdminBasicAuth ¶
AdminBasicAuth implements basic auth for the admin user account. Cache the success auth header to avoid the bcrypt hash check penalty Basic auth is supported for admin user only, and changing it requires service restart. Caching the sha of the successful auth header allows us to skip the bcrypt check which significantly improves performance.
func NewAdminBasicAuth ¶
func NewAdminBasicAuth(logger *types.Logger, config *types.ServerConfig) *AdminBasicAuth
type AppStore ¶
AppStore is a store of apps. List of apps is stored in memory. Apps are initialized lazily, AddApp has to be called before GetApp to initialize the app
func (*AppStore) ClearApps ¶
func (a *AppStore) ClearApps(pathDomains []types.AppPathDomain)
ClearApps removes the specified apps from the in memory App cache Also clears the app info cache for all apps (so that it is reloaded on next request)
func (*AppStore) ClearAppsAudit ¶
func (a *AppStore) ClearAppsAudit(ctx context.Context, pathDomains []types.AppPathDomain, op string) error
ClearApps removes the specified apps from the in memory App cache and creates an audit entry. Also clears the app info cache for all apps (so that it is reloaded on next request)
func (*AppStore) ClearAppsNoNotify ¶
func (a *AppStore) ClearAppsNoNotify(pathDomains []types.AppPathDomain)
ClearApps removes the specified apps from the in memory App cache Also clears the app info cache for all apps (so that it is reloaded on next request) This does not notify other servers of the app update (intended for use from the listener)
func (*AppStore) ClearLinkedApps ¶
func (a *AppStore) ClearLinkedApps(pathDomain types.AppPathDomain) error
func (*AppStore) GetAppInfo ¶
func (*AppStore) GetAppsFullInfo ¶
func (*AppStore) ResetAllAppCache ¶
func (a *AppStore) ResetAllAppCache()
type ContextShared ¶
type ContextShared struct {
}
type Handler ¶
func NewTCPHandler ¶
NewTCPHandler creates a new handler for HTTP/HTTPS requests. App API's are mounted amd authentication is enabled. It also mounts the internal APIs if admin over TCP is enabled
func NewUDSHandler ¶
NewUDSHandler creates a new handler for admin APIs over the unix domain socket
type RBACManager ¶ added in v0.15.0
func NewRBACHandler ¶ added in v0.15.0
func NewRBACHandler(logger *types.Logger, rbacConfig *types.RBACConfig, serverConfig *types.ServerConfig) (*RBACManager, error)
func (*RBACManager) Authorize ¶ added in v0.15.0
func (h *RBACManager) Authorize(user string, appPathDomain types.AppPathDomain, appAuthSetting string, permission types.RBACPermission, groups []string) (bool, error)
func (*RBACManager) UpdateRBACConfig ¶ added in v0.15.0
func (h *RBACManager) UpdateRBACConfig(rbacConfig *types.RBACConfig) error
type RepoCache ¶
type RepoCache struct {
// contains filtered or unexported fields
}
func NewRepoCache ¶
func (*RepoCache) CheckoutRepo ¶
type SSOAuth ¶
func NewSSOAuth ¶
func NewSSOAuth(logger *types.Logger, config *types.ServerConfig) *SSOAuth
func (*SSOAuth) RegisterRoutes ¶
func (*SSOAuth) ValidateAuthType ¶
func (*SSOAuth) ValidateProviderName ¶
type Server ¶
Server is the instance of the OpenRun Server
func NewServer ¶
func NewServer(config *types.ServerConfig) (*Server, error)
NewServer creates a new instance of the OpenRun Server
func (*Server) Apply ¶
func (s *Server) Apply(ctx context.Context, inputTx types.Transaction, applyPath string, appPathGlob string, approve, dryRun, promote bool, reload types.AppReloadOption, branch, commit, gitAuth string, clobber, forceReload bool, lastRunCommitId string, repoCache *RepoCache, dev bool) (*types.AppApplyResponse, []types.AppPathDomain, error)
func (*Server) AuthorizeList ¶ added in v0.15.0
AuthorizeList checks if the user has access to perform list operation on the specified app For RBAC mode, uses RBAC permissions. For non-RBAC mode, look at whether app is using same authentication types as used by the caller
func (*Server) CheckAppValid ¶
func (*Server) CompleteTransaction ¶
func (s *Server) CompleteTransaction(ctx context.Context, tx types.Transaction, entries []types.AppPathDomain, dryRun bool, op string) error
func (*Server) CreateApp ¶
func (s *Server) CreateApp(ctx context.Context, appPath string, approve, dryRun bool, appRequest *types.CreateAppRequest) (*types.AppCreateResponse, error)
func (*Server) CreateAppTx ¶
func (s *Server) CreateAppTx(ctx context.Context, currentTx types.Transaction, appPath string, approve, dryRun bool, appRequest *types.CreateAppRequest, repoCache *RepoCache) (*types.AppCreateResponse, error)
func (*Server) CreateSyncEntry ¶
func (s *Server) CreateSyncEntry(ctx context.Context, path string, scheduled, dryRun bool, sync *types.SyncMetadata) (*types.SyncCreateResponse, error)
func (*Server) DeleteApps ¶
func (*Server) DeleteSyncEntry ¶
func (*Server) FilterApps ¶
func (*Server) GetAppEntry ¶
func (s *Server) GetAppEntry(ctx context.Context, tx types.Transaction, pathDomain types.AppPathDomain) (*types.AppEntry, error)
func (*Server) GetDynamicConfig ¶ added in v0.14.10
func (s *Server) GetDynamicConfig() types.DynamicConfig
func (*Server) InsertAuditEvent ¶
func (s *Server) InsertAuditEvent(event *types.AuditEvent) error
func (*Server) ListSyncEntries ¶
func (*Server) PreviewApp ¶
func (*Server) PromoteApps ¶
func (*Server) ReloadApps ¶
func (*Server) SaveDynamicConfig ¶ added in v0.14.10
func (*Server) StagedUpdate ¶
func (*Server) StagedUpdateAppsTx ¶
func (s *Server) StagedUpdateAppsTx(ctx context.Context, tx types.Transaction, appPathGlob string, promote bool, handler stagedUpdateHandler, args map[string]any) ([]any, []types.AppPathDomain, []types.AppPathDomain, error)
func (*Server) TokenCreate ¶
func (s *Server) TokenCreate(ctx context.Context, appPath string, webhookType types.WebhookType, dryRun bool) (*types.TokenCreateResponse, error)
func (*Server) TokenDelete ¶
func (s *Server) TokenDelete(ctx context.Context, appPath string, webhookType types.WebhookType, dryRun bool) (*types.TokenDeleteResponse, error)
func (*Server) UpdateAppSettings ¶
func (s *Server) UpdateAppSettings(ctx context.Context, appPathGlob string, dryRun bool, updateAppRequest types.UpdateAppRequest) (*types.AppUpdateSettingsResponse, error)
func (*Server) UpdateDynamicConfig ¶ added in v0.14.10
func (s *Server) UpdateDynamicConfig(ctx context.Context, newConfig *types.DynamicConfig, force bool) (*types.DynamicConfig, error)