Documentation
¶
Index ¶
- Constants
- Variables
- func AddVaryHeader(next http.Handler) http.Handler
- func GenerateSelfSignedCertificate(certPath, keyPath string, validityDuration time.Duration) 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) ClearAllAppCache()
- func (a *AppStore) DeleteApps(pathDomain []types.AppPathDomain)
- func (a *AppStore) DeleteAppsAudit(ctx context.Context, pathDomain []types.AppPathDomain, op string) error
- func (a *AppStore) DeleteLinkedApps(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) UpdateApps(apps []*app.App)
- type ContextShared
- type FlushableStatusResponseWriter
- type FlushableWriter
- type Handler
- type SSOAuth
- func (s *SSOAuth) CheckAuth(w http.ResponseWriter, r *http.Request, appProvider 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) 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) DeleteApps(ctx context.Context, appPathGlob string, dryRun bool) (*types.AppDeleteResponse, 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) GetListAppsApp() (*app.App, error)
- func (s *Server) InsertAuditEvent(event *types.AuditEvent) 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) ReloadApps(ctx context.Context, appPathGlob string, approve, dryRun, promote bool, ...) (*types.AppReloadResponse, 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) 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)
- type StatusResponseWriter
Constants ¶
const ( VARY_HEADER = "Vary" 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 = "clace_session" AUTH_KEY = "authenticated" USER_ID_KEY = "user" USER_EMAIL_KEY = "email" USER_NICKNAME_KEY = "nickname" PROVIDER_NAME_KEY = "provider_name" REDIRECT_URL = "redirect" )
const CURRENT_AUDIT_DB_VERSION = 1
const (
REALM = "clace"
)
Variables ¶
var CL_HOME = os.ExpandEnv("$CL_HOME")
CL_HOME is the root directory for Clace logs and temp files
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 ¶ added in v0.7.0
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.
func ParseGlobFromInfo ¶ added in v0.7.0
ParseGlobFromInfo 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) ClearAllAppCache ¶ added in v0.4.5
func (a *AppStore) ClearAllAppCache()
func (*AppStore) DeleteApps ¶ added in v0.3.0
func (a *AppStore) DeleteApps(pathDomain []types.AppPathDomain)
func (*AppStore) DeleteAppsAudit ¶ added in v0.10.2
func (*AppStore) DeleteLinkedApps ¶ added in v0.3.0
func (a *AppStore) DeleteLinkedApps(pathDomain types.AppPathDomain) error
func (*AppStore) GetAllAppsInfo ¶ added in v0.10.2
func (*AppStore) GetAllDomains ¶ added in v0.9.0
func (*AppStore) GetAppInfo ¶ added in v0.9.0
func (*AppStore) GetAppsFullInfo ¶ added in v0.10.2
func (*AppStore) UpdateApps ¶ added in v0.3.0
type ContextShared ¶ added in v0.10.2
type ContextShared struct {}
type FlushableStatusResponseWriter ¶ added in v0.10.4
type FlushableStatusResponseWriter struct { FlushableWriter // contains filtered or unexported fields }
FlushableStatusResponseWriter wraps http.ResponseWriter to capture the status code.
func (*FlushableStatusResponseWriter) WriteHeader ¶ added in v0.10.4
func (f *FlushableStatusResponseWriter) WriteHeader(code int)
WriteHeader captures the status code.
type FlushableWriter ¶ added in v0.10.4
type FlushableWriter interface { http.ResponseWriter http.Flusher }
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 SSOAuth ¶ added in v0.5.0
func NewSSOAuth ¶ added in v0.5.0
func NewSSOAuth(logger *types.Logger, config *types.ServerConfig) *SSOAuth
func (*SSOAuth) RegisterRoutes ¶ added in v0.5.0
func (*SSOAuth) ValidateAuthType ¶ added in v0.5.0
func (*SSOAuth) ValidateProviderName ¶ added in v0.5.0
type Server ¶
Server is the instance of the Clace Server
func NewServer ¶
func NewServer(config *types.ServerConfig) (*Server, error)
NewServer creates a new instance of the Clace Server
func (*Server) CheckAppValid ¶ added in v0.3.0
func (*Server) CompleteTransaction ¶ added in v0.3.0
func (s *Server) CompleteTransaction(ctx context.Context, tx types.Transaction, entries []types.AppPathDomain, dryRun bool, op string) error
func (*Server) CreateApp ¶ added in v0.2.0
func (s *Server) CreateApp(ctx context.Context, appPath string, approve, dryRun bool, appRequest types.CreateAppRequest) (*types.AppCreateResponse, error)
func (*Server) DeleteApps ¶ added in v0.3.0
func (*Server) FilterApps ¶ added in v0.3.0
func (*Server) GetAppEntry ¶ added in v0.3.0
func (s *Server) GetAppEntry(ctx context.Context, tx types.Transaction, pathDomain types.AppPathDomain) (*types.AppEntry, error)
func (*Server) GetAppSpec ¶ added in v0.6.0
func (*Server) InsertAuditEvent ¶ added in v0.10.2
func (s *Server) InsertAuditEvent(event *types.AuditEvent) error
func (*Server) PreviewApp ¶ added in v0.3.0
func (*Server) PromoteApps ¶ added in v0.3.0
func (*Server) ReloadApps ¶ added in v0.3.0
func (*Server) StagedUpdate ¶ added in v0.4.1
func (*Server) StagedUpdateAppsTx ¶ added in v0.4.1
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 ¶ added in v0.7.0
func (s *Server) TokenCreate(ctx context.Context, appPath string, webhookType types.WebhookType, dryRun bool) (*types.TokenCreateResponse, error)
func (*Server) TokenDelete ¶ added in v0.7.0
func (s *Server) TokenDelete(ctx context.Context, appPath string, webhookType types.WebhookType, dryRun bool) (*types.TokenDeleteResponse, error)
func (*Server) UpdateAppSettings ¶ added in v0.3.0
func (s *Server) UpdateAppSettings(ctx context.Context, appPathGlob string, dryRun bool, updateAppRequest types.UpdateAppRequest) (*types.AppUpdateSettingsResponse, error)
func (*Server) VersionFiles ¶ added in v0.4.1
func (*Server) VersionList ¶ added in v0.4.1
type StatusResponseWriter ¶ added in v0.10.4
type StatusResponseWriter struct { http.ResponseWriter // contains filtered or unexported fields }
StatusResponseWriter wraps http.ResponseWriter to capture the status code.
func (*StatusResponseWriter) WriteHeader ¶ added in v0.10.4
func (c *StatusResponseWriter) WriteHeader(code int)
WriteHeader captures the status code.