Files
2026-07-08 00:02:43 -07:00

2815 lines
87 KiB
Go

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc (unknown)
// source: v1/config.proto
package v1
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
_ "google.golang.org/protobuf/types/known/emptypb"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type Multihost_Permission_Type int32
const (
Multihost_Permission_PERMISSION_UNKNOWN Multihost_Permission_Type = 0
// Granted on a knownHost (by client → host): the local instance pushes
//
// operations for in-scope repos/plans up to that known host, and
// exposes those resource IDs/GUIDs in the resource list it sends.
//
// Granted on an authorizedClient: no effect. The host never pushes
//
// operations down to clients.
Multihost_Permission_PERMISSION_READ_OPERATIONS Multihost_Permission_Type = 1
// Granted on an authorizedClient (by host → client): in-scope repos/plans
//
// are included in the host's RemoteConfig and resource list sent to
// the client (read-only view of host config).
//
// Granted on a knownHost (by client → host): in-scope repos/plans are
//
// included in the client's RemoteConfig and resource list sent to the
// host (read-only view of client config).
Multihost_Permission_PERMISSION_READ_CONFIG Multihost_Permission_Type = 2
// Granted on an authorizedClient (by host → client): same view as
//
// READ_CONFIG. There is no client→host SetConfig path, so the "write"
// half is currently a no-op on the host side.
//
// Granted on a knownHost (by client → host): everything READ_CONFIG does,
//
// plus the client accepts SetConfig from the host for in-scope IDs
// (create/update/delete plans, create/update/delete repos).
Multihost_Permission_PERMISSION_READ_WRITE_CONFIG Multihost_Permission_Type = 3
// Both peers must grant this for shared repos to flow:
// - Granted on an authorizedClient (by host → client): host pushes
// in-scope repos marked as 'shared' to that client via SetConfig.
// A scopeless grant acts as a wildcard (push every shared repo);
// a scoped grant restricts which shared repos are pushed.
// - Granted on a knownHost (by client → host): client accepts pushed
// shared repos that are new or already owned by this host. Always
// evaluated scope-lessly on the client — scopes are ignored here
// because the client doesn't pre-know the incoming repo IDs.
//
// If either side is missing the grant, no shared repos are transferred.
Multihost_Permission_PERMISSION_RECEIVE_SHARED_REPOS Multihost_Permission_Type = 4
)
// Enum value maps for Multihost_Permission_Type.
var (
Multihost_Permission_Type_name = map[int32]string{
0: "PERMISSION_UNKNOWN",
1: "PERMISSION_READ_OPERATIONS",
2: "PERMISSION_READ_CONFIG",
3: "PERMISSION_READ_WRITE_CONFIG",
4: "PERMISSION_RECEIVE_SHARED_REPOS",
}
Multihost_Permission_Type_value = map[string]int32{
"PERMISSION_UNKNOWN": 0,
"PERMISSION_READ_OPERATIONS": 1,
"PERMISSION_READ_CONFIG": 2,
"PERMISSION_READ_WRITE_CONFIG": 3,
"PERMISSION_RECEIVE_SHARED_REPOS": 4,
}
)
func (x Multihost_Permission_Type) Enum() *Multihost_Permission_Type {
p := new(Multihost_Permission_Type)
*p = x
return p
}
func (x Multihost_Permission_Type) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Multihost_Permission_Type) Descriptor() protoreflect.EnumDescriptor {
return file_v1_config_proto_enumTypes[0].Descriptor()
}
func (Multihost_Permission_Type) Type() protoreflect.EnumType {
return &file_v1_config_proto_enumTypes[0]
}
func (x Multihost_Permission_Type) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use Multihost_Permission_Type.Descriptor instead.
func (Multihost_Permission_Type) EnumDescriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{1, 2, 0}
}
type CommandPrefix_IONiceLevel int32
const (
CommandPrefix_IO_DEFAULT CommandPrefix_IONiceLevel = 0
CommandPrefix_IO_BEST_EFFORT_LOW CommandPrefix_IONiceLevel = 1
CommandPrefix_IO_BEST_EFFORT_HIGH CommandPrefix_IONiceLevel = 2
CommandPrefix_IO_IDLE CommandPrefix_IONiceLevel = 3
)
// Enum value maps for CommandPrefix_IONiceLevel.
var (
CommandPrefix_IONiceLevel_name = map[int32]string{
0: "IO_DEFAULT",
1: "IO_BEST_EFFORT_LOW",
2: "IO_BEST_EFFORT_HIGH",
3: "IO_IDLE",
}
CommandPrefix_IONiceLevel_value = map[string]int32{
"IO_DEFAULT": 0,
"IO_BEST_EFFORT_LOW": 1,
"IO_BEST_EFFORT_HIGH": 2,
"IO_IDLE": 3,
}
)
func (x CommandPrefix_IONiceLevel) Enum() *CommandPrefix_IONiceLevel {
p := new(CommandPrefix_IONiceLevel)
*p = x
return p
}
func (x CommandPrefix_IONiceLevel) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (CommandPrefix_IONiceLevel) Descriptor() protoreflect.EnumDescriptor {
return file_v1_config_proto_enumTypes[1].Descriptor()
}
func (CommandPrefix_IONiceLevel) Type() protoreflect.EnumType {
return &file_v1_config_proto_enumTypes[1]
}
func (x CommandPrefix_IONiceLevel) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use CommandPrefix_IONiceLevel.Descriptor instead.
func (CommandPrefix_IONiceLevel) EnumDescriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{4, 0}
}
type CommandPrefix_CPUNiceLevel int32
const (
CommandPrefix_CPU_DEFAULT CommandPrefix_CPUNiceLevel = 0
CommandPrefix_CPU_HIGH CommandPrefix_CPUNiceLevel = 1
CommandPrefix_CPU_LOW CommandPrefix_CPUNiceLevel = 2
)
// Enum value maps for CommandPrefix_CPUNiceLevel.
var (
CommandPrefix_CPUNiceLevel_name = map[int32]string{
0: "CPU_DEFAULT",
1: "CPU_HIGH",
2: "CPU_LOW",
}
CommandPrefix_CPUNiceLevel_value = map[string]int32{
"CPU_DEFAULT": 0,
"CPU_HIGH": 1,
"CPU_LOW": 2,
}
)
func (x CommandPrefix_CPUNiceLevel) Enum() *CommandPrefix_CPUNiceLevel {
p := new(CommandPrefix_CPUNiceLevel)
*p = x
return p
}
func (x CommandPrefix_CPUNiceLevel) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (CommandPrefix_CPUNiceLevel) Descriptor() protoreflect.EnumDescriptor {
return file_v1_config_proto_enumTypes[2].Descriptor()
}
func (CommandPrefix_CPUNiceLevel) Type() protoreflect.EnumType {
return &file_v1_config_proto_enumTypes[2]
}
func (x CommandPrefix_CPUNiceLevel) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use CommandPrefix_CPUNiceLevel.Descriptor instead.
func (CommandPrefix_CPUNiceLevel) EnumDescriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{4, 1}
}
type Schedule_Clock int32
const (
Schedule_CLOCK_DEFAULT Schedule_Clock = 0 // same as CLOCK_LOCAL
Schedule_CLOCK_LOCAL Schedule_Clock = 1
Schedule_CLOCK_UTC Schedule_Clock = 2
Schedule_CLOCK_LAST_RUN_TIME Schedule_Clock = 3
)
// Enum value maps for Schedule_Clock.
var (
Schedule_Clock_name = map[int32]string{
0: "CLOCK_DEFAULT",
1: "CLOCK_LOCAL",
2: "CLOCK_UTC",
3: "CLOCK_LAST_RUN_TIME",
}
Schedule_Clock_value = map[string]int32{
"CLOCK_DEFAULT": 0,
"CLOCK_LOCAL": 1,
"CLOCK_UTC": 2,
"CLOCK_LAST_RUN_TIME": 3,
}
)
func (x Schedule_Clock) Enum() *Schedule_Clock {
p := new(Schedule_Clock)
*p = x
return p
}
func (x Schedule_Clock) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Schedule_Clock) Descriptor() protoreflect.EnumDescriptor {
return file_v1_config_proto_enumTypes[3].Descriptor()
}
func (Schedule_Clock) Type() protoreflect.EnumType {
return &file_v1_config_proto_enumTypes[3]
}
func (x Schedule_Clock) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use Schedule_Clock.Descriptor instead.
func (Schedule_Clock) EnumDescriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{9, 0}
}
type Hook_Condition int32
const (
Hook_CONDITION_UNKNOWN Hook_Condition = 0
Hook_CONDITION_ANY_ERROR Hook_Condition = 1 // error running any operation.
Hook_CONDITION_SNAPSHOT_START Hook_Condition = 2 // backup started.
Hook_CONDITION_SNAPSHOT_END Hook_Condition = 3 // backup completed (success or fail).
Hook_CONDITION_SNAPSHOT_ERROR Hook_Condition = 4 // snapshot failed.
Hook_CONDITION_SNAPSHOT_WARNING Hook_Condition = 5 // snapshot completed with warnings.
Hook_CONDITION_SNAPSHOT_SUCCESS Hook_Condition = 6 // snapshot succeeded.
Hook_CONDITION_SNAPSHOT_SKIPPED Hook_Condition = 7 // snapshot was skipped e.g. due to no changes.
// prune conditions
Hook_CONDITION_PRUNE_START Hook_Condition = 100 // prune started.
Hook_CONDITION_PRUNE_ERROR Hook_Condition = 101 // prune failed.
Hook_CONDITION_PRUNE_SUCCESS Hook_Condition = 102 // prune succeeded.
// check conditions
Hook_CONDITION_CHECK_START Hook_Condition = 200 // check started.
Hook_CONDITION_CHECK_ERROR Hook_Condition = 201 // check failed.
Hook_CONDITION_CHECK_SUCCESS Hook_Condition = 202 // check succeeded.
// forget conditions
Hook_CONDITION_FORGET_START Hook_Condition = 300 // forget started.
Hook_CONDITION_FORGET_ERROR Hook_Condition = 301 // forget failed.
Hook_CONDITION_FORGET_SUCCESS Hook_Condition = 302 // forget succeeded.
)
// Enum value maps for Hook_Condition.
var (
Hook_Condition_name = map[int32]string{
0: "CONDITION_UNKNOWN",
1: "CONDITION_ANY_ERROR",
2: "CONDITION_SNAPSHOT_START",
3: "CONDITION_SNAPSHOT_END",
4: "CONDITION_SNAPSHOT_ERROR",
5: "CONDITION_SNAPSHOT_WARNING",
6: "CONDITION_SNAPSHOT_SUCCESS",
7: "CONDITION_SNAPSHOT_SKIPPED",
100: "CONDITION_PRUNE_START",
101: "CONDITION_PRUNE_ERROR",
102: "CONDITION_PRUNE_SUCCESS",
200: "CONDITION_CHECK_START",
201: "CONDITION_CHECK_ERROR",
202: "CONDITION_CHECK_SUCCESS",
300: "CONDITION_FORGET_START",
301: "CONDITION_FORGET_ERROR",
302: "CONDITION_FORGET_SUCCESS",
}
Hook_Condition_value = map[string]int32{
"CONDITION_UNKNOWN": 0,
"CONDITION_ANY_ERROR": 1,
"CONDITION_SNAPSHOT_START": 2,
"CONDITION_SNAPSHOT_END": 3,
"CONDITION_SNAPSHOT_ERROR": 4,
"CONDITION_SNAPSHOT_WARNING": 5,
"CONDITION_SNAPSHOT_SUCCESS": 6,
"CONDITION_SNAPSHOT_SKIPPED": 7,
"CONDITION_PRUNE_START": 100,
"CONDITION_PRUNE_ERROR": 101,
"CONDITION_PRUNE_SUCCESS": 102,
"CONDITION_CHECK_START": 200,
"CONDITION_CHECK_ERROR": 201,
"CONDITION_CHECK_SUCCESS": 202,
"CONDITION_FORGET_START": 300,
"CONDITION_FORGET_ERROR": 301,
"CONDITION_FORGET_SUCCESS": 302,
}
)
func (x Hook_Condition) Enum() *Hook_Condition {
p := new(Hook_Condition)
*p = x
return p
}
func (x Hook_Condition) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Hook_Condition) Descriptor() protoreflect.EnumDescriptor {
return file_v1_config_proto_enumTypes[4].Descriptor()
}
func (Hook_Condition) Type() protoreflect.EnumType {
return &file_v1_config_proto_enumTypes[4]
}
func (x Hook_Condition) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use Hook_Condition.Descriptor instead.
func (Hook_Condition) EnumDescriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{10, 0}
}
type Hook_OnError int32
const (
Hook_ON_ERROR_IGNORE Hook_OnError = 0
Hook_ON_ERROR_CANCEL Hook_OnError = 1 // cancels the operation and skips subsequent hooks
Hook_ON_ERROR_FATAL Hook_OnError = 2 // fails the operation and subsequent hooks.
Hook_ON_ERROR_RETRY_1MINUTE Hook_OnError = 100 // retry the operation every minute
Hook_ON_ERROR_RETRY_10MINUTES Hook_OnError = 101 // retry the operation every 10 minutes
Hook_ON_ERROR_RETRY_EXPONENTIAL_BACKOFF Hook_OnError = 103 // retry the operation with exponential backoff up to 1h max.
)
// Enum value maps for Hook_OnError.
var (
Hook_OnError_name = map[int32]string{
0: "ON_ERROR_IGNORE",
1: "ON_ERROR_CANCEL",
2: "ON_ERROR_FATAL",
100: "ON_ERROR_RETRY_1MINUTE",
101: "ON_ERROR_RETRY_10MINUTES",
103: "ON_ERROR_RETRY_EXPONENTIAL_BACKOFF",
}
Hook_OnError_value = map[string]int32{
"ON_ERROR_IGNORE": 0,
"ON_ERROR_CANCEL": 1,
"ON_ERROR_FATAL": 2,
"ON_ERROR_RETRY_1MINUTE": 100,
"ON_ERROR_RETRY_10MINUTES": 101,
"ON_ERROR_RETRY_EXPONENTIAL_BACKOFF": 103,
}
)
func (x Hook_OnError) Enum() *Hook_OnError {
p := new(Hook_OnError)
*p = x
return p
}
func (x Hook_OnError) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Hook_OnError) Descriptor() protoreflect.EnumDescriptor {
return file_v1_config_proto_enumTypes[5].Descriptor()
}
func (Hook_OnError) Type() protoreflect.EnumType {
return &file_v1_config_proto_enumTypes[5]
}
func (x Hook_OnError) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use Hook_OnError.Descriptor instead.
func (Hook_OnError) EnumDescriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{10, 1}
}
type Hook_Webhook_Method int32
const (
Hook_Webhook_UNKNOWN Hook_Webhook_Method = 0
Hook_Webhook_GET Hook_Webhook_Method = 1
Hook_Webhook_POST Hook_Webhook_Method = 2
)
// Enum value maps for Hook_Webhook_Method.
var (
Hook_Webhook_Method_name = map[int32]string{
0: "UNKNOWN",
1: "GET",
2: "POST",
}
Hook_Webhook_Method_value = map[string]int32{
"UNKNOWN": 0,
"GET": 1,
"POST": 2,
}
)
func (x Hook_Webhook_Method) Enum() *Hook_Webhook_Method {
p := new(Hook_Webhook_Method)
*p = x
return p
}
func (x Hook_Webhook_Method) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Hook_Webhook_Method) Descriptor() protoreflect.EnumDescriptor {
return file_v1_config_proto_enumTypes[6].Descriptor()
}
func (Hook_Webhook_Method) Type() protoreflect.EnumType {
return &file_v1_config_proto_enumTypes[6]
}
func (x Hook_Webhook_Method) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use Hook_Webhook_Method.Descriptor instead.
func (Hook_Webhook_Method) EnumDescriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{10, 1, 0}
}
// Config is the top level config object for restic UI.
type Config struct {
state protoimpl.MessageState `protogen:"open.v1"`
// modification number, used for read-modify-write consistency in the UI. Incremented on every write.
Modno int32 `protobuf:"varint,1,opt,name=modno,proto3" json:"modno,omitempty"`
Version int32 `protobuf:"varint,6,opt,name=version,proto3" json:"version,omitempty"` // version of the config file format. Used to determine when to run migrations.
// The instance name for the Backrest installation.
// This identifies backups created by this instance and is displayed in the UI.
Instance string `protobuf:"bytes,2,opt,name=instance,proto3" json:"instance,omitempty"`
Repos []*Repo `protobuf:"bytes,3,rep,name=repos,proto3" json:"repos,omitempty"`
Plans []*Plan `protobuf:"bytes,4,rep,name=plans,proto3" json:"plans,omitempty"`
Auth *Auth `protobuf:"bytes,5,opt,name=auth,proto3" json:"auth,omitempty"`
Multihost *Multihost `protobuf:"bytes,7,opt,name=multihost,json=sync,proto3" json:"multihost,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Config) Reset() {
*x = Config{}
mi := &file_v1_config_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Config) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Config) ProtoMessage() {}
func (x *Config) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Config.ProtoReflect.Descriptor instead.
func (*Config) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{0}
}
func (x *Config) GetModno() int32 {
if x != nil {
return x.Modno
}
return 0
}
func (x *Config) GetVersion() int32 {
if x != nil {
return x.Version
}
return 0
}
func (x *Config) GetInstance() string {
if x != nil {
return x.Instance
}
return ""
}
func (x *Config) GetRepos() []*Repo {
if x != nil {
return x.Repos
}
return nil
}
func (x *Config) GetPlans() []*Plan {
if x != nil {
return x.Plans
}
return nil
}
func (x *Config) GetAuth() *Auth {
if x != nil {
return x.Auth
}
return nil
}
func (x *Config) GetMultihost() *Multihost {
if x != nil {
return x.Multihost
}
return nil
}
type Multihost struct {
state protoimpl.MessageState `protogen:"open.v1"`
Identity *PrivateKey `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"`
KnownHosts []*Multihost_Peer `protobuf:"bytes,2,rep,name=known_hosts,json=knownHosts,proto3" json:"known_hosts,omitempty"`
AuthorizedClients []*Multihost_Peer `protobuf:"bytes,3,rep,name=authorized_clients,json=authorizedClients,proto3" json:"authorized_clients,omitempty"`
PairingTokens []*Multihost_PairingToken `protobuf:"bytes,4,rep,name=pairing_tokens,json=pairingTokens,proto3" json:"pairing_tokens,omitempty"` // active pairing tokens generated by this instance (server-side only)
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Multihost) Reset() {
*x = Multihost{}
mi := &file_v1_config_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Multihost) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Multihost) ProtoMessage() {}
func (x *Multihost) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Multihost.ProtoReflect.Descriptor instead.
func (*Multihost) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{1}
}
func (x *Multihost) GetIdentity() *PrivateKey {
if x != nil {
return x.Identity
}
return nil
}
func (x *Multihost) GetKnownHosts() []*Multihost_Peer {
if x != nil {
return x.KnownHosts
}
return nil
}
func (x *Multihost) GetAuthorizedClients() []*Multihost_Peer {
if x != nil {
return x.AuthorizedClients
}
return nil
}
func (x *Multihost) GetPairingTokens() []*Multihost_PairingToken {
if x != nil {
return x.PairingTokens
}
return nil
}
type Repo struct {
state protoimpl.MessageState `protogen:"open.v1"`
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // unique but human readable ID for this repo.
Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` // URI of the repo.
Guid string `protobuf:"bytes,11,opt,name=guid,proto3" json:"guid,omitempty"` // a globally unique ID for this repo. Should be derived as the 'id' field in `restic cat config --json`.
Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` // plaintext password
Env []string `protobuf:"bytes,4,rep,name=env,proto3" json:"env,omitempty"` // extra environment variables to set for restic.
Flags []string `protobuf:"bytes,5,rep,name=flags,proto3" json:"flags,omitempty"` // extra flags set on the restic command.
PrunePolicy *PrunePolicy `protobuf:"bytes,6,opt,name=prune_policy,json=prunePolicy,proto3" json:"prune_policy,omitempty"` // policy for when to run prune.
CheckPolicy *CheckPolicy `protobuf:"bytes,9,opt,name=check_policy,json=checkPolicy,proto3" json:"check_policy,omitempty"` // policy for when to run check.
Hooks []*Hook `protobuf:"bytes,7,rep,name=hooks,proto3" json:"hooks,omitempty"` // hooks to run on events for this repo.
AutoUnlock bool `protobuf:"varint,8,opt,name=auto_unlock,json=autoUnlock,proto3" json:"auto_unlock,omitempty"` // automatically unlock the repo when needed.
AutoInitialize bool `protobuf:"varint,12,opt,name=auto_initialize,json=autoInitialize,proto3" json:"auto_initialize,omitempty"` // whether the repo should be auto-initialized if not found.
CommandPrefix *CommandPrefix `protobuf:"bytes,10,opt,name=command_prefix,json=commandPrefix,proto3" json:"command_prefix,omitempty"` // modifiers for the restic commands
Shared bool `protobuf:"varint,13,opt,name=shared,proto3" json:"shared,omitempty"` // if true, this repo is pushed to all authorized clients with read-config permission
OriginInstanceId string `protobuf:"bytes,14,opt,name=origin_instance_id,json=originInstanceId,proto3" json:"origin_instance_id,omitempty"` // set when this repo was pushed from a remote instance; marks it as non-editable
ForgetPolicy *ForgetPolicy `protobuf:"bytes,15,opt,name=forget_policy,json=forgetPolicy,proto3" json:"forget_policy,omitempty"` // optional repo-level forget policy. If set, overrides per-plan retention policies.
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Repo) Reset() {
*x = Repo{}
mi := &file_v1_config_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Repo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Repo) ProtoMessage() {}
func (x *Repo) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Repo.ProtoReflect.Descriptor instead.
func (*Repo) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{2}
}
func (x *Repo) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *Repo) GetUri() string {
if x != nil {
return x.Uri
}
return ""
}
func (x *Repo) GetGuid() string {
if x != nil {
return x.Guid
}
return ""
}
func (x *Repo) GetPassword() string {
if x != nil {
return x.Password
}
return ""
}
func (x *Repo) GetEnv() []string {
if x != nil {
return x.Env
}
return nil
}
func (x *Repo) GetFlags() []string {
if x != nil {
return x.Flags
}
return nil
}
func (x *Repo) GetPrunePolicy() *PrunePolicy {
if x != nil {
return x.PrunePolicy
}
return nil
}
func (x *Repo) GetCheckPolicy() *CheckPolicy {
if x != nil {
return x.CheckPolicy
}
return nil
}
func (x *Repo) GetHooks() []*Hook {
if x != nil {
return x.Hooks
}
return nil
}
func (x *Repo) GetAutoUnlock() bool {
if x != nil {
return x.AutoUnlock
}
return false
}
func (x *Repo) GetAutoInitialize() bool {
if x != nil {
return x.AutoInitialize
}
return false
}
func (x *Repo) GetCommandPrefix() *CommandPrefix {
if x != nil {
return x.CommandPrefix
}
return nil
}
func (x *Repo) GetShared() bool {
if x != nil {
return x.Shared
}
return false
}
func (x *Repo) GetOriginInstanceId() string {
if x != nil {
return x.OriginInstanceId
}
return ""
}
func (x *Repo) GetForgetPolicy() *ForgetPolicy {
if x != nil {
return x.ForgetPolicy
}
return nil
}
type Plan struct {
state protoimpl.MessageState `protogen:"open.v1"`
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // unique but human readable ID for this plan.
Repo string `protobuf:"bytes,2,opt,name=repo,proto3" json:"repo,omitempty"` // ID of the repo to use.
Paths []string `protobuf:"bytes,4,rep,name=paths,proto3" json:"paths,omitempty"` // paths to include in the backup.
Excludes []string `protobuf:"bytes,5,rep,name=excludes,proto3" json:"excludes,omitempty"` // glob patterns to exclude.
Iexcludes []string `protobuf:"bytes,9,rep,name=iexcludes,proto3" json:"iexcludes,omitempty"` // case insensitive glob patterns to exclude.
Schedule *Schedule `protobuf:"bytes,12,opt,name=schedule,proto3" json:"schedule,omitempty"` // schedule for the backup.
Retention *RetentionPolicy `protobuf:"bytes,7,opt,name=retention,proto3" json:"retention,omitempty"` // retention policy for snapshots.
Hooks []*Hook `protobuf:"bytes,8,rep,name=hooks,proto3" json:"hooks,omitempty"` // hooks to run on events for this plan.
BackupFlags []string `protobuf:"bytes,10,rep,name=backup_flags,proto3" json:"backup_flags,omitempty"` // extra flags to set when running a backup command.
SkipIfUnchanged bool `protobuf:"varint,13,opt,name=skip_if_unchanged,json=skipIfUnchanged,proto3" json:"skip_if_unchanged,omitempty"` // skip the backup if no changes are detected.
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Plan) Reset() {
*x = Plan{}
mi := &file_v1_config_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Plan) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Plan) ProtoMessage() {}
func (x *Plan) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Plan.ProtoReflect.Descriptor instead.
func (*Plan) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{3}
}
func (x *Plan) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *Plan) GetRepo() string {
if x != nil {
return x.Repo
}
return ""
}
func (x *Plan) GetPaths() []string {
if x != nil {
return x.Paths
}
return nil
}
func (x *Plan) GetExcludes() []string {
if x != nil {
return x.Excludes
}
return nil
}
func (x *Plan) GetIexcludes() []string {
if x != nil {
return x.Iexcludes
}
return nil
}
func (x *Plan) GetSchedule() *Schedule {
if x != nil {
return x.Schedule
}
return nil
}
func (x *Plan) GetRetention() *RetentionPolicy {
if x != nil {
return x.Retention
}
return nil
}
func (x *Plan) GetHooks() []*Hook {
if x != nil {
return x.Hooks
}
return nil
}
func (x *Plan) GetBackupFlags() []string {
if x != nil {
return x.BackupFlags
}
return nil
}
func (x *Plan) GetSkipIfUnchanged() bool {
if x != nil {
return x.SkipIfUnchanged
}
return false
}
type CommandPrefix struct {
state protoimpl.MessageState `protogen:"open.v1"`
IoNice CommandPrefix_IONiceLevel `protobuf:"varint,1,opt,name=io_nice,json=ioNice,proto3,enum=v1.CommandPrefix_IONiceLevel" json:"io_nice,omitempty"` // ionice level to set.
CpuNice CommandPrefix_CPUNiceLevel `protobuf:"varint,2,opt,name=cpu_nice,json=cpuNice,proto3,enum=v1.CommandPrefix_CPUNiceLevel" json:"cpu_nice,omitempty"` // nice level to set.
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CommandPrefix) Reset() {
*x = CommandPrefix{}
mi := &file_v1_config_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CommandPrefix) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CommandPrefix) ProtoMessage() {}
func (x *CommandPrefix) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CommandPrefix.ProtoReflect.Descriptor instead.
func (*CommandPrefix) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{4}
}
func (x *CommandPrefix) GetIoNice() CommandPrefix_IONiceLevel {
if x != nil {
return x.IoNice
}
return CommandPrefix_IO_DEFAULT
}
func (x *CommandPrefix) GetCpuNice() CommandPrefix_CPUNiceLevel {
if x != nil {
return x.CpuNice
}
return CommandPrefix_CPU_DEFAULT
}
type RetentionPolicy struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Types that are valid to be assigned to Policy:
//
// *RetentionPolicy_PolicyKeepLastN
// *RetentionPolicy_PolicyTimeBucketed
// *RetentionPolicy_PolicyKeepAll
Policy isRetentionPolicy_Policy `protobuf_oneof:"policy"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *RetentionPolicy) Reset() {
*x = RetentionPolicy{}
mi := &file_v1_config_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RetentionPolicy) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RetentionPolicy) ProtoMessage() {}
func (x *RetentionPolicy) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RetentionPolicy.ProtoReflect.Descriptor instead.
func (*RetentionPolicy) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{5}
}
func (x *RetentionPolicy) GetPolicy() isRetentionPolicy_Policy {
if x != nil {
return x.Policy
}
return nil
}
func (x *RetentionPolicy) GetPolicyKeepLastN() int32 {
if x != nil {
if x, ok := x.Policy.(*RetentionPolicy_PolicyKeepLastN); ok {
return x.PolicyKeepLastN
}
}
return 0
}
func (x *RetentionPolicy) GetPolicyTimeBucketed() *RetentionPolicy_TimeBucketedCounts {
if x != nil {
if x, ok := x.Policy.(*RetentionPolicy_PolicyTimeBucketed); ok {
return x.PolicyTimeBucketed
}
}
return nil
}
func (x *RetentionPolicy) GetPolicyKeepAll() bool {
if x != nil {
if x, ok := x.Policy.(*RetentionPolicy_PolicyKeepAll); ok {
return x.PolicyKeepAll
}
}
return false
}
type isRetentionPolicy_Policy interface {
isRetentionPolicy_Policy()
}
type RetentionPolicy_PolicyKeepLastN struct {
PolicyKeepLastN int32 `protobuf:"varint,10,opt,name=policy_keep_last_n,json=policyKeepLastN,proto3,oneof"`
}
type RetentionPolicy_PolicyTimeBucketed struct {
PolicyTimeBucketed *RetentionPolicy_TimeBucketedCounts `protobuf:"bytes,11,opt,name=policy_time_bucketed,json=policyTimeBucketed,proto3,oneof"`
}
type RetentionPolicy_PolicyKeepAll struct {
PolicyKeepAll bool `protobuf:"varint,12,opt,name=policy_keep_all,json=policyKeepAll,proto3,oneof"`
}
func (*RetentionPolicy_PolicyKeepLastN) isRetentionPolicy_Policy() {}
func (*RetentionPolicy_PolicyTimeBucketed) isRetentionPolicy_Policy() {}
func (*RetentionPolicy_PolicyKeepAll) isRetentionPolicy_Policy() {}
type ForgetPolicy struct {
state protoimpl.MessageState `protogen:"open.v1"`
Schedule *Schedule `protobuf:"bytes,1,opt,name=schedule,proto3" json:"schedule,omitempty"`
Retention *RetentionPolicy `protobuf:"bytes,2,opt,name=retention,proto3" json:"retention,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ForgetPolicy) Reset() {
*x = ForgetPolicy{}
mi := &file_v1_config_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ForgetPolicy) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ForgetPolicy) ProtoMessage() {}
func (x *ForgetPolicy) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ForgetPolicy.ProtoReflect.Descriptor instead.
func (*ForgetPolicy) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{6}
}
func (x *ForgetPolicy) GetSchedule() *Schedule {
if x != nil {
return x.Schedule
}
return nil
}
func (x *ForgetPolicy) GetRetention() *RetentionPolicy {
if x != nil {
return x.Retention
}
return nil
}
type PrunePolicy struct {
state protoimpl.MessageState `protogen:"open.v1"`
Schedule *Schedule `protobuf:"bytes,2,opt,name=schedule,proto3" json:"schedule,omitempty"`
MaxUnusedBytes int64 `protobuf:"varint,3,opt,name=max_unused_bytes,json=maxUnusedBytes,proto3" json:"max_unused_bytes,omitempty"` // max unused bytes before running prune.
MaxUnusedPercent float64 `protobuf:"fixed64,4,opt,name=max_unused_percent,json=maxUnusedPercent,proto3" json:"max_unused_percent,omitempty"` // max unused percent before running prune.
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *PrunePolicy) Reset() {
*x = PrunePolicy{}
mi := &file_v1_config_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *PrunePolicy) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PrunePolicy) ProtoMessage() {}
func (x *PrunePolicy) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[7]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PrunePolicy.ProtoReflect.Descriptor instead.
func (*PrunePolicy) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{7}
}
func (x *PrunePolicy) GetSchedule() *Schedule {
if x != nil {
return x.Schedule
}
return nil
}
func (x *PrunePolicy) GetMaxUnusedBytes() int64 {
if x != nil {
return x.MaxUnusedBytes
}
return 0
}
func (x *PrunePolicy) GetMaxUnusedPercent() float64 {
if x != nil {
return x.MaxUnusedPercent
}
return 0
}
type CheckPolicy struct {
state protoimpl.MessageState `protogen:"open.v1"`
Schedule *Schedule `protobuf:"bytes,1,opt,name=schedule,proto3" json:"schedule,omitempty"`
// Types that are valid to be assigned to Mode:
//
// *CheckPolicy_StructureOnly
// *CheckPolicy_ReadDataSubsetPercent
Mode isCheckPolicy_Mode `protobuf_oneof:"mode"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CheckPolicy) Reset() {
*x = CheckPolicy{}
mi := &file_v1_config_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CheckPolicy) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CheckPolicy) ProtoMessage() {}
func (x *CheckPolicy) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[8]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CheckPolicy.ProtoReflect.Descriptor instead.
func (*CheckPolicy) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{8}
}
func (x *CheckPolicy) GetSchedule() *Schedule {
if x != nil {
return x.Schedule
}
return nil
}
func (x *CheckPolicy) GetMode() isCheckPolicy_Mode {
if x != nil {
return x.Mode
}
return nil
}
func (x *CheckPolicy) GetStructureOnly() bool {
if x != nil {
if x, ok := x.Mode.(*CheckPolicy_StructureOnly); ok {
return x.StructureOnly
}
}
return false
}
func (x *CheckPolicy) GetReadDataSubsetPercent() float64 {
if x != nil {
if x, ok := x.Mode.(*CheckPolicy_ReadDataSubsetPercent); ok {
return x.ReadDataSubsetPercent
}
}
return 0
}
type isCheckPolicy_Mode interface {
isCheckPolicy_Mode()
}
type CheckPolicy_StructureOnly struct {
StructureOnly bool `protobuf:"varint,100,opt,name=structure_only,json=structureOnly,proto3,oneof"` // only check the structure of the repo. No pack data is read.
}
type CheckPolicy_ReadDataSubsetPercent struct {
ReadDataSubsetPercent float64 `protobuf:"fixed64,101,opt,name=read_data_subset_percent,json=readDataSubsetPercent,proto3,oneof"` // check a percentage of pack data.
}
func (*CheckPolicy_StructureOnly) isCheckPolicy_Mode() {}
func (*CheckPolicy_ReadDataSubsetPercent) isCheckPolicy_Mode() {}
type Schedule struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Types that are valid to be assigned to Schedule:
//
// *Schedule_Disabled
// *Schedule_Cron
// *Schedule_MaxFrequencyDays
// *Schedule_MaxFrequencyHours
Schedule isSchedule_Schedule `protobuf_oneof:"schedule"`
Clock Schedule_Clock `protobuf:"varint,5,opt,name=clock,proto3,enum=v1.Schedule_Clock" json:"clock,omitempty"` // clock to use for scheduling.
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Schedule) Reset() {
*x = Schedule{}
mi := &file_v1_config_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Schedule) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Schedule) ProtoMessage() {}
func (x *Schedule) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[9]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Schedule.ProtoReflect.Descriptor instead.
func (*Schedule) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{9}
}
func (x *Schedule) GetSchedule() isSchedule_Schedule {
if x != nil {
return x.Schedule
}
return nil
}
func (x *Schedule) GetDisabled() bool {
if x != nil {
if x, ok := x.Schedule.(*Schedule_Disabled); ok {
return x.Disabled
}
}
return false
}
func (x *Schedule) GetCron() string {
if x != nil {
if x, ok := x.Schedule.(*Schedule_Cron); ok {
return x.Cron
}
}
return ""
}
func (x *Schedule) GetMaxFrequencyDays() int32 {
if x != nil {
if x, ok := x.Schedule.(*Schedule_MaxFrequencyDays); ok {
return x.MaxFrequencyDays
}
}
return 0
}
func (x *Schedule) GetMaxFrequencyHours() int32 {
if x != nil {
if x, ok := x.Schedule.(*Schedule_MaxFrequencyHours); ok {
return x.MaxFrequencyHours
}
}
return 0
}
func (x *Schedule) GetClock() Schedule_Clock {
if x != nil {
return x.Clock
}
return Schedule_CLOCK_DEFAULT
}
type isSchedule_Schedule interface {
isSchedule_Schedule()
}
type Schedule_Disabled struct {
Disabled bool `protobuf:"varint,1,opt,name=disabled,proto3,oneof"` // disable the schedule.
}
type Schedule_Cron struct {
Cron string `protobuf:"bytes,2,opt,name=cron,proto3,oneof"` // cron expression describing the schedule.
}
type Schedule_MaxFrequencyDays struct {
MaxFrequencyDays int32 `protobuf:"varint,3,opt,name=maxFrequencyDays,proto3,oneof"` // max frequency of runs in days.
}
type Schedule_MaxFrequencyHours struct {
MaxFrequencyHours int32 `protobuf:"varint,4,opt,name=maxFrequencyHours,proto3,oneof"` // max frequency of runs in hours.
}
func (*Schedule_Disabled) isSchedule_Schedule() {}
func (*Schedule_Cron) isSchedule_Schedule() {}
func (*Schedule_MaxFrequencyDays) isSchedule_Schedule() {}
func (*Schedule_MaxFrequencyHours) isSchedule_Schedule() {}
type Hook struct {
state protoimpl.MessageState `protogen:"open.v1"`
Conditions []Hook_Condition `protobuf:"varint,1,rep,packed,name=conditions,proto3,enum=v1.Hook_Condition" json:"conditions,omitempty"`
OnError Hook_OnError `protobuf:"varint,2,opt,name=on_error,json=onError,proto3,enum=v1.Hook_OnError" json:"on_error,omitempty"`
// Types that are valid to be assigned to Action:
//
// *Hook_ActionCommand
// *Hook_ActionWebhook
// *Hook_ActionDiscord
// *Hook_ActionGotify
// *Hook_ActionSlack
// *Hook_ActionShoutrrr
// *Hook_ActionHealthchecks
// *Hook_ActionTelegram
Action isHook_Action `protobuf_oneof:"action"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Hook) Reset() {
*x = Hook{}
mi := &file_v1_config_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Hook) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Hook) ProtoMessage() {}
func (x *Hook) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[10]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Hook.ProtoReflect.Descriptor instead.
func (*Hook) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{10}
}
func (x *Hook) GetConditions() []Hook_Condition {
if x != nil {
return x.Conditions
}
return nil
}
func (x *Hook) GetOnError() Hook_OnError {
if x != nil {
return x.OnError
}
return Hook_ON_ERROR_IGNORE
}
func (x *Hook) GetAction() isHook_Action {
if x != nil {
return x.Action
}
return nil
}
func (x *Hook) GetActionCommand() *Hook_Command {
if x != nil {
if x, ok := x.Action.(*Hook_ActionCommand); ok {
return x.ActionCommand
}
}
return nil
}
func (x *Hook) GetActionWebhook() *Hook_Webhook {
if x != nil {
if x, ok := x.Action.(*Hook_ActionWebhook); ok {
return x.ActionWebhook
}
}
return nil
}
func (x *Hook) GetActionDiscord() *Hook_Discord {
if x != nil {
if x, ok := x.Action.(*Hook_ActionDiscord); ok {
return x.ActionDiscord
}
}
return nil
}
func (x *Hook) GetActionGotify() *Hook_Gotify {
if x != nil {
if x, ok := x.Action.(*Hook_ActionGotify); ok {
return x.ActionGotify
}
}
return nil
}
func (x *Hook) GetActionSlack() *Hook_Slack {
if x != nil {
if x, ok := x.Action.(*Hook_ActionSlack); ok {
return x.ActionSlack
}
}
return nil
}
func (x *Hook) GetActionShoutrrr() *Hook_Shoutrrr {
if x != nil {
if x, ok := x.Action.(*Hook_ActionShoutrrr); ok {
return x.ActionShoutrrr
}
}
return nil
}
func (x *Hook) GetActionHealthchecks() *Hook_Healthchecks {
if x != nil {
if x, ok := x.Action.(*Hook_ActionHealthchecks); ok {
return x.ActionHealthchecks
}
}
return nil
}
func (x *Hook) GetActionTelegram() *Hook_Telegram {
if x != nil {
if x, ok := x.Action.(*Hook_ActionTelegram); ok {
return x.ActionTelegram
}
}
return nil
}
type isHook_Action interface {
isHook_Action()
}
type Hook_ActionCommand struct {
ActionCommand *Hook_Command `protobuf:"bytes,100,opt,name=action_command,json=actionCommand,proto3,oneof"`
}
type Hook_ActionWebhook struct {
ActionWebhook *Hook_Webhook `protobuf:"bytes,101,opt,name=action_webhook,json=actionWebhook,proto3,oneof"`
}
type Hook_ActionDiscord struct {
ActionDiscord *Hook_Discord `protobuf:"bytes,102,opt,name=action_discord,json=actionDiscord,proto3,oneof"`
}
type Hook_ActionGotify struct {
ActionGotify *Hook_Gotify `protobuf:"bytes,103,opt,name=action_gotify,json=actionGotify,proto3,oneof"`
}
type Hook_ActionSlack struct {
ActionSlack *Hook_Slack `protobuf:"bytes,104,opt,name=action_slack,json=actionSlack,proto3,oneof"`
}
type Hook_ActionShoutrrr struct {
ActionShoutrrr *Hook_Shoutrrr `protobuf:"bytes,105,opt,name=action_shoutrrr,json=actionShoutrrr,proto3,oneof"`
}
type Hook_ActionHealthchecks struct {
ActionHealthchecks *Hook_Healthchecks `protobuf:"bytes,106,opt,name=action_healthchecks,json=actionHealthchecks,proto3,oneof"`
}
type Hook_ActionTelegram struct {
ActionTelegram *Hook_Telegram `protobuf:"bytes,107,opt,name=action_telegram,json=actionTelegram,proto3,oneof"`
}
func (*Hook_ActionCommand) isHook_Action() {}
func (*Hook_ActionWebhook) isHook_Action() {}
func (*Hook_ActionDiscord) isHook_Action() {}
func (*Hook_ActionGotify) isHook_Action() {}
func (*Hook_ActionSlack) isHook_Action() {}
func (*Hook_ActionShoutrrr) isHook_Action() {}
func (*Hook_ActionHealthchecks) isHook_Action() {}
func (*Hook_ActionTelegram) isHook_Action() {}
type Auth struct {
state protoimpl.MessageState `protogen:"open.v1"`
Disabled bool `protobuf:"varint,1,opt,name=disabled,proto3" json:"disabled,omitempty"` // disable authentication.
Users []*User `protobuf:"bytes,2,rep,name=users,proto3" json:"users,omitempty"` // users to allow access to the UI.
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Auth) Reset() {
*x = Auth{}
mi := &file_v1_config_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Auth) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Auth) ProtoMessage() {}
func (x *Auth) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[11]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Auth.ProtoReflect.Descriptor instead.
func (*Auth) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{11}
}
func (x *Auth) GetDisabled() bool {
if x != nil {
return x.Disabled
}
return false
}
func (x *Auth) GetUsers() []*User {
if x != nil {
return x.Users
}
return nil
}
type User struct {
state protoimpl.MessageState `protogen:"open.v1"`
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Types that are valid to be assigned to Password:
//
// *User_PasswordBcrypt
Password isUser_Password `protobuf_oneof:"password"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *User) Reset() {
*x = User{}
mi := &file_v1_config_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *User) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*User) ProtoMessage() {}
func (x *User) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[12]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use User.ProtoReflect.Descriptor instead.
func (*User) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{12}
}
func (x *User) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *User) GetPassword() isUser_Password {
if x != nil {
return x.Password
}
return nil
}
func (x *User) GetPasswordBcrypt() string {
if x != nil {
if x, ok := x.Password.(*User_PasswordBcrypt); ok {
return x.PasswordBcrypt
}
}
return ""
}
type isUser_Password interface {
isUser_Password()
}
type User_PasswordBcrypt struct {
PasswordBcrypt string `protobuf:"bytes,2,opt,name=password_bcrypt,json=passwordBcrypt,proto3,oneof"`
}
func (*User_PasswordBcrypt) isUser_Password() {}
type Multihost_Peer struct {
state protoimpl.MessageState `protogen:"open.v1"`
InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` // a human readable name for the peer, typically the same as its instance ID.
Keyid string `protobuf:"bytes,2,opt,name=keyid,json=keyId,proto3" json:"keyid,omitempty"` // the key ID of the peer. This must match the sha256 of the public key the client provides in handshake.
Permissions []*Multihost_Permission `protobuf:"bytes,5,rep,name=permissions,proto3" json:"permissions,omitempty"` // permissions granted to this peer.
// Known host only fields
InstanceUrl string `protobuf:"bytes,4,opt,name=instance_url,json=instanceUrl,proto3" json:"instance_url,omitempty"` // instance URL, required for a known host. Otherwise meaningless.
InitialPairingSecret string `protobuf:"bytes,6,opt,name=initial_pairing_secret,json=initialPairingSecret,proto3" json:"initial_pairing_secret,omitempty"` // one-time pairing secret sent during first handshake to auto-authorize with the server. Cleared after successful pairing.
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Multihost_Peer) Reset() {
*x = Multihost_Peer{}
mi := &file_v1_config_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Multihost_Peer) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Multihost_Peer) ProtoMessage() {}
func (x *Multihost_Peer) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[13]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Multihost_Peer.ProtoReflect.Descriptor instead.
func (*Multihost_Peer) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{1, 0}
}
func (x *Multihost_Peer) GetInstanceId() string {
if x != nil {
return x.InstanceId
}
return ""
}
func (x *Multihost_Peer) GetKeyid() string {
if x != nil {
return x.Keyid
}
return ""
}
func (x *Multihost_Peer) GetPermissions() []*Multihost_Permission {
if x != nil {
return x.Permissions
}
return nil
}
func (x *Multihost_Peer) GetInstanceUrl() string {
if x != nil {
return x.InstanceUrl
}
return ""
}
func (x *Multihost_Peer) GetInitialPairingSecret() string {
if x != nil {
return x.InitialPairingSecret
}
return ""
}
type Multihost_PairingToken struct {
state protoimpl.MessageState `protogen:"open.v1"`
Secret string `protobuf:"bytes,1,opt,name=secret,proto3" json:"secret,omitempty"` // the one-time secret used to validate the pairing request
Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` // human-readable label for this token
CreatedAtUnix int64 `protobuf:"varint,3,opt,name=created_at_unix,json=createdAtUnix,proto3" json:"created_at_unix,omitempty"` // unix timestamp when the token was created
ExpiresAtUnix int64 `protobuf:"varint,4,opt,name=expires_at_unix,json=expiresAtUnix,proto3" json:"expires_at_unix,omitempty"` // unix timestamp when the token expires
MaxUses int32 `protobuf:"varint,5,opt,name=max_uses,json=maxUses,proto3" json:"max_uses,omitempty"` // maximum number of clients that can pair with this token, 0 means unlimited
Uses int32 `protobuf:"varint,6,opt,name=uses,proto3" json:"uses,omitempty"` // number of times this token has been used
Permissions []*Multihost_Permission `protobuf:"bytes,7,rep,name=permissions,proto3" json:"permissions,omitempty"` // permissions granted to clients that pair with this token
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Multihost_PairingToken) Reset() {
*x = Multihost_PairingToken{}
mi := &file_v1_config_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Multihost_PairingToken) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Multihost_PairingToken) ProtoMessage() {}
func (x *Multihost_PairingToken) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[14]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Multihost_PairingToken.ProtoReflect.Descriptor instead.
func (*Multihost_PairingToken) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{1, 1}
}
func (x *Multihost_PairingToken) GetSecret() string {
if x != nil {
return x.Secret
}
return ""
}
func (x *Multihost_PairingToken) GetLabel() string {
if x != nil {
return x.Label
}
return ""
}
func (x *Multihost_PairingToken) GetCreatedAtUnix() int64 {
if x != nil {
return x.CreatedAtUnix
}
return 0
}
func (x *Multihost_PairingToken) GetExpiresAtUnix() int64 {
if x != nil {
return x.ExpiresAtUnix
}
return 0
}
func (x *Multihost_PairingToken) GetMaxUses() int32 {
if x != nil {
return x.MaxUses
}
return 0
}
func (x *Multihost_PairingToken) GetUses() int32 {
if x != nil {
return x.Uses
}
return 0
}
func (x *Multihost_PairingToken) GetPermissions() []*Multihost_Permission {
if x != nil {
return x.Permissions
}
return nil
}
type Multihost_Permission struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Scopes are any of '*', 'repo:<repo_id>' or 'plan:<plan_id>','-repo:<repo_id>','-plan:<plan_id>'.
// '*' means all repos and plans, 'repo:<repo_id>' means the repo with the given ID, 'plan:<plan_id>' means the plan with the given ID.
// '!repo:<repo_id>' means all repos except the one with the given ID, '!plan:<plan_id>' means all plans except the one with the given ID.
Type Multihost_Permission_Type `protobuf:"varint,1,opt,name=type,proto3,enum=v1.Multihost_Permission_Type" json:"type,omitempty"`
Scopes []string `protobuf:"bytes,2,rep,name=scopes,proto3" json:"scopes,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Multihost_Permission) Reset() {
*x = Multihost_Permission{}
mi := &file_v1_config_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Multihost_Permission) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Multihost_Permission) ProtoMessage() {}
func (x *Multihost_Permission) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[15]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Multihost_Permission.ProtoReflect.Descriptor instead.
func (*Multihost_Permission) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{1, 2}
}
func (x *Multihost_Permission) GetType() Multihost_Permission_Type {
if x != nil {
return x.Type
}
return Multihost_Permission_PERMISSION_UNKNOWN
}
func (x *Multihost_Permission) GetScopes() []string {
if x != nil {
return x.Scopes
}
return nil
}
type RetentionPolicy_TimeBucketedCounts struct {
state protoimpl.MessageState `protogen:"open.v1"`
Hourly int32 `protobuf:"varint,1,opt,name=hourly,proto3" json:"hourly,omitempty"` // keep the last n hourly snapshots.
Daily int32 `protobuf:"varint,2,opt,name=daily,proto3" json:"daily,omitempty"` // keep the last n daily snapshots.
Weekly int32 `protobuf:"varint,3,opt,name=weekly,proto3" json:"weekly,omitempty"` // keep the last n weekly snapshots.
Monthly int32 `protobuf:"varint,4,opt,name=monthly,proto3" json:"monthly,omitempty"` // keep the last n monthly snapshots.
Yearly int32 `protobuf:"varint,5,opt,name=yearly,proto3" json:"yearly,omitempty"` // keep the last n yearly snapshots.
KeepLastN int32 `protobuf:"varint,6,opt,name=keep_last_n,json=keepLastN,proto3" json:"keep_last_n,omitempty"` // keep the last n snapshots regardless of age.
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *RetentionPolicy_TimeBucketedCounts) Reset() {
*x = RetentionPolicy_TimeBucketedCounts{}
mi := &file_v1_config_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RetentionPolicy_TimeBucketedCounts) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RetentionPolicy_TimeBucketedCounts) ProtoMessage() {}
func (x *RetentionPolicy_TimeBucketedCounts) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[16]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RetentionPolicy_TimeBucketedCounts.ProtoReflect.Descriptor instead.
func (*RetentionPolicy_TimeBucketedCounts) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{5, 0}
}
func (x *RetentionPolicy_TimeBucketedCounts) GetHourly() int32 {
if x != nil {
return x.Hourly
}
return 0
}
func (x *RetentionPolicy_TimeBucketedCounts) GetDaily() int32 {
if x != nil {
return x.Daily
}
return 0
}
func (x *RetentionPolicy_TimeBucketedCounts) GetWeekly() int32 {
if x != nil {
return x.Weekly
}
return 0
}
func (x *RetentionPolicy_TimeBucketedCounts) GetMonthly() int32 {
if x != nil {
return x.Monthly
}
return 0
}
func (x *RetentionPolicy_TimeBucketedCounts) GetYearly() int32 {
if x != nil {
return x.Yearly
}
return 0
}
func (x *RetentionPolicy_TimeBucketedCounts) GetKeepLastN() int32 {
if x != nil {
return x.KeepLastN
}
return 0
}
type Hook_Command struct {
state protoimpl.MessageState `protogen:"open.v1"`
Command string `protobuf:"bytes,1,opt,name=command,proto3" json:"command,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Hook_Command) Reset() {
*x = Hook_Command{}
mi := &file_v1_config_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Hook_Command) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Hook_Command) ProtoMessage() {}
func (x *Hook_Command) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[17]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Hook_Command.ProtoReflect.Descriptor instead.
func (*Hook_Command) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{10, 0}
}
func (x *Hook_Command) GetCommand() string {
if x != nil {
return x.Command
}
return ""
}
type Hook_Webhook struct {
state protoimpl.MessageState `protogen:"open.v1"`
WebhookUrl string `protobuf:"bytes,1,opt,name=webhook_url,json=webhookUrl,proto3" json:"webhook_url,omitempty"`
Method Hook_Webhook_Method `protobuf:"varint,2,opt,name=method,proto3,enum=v1.Hook_Webhook_Method" json:"method,omitempty"`
Template string `protobuf:"bytes,100,opt,name=template,proto3" json:"template,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Hook_Webhook) Reset() {
*x = Hook_Webhook{}
mi := &file_v1_config_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Hook_Webhook) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Hook_Webhook) ProtoMessage() {}
func (x *Hook_Webhook) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[18]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Hook_Webhook.ProtoReflect.Descriptor instead.
func (*Hook_Webhook) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{10, 1}
}
func (x *Hook_Webhook) GetWebhookUrl() string {
if x != nil {
return x.WebhookUrl
}
return ""
}
func (x *Hook_Webhook) GetMethod() Hook_Webhook_Method {
if x != nil {
return x.Method
}
return Hook_Webhook_UNKNOWN
}
func (x *Hook_Webhook) GetTemplate() string {
if x != nil {
return x.Template
}
return ""
}
type Hook_Discord struct {
state protoimpl.MessageState `protogen:"open.v1"`
WebhookUrl string `protobuf:"bytes,1,opt,name=webhook_url,json=webhookUrl,proto3" json:"webhook_url,omitempty"`
Template string `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` // template for the webhook payload.
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Hook_Discord) Reset() {
*x = Hook_Discord{}
mi := &file_v1_config_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Hook_Discord) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Hook_Discord) ProtoMessage() {}
func (x *Hook_Discord) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[19]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Hook_Discord.ProtoReflect.Descriptor instead.
func (*Hook_Discord) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{10, 2}
}
func (x *Hook_Discord) GetWebhookUrl() string {
if x != nil {
return x.WebhookUrl
}
return ""
}
func (x *Hook_Discord) GetTemplate() string {
if x != nil {
return x.Template
}
return ""
}
type Hook_Gotify struct {
state protoimpl.MessageState `protogen:"open.v1"`
BaseUrl string `protobuf:"bytes,1,opt,name=base_url,json=baseUrl,proto3" json:"base_url,omitempty"`
Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"`
Template string `protobuf:"bytes,100,opt,name=template,proto3" json:"template,omitempty"` // template for the webhook payload.
TitleTemplate string `protobuf:"bytes,101,opt,name=title_template,json=titleTemplate,proto3" json:"title_template,omitempty"` // template for the webhook title.
Priority int32 `protobuf:"varint,102,opt,name=priority,proto3" json:"priority,omitempty"` // priority level for the notification (1-10)
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Hook_Gotify) Reset() {
*x = Hook_Gotify{}
mi := &file_v1_config_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Hook_Gotify) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Hook_Gotify) ProtoMessage() {}
func (x *Hook_Gotify) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[20]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Hook_Gotify.ProtoReflect.Descriptor instead.
func (*Hook_Gotify) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{10, 3}
}
func (x *Hook_Gotify) GetBaseUrl() string {
if x != nil {
return x.BaseUrl
}
return ""
}
func (x *Hook_Gotify) GetToken() string {
if x != nil {
return x.Token
}
return ""
}
func (x *Hook_Gotify) GetTemplate() string {
if x != nil {
return x.Template
}
return ""
}
func (x *Hook_Gotify) GetTitleTemplate() string {
if x != nil {
return x.TitleTemplate
}
return ""
}
func (x *Hook_Gotify) GetPriority() int32 {
if x != nil {
return x.Priority
}
return 0
}
type Hook_Slack struct {
state protoimpl.MessageState `protogen:"open.v1"`
WebhookUrl string `protobuf:"bytes,1,opt,name=webhook_url,json=webhookUrl,proto3" json:"webhook_url,omitempty"`
Template string `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` // template for the webhook payload.
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Hook_Slack) Reset() {
*x = Hook_Slack{}
mi := &file_v1_config_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Hook_Slack) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Hook_Slack) ProtoMessage() {}
func (x *Hook_Slack) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[21]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Hook_Slack.ProtoReflect.Descriptor instead.
func (*Hook_Slack) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{10, 4}
}
func (x *Hook_Slack) GetWebhookUrl() string {
if x != nil {
return x.WebhookUrl
}
return ""
}
func (x *Hook_Slack) GetTemplate() string {
if x != nil {
return x.Template
}
return ""
}
type Hook_Shoutrrr struct {
state protoimpl.MessageState `protogen:"open.v1"`
ShoutrrrUrl string `protobuf:"bytes,1,opt,name=shoutrrr_url,json=shoutrrrUrl,proto3" json:"shoutrrr_url,omitempty"`
Template string `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Hook_Shoutrrr) Reset() {
*x = Hook_Shoutrrr{}
mi := &file_v1_config_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Hook_Shoutrrr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Hook_Shoutrrr) ProtoMessage() {}
func (x *Hook_Shoutrrr) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[22]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Hook_Shoutrrr.ProtoReflect.Descriptor instead.
func (*Hook_Shoutrrr) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{10, 5}
}
func (x *Hook_Shoutrrr) GetShoutrrrUrl() string {
if x != nil {
return x.ShoutrrrUrl
}
return ""
}
func (x *Hook_Shoutrrr) GetTemplate() string {
if x != nil {
return x.Template
}
return ""
}
type Hook_Healthchecks struct {
state protoimpl.MessageState `protogen:"open.v1"`
WebhookUrl string `protobuf:"bytes,1,opt,name=webhook_url,json=webhookUrl,proto3" json:"webhook_url,omitempty"`
Template string `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Hook_Healthchecks) Reset() {
*x = Hook_Healthchecks{}
mi := &file_v1_config_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Hook_Healthchecks) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Hook_Healthchecks) ProtoMessage() {}
func (x *Hook_Healthchecks) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[23]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Hook_Healthchecks.ProtoReflect.Descriptor instead.
func (*Hook_Healthchecks) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{10, 6}
}
func (x *Hook_Healthchecks) GetWebhookUrl() string {
if x != nil {
return x.WebhookUrl
}
return ""
}
func (x *Hook_Healthchecks) GetTemplate() string {
if x != nil {
return x.Template
}
return ""
}
type Hook_Telegram struct {
state protoimpl.MessageState `protogen:"open.v1"`
BotToken string `protobuf:"bytes,1,opt,name=bot_token,json=botToken,proto3" json:"bot_token,omitempty"`
ChatId string `protobuf:"bytes,2,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"`
Template string `protobuf:"bytes,3,opt,name=template,proto3" json:"template,omitempty"` // template for the message text.
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Hook_Telegram) Reset() {
*x = Hook_Telegram{}
mi := &file_v1_config_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Hook_Telegram) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Hook_Telegram) ProtoMessage() {}
func (x *Hook_Telegram) ProtoReflect() protoreflect.Message {
mi := &file_v1_config_proto_msgTypes[24]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Hook_Telegram.ProtoReflect.Descriptor instead.
func (*Hook_Telegram) Descriptor() ([]byte, []int) {
return file_v1_config_proto_rawDescGZIP(), []int{10, 7}
}
func (x *Hook_Telegram) GetBotToken() string {
if x != nil {
return x.BotToken
}
return ""
}
func (x *Hook_Telegram) GetChatId() string {
if x != nil {
return x.ChatId
}
return ""
}
func (x *Hook_Telegram) GetTemplate() string {
if x != nil {
return x.Template
}
return ""
}
var File_v1_config_proto protoreflect.FileDescriptor
const file_v1_config_proto_rawDesc = "" +
"\n" +
"\x0fv1/config.proto\x12\x02v1\x1a\x1bgoogle/protobuf/empty.proto\x1a\x0fv1/crypto.proto\"\xda\x01\n" +
"\x06Config\x12\x14\n" +
"\x05modno\x18\x01 \x01(\x05R\x05modno\x12\x18\n" +
"\aversion\x18\x06 \x01(\x05R\aversion\x12\x1a\n" +
"\binstance\x18\x02 \x01(\tR\binstance\x12\x1e\n" +
"\x05repos\x18\x03 \x03(\v2\b.v1.RepoR\x05repos\x12\x1e\n" +
"\x05plans\x18\x04 \x03(\v2\b.v1.PlanR\x05plans\x12\x1c\n" +
"\x04auth\x18\x05 \x01(\v2\b.v1.AuthR\x04auth\x12&\n" +
"\tmultihost\x18\a \x01(\v2\r.v1.MultihostR\x04sync\"\xc5\a\n" +
"\tMultihost\x12*\n" +
"\bidentity\x18\x01 \x01(\v2\x0e.v1.PrivateKeyR\bidentity\x123\n" +
"\vknown_hosts\x18\x02 \x03(\v2\x12.v1.Multihost.PeerR\n" +
"knownHosts\x12A\n" +
"\x12authorized_clients\x18\x03 \x03(\v2\x12.v1.Multihost.PeerR\x11authorizedClients\x12A\n" +
"\x0epairing_tokens\x18\x04 \x03(\v2\x1a.v1.Multihost.PairingTokenR\rpairingTokens\x1a\xd8\x01\n" +
"\x04Peer\x12\x1f\n" +
"\vinstance_id\x18\x01 \x01(\tR\n" +
"instanceId\x12\x14\n" +
"\x05keyid\x18\x02 \x01(\tR\x05keyId\x12:\n" +
"\vpermissions\x18\x05 \x03(\v2\x18.v1.Multihost.PermissionR\vpermissions\x12!\n" +
"\finstance_url\x18\x04 \x01(\tR\vinstanceUrl\x124\n" +
"\x16initial_pairing_secret\x18\x06 \x01(\tR\x14initialPairingSecretJ\x04\b\x03\x10\x04\x1a\xf7\x01\n" +
"\fPairingToken\x12\x16\n" +
"\x06secret\x18\x01 \x01(\tR\x06secret\x12\x14\n" +
"\x05label\x18\x02 \x01(\tR\x05label\x12&\n" +
"\x0fcreated_at_unix\x18\x03 \x01(\x03R\rcreatedAtUnix\x12&\n" +
"\x0fexpires_at_unix\x18\x04 \x01(\x03R\rexpiresAtUnix\x12\x19\n" +
"\bmax_uses\x18\x05 \x01(\x05R\amaxUses\x12\x12\n" +
"\x04uses\x18\x06 \x01(\x05R\x04uses\x12:\n" +
"\vpermissions\x18\a \x03(\v2\x18.v1.Multihost.PermissionR\vpermissions\x1a\xfb\x01\n" +
"\n" +
"Permission\x121\n" +
"\x04type\x18\x01 \x01(\x0e2\x1d.v1.Multihost.Permission.TypeR\x04type\x12\x16\n" +
"\x06scopes\x18\x02 \x03(\tR\x06scopes\"\xa1\x01\n" +
"\x04Type\x12\x16\n" +
"\x12PERMISSION_UNKNOWN\x10\x00\x12\x1e\n" +
"\x1aPERMISSION_READ_OPERATIONS\x10\x01\x12\x1a\n" +
"\x16PERMISSION_READ_CONFIG\x10\x02\x12 \n" +
"\x1cPERMISSION_READ_WRITE_CONFIG\x10\x03\x12#\n" +
"\x1fPERMISSION_RECEIVE_SHARED_REPOS\x10\x04\"\x89\x04\n" +
"\x04Repo\x12\x0e\n" +
"\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n" +
"\x03uri\x18\x02 \x01(\tR\x03uri\x12\x12\n" +
"\x04guid\x18\v \x01(\tR\x04guid\x12\x1a\n" +
"\bpassword\x18\x03 \x01(\tR\bpassword\x12\x10\n" +
"\x03env\x18\x04 \x03(\tR\x03env\x12\x14\n" +
"\x05flags\x18\x05 \x03(\tR\x05flags\x122\n" +
"\fprune_policy\x18\x06 \x01(\v2\x0f.v1.PrunePolicyR\vprunePolicy\x122\n" +
"\fcheck_policy\x18\t \x01(\v2\x0f.v1.CheckPolicyR\vcheckPolicy\x12\x1e\n" +
"\x05hooks\x18\a \x03(\v2\b.v1.HookR\x05hooks\x12\x1f\n" +
"\vauto_unlock\x18\b \x01(\bR\n" +
"autoUnlock\x12'\n" +
"\x0fauto_initialize\x18\f \x01(\bR\x0eautoInitialize\x128\n" +
"\x0ecommand_prefix\x18\n" +
" \x01(\v2\x11.v1.CommandPrefixR\rcommandPrefix\x12\x16\n" +
"\x06shared\x18\r \x01(\bR\x06shared\x12,\n" +
"\x12origin_instance_id\x18\x0e \x01(\tR\x10originInstanceId\x125\n" +
"\rforget_policy\x18\x0f \x01(\v2\x10.v1.ForgetPolicyR\fforgetPolicy\"\xd9\x02\n" +
"\x04Plan\x12\x0e\n" +
"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
"\x04repo\x18\x02 \x01(\tR\x04repo\x12\x14\n" +
"\x05paths\x18\x04 \x03(\tR\x05paths\x12\x1a\n" +
"\bexcludes\x18\x05 \x03(\tR\bexcludes\x12\x1c\n" +
"\tiexcludes\x18\t \x03(\tR\tiexcludes\x12(\n" +
"\bschedule\x18\f \x01(\v2\f.v1.ScheduleR\bschedule\x121\n" +
"\tretention\x18\a \x01(\v2\x13.v1.RetentionPolicyR\tretention\x12\x1e\n" +
"\x05hooks\x18\b \x03(\v2\b.v1.HookR\x05hooks\x12\"\n" +
"\fbackup_flags\x18\n" +
" \x03(\tR\fbackup_flags\x12*\n" +
"\x11skip_if_unchanged\x18\r \x01(\bR\x0fskipIfUnchangedJ\x04\b\x03\x10\x04J\x04\b\x06\x10\aJ\x04\b\v\x10\f\"\x9b\x02\n" +
"\rCommandPrefix\x126\n" +
"\aio_nice\x18\x01 \x01(\x0e2\x1d.v1.CommandPrefix.IONiceLevelR\x06ioNice\x129\n" +
"\bcpu_nice\x18\x02 \x01(\x0e2\x1e.v1.CommandPrefix.CPUNiceLevelR\acpuNice\"[\n" +
"\vIONiceLevel\x12\x0e\n" +
"\n" +
"IO_DEFAULT\x10\x00\x12\x16\n" +
"\x12IO_BEST_EFFORT_LOW\x10\x01\x12\x17\n" +
"\x13IO_BEST_EFFORT_HIGH\x10\x02\x12\v\n" +
"\aIO_IDLE\x10\x03\":\n" +
"\fCPUNiceLevel\x12\x0f\n" +
"\vCPU_DEFAULT\x10\x00\x12\f\n" +
"\bCPU_HIGH\x10\x01\x12\v\n" +
"\aCPU_LOW\x10\x02\"\xff\x02\n" +
"\x0fRetentionPolicy\x12-\n" +
"\x12policy_keep_last_n\x18\n" +
" \x01(\x05H\x00R\x0fpolicyKeepLastN\x12Z\n" +
"\x14policy_time_bucketed\x18\v \x01(\v2&.v1.RetentionPolicy.TimeBucketedCountsH\x00R\x12policyTimeBucketed\x12(\n" +
"\x0fpolicy_keep_all\x18\f \x01(\bH\x00R\rpolicyKeepAll\x1a\xac\x01\n" +
"\x12TimeBucketedCounts\x12\x16\n" +
"\x06hourly\x18\x01 \x01(\x05R\x06hourly\x12\x14\n" +
"\x05daily\x18\x02 \x01(\x05R\x05daily\x12\x16\n" +
"\x06weekly\x18\x03 \x01(\x05R\x06weekly\x12\x18\n" +
"\amonthly\x18\x04 \x01(\x05R\amonthly\x12\x16\n" +
"\x06yearly\x18\x05 \x01(\x05R\x06yearly\x12\x1e\n" +
"\vkeep_last_n\x18\x06 \x01(\x05R\tkeepLastNB\b\n" +
"\x06policy\"k\n" +
"\fForgetPolicy\x12(\n" +
"\bschedule\x18\x01 \x01(\v2\f.v1.ScheduleR\bschedule\x121\n" +
"\tretention\x18\x02 \x01(\v2\x13.v1.RetentionPolicyR\tretention\"\x8f\x01\n" +
"\vPrunePolicy\x12(\n" +
"\bschedule\x18\x02 \x01(\v2\f.v1.ScheduleR\bschedule\x12(\n" +
"\x10max_unused_bytes\x18\x03 \x01(\x03R\x0emaxUnusedBytes\x12,\n" +
"\x12max_unused_percent\x18\x04 \x01(\x01R\x10maxUnusedPercent\"\xa3\x01\n" +
"\vCheckPolicy\x12(\n" +
"\bschedule\x18\x01 \x01(\v2\f.v1.ScheduleR\bschedule\x12'\n" +
"\x0estructure_only\x18d \x01(\bH\x00R\rstructureOnly\x129\n" +
"\x18read_data_subset_percent\x18e \x01(\x01H\x00R\x15readDataSubsetPercentB\x06\n" +
"\x04mode\"\xa7\x02\n" +
"\bSchedule\x12\x1c\n" +
"\bdisabled\x18\x01 \x01(\bH\x00R\bdisabled\x12\x14\n" +
"\x04cron\x18\x02 \x01(\tH\x00R\x04cron\x12,\n" +
"\x10maxFrequencyDays\x18\x03 \x01(\x05H\x00R\x10maxFrequencyDays\x12.\n" +
"\x11maxFrequencyHours\x18\x04 \x01(\x05H\x00R\x11maxFrequencyHours\x12(\n" +
"\x05clock\x18\x05 \x01(\x0e2\x12.v1.Schedule.ClockR\x05clock\"S\n" +
"\x05Clock\x12\x11\n" +
"\rCLOCK_DEFAULT\x10\x00\x12\x0f\n" +
"\vCLOCK_LOCAL\x10\x01\x12\r\n" +
"\tCLOCK_UTC\x10\x02\x12\x17\n" +
"\x13CLOCK_LAST_RUN_TIME\x10\x03B\n" +
"\n" +
"\bschedule\"\xe1\x0f\n" +
"\x04Hook\x122\n" +
"\n" +
"conditions\x18\x01 \x03(\x0e2\x12.v1.Hook.ConditionR\n" +
"conditions\x12+\n" +
"\bon_error\x18\x02 \x01(\x0e2\x10.v1.Hook.OnErrorR\aonError\x129\n" +
"\x0eaction_command\x18d \x01(\v2\x10.v1.Hook.CommandH\x00R\ractionCommand\x129\n" +
"\x0eaction_webhook\x18e \x01(\v2\x10.v1.Hook.WebhookH\x00R\ractionWebhook\x129\n" +
"\x0eaction_discord\x18f \x01(\v2\x10.v1.Hook.DiscordH\x00R\ractionDiscord\x126\n" +
"\raction_gotify\x18g \x01(\v2\x0f.v1.Hook.GotifyH\x00R\factionGotify\x123\n" +
"\faction_slack\x18h \x01(\v2\x0e.v1.Hook.SlackH\x00R\vactionSlack\x12<\n" +
"\x0faction_shoutrrr\x18i \x01(\v2\x11.v1.Hook.ShoutrrrH\x00R\x0eactionShoutrrr\x12H\n" +
"\x13action_healthchecks\x18j \x01(\v2\x15.v1.Hook.HealthchecksH\x00R\x12actionHealthchecks\x12<\n" +
"\x0faction_telegram\x18k \x01(\v2\x11.v1.Hook.TelegramH\x00R\x0eactionTelegram\x1a#\n" +
"\aCommand\x12\x18\n" +
"\acommand\x18\x01 \x01(\tR\acommand\x1a\xa1\x01\n" +
"\aWebhook\x12\x1f\n" +
"\vwebhook_url\x18\x01 \x01(\tR\n" +
"webhookUrl\x12/\n" +
"\x06method\x18\x02 \x01(\x0e2\x17.v1.Hook.Webhook.MethodR\x06method\x12\x1a\n" +
"\btemplate\x18d \x01(\tR\btemplate\"(\n" +
"\x06Method\x12\v\n" +
"\aUNKNOWN\x10\x00\x12\a\n" +
"\x03GET\x10\x01\x12\b\n" +
"\x04POST\x10\x02\x1aF\n" +
"\aDiscord\x12\x1f\n" +
"\vwebhook_url\x18\x01 \x01(\tR\n" +
"webhookUrl\x12\x1a\n" +
"\btemplate\x18\x02 \x01(\tR\btemplate\x1a\x98\x01\n" +
"\x06Gotify\x12\x19\n" +
"\bbase_url\x18\x01 \x01(\tR\abaseUrl\x12\x14\n" +
"\x05token\x18\x03 \x01(\tR\x05token\x12\x1a\n" +
"\btemplate\x18d \x01(\tR\btemplate\x12%\n" +
"\x0etitle_template\x18e \x01(\tR\rtitleTemplate\x12\x1a\n" +
"\bpriority\x18f \x01(\x05R\bpriority\x1aD\n" +
"\x05Slack\x12\x1f\n" +
"\vwebhook_url\x18\x01 \x01(\tR\n" +
"webhookUrl\x12\x1a\n" +
"\btemplate\x18\x02 \x01(\tR\btemplate\x1aI\n" +
"\bShoutrrr\x12!\n" +
"\fshoutrrr_url\x18\x01 \x01(\tR\vshoutrrrUrl\x12\x1a\n" +
"\btemplate\x18\x02 \x01(\tR\btemplate\x1aK\n" +
"\fHealthchecks\x12\x1f\n" +
"\vwebhook_url\x18\x01 \x01(\tR\n" +
"webhookUrl\x12\x1a\n" +
"\btemplate\x18\x02 \x01(\tR\btemplate\x1a\\\n" +
"\bTelegram\x12\x1b\n" +
"\tbot_token\x18\x01 \x01(\tR\bbotToken\x12\x17\n" +
"\achat_id\x18\x02 \x01(\tR\x06chatId\x12\x1a\n" +
"\btemplate\x18\x03 \x01(\tR\btemplate\"\xf5\x03\n" +
"\tCondition\x12\x15\n" +
"\x11CONDITION_UNKNOWN\x10\x00\x12\x17\n" +
"\x13CONDITION_ANY_ERROR\x10\x01\x12\x1c\n" +
"\x18CONDITION_SNAPSHOT_START\x10\x02\x12\x1a\n" +
"\x16CONDITION_SNAPSHOT_END\x10\x03\x12\x1c\n" +
"\x18CONDITION_SNAPSHOT_ERROR\x10\x04\x12\x1e\n" +
"\x1aCONDITION_SNAPSHOT_WARNING\x10\x05\x12\x1e\n" +
"\x1aCONDITION_SNAPSHOT_SUCCESS\x10\x06\x12\x1e\n" +
"\x1aCONDITION_SNAPSHOT_SKIPPED\x10\a\x12\x19\n" +
"\x15CONDITION_PRUNE_START\x10d\x12\x19\n" +
"\x15CONDITION_PRUNE_ERROR\x10e\x12\x1b\n" +
"\x17CONDITION_PRUNE_SUCCESS\x10f\x12\x1a\n" +
"\x15CONDITION_CHECK_START\x10\xc8\x01\x12\x1a\n" +
"\x15CONDITION_CHECK_ERROR\x10\xc9\x01\x12\x1c\n" +
"\x17CONDITION_CHECK_SUCCESS\x10\xca\x01\x12\x1b\n" +
"\x16CONDITION_FORGET_START\x10\xac\x02\x12\x1b\n" +
"\x16CONDITION_FORGET_ERROR\x10\xad\x02\x12\x1d\n" +
"\x18CONDITION_FORGET_SUCCESS\x10\xae\x02\"\xa9\x01\n" +
"\aOnError\x12\x13\n" +
"\x0fON_ERROR_IGNORE\x10\x00\x12\x13\n" +
"\x0fON_ERROR_CANCEL\x10\x01\x12\x12\n" +
"\x0eON_ERROR_FATAL\x10\x02\x12\x1a\n" +
"\x16ON_ERROR_RETRY_1MINUTE\x10d\x12\x1c\n" +
"\x18ON_ERROR_RETRY_10MINUTES\x10e\x12&\n" +
"\"ON_ERROR_RETRY_EXPONENTIAL_BACKOFF\x10gB\b\n" +
"\x06action\"B\n" +
"\x04Auth\x12\x1a\n" +
"\bdisabled\x18\x01 \x01(\bR\bdisabled\x12\x1e\n" +
"\x05users\x18\x02 \x03(\v2\b.v1.UserR\x05users\"Q\n" +
"\x04User\x12\x12\n" +
"\x04name\x18\x01 \x01(\tR\x04name\x12)\n" +
"\x0fpassword_bcrypt\x18\x02 \x01(\tH\x00R\x0epasswordBcryptB\n" +
"\n" +
"\bpasswordB,Z*github.com/garethgeorge/backrest/gen/go/v1b\x06proto3"
var (
file_v1_config_proto_rawDescOnce sync.Once
file_v1_config_proto_rawDescData []byte
)
func file_v1_config_proto_rawDescGZIP() []byte {
file_v1_config_proto_rawDescOnce.Do(func() {
file_v1_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_config_proto_rawDesc), len(file_v1_config_proto_rawDesc)))
})
return file_v1_config_proto_rawDescData
}
var file_v1_config_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
var file_v1_config_proto_msgTypes = make([]protoimpl.MessageInfo, 25)
var file_v1_config_proto_goTypes = []any{
(Multihost_Permission_Type)(0), // 0: v1.Multihost.Permission.Type
(CommandPrefix_IONiceLevel)(0), // 1: v1.CommandPrefix.IONiceLevel
(CommandPrefix_CPUNiceLevel)(0), // 2: v1.CommandPrefix.CPUNiceLevel
(Schedule_Clock)(0), // 3: v1.Schedule.Clock
(Hook_Condition)(0), // 4: v1.Hook.Condition
(Hook_OnError)(0), // 5: v1.Hook.OnError
(Hook_Webhook_Method)(0), // 6: v1.Hook.Webhook.Method
(*Config)(nil), // 7: v1.Config
(*Multihost)(nil), // 8: v1.Multihost
(*Repo)(nil), // 9: v1.Repo
(*Plan)(nil), // 10: v1.Plan
(*CommandPrefix)(nil), // 11: v1.CommandPrefix
(*RetentionPolicy)(nil), // 12: v1.RetentionPolicy
(*ForgetPolicy)(nil), // 13: v1.ForgetPolicy
(*PrunePolicy)(nil), // 14: v1.PrunePolicy
(*CheckPolicy)(nil), // 15: v1.CheckPolicy
(*Schedule)(nil), // 16: v1.Schedule
(*Hook)(nil), // 17: v1.Hook
(*Auth)(nil), // 18: v1.Auth
(*User)(nil), // 19: v1.User
(*Multihost_Peer)(nil), // 20: v1.Multihost.Peer
(*Multihost_PairingToken)(nil), // 21: v1.Multihost.PairingToken
(*Multihost_Permission)(nil), // 22: v1.Multihost.Permission
(*RetentionPolicy_TimeBucketedCounts)(nil), // 23: v1.RetentionPolicy.TimeBucketedCounts
(*Hook_Command)(nil), // 24: v1.Hook.Command
(*Hook_Webhook)(nil), // 25: v1.Hook.Webhook
(*Hook_Discord)(nil), // 26: v1.Hook.Discord
(*Hook_Gotify)(nil), // 27: v1.Hook.Gotify
(*Hook_Slack)(nil), // 28: v1.Hook.Slack
(*Hook_Shoutrrr)(nil), // 29: v1.Hook.Shoutrrr
(*Hook_Healthchecks)(nil), // 30: v1.Hook.Healthchecks
(*Hook_Telegram)(nil), // 31: v1.Hook.Telegram
(*PrivateKey)(nil), // 32: v1.PrivateKey
}
var file_v1_config_proto_depIdxs = []int32{
9, // 0: v1.Config.repos:type_name -> v1.Repo
10, // 1: v1.Config.plans:type_name -> v1.Plan
18, // 2: v1.Config.auth:type_name -> v1.Auth
8, // 3: v1.Config.multihost:type_name -> v1.Multihost
32, // 4: v1.Multihost.identity:type_name -> v1.PrivateKey
20, // 5: v1.Multihost.known_hosts:type_name -> v1.Multihost.Peer
20, // 6: v1.Multihost.authorized_clients:type_name -> v1.Multihost.Peer
21, // 7: v1.Multihost.pairing_tokens:type_name -> v1.Multihost.PairingToken
14, // 8: v1.Repo.prune_policy:type_name -> v1.PrunePolicy
15, // 9: v1.Repo.check_policy:type_name -> v1.CheckPolicy
17, // 10: v1.Repo.hooks:type_name -> v1.Hook
11, // 11: v1.Repo.command_prefix:type_name -> v1.CommandPrefix
13, // 12: v1.Repo.forget_policy:type_name -> v1.ForgetPolicy
16, // 13: v1.Plan.schedule:type_name -> v1.Schedule
12, // 14: v1.Plan.retention:type_name -> v1.RetentionPolicy
17, // 15: v1.Plan.hooks:type_name -> v1.Hook
1, // 16: v1.CommandPrefix.io_nice:type_name -> v1.CommandPrefix.IONiceLevel
2, // 17: v1.CommandPrefix.cpu_nice:type_name -> v1.CommandPrefix.CPUNiceLevel
23, // 18: v1.RetentionPolicy.policy_time_bucketed:type_name -> v1.RetentionPolicy.TimeBucketedCounts
16, // 19: v1.ForgetPolicy.schedule:type_name -> v1.Schedule
12, // 20: v1.ForgetPolicy.retention:type_name -> v1.RetentionPolicy
16, // 21: v1.PrunePolicy.schedule:type_name -> v1.Schedule
16, // 22: v1.CheckPolicy.schedule:type_name -> v1.Schedule
3, // 23: v1.Schedule.clock:type_name -> v1.Schedule.Clock
4, // 24: v1.Hook.conditions:type_name -> v1.Hook.Condition
5, // 25: v1.Hook.on_error:type_name -> v1.Hook.OnError
24, // 26: v1.Hook.action_command:type_name -> v1.Hook.Command
25, // 27: v1.Hook.action_webhook:type_name -> v1.Hook.Webhook
26, // 28: v1.Hook.action_discord:type_name -> v1.Hook.Discord
27, // 29: v1.Hook.action_gotify:type_name -> v1.Hook.Gotify
28, // 30: v1.Hook.action_slack:type_name -> v1.Hook.Slack
29, // 31: v1.Hook.action_shoutrrr:type_name -> v1.Hook.Shoutrrr
30, // 32: v1.Hook.action_healthchecks:type_name -> v1.Hook.Healthchecks
31, // 33: v1.Hook.action_telegram:type_name -> v1.Hook.Telegram
19, // 34: v1.Auth.users:type_name -> v1.User
22, // 35: v1.Multihost.Peer.permissions:type_name -> v1.Multihost.Permission
22, // 36: v1.Multihost.PairingToken.permissions:type_name -> v1.Multihost.Permission
0, // 37: v1.Multihost.Permission.type:type_name -> v1.Multihost.Permission.Type
6, // 38: v1.Hook.Webhook.method:type_name -> v1.Hook.Webhook.Method
39, // [39:39] is the sub-list for method output_type
39, // [39:39] is the sub-list for method input_type
39, // [39:39] is the sub-list for extension type_name
39, // [39:39] is the sub-list for extension extendee
0, // [0:39] is the sub-list for field type_name
}
func init() { file_v1_config_proto_init() }
func file_v1_config_proto_init() {
if File_v1_config_proto != nil {
return
}
file_v1_crypto_proto_init()
file_v1_config_proto_msgTypes[5].OneofWrappers = []any{
(*RetentionPolicy_PolicyKeepLastN)(nil),
(*RetentionPolicy_PolicyTimeBucketed)(nil),
(*RetentionPolicy_PolicyKeepAll)(nil),
}
file_v1_config_proto_msgTypes[8].OneofWrappers = []any{
(*CheckPolicy_StructureOnly)(nil),
(*CheckPolicy_ReadDataSubsetPercent)(nil),
}
file_v1_config_proto_msgTypes[9].OneofWrappers = []any{
(*Schedule_Disabled)(nil),
(*Schedule_Cron)(nil),
(*Schedule_MaxFrequencyDays)(nil),
(*Schedule_MaxFrequencyHours)(nil),
}
file_v1_config_proto_msgTypes[10].OneofWrappers = []any{
(*Hook_ActionCommand)(nil),
(*Hook_ActionWebhook)(nil),
(*Hook_ActionDiscord)(nil),
(*Hook_ActionGotify)(nil),
(*Hook_ActionSlack)(nil),
(*Hook_ActionShoutrrr)(nil),
(*Hook_ActionHealthchecks)(nil),
(*Hook_ActionTelegram)(nil),
}
file_v1_config_proto_msgTypes[12].OneofWrappers = []any{
(*User_PasswordBcrypt)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_config_proto_rawDesc), len(file_v1_config_proto_rawDesc)),
NumEnums: 7,
NumMessages: 25,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_v1_config_proto_goTypes,
DependencyIndexes: file_v1_config_proto_depIdxs,
EnumInfos: file_v1_config_proto_enumTypes,
MessageInfos: file_v1_config_proto_msgTypes,
}.Build()
File_v1_config_proto = out.File
file_v1_config_proto_goTypes = nil
file_v1_config_proto_depIdxs = nil
}