From 07b08c4ede3e5f533ef1b1c5285e88518082d628 Mon Sep 17 00:00:00 2001 From: Mark Garratt Date: Fri, 26 Jun 2026 11:22:46 +0100 Subject: [PATCH] proton-bridge: gRPC metrics exporter (prototype) Replace the external-probe metrics approach with an in-container Prometheus exporter that scrapes Bridge's gRPC frontend, so account login state and dropped-auth are observable -- not just transport readiness. - run bridge as `--grpc` by default (same mail bridge as --noninteractive, plus the machine API the GUI uses; --parent-pid defaults to -1 so no watchdog shutdown). noninteractive/cli still selectable via BRIDGE_MODE. - add exporter/ Go module: reads grpcServerConfig.json, dials the unix socket with the pinned TLS cert + server-token, polls GetUserList/Version and subscribes RunEventStream. Exposes proton_bridge_account_state/connected, used/total bytes, and user_disconnected/bad_event/imap_login_failed counters. - vendored Bridge gRPC stubs (GPL-3.0) under exporter/bridgepb; documented re-vendor step for upstream bumps. - build exporter in a dedicated stage; add `exporter` s6 service; healthcheck now checks the service + /metrics 200; CONTAINER_METRICS_PORT (default 9154). Validated on arm64: image builds, bridge --grpc bootstraps, exporter connects (proton_bridge_up 1, scrape_errors 0), /metrics 200, container healthy. Account/event series need a real Proton login to populate -- not yet exercised. Co-Authored-By: Claude Opus 4.8 (1M context) --- THIRD_PARTY_LICENSES.md | 7 + images/proton-bridge/Dockerfile | 15 + images/proton-bridge/README.md | 17 +- images/proton-bridge/entrypoint.sh | 3 +- images/proton-bridge/exporter/README.md | 61 + .../exporter/bridgepb/bridge.pb.go | 5811 +++++++++++++++++ .../exporter/bridgepb/bridge.proto | 589 ++ .../exporter/bridgepb/bridge_grpc.pb.go | 2532 +++++++ images/proton-bridge/exporter/go.mod | 24 + images/proton-bridge/exporter/go.sum | 76 + images/proton-bridge/exporter/main.go | 293 + images/proton-bridge/healthcheck.sh | 6 +- images/proton-bridge/services/bridge/run | 10 +- images/proton-bridge/services/exporter/finish | 4 + images/proton-bridge/services/exporter/run | 8 + 15 files changed, 9450 insertions(+), 6 deletions(-) create mode 100644 images/proton-bridge/exporter/README.md create mode 100644 images/proton-bridge/exporter/bridgepb/bridge.pb.go create mode 100644 images/proton-bridge/exporter/bridgepb/bridge.proto create mode 100644 images/proton-bridge/exporter/bridgepb/bridge_grpc.pb.go create mode 100644 images/proton-bridge/exporter/go.mod create mode 100644 images/proton-bridge/exporter/go.sum create mode 100644 images/proton-bridge/exporter/main.go create mode 100644 images/proton-bridge/services/exporter/finish create mode 100644 images/proton-bridge/services/exporter/run 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