iam

package
v0.7.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 27, 2024 License: MIT Imports: 30 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	DefaultIntervalWriteAPI = 10 * time.Second
	DefaultTriggerTTL       = 60 * time.Second

	DefaultTriggerRequestTimeout = 10 * time.Second
	DefaultSyncTimeout           = 10 * time.Minute

	DefaultSyncInterval = 10 * time.Minute
)

Functions

This section is empty.

Types

type Database

type Database struct {
	Path string `cfg:"path"`
	// WriteAPI to sync data from write enabled service
	// this makes read-only service
	WriteAPI string `cfg:"write_api"`
	// BackupPath database from backup when start
	BackupPath string `cfg:"backup_path"`
	// Memory to hold data in memory
	Memory bool `cfg:"memory"`
	// Flatten to flatten the data when start, default is true
	Flatten *bool `cfg:"flatten"`

	// TriggerBackground for sync process in background
	TriggerBackground bool `cfg:"trigger_background"`

	// SyncSchema is the schema of the sync service, default is http
	SyncSchema string `cfg:"sync_schema"`
	// SyncHost is the host of the sync service, default is the caller host
	SyncHost string `cfg:"sync_host"`
	// SyncHostFromInterface is for network interface to get the host, default is false
	SyncHostFromInterface bool `cfg:"sync_host_from_interface"`
	// SyncHostFromInterfaceIPPrefix is the prefix of the interface IP
	SyncHostFromInterfaceIPPrefix string `cfg:"sync_host_from_interface_ip_prefix"`
	// SyncPort is the port of the sync service, default is 8080
	SyncPort string `cfg:"sync_port"`
}

type Iam

type Iam struct {
	PrefixPath string    `cfg:"prefix_path"`
	Ldap       ldap.Ldap `cfg:"ldap"`
	Database   Database  `cfg:"database"`
	// contains filtered or unexported fields
}

func (*Iam) Backup

func (m *Iam) Backup(w http.ResponseWriter, r *http.Request)

@Summary Backup Database @Tags backup @Param since query number false "since txid" @Success 200 @Failure 500 {object} data.ResponseError @Router /v1/backup [GET]

func (*Iam) CreatePermission

func (m *Iam) CreatePermission(w http.ResponseWriter, r *http.Request)

@Summary Create permission @Tags permissions @Param permission body data.Permission true "Permission" @Success 200 {object} data.Response[data.ResponseCreate] @Failure 400 {object} data.ResponseError @Failure 409 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/permissions [POST]

func (*Iam) CreatePermissionBulk

func (m *Iam) CreatePermissionBulk(w http.ResponseWriter, r *http.Request)

@Summary Create permission bulk @Tags permissions @Param permission body []data.Permission true "Permission" @Success 200 {object} data.Response[data.ResponseCreateBulk] @Failure 500 {object} data.ResponseError @Router /v1/permissions/bulk [POST]

func (*Iam) CreateRole

func (m *Iam) CreateRole(w http.ResponseWriter, r *http.Request)

@Summary Create role @Tags roles @Param role body data.Role true "Role" @Success 200 {object} data.Response[data.ResponseCreate] @Failure 400 {object} data.ResponseError @Failure 409 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/roles [POST]

func (*Iam) CreateServiceAccount

func (m *Iam) CreateServiceAccount(w http.ResponseWriter, r *http.Request)

@Summary Create service account @Tags service-accounts @Param user body data.UserCreate true "Service Account" @Success 200 {object} data.Response[data.ResponseCreate] @Failure 400 {object} data.ResponseError @Failure 409 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/service-accounts [POST]

func (*Iam) CreateUser

func (m *Iam) CreateUser(w http.ResponseWriter, r *http.Request)

@Summary Create user @Tags users @Param user body data.UserCreate true "User" @Success 200 {object} data.Response[data.ResponseCreate] @Failure 400 {object} data.ResponseError @Failure 409 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/users [POST]

func (*Iam) Dashboard

func (m *Iam) Dashboard(w http.ResponseWriter, _ *http.Request)

@Summary Get dashboard info @Tags dashboard @Success 200 {object} data.Response[data.Dashboard] @Failure 500 {object} data.ResponseError @Router /v1/dashboard [GET]

func (*Iam) DeletePermission

func (m *Iam) DeletePermission(w http.ResponseWriter, r *http.Request)

@Summary Delete permission @Tags permissions @Param id path string true "permission name" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/permissions/{id} [DELETE]

func (*Iam) DeleteRole

func (m *Iam) DeleteRole(w http.ResponseWriter, r *http.Request)

@Summary Delete role @Tags roles @Param id path string true "role name" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/roles/{id} [DELETE]

func (*Iam) DeleteServiceAccount

func (m *Iam) DeleteServiceAccount(w http.ResponseWriter, r *http.Request)

@Summary Delete service account @Tags service-accounts @Param id path string true "service id" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/service-accounts/{id} [DELETE]

func (*Iam) DeleteUser

func (m *Iam) DeleteUser(w http.ResponseWriter, r *http.Request)

@Summary Delete user @Tags users @Param id path string true "user id" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/users/{id} [DELETE]

func (*Iam) ExportPermissions

func (m *Iam) ExportPermissions(w http.ResponseWriter, r *http.Request)

@Summary Export permissions @Tags permissions @Param id query string false "permission id" @Param name query string false "permission name" @Param description query string false "permission description" @Param path query string false "request path" @Param method query string false "request method" @Success 200 @Failure 500 {object} data.ResponseError @Router /v1/permissions/export [GET]

func (*Iam) ExportRoles

func (m *Iam) ExportRoles(w http.ResponseWriter, r *http.Request)

@Summary Export roles @Tags roles @Param name query string false "role name" @Param description query string false "role description" @Param id query string false "role id" @Param permission_ids query []string false "role permission ids" collectionFormat(multi) @Param role_ids query []string false "role ids" collectionFormat(multi) @Param method query string false "request method" @Param path query string false "request path" @Success 200 @Failure 500 {object} data.ResponseError @Router /v1/roles/export [GET]

func (*Iam) ExportServiceAccounts

func (m *Iam) ExportServiceAccounts(w http.ResponseWriter, r *http.Request)

@Summary Export service accounts @Tags service-accounts @Param alias query string false "service alias" @Param id query string false "service id" @Param role_ids query []string false "role ids" collectionFormat(multi) @Param uid query string false "details->uid" @Param name query string false "details->name" @Param email query string false "details->email" @Param path query string false "request path" @Param method query string false "request method" @Param is_active query bool false "is_active" @Success 200 @Failure 500 {object} data.ResponseError @Router /v1/service-accounts/export [GET]

func (*Iam) ExportUsers

func (m *Iam) ExportUsers(w http.ResponseWriter, r *http.Request)

@Summary Export users @Tags users @Param alias query string false "user alias" @Param id query string false "user id" @Param role_ids query []string false "role ids" collectionFormat(multi) @Param uid query string false "details->uid" @Param name query string false "details->name" @Param email query string false "details->email" @Param path query string false "request path" @Param method query string false "request method" @Param is_active query bool false "is_active" @Success 200 @Failure 500 {object} data.ResponseError @Router /v1/users/export [GET]

func (*Iam) GetPermission

func (m *Iam) GetPermission(w http.ResponseWriter, r *http.Request)

@Summary Get permission @Tags permissions @Param id path string true "permission name" @Success 200 {object} data.Response[data.Permission] @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/permissions/{id} [GET]

func (*Iam) GetPermissions

func (m *Iam) GetPermissions(w http.ResponseWriter, r *http.Request)

@Summary Get permissions @Tags permissions @Param id query string false "permission id" @Param name query string false "permission name" @Param description query string false "permission description" @Param path query string false "request path" @Param method query string false "request method" @Param limit query int false "limit" default(20) @Param offset query int false "offset" @Success 200 {object} data.Response[[]data.Permission] @Failure 500 {object} data.ResponseError @Router /v1/permissions [GET]

func (*Iam) GetRole

func (m *Iam) GetRole(w http.ResponseWriter, r *http.Request)

@Summary Get role @Tags roles @Param id path string true "role ID" @Param add_permissions query bool false "add permissions default(true)" @Param add_roles query bool false "add roles default(true)" @Param add_total_users query bool false "add total users default(true)" @Success 200 {object} data.Response[data.RoleExtended] @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/roles/{id} [GET]

func (*Iam) GetRoleRelation

func (m *Iam) GetRoleRelation(w http.ResponseWriter, _ *http.Request)

@Summary Get role relation (dump) @Tags roles @Success 200 {object} map[string]data.RoleRelation @Failure 500 {object} data.ResponseError @Router /v1/roles/relation [GET]

func (*Iam) GetRoles

func (m *Iam) GetRoles(w http.ResponseWriter, r *http.Request)

@Summary Get roles @Tags roles @Param name query string false "role name" @Param description query string false "role description" @Param id query string false "role id" @Param permission_ids query []string false "role permission ids" collectionFormat(multi) @Param role_ids query []string false "role ids" collectionFormat(multi) @Param method query string false "request method" @Param path query string false "request path" @Param permission query []string false "permission" collectionFormat(multi) @Param add_permissions query bool false "add permissions default(true)" @Param add_roles query bool false "add roles default(true)" @Param add_total_users query bool false "add total users default(true)" @Param limit query int false "limit" default(20) @Param offset query int false "offset" @Success 200 {object} data.Response[[]data.RoleExtended] @Failure 500 {object} data.ResponseError @Router /v1/roles [GET]

func (*Iam) GetServiceAccount

func (m *Iam) GetServiceAccount(w http.ResponseWriter, r *http.Request)

@Summary Get service account @Tags service-accounts @Param id path string true "service id" @Param add_roles query bool false "add roles default(true)" @Param add_permissions query bool false "add permissions" @Param add_data query bool false "add data" @Success 200 {object} data.Response[data.UserExtended] @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/service-accounts/{id} [GET]

func (*Iam) GetServiceAccounts

func (m *Iam) GetServiceAccounts(w http.ResponseWriter, r *http.Request)

@Summary Get service accounts @Tags service-accounts @Param alias query string false "service alias" @Param id query string false "service id" @Param role_ids query []string false "role ids" collectionFormat(multi) @Param uid query string false "details->uid" @Param name query string false "details->name" @Param email query string false "details->email" @Param path query string false "request path" @Param method query string false "request method" @Param permission query []string false "permission" collectionFormat(multi) @Param is_active query bool false "is_active" @Param add_roles query bool false "add roles default(true)" @Param add_permissions query bool false "add permissions" @Param add_data query bool false "add data" @Param limit query int false "limit" default(20) @Param offset query int false "offset" @Success 200 {object} data.Response[[]data.UserExtended] @Failure 500 {object} data.ResponseError @Router /v1/service-accounts [GET]

func (*Iam) GetUser

func (m *Iam) GetUser(w http.ResponseWriter, r *http.Request)

@Summary Get user @Tags users @Param id path string true "user id" @Param add_roles query bool false "add roles default(true)" @Param add_permissions query bool false "add permissions" @Param add_data query bool false "add data" @Success 200 {object} data.Response[data.UserExtended] @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/users/{id} [GET]

func (*Iam) GetUsers

func (m *Iam) GetUsers(w http.ResponseWriter, r *http.Request)

@Summary Get users @Tags users @Param alias query string false "user alias" @Param id query string false "user id" @Param role_ids query []string false "role ids" collectionFormat(multi) @Param uid query string false "details->uid" @Param name query string false "details->name" @Param email query string false "details->email" @Param path query string false "request path" @Param method query string false "request method" @Param permission query []string false "permission" collectionFormat(multi) @Param is_active query bool false "is_active" @Param add_roles query bool false "add roles default(true)" @Param add_permissions query bool false "add permissions" @Param add_data query bool false "add data" @Param limit query int false "limit" default(20) @Param offset query int false "offset" @Success 200 {object} data.Response[[]data.UserExtended] @Failure 500 {object} data.ResponseError @Router /v1/users [GET]

func (*Iam) Info

func (m *Iam) Info(w http.ResponseWriter, r *http.Request)

@Summary Get current user's info @Tags info @Param alias query string true "User alias" @Param data query bool false "add role data" @Success 200 {object} data.Response[data.UserInfo] @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/info [GET]

func (*Iam) InfoUser

func (m *Iam) InfoUser(w http.ResponseWriter, r *http.Request)

@Summary Get current user's info @Tags public @Param X-User header string false "User alias, X-User is authorized user auto adds" @Param data query bool false "add role data" @Success 200 {object} data.Response[data.UserInfo] @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /info [GET]

func (*Iam) KeepPermissionBulk added in v0.7.11

func (m *Iam) KeepPermissionBulk(w http.ResponseWriter, r *http.Request)

@Summary Delete permission bulk @Tags permissions @Param permission body []data.Permission true "Permission" @Success 200 {object} data.Response[[]data.IDName] @Failure 500 {object} data.ResponseError @Router /v1/permissions/keep [POST]

func (*Iam) LdapCreateGroupMaps

func (m *Iam) LdapCreateGroupMaps(w http.ResponseWriter, r *http.Request)

@Summary Create LDAP Map @Tags ldap @Param map body data.LMap true "Map" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 409 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/ldap/maps [POST]

func (*Iam) LdapDeleteGroupMaps

func (m *Iam) LdapDeleteGroupMaps(w http.ResponseWriter, r *http.Request)

@Summary Delete LDAP Map @Tags ldap @Param name path string true "map name" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/ldap/maps/{name} [DELETE]

func (*Iam) LdapGetGroupMap

func (m *Iam) LdapGetGroupMap(w http.ResponseWriter, r *http.Request)

@Summary Get LDAP Map @Tags ldap @Param name path string true "map name" @Success 200 {object} data.Response[data.LMap] @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/ldap/maps/{name} [GET]

func (*Iam) LdapGetGroupMaps

func (m *Iam) LdapGetGroupMaps(w http.ResponseWriter, r *http.Request)

@Summary Get LDAP Maps @Tags ldap @Param name query string false "map name" @Param role_ids query []string false "role ids" collectionFormat(multi) @Param limit query int false "limit" default(20) @Param offset query int false "offset" @Success 200 {object} data.Response[[]data.LMap] @Failure 500 {object} data.ResponseError @Router /v1/ldap/maps [GET]

func (*Iam) LdapGetGroups

func (m *Iam) LdapGetGroups(w http.ResponseWriter, _ *http.Request)

LdapGetGroups returns groups info from LDAP. @Summary Get LDAP groups @Tags ldap @Success 200 {object} data.Response[[]ldap.LdapGroup] @Failure 500 {object} data.ResponseError @Router /v1/ldap/groups [GET]

func (*Iam) LdapGetUsers

func (m *Iam) LdapGetUsers(w http.ResponseWriter, r *http.Request)

LdapGetUsers returns user info from LDAP. @Summary Get LDAP user @Tags ldap @Param uid path string true "user uid" @Success 200 {object} data.Response[ldap.LdapUser] @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/ldap/users/{uid} [GET]

func (*Iam) LdapPutGroupMaps

func (m *Iam) LdapPutGroupMaps(w http.ResponseWriter, r *http.Request)

@Summary Put LDAP Map @Tags ldap @Param name path string true "map name" @Param map body data.LMap true "Map" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/ldap/maps/{name} [PUT]

func (*Iam) LdapSync

func (m *Iam) LdapSync(force bool, uid string) error

func (*Iam) LdapSyncGroups

func (m *Iam) LdapSyncGroups(w http.ResponseWriter, r *http.Request)

LdapSyncGroups syncs users on LDAP groups with mapped groups in the database. @Summary Sync LDAP groups @Tags ldap @Param Body body SyncRequest false "force" @Success 200 {object} data.ResponseMessage @Failure 500 {object} data.ResponseError @Router /v1/ldap/sync [POST]

func (*Iam) LdapSyncGroupsUID

func (m *Iam) LdapSyncGroupsUID(w http.ResponseWriter, r *http.Request)

LdapSyncGroups syncs one user on LDAP groups with mapped groups in the database. @Summary Sync LDAP groups @Tags ldap @Param uid path string true "user uid" @Param Body body SyncRequest false "force" @Success 200 {object} data.ResponseMessage @Failure 500 {object} data.ResponseError @Router /v1/ldap/sync/{uid} [POST]

func (*Iam) Middleware

func (m *Iam) Middleware(ctx context.Context) (func(http.Handler) http.Handler, error)

func (*Iam) MuxSet

func (m *Iam) MuxSet(prefix string) *chi.Mux

@Title IAM API @BasePath / @description Identity and Access Management API

func (*Iam) PatchPermission

func (m *Iam) PatchPermission(w http.ResponseWriter, r *http.Request)

@Summary Patch permission @Tags permissions @Param id path string true "permission ID" @Param permission body data.PermissionPatch true "Permission" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/permissions/{id} [PATCH]

func (*Iam) PatchRole

func (m *Iam) PatchRole(w http.ResponseWriter, r *http.Request)

@Summary Patch role @Tags roles @Param id path string true "role ID" @Param role body data.RolePatch true "Role" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/roles/{id} [PATCH]

func (*Iam) PatchServiceAccount

func (m *Iam) PatchServiceAccount(w http.ResponseWriter, r *http.Request)

@Summary Patch service account @Tags service-accounts @Param id path string true "service id" @Param user body data.UserPatch true "Service" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/service-accounts/{id} [PATCH]

func (*Iam) PatchUser

func (m *Iam) PatchUser(w http.ResponseWriter, r *http.Request)

@Summary Patch user @Tags users @Param id path string true "user id" @Param user body data.UserPatch true "User" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/users/{id} [PATCH]

func (*Iam) PostCheck

func (m *Iam) PostCheck(w http.ResponseWriter, r *http.Request)

@Summary Post check @Tags check @Param check body data.CheckRequest true "Check" @Success 200 {object} data.CheckResponse @Failure 400 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/check [POST]

func (*Iam) PostCheckUser

func (m *Iam) PostCheckUser(w http.ResponseWriter, r *http.Request)

@Summary Post check @Tags public @Param X-User header string false "User alias, X-User is authorized user auto adds" @Param check body data.CheckRequestUser true "Check" @Success 200 {object} data.CheckResponse @Failure 400 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /check [POST]

func (*Iam) PutPermission

func (m *Iam) PutPermission(w http.ResponseWriter, r *http.Request)

@Summary Put permission @Tags permissions @Param id path string true "permission ID" @Param permission body data.Permission true "Permission" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/permissions/{id} [PUT]

func (*Iam) PutRole

func (m *Iam) PutRole(w http.ResponseWriter, r *http.Request)

@Summary Put role @Tags roles @Param id path string true "role ID" @Param role body data.Role true "Role" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/roles/{id} [PUT]

func (*Iam) PutRoleRelation

func (m *Iam) PutRoleRelation(w http.ResponseWriter, r *http.Request)

@Summary Set role relation @Tags roles @Param relation body map[string]data.RoleRelation true "RoleRelation" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/roles/relation [PUT]

func (*Iam) PutServiceAccount

func (m *Iam) PutServiceAccount(w http.ResponseWriter, r *http.Request)

@Summary Put service account @Tags service-accounts @Param id path string true "service id" @Param user body data.User true "Service" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/service-accounts/{id} [PUT]

func (*Iam) PutUser

func (m *Iam) PutUser(w http.ResponseWriter, r *http.Request)

@Summary Put user @Tags users @Param id path string true "user id" @Param user body data.User true "User" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 404 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/users/{id} [PUT]

func (*Iam) Restore

func (m *Iam) Restore(w http.ResponseWriter, r *http.Request)

@Summary Restore Database @Tags backup @Param file formData file true "Backup file" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/restore [POST]

func (*Iam) SwaggerMiddleware

func (m *Iam) SwaggerMiddleware() (func(http.Handler) http.Handler, error)

func (*Iam) Sync

func (m *Iam) Sync(w http.ResponseWriter, r *http.Request)

@Summary Sync with write API @Tags backup @Param X-Sync-Version header string false "Sync version" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/sync [POST]

func (*Iam) Trigger

func (m *Iam) Trigger(w http.ResponseWriter, r *http.Request)

@Summary Add trigger endpoint for change sync @Tags backup @Param trigger body Trigger true "Trigger API" @Success 200 {object} data.ResponseMessage @Failure 400 {object} data.ResponseError @Failure 500 {object} data.ResponseError @Router /v1/trigger [POST]

func (*Iam) UIInfo

func (m *Iam) UIInfo(w http.ResponseWriter, _ *http.Request)

func (*Iam) UIMiddleware

func (m *Iam) UIMiddleware() (func(http.Handler) http.Handler, error)

func (*Iam) Version

func (m *Iam) Version(w http.ResponseWriter, r *http.Request)

@Summary Get version @Tags backup @Success 200 {object} data.ResponseVersion @Router /v1/version [GET]

type Sync

type Sync struct {
	// contains filtered or unexported fields
}

func NewSync

func NewSync(cfg SyncConfig) (*Sync, error)

func (*Sync) AddSync

func (s *Sync) AddSync(ctx context.Context, trigger Trigger)

func (*Sync) Redirect

func (s *Sync) Redirect(w http.ResponseWriter, r *http.Request) bool

func (*Sync) Sync

func (s *Sync) Sync(ctx context.Context, targetVersion uint64) error

func (*Sync) SyncStart

func (s *Sync) SyncStart(ctx context.Context)

func (*Sync) SyncTTL

func (s *Sync) SyncTTL(ctx context.Context)

func (*Sync) Trigger

func (s *Sync) Trigger(ctx context.Context)

type SyncAPI

type SyncAPI struct {
	Backup  string
	Version string
	Trigger string

	WriteAPI      *url.URL
	CurrentPrefix string
	TriggerData   []byte
}

type SyncConfig

type SyncConfig struct {
	WriteAPI          string
	PrefixPath        string
	DB                SyncDB
	TriggerBackground bool

	SyncSchema string
	SyncHost   string
	SyncPort   string
}

type SyncDB

type SyncDB interface {
	Version() uint64
	Restore(r io.Reader) error
}

type SyncRequest

type SyncRequest struct {
	Force bool `json:"force"`
}

type Trigger

type Trigger struct {
	Path   string `json:"path"`
	Schema string `json:"schema"` // default is http
	Host   string `json:"host"`   // default is caller host
	Port   string `json:"port"`   // default is caller port
}

type TriggerData added in v0.7.9

type TriggerData struct {
	Time time.Time
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL