diff --git a/THIRD_PARTY_LICENSES.md b/THIRD_PARTY_LICENSES.md
index 831a902..752cea2 100644
--- a/THIRD_PARTY_LICENSES.md
+++ b/THIRD_PARTY_LICENSES.md
@@ -8,10 +8,17 @@ The `proton-bridge` image distributes binaries built from:
- Adapted bootstrap/containerization ideas from `shenxn/protonmail-bridge-docker` (GPL-3.0)
- Additional referenced implementation patterns from `VideoCurio/ProtonMailBridgeDocker` (GPL-3.0)
+The bundled `proton-bridge-exporter` additionally vendors the Bridge gRPC client
+stubs (`images/proton-bridge/exporter/bridgepb/`, GPL-3.0, taken verbatim from
+`ProtonMail/proton-bridge` with only the Go package name changed) and links Go
+libraries under their own permissive licences (gRPC and Prometheus client
+under Apache-2.0; `google.golang.org/protobuf` under BSD-3-Clause).
+
Relevant local files:
- `images/proton-bridge/LICENSE` (full GPL-3.0 license text)
- `images/proton-bridge/NOTICE` (attribution and provenance)
+- `images/proton-bridge/exporter/README.md` (exporter provenance and stub regeneration)
Upstream sources:
diff --git a/images/proton-bridge/Dockerfile b/images/proton-bridge/Dockerfile
index 982e9d5..02606b7 100644
--- a/images/proton-bridge/Dockerfile
+++ b/images/proton-bridge/Dockerfile
@@ -39,6 +39,16 @@ RUN --mount=type=cache,target=/go/pkg/mod \
set -eux; \
make build-nogui vault-editor
+# Build the Prometheus exporter that scrapes the bridge gRPC frontend.
+FROM golang:alpine3.24 AS exporter
+WORKDIR /exporter
+COPY exporter/go.mod exporter/go.sum ./
+RUN --mount=type=cache,target=/go/pkg/mod go mod download
+COPY exporter/ ./
+RUN --mount=type=cache,target=/go/pkg/mod \
+ --mount=type=cache,target=/root/.cache/go-build \
+ CGO_ENABLED=0 go build -o /proton-bridge-exporter .
+
# Working stage image
FROM alpine:3.24
@@ -55,11 +65,13 @@ ARG ENV_BRIDGE_HOST=127.0.0.1
# Change ENV_CONTAINER_SMTP_PORT only if you have a docker port conflict on host network namespace.
ARG ENV_CONTAINER_SMTP_PORT=1026
ARG ENV_CONTAINER_IMAP_PORT=1144
+ARG ENV_CONTAINER_METRICS_PORT=9154
ENV PROTON_BRIDGE_SMTP_PORT=$ENV_BRIDGE_SMTP_PORT \
PROTON_BRIDGE_IMAP_PORT=$ENV_BRIDGE_IMAP_PORT \
PROTON_BRIDGE_HOST=$ENV_BRIDGE_HOST \
CONTAINER_SMTP_PORT=$ENV_CONTAINER_SMTP_PORT \
CONTAINER_IMAP_PORT=$ENV_CONTAINER_IMAP_PORT \
+ CONTAINER_METRICS_PORT=$ENV_CONTAINER_METRICS_PORT \
ENV_TARGET_PLATFORM=$TARGETPLATFORM
# Install dependencies
@@ -88,6 +100,7 @@ RUN set -eux; \
# Copy executables made during previous stage
WORKDIR /usr/bin/
COPY --from=build /build/proton-bridge/bridge /build/proton-bridge/proton-bridge /build/proton-bridge/vault-editor /usr/bin/
+COPY --from=exporter /proton-bridge-exporter /usr/bin/proton-bridge-exporter
# Install needed scripts and files
WORKDIR /app/
@@ -105,6 +118,8 @@ COPY --chmod=0755 services/socat-smtp/run /app/services/socat-smtp/run
COPY --chmod=0755 services/socat-smtp/finish /app/services/socat-smtp/finish
COPY --chmod=0755 services/socat-imap/run /app/services/socat-imap/run
COPY --chmod=0755 services/socat-imap/finish /app/services/socat-imap/finish
+COPY --chmod=0755 services/exporter/run /app/services/exporter/run
+COPY --chmod=0755 services/exporter/finish /app/services/exporter/finish
COPY --from=build /build/BRIDGE_VERSION /app/VERSION
RUN chown -R bridge:bridge /app
diff --git a/images/proton-bridge/README.md b/images/proton-bridge/README.md
index 5674f65..40187cc 100644
--- a/images/proton-bridge/README.md
+++ b/images/proton-bridge/README.md
@@ -6,10 +6,11 @@ Headless Proton Mail Bridge image with `s6`-supervised services.
The container runs these long-lived services under `s6`:
-- `bridge` (`/usr/bin/bridge --noninteractive` by default)
+- `bridge` (`/usr/bin/bridge --grpc` by default; serves mail and the gRPC machine API)
- `gpg-agent` (launched and monitored via `gpgconf`)
- SMTP forwarder (`socat` on `${CONTAINER_SMTP_PORT}` -> `${PROTON_BRIDGE_HOST}:${PROTON_BRIDGE_SMTP_PORT}`)
- IMAP forwarder (`socat` on `${CONTAINER_IMAP_PORT}` -> `${PROTON_BRIDGE_HOST}:${PROTON_BRIDGE_IMAP_PORT}`)
+- `exporter` (Prometheus metrics on `${CONTAINER_METRICS_PORT}`, scraping the bridge gRPC API)
Bootstrap-only initialization in `entrypoint.sh`:
@@ -25,6 +26,7 @@ Required:
- `PROTON_BRIDGE_HOST`
- `CONTAINER_SMTP_PORT`
- `CONTAINER_IMAP_PORT`
+- `CONTAINER_METRICS_PORT`
Optional runtime tuning:
@@ -33,9 +35,20 @@ Optional runtime tuning:
- `BRIDGE_EXIT_ZERO_STOPS_CONTAINER` (default `true`)
- `BRIDGE_GPG_AGENT_WAIT_SECONDS` (default `30`)
- `GPG_AGENT_LAUNCH_MAX_FAILURES` (default `10`)
-- `BRIDGE_MODE` (`noninteractive` or `cli`, default `noninteractive`)
+- `BRIDGE_MODE` (`grpc`, `noninteractive`, or `cli`, default `grpc`)
- `SOCAT_DEBUG` (`true` enables verbose socat logs, default `false`)
+## Metrics
+
+The `exporter` service exposes Prometheus metrics on `${CONTAINER_METRICS_PORT}`
+(default `9154`, path `/metrics`), including per-account login state and
+dropped-auth counters scraped from the bridge gRPC API. This requires the
+default `BRIDGE_MODE=grpc`; under `noninteractive`/`cli` the gRPC API is absent
+and the exporter reports `proton_bridge_up 0`.
+
+See [`exporter/README.md`](exporter/README.md) for the full metric list and the
+stub-regeneration step required on each upstream version bump.
+
## Login
Use Bridge CLI mode for first-time account login.
diff --git a/images/proton-bridge/entrypoint.sh b/images/proton-bridge/entrypoint.sh
index 01e4884..a313a11 100644
--- a/images/proton-bridge/entrypoint.sh
+++ b/images/proton-bridge/entrypoint.sh
@@ -15,7 +15,8 @@ for required_var in \
PROTON_BRIDGE_IMAP_PORT \
PROTON_BRIDGE_HOST \
CONTAINER_SMTP_PORT \
- CONTAINER_IMAP_PORT
+ CONTAINER_IMAP_PORT \
+ CONTAINER_METRICS_PORT
do
require_env "${required_var}"
done
diff --git a/images/proton-bridge/exporter/README.md b/images/proton-bridge/exporter/README.md
new file mode 100644
index 0000000..cdf2413
--- /dev/null
+++ b/images/proton-bridge/exporter/README.md
@@ -0,0 +1,61 @@
+# proton-bridge-exporter
+
+A small Prometheus exporter that scrapes the headless Proton Bridge **gRPC
+frontend** (`bridge --grpc`) and exposes process- and account-level metrics,
+so dropped account authentication can be alerted on.
+
+## How it connects
+
+Bridge writes a `grpcServerConfig.json` to its settings directory
+(`~/.config/protonmail/bridge-v3/`) containing a generated TLS certificate, an
+auth token, and a unix socket path. The exporter reads that file, dials the
+socket, pins the (self-signed, CN `127.0.0.1`) certificate, and presents the
+token in a `server-token` per-RPC header — exactly as the desktop GUI does.
+
+It then polls `GetUserList` / `Version` on an interval and subscribes to
+`RunEventStream` for live disconnect / bad-event / IMAP-login-failure events.
+
+## Metrics
+
+| Metric | Type | Notes |
+| --- | --- | --- |
+| `proton_bridge_up` | gauge | 1 if the gRPC service is reachable |
+| `proton_bridge_info{version}` | gauge | bridge version, value 1 |
+| `proton_bridge_accounts_total` | gauge | number of known accounts |
+| `proton_bridge_account_connected{account}` | gauge | 1 = logged in / connected |
+| `proton_bridge_account_state{account,state}` | gauge | 1 for the active state (`connected`/`locked`/`signed_out`) |
+| `proton_bridge_account_used_bytes{account}` | gauge | mail storage used |
+| `proton_bridge_account_total_bytes{account}` | gauge | mail storage quota |
+| `proton_bridge_internet_connected` | gauge | bridge's internet status |
+| `proton_bridge_user_disconnected_total{account}` | counter | dropped-auth events |
+| `proton_bridge_user_bad_event_total{account}` | counter | sync error events |
+| `proton_bridge_imap_login_failed_total{account}` | counter | failed IMAP client logins |
+| `proton_bridge_exporter_scrape_errors_total` | counter | exporter-side gRPC errors |
+
+Account/event series only appear once at least one account is logged in or the
+relevant event has fired.
+
+Configuration via env: `CONTAINER_METRICS_PORT` (listen port, default `9154`)
+and `BRIDGE_GRPC_CONFIG` (override the config path).
+
+## gRPC stubs (`bridgepb/`) and upstream coupling
+
+`bridgepb/bridge.pb.go` and `bridgepb/bridge_grpc.pb.go` are **vendored verbatim**
+from `ProtonMail/proton-bridge` (`internal/frontend/grpc/`, GPL-3.0), with only
+the Go `package` declaration renamed to `bridgepb`. `bridgepb/bridge.proto` is
+kept alongside for provenance.
+
+The gRPC API is Bridge's internal GUI contract, so it can change between
+releases. **On each upstream version bump, re-vendor these files** from the
+matching tag:
+
+```sh
+tag=v3.25.0
+for f in bridge.pb.go bridge_grpc.pb.go bridge.proto; do
+ curl -fsSL "https://raw.githubusercontent.com/ProtonMail/proton-bridge/${tag}/internal/frontend/grpc/${f}" \
+ -o "bridgepb/${f}"
+done
+sed -i 's/^package grpc$/package bridgepb/' bridgepb/bridge.pb.go bridgepb/bridge_grpc.pb.go
+```
+
+Then `go build ./...` and adjust `main.go` if the schema changed.
diff --git a/images/proton-bridge/exporter/bridgepb/bridge.pb.go b/images/proton-bridge/exporter/bridgepb/bridge.pb.go
new file mode 100644
index 0000000..cf657cf
--- /dev/null
+++ b/images/proton-bridge/exporter/bridgepb/bridge.pb.go
@@ -0,0 +1,5811 @@
+// Copyright (c) 2022 Proton Technologies AG
+//
+// This file is part of ProtonMail Bridge.
+//
+// ProtonMail Bridge is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// ProtonMail Bridge is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with ProtonMail Bridge. If not, see .
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.6
+// protoc v5.29.5
+// source: bridge.proto
+
+package bridgepb
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
+ 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)
+)
+
+// **********************************************************
+// Log related message
+// **********************************************************
+// Note: the enum values are prefixed with 'LOG_' to avoid a clash in C++ on Windows with the ERROR macro defined in wingdi.h
+type LogLevel int32
+
+const (
+ LogLevel_LOG_PANIC LogLevel = 0
+ LogLevel_LOG_FATAL LogLevel = 1
+ LogLevel_LOG_ERROR LogLevel = 2
+ LogLevel_LOG_WARN LogLevel = 3
+ LogLevel_LOG_INFO LogLevel = 4
+ LogLevel_LOG_DEBUG LogLevel = 5
+ LogLevel_LOG_TRACE LogLevel = 6
+)
+
+// Enum value maps for LogLevel.
+var (
+ LogLevel_name = map[int32]string{
+ 0: "LOG_PANIC",
+ 1: "LOG_FATAL",
+ 2: "LOG_ERROR",
+ 3: "LOG_WARN",
+ 4: "LOG_INFO",
+ 5: "LOG_DEBUG",
+ 6: "LOG_TRACE",
+ }
+ LogLevel_value = map[string]int32{
+ "LOG_PANIC": 0,
+ "LOG_FATAL": 1,
+ "LOG_ERROR": 2,
+ "LOG_WARN": 3,
+ "LOG_INFO": 4,
+ "LOG_DEBUG": 5,
+ "LOG_TRACE": 6,
+ }
+)
+
+func (x LogLevel) Enum() *LogLevel {
+ p := new(LogLevel)
+ *p = x
+ return p
+}
+
+func (x LogLevel) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (LogLevel) Descriptor() protoreflect.EnumDescriptor {
+ return file_bridge_proto_enumTypes[0].Descriptor()
+}
+
+func (LogLevel) Type() protoreflect.EnumType {
+ return &file_bridge_proto_enumTypes[0]
+}
+
+func (x LogLevel) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use LogLevel.Descriptor instead.
+func (LogLevel) EnumDescriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{0}
+}
+
+// **********************************************************
+// user related messages
+// **********************************************************
+type UserState int32
+
+const (
+ UserState_SIGNED_OUT UserState = 0
+ UserState_LOCKED UserState = 1
+ UserState_CONNECTED UserState = 2
+)
+
+// Enum value maps for UserState.
+var (
+ UserState_name = map[int32]string{
+ 0: "SIGNED_OUT",
+ 1: "LOCKED",
+ 2: "CONNECTED",
+ }
+ UserState_value = map[string]int32{
+ "SIGNED_OUT": 0,
+ "LOCKED": 1,
+ "CONNECTED": 2,
+ }
+)
+
+func (x UserState) Enum() *UserState {
+ p := new(UserState)
+ *p = x
+ return p
+}
+
+func (x UserState) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (UserState) Descriptor() protoreflect.EnumDescriptor {
+ return file_bridge_proto_enumTypes[1].Descriptor()
+}
+
+func (UserState) Type() protoreflect.EnumType {
+ return &file_bridge_proto_enumTypes[1]
+}
+
+func (x UserState) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use UserState.Descriptor instead.
+func (UserState) EnumDescriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{1}
+}
+
+type LoginErrorType int32
+
+const (
+ LoginErrorType_USERNAME_PASSWORD_ERROR LoginErrorType = 0
+ LoginErrorType_FREE_USER LoginErrorType = 1
+ LoginErrorType_CONNECTION_ERROR LoginErrorType = 2
+ LoginErrorType_TFA_ERROR LoginErrorType = 3
+ LoginErrorType_TFA_ABORT LoginErrorType = 4
+ LoginErrorType_TWO_PASSWORDS_ERROR LoginErrorType = 5
+ LoginErrorType_TWO_PASSWORDS_ABORT LoginErrorType = 6
+ LoginErrorType_HV_ERROR LoginErrorType = 7
+ LoginErrorType_FIDO_PIN_INVALID LoginErrorType = 8
+ LoginErrorType_FIDO_PIN_BLOCKED LoginErrorType = 9
+ LoginErrorType_FIDO_ERROR LoginErrorType = 10
+)
+
+// Enum value maps for LoginErrorType.
+var (
+ LoginErrorType_name = map[int32]string{
+ 0: "USERNAME_PASSWORD_ERROR",
+ 1: "FREE_USER",
+ 2: "CONNECTION_ERROR",
+ 3: "TFA_ERROR",
+ 4: "TFA_ABORT",
+ 5: "TWO_PASSWORDS_ERROR",
+ 6: "TWO_PASSWORDS_ABORT",
+ 7: "HV_ERROR",
+ 8: "FIDO_PIN_INVALID",
+ 9: "FIDO_PIN_BLOCKED",
+ 10: "FIDO_ERROR",
+ }
+ LoginErrorType_value = map[string]int32{
+ "USERNAME_PASSWORD_ERROR": 0,
+ "FREE_USER": 1,
+ "CONNECTION_ERROR": 2,
+ "TFA_ERROR": 3,
+ "TFA_ABORT": 4,
+ "TWO_PASSWORDS_ERROR": 5,
+ "TWO_PASSWORDS_ABORT": 6,
+ "HV_ERROR": 7,
+ "FIDO_PIN_INVALID": 8,
+ "FIDO_PIN_BLOCKED": 9,
+ "FIDO_ERROR": 10,
+ }
+)
+
+func (x LoginErrorType) Enum() *LoginErrorType {
+ p := new(LoginErrorType)
+ *p = x
+ return p
+}
+
+func (x LoginErrorType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (LoginErrorType) Descriptor() protoreflect.EnumDescriptor {
+ return file_bridge_proto_enumTypes[2].Descriptor()
+}
+
+func (LoginErrorType) Type() protoreflect.EnumType {
+ return &file_bridge_proto_enumTypes[2]
+}
+
+func (x LoginErrorType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use LoginErrorType.Descriptor instead.
+func (LoginErrorType) EnumDescriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{2}
+}
+
+type UpdateErrorType int32
+
+const (
+ UpdateErrorType_UPDATE_MANUAL_ERROR UpdateErrorType = 0
+ UpdateErrorType_UPDATE_FORCE_ERROR UpdateErrorType = 1
+ UpdateErrorType_UPDATE_SILENT_ERROR UpdateErrorType = 2
+)
+
+// Enum value maps for UpdateErrorType.
+var (
+ UpdateErrorType_name = map[int32]string{
+ 0: "UPDATE_MANUAL_ERROR",
+ 1: "UPDATE_FORCE_ERROR",
+ 2: "UPDATE_SILENT_ERROR",
+ }
+ UpdateErrorType_value = map[string]int32{
+ "UPDATE_MANUAL_ERROR": 0,
+ "UPDATE_FORCE_ERROR": 1,
+ "UPDATE_SILENT_ERROR": 2,
+ }
+)
+
+func (x UpdateErrorType) Enum() *UpdateErrorType {
+ p := new(UpdateErrorType)
+ *p = x
+ return p
+}
+
+func (x UpdateErrorType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (UpdateErrorType) Descriptor() protoreflect.EnumDescriptor {
+ return file_bridge_proto_enumTypes[3].Descriptor()
+}
+
+func (UpdateErrorType) Type() protoreflect.EnumType {
+ return &file_bridge_proto_enumTypes[3]
+}
+
+func (x UpdateErrorType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use UpdateErrorType.Descriptor instead.
+func (UpdateErrorType) EnumDescriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{3}
+}
+
+type DiskCacheErrorType int32
+
+const (
+ DiskCacheErrorType_CANT_MOVE_DISK_CACHE_ERROR DiskCacheErrorType = 0
+)
+
+// Enum value maps for DiskCacheErrorType.
+var (
+ DiskCacheErrorType_name = map[int32]string{
+ 0: "CANT_MOVE_DISK_CACHE_ERROR",
+ }
+ DiskCacheErrorType_value = map[string]int32{
+ "CANT_MOVE_DISK_CACHE_ERROR": 0,
+ }
+)
+
+func (x DiskCacheErrorType) Enum() *DiskCacheErrorType {
+ p := new(DiskCacheErrorType)
+ *p = x
+ return p
+}
+
+func (x DiskCacheErrorType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (DiskCacheErrorType) Descriptor() protoreflect.EnumDescriptor {
+ return file_bridge_proto_enumTypes[4].Descriptor()
+}
+
+func (DiskCacheErrorType) Type() protoreflect.EnumType {
+ return &file_bridge_proto_enumTypes[4]
+}
+
+func (x DiskCacheErrorType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use DiskCacheErrorType.Descriptor instead.
+func (DiskCacheErrorType) EnumDescriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{4}
+}
+
+type MailServerSettingsErrorType int32
+
+const (
+ MailServerSettingsErrorType_IMAP_PORT_STARTUP_ERROR MailServerSettingsErrorType = 0
+ MailServerSettingsErrorType_SMTP_PORT_STARTUP_ERROR MailServerSettingsErrorType = 1
+ MailServerSettingsErrorType_IMAP_PORT_CHANGE_ERROR MailServerSettingsErrorType = 2
+ MailServerSettingsErrorType_SMTP_PORT_CHANGE_ERROR MailServerSettingsErrorType = 3
+ MailServerSettingsErrorType_IMAP_CONNECTION_MODE_CHANGE_ERROR MailServerSettingsErrorType = 4
+ MailServerSettingsErrorType_SMTP_CONNECTION_MODE_CHANGE_ERROR MailServerSettingsErrorType = 5
+)
+
+// Enum value maps for MailServerSettingsErrorType.
+var (
+ MailServerSettingsErrorType_name = map[int32]string{
+ 0: "IMAP_PORT_STARTUP_ERROR",
+ 1: "SMTP_PORT_STARTUP_ERROR",
+ 2: "IMAP_PORT_CHANGE_ERROR",
+ 3: "SMTP_PORT_CHANGE_ERROR",
+ 4: "IMAP_CONNECTION_MODE_CHANGE_ERROR",
+ 5: "SMTP_CONNECTION_MODE_CHANGE_ERROR",
+ }
+ MailServerSettingsErrorType_value = map[string]int32{
+ "IMAP_PORT_STARTUP_ERROR": 0,
+ "SMTP_PORT_STARTUP_ERROR": 1,
+ "IMAP_PORT_CHANGE_ERROR": 2,
+ "SMTP_PORT_CHANGE_ERROR": 3,
+ "IMAP_CONNECTION_MODE_CHANGE_ERROR": 4,
+ "SMTP_CONNECTION_MODE_CHANGE_ERROR": 5,
+ }
+)
+
+func (x MailServerSettingsErrorType) Enum() *MailServerSettingsErrorType {
+ p := new(MailServerSettingsErrorType)
+ *p = x
+ return p
+}
+
+func (x MailServerSettingsErrorType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (MailServerSettingsErrorType) Descriptor() protoreflect.EnumDescriptor {
+ return file_bridge_proto_enumTypes[5].Descriptor()
+}
+
+func (MailServerSettingsErrorType) Type() protoreflect.EnumType {
+ return &file_bridge_proto_enumTypes[5]
+}
+
+func (x MailServerSettingsErrorType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use MailServerSettingsErrorType.Descriptor instead.
+func (MailServerSettingsErrorType) EnumDescriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{5}
+}
+
+// **********************************************************
+// Generic errors
+// **********************************************************
+type ErrorCode int32
+
+const (
+ ErrorCode_UNKNOWN_ERROR ErrorCode = 0
+ ErrorCode_TLS_CERT_EXPORT_ERROR ErrorCode = 1
+ ErrorCode_TLS_KEY_EXPORT_ERROR ErrorCode = 2
+)
+
+// Enum value maps for ErrorCode.
+var (
+ ErrorCode_name = map[int32]string{
+ 0: "UNKNOWN_ERROR",
+ 1: "TLS_CERT_EXPORT_ERROR",
+ 2: "TLS_KEY_EXPORT_ERROR",
+ }
+ ErrorCode_value = map[string]int32{
+ "UNKNOWN_ERROR": 0,
+ "TLS_CERT_EXPORT_ERROR": 1,
+ "TLS_KEY_EXPORT_ERROR": 2,
+ }
+)
+
+func (x ErrorCode) Enum() *ErrorCode {
+ p := new(ErrorCode)
+ *p = x
+ return p
+}
+
+func (x ErrorCode) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ErrorCode) Descriptor() protoreflect.EnumDescriptor {
+ return file_bridge_proto_enumTypes[6].Descriptor()
+}
+
+func (ErrorCode) Type() protoreflect.EnumType {
+ return &file_bridge_proto_enumTypes[6]
+}
+
+func (x ErrorCode) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ErrorCode.Descriptor instead.
+func (ErrorCode) EnumDescriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{6}
+}
+
+type AddLogEntryRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Level LogLevel `protobuf:"varint,1,opt,name=level,proto3,enum=grpc.LogLevel" json:"level,omitempty"`
+ Package string `protobuf:"bytes,2,opt,name=package,proto3" json:"package,omitempty"` // package is Go lingo but it identifies the component responsible for the log entry
+ Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *AddLogEntryRequest) Reset() {
+ *x = AddLogEntryRequest{}
+ mi := &file_bridge_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *AddLogEntryRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AddLogEntryRequest) ProtoMessage() {}
+
+func (x *AddLogEntryRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 AddLogEntryRequest.ProtoReflect.Descriptor instead.
+func (*AddLogEntryRequest) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *AddLogEntryRequest) GetLevel() LogLevel {
+ if x != nil {
+ return x.Level
+ }
+ return LogLevel_LOG_PANIC
+}
+
+func (x *AddLogEntryRequest) GetPackage() string {
+ if x != nil {
+ return x.Package
+ }
+ return ""
+}
+
+func (x *AddLogEntryRequest) GetMessage() string {
+ if x != nil {
+ return x.Message
+ }
+ return ""
+}
+
+// **********************************************************
+//
+// GuiReady
+//
+// **********************************************************
+type GuiReadyResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ ShowSplashScreen bool `protobuf:"varint,1,opt,name=showSplashScreen,proto3" json:"showSplashScreen,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *GuiReadyResponse) Reset() {
+ *x = GuiReadyResponse{}
+ mi := &file_bridge_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *GuiReadyResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GuiReadyResponse) ProtoMessage() {}
+
+func (x *GuiReadyResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 GuiReadyResponse.ProtoReflect.Descriptor instead.
+func (*GuiReadyResponse) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *GuiReadyResponse) GetShowSplashScreen() bool {
+ if x != nil {
+ return x.ShowSplashScreen
+ }
+ return false
+}
+
+// **********************************************************
+//
+// Bug reporting related messages.
+//
+// **********************************************************
+type ReportBugRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ OsType string `protobuf:"bytes,1,opt,name=osType,proto3" json:"osType,omitempty"`
+ OsVersion string `protobuf:"bytes,2,opt,name=osVersion,proto3" json:"osVersion,omitempty"`
+ Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
+ Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
+ Address string `protobuf:"bytes,5,opt,name=address,proto3" json:"address,omitempty"`
+ EmailClient string `protobuf:"bytes,6,opt,name=emailClient,proto3" json:"emailClient,omitempty"`
+ IncludeLogs bool `protobuf:"varint,7,opt,name=includeLogs,proto3" json:"includeLogs,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ReportBugRequest) Reset() {
+ *x = ReportBugRequest{}
+ mi := &file_bridge_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ReportBugRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReportBugRequest) ProtoMessage() {}
+
+func (x *ReportBugRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 ReportBugRequest.ProtoReflect.Descriptor instead.
+func (*ReportBugRequest) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *ReportBugRequest) GetOsType() string {
+ if x != nil {
+ return x.OsType
+ }
+ return ""
+}
+
+func (x *ReportBugRequest) GetOsVersion() string {
+ if x != nil {
+ return x.OsVersion
+ }
+ return ""
+}
+
+func (x *ReportBugRequest) GetTitle() string {
+ if x != nil {
+ return x.Title
+ }
+ return ""
+}
+
+func (x *ReportBugRequest) GetDescription() string {
+ if x != nil {
+ return x.Description
+ }
+ return ""
+}
+
+func (x *ReportBugRequest) GetAddress() string {
+ if x != nil {
+ return x.Address
+ }
+ return ""
+}
+
+func (x *ReportBugRequest) GetEmailClient() string {
+ if x != nil {
+ return x.EmailClient
+ }
+ return ""
+}
+
+func (x *ReportBugRequest) GetIncludeLogs() bool {
+ if x != nil {
+ return x.IncludeLogs
+ }
+ return false
+}
+
+type LoginRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
+ Password []byte `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"`
+ UseHvDetails *bool `protobuf:"varint,3,opt,name=useHvDetails,proto3,oneof" json:"useHvDetails,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *LoginRequest) Reset() {
+ *x = LoginRequest{}
+ mi := &file_bridge_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *LoginRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoginRequest) ProtoMessage() {}
+
+func (x *LoginRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 LoginRequest.ProtoReflect.Descriptor instead.
+func (*LoginRequest) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *LoginRequest) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+func (x *LoginRequest) GetPassword() []byte {
+ if x != nil {
+ return x.Password
+ }
+ return nil
+}
+
+func (x *LoginRequest) GetUseHvDetails() bool {
+ if x != nil && x.UseHvDetails != nil {
+ return *x.UseHvDetails
+ }
+ return false
+}
+
+type LoginAbortRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *LoginAbortRequest) Reset() {
+ *x = LoginAbortRequest{}
+ mi := &file_bridge_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *LoginAbortRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoginAbortRequest) ProtoMessage() {}
+
+func (x *LoginAbortRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 LoginAbortRequest.ProtoReflect.Descriptor instead.
+func (*LoginAbortRequest) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *LoginAbortRequest) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+// **********************************************************
+// IMAP/SMTP Mail Server settings
+// **********************************************************
+type ImapSmtpSettings struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ ImapPort int32 `protobuf:"varint,1,opt,name=imapPort,proto3" json:"imapPort,omitempty"`
+ SmtpPort int32 `protobuf:"varint,2,opt,name=smtpPort,proto3" json:"smtpPort,omitempty"`
+ UseSSLForImap bool `protobuf:"varint,3,opt,name=useSSLForImap,proto3" json:"useSSLForImap,omitempty"`
+ UseSSLForSmtp bool `protobuf:"varint,4,opt,name=useSSLForSmtp,proto3" json:"useSSLForSmtp,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ImapSmtpSettings) Reset() {
+ *x = ImapSmtpSettings{}
+ mi := &file_bridge_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ImapSmtpSettings) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImapSmtpSettings) ProtoMessage() {}
+
+func (x *ImapSmtpSettings) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 ImapSmtpSettings.ProtoReflect.Descriptor instead.
+func (*ImapSmtpSettings) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *ImapSmtpSettings) GetImapPort() int32 {
+ if x != nil {
+ return x.ImapPort
+ }
+ return 0
+}
+
+func (x *ImapSmtpSettings) GetSmtpPort() int32 {
+ if x != nil {
+ return x.SmtpPort
+ }
+ return 0
+}
+
+func (x *ImapSmtpSettings) GetUseSSLForImap() bool {
+ if x != nil {
+ return x.UseSSLForImap
+ }
+ return false
+}
+
+func (x *ImapSmtpSettings) GetUseSSLForSmtp() bool {
+ if x != nil {
+ return x.UseSSLForSmtp
+ }
+ return false
+}
+
+// **********************************************************
+// Keychain related message
+// **********************************************************
+type AvailableKeychainsResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Keychains []string `protobuf:"bytes,1,rep,name=keychains,proto3" json:"keychains,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *AvailableKeychainsResponse) Reset() {
+ *x = AvailableKeychainsResponse{}
+ mi := &file_bridge_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *AvailableKeychainsResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AvailableKeychainsResponse) ProtoMessage() {}
+
+func (x *AvailableKeychainsResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 AvailableKeychainsResponse.ProtoReflect.Descriptor instead.
+func (*AvailableKeychainsResponse) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *AvailableKeychainsResponse) GetKeychains() []string {
+ if x != nil {
+ return x.Keychains
+ }
+ return nil
+}
+
+type User struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+ Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
+ AvatarText string `protobuf:"bytes,3,opt,name=avatarText,proto3" json:"avatarText,omitempty"`
+ State UserState `protobuf:"varint,4,opt,name=state,proto3,enum=grpc.UserState" json:"state,omitempty"`
+ SplitMode bool `protobuf:"varint,5,opt,name=splitMode,proto3" json:"splitMode,omitempty"`
+ UsedBytes int64 `protobuf:"varint,6,opt,name=usedBytes,proto3" json:"usedBytes,omitempty"`
+ TotalBytes int64 `protobuf:"varint,7,opt,name=totalBytes,proto3" json:"totalBytes,omitempty"`
+ Password []byte `protobuf:"bytes,8,opt,name=password,proto3" json:"password,omitempty"`
+ Addresses []string `protobuf:"bytes,9,rep,name=addresses,proto3" json:"addresses,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *User) Reset() {
+ *x = User{}
+ mi := &file_bridge_proto_msgTypes[7]
+ 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_bridge_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 User.ProtoReflect.Descriptor instead.
+func (*User) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *User) GetId() string {
+ if x != nil {
+ return x.Id
+ }
+ return ""
+}
+
+func (x *User) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+func (x *User) GetAvatarText() string {
+ if x != nil {
+ return x.AvatarText
+ }
+ return ""
+}
+
+func (x *User) GetState() UserState {
+ if x != nil {
+ return x.State
+ }
+ return UserState_SIGNED_OUT
+}
+
+func (x *User) GetSplitMode() bool {
+ if x != nil {
+ return x.SplitMode
+ }
+ return false
+}
+
+func (x *User) GetUsedBytes() int64 {
+ if x != nil {
+ return x.UsedBytes
+ }
+ return 0
+}
+
+func (x *User) GetTotalBytes() int64 {
+ if x != nil {
+ return x.TotalBytes
+ }
+ return 0
+}
+
+func (x *User) GetPassword() []byte {
+ if x != nil {
+ return x.Password
+ }
+ return nil
+}
+
+func (x *User) GetAddresses() []string {
+ if x != nil {
+ return x.Addresses
+ }
+ return nil
+}
+
+type UserSplitModeRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"`
+ Active bool `protobuf:"varint,2,opt,name=active,proto3" json:"active,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UserSplitModeRequest) Reset() {
+ *x = UserSplitModeRequest{}
+ mi := &file_bridge_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UserSplitModeRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UserSplitModeRequest) ProtoMessage() {}
+
+func (x *UserSplitModeRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 UserSplitModeRequest.ProtoReflect.Descriptor instead.
+func (*UserSplitModeRequest) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *UserSplitModeRequest) GetUserID() string {
+ if x != nil {
+ return x.UserID
+ }
+ return ""
+}
+
+func (x *UserSplitModeRequest) GetActive() bool {
+ if x != nil {
+ return x.Active
+ }
+ return false
+}
+
+type UserBadEventFeedbackRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"`
+ DoResync bool `protobuf:"varint,2,opt,name=doResync,proto3" json:"doResync,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UserBadEventFeedbackRequest) Reset() {
+ *x = UserBadEventFeedbackRequest{}
+ mi := &file_bridge_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UserBadEventFeedbackRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UserBadEventFeedbackRequest) ProtoMessage() {}
+
+func (x *UserBadEventFeedbackRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 UserBadEventFeedbackRequest.ProtoReflect.Descriptor instead.
+func (*UserBadEventFeedbackRequest) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *UserBadEventFeedbackRequest) GetUserID() string {
+ if x != nil {
+ return x.UserID
+ }
+ return ""
+}
+
+func (x *UserBadEventFeedbackRequest) GetDoResync() bool {
+ if x != nil {
+ return x.DoResync
+ }
+ return false
+}
+
+type UserListResponse struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Users []*User `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UserListResponse) Reset() {
+ *x = UserListResponse{}
+ mi := &file_bridge_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UserListResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UserListResponse) ProtoMessage() {}
+
+func (x *UserListResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 UserListResponse.ProtoReflect.Descriptor instead.
+func (*UserListResponse) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *UserListResponse) GetUsers() []*User {
+ if x != nil {
+ return x.Users
+ }
+ return nil
+}
+
+type ConfigureAppleMailRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"`
+ Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ConfigureAppleMailRequest) Reset() {
+ *x = ConfigureAppleMailRequest{}
+ mi := &file_bridge_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ConfigureAppleMailRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ConfigureAppleMailRequest) ProtoMessage() {}
+
+func (x *ConfigureAppleMailRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 ConfigureAppleMailRequest.ProtoReflect.Descriptor instead.
+func (*ConfigureAppleMailRequest) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *ConfigureAppleMailRequest) GetUserID() string {
+ if x != nil {
+ return x.UserID
+ }
+ return ""
+}
+
+func (x *ConfigureAppleMailRequest) GetAddress() string {
+ if x != nil {
+ return x.Address
+ }
+ return ""
+}
+
+type EventStreamRequest struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ ClientPlatform string `protobuf:"bytes,1,opt,name=ClientPlatform,proto3" json:"ClientPlatform,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *EventStreamRequest) Reset() {
+ *x = EventStreamRequest{}
+ mi := &file_bridge_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *EventStreamRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventStreamRequest) ProtoMessage() {}
+
+func (x *EventStreamRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 EventStreamRequest.ProtoReflect.Descriptor instead.
+func (*EventStreamRequest) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *EventStreamRequest) GetClientPlatform() string {
+ if x != nil {
+ return x.ClientPlatform
+ }
+ return ""
+}
+
+type StreamEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Types that are valid to be assigned to Event:
+ //
+ // *StreamEvent_App
+ // *StreamEvent_Login
+ // *StreamEvent_Update
+ // *StreamEvent_Cache
+ // *StreamEvent_MailServerSettings
+ // *StreamEvent_Keychain
+ // *StreamEvent_Mail
+ // *StreamEvent_User
+ // *StreamEvent_GenericError
+ Event isStreamEvent_Event `protobuf_oneof:"event"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *StreamEvent) Reset() {
+ *x = StreamEvent{}
+ mi := &file_bridge_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *StreamEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamEvent) ProtoMessage() {}
+
+func (x *StreamEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 StreamEvent.ProtoReflect.Descriptor instead.
+func (*StreamEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *StreamEvent) GetEvent() isStreamEvent_Event {
+ if x != nil {
+ return x.Event
+ }
+ return nil
+}
+
+func (x *StreamEvent) GetApp() *AppEvent {
+ if x != nil {
+ if x, ok := x.Event.(*StreamEvent_App); ok {
+ return x.App
+ }
+ }
+ return nil
+}
+
+func (x *StreamEvent) GetLogin() *LoginEvent {
+ if x != nil {
+ if x, ok := x.Event.(*StreamEvent_Login); ok {
+ return x.Login
+ }
+ }
+ return nil
+}
+
+func (x *StreamEvent) GetUpdate() *UpdateEvent {
+ if x != nil {
+ if x, ok := x.Event.(*StreamEvent_Update); ok {
+ return x.Update
+ }
+ }
+ return nil
+}
+
+func (x *StreamEvent) GetCache() *DiskCacheEvent {
+ if x != nil {
+ if x, ok := x.Event.(*StreamEvent_Cache); ok {
+ return x.Cache
+ }
+ }
+ return nil
+}
+
+func (x *StreamEvent) GetMailServerSettings() *MailServerSettingsEvent {
+ if x != nil {
+ if x, ok := x.Event.(*StreamEvent_MailServerSettings); ok {
+ return x.MailServerSettings
+ }
+ }
+ return nil
+}
+
+func (x *StreamEvent) GetKeychain() *KeychainEvent {
+ if x != nil {
+ if x, ok := x.Event.(*StreamEvent_Keychain); ok {
+ return x.Keychain
+ }
+ }
+ return nil
+}
+
+func (x *StreamEvent) GetMail() *MailEvent {
+ if x != nil {
+ if x, ok := x.Event.(*StreamEvent_Mail); ok {
+ return x.Mail
+ }
+ }
+ return nil
+}
+
+func (x *StreamEvent) GetUser() *UserEvent {
+ if x != nil {
+ if x, ok := x.Event.(*StreamEvent_User); ok {
+ return x.User
+ }
+ }
+ return nil
+}
+
+func (x *StreamEvent) GetGenericError() *GenericErrorEvent {
+ if x != nil {
+ if x, ok := x.Event.(*StreamEvent_GenericError); ok {
+ return x.GenericError
+ }
+ }
+ return nil
+}
+
+type isStreamEvent_Event interface {
+ isStreamEvent_Event()
+}
+
+type StreamEvent_App struct {
+ App *AppEvent `protobuf:"bytes,1,opt,name=app,proto3,oneof"`
+}
+
+type StreamEvent_Login struct {
+ Login *LoginEvent `protobuf:"bytes,2,opt,name=login,proto3,oneof"`
+}
+
+type StreamEvent_Update struct {
+ Update *UpdateEvent `protobuf:"bytes,3,opt,name=update,proto3,oneof"`
+}
+
+type StreamEvent_Cache struct {
+ Cache *DiskCacheEvent `protobuf:"bytes,4,opt,name=cache,proto3,oneof"`
+}
+
+type StreamEvent_MailServerSettings struct {
+ MailServerSettings *MailServerSettingsEvent `protobuf:"bytes,5,opt,name=mailServerSettings,proto3,oneof"`
+}
+
+type StreamEvent_Keychain struct {
+ Keychain *KeychainEvent `protobuf:"bytes,6,opt,name=keychain,proto3,oneof"`
+}
+
+type StreamEvent_Mail struct {
+ Mail *MailEvent `protobuf:"bytes,7,opt,name=mail,proto3,oneof"`
+}
+
+type StreamEvent_User struct {
+ User *UserEvent `protobuf:"bytes,8,opt,name=user,proto3,oneof"`
+}
+
+type StreamEvent_GenericError struct {
+ GenericError *GenericErrorEvent `protobuf:"bytes,9,opt,name=genericError,proto3,oneof"`
+}
+
+func (*StreamEvent_App) isStreamEvent_Event() {}
+
+func (*StreamEvent_Login) isStreamEvent_Event() {}
+
+func (*StreamEvent_Update) isStreamEvent_Event() {}
+
+func (*StreamEvent_Cache) isStreamEvent_Event() {}
+
+func (*StreamEvent_MailServerSettings) isStreamEvent_Event() {}
+
+func (*StreamEvent_Keychain) isStreamEvent_Event() {}
+
+func (*StreamEvent_Mail) isStreamEvent_Event() {}
+
+func (*StreamEvent_User) isStreamEvent_Event() {}
+
+func (*StreamEvent_GenericError) isStreamEvent_Event() {}
+
+// **********************************************************
+// App related events
+// **********************************************************
+type AppEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Types that are valid to be assigned to Event:
+ //
+ // *AppEvent_InternetStatus
+ // *AppEvent_ToggleAutostartFinished
+ // *AppEvent_ResetFinished
+ // *AppEvent_ReportBugFinished
+ // *AppEvent_ReportBugSuccess
+ // *AppEvent_ReportBugError
+ // *AppEvent_ShowMainWindow
+ // *AppEvent_ReportBugFallback
+ // *AppEvent_CertificateInstallSuccess
+ // *AppEvent_CertificateInstallCanceled
+ // *AppEvent_CertificateInstallFailed
+ // *AppEvent_KnowledgeBaseSuggestions
+ // *AppEvent_RepairStarted
+ // *AppEvent_AllUsersLoaded
+ // *AppEvent_UserNotification
+ Event isAppEvent_Event `protobuf_oneof:"event"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *AppEvent) Reset() {
+ *x = AppEvent{}
+ mi := &file_bridge_proto_msgTypes[14]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *AppEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AppEvent) ProtoMessage() {}
+
+func (x *AppEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 AppEvent.ProtoReflect.Descriptor instead.
+func (*AppEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *AppEvent) GetEvent() isAppEvent_Event {
+ if x != nil {
+ return x.Event
+ }
+ return nil
+}
+
+func (x *AppEvent) GetInternetStatus() *InternetStatusEvent {
+ if x != nil {
+ if x, ok := x.Event.(*AppEvent_InternetStatus); ok {
+ return x.InternetStatus
+ }
+ }
+ return nil
+}
+
+func (x *AppEvent) GetToggleAutostartFinished() *ToggleAutostartFinishedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*AppEvent_ToggleAutostartFinished); ok {
+ return x.ToggleAutostartFinished
+ }
+ }
+ return nil
+}
+
+func (x *AppEvent) GetResetFinished() *ResetFinishedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*AppEvent_ResetFinished); ok {
+ return x.ResetFinished
+ }
+ }
+ return nil
+}
+
+func (x *AppEvent) GetReportBugFinished() *ReportBugFinishedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*AppEvent_ReportBugFinished); ok {
+ return x.ReportBugFinished
+ }
+ }
+ return nil
+}
+
+func (x *AppEvent) GetReportBugSuccess() *ReportBugSuccessEvent {
+ if x != nil {
+ if x, ok := x.Event.(*AppEvent_ReportBugSuccess); ok {
+ return x.ReportBugSuccess
+ }
+ }
+ return nil
+}
+
+func (x *AppEvent) GetReportBugError() *ReportBugErrorEvent {
+ if x != nil {
+ if x, ok := x.Event.(*AppEvent_ReportBugError); ok {
+ return x.ReportBugError
+ }
+ }
+ return nil
+}
+
+func (x *AppEvent) GetShowMainWindow() *ShowMainWindowEvent {
+ if x != nil {
+ if x, ok := x.Event.(*AppEvent_ShowMainWindow); ok {
+ return x.ShowMainWindow
+ }
+ }
+ return nil
+}
+
+func (x *AppEvent) GetReportBugFallback() *ReportBugFallbackEvent {
+ if x != nil {
+ if x, ok := x.Event.(*AppEvent_ReportBugFallback); ok {
+ return x.ReportBugFallback
+ }
+ }
+ return nil
+}
+
+func (x *AppEvent) GetCertificateInstallSuccess() *CertificateInstallSuccessEvent {
+ if x != nil {
+ if x, ok := x.Event.(*AppEvent_CertificateInstallSuccess); ok {
+ return x.CertificateInstallSuccess
+ }
+ }
+ return nil
+}
+
+func (x *AppEvent) GetCertificateInstallCanceled() *CertificateInstallCanceledEvent {
+ if x != nil {
+ if x, ok := x.Event.(*AppEvent_CertificateInstallCanceled); ok {
+ return x.CertificateInstallCanceled
+ }
+ }
+ return nil
+}
+
+func (x *AppEvent) GetCertificateInstallFailed() *CertificateInstallFailedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*AppEvent_CertificateInstallFailed); ok {
+ return x.CertificateInstallFailed
+ }
+ }
+ return nil
+}
+
+func (x *AppEvent) GetKnowledgeBaseSuggestions() *KnowledgeBaseSuggestionsEvent {
+ if x != nil {
+ if x, ok := x.Event.(*AppEvent_KnowledgeBaseSuggestions); ok {
+ return x.KnowledgeBaseSuggestions
+ }
+ }
+ return nil
+}
+
+func (x *AppEvent) GetRepairStarted() *RepairStartedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*AppEvent_RepairStarted); ok {
+ return x.RepairStarted
+ }
+ }
+ return nil
+}
+
+func (x *AppEvent) GetAllUsersLoaded() *AllUsersLoadedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*AppEvent_AllUsersLoaded); ok {
+ return x.AllUsersLoaded
+ }
+ }
+ return nil
+}
+
+func (x *AppEvent) GetUserNotification() *UserNotificationEvent {
+ if x != nil {
+ if x, ok := x.Event.(*AppEvent_UserNotification); ok {
+ return x.UserNotification
+ }
+ }
+ return nil
+}
+
+type isAppEvent_Event interface {
+ isAppEvent_Event()
+}
+
+type AppEvent_InternetStatus struct {
+ InternetStatus *InternetStatusEvent `protobuf:"bytes,1,opt,name=internetStatus,proto3,oneof"`
+}
+
+type AppEvent_ToggleAutostartFinished struct {
+ ToggleAutostartFinished *ToggleAutostartFinishedEvent `protobuf:"bytes,2,opt,name=toggleAutostartFinished,proto3,oneof"`
+}
+
+type AppEvent_ResetFinished struct {
+ ResetFinished *ResetFinishedEvent `protobuf:"bytes,3,opt,name=resetFinished,proto3,oneof"`
+}
+
+type AppEvent_ReportBugFinished struct {
+ ReportBugFinished *ReportBugFinishedEvent `protobuf:"bytes,4,opt,name=reportBugFinished,proto3,oneof"`
+}
+
+type AppEvent_ReportBugSuccess struct {
+ ReportBugSuccess *ReportBugSuccessEvent `protobuf:"bytes,5,opt,name=reportBugSuccess,proto3,oneof"`
+}
+
+type AppEvent_ReportBugError struct {
+ ReportBugError *ReportBugErrorEvent `protobuf:"bytes,6,opt,name=reportBugError,proto3,oneof"`
+}
+
+type AppEvent_ShowMainWindow struct {
+ ShowMainWindow *ShowMainWindowEvent `protobuf:"bytes,7,opt,name=showMainWindow,proto3,oneof"`
+}
+
+type AppEvent_ReportBugFallback struct {
+ ReportBugFallback *ReportBugFallbackEvent `protobuf:"bytes,8,opt,name=reportBugFallback,proto3,oneof"`
+}
+
+type AppEvent_CertificateInstallSuccess struct {
+ CertificateInstallSuccess *CertificateInstallSuccessEvent `protobuf:"bytes,9,opt,name=certificateInstallSuccess,proto3,oneof"`
+}
+
+type AppEvent_CertificateInstallCanceled struct {
+ CertificateInstallCanceled *CertificateInstallCanceledEvent `protobuf:"bytes,10,opt,name=certificateInstallCanceled,proto3,oneof"`
+}
+
+type AppEvent_CertificateInstallFailed struct {
+ CertificateInstallFailed *CertificateInstallFailedEvent `protobuf:"bytes,11,opt,name=certificateInstallFailed,proto3,oneof"`
+}
+
+type AppEvent_KnowledgeBaseSuggestions struct {
+ KnowledgeBaseSuggestions *KnowledgeBaseSuggestionsEvent `protobuf:"bytes,12,opt,name=knowledgeBaseSuggestions,proto3,oneof"`
+}
+
+type AppEvent_RepairStarted struct {
+ RepairStarted *RepairStartedEvent `protobuf:"bytes,13,opt,name=repairStarted,proto3,oneof"`
+}
+
+type AppEvent_AllUsersLoaded struct {
+ AllUsersLoaded *AllUsersLoadedEvent `protobuf:"bytes,14,opt,name=allUsersLoaded,proto3,oneof"`
+}
+
+type AppEvent_UserNotification struct {
+ UserNotification *UserNotificationEvent `protobuf:"bytes,15,opt,name=userNotification,proto3,oneof"`
+}
+
+func (*AppEvent_InternetStatus) isAppEvent_Event() {}
+
+func (*AppEvent_ToggleAutostartFinished) isAppEvent_Event() {}
+
+func (*AppEvent_ResetFinished) isAppEvent_Event() {}
+
+func (*AppEvent_ReportBugFinished) isAppEvent_Event() {}
+
+func (*AppEvent_ReportBugSuccess) isAppEvent_Event() {}
+
+func (*AppEvent_ReportBugError) isAppEvent_Event() {}
+
+func (*AppEvent_ShowMainWindow) isAppEvent_Event() {}
+
+func (*AppEvent_ReportBugFallback) isAppEvent_Event() {}
+
+func (*AppEvent_CertificateInstallSuccess) isAppEvent_Event() {}
+
+func (*AppEvent_CertificateInstallCanceled) isAppEvent_Event() {}
+
+func (*AppEvent_CertificateInstallFailed) isAppEvent_Event() {}
+
+func (*AppEvent_KnowledgeBaseSuggestions) isAppEvent_Event() {}
+
+func (*AppEvent_RepairStarted) isAppEvent_Event() {}
+
+func (*AppEvent_AllUsersLoaded) isAppEvent_Event() {}
+
+func (*AppEvent_UserNotification) isAppEvent_Event() {}
+
+type InternetStatusEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Connected bool `protobuf:"varint,1,opt,name=connected,proto3" json:"connected,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *InternetStatusEvent) Reset() {
+ *x = InternetStatusEvent{}
+ mi := &file_bridge_proto_msgTypes[15]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *InternetStatusEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*InternetStatusEvent) ProtoMessage() {}
+
+func (x *InternetStatusEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 InternetStatusEvent.ProtoReflect.Descriptor instead.
+func (*InternetStatusEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *InternetStatusEvent) GetConnected() bool {
+ if x != nil {
+ return x.Connected
+ }
+ return false
+}
+
+type ToggleAutostartFinishedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ToggleAutostartFinishedEvent) Reset() {
+ *x = ToggleAutostartFinishedEvent{}
+ mi := &file_bridge_proto_msgTypes[16]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ToggleAutostartFinishedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ToggleAutostartFinishedEvent) ProtoMessage() {}
+
+func (x *ToggleAutostartFinishedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 ToggleAutostartFinishedEvent.ProtoReflect.Descriptor instead.
+func (*ToggleAutostartFinishedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{16}
+}
+
+type ResetFinishedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ResetFinishedEvent) Reset() {
+ *x = ResetFinishedEvent{}
+ mi := &file_bridge_proto_msgTypes[17]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ResetFinishedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ResetFinishedEvent) ProtoMessage() {}
+
+func (x *ResetFinishedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 ResetFinishedEvent.ProtoReflect.Descriptor instead.
+func (*ResetFinishedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{17}
+}
+
+type ReportBugFinishedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ReportBugFinishedEvent) Reset() {
+ *x = ReportBugFinishedEvent{}
+ mi := &file_bridge_proto_msgTypes[18]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ReportBugFinishedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReportBugFinishedEvent) ProtoMessage() {}
+
+func (x *ReportBugFinishedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 ReportBugFinishedEvent.ProtoReflect.Descriptor instead.
+func (*ReportBugFinishedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{18}
+}
+
+type ReportBugSuccessEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ReportBugSuccessEvent) Reset() {
+ *x = ReportBugSuccessEvent{}
+ mi := &file_bridge_proto_msgTypes[19]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ReportBugSuccessEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReportBugSuccessEvent) ProtoMessage() {}
+
+func (x *ReportBugSuccessEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 ReportBugSuccessEvent.ProtoReflect.Descriptor instead.
+func (*ReportBugSuccessEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{19}
+}
+
+type ReportBugErrorEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ReportBugErrorEvent) Reset() {
+ *x = ReportBugErrorEvent{}
+ mi := &file_bridge_proto_msgTypes[20]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ReportBugErrorEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReportBugErrorEvent) ProtoMessage() {}
+
+func (x *ReportBugErrorEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 ReportBugErrorEvent.ProtoReflect.Descriptor instead.
+func (*ReportBugErrorEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{20}
+}
+
+type ShowMainWindowEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ShowMainWindowEvent) Reset() {
+ *x = ShowMainWindowEvent{}
+ mi := &file_bridge_proto_msgTypes[21]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ShowMainWindowEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ShowMainWindowEvent) ProtoMessage() {}
+
+func (x *ShowMainWindowEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 ShowMainWindowEvent.ProtoReflect.Descriptor instead.
+func (*ShowMainWindowEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{21}
+}
+
+type ReportBugFallbackEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ReportBugFallbackEvent) Reset() {
+ *x = ReportBugFallbackEvent{}
+ mi := &file_bridge_proto_msgTypes[22]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ReportBugFallbackEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReportBugFallbackEvent) ProtoMessage() {}
+
+func (x *ReportBugFallbackEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 ReportBugFallbackEvent.ProtoReflect.Descriptor instead.
+func (*ReportBugFallbackEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{22}
+}
+
+type CertificateInstallSuccessEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CertificateInstallSuccessEvent) Reset() {
+ *x = CertificateInstallSuccessEvent{}
+ mi := &file_bridge_proto_msgTypes[23]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CertificateInstallSuccessEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CertificateInstallSuccessEvent) ProtoMessage() {}
+
+func (x *CertificateInstallSuccessEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 CertificateInstallSuccessEvent.ProtoReflect.Descriptor instead.
+func (*CertificateInstallSuccessEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{23}
+}
+
+type CertificateInstallCanceledEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CertificateInstallCanceledEvent) Reset() {
+ *x = CertificateInstallCanceledEvent{}
+ mi := &file_bridge_proto_msgTypes[24]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CertificateInstallCanceledEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CertificateInstallCanceledEvent) ProtoMessage() {}
+
+func (x *CertificateInstallCanceledEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_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 CertificateInstallCanceledEvent.ProtoReflect.Descriptor instead.
+func (*CertificateInstallCanceledEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{24}
+}
+
+type CertificateInstallFailedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CertificateInstallFailedEvent) Reset() {
+ *x = CertificateInstallFailedEvent{}
+ mi := &file_bridge_proto_msgTypes[25]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CertificateInstallFailedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CertificateInstallFailedEvent) ProtoMessage() {}
+
+func (x *CertificateInstallFailedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[25]
+ 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 CertificateInstallFailedEvent.ProtoReflect.Descriptor instead.
+func (*CertificateInstallFailedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{25}
+}
+
+type RepairStartedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *RepairStartedEvent) Reset() {
+ *x = RepairStartedEvent{}
+ mi := &file_bridge_proto_msgTypes[26]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *RepairStartedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RepairStartedEvent) ProtoMessage() {}
+
+func (x *RepairStartedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[26]
+ 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 RepairStartedEvent.ProtoReflect.Descriptor instead.
+func (*RepairStartedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{26}
+}
+
+type AllUsersLoadedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *AllUsersLoadedEvent) Reset() {
+ *x = AllUsersLoadedEvent{}
+ mi := &file_bridge_proto_msgTypes[27]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *AllUsersLoadedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AllUsersLoadedEvent) ProtoMessage() {}
+
+func (x *AllUsersLoadedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[27]
+ 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 AllUsersLoadedEvent.ProtoReflect.Descriptor instead.
+func (*AllUsersLoadedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{27}
+}
+
+type KnowledgeBaseSuggestion struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
+ Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *KnowledgeBaseSuggestion) Reset() {
+ *x = KnowledgeBaseSuggestion{}
+ mi := &file_bridge_proto_msgTypes[28]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *KnowledgeBaseSuggestion) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KnowledgeBaseSuggestion) ProtoMessage() {}
+
+func (x *KnowledgeBaseSuggestion) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[28]
+ 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 KnowledgeBaseSuggestion.ProtoReflect.Descriptor instead.
+func (*KnowledgeBaseSuggestion) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{28}
+}
+
+func (x *KnowledgeBaseSuggestion) GetUrl() string {
+ if x != nil {
+ return x.Url
+ }
+ return ""
+}
+
+func (x *KnowledgeBaseSuggestion) GetTitle() string {
+ if x != nil {
+ return x.Title
+ }
+ return ""
+}
+
+type KnowledgeBaseSuggestionsEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Suggestions []*KnowledgeBaseSuggestion `protobuf:"bytes,1,rep,name=suggestions,proto3" json:"suggestions,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *KnowledgeBaseSuggestionsEvent) Reset() {
+ *x = KnowledgeBaseSuggestionsEvent{}
+ mi := &file_bridge_proto_msgTypes[29]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *KnowledgeBaseSuggestionsEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KnowledgeBaseSuggestionsEvent) ProtoMessage() {}
+
+func (x *KnowledgeBaseSuggestionsEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[29]
+ 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 KnowledgeBaseSuggestionsEvent.ProtoReflect.Descriptor instead.
+func (*KnowledgeBaseSuggestionsEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{29}
+}
+
+func (x *KnowledgeBaseSuggestionsEvent) GetSuggestions() []*KnowledgeBaseSuggestion {
+ if x != nil {
+ return x.Suggestions
+ }
+ return nil
+}
+
+// **********************************************************
+// Login related events
+// **********************************************************
+type LoginEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Types that are valid to be assigned to Event:
+ //
+ // *LoginEvent_Error
+ // *LoginEvent_TfaRequested
+ // *LoginEvent_TwoPasswordRequested
+ // *LoginEvent_Finished
+ // *LoginEvent_AlreadyLoggedIn
+ // *LoginEvent_HvRequested
+ // *LoginEvent_FidoRequested
+ // *LoginEvent_TfaOrFidoRequested
+ // *LoginEvent_LoginFidoTouchRequested
+ // *LoginEvent_LoginFidoTouchCompleted
+ // *LoginEvent_LoginFidoPinRequired
+ Event isLoginEvent_Event `protobuf_oneof:"event"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *LoginEvent) Reset() {
+ *x = LoginEvent{}
+ mi := &file_bridge_proto_msgTypes[30]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *LoginEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoginEvent) ProtoMessage() {}
+
+func (x *LoginEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[30]
+ 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 LoginEvent.ProtoReflect.Descriptor instead.
+func (*LoginEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{30}
+}
+
+func (x *LoginEvent) GetEvent() isLoginEvent_Event {
+ if x != nil {
+ return x.Event
+ }
+ return nil
+}
+
+func (x *LoginEvent) GetError() *LoginErrorEvent {
+ if x != nil {
+ if x, ok := x.Event.(*LoginEvent_Error); ok {
+ return x.Error
+ }
+ }
+ return nil
+}
+
+func (x *LoginEvent) GetTfaRequested() *LoginTfaRequestedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*LoginEvent_TfaRequested); ok {
+ return x.TfaRequested
+ }
+ }
+ return nil
+}
+
+func (x *LoginEvent) GetTwoPasswordRequested() *LoginTwoPasswordsRequestedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*LoginEvent_TwoPasswordRequested); ok {
+ return x.TwoPasswordRequested
+ }
+ }
+ return nil
+}
+
+func (x *LoginEvent) GetFinished() *LoginFinishedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*LoginEvent_Finished); ok {
+ return x.Finished
+ }
+ }
+ return nil
+}
+
+func (x *LoginEvent) GetAlreadyLoggedIn() *LoginFinishedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*LoginEvent_AlreadyLoggedIn); ok {
+ return x.AlreadyLoggedIn
+ }
+ }
+ return nil
+}
+
+func (x *LoginEvent) GetHvRequested() *LoginHvRequestedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*LoginEvent_HvRequested); ok {
+ return x.HvRequested
+ }
+ }
+ return nil
+}
+
+func (x *LoginEvent) GetFidoRequested() *LoginFidoRequestedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*LoginEvent_FidoRequested); ok {
+ return x.FidoRequested
+ }
+ }
+ return nil
+}
+
+func (x *LoginEvent) GetTfaOrFidoRequested() *LoginTfaOrFidoRequestedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*LoginEvent_TfaOrFidoRequested); ok {
+ return x.TfaOrFidoRequested
+ }
+ }
+ return nil
+}
+
+func (x *LoginEvent) GetLoginFidoTouchRequested() *LoginFidoTouchEvent {
+ if x != nil {
+ if x, ok := x.Event.(*LoginEvent_LoginFidoTouchRequested); ok {
+ return x.LoginFidoTouchRequested
+ }
+ }
+ return nil
+}
+
+func (x *LoginEvent) GetLoginFidoTouchCompleted() *LoginFidoTouchEvent {
+ if x != nil {
+ if x, ok := x.Event.(*LoginEvent_LoginFidoTouchCompleted); ok {
+ return x.LoginFidoTouchCompleted
+ }
+ }
+ return nil
+}
+
+func (x *LoginEvent) GetLoginFidoPinRequired() *LoginFidoPinRequired {
+ if x != nil {
+ if x, ok := x.Event.(*LoginEvent_LoginFidoPinRequired); ok {
+ return x.LoginFidoPinRequired
+ }
+ }
+ return nil
+}
+
+type isLoginEvent_Event interface {
+ isLoginEvent_Event()
+}
+
+type LoginEvent_Error struct {
+ Error *LoginErrorEvent `protobuf:"bytes,1,opt,name=error,proto3,oneof"`
+}
+
+type LoginEvent_TfaRequested struct {
+ TfaRequested *LoginTfaRequestedEvent `protobuf:"bytes,2,opt,name=tfaRequested,proto3,oneof"`
+}
+
+type LoginEvent_TwoPasswordRequested struct {
+ TwoPasswordRequested *LoginTwoPasswordsRequestedEvent `protobuf:"bytes,3,opt,name=twoPasswordRequested,proto3,oneof"`
+}
+
+type LoginEvent_Finished struct {
+ Finished *LoginFinishedEvent `protobuf:"bytes,4,opt,name=finished,proto3,oneof"`
+}
+
+type LoginEvent_AlreadyLoggedIn struct {
+ AlreadyLoggedIn *LoginFinishedEvent `protobuf:"bytes,5,opt,name=alreadyLoggedIn,proto3,oneof"`
+}
+
+type LoginEvent_HvRequested struct {
+ HvRequested *LoginHvRequestedEvent `protobuf:"bytes,6,opt,name=hvRequested,proto3,oneof"`
+}
+
+type LoginEvent_FidoRequested struct {
+ FidoRequested *LoginFidoRequestedEvent `protobuf:"bytes,7,opt,name=fidoRequested,proto3,oneof"`
+}
+
+type LoginEvent_TfaOrFidoRequested struct {
+ TfaOrFidoRequested *LoginTfaOrFidoRequestedEvent `protobuf:"bytes,8,opt,name=tfaOrFidoRequested,proto3,oneof"`
+}
+
+type LoginEvent_LoginFidoTouchRequested struct {
+ LoginFidoTouchRequested *LoginFidoTouchEvent `protobuf:"bytes,9,opt,name=loginFidoTouchRequested,proto3,oneof"`
+}
+
+type LoginEvent_LoginFidoTouchCompleted struct {
+ LoginFidoTouchCompleted *LoginFidoTouchEvent `protobuf:"bytes,10,opt,name=loginFidoTouchCompleted,proto3,oneof"`
+}
+
+type LoginEvent_LoginFidoPinRequired struct {
+ LoginFidoPinRequired *LoginFidoPinRequired `protobuf:"bytes,11,opt,name=loginFidoPinRequired,proto3,oneof"`
+}
+
+func (*LoginEvent_Error) isLoginEvent_Event() {}
+
+func (*LoginEvent_TfaRequested) isLoginEvent_Event() {}
+
+func (*LoginEvent_TwoPasswordRequested) isLoginEvent_Event() {}
+
+func (*LoginEvent_Finished) isLoginEvent_Event() {}
+
+func (*LoginEvent_AlreadyLoggedIn) isLoginEvent_Event() {}
+
+func (*LoginEvent_HvRequested) isLoginEvent_Event() {}
+
+func (*LoginEvent_FidoRequested) isLoginEvent_Event() {}
+
+func (*LoginEvent_TfaOrFidoRequested) isLoginEvent_Event() {}
+
+func (*LoginEvent_LoginFidoTouchRequested) isLoginEvent_Event() {}
+
+func (*LoginEvent_LoginFidoTouchCompleted) isLoginEvent_Event() {}
+
+func (*LoginEvent_LoginFidoPinRequired) isLoginEvent_Event() {}
+
+type LoginErrorEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Type LoginErrorType `protobuf:"varint,1,opt,name=type,proto3,enum=grpc.LoginErrorType" json:"type,omitempty"`
+ Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *LoginErrorEvent) Reset() {
+ *x = LoginErrorEvent{}
+ mi := &file_bridge_proto_msgTypes[31]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *LoginErrorEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoginErrorEvent) ProtoMessage() {}
+
+func (x *LoginErrorEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[31]
+ 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 LoginErrorEvent.ProtoReflect.Descriptor instead.
+func (*LoginErrorEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{31}
+}
+
+func (x *LoginErrorEvent) GetType() LoginErrorType {
+ if x != nil {
+ return x.Type
+ }
+ return LoginErrorType_USERNAME_PASSWORD_ERROR
+}
+
+func (x *LoginErrorEvent) GetMessage() string {
+ if x != nil {
+ return x.Message
+ }
+ return ""
+}
+
+type LoginTfaRequestedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *LoginTfaRequestedEvent) Reset() {
+ *x = LoginTfaRequestedEvent{}
+ mi := &file_bridge_proto_msgTypes[32]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *LoginTfaRequestedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoginTfaRequestedEvent) ProtoMessage() {}
+
+func (x *LoginTfaRequestedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[32]
+ 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 LoginTfaRequestedEvent.ProtoReflect.Descriptor instead.
+func (*LoginTfaRequestedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{32}
+}
+
+func (x *LoginTfaRequestedEvent) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+type LoginFidoRequestedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *LoginFidoRequestedEvent) Reset() {
+ *x = LoginFidoRequestedEvent{}
+ mi := &file_bridge_proto_msgTypes[33]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *LoginFidoRequestedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoginFidoRequestedEvent) ProtoMessage() {}
+
+func (x *LoginFidoRequestedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[33]
+ 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 LoginFidoRequestedEvent.ProtoReflect.Descriptor instead.
+func (*LoginFidoRequestedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{33}
+}
+
+func (x *LoginFidoRequestedEvent) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+type LoginTfaOrFidoRequestedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *LoginTfaOrFidoRequestedEvent) Reset() {
+ *x = LoginTfaOrFidoRequestedEvent{}
+ mi := &file_bridge_proto_msgTypes[34]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *LoginTfaOrFidoRequestedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoginTfaOrFidoRequestedEvent) ProtoMessage() {}
+
+func (x *LoginTfaOrFidoRequestedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[34]
+ 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 LoginTfaOrFidoRequestedEvent.ProtoReflect.Descriptor instead.
+func (*LoginTfaOrFidoRequestedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{34}
+}
+
+func (x *LoginTfaOrFidoRequestedEvent) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+type LoginFidoTouchEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *LoginFidoTouchEvent) Reset() {
+ *x = LoginFidoTouchEvent{}
+ mi := &file_bridge_proto_msgTypes[35]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *LoginFidoTouchEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoginFidoTouchEvent) ProtoMessage() {}
+
+func (x *LoginFidoTouchEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[35]
+ 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 LoginFidoTouchEvent.ProtoReflect.Descriptor instead.
+func (*LoginFidoTouchEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{35}
+}
+
+func (x *LoginFidoTouchEvent) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+type LoginFidoPinRequired struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *LoginFidoPinRequired) Reset() {
+ *x = LoginFidoPinRequired{}
+ mi := &file_bridge_proto_msgTypes[36]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *LoginFidoPinRequired) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoginFidoPinRequired) ProtoMessage() {}
+
+func (x *LoginFidoPinRequired) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[36]
+ 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 LoginFidoPinRequired.ProtoReflect.Descriptor instead.
+func (*LoginFidoPinRequired) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{36}
+}
+
+func (x *LoginFidoPinRequired) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+type LoginTwoPasswordsRequestedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *LoginTwoPasswordsRequestedEvent) Reset() {
+ *x = LoginTwoPasswordsRequestedEvent{}
+ mi := &file_bridge_proto_msgTypes[37]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *LoginTwoPasswordsRequestedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoginTwoPasswordsRequestedEvent) ProtoMessage() {}
+
+func (x *LoginTwoPasswordsRequestedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[37]
+ 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 LoginTwoPasswordsRequestedEvent.ProtoReflect.Descriptor instead.
+func (*LoginTwoPasswordsRequestedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{37}
+}
+
+func (x *LoginTwoPasswordsRequestedEvent) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+type LoginFinishedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"`
+ WasSignedOut bool `protobuf:"varint,2,opt,name=wasSignedOut,proto3" json:"wasSignedOut,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *LoginFinishedEvent) Reset() {
+ *x = LoginFinishedEvent{}
+ mi := &file_bridge_proto_msgTypes[38]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *LoginFinishedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoginFinishedEvent) ProtoMessage() {}
+
+func (x *LoginFinishedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[38]
+ 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 LoginFinishedEvent.ProtoReflect.Descriptor instead.
+func (*LoginFinishedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{38}
+}
+
+func (x *LoginFinishedEvent) GetUserID() string {
+ if x != nil {
+ return x.UserID
+ }
+ return ""
+}
+
+func (x *LoginFinishedEvent) GetWasSignedOut() bool {
+ if x != nil {
+ return x.WasSignedOut
+ }
+ return false
+}
+
+type LoginHvRequestedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ HvUrl string `protobuf:"bytes,1,opt,name=hvUrl,proto3" json:"hvUrl,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *LoginHvRequestedEvent) Reset() {
+ *x = LoginHvRequestedEvent{}
+ mi := &file_bridge_proto_msgTypes[39]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *LoginHvRequestedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoginHvRequestedEvent) ProtoMessage() {}
+
+func (x *LoginHvRequestedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[39]
+ 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 LoginHvRequestedEvent.ProtoReflect.Descriptor instead.
+func (*LoginHvRequestedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{39}
+}
+
+func (x *LoginHvRequestedEvent) GetHvUrl() string {
+ if x != nil {
+ return x.HvUrl
+ }
+ return ""
+}
+
+// **********************************************************
+// Update related events
+// **********************************************************
+type UpdateEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Types that are valid to be assigned to Event:
+ //
+ // *UpdateEvent_Error
+ // *UpdateEvent_ManualReady
+ // *UpdateEvent_ManualRestartNeeded
+ // *UpdateEvent_Force
+ // *UpdateEvent_SilentRestartNeeded
+ // *UpdateEvent_IsLatestVersion
+ // *UpdateEvent_CheckFinished
+ // *UpdateEvent_VersionChanged
+ Event isUpdateEvent_Event `protobuf_oneof:"event"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UpdateEvent) Reset() {
+ *x = UpdateEvent{}
+ mi := &file_bridge_proto_msgTypes[40]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UpdateEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateEvent) ProtoMessage() {}
+
+func (x *UpdateEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[40]
+ 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 UpdateEvent.ProtoReflect.Descriptor instead.
+func (*UpdateEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{40}
+}
+
+func (x *UpdateEvent) GetEvent() isUpdateEvent_Event {
+ if x != nil {
+ return x.Event
+ }
+ return nil
+}
+
+func (x *UpdateEvent) GetError() *UpdateErrorEvent {
+ if x != nil {
+ if x, ok := x.Event.(*UpdateEvent_Error); ok {
+ return x.Error
+ }
+ }
+ return nil
+}
+
+func (x *UpdateEvent) GetManualReady() *UpdateManualReadyEvent {
+ if x != nil {
+ if x, ok := x.Event.(*UpdateEvent_ManualReady); ok {
+ return x.ManualReady
+ }
+ }
+ return nil
+}
+
+func (x *UpdateEvent) GetManualRestartNeeded() *UpdateManualRestartNeededEvent {
+ if x != nil {
+ if x, ok := x.Event.(*UpdateEvent_ManualRestartNeeded); ok {
+ return x.ManualRestartNeeded
+ }
+ }
+ return nil
+}
+
+func (x *UpdateEvent) GetForce() *UpdateForceEvent {
+ if x != nil {
+ if x, ok := x.Event.(*UpdateEvent_Force); ok {
+ return x.Force
+ }
+ }
+ return nil
+}
+
+func (x *UpdateEvent) GetSilentRestartNeeded() *UpdateSilentRestartNeeded {
+ if x != nil {
+ if x, ok := x.Event.(*UpdateEvent_SilentRestartNeeded); ok {
+ return x.SilentRestartNeeded
+ }
+ }
+ return nil
+}
+
+func (x *UpdateEvent) GetIsLatestVersion() *UpdateIsLatestVersion {
+ if x != nil {
+ if x, ok := x.Event.(*UpdateEvent_IsLatestVersion); ok {
+ return x.IsLatestVersion
+ }
+ }
+ return nil
+}
+
+func (x *UpdateEvent) GetCheckFinished() *UpdateCheckFinished {
+ if x != nil {
+ if x, ok := x.Event.(*UpdateEvent_CheckFinished); ok {
+ return x.CheckFinished
+ }
+ }
+ return nil
+}
+
+func (x *UpdateEvent) GetVersionChanged() *UpdateVersionChanged {
+ if x != nil {
+ if x, ok := x.Event.(*UpdateEvent_VersionChanged); ok {
+ return x.VersionChanged
+ }
+ }
+ return nil
+}
+
+type isUpdateEvent_Event interface {
+ isUpdateEvent_Event()
+}
+
+type UpdateEvent_Error struct {
+ Error *UpdateErrorEvent `protobuf:"bytes,1,opt,name=error,proto3,oneof"`
+}
+
+type UpdateEvent_ManualReady struct {
+ ManualReady *UpdateManualReadyEvent `protobuf:"bytes,2,opt,name=manualReady,proto3,oneof"`
+}
+
+type UpdateEvent_ManualRestartNeeded struct {
+ ManualRestartNeeded *UpdateManualRestartNeededEvent `protobuf:"bytes,3,opt,name=manualRestartNeeded,proto3,oneof"`
+}
+
+type UpdateEvent_Force struct {
+ Force *UpdateForceEvent `protobuf:"bytes,4,opt,name=force,proto3,oneof"`
+}
+
+type UpdateEvent_SilentRestartNeeded struct {
+ SilentRestartNeeded *UpdateSilentRestartNeeded `protobuf:"bytes,5,opt,name=silentRestartNeeded,proto3,oneof"`
+}
+
+type UpdateEvent_IsLatestVersion struct {
+ IsLatestVersion *UpdateIsLatestVersion `protobuf:"bytes,6,opt,name=isLatestVersion,proto3,oneof"`
+}
+
+type UpdateEvent_CheckFinished struct {
+ CheckFinished *UpdateCheckFinished `protobuf:"bytes,7,opt,name=checkFinished,proto3,oneof"`
+}
+
+type UpdateEvent_VersionChanged struct {
+ VersionChanged *UpdateVersionChanged `protobuf:"bytes,8,opt,name=versionChanged,proto3,oneof"`
+}
+
+func (*UpdateEvent_Error) isUpdateEvent_Event() {}
+
+func (*UpdateEvent_ManualReady) isUpdateEvent_Event() {}
+
+func (*UpdateEvent_ManualRestartNeeded) isUpdateEvent_Event() {}
+
+func (*UpdateEvent_Force) isUpdateEvent_Event() {}
+
+func (*UpdateEvent_SilentRestartNeeded) isUpdateEvent_Event() {}
+
+func (*UpdateEvent_IsLatestVersion) isUpdateEvent_Event() {}
+
+func (*UpdateEvent_CheckFinished) isUpdateEvent_Event() {}
+
+func (*UpdateEvent_VersionChanged) isUpdateEvent_Event() {}
+
+type UpdateErrorEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Type UpdateErrorType `protobuf:"varint,1,opt,name=type,proto3,enum=grpc.UpdateErrorType" json:"type,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UpdateErrorEvent) Reset() {
+ *x = UpdateErrorEvent{}
+ mi := &file_bridge_proto_msgTypes[41]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UpdateErrorEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateErrorEvent) ProtoMessage() {}
+
+func (x *UpdateErrorEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[41]
+ 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 UpdateErrorEvent.ProtoReflect.Descriptor instead.
+func (*UpdateErrorEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{41}
+}
+
+func (x *UpdateErrorEvent) GetType() UpdateErrorType {
+ if x != nil {
+ return x.Type
+ }
+ return UpdateErrorType_UPDATE_MANUAL_ERROR
+}
+
+type UpdateManualReadyEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UpdateManualReadyEvent) Reset() {
+ *x = UpdateManualReadyEvent{}
+ mi := &file_bridge_proto_msgTypes[42]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UpdateManualReadyEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateManualReadyEvent) ProtoMessage() {}
+
+func (x *UpdateManualReadyEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[42]
+ 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 UpdateManualReadyEvent.ProtoReflect.Descriptor instead.
+func (*UpdateManualReadyEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{42}
+}
+
+func (x *UpdateManualReadyEvent) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+type UpdateManualRestartNeededEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UpdateManualRestartNeededEvent) Reset() {
+ *x = UpdateManualRestartNeededEvent{}
+ mi := &file_bridge_proto_msgTypes[43]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UpdateManualRestartNeededEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateManualRestartNeededEvent) ProtoMessage() {}
+
+func (x *UpdateManualRestartNeededEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[43]
+ 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 UpdateManualRestartNeededEvent.ProtoReflect.Descriptor instead.
+func (*UpdateManualRestartNeededEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{43}
+}
+
+type UpdateForceEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UpdateForceEvent) Reset() {
+ *x = UpdateForceEvent{}
+ mi := &file_bridge_proto_msgTypes[44]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UpdateForceEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateForceEvent) ProtoMessage() {}
+
+func (x *UpdateForceEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[44]
+ 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 UpdateForceEvent.ProtoReflect.Descriptor instead.
+func (*UpdateForceEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{44}
+}
+
+func (x *UpdateForceEvent) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+type UpdateSilentRestartNeeded struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UpdateSilentRestartNeeded) Reset() {
+ *x = UpdateSilentRestartNeeded{}
+ mi := &file_bridge_proto_msgTypes[45]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UpdateSilentRestartNeeded) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateSilentRestartNeeded) ProtoMessage() {}
+
+func (x *UpdateSilentRestartNeeded) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[45]
+ 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 UpdateSilentRestartNeeded.ProtoReflect.Descriptor instead.
+func (*UpdateSilentRestartNeeded) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{45}
+}
+
+type UpdateIsLatestVersion struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UpdateIsLatestVersion) Reset() {
+ *x = UpdateIsLatestVersion{}
+ mi := &file_bridge_proto_msgTypes[46]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UpdateIsLatestVersion) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateIsLatestVersion) ProtoMessage() {}
+
+func (x *UpdateIsLatestVersion) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[46]
+ 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 UpdateIsLatestVersion.ProtoReflect.Descriptor instead.
+func (*UpdateIsLatestVersion) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{46}
+}
+
+type UpdateCheckFinished struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UpdateCheckFinished) Reset() {
+ *x = UpdateCheckFinished{}
+ mi := &file_bridge_proto_msgTypes[47]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UpdateCheckFinished) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateCheckFinished) ProtoMessage() {}
+
+func (x *UpdateCheckFinished) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[47]
+ 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 UpdateCheckFinished.ProtoReflect.Descriptor instead.
+func (*UpdateCheckFinished) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{47}
+}
+
+type UpdateVersionChanged struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UpdateVersionChanged) Reset() {
+ *x = UpdateVersionChanged{}
+ mi := &file_bridge_proto_msgTypes[48]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UpdateVersionChanged) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateVersionChanged) ProtoMessage() {}
+
+func (x *UpdateVersionChanged) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[48]
+ 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 UpdateVersionChanged.ProtoReflect.Descriptor instead.
+func (*UpdateVersionChanged) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{48}
+}
+
+// **********************************************************
+// Cache on disk related events
+// **********************************************************
+type DiskCacheEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Types that are valid to be assigned to Event:
+ //
+ // *DiskCacheEvent_Error
+ // *DiskCacheEvent_PathChanged
+ // *DiskCacheEvent_PathChangeFinished
+ Event isDiskCacheEvent_Event `protobuf_oneof:"event"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *DiskCacheEvent) Reset() {
+ *x = DiskCacheEvent{}
+ mi := &file_bridge_proto_msgTypes[49]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *DiskCacheEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DiskCacheEvent) ProtoMessage() {}
+
+func (x *DiskCacheEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[49]
+ 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 DiskCacheEvent.ProtoReflect.Descriptor instead.
+func (*DiskCacheEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{49}
+}
+
+func (x *DiskCacheEvent) GetEvent() isDiskCacheEvent_Event {
+ if x != nil {
+ return x.Event
+ }
+ return nil
+}
+
+func (x *DiskCacheEvent) GetError() *DiskCacheErrorEvent {
+ if x != nil {
+ if x, ok := x.Event.(*DiskCacheEvent_Error); ok {
+ return x.Error
+ }
+ }
+ return nil
+}
+
+func (x *DiskCacheEvent) GetPathChanged() *DiskCachePathChangedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*DiskCacheEvent_PathChanged); ok {
+ return x.PathChanged
+ }
+ }
+ return nil
+}
+
+func (x *DiskCacheEvent) GetPathChangeFinished() *DiskCachePathChangeFinishedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*DiskCacheEvent_PathChangeFinished); ok {
+ return x.PathChangeFinished
+ }
+ }
+ return nil
+}
+
+type isDiskCacheEvent_Event interface {
+ isDiskCacheEvent_Event()
+}
+
+type DiskCacheEvent_Error struct {
+ Error *DiskCacheErrorEvent `protobuf:"bytes,1,opt,name=error,proto3,oneof"`
+}
+
+type DiskCacheEvent_PathChanged struct {
+ PathChanged *DiskCachePathChangedEvent `protobuf:"bytes,2,opt,name=pathChanged,proto3,oneof"`
+}
+
+type DiskCacheEvent_PathChangeFinished struct {
+ PathChangeFinished *DiskCachePathChangeFinishedEvent `protobuf:"bytes,3,opt,name=pathChangeFinished,proto3,oneof"`
+}
+
+func (*DiskCacheEvent_Error) isDiskCacheEvent_Event() {}
+
+func (*DiskCacheEvent_PathChanged) isDiskCacheEvent_Event() {}
+
+func (*DiskCacheEvent_PathChangeFinished) isDiskCacheEvent_Event() {}
+
+type DiskCacheErrorEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Type DiskCacheErrorType `protobuf:"varint,1,opt,name=type,proto3,enum=grpc.DiskCacheErrorType" json:"type,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *DiskCacheErrorEvent) Reset() {
+ *x = DiskCacheErrorEvent{}
+ mi := &file_bridge_proto_msgTypes[50]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *DiskCacheErrorEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DiskCacheErrorEvent) ProtoMessage() {}
+
+func (x *DiskCacheErrorEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[50]
+ 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 DiskCacheErrorEvent.ProtoReflect.Descriptor instead.
+func (*DiskCacheErrorEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{50}
+}
+
+func (x *DiskCacheErrorEvent) GetType() DiskCacheErrorType {
+ if x != nil {
+ return x.Type
+ }
+ return DiskCacheErrorType_CANT_MOVE_DISK_CACHE_ERROR
+}
+
+type DiskCachePathChangedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *DiskCachePathChangedEvent) Reset() {
+ *x = DiskCachePathChangedEvent{}
+ mi := &file_bridge_proto_msgTypes[51]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *DiskCachePathChangedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DiskCachePathChangedEvent) ProtoMessage() {}
+
+func (x *DiskCachePathChangedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[51]
+ 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 DiskCachePathChangedEvent.ProtoReflect.Descriptor instead.
+func (*DiskCachePathChangedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{51}
+}
+
+func (x *DiskCachePathChangedEvent) GetPath() string {
+ if x != nil {
+ return x.Path
+ }
+ return ""
+}
+
+type DiskCachePathChangeFinishedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *DiskCachePathChangeFinishedEvent) Reset() {
+ *x = DiskCachePathChangeFinishedEvent{}
+ mi := &file_bridge_proto_msgTypes[52]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *DiskCachePathChangeFinishedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DiskCachePathChangeFinishedEvent) ProtoMessage() {}
+
+func (x *DiskCachePathChangeFinishedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[52]
+ 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 DiskCachePathChangeFinishedEvent.ProtoReflect.Descriptor instead.
+func (*DiskCachePathChangeFinishedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{52}
+}
+
+// **********************************************************
+// Mail server settings related events
+// **********************************************************
+type MailServerSettingsEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Types that are valid to be assigned to Event:
+ //
+ // *MailServerSettingsEvent_Error
+ // *MailServerSettingsEvent_MailServerSettingsChanged
+ // *MailServerSettingsEvent_ChangeMailServerSettingsFinished
+ Event isMailServerSettingsEvent_Event `protobuf_oneof:"event"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *MailServerSettingsEvent) Reset() {
+ *x = MailServerSettingsEvent{}
+ mi := &file_bridge_proto_msgTypes[53]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *MailServerSettingsEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MailServerSettingsEvent) ProtoMessage() {}
+
+func (x *MailServerSettingsEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[53]
+ 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 MailServerSettingsEvent.ProtoReflect.Descriptor instead.
+func (*MailServerSettingsEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{53}
+}
+
+func (x *MailServerSettingsEvent) GetEvent() isMailServerSettingsEvent_Event {
+ if x != nil {
+ return x.Event
+ }
+ return nil
+}
+
+func (x *MailServerSettingsEvent) GetError() *MailServerSettingsErrorEvent {
+ if x != nil {
+ if x, ok := x.Event.(*MailServerSettingsEvent_Error); ok {
+ return x.Error
+ }
+ }
+ return nil
+}
+
+func (x *MailServerSettingsEvent) GetMailServerSettingsChanged() *MailServerSettingsChangedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*MailServerSettingsEvent_MailServerSettingsChanged); ok {
+ return x.MailServerSettingsChanged
+ }
+ }
+ return nil
+}
+
+func (x *MailServerSettingsEvent) GetChangeMailServerSettingsFinished() *ChangeMailServerSettingsFinishedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*MailServerSettingsEvent_ChangeMailServerSettingsFinished); ok {
+ return x.ChangeMailServerSettingsFinished
+ }
+ }
+ return nil
+}
+
+type isMailServerSettingsEvent_Event interface {
+ isMailServerSettingsEvent_Event()
+}
+
+type MailServerSettingsEvent_Error struct {
+ Error *MailServerSettingsErrorEvent `protobuf:"bytes,1,opt,name=error,proto3,oneof"`
+}
+
+type MailServerSettingsEvent_MailServerSettingsChanged struct {
+ MailServerSettingsChanged *MailServerSettingsChangedEvent `protobuf:"bytes,2,opt,name=mailServerSettingsChanged,proto3,oneof"`
+}
+
+type MailServerSettingsEvent_ChangeMailServerSettingsFinished struct {
+ ChangeMailServerSettingsFinished *ChangeMailServerSettingsFinishedEvent `protobuf:"bytes,3,opt,name=changeMailServerSettingsFinished,proto3,oneof"`
+}
+
+func (*MailServerSettingsEvent_Error) isMailServerSettingsEvent_Event() {}
+
+func (*MailServerSettingsEvent_MailServerSettingsChanged) isMailServerSettingsEvent_Event() {}
+
+func (*MailServerSettingsEvent_ChangeMailServerSettingsFinished) isMailServerSettingsEvent_Event() {}
+
+type MailServerSettingsErrorEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Type MailServerSettingsErrorType `protobuf:"varint,1,opt,name=type,proto3,enum=grpc.MailServerSettingsErrorType" json:"type,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *MailServerSettingsErrorEvent) Reset() {
+ *x = MailServerSettingsErrorEvent{}
+ mi := &file_bridge_proto_msgTypes[54]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *MailServerSettingsErrorEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MailServerSettingsErrorEvent) ProtoMessage() {}
+
+func (x *MailServerSettingsErrorEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[54]
+ 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 MailServerSettingsErrorEvent.ProtoReflect.Descriptor instead.
+func (*MailServerSettingsErrorEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{54}
+}
+
+func (x *MailServerSettingsErrorEvent) GetType() MailServerSettingsErrorType {
+ if x != nil {
+ return x.Type
+ }
+ return MailServerSettingsErrorType_IMAP_PORT_STARTUP_ERROR
+}
+
+type MailServerSettingsChangedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Settings *ImapSmtpSettings `protobuf:"bytes,1,opt,name=settings,proto3" json:"settings,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *MailServerSettingsChangedEvent) Reset() {
+ *x = MailServerSettingsChangedEvent{}
+ mi := &file_bridge_proto_msgTypes[55]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *MailServerSettingsChangedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MailServerSettingsChangedEvent) ProtoMessage() {}
+
+func (x *MailServerSettingsChangedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[55]
+ 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 MailServerSettingsChangedEvent.ProtoReflect.Descriptor instead.
+func (*MailServerSettingsChangedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{55}
+}
+
+func (x *MailServerSettingsChangedEvent) GetSettings() *ImapSmtpSettings {
+ if x != nil {
+ return x.Settings
+ }
+ return nil
+}
+
+type ChangeMailServerSettingsFinishedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ChangeMailServerSettingsFinishedEvent) Reset() {
+ *x = ChangeMailServerSettingsFinishedEvent{}
+ mi := &file_bridge_proto_msgTypes[56]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ChangeMailServerSettingsFinishedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangeMailServerSettingsFinishedEvent) ProtoMessage() {}
+
+func (x *ChangeMailServerSettingsFinishedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[56]
+ 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 ChangeMailServerSettingsFinishedEvent.ProtoReflect.Descriptor instead.
+func (*ChangeMailServerSettingsFinishedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{56}
+}
+
+// **********************************************************
+// keychain related events
+// **********************************************************
+type KeychainEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Types that are valid to be assigned to Event:
+ //
+ // *KeychainEvent_ChangeKeychainFinished
+ // *KeychainEvent_HasNoKeychain
+ // *KeychainEvent_RebuildKeychain
+ Event isKeychainEvent_Event `protobuf_oneof:"event"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *KeychainEvent) Reset() {
+ *x = KeychainEvent{}
+ mi := &file_bridge_proto_msgTypes[57]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *KeychainEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KeychainEvent) ProtoMessage() {}
+
+func (x *KeychainEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[57]
+ 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 KeychainEvent.ProtoReflect.Descriptor instead.
+func (*KeychainEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{57}
+}
+
+func (x *KeychainEvent) GetEvent() isKeychainEvent_Event {
+ if x != nil {
+ return x.Event
+ }
+ return nil
+}
+
+func (x *KeychainEvent) GetChangeKeychainFinished() *ChangeKeychainFinishedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*KeychainEvent_ChangeKeychainFinished); ok {
+ return x.ChangeKeychainFinished
+ }
+ }
+ return nil
+}
+
+func (x *KeychainEvent) GetHasNoKeychain() *HasNoKeychainEvent {
+ if x != nil {
+ if x, ok := x.Event.(*KeychainEvent_HasNoKeychain); ok {
+ return x.HasNoKeychain
+ }
+ }
+ return nil
+}
+
+func (x *KeychainEvent) GetRebuildKeychain() *RebuildKeychainEvent {
+ if x != nil {
+ if x, ok := x.Event.(*KeychainEvent_RebuildKeychain); ok {
+ return x.RebuildKeychain
+ }
+ }
+ return nil
+}
+
+type isKeychainEvent_Event interface {
+ isKeychainEvent_Event()
+}
+
+type KeychainEvent_ChangeKeychainFinished struct {
+ ChangeKeychainFinished *ChangeKeychainFinishedEvent `protobuf:"bytes,1,opt,name=changeKeychainFinished,proto3,oneof"`
+}
+
+type KeychainEvent_HasNoKeychain struct {
+ HasNoKeychain *HasNoKeychainEvent `protobuf:"bytes,2,opt,name=hasNoKeychain,proto3,oneof"`
+}
+
+type KeychainEvent_RebuildKeychain struct {
+ RebuildKeychain *RebuildKeychainEvent `protobuf:"bytes,3,opt,name=rebuildKeychain,proto3,oneof"`
+}
+
+func (*KeychainEvent_ChangeKeychainFinished) isKeychainEvent_Event() {}
+
+func (*KeychainEvent_HasNoKeychain) isKeychainEvent_Event() {}
+
+func (*KeychainEvent_RebuildKeychain) isKeychainEvent_Event() {}
+
+type ChangeKeychainFinishedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ChangeKeychainFinishedEvent) Reset() {
+ *x = ChangeKeychainFinishedEvent{}
+ mi := &file_bridge_proto_msgTypes[58]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ChangeKeychainFinishedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangeKeychainFinishedEvent) ProtoMessage() {}
+
+func (x *ChangeKeychainFinishedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[58]
+ 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 ChangeKeychainFinishedEvent.ProtoReflect.Descriptor instead.
+func (*ChangeKeychainFinishedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{58}
+}
+
+type HasNoKeychainEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *HasNoKeychainEvent) Reset() {
+ *x = HasNoKeychainEvent{}
+ mi := &file_bridge_proto_msgTypes[59]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *HasNoKeychainEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HasNoKeychainEvent) ProtoMessage() {}
+
+func (x *HasNoKeychainEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[59]
+ 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 HasNoKeychainEvent.ProtoReflect.Descriptor instead.
+func (*HasNoKeychainEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{59}
+}
+
+type RebuildKeychainEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *RebuildKeychainEvent) Reset() {
+ *x = RebuildKeychainEvent{}
+ mi := &file_bridge_proto_msgTypes[60]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *RebuildKeychainEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RebuildKeychainEvent) ProtoMessage() {}
+
+func (x *RebuildKeychainEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[60]
+ 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 RebuildKeychainEvent.ProtoReflect.Descriptor instead.
+func (*RebuildKeychainEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{60}
+}
+
+// **********************************************************
+// Mail related events
+// **********************************************************
+type MailEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Types that are valid to be assigned to Event:
+ //
+ // *MailEvent_AddressChanged
+ // *MailEvent_AddressChangedLogout
+ // *MailEvent_ApiCertIssue
+ Event isMailEvent_Event `protobuf_oneof:"event"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *MailEvent) Reset() {
+ *x = MailEvent{}
+ mi := &file_bridge_proto_msgTypes[61]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *MailEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MailEvent) ProtoMessage() {}
+
+func (x *MailEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[61]
+ 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 MailEvent.ProtoReflect.Descriptor instead.
+func (*MailEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{61}
+}
+
+func (x *MailEvent) GetEvent() isMailEvent_Event {
+ if x != nil {
+ return x.Event
+ }
+ return nil
+}
+
+func (x *MailEvent) GetAddressChanged() *AddressChangedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*MailEvent_AddressChanged); ok {
+ return x.AddressChanged
+ }
+ }
+ return nil
+}
+
+func (x *MailEvent) GetAddressChangedLogout() *AddressChangedLogoutEvent {
+ if x != nil {
+ if x, ok := x.Event.(*MailEvent_AddressChangedLogout); ok {
+ return x.AddressChangedLogout
+ }
+ }
+ return nil
+}
+
+func (x *MailEvent) GetApiCertIssue() *ApiCertIssueEvent {
+ if x != nil {
+ if x, ok := x.Event.(*MailEvent_ApiCertIssue); ok {
+ return x.ApiCertIssue
+ }
+ }
+ return nil
+}
+
+type isMailEvent_Event interface {
+ isMailEvent_Event()
+}
+
+type MailEvent_AddressChanged struct {
+ AddressChanged *AddressChangedEvent `protobuf:"bytes,1,opt,name=addressChanged,proto3,oneof"`
+}
+
+type MailEvent_AddressChangedLogout struct {
+ AddressChangedLogout *AddressChangedLogoutEvent `protobuf:"bytes,2,opt,name=addressChangedLogout,proto3,oneof"`
+}
+
+type MailEvent_ApiCertIssue struct {
+ ApiCertIssue *ApiCertIssueEvent `protobuf:"bytes,3,opt,name=apiCertIssue,proto3,oneof"`
+}
+
+func (*MailEvent_AddressChanged) isMailEvent_Event() {}
+
+func (*MailEvent_AddressChangedLogout) isMailEvent_Event() {}
+
+func (*MailEvent_ApiCertIssue) isMailEvent_Event() {}
+
+type AddressChangedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *AddressChangedEvent) Reset() {
+ *x = AddressChangedEvent{}
+ mi := &file_bridge_proto_msgTypes[62]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *AddressChangedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AddressChangedEvent) ProtoMessage() {}
+
+func (x *AddressChangedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[62]
+ 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 AddressChangedEvent.ProtoReflect.Descriptor instead.
+func (*AddressChangedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{62}
+}
+
+func (x *AddressChangedEvent) GetAddress() string {
+ if x != nil {
+ return x.Address
+ }
+ return ""
+}
+
+type AddressChangedLogoutEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *AddressChangedLogoutEvent) Reset() {
+ *x = AddressChangedLogoutEvent{}
+ mi := &file_bridge_proto_msgTypes[63]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *AddressChangedLogoutEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AddressChangedLogoutEvent) ProtoMessage() {}
+
+func (x *AddressChangedLogoutEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[63]
+ 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 AddressChangedLogoutEvent.ProtoReflect.Descriptor instead.
+func (*AddressChangedLogoutEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{63}
+}
+
+func (x *AddressChangedLogoutEvent) GetAddress() string {
+ if x != nil {
+ return x.Address
+ }
+ return ""
+}
+
+type ApiCertIssueEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ApiCertIssueEvent) Reset() {
+ *x = ApiCertIssueEvent{}
+ mi := &file_bridge_proto_msgTypes[64]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ApiCertIssueEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ApiCertIssueEvent) ProtoMessage() {}
+
+func (x *ApiCertIssueEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[64]
+ 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 ApiCertIssueEvent.ProtoReflect.Descriptor instead.
+func (*ApiCertIssueEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{64}
+}
+
+type UserEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ // Types that are valid to be assigned to Event:
+ //
+ // *UserEvent_ToggleSplitModeFinished
+ // *UserEvent_UserDisconnected
+ // *UserEvent_UserChanged
+ // *UserEvent_UserBadEvent
+ // *UserEvent_UsedBytesChangedEvent
+ // *UserEvent_ImapLoginFailedEvent
+ // *UserEvent_SyncStartedEvent
+ // *UserEvent_SyncFinishedEvent
+ // *UserEvent_SyncProgressEvent
+ Event isUserEvent_Event `protobuf_oneof:"event"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UserEvent) Reset() {
+ *x = UserEvent{}
+ mi := &file_bridge_proto_msgTypes[65]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UserEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UserEvent) ProtoMessage() {}
+
+func (x *UserEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[65]
+ 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 UserEvent.ProtoReflect.Descriptor instead.
+func (*UserEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{65}
+}
+
+func (x *UserEvent) GetEvent() isUserEvent_Event {
+ if x != nil {
+ return x.Event
+ }
+ return nil
+}
+
+func (x *UserEvent) GetToggleSplitModeFinished() *ToggleSplitModeFinishedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*UserEvent_ToggleSplitModeFinished); ok {
+ return x.ToggleSplitModeFinished
+ }
+ }
+ return nil
+}
+
+func (x *UserEvent) GetUserDisconnected() *UserDisconnectedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*UserEvent_UserDisconnected); ok {
+ return x.UserDisconnected
+ }
+ }
+ return nil
+}
+
+func (x *UserEvent) GetUserChanged() *UserChangedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*UserEvent_UserChanged); ok {
+ return x.UserChanged
+ }
+ }
+ return nil
+}
+
+func (x *UserEvent) GetUserBadEvent() *UserBadEvent {
+ if x != nil {
+ if x, ok := x.Event.(*UserEvent_UserBadEvent); ok {
+ return x.UserBadEvent
+ }
+ }
+ return nil
+}
+
+func (x *UserEvent) GetUsedBytesChangedEvent() *UsedBytesChangedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*UserEvent_UsedBytesChangedEvent); ok {
+ return x.UsedBytesChangedEvent
+ }
+ }
+ return nil
+}
+
+func (x *UserEvent) GetImapLoginFailedEvent() *ImapLoginFailedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*UserEvent_ImapLoginFailedEvent); ok {
+ return x.ImapLoginFailedEvent
+ }
+ }
+ return nil
+}
+
+func (x *UserEvent) GetSyncStartedEvent() *SyncStartedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*UserEvent_SyncStartedEvent); ok {
+ return x.SyncStartedEvent
+ }
+ }
+ return nil
+}
+
+func (x *UserEvent) GetSyncFinishedEvent() *SyncFinishedEvent {
+ if x != nil {
+ if x, ok := x.Event.(*UserEvent_SyncFinishedEvent); ok {
+ return x.SyncFinishedEvent
+ }
+ }
+ return nil
+}
+
+func (x *UserEvent) GetSyncProgressEvent() *SyncProgressEvent {
+ if x != nil {
+ if x, ok := x.Event.(*UserEvent_SyncProgressEvent); ok {
+ return x.SyncProgressEvent
+ }
+ }
+ return nil
+}
+
+type isUserEvent_Event interface {
+ isUserEvent_Event()
+}
+
+type UserEvent_ToggleSplitModeFinished struct {
+ ToggleSplitModeFinished *ToggleSplitModeFinishedEvent `protobuf:"bytes,1,opt,name=toggleSplitModeFinished,proto3,oneof"`
+}
+
+type UserEvent_UserDisconnected struct {
+ UserDisconnected *UserDisconnectedEvent `protobuf:"bytes,2,opt,name=userDisconnected,proto3,oneof"`
+}
+
+type UserEvent_UserChanged struct {
+ UserChanged *UserChangedEvent `protobuf:"bytes,3,opt,name=userChanged,proto3,oneof"`
+}
+
+type UserEvent_UserBadEvent struct {
+ UserBadEvent *UserBadEvent `protobuf:"bytes,4,opt,name=userBadEvent,proto3,oneof"`
+}
+
+type UserEvent_UsedBytesChangedEvent struct {
+ UsedBytesChangedEvent *UsedBytesChangedEvent `protobuf:"bytes,5,opt,name=usedBytesChangedEvent,proto3,oneof"`
+}
+
+type UserEvent_ImapLoginFailedEvent struct {
+ ImapLoginFailedEvent *ImapLoginFailedEvent `protobuf:"bytes,6,opt,name=imapLoginFailedEvent,proto3,oneof"`
+}
+
+type UserEvent_SyncStartedEvent struct {
+ SyncStartedEvent *SyncStartedEvent `protobuf:"bytes,7,opt,name=syncStartedEvent,proto3,oneof"`
+}
+
+type UserEvent_SyncFinishedEvent struct {
+ SyncFinishedEvent *SyncFinishedEvent `protobuf:"bytes,8,opt,name=syncFinishedEvent,proto3,oneof"`
+}
+
+type UserEvent_SyncProgressEvent struct {
+ SyncProgressEvent *SyncProgressEvent `protobuf:"bytes,9,opt,name=syncProgressEvent,proto3,oneof"`
+}
+
+func (*UserEvent_ToggleSplitModeFinished) isUserEvent_Event() {}
+
+func (*UserEvent_UserDisconnected) isUserEvent_Event() {}
+
+func (*UserEvent_UserChanged) isUserEvent_Event() {}
+
+func (*UserEvent_UserBadEvent) isUserEvent_Event() {}
+
+func (*UserEvent_UsedBytesChangedEvent) isUserEvent_Event() {}
+
+func (*UserEvent_ImapLoginFailedEvent) isUserEvent_Event() {}
+
+func (*UserEvent_SyncStartedEvent) isUserEvent_Event() {}
+
+func (*UserEvent_SyncFinishedEvent) isUserEvent_Event() {}
+
+func (*UserEvent_SyncProgressEvent) isUserEvent_Event() {}
+
+type ToggleSplitModeFinishedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ToggleSplitModeFinishedEvent) Reset() {
+ *x = ToggleSplitModeFinishedEvent{}
+ mi := &file_bridge_proto_msgTypes[66]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ToggleSplitModeFinishedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ToggleSplitModeFinishedEvent) ProtoMessage() {}
+
+func (x *ToggleSplitModeFinishedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[66]
+ 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 ToggleSplitModeFinishedEvent.ProtoReflect.Descriptor instead.
+func (*ToggleSplitModeFinishedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{66}
+}
+
+func (x *ToggleSplitModeFinishedEvent) GetUserID() string {
+ if x != nil {
+ return x.UserID
+ }
+ return ""
+}
+
+type UserDisconnectedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UserDisconnectedEvent) Reset() {
+ *x = UserDisconnectedEvent{}
+ mi := &file_bridge_proto_msgTypes[67]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UserDisconnectedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UserDisconnectedEvent) ProtoMessage() {}
+
+func (x *UserDisconnectedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[67]
+ 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 UserDisconnectedEvent.ProtoReflect.Descriptor instead.
+func (*UserDisconnectedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{67}
+}
+
+func (x *UserDisconnectedEvent) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+type UserChangedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UserChangedEvent) Reset() {
+ *x = UserChangedEvent{}
+ mi := &file_bridge_proto_msgTypes[68]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UserChangedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UserChangedEvent) ProtoMessage() {}
+
+func (x *UserChangedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[68]
+ 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 UserChangedEvent.ProtoReflect.Descriptor instead.
+func (*UserChangedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{68}
+}
+
+func (x *UserChangedEvent) GetUserID() string {
+ if x != nil {
+ return x.UserID
+ }
+ return ""
+}
+
+type UserBadEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"`
+ ErrorMessage string `protobuf:"bytes,2,opt,name=errorMessage,proto3" json:"errorMessage,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UserBadEvent) Reset() {
+ *x = UserBadEvent{}
+ mi := &file_bridge_proto_msgTypes[69]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UserBadEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UserBadEvent) ProtoMessage() {}
+
+func (x *UserBadEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[69]
+ 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 UserBadEvent.ProtoReflect.Descriptor instead.
+func (*UserBadEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{69}
+}
+
+func (x *UserBadEvent) GetUserID() string {
+ if x != nil {
+ return x.UserID
+ }
+ return ""
+}
+
+func (x *UserBadEvent) GetErrorMessage() string {
+ if x != nil {
+ return x.ErrorMessage
+ }
+ return ""
+}
+
+type UsedBytesChangedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"`
+ UsedBytes int64 `protobuf:"varint,2,opt,name=usedBytes,proto3" json:"usedBytes,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UsedBytesChangedEvent) Reset() {
+ *x = UsedBytesChangedEvent{}
+ mi := &file_bridge_proto_msgTypes[70]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UsedBytesChangedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UsedBytesChangedEvent) ProtoMessage() {}
+
+func (x *UsedBytesChangedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[70]
+ 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 UsedBytesChangedEvent.ProtoReflect.Descriptor instead.
+func (*UsedBytesChangedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{70}
+}
+
+func (x *UsedBytesChangedEvent) GetUserID() string {
+ if x != nil {
+ return x.UserID
+ }
+ return ""
+}
+
+func (x *UsedBytesChangedEvent) GetUsedBytes() int64 {
+ if x != nil {
+ return x.UsedBytes
+ }
+ return 0
+}
+
+type ImapLoginFailedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ImapLoginFailedEvent) Reset() {
+ *x = ImapLoginFailedEvent{}
+ mi := &file_bridge_proto_msgTypes[71]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ImapLoginFailedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImapLoginFailedEvent) ProtoMessage() {}
+
+func (x *ImapLoginFailedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[71]
+ 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 ImapLoginFailedEvent.ProtoReflect.Descriptor instead.
+func (*ImapLoginFailedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{71}
+}
+
+func (x *ImapLoginFailedEvent) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+type SyncStartedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *SyncStartedEvent) Reset() {
+ *x = SyncStartedEvent{}
+ mi := &file_bridge_proto_msgTypes[72]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *SyncStartedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SyncStartedEvent) ProtoMessage() {}
+
+func (x *SyncStartedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[72]
+ 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 SyncStartedEvent.ProtoReflect.Descriptor instead.
+func (*SyncStartedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{72}
+}
+
+func (x *SyncStartedEvent) GetUserID() string {
+ if x != nil {
+ return x.UserID
+ }
+ return ""
+}
+
+type SyncFinishedEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *SyncFinishedEvent) Reset() {
+ *x = SyncFinishedEvent{}
+ mi := &file_bridge_proto_msgTypes[73]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *SyncFinishedEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SyncFinishedEvent) ProtoMessage() {}
+
+func (x *SyncFinishedEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[73]
+ 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 SyncFinishedEvent.ProtoReflect.Descriptor instead.
+func (*SyncFinishedEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{73}
+}
+
+func (x *SyncFinishedEvent) GetUserID() string {
+ if x != nil {
+ return x.UserID
+ }
+ return ""
+}
+
+type SyncProgressEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID,omitempty"`
+ Progress float64 `protobuf:"fixed64,2,opt,name=progress,proto3" json:"progress,omitempty"`
+ ElapsedMs int64 `protobuf:"varint,3,opt,name=elapsedMs,proto3" json:"elapsedMs,omitempty"`
+ RemainingMs int64 `protobuf:"varint,4,opt,name=remainingMs,proto3" json:"remainingMs,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *SyncProgressEvent) Reset() {
+ *x = SyncProgressEvent{}
+ mi := &file_bridge_proto_msgTypes[74]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *SyncProgressEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SyncProgressEvent) ProtoMessage() {}
+
+func (x *SyncProgressEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[74]
+ 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 SyncProgressEvent.ProtoReflect.Descriptor instead.
+func (*SyncProgressEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{74}
+}
+
+func (x *SyncProgressEvent) GetUserID() string {
+ if x != nil {
+ return x.UserID
+ }
+ return ""
+}
+
+func (x *SyncProgressEvent) GetProgress() float64 {
+ if x != nil {
+ return x.Progress
+ }
+ return 0
+}
+
+func (x *SyncProgressEvent) GetElapsedMs() int64 {
+ if x != nil {
+ return x.ElapsedMs
+ }
+ return 0
+}
+
+func (x *SyncProgressEvent) GetRemainingMs() int64 {
+ if x != nil {
+ return x.RemainingMs
+ }
+ return 0
+}
+
+type UserNotificationEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
+ Subtitle string `protobuf:"bytes,2,opt,name=subtitle,proto3" json:"subtitle,omitempty"`
+ Body string `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
+ UserID string `protobuf:"bytes,4,opt,name=userID,proto3" json:"userID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UserNotificationEvent) Reset() {
+ *x = UserNotificationEvent{}
+ mi := &file_bridge_proto_msgTypes[75]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UserNotificationEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UserNotificationEvent) ProtoMessage() {}
+
+func (x *UserNotificationEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[75]
+ 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 UserNotificationEvent.ProtoReflect.Descriptor instead.
+func (*UserNotificationEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{75}
+}
+
+func (x *UserNotificationEvent) GetTitle() string {
+ if x != nil {
+ return x.Title
+ }
+ return ""
+}
+
+func (x *UserNotificationEvent) GetSubtitle() string {
+ if x != nil {
+ return x.Subtitle
+ }
+ return ""
+}
+
+func (x *UserNotificationEvent) GetBody() string {
+ if x != nil {
+ return x.Body
+ }
+ return ""
+}
+
+func (x *UserNotificationEvent) GetUserID() string {
+ if x != nil {
+ return x.UserID
+ }
+ return ""
+}
+
+type GenericErrorEvent struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Code ErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=grpc.ErrorCode" json:"code,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *GenericErrorEvent) Reset() {
+ *x = GenericErrorEvent{}
+ mi := &file_bridge_proto_msgTypes[76]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *GenericErrorEvent) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GenericErrorEvent) ProtoMessage() {}
+
+func (x *GenericErrorEvent) ProtoReflect() protoreflect.Message {
+ mi := &file_bridge_proto_msgTypes[76]
+ 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 GenericErrorEvent.ProtoReflect.Descriptor instead.
+func (*GenericErrorEvent) Descriptor() ([]byte, []int) {
+ return file_bridge_proto_rawDescGZIP(), []int{76}
+}
+
+func (x *GenericErrorEvent) GetCode() ErrorCode {
+ if x != nil {
+ return x.Code
+ }
+ return ErrorCode_UNKNOWN_ERROR
+}
+
+var File_bridge_proto protoreflect.FileDescriptor
+
+const file_bridge_proto_rawDesc = "" +
+ "\n" +
+ "\fbridge.proto\x12\x04grpc\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1egoogle/protobuf/wrappers.proto\"n\n" +
+ "\x12AddLogEntryRequest\x12$\n" +
+ "\x05level\x18\x01 \x01(\x0e2\x0e.grpc.LogLevelR\x05level\x12\x18\n" +
+ "\apackage\x18\x02 \x01(\tR\apackage\x12\x18\n" +
+ "\amessage\x18\x03 \x01(\tR\amessage\">\n" +
+ "\x10GuiReadyResponse\x12*\n" +
+ "\x10showSplashScreen\x18\x01 \x01(\bR\x10showSplashScreen\"\xde\x01\n" +
+ "\x10ReportBugRequest\x12\x16\n" +
+ "\x06osType\x18\x01 \x01(\tR\x06osType\x12\x1c\n" +
+ "\tosVersion\x18\x02 \x01(\tR\tosVersion\x12\x14\n" +
+ "\x05title\x18\x03 \x01(\tR\x05title\x12 \n" +
+ "\vdescription\x18\x04 \x01(\tR\vdescription\x12\x18\n" +
+ "\aaddress\x18\x05 \x01(\tR\aaddress\x12 \n" +
+ "\vemailClient\x18\x06 \x01(\tR\vemailClient\x12 \n" +
+ "\vincludeLogs\x18\a \x01(\bR\vincludeLogs\"\x80\x01\n" +
+ "\fLoginRequest\x12\x1a\n" +
+ "\busername\x18\x01 \x01(\tR\busername\x12\x1a\n" +
+ "\bpassword\x18\x02 \x01(\fR\bpassword\x12'\n" +
+ "\fuseHvDetails\x18\x03 \x01(\bH\x00R\fuseHvDetails\x88\x01\x01B\x0f\n" +
+ "\r_useHvDetails\"/\n" +
+ "\x11LoginAbortRequest\x12\x1a\n" +
+ "\busername\x18\x01 \x01(\tR\busername\"\x96\x01\n" +
+ "\x10ImapSmtpSettings\x12\x1a\n" +
+ "\bimapPort\x18\x01 \x01(\x05R\bimapPort\x12\x1a\n" +
+ "\bsmtpPort\x18\x02 \x01(\x05R\bsmtpPort\x12$\n" +
+ "\ruseSSLForImap\x18\x03 \x01(\bR\ruseSSLForImap\x12$\n" +
+ "\ruseSSLForSmtp\x18\x04 \x01(\bR\ruseSSLForSmtp\":\n" +
+ "\x1aAvailableKeychainsResponse\x12\x1c\n" +
+ "\tkeychains\x18\x01 \x03(\tR\tkeychains\"\x8f\x02\n" +
+ "\x04User\x12\x0e\n" +
+ "\x02id\x18\x01 \x01(\tR\x02id\x12\x1a\n" +
+ "\busername\x18\x02 \x01(\tR\busername\x12\x1e\n" +
+ "\n" +
+ "avatarText\x18\x03 \x01(\tR\n" +
+ "avatarText\x12%\n" +
+ "\x05state\x18\x04 \x01(\x0e2\x0f.grpc.UserStateR\x05state\x12\x1c\n" +
+ "\tsplitMode\x18\x05 \x01(\bR\tsplitMode\x12\x1c\n" +
+ "\tusedBytes\x18\x06 \x01(\x03R\tusedBytes\x12\x1e\n" +
+ "\n" +
+ "totalBytes\x18\a \x01(\x03R\n" +
+ "totalBytes\x12\x1a\n" +
+ "\bpassword\x18\b \x01(\fR\bpassword\x12\x1c\n" +
+ "\taddresses\x18\t \x03(\tR\taddresses\"F\n" +
+ "\x14UserSplitModeRequest\x12\x16\n" +
+ "\x06userID\x18\x01 \x01(\tR\x06userID\x12\x16\n" +
+ "\x06active\x18\x02 \x01(\bR\x06active\"Q\n" +
+ "\x1bUserBadEventFeedbackRequest\x12\x16\n" +
+ "\x06userID\x18\x01 \x01(\tR\x06userID\x12\x1a\n" +
+ "\bdoResync\x18\x02 \x01(\bR\bdoResync\"4\n" +
+ "\x10UserListResponse\x12 \n" +
+ "\x05users\x18\x01 \x03(\v2\n" +
+ ".grpc.UserR\x05users\"M\n" +
+ "\x19ConfigureAppleMailRequest\x12\x16\n" +
+ "\x06userID\x18\x01 \x01(\tR\x06userID\x12\x18\n" +
+ "\aaddress\x18\x02 \x01(\tR\aaddress\"<\n" +
+ "\x12EventStreamRequest\x12&\n" +
+ "\x0eClientPlatform\x18\x01 \x01(\tR\x0eClientPlatform\"\xd0\x03\n" +
+ "\vStreamEvent\x12\"\n" +
+ "\x03app\x18\x01 \x01(\v2\x0e.grpc.AppEventH\x00R\x03app\x12(\n" +
+ "\x05login\x18\x02 \x01(\v2\x10.grpc.LoginEventH\x00R\x05login\x12+\n" +
+ "\x06update\x18\x03 \x01(\v2\x11.grpc.UpdateEventH\x00R\x06update\x12,\n" +
+ "\x05cache\x18\x04 \x01(\v2\x14.grpc.DiskCacheEventH\x00R\x05cache\x12O\n" +
+ "\x12mailServerSettings\x18\x05 \x01(\v2\x1d.grpc.MailServerSettingsEventH\x00R\x12mailServerSettings\x121\n" +
+ "\bkeychain\x18\x06 \x01(\v2\x13.grpc.KeychainEventH\x00R\bkeychain\x12%\n" +
+ "\x04mail\x18\a \x01(\v2\x0f.grpc.MailEventH\x00R\x04mail\x12%\n" +
+ "\x04user\x18\b \x01(\v2\x0f.grpc.UserEventH\x00R\x04user\x12=\n" +
+ "\fgenericError\x18\t \x01(\v2\x17.grpc.GenericErrorEventH\x00R\fgenericErrorB\a\n" +
+ "\x05event\"\xd2\t\n" +
+ "\bAppEvent\x12C\n" +
+ "\x0einternetStatus\x18\x01 \x01(\v2\x19.grpc.InternetStatusEventH\x00R\x0einternetStatus\x12^\n" +
+ "\x17toggleAutostartFinished\x18\x02 \x01(\v2\".grpc.ToggleAutostartFinishedEventH\x00R\x17toggleAutostartFinished\x12@\n" +
+ "\rresetFinished\x18\x03 \x01(\v2\x18.grpc.ResetFinishedEventH\x00R\rresetFinished\x12L\n" +
+ "\x11reportBugFinished\x18\x04 \x01(\v2\x1c.grpc.ReportBugFinishedEventH\x00R\x11reportBugFinished\x12I\n" +
+ "\x10reportBugSuccess\x18\x05 \x01(\v2\x1b.grpc.ReportBugSuccessEventH\x00R\x10reportBugSuccess\x12C\n" +
+ "\x0ereportBugError\x18\x06 \x01(\v2\x19.grpc.ReportBugErrorEventH\x00R\x0ereportBugError\x12C\n" +
+ "\x0eshowMainWindow\x18\a \x01(\v2\x19.grpc.ShowMainWindowEventH\x00R\x0eshowMainWindow\x12L\n" +
+ "\x11reportBugFallback\x18\b \x01(\v2\x1c.grpc.ReportBugFallbackEventH\x00R\x11reportBugFallback\x12d\n" +
+ "\x19certificateInstallSuccess\x18\t \x01(\v2$.grpc.CertificateInstallSuccessEventH\x00R\x19certificateInstallSuccess\x12g\n" +
+ "\x1acertificateInstallCanceled\x18\n" +
+ " \x01(\v2%.grpc.CertificateInstallCanceledEventH\x00R\x1acertificateInstallCanceled\x12a\n" +
+ "\x18certificateInstallFailed\x18\v \x01(\v2#.grpc.CertificateInstallFailedEventH\x00R\x18certificateInstallFailed\x12a\n" +
+ "\x18knowledgeBaseSuggestions\x18\f \x01(\v2#.grpc.KnowledgeBaseSuggestionsEventH\x00R\x18knowledgeBaseSuggestions\x12@\n" +
+ "\rrepairStarted\x18\r \x01(\v2\x18.grpc.RepairStartedEventH\x00R\rrepairStarted\x12C\n" +
+ "\x0eallUsersLoaded\x18\x0e \x01(\v2\x19.grpc.AllUsersLoadedEventH\x00R\x0eallUsersLoaded\x12I\n" +
+ "\x10userNotification\x18\x0f \x01(\v2\x1b.grpc.UserNotificationEventH\x00R\x10userNotificationB\a\n" +
+ "\x05event\"3\n" +
+ "\x13InternetStatusEvent\x12\x1c\n" +
+ "\tconnected\x18\x01 \x01(\bR\tconnected\"\x1e\n" +
+ "\x1cToggleAutostartFinishedEvent\"\x14\n" +
+ "\x12ResetFinishedEvent\"\x18\n" +
+ "\x16ReportBugFinishedEvent\"\x17\n" +
+ "\x15ReportBugSuccessEvent\"\x15\n" +
+ "\x13ReportBugErrorEvent\"\x15\n" +
+ "\x13ShowMainWindowEvent\"\x18\n" +
+ "\x16ReportBugFallbackEvent\" \n" +
+ "\x1eCertificateInstallSuccessEvent\"!\n" +
+ "\x1fCertificateInstallCanceledEvent\"\x1f\n" +
+ "\x1dCertificateInstallFailedEvent\"\x14\n" +
+ "\x12RepairStartedEvent\"\x15\n" +
+ "\x13AllUsersLoadedEvent\"A\n" +
+ "\x17KnowledgeBaseSuggestion\x12\x10\n" +
+ "\x03url\x18\x01 \x01(\tR\x03url\x12\x14\n" +
+ "\x05title\x18\x02 \x01(\tR\x05title\"`\n" +
+ "\x1dKnowledgeBaseSuggestionsEvent\x12?\n" +
+ "\vsuggestions\x18\x01 \x03(\v2\x1d.grpc.KnowledgeBaseSuggestionR\vsuggestions\"\xc1\x06\n" +
+ "\n" +
+ "LoginEvent\x12-\n" +
+ "\x05error\x18\x01 \x01(\v2\x15.grpc.LoginErrorEventH\x00R\x05error\x12B\n" +
+ "\ftfaRequested\x18\x02 \x01(\v2\x1c.grpc.LoginTfaRequestedEventH\x00R\ftfaRequested\x12[\n" +
+ "\x14twoPasswordRequested\x18\x03 \x01(\v2%.grpc.LoginTwoPasswordsRequestedEventH\x00R\x14twoPasswordRequested\x126\n" +
+ "\bfinished\x18\x04 \x01(\v2\x18.grpc.LoginFinishedEventH\x00R\bfinished\x12D\n" +
+ "\x0falreadyLoggedIn\x18\x05 \x01(\v2\x18.grpc.LoginFinishedEventH\x00R\x0falreadyLoggedIn\x12?\n" +
+ "\vhvRequested\x18\x06 \x01(\v2\x1b.grpc.LoginHvRequestedEventH\x00R\vhvRequested\x12E\n" +
+ "\rfidoRequested\x18\a \x01(\v2\x1d.grpc.LoginFidoRequestedEventH\x00R\rfidoRequested\x12T\n" +
+ "\x12tfaOrFidoRequested\x18\b \x01(\v2\".grpc.LoginTfaOrFidoRequestedEventH\x00R\x12tfaOrFidoRequested\x12U\n" +
+ "\x17loginFidoTouchRequested\x18\t \x01(\v2\x19.grpc.LoginFidoTouchEventH\x00R\x17loginFidoTouchRequested\x12U\n" +
+ "\x17loginFidoTouchCompleted\x18\n" +
+ " \x01(\v2\x19.grpc.LoginFidoTouchEventH\x00R\x17loginFidoTouchCompleted\x12P\n" +
+ "\x14loginFidoPinRequired\x18\v \x01(\v2\x1a.grpc.LoginFidoPinRequiredH\x00R\x14loginFidoPinRequiredB\a\n" +
+ "\x05event\"U\n" +
+ "\x0fLoginErrorEvent\x12(\n" +
+ "\x04type\x18\x01 \x01(\x0e2\x14.grpc.LoginErrorTypeR\x04type\x12\x18\n" +
+ "\amessage\x18\x02 \x01(\tR\amessage\"4\n" +
+ "\x16LoginTfaRequestedEvent\x12\x1a\n" +
+ "\busername\x18\x01 \x01(\tR\busername\"5\n" +
+ "\x17LoginFidoRequestedEvent\x12\x1a\n" +
+ "\busername\x18\x01 \x01(\tR\busername\":\n" +
+ "\x1cLoginTfaOrFidoRequestedEvent\x12\x1a\n" +
+ "\busername\x18\x01 \x01(\tR\busername\"1\n" +
+ "\x13LoginFidoTouchEvent\x12\x1a\n" +
+ "\busername\x18\x01 \x01(\tR\busername\"2\n" +
+ "\x14LoginFidoPinRequired\x12\x1a\n" +
+ "\busername\x18\x01 \x01(\tR\busername\"=\n" +
+ "\x1fLoginTwoPasswordsRequestedEvent\x12\x1a\n" +
+ "\busername\x18\x01 \x01(\tR\busername\"P\n" +
+ "\x12LoginFinishedEvent\x12\x16\n" +
+ "\x06userID\x18\x01 \x01(\tR\x06userID\x12\"\n" +
+ "\fwasSignedOut\x18\x02 \x01(\bR\fwasSignedOut\"-\n" +
+ "\x15LoginHvRequestedEvent\x12\x14\n" +
+ "\x05hvUrl\x18\x01 \x01(\tR\x05hvUrl\"\xb9\x04\n" +
+ "\vUpdateEvent\x12.\n" +
+ "\x05error\x18\x01 \x01(\v2\x16.grpc.UpdateErrorEventH\x00R\x05error\x12@\n" +
+ "\vmanualReady\x18\x02 \x01(\v2\x1c.grpc.UpdateManualReadyEventH\x00R\vmanualReady\x12X\n" +
+ "\x13manualRestartNeeded\x18\x03 \x01(\v2$.grpc.UpdateManualRestartNeededEventH\x00R\x13manualRestartNeeded\x12.\n" +
+ "\x05force\x18\x04 \x01(\v2\x16.grpc.UpdateForceEventH\x00R\x05force\x12S\n" +
+ "\x13silentRestartNeeded\x18\x05 \x01(\v2\x1f.grpc.UpdateSilentRestartNeededH\x00R\x13silentRestartNeeded\x12G\n" +
+ "\x0fisLatestVersion\x18\x06 \x01(\v2\x1b.grpc.UpdateIsLatestVersionH\x00R\x0fisLatestVersion\x12A\n" +
+ "\rcheckFinished\x18\a \x01(\v2\x19.grpc.UpdateCheckFinishedH\x00R\rcheckFinished\x12D\n" +
+ "\x0eversionChanged\x18\b \x01(\v2\x1a.grpc.UpdateVersionChangedH\x00R\x0eversionChangedB\a\n" +
+ "\x05event\"=\n" +
+ "\x10UpdateErrorEvent\x12)\n" +
+ "\x04type\x18\x01 \x01(\x0e2\x15.grpc.UpdateErrorTypeR\x04type\"2\n" +
+ "\x16UpdateManualReadyEvent\x12\x18\n" +
+ "\aversion\x18\x01 \x01(\tR\aversion\" \n" +
+ "\x1eUpdateManualRestartNeededEvent\",\n" +
+ "\x10UpdateForceEvent\x12\x18\n" +
+ "\aversion\x18\x01 \x01(\tR\aversion\"\x1b\n" +
+ "\x19UpdateSilentRestartNeeded\"\x17\n" +
+ "\x15UpdateIsLatestVersion\"\x15\n" +
+ "\x13UpdateCheckFinished\"\x16\n" +
+ "\x14UpdateVersionChanged\"\xeb\x01\n" +
+ "\x0eDiskCacheEvent\x121\n" +
+ "\x05error\x18\x01 \x01(\v2\x19.grpc.DiskCacheErrorEventH\x00R\x05error\x12C\n" +
+ "\vpathChanged\x18\x02 \x01(\v2\x1f.grpc.DiskCachePathChangedEventH\x00R\vpathChanged\x12X\n" +
+ "\x12pathChangeFinished\x18\x03 \x01(\v2&.grpc.DiskCachePathChangeFinishedEventH\x00R\x12pathChangeFinishedB\a\n" +
+ "\x05event\"C\n" +
+ "\x13DiskCacheErrorEvent\x12,\n" +
+ "\x04type\x18\x01 \x01(\x0e2\x18.grpc.DiskCacheErrorTypeR\x04type\"/\n" +
+ "\x19DiskCachePathChangedEvent\x12\x12\n" +
+ "\x04path\x18\x01 \x01(\tR\x04path\"\"\n" +
+ " DiskCachePathChangeFinishedEvent\"\xbf\x02\n" +
+ "\x17MailServerSettingsEvent\x12:\n" +
+ "\x05error\x18\x01 \x01(\v2\".grpc.MailServerSettingsErrorEventH\x00R\x05error\x12d\n" +
+ "\x19mailServerSettingsChanged\x18\x02 \x01(\v2$.grpc.MailServerSettingsChangedEventH\x00R\x19mailServerSettingsChanged\x12y\n" +
+ " changeMailServerSettingsFinished\x18\x03 \x01(\v2+.grpc.ChangeMailServerSettingsFinishedEventH\x00R changeMailServerSettingsFinishedB\a\n" +
+ "\x05event\"U\n" +
+ "\x1cMailServerSettingsErrorEvent\x125\n" +
+ "\x04type\x18\x01 \x01(\x0e2!.grpc.MailServerSettingsErrorTypeR\x04type\"T\n" +
+ "\x1eMailServerSettingsChangedEvent\x122\n" +
+ "\bsettings\x18\x01 \x01(\v2\x16.grpc.ImapSmtpSettingsR\bsettings\"'\n" +
+ "%ChangeMailServerSettingsFinishedEvent\"\xff\x01\n" +
+ "\rKeychainEvent\x12[\n" +
+ "\x16changeKeychainFinished\x18\x01 \x01(\v2!.grpc.ChangeKeychainFinishedEventH\x00R\x16changeKeychainFinished\x12@\n" +
+ "\rhasNoKeychain\x18\x02 \x01(\v2\x18.grpc.HasNoKeychainEventH\x00R\rhasNoKeychain\x12F\n" +
+ "\x0frebuildKeychain\x18\x03 \x01(\v2\x1a.grpc.RebuildKeychainEventH\x00R\x0frebuildKeychainB\a\n" +
+ "\x05event\"\x1d\n" +
+ "\x1bChangeKeychainFinishedEvent\"\x14\n" +
+ "\x12HasNoKeychainEvent\"\x16\n" +
+ "\x14RebuildKeychainEvent\"\xef\x01\n" +
+ "\tMailEvent\x12C\n" +
+ "\x0eaddressChanged\x18\x01 \x01(\v2\x19.grpc.AddressChangedEventH\x00R\x0eaddressChanged\x12U\n" +
+ "\x14addressChangedLogout\x18\x02 \x01(\v2\x1f.grpc.AddressChangedLogoutEventH\x00R\x14addressChangedLogout\x12=\n" +
+ "\fapiCertIssue\x18\x03 \x01(\v2\x17.grpc.ApiCertIssueEventH\x00R\fapiCertIssueB\a\n" +
+ "\x05event\"/\n" +
+ "\x13AddressChangedEvent\x12\x18\n" +
+ "\aaddress\x18\x01 \x01(\tR\aaddress\"5\n" +
+ "\x19AddressChangedLogoutEvent\x12\x18\n" +
+ "\aaddress\x18\x01 \x01(\tR\aaddress\"\x13\n" +
+ "\x11ApiCertIssueEvent\"\xb4\x05\n" +
+ "\tUserEvent\x12^\n" +
+ "\x17toggleSplitModeFinished\x18\x01 \x01(\v2\".grpc.ToggleSplitModeFinishedEventH\x00R\x17toggleSplitModeFinished\x12I\n" +
+ "\x10userDisconnected\x18\x02 \x01(\v2\x1b.grpc.UserDisconnectedEventH\x00R\x10userDisconnected\x12:\n" +
+ "\vuserChanged\x18\x03 \x01(\v2\x16.grpc.UserChangedEventH\x00R\vuserChanged\x128\n" +
+ "\fuserBadEvent\x18\x04 \x01(\v2\x12.grpc.UserBadEventH\x00R\fuserBadEvent\x12S\n" +
+ "\x15usedBytesChangedEvent\x18\x05 \x01(\v2\x1b.grpc.UsedBytesChangedEventH\x00R\x15usedBytesChangedEvent\x12P\n" +
+ "\x14imapLoginFailedEvent\x18\x06 \x01(\v2\x1a.grpc.ImapLoginFailedEventH\x00R\x14imapLoginFailedEvent\x12D\n" +
+ "\x10syncStartedEvent\x18\a \x01(\v2\x16.grpc.SyncStartedEventH\x00R\x10syncStartedEvent\x12G\n" +
+ "\x11syncFinishedEvent\x18\b \x01(\v2\x17.grpc.SyncFinishedEventH\x00R\x11syncFinishedEvent\x12G\n" +
+ "\x11syncProgressEvent\x18\t \x01(\v2\x17.grpc.SyncProgressEventH\x00R\x11syncProgressEventB\a\n" +
+ "\x05event\"6\n" +
+ "\x1cToggleSplitModeFinishedEvent\x12\x16\n" +
+ "\x06userID\x18\x01 \x01(\tR\x06userID\"3\n" +
+ "\x15UserDisconnectedEvent\x12\x1a\n" +
+ "\busername\x18\x01 \x01(\tR\busername\"*\n" +
+ "\x10UserChangedEvent\x12\x16\n" +
+ "\x06userID\x18\x01 \x01(\tR\x06userID\"J\n" +
+ "\fUserBadEvent\x12\x16\n" +
+ "\x06userID\x18\x01 \x01(\tR\x06userID\x12\"\n" +
+ "\ferrorMessage\x18\x02 \x01(\tR\ferrorMessage\"M\n" +
+ "\x15UsedBytesChangedEvent\x12\x16\n" +
+ "\x06userID\x18\x01 \x01(\tR\x06userID\x12\x1c\n" +
+ "\tusedBytes\x18\x02 \x01(\x03R\tusedBytes\"2\n" +
+ "\x14ImapLoginFailedEvent\x12\x1a\n" +
+ "\busername\x18\x01 \x01(\tR\busername\"*\n" +
+ "\x10SyncStartedEvent\x12\x16\n" +
+ "\x06userID\x18\x01 \x01(\tR\x06userID\"+\n" +
+ "\x11SyncFinishedEvent\x12\x16\n" +
+ "\x06userID\x18\x01 \x01(\tR\x06userID\"\x87\x01\n" +
+ "\x11SyncProgressEvent\x12\x16\n" +
+ "\x06userID\x18\x01 \x01(\tR\x06userID\x12\x1a\n" +
+ "\bprogress\x18\x02 \x01(\x01R\bprogress\x12\x1c\n" +
+ "\telapsedMs\x18\x03 \x01(\x03R\telapsedMs\x12 \n" +
+ "\vremainingMs\x18\x04 \x01(\x03R\vremainingMs\"u\n" +
+ "\x15UserNotificationEvent\x12\x14\n" +
+ "\x05title\x18\x01 \x01(\tR\x05title\x12\x1a\n" +
+ "\bsubtitle\x18\x02 \x01(\tR\bsubtitle\x12\x12\n" +
+ "\x04body\x18\x03 \x01(\tR\x04body\x12\x16\n" +
+ "\x06userID\x18\x04 \x01(\tR\x06userID\"8\n" +
+ "\x11GenericErrorEvent\x12#\n" +
+ "\x04code\x18\x01 \x01(\x0e2\x0f.grpc.ErrorCodeR\x04code*q\n" +
+ "\bLogLevel\x12\r\n" +
+ "\tLOG_PANIC\x10\x00\x12\r\n" +
+ "\tLOG_FATAL\x10\x01\x12\r\n" +
+ "\tLOG_ERROR\x10\x02\x12\f\n" +
+ "\bLOG_WARN\x10\x03\x12\f\n" +
+ "\bLOG_INFO\x10\x04\x12\r\n" +
+ "\tLOG_DEBUG\x10\x05\x12\r\n" +
+ "\tLOG_TRACE\x10\x06*6\n" +
+ "\tUserState\x12\x0e\n" +
+ "\n" +
+ "SIGNED_OUT\x10\x00\x12\n" +
+ "\n" +
+ "\x06LOCKED\x10\x01\x12\r\n" +
+ "\tCONNECTED\x10\x02*\xec\x01\n" +
+ "\x0eLoginErrorType\x12\x1b\n" +
+ "\x17USERNAME_PASSWORD_ERROR\x10\x00\x12\r\n" +
+ "\tFREE_USER\x10\x01\x12\x14\n" +
+ "\x10CONNECTION_ERROR\x10\x02\x12\r\n" +
+ "\tTFA_ERROR\x10\x03\x12\r\n" +
+ "\tTFA_ABORT\x10\x04\x12\x17\n" +
+ "\x13TWO_PASSWORDS_ERROR\x10\x05\x12\x17\n" +
+ "\x13TWO_PASSWORDS_ABORT\x10\x06\x12\f\n" +
+ "\bHV_ERROR\x10\a\x12\x14\n" +
+ "\x10FIDO_PIN_INVALID\x10\b\x12\x14\n" +
+ "\x10FIDO_PIN_BLOCKED\x10\t\x12\x0e\n" +
+ "\n" +
+ "FIDO_ERROR\x10\n" +
+ "*[\n" +
+ "\x0fUpdateErrorType\x12\x17\n" +
+ "\x13UPDATE_MANUAL_ERROR\x10\x00\x12\x16\n" +
+ "\x12UPDATE_FORCE_ERROR\x10\x01\x12\x17\n" +
+ "\x13UPDATE_SILENT_ERROR\x10\x02*4\n" +
+ "\x12DiskCacheErrorType\x12\x1e\n" +
+ "\x1aCANT_MOVE_DISK_CACHE_ERROR\x10\x00*\xdd\x01\n" +
+ "\x1bMailServerSettingsErrorType\x12\x1b\n" +
+ "\x17IMAP_PORT_STARTUP_ERROR\x10\x00\x12\x1b\n" +
+ "\x17SMTP_PORT_STARTUP_ERROR\x10\x01\x12\x1a\n" +
+ "\x16IMAP_PORT_CHANGE_ERROR\x10\x02\x12\x1a\n" +
+ "\x16SMTP_PORT_CHANGE_ERROR\x10\x03\x12%\n" +
+ "!IMAP_CONNECTION_MODE_CHANGE_ERROR\x10\x04\x12%\n" +
+ "!SMTP_CONNECTION_MODE_CHANGE_ERROR\x10\x05*S\n" +
+ "\tErrorCode\x12\x11\n" +
+ "\rUNKNOWN_ERROR\x10\x00\x12\x19\n" +
+ "\x15TLS_CERT_EXPORT_ERROR\x10\x01\x12\x18\n" +
+ "\x14TLS_KEY_EXPORT_ERROR\x10\x022\xbd\"\n" +
+ "\x06Bridge\x12I\n" +
+ "\vCheckTokens\x12\x1c.google.protobuf.StringValue\x1a\x1c.google.protobuf.StringValue\x12?\n" +
+ "\vAddLogEntry\x12\x18.grpc.AddLogEntryRequest\x1a\x16.google.protobuf.Empty\x12:\n" +
+ "\bGuiReady\x12\x16.google.protobuf.Empty\x1a\x16.grpc.GuiReadyResponse\x126\n" +
+ "\x04Quit\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\x129\n" +
+ "\aRestart\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\x12C\n" +
+ "\rShowOnStartup\x12\x16.google.protobuf.Empty\x1a\x1a.google.protobuf.BoolValue\x12F\n" +
+ "\x10SetIsAutostartOn\x12\x1a.google.protobuf.BoolValue\x1a\x16.google.protobuf.Empty\x12C\n" +
+ "\rIsAutostartOn\x12\x16.google.protobuf.Empty\x1a\x1a.google.protobuf.BoolValue\x12F\n" +
+ "\x10SetIsBetaEnabled\x12\x1a.google.protobuf.BoolValue\x1a\x16.google.protobuf.Empty\x12C\n" +
+ "\rIsBetaEnabled\x12\x16.google.protobuf.Empty\x1a\x1a.google.protobuf.BoolValue\x12I\n" +
+ "\x13SetIsAllMailVisible\x12\x1a.google.protobuf.BoolValue\x1a\x16.google.protobuf.Empty\x12F\n" +
+ "\x10IsAllMailVisible\x12\x16.google.protobuf.Empty\x1a\x1a.google.protobuf.BoolValue\x12L\n" +
+ "\x16SetIsTelemetryDisabled\x12\x1a.google.protobuf.BoolValue\x1a\x16.google.protobuf.Empty\x12I\n" +
+ "\x13IsTelemetryDisabled\x12\x16.google.protobuf.Empty\x1a\x1a.google.protobuf.BoolValue\x12<\n" +
+ "\x04GoOs\x12\x16.google.protobuf.Empty\x1a\x1c.google.protobuf.StringValue\x12>\n" +
+ "\fTriggerReset\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\x12?\n" +
+ "\aVersion\x12\x16.google.protobuf.Empty\x1a\x1c.google.protobuf.StringValue\x12@\n" +
+ "\bLogsPath\x12\x16.google.protobuf.Empty\x1a\x1c.google.protobuf.StringValue\x12C\n" +
+ "\vLicensePath\x12\x16.google.protobuf.Empty\x1a\x1c.google.protobuf.StringValue\x12L\n" +
+ "\x14ReleaseNotesPageLink\x12\x16.google.protobuf.Empty\x1a\x1c.google.protobuf.StringValue\x12N\n" +
+ "\x16DependencyLicensesLink\x12\x16.google.protobuf.Empty\x1a\x1c.google.protobuf.StringValue\x12G\n" +
+ "\x0fLandingPageLink\x12\x16.google.protobuf.Empty\x1a\x1c.google.protobuf.StringValue\x12J\n" +
+ "\x12SetColorSchemeName\x12\x1c.google.protobuf.StringValue\x1a\x16.google.protobuf.Empty\x12G\n" +
+ "\x0fColorSchemeName\x12\x16.google.protobuf.Empty\x1a\x1c.google.protobuf.StringValue\x12J\n" +
+ "\x12CurrentEmailClient\x12\x16.google.protobuf.Empty\x1a\x1c.google.protobuf.StringValue\x12;\n" +
+ "\tReportBug\x12\x16.grpc.ReportBugRequest\x1a\x16.google.protobuf.Empty\x12E\n" +
+ "\rForceLauncher\x12\x1c.google.protobuf.StringValue\x1a\x16.google.protobuf.Empty\x12I\n" +
+ "\x11SetMainExecutable\x12\x1c.google.protobuf.StringValue\x1a\x16.google.protobuf.Empty\x12W\n" +
+ "\x1fRequestKnowledgeBaseSuggestions\x12\x1c.google.protobuf.StringValue\x1a\x16.google.protobuf.Empty\x123\n" +
+ "\x05Login\x12\x12.grpc.LoginRequest\x1a\x16.google.protobuf.Empty\x126\n" +
+ "\bLogin2FA\x12\x12.grpc.LoginRequest\x1a\x16.google.protobuf.Empty\x127\n" +
+ "\tLoginFido\x12\x12.grpc.LoginRequest\x1a\x16.google.protobuf.Empty\x12=\n" +
+ "\x0fLogin2Passwords\x12\x12.grpc.LoginRequest\x1a\x16.google.protobuf.Empty\x12=\n" +
+ "\n" +
+ "LoginAbort\x12\x17.grpc.LoginAbortRequest\x1a\x16.google.protobuf.Empty\x12E\n" +
+ "\x12FidoAssertionAbort\x12\x17.grpc.LoginAbortRequest\x1a\x16.google.protobuf.Empty\x12=\n" +
+ "\vCheckUpdate\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\x12?\n" +
+ "\rInstallUpdate\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\x12L\n" +
+ "\x16SetIsAutomaticUpdateOn\x12\x1a.google.protobuf.BoolValue\x1a\x16.google.protobuf.Empty\x12I\n" +
+ "\x13IsAutomaticUpdateOn\x12\x16.google.protobuf.Empty\x1a\x1a.google.protobuf.BoolValue\x12E\n" +
+ "\rDiskCachePath\x12\x16.google.protobuf.Empty\x1a\x1c.google.protobuf.StringValue\x12H\n" +
+ "\x10SetDiskCachePath\x12\x1c.google.protobuf.StringValue\x1a\x16.google.protobuf.Empty\x12E\n" +
+ "\x0fSetIsDoHEnabled\x12\x1a.google.protobuf.BoolValue\x1a\x16.google.protobuf.Empty\x12B\n" +
+ "\fIsDoHEnabled\x12\x16.google.protobuf.Empty\x1a\x1a.google.protobuf.BoolValue\x12D\n" +
+ "\x12MailServerSettings\x12\x16.google.protobuf.Empty\x1a\x16.grpc.ImapSmtpSettings\x12G\n" +
+ "\x15SetMailServerSettings\x12\x16.grpc.ImapSmtpSettings\x1a\x16.google.protobuf.Empty\x12@\n" +
+ "\bHostname\x12\x16.google.protobuf.Empty\x1a\x1c.google.protobuf.StringValue\x12E\n" +
+ "\n" +
+ "IsPortFree\x12\x1b.google.protobuf.Int32Value\x1a\x1a.google.protobuf.BoolValue\x12N\n" +
+ "\x12AvailableKeychains\x12\x16.google.protobuf.Empty\x1a .grpc.AvailableKeychainsResponse\x12J\n" +
+ "\x12SetCurrentKeychain\x12\x1c.google.protobuf.StringValue\x1a\x16.google.protobuf.Empty\x12G\n" +
+ "\x0fCurrentKeychain\x12\x16.google.protobuf.Empty\x1a\x1c.google.protobuf.StringValue\x12=\n" +
+ "\vGetUserList\x12\x16.google.protobuf.Empty\x1a\x16.grpc.UserListResponse\x123\n" +
+ "\aGetUser\x12\x1c.google.protobuf.StringValue\x1a\n" +
+ ".grpc.User\x12F\n" +
+ "\x10SetUserSplitMode\x12\x1a.grpc.UserSplitModeRequest\x1a\x16.google.protobuf.Empty\x12U\n" +
+ "\x18SendBadEventUserFeedback\x12!.grpc.UserBadEventFeedbackRequest\x1a\x16.google.protobuf.Empty\x12B\n" +
+ "\n" +
+ "LogoutUser\x12\x1c.google.protobuf.StringValue\x1a\x16.google.protobuf.Empty\x12B\n" +
+ "\n" +
+ "RemoveUser\x12\x1c.google.protobuf.StringValue\x1a\x16.google.protobuf.Empty\x12Q\n" +
+ "\x16ConfigureUserAppleMail\x12\x1f.grpc.ConfigureAppleMailRequest\x1a\x16.google.protobuf.Empty\x12O\n" +
+ "\x19IsTLSCertificateInstalled\x12\x16.google.protobuf.Empty\x1a\x1a.google.protobuf.BoolValue\x12G\n" +
+ "\x15InstallTLSCertificate\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\x12M\n" +
+ "\x15ExportTLSCertificates\x12\x1c.google.protobuf.StringValue\x1a\x16.google.protobuf.Empty\x12?\n" +
+ "\x0eRunEventStream\x12\x18.grpc.EventStreamRequest\x1a\x11.grpc.StreamEvent0\x01\x12A\n" +
+ "\x0fStopEventStream\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\x12?\n" +
+ "\rTriggerRepair\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.EmptyB6Z4github.com/ProtonMail/proton-bridge/v3/internal/grpcb\x06proto3"
+
+var (
+ file_bridge_proto_rawDescOnce sync.Once
+ file_bridge_proto_rawDescData []byte
+)
+
+func file_bridge_proto_rawDescGZIP() []byte {
+ file_bridge_proto_rawDescOnce.Do(func() {
+ file_bridge_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_bridge_proto_rawDesc), len(file_bridge_proto_rawDesc)))
+ })
+ return file_bridge_proto_rawDescData
+}
+
+var file_bridge_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
+var file_bridge_proto_msgTypes = make([]protoimpl.MessageInfo, 77)
+var file_bridge_proto_goTypes = []any{
+ (LogLevel)(0), // 0: grpc.LogLevel
+ (UserState)(0), // 1: grpc.UserState
+ (LoginErrorType)(0), // 2: grpc.LoginErrorType
+ (UpdateErrorType)(0), // 3: grpc.UpdateErrorType
+ (DiskCacheErrorType)(0), // 4: grpc.DiskCacheErrorType
+ (MailServerSettingsErrorType)(0), // 5: grpc.MailServerSettingsErrorType
+ (ErrorCode)(0), // 6: grpc.ErrorCode
+ (*AddLogEntryRequest)(nil), // 7: grpc.AddLogEntryRequest
+ (*GuiReadyResponse)(nil), // 8: grpc.GuiReadyResponse
+ (*ReportBugRequest)(nil), // 9: grpc.ReportBugRequest
+ (*LoginRequest)(nil), // 10: grpc.LoginRequest
+ (*LoginAbortRequest)(nil), // 11: grpc.LoginAbortRequest
+ (*ImapSmtpSettings)(nil), // 12: grpc.ImapSmtpSettings
+ (*AvailableKeychainsResponse)(nil), // 13: grpc.AvailableKeychainsResponse
+ (*User)(nil), // 14: grpc.User
+ (*UserSplitModeRequest)(nil), // 15: grpc.UserSplitModeRequest
+ (*UserBadEventFeedbackRequest)(nil), // 16: grpc.UserBadEventFeedbackRequest
+ (*UserListResponse)(nil), // 17: grpc.UserListResponse
+ (*ConfigureAppleMailRequest)(nil), // 18: grpc.ConfigureAppleMailRequest
+ (*EventStreamRequest)(nil), // 19: grpc.EventStreamRequest
+ (*StreamEvent)(nil), // 20: grpc.StreamEvent
+ (*AppEvent)(nil), // 21: grpc.AppEvent
+ (*InternetStatusEvent)(nil), // 22: grpc.InternetStatusEvent
+ (*ToggleAutostartFinishedEvent)(nil), // 23: grpc.ToggleAutostartFinishedEvent
+ (*ResetFinishedEvent)(nil), // 24: grpc.ResetFinishedEvent
+ (*ReportBugFinishedEvent)(nil), // 25: grpc.ReportBugFinishedEvent
+ (*ReportBugSuccessEvent)(nil), // 26: grpc.ReportBugSuccessEvent
+ (*ReportBugErrorEvent)(nil), // 27: grpc.ReportBugErrorEvent
+ (*ShowMainWindowEvent)(nil), // 28: grpc.ShowMainWindowEvent
+ (*ReportBugFallbackEvent)(nil), // 29: grpc.ReportBugFallbackEvent
+ (*CertificateInstallSuccessEvent)(nil), // 30: grpc.CertificateInstallSuccessEvent
+ (*CertificateInstallCanceledEvent)(nil), // 31: grpc.CertificateInstallCanceledEvent
+ (*CertificateInstallFailedEvent)(nil), // 32: grpc.CertificateInstallFailedEvent
+ (*RepairStartedEvent)(nil), // 33: grpc.RepairStartedEvent
+ (*AllUsersLoadedEvent)(nil), // 34: grpc.AllUsersLoadedEvent
+ (*KnowledgeBaseSuggestion)(nil), // 35: grpc.KnowledgeBaseSuggestion
+ (*KnowledgeBaseSuggestionsEvent)(nil), // 36: grpc.KnowledgeBaseSuggestionsEvent
+ (*LoginEvent)(nil), // 37: grpc.LoginEvent
+ (*LoginErrorEvent)(nil), // 38: grpc.LoginErrorEvent
+ (*LoginTfaRequestedEvent)(nil), // 39: grpc.LoginTfaRequestedEvent
+ (*LoginFidoRequestedEvent)(nil), // 40: grpc.LoginFidoRequestedEvent
+ (*LoginTfaOrFidoRequestedEvent)(nil), // 41: grpc.LoginTfaOrFidoRequestedEvent
+ (*LoginFidoTouchEvent)(nil), // 42: grpc.LoginFidoTouchEvent
+ (*LoginFidoPinRequired)(nil), // 43: grpc.LoginFidoPinRequired
+ (*LoginTwoPasswordsRequestedEvent)(nil), // 44: grpc.LoginTwoPasswordsRequestedEvent
+ (*LoginFinishedEvent)(nil), // 45: grpc.LoginFinishedEvent
+ (*LoginHvRequestedEvent)(nil), // 46: grpc.LoginHvRequestedEvent
+ (*UpdateEvent)(nil), // 47: grpc.UpdateEvent
+ (*UpdateErrorEvent)(nil), // 48: grpc.UpdateErrorEvent
+ (*UpdateManualReadyEvent)(nil), // 49: grpc.UpdateManualReadyEvent
+ (*UpdateManualRestartNeededEvent)(nil), // 50: grpc.UpdateManualRestartNeededEvent
+ (*UpdateForceEvent)(nil), // 51: grpc.UpdateForceEvent
+ (*UpdateSilentRestartNeeded)(nil), // 52: grpc.UpdateSilentRestartNeeded
+ (*UpdateIsLatestVersion)(nil), // 53: grpc.UpdateIsLatestVersion
+ (*UpdateCheckFinished)(nil), // 54: grpc.UpdateCheckFinished
+ (*UpdateVersionChanged)(nil), // 55: grpc.UpdateVersionChanged
+ (*DiskCacheEvent)(nil), // 56: grpc.DiskCacheEvent
+ (*DiskCacheErrorEvent)(nil), // 57: grpc.DiskCacheErrorEvent
+ (*DiskCachePathChangedEvent)(nil), // 58: grpc.DiskCachePathChangedEvent
+ (*DiskCachePathChangeFinishedEvent)(nil), // 59: grpc.DiskCachePathChangeFinishedEvent
+ (*MailServerSettingsEvent)(nil), // 60: grpc.MailServerSettingsEvent
+ (*MailServerSettingsErrorEvent)(nil), // 61: grpc.MailServerSettingsErrorEvent
+ (*MailServerSettingsChangedEvent)(nil), // 62: grpc.MailServerSettingsChangedEvent
+ (*ChangeMailServerSettingsFinishedEvent)(nil), // 63: grpc.ChangeMailServerSettingsFinishedEvent
+ (*KeychainEvent)(nil), // 64: grpc.KeychainEvent
+ (*ChangeKeychainFinishedEvent)(nil), // 65: grpc.ChangeKeychainFinishedEvent
+ (*HasNoKeychainEvent)(nil), // 66: grpc.HasNoKeychainEvent
+ (*RebuildKeychainEvent)(nil), // 67: grpc.RebuildKeychainEvent
+ (*MailEvent)(nil), // 68: grpc.MailEvent
+ (*AddressChangedEvent)(nil), // 69: grpc.AddressChangedEvent
+ (*AddressChangedLogoutEvent)(nil), // 70: grpc.AddressChangedLogoutEvent
+ (*ApiCertIssueEvent)(nil), // 71: grpc.ApiCertIssueEvent
+ (*UserEvent)(nil), // 72: grpc.UserEvent
+ (*ToggleSplitModeFinishedEvent)(nil), // 73: grpc.ToggleSplitModeFinishedEvent
+ (*UserDisconnectedEvent)(nil), // 74: grpc.UserDisconnectedEvent
+ (*UserChangedEvent)(nil), // 75: grpc.UserChangedEvent
+ (*UserBadEvent)(nil), // 76: grpc.UserBadEvent
+ (*UsedBytesChangedEvent)(nil), // 77: grpc.UsedBytesChangedEvent
+ (*ImapLoginFailedEvent)(nil), // 78: grpc.ImapLoginFailedEvent
+ (*SyncStartedEvent)(nil), // 79: grpc.SyncStartedEvent
+ (*SyncFinishedEvent)(nil), // 80: grpc.SyncFinishedEvent
+ (*SyncProgressEvent)(nil), // 81: grpc.SyncProgressEvent
+ (*UserNotificationEvent)(nil), // 82: grpc.UserNotificationEvent
+ (*GenericErrorEvent)(nil), // 83: grpc.GenericErrorEvent
+ (*wrapperspb.StringValue)(nil), // 84: google.protobuf.StringValue
+ (*emptypb.Empty)(nil), // 85: google.protobuf.Empty
+ (*wrapperspb.BoolValue)(nil), // 86: google.protobuf.BoolValue
+ (*wrapperspb.Int32Value)(nil), // 87: google.protobuf.Int32Value
+}
+var file_bridge_proto_depIdxs = []int32{
+ 0, // 0: grpc.AddLogEntryRequest.level:type_name -> grpc.LogLevel
+ 1, // 1: grpc.User.state:type_name -> grpc.UserState
+ 14, // 2: grpc.UserListResponse.users:type_name -> grpc.User
+ 21, // 3: grpc.StreamEvent.app:type_name -> grpc.AppEvent
+ 37, // 4: grpc.StreamEvent.login:type_name -> grpc.LoginEvent
+ 47, // 5: grpc.StreamEvent.update:type_name -> grpc.UpdateEvent
+ 56, // 6: grpc.StreamEvent.cache:type_name -> grpc.DiskCacheEvent
+ 60, // 7: grpc.StreamEvent.mailServerSettings:type_name -> grpc.MailServerSettingsEvent
+ 64, // 8: grpc.StreamEvent.keychain:type_name -> grpc.KeychainEvent
+ 68, // 9: grpc.StreamEvent.mail:type_name -> grpc.MailEvent
+ 72, // 10: grpc.StreamEvent.user:type_name -> grpc.UserEvent
+ 83, // 11: grpc.StreamEvent.genericError:type_name -> grpc.GenericErrorEvent
+ 22, // 12: grpc.AppEvent.internetStatus:type_name -> grpc.InternetStatusEvent
+ 23, // 13: grpc.AppEvent.toggleAutostartFinished:type_name -> grpc.ToggleAutostartFinishedEvent
+ 24, // 14: grpc.AppEvent.resetFinished:type_name -> grpc.ResetFinishedEvent
+ 25, // 15: grpc.AppEvent.reportBugFinished:type_name -> grpc.ReportBugFinishedEvent
+ 26, // 16: grpc.AppEvent.reportBugSuccess:type_name -> grpc.ReportBugSuccessEvent
+ 27, // 17: grpc.AppEvent.reportBugError:type_name -> grpc.ReportBugErrorEvent
+ 28, // 18: grpc.AppEvent.showMainWindow:type_name -> grpc.ShowMainWindowEvent
+ 29, // 19: grpc.AppEvent.reportBugFallback:type_name -> grpc.ReportBugFallbackEvent
+ 30, // 20: grpc.AppEvent.certificateInstallSuccess:type_name -> grpc.CertificateInstallSuccessEvent
+ 31, // 21: grpc.AppEvent.certificateInstallCanceled:type_name -> grpc.CertificateInstallCanceledEvent
+ 32, // 22: grpc.AppEvent.certificateInstallFailed:type_name -> grpc.CertificateInstallFailedEvent
+ 36, // 23: grpc.AppEvent.knowledgeBaseSuggestions:type_name -> grpc.KnowledgeBaseSuggestionsEvent
+ 33, // 24: grpc.AppEvent.repairStarted:type_name -> grpc.RepairStartedEvent
+ 34, // 25: grpc.AppEvent.allUsersLoaded:type_name -> grpc.AllUsersLoadedEvent
+ 82, // 26: grpc.AppEvent.userNotification:type_name -> grpc.UserNotificationEvent
+ 35, // 27: grpc.KnowledgeBaseSuggestionsEvent.suggestions:type_name -> grpc.KnowledgeBaseSuggestion
+ 38, // 28: grpc.LoginEvent.error:type_name -> grpc.LoginErrorEvent
+ 39, // 29: grpc.LoginEvent.tfaRequested:type_name -> grpc.LoginTfaRequestedEvent
+ 44, // 30: grpc.LoginEvent.twoPasswordRequested:type_name -> grpc.LoginTwoPasswordsRequestedEvent
+ 45, // 31: grpc.LoginEvent.finished:type_name -> grpc.LoginFinishedEvent
+ 45, // 32: grpc.LoginEvent.alreadyLoggedIn:type_name -> grpc.LoginFinishedEvent
+ 46, // 33: grpc.LoginEvent.hvRequested:type_name -> grpc.LoginHvRequestedEvent
+ 40, // 34: grpc.LoginEvent.fidoRequested:type_name -> grpc.LoginFidoRequestedEvent
+ 41, // 35: grpc.LoginEvent.tfaOrFidoRequested:type_name -> grpc.LoginTfaOrFidoRequestedEvent
+ 42, // 36: grpc.LoginEvent.loginFidoTouchRequested:type_name -> grpc.LoginFidoTouchEvent
+ 42, // 37: grpc.LoginEvent.loginFidoTouchCompleted:type_name -> grpc.LoginFidoTouchEvent
+ 43, // 38: grpc.LoginEvent.loginFidoPinRequired:type_name -> grpc.LoginFidoPinRequired
+ 2, // 39: grpc.LoginErrorEvent.type:type_name -> grpc.LoginErrorType
+ 48, // 40: grpc.UpdateEvent.error:type_name -> grpc.UpdateErrorEvent
+ 49, // 41: grpc.UpdateEvent.manualReady:type_name -> grpc.UpdateManualReadyEvent
+ 50, // 42: grpc.UpdateEvent.manualRestartNeeded:type_name -> grpc.UpdateManualRestartNeededEvent
+ 51, // 43: grpc.UpdateEvent.force:type_name -> grpc.UpdateForceEvent
+ 52, // 44: grpc.UpdateEvent.silentRestartNeeded:type_name -> grpc.UpdateSilentRestartNeeded
+ 53, // 45: grpc.UpdateEvent.isLatestVersion:type_name -> grpc.UpdateIsLatestVersion
+ 54, // 46: grpc.UpdateEvent.checkFinished:type_name -> grpc.UpdateCheckFinished
+ 55, // 47: grpc.UpdateEvent.versionChanged:type_name -> grpc.UpdateVersionChanged
+ 3, // 48: grpc.UpdateErrorEvent.type:type_name -> grpc.UpdateErrorType
+ 57, // 49: grpc.DiskCacheEvent.error:type_name -> grpc.DiskCacheErrorEvent
+ 58, // 50: grpc.DiskCacheEvent.pathChanged:type_name -> grpc.DiskCachePathChangedEvent
+ 59, // 51: grpc.DiskCacheEvent.pathChangeFinished:type_name -> grpc.DiskCachePathChangeFinishedEvent
+ 4, // 52: grpc.DiskCacheErrorEvent.type:type_name -> grpc.DiskCacheErrorType
+ 61, // 53: grpc.MailServerSettingsEvent.error:type_name -> grpc.MailServerSettingsErrorEvent
+ 62, // 54: grpc.MailServerSettingsEvent.mailServerSettingsChanged:type_name -> grpc.MailServerSettingsChangedEvent
+ 63, // 55: grpc.MailServerSettingsEvent.changeMailServerSettingsFinished:type_name -> grpc.ChangeMailServerSettingsFinishedEvent
+ 5, // 56: grpc.MailServerSettingsErrorEvent.type:type_name -> grpc.MailServerSettingsErrorType
+ 12, // 57: grpc.MailServerSettingsChangedEvent.settings:type_name -> grpc.ImapSmtpSettings
+ 65, // 58: grpc.KeychainEvent.changeKeychainFinished:type_name -> grpc.ChangeKeychainFinishedEvent
+ 66, // 59: grpc.KeychainEvent.hasNoKeychain:type_name -> grpc.HasNoKeychainEvent
+ 67, // 60: grpc.KeychainEvent.rebuildKeychain:type_name -> grpc.RebuildKeychainEvent
+ 69, // 61: grpc.MailEvent.addressChanged:type_name -> grpc.AddressChangedEvent
+ 70, // 62: grpc.MailEvent.addressChangedLogout:type_name -> grpc.AddressChangedLogoutEvent
+ 71, // 63: grpc.MailEvent.apiCertIssue:type_name -> grpc.ApiCertIssueEvent
+ 73, // 64: grpc.UserEvent.toggleSplitModeFinished:type_name -> grpc.ToggleSplitModeFinishedEvent
+ 74, // 65: grpc.UserEvent.userDisconnected:type_name -> grpc.UserDisconnectedEvent
+ 75, // 66: grpc.UserEvent.userChanged:type_name -> grpc.UserChangedEvent
+ 76, // 67: grpc.UserEvent.userBadEvent:type_name -> grpc.UserBadEvent
+ 77, // 68: grpc.UserEvent.usedBytesChangedEvent:type_name -> grpc.UsedBytesChangedEvent
+ 78, // 69: grpc.UserEvent.imapLoginFailedEvent:type_name -> grpc.ImapLoginFailedEvent
+ 79, // 70: grpc.UserEvent.syncStartedEvent:type_name -> grpc.SyncStartedEvent
+ 80, // 71: grpc.UserEvent.syncFinishedEvent:type_name -> grpc.SyncFinishedEvent
+ 81, // 72: grpc.UserEvent.syncProgressEvent:type_name -> grpc.SyncProgressEvent
+ 6, // 73: grpc.GenericErrorEvent.code:type_name -> grpc.ErrorCode
+ 84, // 74: grpc.Bridge.CheckTokens:input_type -> google.protobuf.StringValue
+ 7, // 75: grpc.Bridge.AddLogEntry:input_type -> grpc.AddLogEntryRequest
+ 85, // 76: grpc.Bridge.GuiReady:input_type -> google.protobuf.Empty
+ 85, // 77: grpc.Bridge.Quit:input_type -> google.protobuf.Empty
+ 85, // 78: grpc.Bridge.Restart:input_type -> google.protobuf.Empty
+ 85, // 79: grpc.Bridge.ShowOnStartup:input_type -> google.protobuf.Empty
+ 86, // 80: grpc.Bridge.SetIsAutostartOn:input_type -> google.protobuf.BoolValue
+ 85, // 81: grpc.Bridge.IsAutostartOn:input_type -> google.protobuf.Empty
+ 86, // 82: grpc.Bridge.SetIsBetaEnabled:input_type -> google.protobuf.BoolValue
+ 85, // 83: grpc.Bridge.IsBetaEnabled:input_type -> google.protobuf.Empty
+ 86, // 84: grpc.Bridge.SetIsAllMailVisible:input_type -> google.protobuf.BoolValue
+ 85, // 85: grpc.Bridge.IsAllMailVisible:input_type -> google.protobuf.Empty
+ 86, // 86: grpc.Bridge.SetIsTelemetryDisabled:input_type -> google.protobuf.BoolValue
+ 85, // 87: grpc.Bridge.IsTelemetryDisabled:input_type -> google.protobuf.Empty
+ 85, // 88: grpc.Bridge.GoOs:input_type -> google.protobuf.Empty
+ 85, // 89: grpc.Bridge.TriggerReset:input_type -> google.protobuf.Empty
+ 85, // 90: grpc.Bridge.Version:input_type -> google.protobuf.Empty
+ 85, // 91: grpc.Bridge.LogsPath:input_type -> google.protobuf.Empty
+ 85, // 92: grpc.Bridge.LicensePath:input_type -> google.protobuf.Empty
+ 85, // 93: grpc.Bridge.ReleaseNotesPageLink:input_type -> google.protobuf.Empty
+ 85, // 94: grpc.Bridge.DependencyLicensesLink:input_type -> google.protobuf.Empty
+ 85, // 95: grpc.Bridge.LandingPageLink:input_type -> google.protobuf.Empty
+ 84, // 96: grpc.Bridge.SetColorSchemeName:input_type -> google.protobuf.StringValue
+ 85, // 97: grpc.Bridge.ColorSchemeName:input_type -> google.protobuf.Empty
+ 85, // 98: grpc.Bridge.CurrentEmailClient:input_type -> google.protobuf.Empty
+ 9, // 99: grpc.Bridge.ReportBug:input_type -> grpc.ReportBugRequest
+ 84, // 100: grpc.Bridge.ForceLauncher:input_type -> google.protobuf.StringValue
+ 84, // 101: grpc.Bridge.SetMainExecutable:input_type -> google.protobuf.StringValue
+ 84, // 102: grpc.Bridge.RequestKnowledgeBaseSuggestions:input_type -> google.protobuf.StringValue
+ 10, // 103: grpc.Bridge.Login:input_type -> grpc.LoginRequest
+ 10, // 104: grpc.Bridge.Login2FA:input_type -> grpc.LoginRequest
+ 10, // 105: grpc.Bridge.LoginFido:input_type -> grpc.LoginRequest
+ 10, // 106: grpc.Bridge.Login2Passwords:input_type -> grpc.LoginRequest
+ 11, // 107: grpc.Bridge.LoginAbort:input_type -> grpc.LoginAbortRequest
+ 11, // 108: grpc.Bridge.FidoAssertionAbort:input_type -> grpc.LoginAbortRequest
+ 85, // 109: grpc.Bridge.CheckUpdate:input_type -> google.protobuf.Empty
+ 85, // 110: grpc.Bridge.InstallUpdate:input_type -> google.protobuf.Empty
+ 86, // 111: grpc.Bridge.SetIsAutomaticUpdateOn:input_type -> google.protobuf.BoolValue
+ 85, // 112: grpc.Bridge.IsAutomaticUpdateOn:input_type -> google.protobuf.Empty
+ 85, // 113: grpc.Bridge.DiskCachePath:input_type -> google.protobuf.Empty
+ 84, // 114: grpc.Bridge.SetDiskCachePath:input_type -> google.protobuf.StringValue
+ 86, // 115: grpc.Bridge.SetIsDoHEnabled:input_type -> google.protobuf.BoolValue
+ 85, // 116: grpc.Bridge.IsDoHEnabled:input_type -> google.protobuf.Empty
+ 85, // 117: grpc.Bridge.MailServerSettings:input_type -> google.protobuf.Empty
+ 12, // 118: grpc.Bridge.SetMailServerSettings:input_type -> grpc.ImapSmtpSettings
+ 85, // 119: grpc.Bridge.Hostname:input_type -> google.protobuf.Empty
+ 87, // 120: grpc.Bridge.IsPortFree:input_type -> google.protobuf.Int32Value
+ 85, // 121: grpc.Bridge.AvailableKeychains:input_type -> google.protobuf.Empty
+ 84, // 122: grpc.Bridge.SetCurrentKeychain:input_type -> google.protobuf.StringValue
+ 85, // 123: grpc.Bridge.CurrentKeychain:input_type -> google.protobuf.Empty
+ 85, // 124: grpc.Bridge.GetUserList:input_type -> google.protobuf.Empty
+ 84, // 125: grpc.Bridge.GetUser:input_type -> google.protobuf.StringValue
+ 15, // 126: grpc.Bridge.SetUserSplitMode:input_type -> grpc.UserSplitModeRequest
+ 16, // 127: grpc.Bridge.SendBadEventUserFeedback:input_type -> grpc.UserBadEventFeedbackRequest
+ 84, // 128: grpc.Bridge.LogoutUser:input_type -> google.protobuf.StringValue
+ 84, // 129: grpc.Bridge.RemoveUser:input_type -> google.protobuf.StringValue
+ 18, // 130: grpc.Bridge.ConfigureUserAppleMail:input_type -> grpc.ConfigureAppleMailRequest
+ 85, // 131: grpc.Bridge.IsTLSCertificateInstalled:input_type -> google.protobuf.Empty
+ 85, // 132: grpc.Bridge.InstallTLSCertificate:input_type -> google.protobuf.Empty
+ 84, // 133: grpc.Bridge.ExportTLSCertificates:input_type -> google.protobuf.StringValue
+ 19, // 134: grpc.Bridge.RunEventStream:input_type -> grpc.EventStreamRequest
+ 85, // 135: grpc.Bridge.StopEventStream:input_type -> google.protobuf.Empty
+ 85, // 136: grpc.Bridge.TriggerRepair:input_type -> google.protobuf.Empty
+ 84, // 137: grpc.Bridge.CheckTokens:output_type -> google.protobuf.StringValue
+ 85, // 138: grpc.Bridge.AddLogEntry:output_type -> google.protobuf.Empty
+ 8, // 139: grpc.Bridge.GuiReady:output_type -> grpc.GuiReadyResponse
+ 85, // 140: grpc.Bridge.Quit:output_type -> google.protobuf.Empty
+ 85, // 141: grpc.Bridge.Restart:output_type -> google.protobuf.Empty
+ 86, // 142: grpc.Bridge.ShowOnStartup:output_type -> google.protobuf.BoolValue
+ 85, // 143: grpc.Bridge.SetIsAutostartOn:output_type -> google.protobuf.Empty
+ 86, // 144: grpc.Bridge.IsAutostartOn:output_type -> google.protobuf.BoolValue
+ 85, // 145: grpc.Bridge.SetIsBetaEnabled:output_type -> google.protobuf.Empty
+ 86, // 146: grpc.Bridge.IsBetaEnabled:output_type -> google.protobuf.BoolValue
+ 85, // 147: grpc.Bridge.SetIsAllMailVisible:output_type -> google.protobuf.Empty
+ 86, // 148: grpc.Bridge.IsAllMailVisible:output_type -> google.protobuf.BoolValue
+ 85, // 149: grpc.Bridge.SetIsTelemetryDisabled:output_type -> google.protobuf.Empty
+ 86, // 150: grpc.Bridge.IsTelemetryDisabled:output_type -> google.protobuf.BoolValue
+ 84, // 151: grpc.Bridge.GoOs:output_type -> google.protobuf.StringValue
+ 85, // 152: grpc.Bridge.TriggerReset:output_type -> google.protobuf.Empty
+ 84, // 153: grpc.Bridge.Version:output_type -> google.protobuf.StringValue
+ 84, // 154: grpc.Bridge.LogsPath:output_type -> google.protobuf.StringValue
+ 84, // 155: grpc.Bridge.LicensePath:output_type -> google.protobuf.StringValue
+ 84, // 156: grpc.Bridge.ReleaseNotesPageLink:output_type -> google.protobuf.StringValue
+ 84, // 157: grpc.Bridge.DependencyLicensesLink:output_type -> google.protobuf.StringValue
+ 84, // 158: grpc.Bridge.LandingPageLink:output_type -> google.protobuf.StringValue
+ 85, // 159: grpc.Bridge.SetColorSchemeName:output_type -> google.protobuf.Empty
+ 84, // 160: grpc.Bridge.ColorSchemeName:output_type -> google.protobuf.StringValue
+ 84, // 161: grpc.Bridge.CurrentEmailClient:output_type -> google.protobuf.StringValue
+ 85, // 162: grpc.Bridge.ReportBug:output_type -> google.protobuf.Empty
+ 85, // 163: grpc.Bridge.ForceLauncher:output_type -> google.protobuf.Empty
+ 85, // 164: grpc.Bridge.SetMainExecutable:output_type -> google.protobuf.Empty
+ 85, // 165: grpc.Bridge.RequestKnowledgeBaseSuggestions:output_type -> google.protobuf.Empty
+ 85, // 166: grpc.Bridge.Login:output_type -> google.protobuf.Empty
+ 85, // 167: grpc.Bridge.Login2FA:output_type -> google.protobuf.Empty
+ 85, // 168: grpc.Bridge.LoginFido:output_type -> google.protobuf.Empty
+ 85, // 169: grpc.Bridge.Login2Passwords:output_type -> google.protobuf.Empty
+ 85, // 170: grpc.Bridge.LoginAbort:output_type -> google.protobuf.Empty
+ 85, // 171: grpc.Bridge.FidoAssertionAbort:output_type -> google.protobuf.Empty
+ 85, // 172: grpc.Bridge.CheckUpdate:output_type -> google.protobuf.Empty
+ 85, // 173: grpc.Bridge.InstallUpdate:output_type -> google.protobuf.Empty
+ 85, // 174: grpc.Bridge.SetIsAutomaticUpdateOn:output_type -> google.protobuf.Empty
+ 86, // 175: grpc.Bridge.IsAutomaticUpdateOn:output_type -> google.protobuf.BoolValue
+ 84, // 176: grpc.Bridge.DiskCachePath:output_type -> google.protobuf.StringValue
+ 85, // 177: grpc.Bridge.SetDiskCachePath:output_type -> google.protobuf.Empty
+ 85, // 178: grpc.Bridge.SetIsDoHEnabled:output_type -> google.protobuf.Empty
+ 86, // 179: grpc.Bridge.IsDoHEnabled:output_type -> google.protobuf.BoolValue
+ 12, // 180: grpc.Bridge.MailServerSettings:output_type -> grpc.ImapSmtpSettings
+ 85, // 181: grpc.Bridge.SetMailServerSettings:output_type -> google.protobuf.Empty
+ 84, // 182: grpc.Bridge.Hostname:output_type -> google.protobuf.StringValue
+ 86, // 183: grpc.Bridge.IsPortFree:output_type -> google.protobuf.BoolValue
+ 13, // 184: grpc.Bridge.AvailableKeychains:output_type -> grpc.AvailableKeychainsResponse
+ 85, // 185: grpc.Bridge.SetCurrentKeychain:output_type -> google.protobuf.Empty
+ 84, // 186: grpc.Bridge.CurrentKeychain:output_type -> google.protobuf.StringValue
+ 17, // 187: grpc.Bridge.GetUserList:output_type -> grpc.UserListResponse
+ 14, // 188: grpc.Bridge.GetUser:output_type -> grpc.User
+ 85, // 189: grpc.Bridge.SetUserSplitMode:output_type -> google.protobuf.Empty
+ 85, // 190: grpc.Bridge.SendBadEventUserFeedback:output_type -> google.protobuf.Empty
+ 85, // 191: grpc.Bridge.LogoutUser:output_type -> google.protobuf.Empty
+ 85, // 192: grpc.Bridge.RemoveUser:output_type -> google.protobuf.Empty
+ 85, // 193: grpc.Bridge.ConfigureUserAppleMail:output_type -> google.protobuf.Empty
+ 86, // 194: grpc.Bridge.IsTLSCertificateInstalled:output_type -> google.protobuf.BoolValue
+ 85, // 195: grpc.Bridge.InstallTLSCertificate:output_type -> google.protobuf.Empty
+ 85, // 196: grpc.Bridge.ExportTLSCertificates:output_type -> google.protobuf.Empty
+ 20, // 197: grpc.Bridge.RunEventStream:output_type -> grpc.StreamEvent
+ 85, // 198: grpc.Bridge.StopEventStream:output_type -> google.protobuf.Empty
+ 85, // 199: grpc.Bridge.TriggerRepair:output_type -> google.protobuf.Empty
+ 137, // [137:200] is the sub-list for method output_type
+ 74, // [74:137] is the sub-list for method input_type
+ 74, // [74:74] is the sub-list for extension type_name
+ 74, // [74:74] is the sub-list for extension extendee
+ 0, // [0:74] is the sub-list for field type_name
+}
+
+func init() { file_bridge_proto_init() }
+func file_bridge_proto_init() {
+ if File_bridge_proto != nil {
+ return
+ }
+ file_bridge_proto_msgTypes[3].OneofWrappers = []any{}
+ file_bridge_proto_msgTypes[13].OneofWrappers = []any{
+ (*StreamEvent_App)(nil),
+ (*StreamEvent_Login)(nil),
+ (*StreamEvent_Update)(nil),
+ (*StreamEvent_Cache)(nil),
+ (*StreamEvent_MailServerSettings)(nil),
+ (*StreamEvent_Keychain)(nil),
+ (*StreamEvent_Mail)(nil),
+ (*StreamEvent_User)(nil),
+ (*StreamEvent_GenericError)(nil),
+ }
+ file_bridge_proto_msgTypes[14].OneofWrappers = []any{
+ (*AppEvent_InternetStatus)(nil),
+ (*AppEvent_ToggleAutostartFinished)(nil),
+ (*AppEvent_ResetFinished)(nil),
+ (*AppEvent_ReportBugFinished)(nil),
+ (*AppEvent_ReportBugSuccess)(nil),
+ (*AppEvent_ReportBugError)(nil),
+ (*AppEvent_ShowMainWindow)(nil),
+ (*AppEvent_ReportBugFallback)(nil),
+ (*AppEvent_CertificateInstallSuccess)(nil),
+ (*AppEvent_CertificateInstallCanceled)(nil),
+ (*AppEvent_CertificateInstallFailed)(nil),
+ (*AppEvent_KnowledgeBaseSuggestions)(nil),
+ (*AppEvent_RepairStarted)(nil),
+ (*AppEvent_AllUsersLoaded)(nil),
+ (*AppEvent_UserNotification)(nil),
+ }
+ file_bridge_proto_msgTypes[30].OneofWrappers = []any{
+ (*LoginEvent_Error)(nil),
+ (*LoginEvent_TfaRequested)(nil),
+ (*LoginEvent_TwoPasswordRequested)(nil),
+ (*LoginEvent_Finished)(nil),
+ (*LoginEvent_AlreadyLoggedIn)(nil),
+ (*LoginEvent_HvRequested)(nil),
+ (*LoginEvent_FidoRequested)(nil),
+ (*LoginEvent_TfaOrFidoRequested)(nil),
+ (*LoginEvent_LoginFidoTouchRequested)(nil),
+ (*LoginEvent_LoginFidoTouchCompleted)(nil),
+ (*LoginEvent_LoginFidoPinRequired)(nil),
+ }
+ file_bridge_proto_msgTypes[40].OneofWrappers = []any{
+ (*UpdateEvent_Error)(nil),
+ (*UpdateEvent_ManualReady)(nil),
+ (*UpdateEvent_ManualRestartNeeded)(nil),
+ (*UpdateEvent_Force)(nil),
+ (*UpdateEvent_SilentRestartNeeded)(nil),
+ (*UpdateEvent_IsLatestVersion)(nil),
+ (*UpdateEvent_CheckFinished)(nil),
+ (*UpdateEvent_VersionChanged)(nil),
+ }
+ file_bridge_proto_msgTypes[49].OneofWrappers = []any{
+ (*DiskCacheEvent_Error)(nil),
+ (*DiskCacheEvent_PathChanged)(nil),
+ (*DiskCacheEvent_PathChangeFinished)(nil),
+ }
+ file_bridge_proto_msgTypes[53].OneofWrappers = []any{
+ (*MailServerSettingsEvent_Error)(nil),
+ (*MailServerSettingsEvent_MailServerSettingsChanged)(nil),
+ (*MailServerSettingsEvent_ChangeMailServerSettingsFinished)(nil),
+ }
+ file_bridge_proto_msgTypes[57].OneofWrappers = []any{
+ (*KeychainEvent_ChangeKeychainFinished)(nil),
+ (*KeychainEvent_HasNoKeychain)(nil),
+ (*KeychainEvent_RebuildKeychain)(nil),
+ }
+ file_bridge_proto_msgTypes[61].OneofWrappers = []any{
+ (*MailEvent_AddressChanged)(nil),
+ (*MailEvent_AddressChangedLogout)(nil),
+ (*MailEvent_ApiCertIssue)(nil),
+ }
+ file_bridge_proto_msgTypes[65].OneofWrappers = []any{
+ (*UserEvent_ToggleSplitModeFinished)(nil),
+ (*UserEvent_UserDisconnected)(nil),
+ (*UserEvent_UserChanged)(nil),
+ (*UserEvent_UserBadEvent)(nil),
+ (*UserEvent_UsedBytesChangedEvent)(nil),
+ (*UserEvent_ImapLoginFailedEvent)(nil),
+ (*UserEvent_SyncStartedEvent)(nil),
+ (*UserEvent_SyncFinishedEvent)(nil),
+ (*UserEvent_SyncProgressEvent)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_bridge_proto_rawDesc), len(file_bridge_proto_rawDesc)),
+ NumEnums: 7,
+ NumMessages: 77,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_bridge_proto_goTypes,
+ DependencyIndexes: file_bridge_proto_depIdxs,
+ EnumInfos: file_bridge_proto_enumTypes,
+ MessageInfos: file_bridge_proto_msgTypes,
+ }.Build()
+ File_bridge_proto = out.File
+ file_bridge_proto_goTypes = nil
+ file_bridge_proto_depIdxs = nil
+}
diff --git a/images/proton-bridge/exporter/bridgepb/bridge.proto b/images/proton-bridge/exporter/bridgepb/bridge.proto
new file mode 100644
index 0000000..0561d99
--- /dev/null
+++ b/images/proton-bridge/exporter/bridgepb/bridge.proto
@@ -0,0 +1,589 @@
+// Copyright (c) 2022 Proton Technologies AG
+//
+// This file is part of ProtonMail Bridge.
+//
+// ProtonMail Bridge is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// ProtonMail Bridge is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with ProtonMail Bridge. If not, see .
+
+syntax = "proto3";
+
+import "google/protobuf/empty.proto";
+import "google/protobuf/wrappers.proto";
+
+option go_package = "github.com/ProtonMail/proton-bridge/v3/internal/grpc";
+
+package grpc; // ignored by Go, used as namespace name in C++.
+
+//**********************************************************************************************************************
+// Service Declaration
+//**********************************************************************************************************************≠––
+service Bridge {
+
+ // App related calls
+ rpc CheckTokens(google.protobuf.StringValue) returns (google.protobuf.StringValue);
+ rpc AddLogEntry(AddLogEntryRequest) returns (google.protobuf.Empty);
+ rpc GuiReady (google.protobuf.Empty) returns (GuiReadyResponse);
+ rpc Quit (google.protobuf.Empty) returns (google.protobuf.Empty);
+ rpc Restart (google.protobuf.Empty) returns (google.protobuf.Empty);
+ rpc ShowOnStartup(google.protobuf.Empty) returns (google.protobuf.BoolValue);
+ rpc SetIsAutostartOn(google.protobuf.BoolValue) returns (google.protobuf.Empty);
+ rpc IsAutostartOn(google.protobuf.Empty) returns (google.protobuf.BoolValue);
+ rpc SetIsBetaEnabled(google.protobuf.BoolValue) returns (google.protobuf.Empty);
+ rpc IsBetaEnabled(google.protobuf.Empty) returns (google.protobuf.BoolValue);
+ rpc SetIsAllMailVisible(google.protobuf.BoolValue) returns (google.protobuf.Empty);
+ rpc IsAllMailVisible(google.protobuf.Empty) returns (google.protobuf.BoolValue);
+ rpc SetIsTelemetryDisabled(google.protobuf.BoolValue) returns (google.protobuf.Empty);
+ rpc IsTelemetryDisabled(google.protobuf.Empty) returns (google.protobuf.BoolValue);
+ rpc GoOs(google.protobuf.Empty) returns (google.protobuf.StringValue);
+ rpc TriggerReset(google.protobuf.Empty) returns (google.protobuf.Empty);
+ rpc Version(google.protobuf.Empty) returns (google.protobuf.StringValue);
+ rpc LogsPath(google.protobuf.Empty) returns (google.protobuf.StringValue);
+ rpc LicensePath(google.protobuf.Empty) returns (google.protobuf.StringValue);
+ rpc ReleaseNotesPageLink(google.protobuf.Empty) returns (google.protobuf.StringValue);
+ rpc DependencyLicensesLink(google.protobuf.Empty) returns (google.protobuf.StringValue);
+ rpc LandingPageLink(google.protobuf.Empty) returns (google.protobuf.StringValue);
+ rpc SetColorSchemeName(google.protobuf.StringValue) returns (google.protobuf.Empty);
+ rpc ColorSchemeName(google.protobuf.Empty) returns (google.protobuf.StringValue); // TODO Color scheme should probably entirely be managed by the client.
+ rpc CurrentEmailClient(google.protobuf.Empty) returns (google.protobuf.StringValue);
+ rpc ReportBug(ReportBugRequest) returns (google.protobuf.Empty);
+ rpc ForceLauncher(google.protobuf.StringValue) returns (google.protobuf.Empty);
+ rpc SetMainExecutable(google.protobuf.StringValue) returns (google.protobuf.Empty);
+ rpc RequestKnowledgeBaseSuggestions(google.protobuf.StringValue) returns (google.protobuf.Empty);
+
+ // login
+ rpc Login(LoginRequest) returns (google.protobuf.Empty);
+ rpc Login2FA(LoginRequest) returns (google.protobuf.Empty);
+ rpc LoginFido(LoginRequest) returns (google.protobuf.Empty);
+ rpc Login2Passwords(LoginRequest) returns (google.protobuf.Empty);
+ rpc LoginAbort(LoginAbortRequest) returns (google.protobuf.Empty);
+ rpc FidoAssertionAbort(LoginAbortRequest) returns (google.protobuf.Empty);
+
+ // update
+ rpc CheckUpdate(google.protobuf.Empty) returns (google.protobuf.Empty);
+ rpc InstallUpdate(google.protobuf.Empty) returns (google.protobuf.Empty);
+ rpc SetIsAutomaticUpdateOn(google.protobuf.BoolValue) returns (google.protobuf.Empty);
+ rpc IsAutomaticUpdateOn(google.protobuf.Empty) returns (google.protobuf.BoolValue);
+
+ // cache
+ rpc DiskCachePath(google.protobuf.Empty) returns (google.protobuf.StringValue);
+ rpc SetDiskCachePath(google.protobuf.StringValue) returns (google.protobuf.Empty);
+
+ // mail
+ rpc SetIsDoHEnabled(google.protobuf.BoolValue) returns (google.protobuf.Empty);
+ rpc IsDoHEnabled(google.protobuf.Empty) returns (google.protobuf.BoolValue);
+ rpc MailServerSettings(google.protobuf.Empty) returns (ImapSmtpSettings);
+ rpc SetMailServerSettings(ImapSmtpSettings) returns (google.protobuf.Empty);
+ rpc Hostname(google.protobuf.Empty) returns (google.protobuf.StringValue);
+ rpc IsPortFree(google.protobuf.Int32Value) returns (google.protobuf.BoolValue);
+
+ // keychain
+ rpc AvailableKeychains(google.protobuf.Empty) returns (AvailableKeychainsResponse);
+ rpc SetCurrentKeychain(google.protobuf.StringValue) returns (google.protobuf.Empty);
+ rpc CurrentKeychain(google.protobuf.Empty) returns (google.protobuf.StringValue);
+
+ // User & user list
+ rpc GetUserList(google.protobuf.Empty) returns (UserListResponse);
+ rpc GetUser(google.protobuf.StringValue) returns (User);
+ rpc SetUserSplitMode(UserSplitModeRequest) returns (google.protobuf.Empty);
+ rpc SendBadEventUserFeedback(UserBadEventFeedbackRequest) returns (google.protobuf.Empty);
+ rpc LogoutUser(google.protobuf.StringValue) returns (google.protobuf.Empty);
+ rpc RemoveUser(google.protobuf.StringValue) returns (google.protobuf.Empty);
+ rpc ConfigureUserAppleMail(ConfigureAppleMailRequest) returns (google.protobuf.Empty);
+
+ // TLS certificate related calls
+ rpc IsTLSCertificateInstalled(google.protobuf.Empty) returns (google.protobuf.BoolValue);
+ rpc InstallTLSCertificate(google.protobuf.Empty) returns (google.protobuf.Empty);
+ rpc ExportTLSCertificates(google.protobuf.StringValue) returns (google.protobuf.Empty);
+
+ // Server -> Client event stream
+ rpc RunEventStream(EventStreamRequest) returns (stream StreamEvent); // Keep streaming until StopEventStream is called.
+ rpc StopEventStream(google.protobuf.Empty) returns (google.protobuf.Empty);
+
+ // Repair
+ rpc TriggerRepair(google.protobuf.Empty) returns (google.protobuf.Empty);
+}
+
+//**********************************************************************************************************************
+// RPC calls requests and replies messages
+//**********************************************************************************************************************
+
+//**********************************************************
+// Log related message
+//**********************************************************
+// Note: the enum values are prefixed with 'LOG_' to avoid a clash in C++ on Windows with the ERROR macro defined in wingdi.h
+enum LogLevel {
+ LOG_PANIC = 0;
+ LOG_FATAL = 1;
+ LOG_ERROR = 2;
+ LOG_WARN = 3;
+ LOG_INFO = 4;
+ LOG_DEBUG = 5;
+ LOG_TRACE = 6;
+}
+
+message AddLogEntryRequest {
+ LogLevel level = 1;
+ string package = 2; // package is Go lingo but it identifies the component responsible for the log entry
+ string message = 3;
+};
+
+
+//**********************************************************
+// GuiReady
+//**********************************************************
+message GuiReadyResponse {
+ bool showSplashScreen = 1;
+}
+
+
+//**********************************************************
+// Bug reporting related messages.
+//**********************************************************
+message ReportBugRequest {
+ string osType = 1;
+ string osVersion = 2;
+ string title = 3;
+ string description = 4;
+ string address = 5;
+ string emailClient = 6;
+ bool includeLogs = 7;
+
+}
+
+// login related messages
+//**********************************************************
+// Login related messages
+//**********************************************************
+
+message LoginRequest {
+ string username = 1;
+ bytes password = 2;
+ optional bool useHvDetails = 3;
+}
+
+message LoginAbortRequest {
+ string username = 1;
+}
+
+//**********************************************************
+// IMAP/SMTP Mail Server settings
+//**********************************************************
+message ImapSmtpSettings {
+ int32 imapPort = 1;
+ int32 smtpPort = 2;
+ bool useSSLForImap = 3;
+ bool useSSLForSmtp = 4;
+}
+
+//**********************************************************
+// Keychain related message
+//**********************************************************
+message AvailableKeychainsResponse {
+ repeated string keychains = 1;
+}
+
+//**********************************************************
+// user related messages
+//**********************************************************
+enum UserState {
+ SIGNED_OUT = 0;
+ LOCKED = 1;
+ CONNECTED = 2;
+}
+
+message User {
+ string id = 1;
+ string username = 2;
+ string avatarText = 3;
+ UserState state = 4;
+ bool splitMode = 5;
+ int64 usedBytes = 6;
+ int64 totalBytes = 7;
+ bytes password = 8;
+ repeated string addresses = 9;
+}
+
+message UserSplitModeRequest {
+ string userID = 1;
+ bool active = 2;
+}
+
+message UserBadEventFeedbackRequest {
+ string userID = 1;
+ bool doResync = 2;
+}
+
+
+message UserListResponse {
+ repeated User users = 1;
+}
+
+message ConfigureAppleMailRequest {
+ string userID = 1;
+ string address = 2;
+}
+
+//**********************************************************************************************************************
+// Event stream messages
+//**********************************************************************************************************************
+
+message EventStreamRequest {
+ string ClientPlatform = 1;
+}
+
+message StreamEvent {
+ oneof event {
+ AppEvent app = 1;
+ LoginEvent login = 2;
+ UpdateEvent update = 3;
+ DiskCacheEvent cache = 4;
+ MailServerSettingsEvent mailServerSettings = 5;
+ KeychainEvent keychain = 6;
+ MailEvent mail = 7;
+ UserEvent user = 8;
+ GenericErrorEvent genericError = 9;
+ }
+}
+
+//**********************************************************
+// App related events
+//**********************************************************
+message AppEvent {
+ oneof event {
+ InternetStatusEvent internetStatus = 1;
+ ToggleAutostartFinishedEvent toggleAutostartFinished = 2;
+ ResetFinishedEvent resetFinished = 3;
+ ReportBugFinishedEvent reportBugFinished = 4;
+ ReportBugSuccessEvent reportBugSuccess = 5;
+ ReportBugErrorEvent reportBugError = 6;
+ ShowMainWindowEvent showMainWindow = 7;
+ ReportBugFallbackEvent reportBugFallback = 8;
+ CertificateInstallSuccessEvent certificateInstallSuccess = 9;
+ CertificateInstallCanceledEvent certificateInstallCanceled = 10;
+ CertificateInstallFailedEvent certificateInstallFailed = 11;
+ KnowledgeBaseSuggestionsEvent knowledgeBaseSuggestions = 12;
+ RepairStartedEvent repairStarted = 13;
+ AllUsersLoadedEvent allUsersLoaded = 14;
+ UserNotificationEvent userNotification = 15;
+ }
+}
+
+message InternetStatusEvent {
+ bool connected = 1;
+}
+
+message ToggleAutostartFinishedEvent {}
+message ResetFinishedEvent {}
+message ReportBugFinishedEvent {}
+message ReportBugSuccessEvent {}
+message ReportBugErrorEvent {}
+message ShowMainWindowEvent {}
+message ReportBugFallbackEvent {}
+message CertificateInstallSuccessEvent {}
+message CertificateInstallCanceledEvent {}
+message CertificateInstallFailedEvent {}
+message RepairStartedEvent {}
+message AllUsersLoadedEvent {}
+
+message KnowledgeBaseSuggestion {
+ string url = 1;
+ string title = 2;
+}
+
+message KnowledgeBaseSuggestionsEvent {
+ repeated KnowledgeBaseSuggestion suggestions = 1;
+}
+
+//**********************************************************
+// Login related events
+//**********************************************************
+message LoginEvent {
+ oneof event {
+ LoginErrorEvent error = 1;
+ LoginTfaRequestedEvent tfaRequested = 2;
+ LoginTwoPasswordsRequestedEvent twoPasswordRequested = 3;
+ LoginFinishedEvent finished = 4;
+ LoginFinishedEvent alreadyLoggedIn = 5;
+ LoginHvRequestedEvent hvRequested = 6;
+ LoginFidoRequestedEvent fidoRequested = 7;
+ LoginTfaOrFidoRequestedEvent tfaOrFidoRequested = 8;
+ LoginFidoTouchEvent loginFidoTouchRequested = 9;
+ LoginFidoTouchEvent loginFidoTouchCompleted = 10;
+ LoginFidoPinRequired loginFidoPinRequired = 11;
+ }
+}
+
+enum LoginErrorType {
+ USERNAME_PASSWORD_ERROR = 0;
+ FREE_USER = 1;
+ CONNECTION_ERROR = 2;
+ TFA_ERROR = 3;
+ TFA_ABORT = 4;
+ TWO_PASSWORDS_ERROR = 5;
+ TWO_PASSWORDS_ABORT = 6;
+ HV_ERROR = 7;
+ FIDO_PIN_INVALID = 8;
+ FIDO_PIN_BLOCKED = 9;
+ FIDO_ERROR = 10;
+}
+
+message LoginErrorEvent {
+ LoginErrorType type = 1;
+ string message = 2;
+}
+
+message LoginTfaRequestedEvent {
+ string username = 1;
+}
+
+message LoginFidoRequestedEvent {
+ string username = 1;
+}
+
+message LoginTfaOrFidoRequestedEvent {
+ string username = 1;
+}
+
+message LoginFidoTouchEvent {
+ string username = 1;
+}
+
+message LoginFidoPinRequired {
+ string username = 1;
+}
+
+message LoginTwoPasswordsRequestedEvent {
+ string username = 1;
+}
+
+message LoginFinishedEvent {
+ string userID = 1;
+ bool wasSignedOut = 2;
+}
+
+message LoginHvRequestedEvent {
+ string hvUrl = 1;
+}
+
+//**********************************************************
+// Update related events
+//**********************************************************
+message UpdateEvent {
+ oneof event {
+ UpdateErrorEvent error = 1;
+ UpdateManualReadyEvent manualReady = 2;
+ UpdateManualRestartNeededEvent manualRestartNeeded = 3;
+ UpdateForceEvent force = 4;
+ UpdateSilentRestartNeeded silentRestartNeeded = 5;
+ UpdateIsLatestVersion isLatestVersion = 6;
+ UpdateCheckFinished checkFinished = 7;
+ UpdateVersionChanged versionChanged = 8;
+ }
+}
+
+enum UpdateErrorType {
+ UPDATE_MANUAL_ERROR = 0;
+ UPDATE_FORCE_ERROR = 1;
+ UPDATE_SILENT_ERROR = 2;
+}
+
+message UpdateErrorEvent {
+ UpdateErrorType type = 1;
+}
+
+message UpdateManualReadyEvent {
+ string version = 1;
+}
+
+message UpdateManualRestartNeededEvent {};
+
+message UpdateForceEvent {
+ string version = 1;
+}
+
+message UpdateSilentRestartNeeded {}
+
+message UpdateIsLatestVersion {}
+
+message UpdateCheckFinished {}
+
+message UpdateVersionChanged {}
+
+
+//**********************************************************
+// Cache on disk related events
+//**********************************************************
+message DiskCacheEvent {
+ oneof event {
+ DiskCacheErrorEvent error = 1;
+ DiskCachePathChangedEvent pathChanged = 2;
+ DiskCachePathChangeFinishedEvent pathChangeFinished = 3;
+ }
+}
+
+enum DiskCacheErrorType {
+ CANT_MOVE_DISK_CACHE_ERROR = 0;
+};
+
+message DiskCacheErrorEvent {
+ DiskCacheErrorType type = 1;
+}
+
+message DiskCachePathChangedEvent {
+ string path = 1;
+}
+
+message DiskCachePathChangeFinishedEvent {}
+
+
+
+//**********************************************************
+// Mail server settings related events
+//**********************************************************
+message MailServerSettingsEvent {
+ oneof event {
+ MailServerSettingsErrorEvent error = 1;
+ MailServerSettingsChangedEvent mailServerSettingsChanged = 2;
+ ChangeMailServerSettingsFinishedEvent changeMailServerSettingsFinished = 3;
+ }
+}
+
+enum MailServerSettingsErrorType {
+ IMAP_PORT_STARTUP_ERROR = 0;
+ SMTP_PORT_STARTUP_ERROR = 1;
+ IMAP_PORT_CHANGE_ERROR = 2;
+ SMTP_PORT_CHANGE_ERROR = 3;
+ IMAP_CONNECTION_MODE_CHANGE_ERROR = 4;
+ SMTP_CONNECTION_MODE_CHANGE_ERROR = 5;
+}
+
+message MailServerSettingsErrorEvent { MailServerSettingsErrorType type = 1; }
+message MailServerSettingsChangedEvent { ImapSmtpSettings settings = 1; }
+message ChangeMailServerSettingsFinishedEvent {}
+
+//**********************************************************
+// keychain related events
+//**********************************************************
+message KeychainEvent {
+ oneof event {
+ ChangeKeychainFinishedEvent changeKeychainFinished = 1;
+ HasNoKeychainEvent hasNoKeychain = 2;
+ RebuildKeychainEvent rebuildKeychain = 3;
+ }
+}
+
+message ChangeKeychainFinishedEvent {}
+message HasNoKeychainEvent {}
+message RebuildKeychainEvent {}
+
+//**********************************************************
+// Mail related events
+//**********************************************************
+message MailEvent {
+ oneof event {
+ AddressChangedEvent addressChanged = 1;
+ AddressChangedLogoutEvent addressChangedLogout = 2;
+ ApiCertIssueEvent apiCertIssue = 3;
+ }
+}
+
+message AddressChangedEvent {
+ string address = 1;
+}
+
+message AddressChangedLogoutEvent {
+ string address = 1;
+}
+
+message ApiCertIssueEvent {}
+
+//**********************************************************
+// User list related event
+//**********************************************************
+
+message UserEvent {
+ oneof event {
+ ToggleSplitModeFinishedEvent toggleSplitModeFinished= 1;
+ UserDisconnectedEvent userDisconnected = 2;
+ UserChangedEvent userChanged = 3;
+ UserBadEvent userBadEvent = 4;
+ UsedBytesChangedEvent usedBytesChangedEvent = 5;
+ ImapLoginFailedEvent imapLoginFailedEvent = 6;
+ SyncStartedEvent syncStartedEvent = 7;
+ SyncFinishedEvent syncFinishedEvent = 8;
+ SyncProgressEvent syncProgressEvent = 9;
+ }
+}
+
+
+message ToggleSplitModeFinishedEvent {
+ string userID = 1;
+}
+
+message UserDisconnectedEvent {
+ string username = 1;
+}
+
+message UserChangedEvent {
+ string userID = 1;
+}
+
+message UserBadEvent {
+ string userID = 1;
+ string errorMessage = 2;
+}
+
+message UsedBytesChangedEvent {
+ string userID = 1;
+ int64 usedBytes = 2;
+}
+
+message ImapLoginFailedEvent {
+ string username = 1;
+}
+
+message SyncStartedEvent {
+ string userID = 1;
+}
+
+message SyncFinishedEvent {
+ string userID = 1;
+}
+
+message SyncProgressEvent {
+ string userID = 1;
+ double progress = 2;
+ int64 elapsedMs = 3;
+ int64 remainingMs = 4;
+}
+
+message UserNotificationEvent {
+ string title = 1;
+ string subtitle = 2;
+ string body = 3;
+ string userID = 4;
+}
+
+
+//**********************************************************
+// Generic errors
+//**********************************************************
+enum ErrorCode {
+ UNKNOWN_ERROR = 0;
+ TLS_CERT_EXPORT_ERROR = 1;
+ TLS_KEY_EXPORT_ERROR = 2;
+}
+
+message GenericErrorEvent {
+ ErrorCode code = 1;
+}
diff --git a/images/proton-bridge/exporter/bridgepb/bridge_grpc.pb.go b/images/proton-bridge/exporter/bridgepb/bridge_grpc.pb.go
new file mode 100644
index 0000000..885718f
--- /dev/null
+++ b/images/proton-bridge/exporter/bridgepb/bridge_grpc.pb.go
@@ -0,0 +1,2532 @@
+// Copyright (c) 2022 Proton Technologies AG
+//
+// This file is part of ProtonMail Bridge.
+//
+// ProtonMail Bridge is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// ProtonMail Bridge is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with ProtonMail Bridge. If not, see .
+
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.5.1
+// - protoc v5.29.5
+// source: bridge.proto
+
+package bridgepb
+
+import (
+ context "context"
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
+ emptypb "google.golang.org/protobuf/types/known/emptypb"
+ wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.64.0 or later.
+const _ = grpc.SupportPackageIsVersion9
+
+const (
+ Bridge_CheckTokens_FullMethodName = "/grpc.Bridge/CheckTokens"
+ Bridge_AddLogEntry_FullMethodName = "/grpc.Bridge/AddLogEntry"
+ Bridge_GuiReady_FullMethodName = "/grpc.Bridge/GuiReady"
+ Bridge_Quit_FullMethodName = "/grpc.Bridge/Quit"
+ Bridge_Restart_FullMethodName = "/grpc.Bridge/Restart"
+ Bridge_ShowOnStartup_FullMethodName = "/grpc.Bridge/ShowOnStartup"
+ Bridge_SetIsAutostartOn_FullMethodName = "/grpc.Bridge/SetIsAutostartOn"
+ Bridge_IsAutostartOn_FullMethodName = "/grpc.Bridge/IsAutostartOn"
+ Bridge_SetIsBetaEnabled_FullMethodName = "/grpc.Bridge/SetIsBetaEnabled"
+ Bridge_IsBetaEnabled_FullMethodName = "/grpc.Bridge/IsBetaEnabled"
+ Bridge_SetIsAllMailVisible_FullMethodName = "/grpc.Bridge/SetIsAllMailVisible"
+ Bridge_IsAllMailVisible_FullMethodName = "/grpc.Bridge/IsAllMailVisible"
+ Bridge_SetIsTelemetryDisabled_FullMethodName = "/grpc.Bridge/SetIsTelemetryDisabled"
+ Bridge_IsTelemetryDisabled_FullMethodName = "/grpc.Bridge/IsTelemetryDisabled"
+ Bridge_GoOs_FullMethodName = "/grpc.Bridge/GoOs"
+ Bridge_TriggerReset_FullMethodName = "/grpc.Bridge/TriggerReset"
+ Bridge_Version_FullMethodName = "/grpc.Bridge/Version"
+ Bridge_LogsPath_FullMethodName = "/grpc.Bridge/LogsPath"
+ Bridge_LicensePath_FullMethodName = "/grpc.Bridge/LicensePath"
+ Bridge_ReleaseNotesPageLink_FullMethodName = "/grpc.Bridge/ReleaseNotesPageLink"
+ Bridge_DependencyLicensesLink_FullMethodName = "/grpc.Bridge/DependencyLicensesLink"
+ Bridge_LandingPageLink_FullMethodName = "/grpc.Bridge/LandingPageLink"
+ Bridge_SetColorSchemeName_FullMethodName = "/grpc.Bridge/SetColorSchemeName"
+ Bridge_ColorSchemeName_FullMethodName = "/grpc.Bridge/ColorSchemeName"
+ Bridge_CurrentEmailClient_FullMethodName = "/grpc.Bridge/CurrentEmailClient"
+ Bridge_ReportBug_FullMethodName = "/grpc.Bridge/ReportBug"
+ Bridge_ForceLauncher_FullMethodName = "/grpc.Bridge/ForceLauncher"
+ Bridge_SetMainExecutable_FullMethodName = "/grpc.Bridge/SetMainExecutable"
+ Bridge_RequestKnowledgeBaseSuggestions_FullMethodName = "/grpc.Bridge/RequestKnowledgeBaseSuggestions"
+ Bridge_Login_FullMethodName = "/grpc.Bridge/Login"
+ Bridge_Login2FA_FullMethodName = "/grpc.Bridge/Login2FA"
+ Bridge_LoginFido_FullMethodName = "/grpc.Bridge/LoginFido"
+ Bridge_Login2Passwords_FullMethodName = "/grpc.Bridge/Login2Passwords"
+ Bridge_LoginAbort_FullMethodName = "/grpc.Bridge/LoginAbort"
+ Bridge_FidoAssertionAbort_FullMethodName = "/grpc.Bridge/FidoAssertionAbort"
+ Bridge_CheckUpdate_FullMethodName = "/grpc.Bridge/CheckUpdate"
+ Bridge_InstallUpdate_FullMethodName = "/grpc.Bridge/InstallUpdate"
+ Bridge_SetIsAutomaticUpdateOn_FullMethodName = "/grpc.Bridge/SetIsAutomaticUpdateOn"
+ Bridge_IsAutomaticUpdateOn_FullMethodName = "/grpc.Bridge/IsAutomaticUpdateOn"
+ Bridge_DiskCachePath_FullMethodName = "/grpc.Bridge/DiskCachePath"
+ Bridge_SetDiskCachePath_FullMethodName = "/grpc.Bridge/SetDiskCachePath"
+ Bridge_SetIsDoHEnabled_FullMethodName = "/grpc.Bridge/SetIsDoHEnabled"
+ Bridge_IsDoHEnabled_FullMethodName = "/grpc.Bridge/IsDoHEnabled"
+ Bridge_MailServerSettings_FullMethodName = "/grpc.Bridge/MailServerSettings"
+ Bridge_SetMailServerSettings_FullMethodName = "/grpc.Bridge/SetMailServerSettings"
+ Bridge_Hostname_FullMethodName = "/grpc.Bridge/Hostname"
+ Bridge_IsPortFree_FullMethodName = "/grpc.Bridge/IsPortFree"
+ Bridge_AvailableKeychains_FullMethodName = "/grpc.Bridge/AvailableKeychains"
+ Bridge_SetCurrentKeychain_FullMethodName = "/grpc.Bridge/SetCurrentKeychain"
+ Bridge_CurrentKeychain_FullMethodName = "/grpc.Bridge/CurrentKeychain"
+ Bridge_GetUserList_FullMethodName = "/grpc.Bridge/GetUserList"
+ Bridge_GetUser_FullMethodName = "/grpc.Bridge/GetUser"
+ Bridge_SetUserSplitMode_FullMethodName = "/grpc.Bridge/SetUserSplitMode"
+ Bridge_SendBadEventUserFeedback_FullMethodName = "/grpc.Bridge/SendBadEventUserFeedback"
+ Bridge_LogoutUser_FullMethodName = "/grpc.Bridge/LogoutUser"
+ Bridge_RemoveUser_FullMethodName = "/grpc.Bridge/RemoveUser"
+ Bridge_ConfigureUserAppleMail_FullMethodName = "/grpc.Bridge/ConfigureUserAppleMail"
+ Bridge_IsTLSCertificateInstalled_FullMethodName = "/grpc.Bridge/IsTLSCertificateInstalled"
+ Bridge_InstallTLSCertificate_FullMethodName = "/grpc.Bridge/InstallTLSCertificate"
+ Bridge_ExportTLSCertificates_FullMethodName = "/grpc.Bridge/ExportTLSCertificates"
+ Bridge_RunEventStream_FullMethodName = "/grpc.Bridge/RunEventStream"
+ Bridge_StopEventStream_FullMethodName = "/grpc.Bridge/StopEventStream"
+ Bridge_TriggerRepair_FullMethodName = "/grpc.Bridge/TriggerRepair"
+)
+
+// BridgeClient is the client API for Bridge service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+//
+// **********************************************************************************************************************
+//
+// Service Declaration
+//
+// **********************************************************************************************************************≠––
+type BridgeClient interface {
+ // App related calls
+ CheckTokens(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*wrapperspb.StringValue, error)
+ AddLogEntry(ctx context.Context, in *AddLogEntryRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ GuiReady(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GuiReadyResponse, error)
+ Quit(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ Restart(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ ShowOnStartup(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error)
+ SetIsAutostartOn(ctx context.Context, in *wrapperspb.BoolValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ IsAutostartOn(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error)
+ SetIsBetaEnabled(ctx context.Context, in *wrapperspb.BoolValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ IsBetaEnabled(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error)
+ SetIsAllMailVisible(ctx context.Context, in *wrapperspb.BoolValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ IsAllMailVisible(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error)
+ SetIsTelemetryDisabled(ctx context.Context, in *wrapperspb.BoolValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ IsTelemetryDisabled(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error)
+ GoOs(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error)
+ TriggerReset(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ Version(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error)
+ LogsPath(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error)
+ LicensePath(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error)
+ ReleaseNotesPageLink(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error)
+ DependencyLicensesLink(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error)
+ LandingPageLink(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error)
+ SetColorSchemeName(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ ColorSchemeName(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error)
+ CurrentEmailClient(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error)
+ ReportBug(ctx context.Context, in *ReportBugRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ ForceLauncher(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ SetMainExecutable(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ RequestKnowledgeBaseSuggestions(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ // login
+ Login(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ Login2FA(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ LoginFido(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ Login2Passwords(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ LoginAbort(ctx context.Context, in *LoginAbortRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ FidoAssertionAbort(ctx context.Context, in *LoginAbortRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ // update
+ CheckUpdate(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ InstallUpdate(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ SetIsAutomaticUpdateOn(ctx context.Context, in *wrapperspb.BoolValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ IsAutomaticUpdateOn(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error)
+ // cache
+ DiskCachePath(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error)
+ SetDiskCachePath(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ // mail
+ SetIsDoHEnabled(ctx context.Context, in *wrapperspb.BoolValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ IsDoHEnabled(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error)
+ MailServerSettings(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ImapSmtpSettings, error)
+ SetMailServerSettings(ctx context.Context, in *ImapSmtpSettings, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ Hostname(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error)
+ IsPortFree(ctx context.Context, in *wrapperspb.Int32Value, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error)
+ // keychain
+ AvailableKeychains(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*AvailableKeychainsResponse, error)
+ SetCurrentKeychain(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ CurrentKeychain(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error)
+ // User & user list
+ GetUserList(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*UserListResponse, error)
+ GetUser(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*User, error)
+ SetUserSplitMode(ctx context.Context, in *UserSplitModeRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ SendBadEventUserFeedback(ctx context.Context, in *UserBadEventFeedbackRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ LogoutUser(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ RemoveUser(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ ConfigureUserAppleMail(ctx context.Context, in *ConfigureAppleMailRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ // TLS certificate related calls
+ IsTLSCertificateInstalled(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error)
+ InstallTLSCertificate(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ ExportTLSCertificates(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ // Server -> Client event stream
+ RunEventStream(ctx context.Context, in *EventStreamRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[StreamEvent], error)
+ StopEventStream(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error)
+ // Repair
+ TriggerRepair(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error)
+}
+
+type bridgeClient struct {
+ cc grpc.ClientConnInterface
+}
+
+func NewBridgeClient(cc grpc.ClientConnInterface) BridgeClient {
+ return &bridgeClient{cc}
+}
+
+func (c *bridgeClient) CheckTokens(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*wrapperspb.StringValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.StringValue)
+ err := c.cc.Invoke(ctx, Bridge_CheckTokens_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) AddLogEntry(ctx context.Context, in *AddLogEntryRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_AddLogEntry_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) GuiReady(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GuiReadyResponse, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(GuiReadyResponse)
+ err := c.cc.Invoke(ctx, Bridge_GuiReady_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) Quit(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_Quit_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) Restart(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_Restart_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) ShowOnStartup(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.BoolValue)
+ err := c.cc.Invoke(ctx, Bridge_ShowOnStartup_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) SetIsAutostartOn(ctx context.Context, in *wrapperspb.BoolValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_SetIsAutostartOn_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) IsAutostartOn(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.BoolValue)
+ err := c.cc.Invoke(ctx, Bridge_IsAutostartOn_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) SetIsBetaEnabled(ctx context.Context, in *wrapperspb.BoolValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_SetIsBetaEnabled_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) IsBetaEnabled(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.BoolValue)
+ err := c.cc.Invoke(ctx, Bridge_IsBetaEnabled_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) SetIsAllMailVisible(ctx context.Context, in *wrapperspb.BoolValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_SetIsAllMailVisible_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) IsAllMailVisible(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.BoolValue)
+ err := c.cc.Invoke(ctx, Bridge_IsAllMailVisible_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) SetIsTelemetryDisabled(ctx context.Context, in *wrapperspb.BoolValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_SetIsTelemetryDisabled_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) IsTelemetryDisabled(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.BoolValue)
+ err := c.cc.Invoke(ctx, Bridge_IsTelemetryDisabled_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) GoOs(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.StringValue)
+ err := c.cc.Invoke(ctx, Bridge_GoOs_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) TriggerReset(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_TriggerReset_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) Version(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.StringValue)
+ err := c.cc.Invoke(ctx, Bridge_Version_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) LogsPath(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.StringValue)
+ err := c.cc.Invoke(ctx, Bridge_LogsPath_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) LicensePath(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.StringValue)
+ err := c.cc.Invoke(ctx, Bridge_LicensePath_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) ReleaseNotesPageLink(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.StringValue)
+ err := c.cc.Invoke(ctx, Bridge_ReleaseNotesPageLink_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) DependencyLicensesLink(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.StringValue)
+ err := c.cc.Invoke(ctx, Bridge_DependencyLicensesLink_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) LandingPageLink(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.StringValue)
+ err := c.cc.Invoke(ctx, Bridge_LandingPageLink_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) SetColorSchemeName(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_SetColorSchemeName_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) ColorSchemeName(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.StringValue)
+ err := c.cc.Invoke(ctx, Bridge_ColorSchemeName_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) CurrentEmailClient(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.StringValue)
+ err := c.cc.Invoke(ctx, Bridge_CurrentEmailClient_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) ReportBug(ctx context.Context, in *ReportBugRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_ReportBug_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) ForceLauncher(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_ForceLauncher_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) SetMainExecutable(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_SetMainExecutable_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) RequestKnowledgeBaseSuggestions(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_RequestKnowledgeBaseSuggestions_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) Login(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_Login_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) Login2FA(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_Login2FA_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) LoginFido(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_LoginFido_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) Login2Passwords(ctx context.Context, in *LoginRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_Login2Passwords_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) LoginAbort(ctx context.Context, in *LoginAbortRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_LoginAbort_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) FidoAssertionAbort(ctx context.Context, in *LoginAbortRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_FidoAssertionAbort_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) CheckUpdate(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_CheckUpdate_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) InstallUpdate(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_InstallUpdate_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) SetIsAutomaticUpdateOn(ctx context.Context, in *wrapperspb.BoolValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_SetIsAutomaticUpdateOn_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) IsAutomaticUpdateOn(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.BoolValue)
+ err := c.cc.Invoke(ctx, Bridge_IsAutomaticUpdateOn_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) DiskCachePath(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.StringValue)
+ err := c.cc.Invoke(ctx, Bridge_DiskCachePath_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) SetDiskCachePath(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_SetDiskCachePath_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) SetIsDoHEnabled(ctx context.Context, in *wrapperspb.BoolValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_SetIsDoHEnabled_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) IsDoHEnabled(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.BoolValue)
+ err := c.cc.Invoke(ctx, Bridge_IsDoHEnabled_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) MailServerSettings(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ImapSmtpSettings, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(ImapSmtpSettings)
+ err := c.cc.Invoke(ctx, Bridge_MailServerSettings_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) SetMailServerSettings(ctx context.Context, in *ImapSmtpSettings, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_SetMailServerSettings_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) Hostname(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.StringValue)
+ err := c.cc.Invoke(ctx, Bridge_Hostname_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) IsPortFree(ctx context.Context, in *wrapperspb.Int32Value, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.BoolValue)
+ err := c.cc.Invoke(ctx, Bridge_IsPortFree_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) AvailableKeychains(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*AvailableKeychainsResponse, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(AvailableKeychainsResponse)
+ err := c.cc.Invoke(ctx, Bridge_AvailableKeychains_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) SetCurrentKeychain(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_SetCurrentKeychain_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) CurrentKeychain(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.StringValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.StringValue)
+ err := c.cc.Invoke(ctx, Bridge_CurrentKeychain_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) GetUserList(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*UserListResponse, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(UserListResponse)
+ err := c.cc.Invoke(ctx, Bridge_GetUserList_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) GetUser(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*User, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(User)
+ err := c.cc.Invoke(ctx, Bridge_GetUser_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) SetUserSplitMode(ctx context.Context, in *UserSplitModeRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_SetUserSplitMode_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) SendBadEventUserFeedback(ctx context.Context, in *UserBadEventFeedbackRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_SendBadEventUserFeedback_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) LogoutUser(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_LogoutUser_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) RemoveUser(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_RemoveUser_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) ConfigureUserAppleMail(ctx context.Context, in *ConfigureAppleMailRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_ConfigureUserAppleMail_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) IsTLSCertificateInstalled(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*wrapperspb.BoolValue, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(wrapperspb.BoolValue)
+ err := c.cc.Invoke(ctx, Bridge_IsTLSCertificateInstalled_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) InstallTLSCertificate(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_InstallTLSCertificate_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) ExportTLSCertificates(ctx context.Context, in *wrapperspb.StringValue, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_ExportTLSCertificates_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) RunEventStream(ctx context.Context, in *EventStreamRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[StreamEvent], error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ stream, err := c.cc.NewStream(ctx, &Bridge_ServiceDesc.Streams[0], Bridge_RunEventStream_FullMethodName, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ x := &grpc.GenericClientStream[EventStreamRequest, StreamEvent]{ClientStream: stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type Bridge_RunEventStreamClient = grpc.ServerStreamingClient[StreamEvent]
+
+func (c *bridgeClient) StopEventStream(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_StopEventStream_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *bridgeClient) TriggerRepair(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+ cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+ out := new(emptypb.Empty)
+ err := c.cc.Invoke(ctx, Bridge_TriggerRepair_FullMethodName, in, out, cOpts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// BridgeServer is the server API for Bridge service.
+// All implementations must embed UnimplementedBridgeServer
+// for forward compatibility.
+//
+// **********************************************************************************************************************
+//
+// Service Declaration
+//
+// **********************************************************************************************************************≠––
+type BridgeServer interface {
+ // App related calls
+ CheckTokens(context.Context, *wrapperspb.StringValue) (*wrapperspb.StringValue, error)
+ AddLogEntry(context.Context, *AddLogEntryRequest) (*emptypb.Empty, error)
+ GuiReady(context.Context, *emptypb.Empty) (*GuiReadyResponse, error)
+ Quit(context.Context, *emptypb.Empty) (*emptypb.Empty, error)
+ Restart(context.Context, *emptypb.Empty) (*emptypb.Empty, error)
+ ShowOnStartup(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error)
+ SetIsAutostartOn(context.Context, *wrapperspb.BoolValue) (*emptypb.Empty, error)
+ IsAutostartOn(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error)
+ SetIsBetaEnabled(context.Context, *wrapperspb.BoolValue) (*emptypb.Empty, error)
+ IsBetaEnabled(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error)
+ SetIsAllMailVisible(context.Context, *wrapperspb.BoolValue) (*emptypb.Empty, error)
+ IsAllMailVisible(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error)
+ SetIsTelemetryDisabled(context.Context, *wrapperspb.BoolValue) (*emptypb.Empty, error)
+ IsTelemetryDisabled(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error)
+ GoOs(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error)
+ TriggerReset(context.Context, *emptypb.Empty) (*emptypb.Empty, error)
+ Version(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error)
+ LogsPath(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error)
+ LicensePath(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error)
+ ReleaseNotesPageLink(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error)
+ DependencyLicensesLink(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error)
+ LandingPageLink(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error)
+ SetColorSchemeName(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error)
+ ColorSchemeName(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error)
+ CurrentEmailClient(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error)
+ ReportBug(context.Context, *ReportBugRequest) (*emptypb.Empty, error)
+ ForceLauncher(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error)
+ SetMainExecutable(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error)
+ RequestKnowledgeBaseSuggestions(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error)
+ // login
+ Login(context.Context, *LoginRequest) (*emptypb.Empty, error)
+ Login2FA(context.Context, *LoginRequest) (*emptypb.Empty, error)
+ LoginFido(context.Context, *LoginRequest) (*emptypb.Empty, error)
+ Login2Passwords(context.Context, *LoginRequest) (*emptypb.Empty, error)
+ LoginAbort(context.Context, *LoginAbortRequest) (*emptypb.Empty, error)
+ FidoAssertionAbort(context.Context, *LoginAbortRequest) (*emptypb.Empty, error)
+ // update
+ CheckUpdate(context.Context, *emptypb.Empty) (*emptypb.Empty, error)
+ InstallUpdate(context.Context, *emptypb.Empty) (*emptypb.Empty, error)
+ SetIsAutomaticUpdateOn(context.Context, *wrapperspb.BoolValue) (*emptypb.Empty, error)
+ IsAutomaticUpdateOn(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error)
+ // cache
+ DiskCachePath(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error)
+ SetDiskCachePath(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error)
+ // mail
+ SetIsDoHEnabled(context.Context, *wrapperspb.BoolValue) (*emptypb.Empty, error)
+ IsDoHEnabled(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error)
+ MailServerSettings(context.Context, *emptypb.Empty) (*ImapSmtpSettings, error)
+ SetMailServerSettings(context.Context, *ImapSmtpSettings) (*emptypb.Empty, error)
+ Hostname(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error)
+ IsPortFree(context.Context, *wrapperspb.Int32Value) (*wrapperspb.BoolValue, error)
+ // keychain
+ AvailableKeychains(context.Context, *emptypb.Empty) (*AvailableKeychainsResponse, error)
+ SetCurrentKeychain(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error)
+ CurrentKeychain(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error)
+ // User & user list
+ GetUserList(context.Context, *emptypb.Empty) (*UserListResponse, error)
+ GetUser(context.Context, *wrapperspb.StringValue) (*User, error)
+ SetUserSplitMode(context.Context, *UserSplitModeRequest) (*emptypb.Empty, error)
+ SendBadEventUserFeedback(context.Context, *UserBadEventFeedbackRequest) (*emptypb.Empty, error)
+ LogoutUser(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error)
+ RemoveUser(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error)
+ ConfigureUserAppleMail(context.Context, *ConfigureAppleMailRequest) (*emptypb.Empty, error)
+ // TLS certificate related calls
+ IsTLSCertificateInstalled(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error)
+ InstallTLSCertificate(context.Context, *emptypb.Empty) (*emptypb.Empty, error)
+ ExportTLSCertificates(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error)
+ // Server -> Client event stream
+ RunEventStream(*EventStreamRequest, grpc.ServerStreamingServer[StreamEvent]) error
+ StopEventStream(context.Context, *emptypb.Empty) (*emptypb.Empty, error)
+ // Repair
+ TriggerRepair(context.Context, *emptypb.Empty) (*emptypb.Empty, error)
+ mustEmbedUnimplementedBridgeServer()
+}
+
+// UnimplementedBridgeServer must be embedded to have
+// forward compatible implementations.
+//
+// NOTE: this should be embedded by value instead of pointer to avoid a nil
+// pointer dereference when methods are called.
+type UnimplementedBridgeServer struct{}
+
+func (UnimplementedBridgeServer) CheckTokens(context.Context, *wrapperspb.StringValue) (*wrapperspb.StringValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method CheckTokens not implemented")
+}
+func (UnimplementedBridgeServer) AddLogEntry(context.Context, *AddLogEntryRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method AddLogEntry not implemented")
+}
+func (UnimplementedBridgeServer) GuiReady(context.Context, *emptypb.Empty) (*GuiReadyResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GuiReady not implemented")
+}
+func (UnimplementedBridgeServer) Quit(context.Context, *emptypb.Empty) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Quit not implemented")
+}
+func (UnimplementedBridgeServer) Restart(context.Context, *emptypb.Empty) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Restart not implemented")
+}
+func (UnimplementedBridgeServer) ShowOnStartup(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ShowOnStartup not implemented")
+}
+func (UnimplementedBridgeServer) SetIsAutostartOn(context.Context, *wrapperspb.BoolValue) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method SetIsAutostartOn not implemented")
+}
+func (UnimplementedBridgeServer) IsAutostartOn(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method IsAutostartOn not implemented")
+}
+func (UnimplementedBridgeServer) SetIsBetaEnabled(context.Context, *wrapperspb.BoolValue) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method SetIsBetaEnabled not implemented")
+}
+func (UnimplementedBridgeServer) IsBetaEnabled(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method IsBetaEnabled not implemented")
+}
+func (UnimplementedBridgeServer) SetIsAllMailVisible(context.Context, *wrapperspb.BoolValue) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method SetIsAllMailVisible not implemented")
+}
+func (UnimplementedBridgeServer) IsAllMailVisible(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method IsAllMailVisible not implemented")
+}
+func (UnimplementedBridgeServer) SetIsTelemetryDisabled(context.Context, *wrapperspb.BoolValue) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method SetIsTelemetryDisabled not implemented")
+}
+func (UnimplementedBridgeServer) IsTelemetryDisabled(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method IsTelemetryDisabled not implemented")
+}
+func (UnimplementedBridgeServer) GoOs(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GoOs not implemented")
+}
+func (UnimplementedBridgeServer) TriggerReset(context.Context, *emptypb.Empty) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method TriggerReset not implemented")
+}
+func (UnimplementedBridgeServer) Version(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Version not implemented")
+}
+func (UnimplementedBridgeServer) LogsPath(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method LogsPath not implemented")
+}
+func (UnimplementedBridgeServer) LicensePath(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method LicensePath not implemented")
+}
+func (UnimplementedBridgeServer) ReleaseNotesPageLink(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ReleaseNotesPageLink not implemented")
+}
+func (UnimplementedBridgeServer) DependencyLicensesLink(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method DependencyLicensesLink not implemented")
+}
+func (UnimplementedBridgeServer) LandingPageLink(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method LandingPageLink not implemented")
+}
+func (UnimplementedBridgeServer) SetColorSchemeName(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method SetColorSchemeName not implemented")
+}
+func (UnimplementedBridgeServer) ColorSchemeName(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ColorSchemeName not implemented")
+}
+func (UnimplementedBridgeServer) CurrentEmailClient(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method CurrentEmailClient not implemented")
+}
+func (UnimplementedBridgeServer) ReportBug(context.Context, *ReportBugRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ReportBug not implemented")
+}
+func (UnimplementedBridgeServer) ForceLauncher(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ForceLauncher not implemented")
+}
+func (UnimplementedBridgeServer) SetMainExecutable(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method SetMainExecutable not implemented")
+}
+func (UnimplementedBridgeServer) RequestKnowledgeBaseSuggestions(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method RequestKnowledgeBaseSuggestions not implemented")
+}
+func (UnimplementedBridgeServer) Login(context.Context, *LoginRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Login not implemented")
+}
+func (UnimplementedBridgeServer) Login2FA(context.Context, *LoginRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Login2FA not implemented")
+}
+func (UnimplementedBridgeServer) LoginFido(context.Context, *LoginRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method LoginFido not implemented")
+}
+func (UnimplementedBridgeServer) Login2Passwords(context.Context, *LoginRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Login2Passwords not implemented")
+}
+func (UnimplementedBridgeServer) LoginAbort(context.Context, *LoginAbortRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method LoginAbort not implemented")
+}
+func (UnimplementedBridgeServer) FidoAssertionAbort(context.Context, *LoginAbortRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method FidoAssertionAbort not implemented")
+}
+func (UnimplementedBridgeServer) CheckUpdate(context.Context, *emptypb.Empty) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method CheckUpdate not implemented")
+}
+func (UnimplementedBridgeServer) InstallUpdate(context.Context, *emptypb.Empty) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method InstallUpdate not implemented")
+}
+func (UnimplementedBridgeServer) SetIsAutomaticUpdateOn(context.Context, *wrapperspb.BoolValue) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method SetIsAutomaticUpdateOn not implemented")
+}
+func (UnimplementedBridgeServer) IsAutomaticUpdateOn(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method IsAutomaticUpdateOn not implemented")
+}
+func (UnimplementedBridgeServer) DiskCachePath(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method DiskCachePath not implemented")
+}
+func (UnimplementedBridgeServer) SetDiskCachePath(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method SetDiskCachePath not implemented")
+}
+func (UnimplementedBridgeServer) SetIsDoHEnabled(context.Context, *wrapperspb.BoolValue) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method SetIsDoHEnabled not implemented")
+}
+func (UnimplementedBridgeServer) IsDoHEnabled(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method IsDoHEnabled not implemented")
+}
+func (UnimplementedBridgeServer) MailServerSettings(context.Context, *emptypb.Empty) (*ImapSmtpSettings, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method MailServerSettings not implemented")
+}
+func (UnimplementedBridgeServer) SetMailServerSettings(context.Context, *ImapSmtpSettings) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method SetMailServerSettings not implemented")
+}
+func (UnimplementedBridgeServer) Hostname(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method Hostname not implemented")
+}
+func (UnimplementedBridgeServer) IsPortFree(context.Context, *wrapperspb.Int32Value) (*wrapperspb.BoolValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method IsPortFree not implemented")
+}
+func (UnimplementedBridgeServer) AvailableKeychains(context.Context, *emptypb.Empty) (*AvailableKeychainsResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method AvailableKeychains not implemented")
+}
+func (UnimplementedBridgeServer) SetCurrentKeychain(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method SetCurrentKeychain not implemented")
+}
+func (UnimplementedBridgeServer) CurrentKeychain(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method CurrentKeychain not implemented")
+}
+func (UnimplementedBridgeServer) GetUserList(context.Context, *emptypb.Empty) (*UserListResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetUserList not implemented")
+}
+func (UnimplementedBridgeServer) GetUser(context.Context, *wrapperspb.StringValue) (*User, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetUser not implemented")
+}
+func (UnimplementedBridgeServer) SetUserSplitMode(context.Context, *UserSplitModeRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method SetUserSplitMode not implemented")
+}
+func (UnimplementedBridgeServer) SendBadEventUserFeedback(context.Context, *UserBadEventFeedbackRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method SendBadEventUserFeedback not implemented")
+}
+func (UnimplementedBridgeServer) LogoutUser(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method LogoutUser not implemented")
+}
+func (UnimplementedBridgeServer) RemoveUser(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method RemoveUser not implemented")
+}
+func (UnimplementedBridgeServer) ConfigureUserAppleMail(context.Context, *ConfigureAppleMailRequest) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ConfigureUserAppleMail not implemented")
+}
+func (UnimplementedBridgeServer) IsTLSCertificateInstalled(context.Context, *emptypb.Empty) (*wrapperspb.BoolValue, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method IsTLSCertificateInstalled not implemented")
+}
+func (UnimplementedBridgeServer) InstallTLSCertificate(context.Context, *emptypb.Empty) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method InstallTLSCertificate not implemented")
+}
+func (UnimplementedBridgeServer) ExportTLSCertificates(context.Context, *wrapperspb.StringValue) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ExportTLSCertificates not implemented")
+}
+func (UnimplementedBridgeServer) RunEventStream(*EventStreamRequest, grpc.ServerStreamingServer[StreamEvent]) error {
+ return status.Errorf(codes.Unimplemented, "method RunEventStream not implemented")
+}
+func (UnimplementedBridgeServer) StopEventStream(context.Context, *emptypb.Empty) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method StopEventStream not implemented")
+}
+func (UnimplementedBridgeServer) TriggerRepair(context.Context, *emptypb.Empty) (*emptypb.Empty, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method TriggerRepair not implemented")
+}
+func (UnimplementedBridgeServer) mustEmbedUnimplementedBridgeServer() {}
+func (UnimplementedBridgeServer) testEmbeddedByValue() {}
+
+// UnsafeBridgeServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to BridgeServer will
+// result in compilation errors.
+type UnsafeBridgeServer interface {
+ mustEmbedUnimplementedBridgeServer()
+}
+
+func RegisterBridgeServer(s grpc.ServiceRegistrar, srv BridgeServer) {
+ // If the following call pancis, it indicates UnimplementedBridgeServer was
+ // embedded by pointer and is nil. This will cause panics if an
+ // unimplemented method is ever invoked, so we test this at initialization
+ // time to prevent it from happening at runtime later due to I/O.
+ if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
+ t.testEmbeddedByValue()
+ }
+ s.RegisterService(&Bridge_ServiceDesc, srv)
+}
+
+func _Bridge_CheckTokens_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.StringValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).CheckTokens(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_CheckTokens_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).CheckTokens(ctx, req.(*wrapperspb.StringValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_AddLogEntry_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(AddLogEntryRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).AddLogEntry(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_AddLogEntry_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).AddLogEntry(ctx, req.(*AddLogEntryRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_GuiReady_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).GuiReady(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_GuiReady_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).GuiReady(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_Quit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).Quit(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_Quit_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).Quit(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_Restart_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).Restart(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_Restart_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).Restart(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_ShowOnStartup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).ShowOnStartup(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_ShowOnStartup_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).ShowOnStartup(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_SetIsAutostartOn_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.BoolValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).SetIsAutostartOn(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_SetIsAutostartOn_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).SetIsAutostartOn(ctx, req.(*wrapperspb.BoolValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_IsAutostartOn_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).IsAutostartOn(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_IsAutostartOn_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).IsAutostartOn(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_SetIsBetaEnabled_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.BoolValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).SetIsBetaEnabled(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_SetIsBetaEnabled_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).SetIsBetaEnabled(ctx, req.(*wrapperspb.BoolValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_IsBetaEnabled_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).IsBetaEnabled(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_IsBetaEnabled_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).IsBetaEnabled(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_SetIsAllMailVisible_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.BoolValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).SetIsAllMailVisible(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_SetIsAllMailVisible_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).SetIsAllMailVisible(ctx, req.(*wrapperspb.BoolValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_IsAllMailVisible_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).IsAllMailVisible(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_IsAllMailVisible_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).IsAllMailVisible(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_SetIsTelemetryDisabled_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.BoolValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).SetIsTelemetryDisabled(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_SetIsTelemetryDisabled_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).SetIsTelemetryDisabled(ctx, req.(*wrapperspb.BoolValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_IsTelemetryDisabled_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).IsTelemetryDisabled(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_IsTelemetryDisabled_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).IsTelemetryDisabled(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_GoOs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).GoOs(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_GoOs_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).GoOs(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_TriggerReset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).TriggerReset(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_TriggerReset_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).TriggerReset(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_Version_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).Version(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_Version_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).Version(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_LogsPath_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).LogsPath(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_LogsPath_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).LogsPath(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_LicensePath_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).LicensePath(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_LicensePath_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).LicensePath(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_ReleaseNotesPageLink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).ReleaseNotesPageLink(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_ReleaseNotesPageLink_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).ReleaseNotesPageLink(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_DependencyLicensesLink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).DependencyLicensesLink(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_DependencyLicensesLink_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).DependencyLicensesLink(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_LandingPageLink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).LandingPageLink(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_LandingPageLink_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).LandingPageLink(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_SetColorSchemeName_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.StringValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).SetColorSchemeName(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_SetColorSchemeName_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).SetColorSchemeName(ctx, req.(*wrapperspb.StringValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_ColorSchemeName_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).ColorSchemeName(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_ColorSchemeName_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).ColorSchemeName(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_CurrentEmailClient_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).CurrentEmailClient(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_CurrentEmailClient_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).CurrentEmailClient(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_ReportBug_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ReportBugRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).ReportBug(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_ReportBug_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).ReportBug(ctx, req.(*ReportBugRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_ForceLauncher_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.StringValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).ForceLauncher(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_ForceLauncher_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).ForceLauncher(ctx, req.(*wrapperspb.StringValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_SetMainExecutable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.StringValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).SetMainExecutable(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_SetMainExecutable_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).SetMainExecutable(ctx, req.(*wrapperspb.StringValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_RequestKnowledgeBaseSuggestions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.StringValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).RequestKnowledgeBaseSuggestions(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_RequestKnowledgeBaseSuggestions_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).RequestKnowledgeBaseSuggestions(ctx, req.(*wrapperspb.StringValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_Login_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(LoginRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).Login(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_Login_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).Login(ctx, req.(*LoginRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_Login2FA_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(LoginRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).Login2FA(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_Login2FA_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).Login2FA(ctx, req.(*LoginRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_LoginFido_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(LoginRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).LoginFido(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_LoginFido_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).LoginFido(ctx, req.(*LoginRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_Login2Passwords_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(LoginRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).Login2Passwords(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_Login2Passwords_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).Login2Passwords(ctx, req.(*LoginRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_LoginAbort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(LoginAbortRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).LoginAbort(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_LoginAbort_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).LoginAbort(ctx, req.(*LoginAbortRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_FidoAssertionAbort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(LoginAbortRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).FidoAssertionAbort(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_FidoAssertionAbort_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).FidoAssertionAbort(ctx, req.(*LoginAbortRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_CheckUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).CheckUpdate(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_CheckUpdate_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).CheckUpdate(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_InstallUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).InstallUpdate(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_InstallUpdate_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).InstallUpdate(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_SetIsAutomaticUpdateOn_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.BoolValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).SetIsAutomaticUpdateOn(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_SetIsAutomaticUpdateOn_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).SetIsAutomaticUpdateOn(ctx, req.(*wrapperspb.BoolValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_IsAutomaticUpdateOn_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).IsAutomaticUpdateOn(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_IsAutomaticUpdateOn_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).IsAutomaticUpdateOn(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_DiskCachePath_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).DiskCachePath(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_DiskCachePath_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).DiskCachePath(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_SetDiskCachePath_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.StringValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).SetDiskCachePath(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_SetDiskCachePath_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).SetDiskCachePath(ctx, req.(*wrapperspb.StringValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_SetIsDoHEnabled_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.BoolValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).SetIsDoHEnabled(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_SetIsDoHEnabled_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).SetIsDoHEnabled(ctx, req.(*wrapperspb.BoolValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_IsDoHEnabled_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).IsDoHEnabled(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_IsDoHEnabled_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).IsDoHEnabled(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_MailServerSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).MailServerSettings(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_MailServerSettings_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).MailServerSettings(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_SetMailServerSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ImapSmtpSettings)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).SetMailServerSettings(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_SetMailServerSettings_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).SetMailServerSettings(ctx, req.(*ImapSmtpSettings))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_Hostname_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).Hostname(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_Hostname_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).Hostname(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_IsPortFree_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.Int32Value)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).IsPortFree(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_IsPortFree_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).IsPortFree(ctx, req.(*wrapperspb.Int32Value))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_AvailableKeychains_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).AvailableKeychains(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_AvailableKeychains_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).AvailableKeychains(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_SetCurrentKeychain_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.StringValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).SetCurrentKeychain(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_SetCurrentKeychain_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).SetCurrentKeychain(ctx, req.(*wrapperspb.StringValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_CurrentKeychain_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).CurrentKeychain(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_CurrentKeychain_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).CurrentKeychain(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_GetUserList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).GetUserList(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_GetUserList_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).GetUserList(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_GetUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.StringValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).GetUser(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_GetUser_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).GetUser(ctx, req.(*wrapperspb.StringValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_SetUserSplitMode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(UserSplitModeRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).SetUserSplitMode(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_SetUserSplitMode_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).SetUserSplitMode(ctx, req.(*UserSplitModeRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_SendBadEventUserFeedback_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(UserBadEventFeedbackRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).SendBadEventUserFeedback(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_SendBadEventUserFeedback_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).SendBadEventUserFeedback(ctx, req.(*UserBadEventFeedbackRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_LogoutUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.StringValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).LogoutUser(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_LogoutUser_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).LogoutUser(ctx, req.(*wrapperspb.StringValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_RemoveUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.StringValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).RemoveUser(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_RemoveUser_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).RemoveUser(ctx, req.(*wrapperspb.StringValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_ConfigureUserAppleMail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ConfigureAppleMailRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).ConfigureUserAppleMail(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_ConfigureUserAppleMail_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).ConfigureUserAppleMail(ctx, req.(*ConfigureAppleMailRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_IsTLSCertificateInstalled_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).IsTLSCertificateInstalled(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_IsTLSCertificateInstalled_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).IsTLSCertificateInstalled(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_InstallTLSCertificate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).InstallTLSCertificate(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_InstallTLSCertificate_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).InstallTLSCertificate(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_ExportTLSCertificates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(wrapperspb.StringValue)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).ExportTLSCertificates(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_ExportTLSCertificates_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).ExportTLSCertificates(ctx, req.(*wrapperspb.StringValue))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_RunEventStream_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(EventStreamRequest)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(BridgeServer).RunEventStream(m, &grpc.GenericServerStream[EventStreamRequest, StreamEvent]{ServerStream: stream})
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type Bridge_RunEventStreamServer = grpc.ServerStreamingServer[StreamEvent]
+
+func _Bridge_StopEventStream_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).StopEventStream(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_StopEventStream_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).StopEventStream(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Bridge_TriggerRepair_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(emptypb.Empty)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(BridgeServer).TriggerRepair(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: Bridge_TriggerRepair_FullMethodName,
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(BridgeServer).TriggerRepair(ctx, req.(*emptypb.Empty))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+// Bridge_ServiceDesc is the grpc.ServiceDesc for Bridge service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Bridge_ServiceDesc = grpc.ServiceDesc{
+ ServiceName: "grpc.Bridge",
+ HandlerType: (*BridgeServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "CheckTokens",
+ Handler: _Bridge_CheckTokens_Handler,
+ },
+ {
+ MethodName: "AddLogEntry",
+ Handler: _Bridge_AddLogEntry_Handler,
+ },
+ {
+ MethodName: "GuiReady",
+ Handler: _Bridge_GuiReady_Handler,
+ },
+ {
+ MethodName: "Quit",
+ Handler: _Bridge_Quit_Handler,
+ },
+ {
+ MethodName: "Restart",
+ Handler: _Bridge_Restart_Handler,
+ },
+ {
+ MethodName: "ShowOnStartup",
+ Handler: _Bridge_ShowOnStartup_Handler,
+ },
+ {
+ MethodName: "SetIsAutostartOn",
+ Handler: _Bridge_SetIsAutostartOn_Handler,
+ },
+ {
+ MethodName: "IsAutostartOn",
+ Handler: _Bridge_IsAutostartOn_Handler,
+ },
+ {
+ MethodName: "SetIsBetaEnabled",
+ Handler: _Bridge_SetIsBetaEnabled_Handler,
+ },
+ {
+ MethodName: "IsBetaEnabled",
+ Handler: _Bridge_IsBetaEnabled_Handler,
+ },
+ {
+ MethodName: "SetIsAllMailVisible",
+ Handler: _Bridge_SetIsAllMailVisible_Handler,
+ },
+ {
+ MethodName: "IsAllMailVisible",
+ Handler: _Bridge_IsAllMailVisible_Handler,
+ },
+ {
+ MethodName: "SetIsTelemetryDisabled",
+ Handler: _Bridge_SetIsTelemetryDisabled_Handler,
+ },
+ {
+ MethodName: "IsTelemetryDisabled",
+ Handler: _Bridge_IsTelemetryDisabled_Handler,
+ },
+ {
+ MethodName: "GoOs",
+ Handler: _Bridge_GoOs_Handler,
+ },
+ {
+ MethodName: "TriggerReset",
+ Handler: _Bridge_TriggerReset_Handler,
+ },
+ {
+ MethodName: "Version",
+ Handler: _Bridge_Version_Handler,
+ },
+ {
+ MethodName: "LogsPath",
+ Handler: _Bridge_LogsPath_Handler,
+ },
+ {
+ MethodName: "LicensePath",
+ Handler: _Bridge_LicensePath_Handler,
+ },
+ {
+ MethodName: "ReleaseNotesPageLink",
+ Handler: _Bridge_ReleaseNotesPageLink_Handler,
+ },
+ {
+ MethodName: "DependencyLicensesLink",
+ Handler: _Bridge_DependencyLicensesLink_Handler,
+ },
+ {
+ MethodName: "LandingPageLink",
+ Handler: _Bridge_LandingPageLink_Handler,
+ },
+ {
+ MethodName: "SetColorSchemeName",
+ Handler: _Bridge_SetColorSchemeName_Handler,
+ },
+ {
+ MethodName: "ColorSchemeName",
+ Handler: _Bridge_ColorSchemeName_Handler,
+ },
+ {
+ MethodName: "CurrentEmailClient",
+ Handler: _Bridge_CurrentEmailClient_Handler,
+ },
+ {
+ MethodName: "ReportBug",
+ Handler: _Bridge_ReportBug_Handler,
+ },
+ {
+ MethodName: "ForceLauncher",
+ Handler: _Bridge_ForceLauncher_Handler,
+ },
+ {
+ MethodName: "SetMainExecutable",
+ Handler: _Bridge_SetMainExecutable_Handler,
+ },
+ {
+ MethodName: "RequestKnowledgeBaseSuggestions",
+ Handler: _Bridge_RequestKnowledgeBaseSuggestions_Handler,
+ },
+ {
+ MethodName: "Login",
+ Handler: _Bridge_Login_Handler,
+ },
+ {
+ MethodName: "Login2FA",
+ Handler: _Bridge_Login2FA_Handler,
+ },
+ {
+ MethodName: "LoginFido",
+ Handler: _Bridge_LoginFido_Handler,
+ },
+ {
+ MethodName: "Login2Passwords",
+ Handler: _Bridge_Login2Passwords_Handler,
+ },
+ {
+ MethodName: "LoginAbort",
+ Handler: _Bridge_LoginAbort_Handler,
+ },
+ {
+ MethodName: "FidoAssertionAbort",
+ Handler: _Bridge_FidoAssertionAbort_Handler,
+ },
+ {
+ MethodName: "CheckUpdate",
+ Handler: _Bridge_CheckUpdate_Handler,
+ },
+ {
+ MethodName: "InstallUpdate",
+ Handler: _Bridge_InstallUpdate_Handler,
+ },
+ {
+ MethodName: "SetIsAutomaticUpdateOn",
+ Handler: _Bridge_SetIsAutomaticUpdateOn_Handler,
+ },
+ {
+ MethodName: "IsAutomaticUpdateOn",
+ Handler: _Bridge_IsAutomaticUpdateOn_Handler,
+ },
+ {
+ MethodName: "DiskCachePath",
+ Handler: _Bridge_DiskCachePath_Handler,
+ },
+ {
+ MethodName: "SetDiskCachePath",
+ Handler: _Bridge_SetDiskCachePath_Handler,
+ },
+ {
+ MethodName: "SetIsDoHEnabled",
+ Handler: _Bridge_SetIsDoHEnabled_Handler,
+ },
+ {
+ MethodName: "IsDoHEnabled",
+ Handler: _Bridge_IsDoHEnabled_Handler,
+ },
+ {
+ MethodName: "MailServerSettings",
+ Handler: _Bridge_MailServerSettings_Handler,
+ },
+ {
+ MethodName: "SetMailServerSettings",
+ Handler: _Bridge_SetMailServerSettings_Handler,
+ },
+ {
+ MethodName: "Hostname",
+ Handler: _Bridge_Hostname_Handler,
+ },
+ {
+ MethodName: "IsPortFree",
+ Handler: _Bridge_IsPortFree_Handler,
+ },
+ {
+ MethodName: "AvailableKeychains",
+ Handler: _Bridge_AvailableKeychains_Handler,
+ },
+ {
+ MethodName: "SetCurrentKeychain",
+ Handler: _Bridge_SetCurrentKeychain_Handler,
+ },
+ {
+ MethodName: "CurrentKeychain",
+ Handler: _Bridge_CurrentKeychain_Handler,
+ },
+ {
+ MethodName: "GetUserList",
+ Handler: _Bridge_GetUserList_Handler,
+ },
+ {
+ MethodName: "GetUser",
+ Handler: _Bridge_GetUser_Handler,
+ },
+ {
+ MethodName: "SetUserSplitMode",
+ Handler: _Bridge_SetUserSplitMode_Handler,
+ },
+ {
+ MethodName: "SendBadEventUserFeedback",
+ Handler: _Bridge_SendBadEventUserFeedback_Handler,
+ },
+ {
+ MethodName: "LogoutUser",
+ Handler: _Bridge_LogoutUser_Handler,
+ },
+ {
+ MethodName: "RemoveUser",
+ Handler: _Bridge_RemoveUser_Handler,
+ },
+ {
+ MethodName: "ConfigureUserAppleMail",
+ Handler: _Bridge_ConfigureUserAppleMail_Handler,
+ },
+ {
+ MethodName: "IsTLSCertificateInstalled",
+ Handler: _Bridge_IsTLSCertificateInstalled_Handler,
+ },
+ {
+ MethodName: "InstallTLSCertificate",
+ Handler: _Bridge_InstallTLSCertificate_Handler,
+ },
+ {
+ MethodName: "ExportTLSCertificates",
+ Handler: _Bridge_ExportTLSCertificates_Handler,
+ },
+ {
+ MethodName: "StopEventStream",
+ Handler: _Bridge_StopEventStream_Handler,
+ },
+ {
+ MethodName: "TriggerRepair",
+ Handler: _Bridge_TriggerRepair_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{
+ {
+ StreamName: "RunEventStream",
+ Handler: _Bridge_RunEventStream_Handler,
+ ServerStreams: true,
+ },
+ },
+ Metadata: "bridge.proto",
+}
diff --git a/images/proton-bridge/exporter/go.mod b/images/proton-bridge/exporter/go.mod
new file mode 100644
index 0000000..547f41a
--- /dev/null
+++ b/images/proton-bridge/exporter/go.mod
@@ -0,0 +1,24 @@
+module proton-bridge-exporter
+
+go 1.26.4
+
+require (
+ github.com/prometheus/client_golang v1.23.2
+ google.golang.org/grpc v1.81.1
+ google.golang.org/protobuf v1.36.11
+)
+
+require (
+ github.com/beorn7/perks v1.0.1 // indirect
+ github.com/cespare/xxhash/v2 v2.3.0 // indirect
+ github.com/kr/text v0.2.0 // indirect
+ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
+ github.com/prometheus/client_model v0.6.2 // indirect
+ github.com/prometheus/common v0.66.1 // indirect
+ github.com/prometheus/procfs v0.16.1 // indirect
+ go.yaml.in/yaml/v2 v2.4.2 // indirect
+ golang.org/x/net v0.51.0 // indirect
+ golang.org/x/sys v0.42.0 // indirect
+ golang.org/x/text v0.34.0 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 // indirect
+)
diff --git a/images/proton-bridge/exporter/go.sum b/images/proton-bridge/exporter/go.sum
new file mode 100644
index 0000000..1165c8b
--- /dev/null
+++ b/images/proton-bridge/exporter/go.sum
@@ -0,0 +1,76 @@
+github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
+github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
+github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
+github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
+github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
+github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
+github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
+github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
+github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
+github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
+github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
+github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
+github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=
+github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=
+github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
+github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
+github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs=
+github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA=
+github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
+github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
+github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
+github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
+github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
+github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
+go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
+go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
+go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
+go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
+go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
+go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
+go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
+go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
+go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
+go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
+go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
+go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
+go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
+go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
+go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
+go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo=
+golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y=
+golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
+golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
+golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
+gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
+gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 h1:ggcbiqK8WWh6l1dnltU4BgWGIGo+EVYxCaAPih/zQXQ=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
+google.golang.org/grpc v1.81.1 h1:VnnIIZ88UzOOKLukQi+ImGz8O1Wdp8nAGGnvOfEIWQQ=
+google.golang.org/grpc v1.81.1/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I=
+google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
+google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/images/proton-bridge/exporter/main.go b/images/proton-bridge/exporter/main.go
new file mode 100644
index 0000000..608eba3
--- /dev/null
+++ b/images/proton-bridge/exporter/main.go
@@ -0,0 +1,293 @@
+// proton-bridge-exporter scrapes the headless Proton Bridge gRPC frontend
+// (started with `bridge --grpc`) and exposes Prometheus metrics about the
+// bridge process and, crucially, per-account login/sync state so that dropped
+// authentication can be alerted on.
+//
+// It connects to the gRPC service the same way the desktop GUI does: by reading
+// the TLS cert, auth token and unix socket path that bridge writes to
+// grpcServerConfig.json, then pinning that self-signed cert (CN 127.0.0.1) and
+// presenting the token in a per-RPC "server-token" metadata header.
+package main
+
+import (
+ "context"
+ "crypto/tls"
+ "crypto/x509"
+ "encoding/json"
+ "errors"
+ "log"
+ "net"
+ "net/http"
+ "os"
+ "path/filepath"
+ "strings"
+ "time"
+
+ "github.com/prometheus/client_golang/prometheus"
+ "github.com/prometheus/client_golang/prometheus/promauto"
+ "github.com/prometheus/client_golang/prometheus/promhttp"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/credentials"
+ "google.golang.org/protobuf/types/known/emptypb"
+
+ pb "proton-bridge-exporter/bridgepb"
+)
+
+const serverTokenMetadataKey = "server-token"
+
+type serverConfig struct {
+ Port int `json:"port"`
+ Cert string `json:"cert"`
+ Token string `json:"token"`
+ FileSocketPath string `json:"fileSocketPath"`
+}
+
+var (
+ up = promauto.NewGauge(prometheus.GaugeOpts{
+ Name: "proton_bridge_up",
+ Help: "Whether the Proton Bridge gRPC service is reachable (1) or not (0).",
+ })
+ info = promauto.NewGaugeVec(prometheus.GaugeOpts{
+ Name: "proton_bridge_info",
+ Help: "Proton Bridge version, value is always 1.",
+ }, []string{"version"})
+ accountsTotal = promauto.NewGauge(prometheus.GaugeOpts{
+ Name: "proton_bridge_accounts_total",
+ Help: "Number of accounts known to the bridge.",
+ })
+ accountConnected = promauto.NewGaugeVec(prometheus.GaugeOpts{
+ Name: "proton_bridge_account_connected",
+ Help: "Whether an account is connected/logged in (1) or not (0).",
+ }, []string{"account"})
+ accountState = promauto.NewGaugeVec(prometheus.GaugeOpts{
+ Name: "proton_bridge_account_state",
+ Help: "Current account state, value 1 for the active state label.",
+ }, []string{"account", "state"})
+ accountUsedBytes = promauto.NewGaugeVec(prometheus.GaugeOpts{
+ Name: "proton_bridge_account_used_bytes",
+ Help: "Mail storage used by the account in bytes.",
+ }, []string{"account"})
+ accountTotalBytes = promauto.NewGaugeVec(prometheus.GaugeOpts{
+ Name: "proton_bridge_account_total_bytes",
+ Help: "Mail storage quota for the account in bytes.",
+ }, []string{"account"})
+ internetConnected = promauto.NewGauge(prometheus.GaugeOpts{
+ Name: "proton_bridge_internet_connected",
+ Help: "Whether bridge reports internet connectivity (1) or not (0).",
+ })
+ userDisconnectedTotal = promauto.NewCounterVec(prometheus.CounterOpts{
+ Name: "proton_bridge_user_disconnected_total",
+ Help: "Number of account disconnection events observed (dropped auth).",
+ }, []string{"account"})
+ userBadEventTotal = promauto.NewCounterVec(prometheus.CounterOpts{
+ Name: "proton_bridge_user_bad_event_total",
+ Help: "Number of account bad-event (sync error) events observed.",
+ }, []string{"account"})
+ imapLoginFailedTotal = promauto.NewCounterVec(prometheus.CounterOpts{
+ Name: "proton_bridge_imap_login_failed_total",
+ Help: "Number of failed IMAP client logins against the bridge.",
+ }, []string{"account"})
+ scrapeErrorsTotal = promauto.NewCounter(prometheus.CounterOpts{
+ Name: "proton_bridge_exporter_scrape_errors_total",
+ Help: "Number of errors polling the bridge gRPC service.",
+ })
+)
+
+// tokenAuth presents the server token as per-RPC metadata over the TLS channel.
+type tokenAuth struct{ token string }
+
+func (t tokenAuth) GetRequestMetadata(context.Context, ...string) (map[string]string, error) {
+ return map[string]string{serverTokenMetadataKey: t.token}, nil
+}
+func (t tokenAuth) RequireTransportSecurity() bool { return true }
+
+func loadConfig(path string) (serverConfig, error) {
+ var cfg serverConfig
+ raw, err := os.ReadFile(path)
+ if err != nil {
+ return cfg, err
+ }
+ if err := json.Unmarshal(raw, &cfg); err != nil {
+ return cfg, err
+ }
+ if cfg.FileSocketPath == "" {
+ return cfg, errors.New("grpcServerConfig.json has no fileSocketPath (expected a unix socket on linux)")
+ }
+ return cfg, nil
+}
+
+func dial(cfg serverConfig) (*grpc.ClientConn, error) {
+ pool := x509.NewCertPool()
+ if !pool.AppendCertsFromPEM([]byte(cfg.Cert)) {
+ return nil, errors.New("failed to parse bridge TLS certificate")
+ }
+ creds := credentials.NewTLS(&tls.Config{RootCAs: pool, ServerName: "127.0.0.1"})
+ socket := cfg.FileSocketPath
+ return grpc.NewClient(
+ "passthrough:///"+socket,
+ grpc.WithTransportCredentials(creds),
+ grpc.WithPerRPCCredentials(tokenAuth{token: cfg.Token}),
+ grpc.WithContextDialer(func(ctx context.Context, _ string) (net.Conn, error) {
+ return (&net.Dialer{}).DialContext(ctx, "unix", socket)
+ }),
+ )
+}
+
+func poll(ctx context.Context, client pb.BridgeClient) error {
+ resp, err := client.GetUserList(ctx, &emptypb.Empty{})
+ if err != nil {
+ return err
+ }
+ accountConnected.Reset()
+ accountState.Reset()
+ accountUsedBytes.Reset()
+ accountTotalBytes.Reset()
+
+ users := resp.GetUsers()
+ accountsTotal.Set(float64(len(users)))
+ for _, u := range users {
+ name := u.GetUsername()
+ state := u.GetState()
+ connected := 0.0
+ if state == pb.UserState_CONNECTED {
+ connected = 1
+ }
+ accountConnected.WithLabelValues(name).Set(connected)
+ for _, s := range []pb.UserState{pb.UserState_SIGNED_OUT, pb.UserState_LOCKED, pb.UserState_CONNECTED} {
+ v := 0.0
+ if s == state {
+ v = 1
+ }
+ accountState.WithLabelValues(name, strings.ToLower(s.String())).Set(v)
+ }
+ accountUsedBytes.WithLabelValues(name).Set(float64(u.GetUsedBytes()))
+ accountTotalBytes.WithLabelValues(name).Set(float64(u.GetTotalBytes()))
+ }
+
+ if v, err := client.Version(ctx, &emptypb.Empty{}); err == nil {
+ info.Reset()
+ info.WithLabelValues(v.GetValue()).Set(1)
+ }
+ return nil
+}
+
+// streamEvents subscribes to the bridge event stream and translates the events
+// we care about into counters/gauges. Returns on stream error so the caller can
+// reconnect.
+func streamEvents(ctx context.Context, client pb.BridgeClient) error {
+ stream, err := client.RunEventStream(ctx, &pb.EventStreamRequest{ClientPlatform: "exporter"})
+ if err != nil {
+ return err
+ }
+ for {
+ ev, err := stream.Recv()
+ if err != nil {
+ return err
+ }
+ if app := ev.GetApp(); app != nil {
+ if is := app.GetInternetStatus(); is != nil {
+ v := 0.0
+ if is.GetConnected() {
+ v = 1
+ }
+ internetConnected.Set(v)
+ }
+ }
+ if ue := ev.GetUser(); ue != nil {
+ switch {
+ case ue.GetUserDisconnected() != nil:
+ userDisconnectedTotal.WithLabelValues(ue.GetUserDisconnected().GetUsername()).Inc()
+ case ue.GetUserBadEvent() != nil:
+ userBadEventTotal.WithLabelValues(ue.GetUserBadEvent().GetUserID()).Inc()
+ case ue.GetImapLoginFailedEvent() != nil:
+ imapLoginFailedTotal.WithLabelValues(ue.GetImapLoginFailedEvent().GetUsername()).Inc()
+ }
+ }
+ }
+}
+
+func run(ctx context.Context, configPath string, pollInterval time.Duration) {
+ for ctx.Err() == nil {
+ cfg, err := loadConfig(configPath)
+ if err != nil {
+ up.Set(0)
+ log.Printf("waiting for bridge gRPC config %s: %v", configPath, err)
+ sleep(ctx, pollInterval)
+ continue
+ }
+ conn, err := dial(cfg)
+ if err != nil {
+ up.Set(0)
+ scrapeErrorsTotal.Inc()
+ log.Printf("dial bridge: %v", err)
+ sleep(ctx, pollInterval)
+ continue
+ }
+ client := pb.NewBridgeClient(conn)
+
+ // Event stream runs until it errors (e.g. bridge restart); we then
+ // fall through, close the conn and reconnect.
+ streamCtx, cancel := context.WithCancel(ctx)
+ streamErr := make(chan error, 1)
+ go func() { streamErr <- streamEvents(streamCtx, client) }()
+
+ for ctx.Err() == nil {
+ if err := poll(ctx, client); err != nil {
+ up.Set(0)
+ scrapeErrorsTotal.Inc()
+ log.Printf("poll bridge: %v", err)
+ break
+ }
+ up.Set(1)
+ select {
+ case err := <-streamErr:
+ log.Printf("event stream ended: %v", err)
+ goto reconnect
+ case <-time.After(pollInterval):
+ case <-ctx.Done():
+ }
+ }
+ reconnect:
+ cancel()
+ _ = conn.Close()
+ sleep(ctx, pollInterval)
+ }
+}
+
+func sleep(ctx context.Context, d time.Duration) {
+ select {
+ case <-time.After(d):
+ case <-ctx.Done():
+ }
+}
+
+func defaultConfigPath() string {
+ home, err := os.UserHomeDir()
+ if err != nil {
+ home = "/home/bridge"
+ }
+ return filepath.Join(home, ".config", "protonmail", "bridge-v3", "grpcServerConfig.json")
+}
+
+func envOr(key, fallback string) string {
+ if v := os.Getenv(key); v != "" {
+ return v
+ }
+ return fallback
+}
+
+func main() {
+ configPath := envOr("BRIDGE_GRPC_CONFIG", defaultConfigPath())
+ listen := ":" + envOr("CONTAINER_METRICS_PORT", "9154")
+
+ ctx := context.Background()
+ go run(ctx, configPath, 15*time.Second)
+
+ http.Handle("/metrics", promhttp.Handler())
+ http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
+ http.Redirect(w, r, "/metrics", http.StatusFound)
+ })
+ log.Printf("proton-bridge-exporter listening on %s, config %s", listen, configPath)
+ srv := &http.Server{Addr: listen, ReadHeaderTimeout: 5 * time.Second}
+ log.Fatal(srv.ListenAndServe())
+}
diff --git a/images/proton-bridge/healthcheck.sh b/images/proton-bridge/healthcheck.sh
index 2dd45a6..8131a46 100644
--- a/images/proton-bridge/healthcheck.sh
+++ b/images/proton-bridge/healthcheck.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env sh
set -eu
-for service in bridge gpg-agent socat-smtp socat-imap; do
+for service in bridge gpg-agent socat-smtp socat-imap exporter; do
s6-svstat "/app/services/${service}" | grep -q '^up '
done
@@ -9,6 +9,10 @@ gpg-connect-agent /bye >/dev/null 2>&1
netstat -ltn 2>/dev/null | grep -q "[.:]${CONTAINER_SMTP_PORT}[[:space:]]"
netstat -ltn 2>/dev/null | grep -q "[.:]${CONTAINER_IMAP_PORT}[[:space:]]"
+netstat -ltn 2>/dev/null | grep -q "[.:]${CONTAINER_METRICS_PORT}[[:space:]]"
printf 'QUIT\r\n' | nc -w 3 127.0.0.1 "${CONTAINER_SMTP_PORT}" | grep -Eq '^220 '
printf 'a1 LOGOUT\r\n' | nc -w 3 127.0.0.1 "${CONTAINER_IMAP_PORT}" | grep -Eq '^\* (OK|PREAUTH|BYE) '
+
+printf 'GET /metrics HTTP/1.0\r\nHost: localhost\r\n\r\n' \
+ | nc -w 3 127.0.0.1 "${CONTAINER_METRICS_PORT}" | grep -Eq '^HTTP/[0-9.]+ 200 '
diff --git a/images/proton-bridge/services/bridge/run b/images/proton-bridge/services/bridge/run
index cb5bd81..dda8ec4 100644
--- a/images/proton-bridge/services/bridge/run
+++ b/images/proton-bridge/services/bridge/run
@@ -17,8 +17,14 @@ while [ ! -S "${agent_socket}" ]; do
elapsed="$((elapsed + 1))"
done
-bridge_mode="${BRIDGE_MODE:-noninteractive}"
+bridge_mode="${BRIDGE_MODE:-grpc}"
case "${bridge_mode}" in
+ grpc)
+ # gRPC frontend serves the same mail bridge as noninteractive, plus the
+ # machine API the metrics exporter scrapes. --parent-pid defaults to -1,
+ # so the GUI-watchdog that would otherwise shut it down stays disabled.
+ exec /usr/bin/bridge --grpc
+ ;;
noninteractive)
exec /usr/bin/bridge --noninteractive
;;
@@ -26,7 +32,7 @@ case "${bridge_mode}" in
exec /usr/bin/bridge --cli
;;
*)
- echo "invalid BRIDGE_MODE '${bridge_mode}' (expected: noninteractive|cli)" >&2
+ echo "invalid BRIDGE_MODE '${bridge_mode}' (expected: grpc|noninteractive|cli)" >&2
exit 1
;;
esac
diff --git a/images/proton-bridge/services/exporter/finish b/images/proton-bridge/services/exporter/finish
new file mode 100644
index 0000000..269cc3a
--- /dev/null
+++ b/images/proton-bridge/services/exporter/finish
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+exec /app/services/.s6-finish-policy.sh "exporter" "false" "${1:-0}" "${2:-0}"
diff --git a/images/proton-bridge/services/exporter/run b/images/proton-bridge/services/exporter/run
new file mode 100644
index 0000000..1e6bb50
--- /dev/null
+++ b/images/proton-bridge/services/exporter/run
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -eu
+
+state_dir="/tmp/proton-bridge-s6"
+mkdir -p "${state_dir}"
+date +%s > "${state_dir}/exporter.start"
+
+exec /usr/bin/proton-bridge-exporter