Cleanup: Delete unused services, move some things into archive
Change-Id: Ie5bc61d48101e7f39cc82a29025cdd8920f35e70
diff --git a/apps/bwolf-gandi/.gitignore b/apps/bwolf-gandi/.gitignore
deleted file mode 100644
index b90f1c2..0000000
--- a/apps/bwolf-gandi/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-cert-manager-webhook-gandi
-webhook_arm64
-webhook_amd64
diff --git a/apps/bwolf-gandi/Dockerfile b/apps/bwolf-gandi/Dockerfile
deleted file mode 100644
index df46fc1..0000000
--- a/apps/bwolf-gandi/Dockerfile
+++ /dev/null
@@ -1,10 +0,0 @@
-FROM alpine:3.9
-
-ARG TARGETARCH
-
-RUN apk add --no-cache ca-certificates
-
-COPY webhook_${TARGETARCH} /usr/local/bin/webhook
-RUN chmod +x /usr/local/bin/webhook
-
-ENTRYPOINT ["webhook"]
diff --git a/apps/bwolf-gandi/Makefile b/apps/bwolf-gandi/Makefile
deleted file mode 100644
index 2a09874..0000000
--- a/apps/bwolf-gandi/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-IMAGE_NAME := "giolekva/cert-manager-webhook-gandi"
-IMAGE_TAG := "v0.2.0"
-
-checkout:
- git clone --depth 1 --branch $(IMAGE_TAG) https://github.com/bwolf/cert-manager-webhook-gandi.git
-
-clean:
- rm -f webhook_*
-
-build_arm64: export CGO_ENABLED=0
-build_arm64: export GO111MODULE=on
-build_arm64: export GOOS=linux
-build_arm64: export GOARCH=arm64
-build_arm64: clean
- cd cert-manager-webhook-gandi && go build -o ../webhook_arm64 -ldflags '-w -extldflags "-static"' .
-
-build_amd64: export CGO_ENABLED=0
-build_amd64: export GO111MODULE=on
-build_amd64: export GOOS=linux
-build_amd64: export GOARCH=amd64
-build_amd64: clean
- cd cert-manager-webhook-gandi && go build -o ../webhook_amd64 -ldflags '-w -extldflags "-static"' .
-
-build: clean build_arm64 build_amd64
-
-push: build
- docker buildx build --tag=$(IMAGE_NAME):$(IMAGE_TAG) . --platform=linux/arm64,linux/amd64 --push
diff --git a/apps/echo/Dockerfile b/apps/echo/Dockerfile
deleted file mode 100644
index cff1435..0000000
--- a/apps/echo/Dockerfile
+++ /dev/null
@@ -1,4 +0,0 @@
-FROM alpine:latest
-
-COPY echo /usr/bin
-RUN chmod +x /usr/bin/echo
diff --git a/apps/echo/Makefile b/apps/echo/Makefile
deleted file mode 100644
index 3f53cbd..0000000
--- a/apps/echo/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-build:
- go build -o echo *.go
-
-clean:
- rm -f echo
-
-image: clean build
- docker build --tag=giolekva/echo .
-
-push: image
- docker push giolekva/echo:latest
-
-
-push_arm64: export GOOS=linux
-push_arm64: export GOARCH=arm64
-push_arm64: export CGO_ENABLED=0
-push_arm64: export GO111MODULE=on
-push_arm64: push
diff --git a/apps/echo/go.mod b/apps/echo/go.mod
deleted file mode 100644
index 08142e0..0000000
--- a/apps/echo/go.mod
+++ /dev/null
@@ -1,3 +0,0 @@
-module github.com/giolekva/pcloud/apps/echo
-
-go 1.16
diff --git a/apps/echo/install.yaml b/apps/echo/install.yaml
deleted file mode 100644
index b46a5ce..0000000
--- a/apps/echo/install.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
----
-apiVersion: v1
-kind: Namespace
-metadata:
- name: app-echo
----
-apiVersion: v1
-kind: Service
-metadata:
- name: echo
- namespace: app-echo
-spec:
- type: NodePort
- selector:
- app: echo
- ports:
- - port: 8080
- targetPort: 1234
- protocol: TCP
- nodePort: 32050
----
-# apiVersion: traefik.containo.us/v1alpha1
-# kind: IngressRoute
-# metadata:
-# name: ingress
-# namespace: app-echo
-# spec:
-# entryPoints:
-# - web
-# routes:
-# - kind: Rule
-# match: PathPrefix(`/echo`)
-# services:
-# - kind: Service
-# name: echo
-# namespace: app-echo
-# passHostHeader: true
-# port: 80
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: echo
- namespace: app-echo
-spec:
- selector:
- matchLabels:
- app: echo
- replicas: 1
- template:
- metadata:
- labels:
- app: echo
- spec:
- containers:
- - name: echo
- image: giolekva/echo:latest
- imagePullPolicy: Always
- ports:
- - containerPort: 1234
- command: ["echo", "--port=1234"]
diff --git a/apps/echo/main.go b/apps/echo/main.go
deleted file mode 100644
index 0e96d2c..0000000
--- a/apps/echo/main.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2018 Venil Noronha. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
- "bufio"
- "flag"
- "fmt"
- "io"
- "net"
- "os"
-)
-
-var port = flag.Int("port", 3000, "Port to listen on")
-
-// main serves as the program entry point
-func main() {
- flag.Parse()
- // create a tcp listener on the given port
- listener, err := net.Listen("tcp", fmt.Sprintf(":%d", *port))
- if err != nil {
- fmt.Println("failed to create listener, err:", err)
- os.Exit(1)
- }
- fmt.Printf("listening on %s\n", listener.Addr())
-
- // listen for new connections
- for {
- conn, err := listener.Accept()
- if err != nil {
- fmt.Println("failed to accept connection, err:", err)
- continue
- }
-
- // pass an accepted connection to a handler goroutine
- go handleConnection(conn)
- }
-}
-
-// handleConnection handles the lifetime of a connection
-func handleConnection(conn net.Conn) {
- defer conn.Close()
- reader := bufio.NewReader(conn)
- for {
- // read client request data
- bytes, err := reader.ReadBytes(byte('\n'))
- if err != nil {
- if err != io.EOF {
- fmt.Println("failed to read data, err:", err)
- }
- return
- }
- fmt.Printf("request: %s", bytes)
- conn.Write(bytes)
- }
-}
diff --git a/apps/matrix/homeserver.yaml b/apps/matrix/homeserver.yaml
deleted file mode 100644
index b4ba35c..0000000
--- a/apps/matrix/homeserver.yaml
+++ /dev/null
@@ -1,2622 +0,0 @@
-# Configuration file for Synapse.
-#
-# This is a YAML file: see [1] for a quick introduction. Note in particular
-# that *indentation is important*: all the elements of a list or dictionary
-# should have the same indentation.
-#
-# [1] https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html
-
-
-## Modules ##
-
-# Server admins can expand Synapse's functionality with external modules.
-#
-# See https://matrix-org.github.io/synapse/latest/modules.html for more
-# documentation on how to configure or create custom modules for Synapse.
-#
-modules:
- # - module: my_super_module.MySuperClass
- # config:
- # do_thing: true
- # - module: my_other_super_module.SomeClass
- # config: {}
-
-
-## Server ##
-
-# The public-facing domain of the server
-#
-# The server_name name will appear at the end of usernames and room addresses
-# created on this server. For example if the server_name was example.com,
-# usernames on this server would be in the format @user:example.com
-#
-# In most cases you should avoid using a matrix specific subdomain such as
-# matrix.example.com or synapse.example.com as the server_name for the same
-# reasons you wouldn't use user@email.example.com as your email address.
-# See https://matrix-org.github.io/synapse/latest/delegate.html
-# for information on how to host Synapse on a subdomain while preserving
-# a clean server_name.
-#
-# The server_name cannot be changed later so it is important to
-# configure this correctly before you start Synapse. It should be all
-# lowercase and may contain an explicit port.
-# Examples: matrix.org, localhost:8080
-#
-server_name: "lekva.me"
-
-# When running as a daemon, the file to store the pid in
-#
-pid_file: /data/homeserver.pid
-
-# The absolute URL to the web client which /_matrix/client will redirect
-# to if 'webclient' is configured under the 'listeners' configuration.
-#
-# This option can be also set to the filesystem path to the web client
-# which will be served at /_matrix/client/ if 'webclient' is configured
-# under the 'listeners' configuration, however this is a security risk:
-# https://github.com/matrix-org/synapse#security-note
-#
-#web_client_location: https://riot.example.com/
-
-# The public-facing base URL that clients use to access this Homeserver (not
-# including _matrix/...). This is the same URL a user might enter into the
-# 'Custom Homeserver URL' field on their client. If you use Synapse with a
-# reverse proxy, this should be the URL to reach Synapse via the proxy.
-# Otherwise, it should be the URL to reach Synapse's client HTTP listener (see
-# 'listeners' below).
-#
-public_baseurl: https://matrix.lekva.me
-
-# Set the soft limit on the number of file descriptors synapse can use
-# Zero is used to indicate synapse should set the soft limit to the
-# hard limit.
-#
-#soft_file_limit: 0
-
-# Presence tracking allows users to see the state (e.g online/offline)
-# of other local and remote users.
-#
-presence:
- # Uncomment to disable presence tracking on this homeserver. This option
- # replaces the previous top-level 'use_presence' option.
- #
- #enabled: false
-
-# Whether to require authentication to retrieve profile data (avatars,
-# display names) of other users through the client API. Defaults to
-# 'false'. Note that profile data is also available via the federation
-# API, unless allow_profile_lookup_over_federation is set to false.
-#
-#require_auth_for_profile_requests: true
-
-# Uncomment to require a user to share a room with another user in order
-# to retrieve their profile information. Only checked on Client-Server
-# requests. Profile requests from other servers should be checked by the
-# requesting server. Defaults to 'false'.
-#
-#limit_profile_requests_to_users_who_share_rooms: true
-
-# Uncomment to prevent a user's profile data from being retrieved and
-# displayed in a room until they have joined it. By default, a user's
-# profile data is included in an invite event, regardless of the values
-# of the above two settings, and whether or not the users share a server.
-# Defaults to 'true'.
-#
-#include_profile_data_on_invite: false
-
-# If set to 'true', removes the need for authentication to access the server's
-# public rooms directory through the client API, meaning that anyone can
-# query the room directory. Defaults to 'false'.
-#
-#allow_public_rooms_without_auth: true
-
-# If set to 'true', allows any other homeserver to fetch the server's public
-# rooms directory via federation. Defaults to 'false'.
-#
-#allow_public_rooms_over_federation: true
-
-# The default room version for newly created rooms.
-#
-# Known room versions are listed here:
-# https://matrix.org/docs/spec/#complete-list-of-room-versions
-#
-# For example, for room version 1, default_room_version should be set
-# to "1".
-#
-#default_room_version: "6"
-
-# The GC threshold parameters to pass to `gc.set_threshold`, if defined
-#
-#gc_thresholds: [700, 10, 10]
-
-# The minimum time in seconds between each GC for a generation, regardless of
-# the GC thresholds. This ensures that we don't do GC too frequently.
-#
-# A value of `[1s, 10s, 30s]` indicates that a second must pass between consecutive
-# generation 0 GCs, etc.
-#
-# Defaults to `[1s, 10s, 30s]`.
-#
-#gc_min_interval: [0.5s, 30s, 1m]
-
-# Set the limit on the returned events in the timeline in the get
-# and sync operations. The default value is 100. -1 means no upper limit.
-#
-# Uncomment the following to increase the limit to 5000.
-#
-#filter_timeline_limit: 5000
-
-# Whether room invites to users on this server should be blocked
-# (except those sent by local server admins). The default is False.
-#
-#block_non_admin_invites: true
-
-# Room searching
-#
-# If disabled, new messages will not be indexed for searching and users
-# will receive errors when searching for messages. Defaults to enabled.
-#
-#enable_search: false
-
-# Prevent outgoing requests from being sent to the following blacklisted IP address
-# CIDR ranges. If this option is not specified then it defaults to private IP
-# address ranges (see the example below).
-#
-# The blacklist applies to the outbound requests for federation, identity servers,
-# push servers, and for checking key validity for third-party invite events.
-#
-# (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly
-# listed here, since they correspond to unroutable addresses.)
-#
-# This option replaces federation_ip_range_blacklist in Synapse v1.25.0.
-#
-# Note: The value is ignored when an HTTP proxy is in use
-#
-#ip_range_blacklist:
-# - '127.0.0.0/8'
-# - '10.0.0.0/8'
-# - '172.16.0.0/12'
-# - '192.168.0.0/16'
-# - '100.64.0.0/10'
-# - '192.0.0.0/24'
-# - '169.254.0.0/16'
-# - '192.88.99.0/24'
-# - '198.18.0.0/15'
-# - '192.0.2.0/24'
-# - '198.51.100.0/24'
-# - '203.0.113.0/24'
-# - '224.0.0.0/4'
-# - '::1/128'
-# - 'fe80::/10'
-# - 'fc00::/7'
-# - '2001:db8::/32'
-# - 'ff00::/8'
-# - 'fec0::/10'
-
-# List of IP address CIDR ranges that should be allowed for federation,
-# identity servers, push servers, and for checking key validity for
-# third-party invite events. This is useful for specifying exceptions to
-# wide-ranging blacklisted target IP ranges - e.g. for communication with
-# a push server only visible in your network.
-#
-# This whitelist overrides ip_range_blacklist and defaults to an empty
-# list.
-#
-#ip_range_whitelist:
-# - '192.168.1.1'
-
-# List of ports that Synapse should listen on, their purpose and their
-# configuration.
-#
-# Options for each listener include:
-#
-# port: the TCP port to bind to
-#
-# bind_addresses: a list of local addresses to listen on. The default is
-# 'all local interfaces'.
-#
-# type: the type of listener. Normally 'http', but other valid options are:
-# 'manhole' (see https://matrix-org.github.io/synapse/latest/manhole.html),
-# 'metrics' (see https://matrix-org.github.io/synapse/latest/metrics-howto.html),
-# 'replication' (see https://matrix-org.github.io/synapse/latest/workers.html).
-#
-# tls: set to true to enable TLS for this listener. Will use the TLS
-# key/cert specified in tls_private_key_path / tls_certificate_path.
-#
-# x_forwarded: Only valid for an 'http' listener. Set to true to use the
-# X-Forwarded-For header as the client IP. Useful when Synapse is
-# behind a reverse-proxy.
-#
-# resources: Only valid for an 'http' listener. A list of resources to host
-# on this port. Options for each resource are:
-#
-# names: a list of names of HTTP resources. See below for a list of
-# valid resource names.
-#
-# compress: set to true to enable HTTP compression for this resource.
-#
-# additional_resources: Only valid for an 'http' listener. A map of
-# additional endpoints which should be loaded via dynamic modules.
-#
-# Valid resource names are:
-#
-# client: the client-server API (/_matrix/client), and the synapse admin
-# API (/_synapse/admin). Also implies 'media' and 'static'.
-#
-# consent: user consent forms (/_matrix/consent).
-# See https://matrix-org.github.io/synapse/latest/consent_tracking.html.
-#
-# federation: the server-server API (/_matrix/federation). Also implies
-# 'media', 'keys', 'openid'
-#
-# keys: the key discovery API (/_matrix/keys).
-#
-# media: the media API (/_matrix/media).
-#
-# metrics: the metrics interface.
-# See https://matrix-org.github.io/synapse/latest/metrics-howto.html.
-#
-# openid: OpenID authentication.
-#
-# replication: the HTTP replication API (/_synapse/replication).
-# See https://matrix-org.github.io/synapse/latest/workers.html.
-#
-# static: static resources under synapse/static (/_matrix/static). (Mostly
-# useful for 'fallback authentication'.)
-#
-# webclient: A web client. Requires web_client_location to be set.
-#
-listeners:
- # TLS-enabled listener: for when matrix traffic is sent directly to synapse.
- #
- # Disabled by default. To enable it, uncomment the following. (Note that you
- # will also need to give Synapse a TLS key and certificate: see the TLS section
- # below.)
- #
- #- port: 8448
- # type: http
- # tls: true
- # resources:
- # - names: [client, federation]
-
- # Unsecure HTTP listener: for when matrix traffic passes through a reverse proxy
- # that unwraps TLS.
- #
- # If you plan to use a reverse proxy, please see
- # https://matrix-org.github.io/synapse/latest/reverse_proxy.html.
- #
- - port: 8008
- tls: false
- type: http
- x_forwarded: true
-
- resources:
- - names: [client, federation]
- compress: false
-
- # example additional_resources:
- #
- #additional_resources:
- # "/_matrix/my/custom/endpoint":
- # module: my_module.CustomRequestHandler
- # config: {}
-
- # Turn on the twisted ssh manhole service on localhost on the given
- # port.
- #
- #- port: 9000
- # bind_addresses: ['::1', '127.0.0.1']
- # type: manhole
-
-# Connection settings for the manhole
-#
-manhole_settings:
- # The username for the manhole. This defaults to 'matrix'.
- #
- #username: manhole
-
- # The password for the manhole. This defaults to 'rabbithole'.
- #
- #password: mypassword
-
- # The private and public SSH key pair used to encrypt the manhole traffic.
- # If these are left unset, then hardcoded and non-secret keys are used,
- # which could allow traffic to be intercepted if sent over a public network.
- #
- #ssh_priv_key_path: /data/id_rsa
- #ssh_pub_key_path: /data/id_rsa.pub
-
-# Forward extremities can build up in a room due to networking delays between
-# homeservers. Once this happens in a large room, calculation of the state of
-# that room can become quite expensive. To mitigate this, once the number of
-# forward extremities reaches a given threshold, Synapse will send an
-# org.matrix.dummy_event event, which will reduce the forward extremities
-# in the room.
-#
-# This setting defines the threshold (i.e. number of forward extremities in the
-# room) at which dummy events are sent. The default value is 10.
-#
-#dummy_events_threshold: 5
-
-
-## Homeserver blocking ##
-
-# How to reach the server admin, used in ResourceLimitError
-#
-#admin_contact: 'mailto:admin@server.com'
-
-# Global blocking
-#
-#hs_disabled: false
-#hs_disabled_message: 'Human readable reason for why the HS is blocked'
-
-# Monthly Active User Blocking
-#
-# Used in cases where the admin or server owner wants to limit to the
-# number of monthly active users.
-#
-# 'limit_usage_by_mau' disables/enables monthly active user blocking. When
-# enabled and a limit is reached the server returns a 'ResourceLimitError'
-# with error type Codes.RESOURCE_LIMIT_EXCEEDED
-#
-# 'max_mau_value' is the hard limit of monthly active users above which
-# the server will start blocking user actions.
-#
-# 'mau_trial_days' is a means to add a grace period for active users. It
-# means that users must be active for this number of days before they
-# can be considered active and guards against the case where lots of users
-# sign up in a short space of time never to return after their initial
-# session.
-#
-# 'mau_limit_alerting' is a means of limiting client side alerting
-# should the mau limit be reached. This is useful for small instances
-# where the admin has 5 mau seats (say) for 5 specific people and no
-# interest increasing the mau limit further. Defaults to True, which
-# means that alerting is enabled
-#
-#limit_usage_by_mau: false
-#max_mau_value: 50
-#mau_trial_days: 2
-#mau_limit_alerting: false
-
-# If enabled, the metrics for the number of monthly active users will
-# be populated, however no one will be limited. If limit_usage_by_mau
-# is true, this is implied to be true.
-#
-#mau_stats_only: false
-
-# Sometimes the server admin will want to ensure certain accounts are
-# never blocked by mau checking. These accounts are specified here.
-#
-#mau_limit_reserved_threepids:
-# - medium: 'email'
-# address: 'reserved_user@example.com'
-
-# Used by phonehome stats to group together related servers.
-#server_context: context
-
-# Resource-constrained homeserver settings
-#
-# When this is enabled, the room "complexity" will be checked before a user
-# joins a new remote room. If it is above the complexity limit, the server will
-# disallow joining, or will instantly leave.
-#
-# Room complexity is an arbitrary measure based on factors such as the number of
-# users in the room.
-#
-limit_remote_rooms:
- # Uncomment to enable room complexity checking.
- #
- #enabled: true
-
- # the limit above which rooms cannot be joined. The default is 1.0.
- #
- #complexity: 0.5
-
- # override the error which is returned when the room is too complex.
- #
- #complexity_error: "This room is too complex."
-
- # allow server admins to join complex rooms. Default is false.
- #
- #admins_can_join: true
-
-# Whether to require a user to be in the room to add an alias to it.
-# Defaults to 'true'.
-#
-#require_membership_for_aliases: false
-
-# Whether to allow per-room membership profiles through the send of membership
-# events with profile information that differ from the target's global profile.
-# Defaults to 'true'.
-#
-#allow_per_room_profiles: false
-
-# How long to keep redacted events in unredacted form in the database. After
-# this period redacted events get replaced with their redacted form in the DB.
-#
-# Defaults to `7d`. Set to `null` to disable.
-#
-#redaction_retention_period: 28d
-
-# How long to track users' last seen time and IPs in the database.
-#
-# Defaults to `28d`. Set to `null` to disable clearing out of old rows.
-#
-#user_ips_max_age: 14d
-
-# Message retention policy at the server level.
-#
-# Room admins and mods can define a retention period for their rooms using the
-# 'm.room.retention' state event, and server admins can cap this period by setting
-# the 'allowed_lifetime_min' and 'allowed_lifetime_max' config options.
-#
-# If this feature is enabled, Synapse will regularly look for and purge events
-# which are older than the room's maximum retention period. Synapse will also
-# filter events received over federation so that events that should have been
-# purged are ignored and not stored again.
-#
-retention:
- # The message retention policies feature is disabled by default. Uncomment the
- # following line to enable it.
- #
- #enabled: true
-
- # Default retention policy. If set, Synapse will apply it to rooms that lack the
- # 'm.room.retention' state event. Currently, the value of 'min_lifetime' doesn't
- # matter much because Synapse doesn't take it into account yet.
- #
- #default_policy:
- # min_lifetime: 1d
- # max_lifetime: 1y
-
- # Retention policy limits. If set, and the state of a room contains a
- # 'm.room.retention' event in its state which contains a 'min_lifetime' or a
- # 'max_lifetime' that's out of these bounds, Synapse will cap the room's policy
- # to these limits when running purge jobs.
- #
- #allowed_lifetime_min: 1d
- #allowed_lifetime_max: 1y
-
- # Server admins can define the settings of the background jobs purging the
- # events which lifetime has expired under the 'purge_jobs' section.
- #
- # If no configuration is provided, a single job will be set up to delete expired
- # events in every room daily.
- #
- # Each job's configuration defines which range of message lifetimes the job
- # takes care of. For example, if 'shortest_max_lifetime' is '2d' and
- # 'longest_max_lifetime' is '3d', the job will handle purging expired events in
- # rooms whose state defines a 'max_lifetime' that's both higher than 2 days, and
- # lower than or equal to 3 days. Both the minimum and the maximum value of a
- # range are optional, e.g. a job with no 'shortest_max_lifetime' and a
- # 'longest_max_lifetime' of '3d' will handle every room with a retention policy
- # which 'max_lifetime' is lower than or equal to three days.
- #
- # The rationale for this per-job configuration is that some rooms might have a
- # retention policy with a low 'max_lifetime', where history needs to be purged
- # of outdated messages on a more frequent basis than for the rest of the rooms
- # (e.g. every 12h), but not want that purge to be performed by a job that's
- # iterating over every room it knows, which could be heavy on the server.
- #
- # If any purge job is configured, it is strongly recommended to have at least
- # a single job with neither 'shortest_max_lifetime' nor 'longest_max_lifetime'
- # set, or one job without 'shortest_max_lifetime' and one job without
- # 'longest_max_lifetime' set. Otherwise some rooms might be ignored, even if
- # 'allowed_lifetime_min' and 'allowed_lifetime_max' are set, because capping a
- # room's policy to these values is done after the policies are retrieved from
- # Synapse's database (which is done using the range specified in a purge job's
- # configuration).
- #
- #purge_jobs:
- # - longest_max_lifetime: 3d
- # interval: 12h
- # - shortest_max_lifetime: 3d
- # interval: 1d
-
-# Inhibits the /requestToken endpoints from returning an error that might leak
-# information about whether an e-mail address is in use or not on this
-# homeserver.
-# Note that for some endpoints the error situation is the e-mail already being
-# used, and for others the error is entering the e-mail being unused.
-# If this option is enabled, instead of returning an error, these endpoints will
-# act as if no error happened and return a fake session ID ('sid') to clients.
-#
-#request_token_inhibit_3pid_errors: true
-
-# A list of domains that the domain portion of 'next_link' parameters
-# must match.
-#
-# This parameter is optionally provided by clients while requesting
-# validation of an email or phone number, and maps to a link that
-# users will be automatically redirected to after validation
-# succeeds. Clients can make use this parameter to aid the validation
-# process.
-#
-# The whitelist is applied whether the homeserver or an
-# identity server is handling validation.
-#
-# The default value is no whitelist functionality; all domains are
-# allowed. Setting this value to an empty list will instead disallow
-# all domains.
-#
-#next_link_domain_whitelist: ["matrix.org"]
-
-# Templates to use when generating email or HTML page contents.
-#
-templates:
- # Directory in which Synapse will try to find template files to use to generate
- # email or HTML page contents.
- # If not set, or a file is not found within the template directory, a default
- # template from within the Synapse package will be used.
- #
- # See https://matrix-org.github.io/synapse/latest/templates.html for more
- # information about using custom templates.
- #
- #custom_template_directory: /path/to/custom/templates/
-
-
-## TLS ##
-
-# PEM-encoded X509 certificate for TLS.
-# This certificate, as of Synapse 1.0, will need to be a valid and verifiable
-# certificate, signed by a recognised Certificate Authority.
-#
-# Be sure to use a `.pem` file that includes the full certificate chain including
-# any intermediate certificates (for instance, if using certbot, use
-# `fullchain.pem` as your certificate, not `cert.pem`).
-#
-#tls_certificate_path: "/data/lekva.me.tls.crt"
-
-# PEM-encoded private key for TLS
-#
-#tls_private_key_path: "/data/lekva.me.tls.key"
-
-# Whether to verify TLS server certificates for outbound federation requests.
-#
-# Defaults to `true`. To disable certificate verification, uncomment the
-# following line.
-#
-#federation_verify_certificates: false
-
-# The minimum TLS version that will be used for outbound federation requests.
-#
-# Defaults to `1`. Configurable to `1`, `1.1`, `1.2`, or `1.3`. Note
-# that setting this value higher than `1.2` will prevent federation to most
-# of the public Matrix network: only configure it to `1.3` if you have an
-# entirely private federation setup and you can ensure TLS 1.3 support.
-#
-#federation_client_minimum_tls_version: 1.2
-
-# Skip federation certificate verification on the following whitelist
-# of domains.
-#
-# This setting should only be used in very specific cases, such as
-# federation over Tor hidden services and similar. For private networks
-# of homeservers, you likely want to use a private CA instead.
-#
-# Only effective if federation_verify_certicates is `true`.
-#
-#federation_certificate_verification_whitelist:
-# - lon.example.com
-# - *.domain.com
-# - *.onion
-
-# List of custom certificate authorities for federation traffic.
-#
-# This setting should only normally be used within a private network of
-# homeservers.
-#
-# Note that this list will replace those that are provided by your
-# operating environment. Certificates must be in PEM format.
-#
-#federation_custom_ca_list:
-# - myCA1.pem
-# - myCA2.pem
-# - myCA3.pem
-
-
-## Federation ##
-
-# Restrict federation to the following whitelist of domains.
-# N.B. we recommend also firewalling your federation listener to limit
-# inbound federation traffic as early as possible, rather than relying
-# purely on this application-layer restriction. If not specified, the
-# default is to whitelist everything.
-#
-#federation_domain_whitelist:
-# - lon.example.com
-# - nyc.example.com
-# - syd.example.com
-
-# Report prometheus metrics on the age of PDUs being sent to and received from
-# the following domains. This can be used to give an idea of "delay" on inbound
-# and outbound federation, though be aware that any delay can be due to problems
-# at either end or with the intermediate network.
-#
-# By default, no domains are monitored in this way.
-#
-#federation_metrics_domains:
-# - matrix.org
-# - example.com
-
-# Uncomment to disable profile lookup over federation. By default, the
-# Federation API allows other homeservers to obtain profile data of any user
-# on this homeserver. Defaults to 'true'.
-#
-#allow_profile_lookup_over_federation: false
-
-# Uncomment to disable device display name lookup over federation. By default, the
-# Federation API allows other homeservers to obtain device display names of any user
-# on this homeserver. Defaults to 'true'.
-#
-#allow_device_name_lookup_over_federation: false
-
-
-## Caching ##
-
-# Caching can be configured through the following options.
-#
-# A cache 'factor' is a multiplier that can be applied to each of
-# Synapse's caches in order to increase or decrease the maximum
-# number of entries that can be stored.
-
-# The number of events to cache in memory. Not affected by
-# caches.global_factor.
-#
-#event_cache_size: 10K
-
-caches:
- # Controls the global cache factor, which is the default cache factor
- # for all caches if a specific factor for that cache is not otherwise
- # set.
- #
- # This can also be set by the "SYNAPSE_CACHE_FACTOR" environment
- # variable. Setting by environment variable takes priority over
- # setting through the config file.
- #
- # Defaults to 0.5, which will half the size of all caches.
- #
- #global_factor: 1.0
-
- # A dictionary of cache name to cache factor for that individual
- # cache. Overrides the global cache factor for a given cache.
- #
- # These can also be set through environment variables comprised
- # of "SYNAPSE_CACHE_FACTOR_" + the name of the cache in capital
- # letters and underscores. Setting by environment variable
- # takes priority over setting through the config file.
- # Ex. SYNAPSE_CACHE_FACTOR_GET_USERS_WHO_SHARE_ROOM_WITH_USER=2.0
- #
- # Some caches have '*' and other characters that are not
- # alphanumeric or underscores. These caches can be named with or
- # without the special characters stripped. For example, to specify
- # the cache factor for `*stateGroupCache*` via an environment
- # variable would be `SYNAPSE_CACHE_FACTOR_STATEGROUPCACHE=2.0`.
- #
- per_cache_factors:
- #get_users_who_share_room_with_user: 2.0
-
- # Controls how long an entry can be in a cache without having been
- # accessed before being evicted. Defaults to None, which means
- # entries are never evicted based on time.
- #
- #expiry_time: 30m
-
- # Controls how long the results of a /sync request are cached for after
- # a successful response is returned. A higher duration can help clients with
- # intermittent connections, at the cost of higher memory usage.
- #
- # By default, this is zero, which means that sync responses are not cached
- # at all.
- #
- #sync_response_cache_duration: 2m
-
-
-## Database ##
-
-# The 'database' setting defines the database that synapse uses to store all of
-# its data.
-#
-# 'name' gives the database engine to use: either 'sqlite3' (for SQLite) or
-# 'psycopg2' (for PostgreSQL).
-#
-# 'txn_limit' gives the maximum number of transactions to run per connection
-# before reconnecting. Defaults to 0, which means no limit.
-#
-# 'args' gives options which are passed through to the database engine,
-# except for options starting 'cp_', which are used to configure the Twisted
-# connection pool. For a reference to valid arguments, see:
-# * for sqlite: https://docs.python.org/3/library/sqlite3.html#sqlite3.connect
-# * for postgres: https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS
-# * for the connection pool: https://twistedmatrix.com/documents/current/api/twisted.enterprise.adbapi.ConnectionPool.html#__init__
-#
-#
-# Example SQLite configuration:
-#
-#database:
-# name: sqlite3
-# args:
-# database: /path/to/homeserver.db
-#
-#
-# Example Postgres configuration:
-#
-#database:
-# name: psycopg2
-# txn_limit: 10000
-# args:
-# user: synapse_user
-# password: secretpassword
-# database: synapse
-# host: localhost
-# port: 5432
-# cp_min: 5
-# cp_max: 10
-#
-# For more information on using Synapse with Postgres,
-# see https://matrix-org.github.io/synapse/latest/postgres.html.
-#
-database:
- name: sqlite3
- args:
- database: /data/homeserver.db
-
-
-## Logging ##
-
-# A yaml python logging config file as described by
-# https://docs.python.org/3.7/library/logging.config.html#configuration-dictionary-schema
-#
-log_config: "/data/lekva.me.log.config"
-
-
-## Ratelimiting ##
-
-# Ratelimiting settings for client actions (registration, login, messaging).
-#
-# Each ratelimiting configuration is made of two parameters:
-# - per_second: number of requests a client can send per second.
-# - burst_count: number of requests a client can send before being throttled.
-#
-# Synapse currently uses the following configurations:
-# - one for messages that ratelimits sending based on the account the client
-# is using
-# - one for registration that ratelimits registration requests based on the
-# client's IP address.
-# - one for checking the validity of registration tokens that ratelimits
-# requests based on the client's IP address.
-# - one for login that ratelimits login requests based on the client's IP
-# address.
-# - one for login that ratelimits login requests based on the account the
-# client is attempting to log into.
-# - one for login that ratelimits login requests based on the account the
-# client is attempting to log into, based on the amount of failed login
-# attempts for this account.
-# - one for ratelimiting redactions by room admins. If this is not explicitly
-# set then it uses the same ratelimiting as per rc_message. This is useful
-# to allow room admins to deal with abuse quickly.
-# - two for ratelimiting number of rooms a user can join, "local" for when
-# users are joining rooms the server is already in (this is cheap) vs
-# "remote" for when users are trying to join rooms not on the server (which
-# can be more expensive)
-# - one for ratelimiting how often a user or IP can attempt to validate a 3PID.
-# - two for ratelimiting how often invites can be sent in a room or to a
-# specific user.
-#
-# The defaults are as shown below.
-#
-#rc_message:
-# per_second: 0.2
-# burst_count: 10
-#
-#rc_registration:
-# per_second: 0.17
-# burst_count: 3
-#
-#rc_registration_token_validity:
-# per_second: 0.1
-# burst_count: 5
-#
-#rc_login:
-# address:
-# per_second: 0.17
-# burst_count: 3
-# account:
-# per_second: 0.17
-# burst_count: 3
-# failed_attempts:
-# per_second: 0.17
-# burst_count: 3
-#
-#rc_admin_redaction:
-# per_second: 1
-# burst_count: 50
-#
-#rc_joins:
-# local:
-# per_second: 0.1
-# burst_count: 10
-# remote:
-# per_second: 0.01
-# burst_count: 10
-#
-#rc_3pid_validation:
-# per_second: 0.003
-# burst_count: 5
-#
-#rc_invites:
-# per_room:
-# per_second: 0.3
-# burst_count: 10
-# per_user:
-# per_second: 0.003
-# burst_count: 5
-
-# Ratelimiting settings for incoming federation
-#
-# The rc_federation configuration is made up of the following settings:
-# - window_size: window size in milliseconds
-# - sleep_limit: number of federation requests from a single server in
-# a window before the server will delay processing the request.
-# - sleep_delay: duration in milliseconds to delay processing events
-# from remote servers by if they go over the sleep limit.
-# - reject_limit: maximum number of concurrent federation requests
-# allowed from a single server
-# - concurrent: number of federation requests to concurrently process
-# from a single server
-#
-# The defaults are as shown below.
-#
-#rc_federation:
-# window_size: 1000
-# sleep_limit: 10
-# sleep_delay: 500
-# reject_limit: 50
-# concurrent: 3
-
-# Target outgoing federation transaction frequency for sending read-receipts,
-# per-room.
-#
-# If we end up trying to send out more read-receipts, they will get buffered up
-# into fewer transactions.
-#
-#federation_rr_transactions_per_room_per_second: 50
-
-
-
-## Media Store ##
-
-# Enable the media store service in the Synapse master. Uncomment the
-# following if you are using a separate media store worker.
-#
-#enable_media_repo: false
-
-# Directory where uploaded images and attachments are stored.
-#
-media_store_path: "/data/media_store"
-
-# Media storage providers allow media to be stored in different
-# locations.
-#
-#media_storage_providers:
-# - module: file_system
-# # Whether to store newly uploaded local files
-# store_local: false
-# # Whether to store newly downloaded remote files
-# store_remote: false
-# # Whether to wait for successful storage for local uploads
-# store_synchronous: false
-# config:
-# directory: /mnt/some/other/directory
-
-# The largest allowed upload size in bytes
-#
-# If you are using a reverse proxy you may also need to set this value in
-# your reverse proxy's config. Notably Nginx has a small max body size by default.
-# See https://matrix-org.github.io/synapse/latest/reverse_proxy.html.
-#
-#max_upload_size: 50M
-
-# Maximum number of pixels that will be thumbnailed
-#
-#max_image_pixels: 32M
-
-# Whether to generate new thumbnails on the fly to precisely match
-# the resolution requested by the client. If true then whenever
-# a new resolution is requested by the client the server will
-# generate a new thumbnail. If false the server will pick a thumbnail
-# from a precalculated list.
-#
-#dynamic_thumbnails: false
-
-# List of thumbnails to precalculate when an image is uploaded.
-#
-#thumbnail_sizes:
-# - width: 32
-# height: 32
-# method: crop
-# - width: 96
-# height: 96
-# method: crop
-# - width: 320
-# height: 240
-# method: scale
-# - width: 640
-# height: 480
-# method: scale
-# - width: 800
-# height: 600
-# method: scale
-
-# Is the preview URL API enabled?
-#
-# 'false' by default: uncomment the following to enable it (and specify a
-# url_preview_ip_range_blacklist blacklist).
-#
-#url_preview_enabled: true
-
-# List of IP address CIDR ranges that the URL preview spider is denied
-# from accessing. There are no defaults: you must explicitly
-# specify a list for URL previewing to work. You should specify any
-# internal services in your network that you do not want synapse to try
-# to connect to, otherwise anyone in any Matrix room could cause your
-# synapse to issue arbitrary GET requests to your internal services,
-# causing serious security issues.
-#
-# (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly
-# listed here, since they correspond to unroutable addresses.)
-#
-# This must be specified if url_preview_enabled is set. It is recommended that
-# you uncomment the following list as a starting point.
-#
-# Note: The value is ignored when an HTTP proxy is in use
-#
-#url_preview_ip_range_blacklist:
-# - '127.0.0.0/8'
-# - '10.0.0.0/8'
-# - '172.16.0.0/12'
-# - '192.168.0.0/16'
-# - '100.64.0.0/10'
-# - '192.0.0.0/24'
-# - '169.254.0.0/16'
-# - '192.88.99.0/24'
-# - '198.18.0.0/15'
-# - '192.0.2.0/24'
-# - '198.51.100.0/24'
-# - '203.0.113.0/24'
-# - '224.0.0.0/4'
-# - '::1/128'
-# - 'fe80::/10'
-# - 'fc00::/7'
-# - '2001:db8::/32'
-# - 'ff00::/8'
-# - 'fec0::/10'
-
-# List of IP address CIDR ranges that the URL preview spider is allowed
-# to access even if they are specified in url_preview_ip_range_blacklist.
-# This is useful for specifying exceptions to wide-ranging blacklisted
-# target IP ranges - e.g. for enabling URL previews for a specific private
-# website only visible in your network.
-#
-#url_preview_ip_range_whitelist:
-# - '192.168.1.1'
-
-# Optional list of URL matches that the URL preview spider is
-# denied from accessing. You should use url_preview_ip_range_blacklist
-# in preference to this, otherwise someone could define a public DNS
-# entry that points to a private IP address and circumvent the blacklist.
-# This is more useful if you know there is an entire shape of URL that
-# you know that will never want synapse to try to spider.
-#
-# Each list entry is a dictionary of url component attributes as returned
-# by urlparse.urlsplit as applied to the absolute form of the URL. See
-# https://docs.python.org/2/library/urlparse.html#urlparse.urlsplit
-# The values of the dictionary are treated as an filename match pattern
-# applied to that component of URLs, unless they start with a ^ in which
-# case they are treated as a regular expression match. If all the
-# specified component matches for a given list item succeed, the URL is
-# blacklisted.
-#
-#url_preview_url_blacklist:
-# # blacklist any URL with a username in its URI
-# - username: '*'
-#
-# # blacklist all *.google.com URLs
-# - netloc: 'google.com'
-# - netloc: '*.google.com'
-#
-# # blacklist all plain HTTP URLs
-# - scheme: 'http'
-#
-# # blacklist http(s)://www.acme.com/foo
-# - netloc: 'www.acme.com'
-# path: '/foo'
-#
-# # blacklist any URL with a literal IPv4 address
-# - netloc: '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$'
-
-# The largest allowed URL preview spidering size in bytes
-#
-#max_spider_size: 10M
-
-# A list of values for the Accept-Language HTTP header used when
-# downloading webpages during URL preview generation. This allows
-# Synapse to specify the preferred languages that URL previews should
-# be in when communicating with remote servers.
-#
-# Each value is a IETF language tag; a 2-3 letter identifier for a
-# language, optionally followed by subtags separated by '-', specifying
-# a country or region variant.
-#
-# Multiple values can be provided, and a weight can be added to each by
-# using quality value syntax (;q=). '*' translates to any language.
-#
-# Defaults to "en".
-#
-# Example:
-#
-# url_preview_accept_language:
-# - en-UK
-# - en-US;q=0.9
-# - fr;q=0.8
-# - *;q=0.7
-#
-url_preview_accept_language:
-# - en
-
-
-# oEmbed allows for easier embedding content from a website. It can be
-# used for generating URLs previews of services which support it.
-#
-oembed:
- # A default list of oEmbed providers is included with Synapse.
- #
- # Uncomment the following to disable using these default oEmbed URLs.
- # Defaults to 'false'.
- #
- #disable_default_providers: true
-
- # Additional files with oEmbed configuration (each should be in the
- # form of providers.json).
- #
- # By default, this list is empty (so only the default providers.json
- # is used).
- #
- #additional_providers:
- # - oembed/my_providers.json
-
-
-## Captcha ##
-# See docs/CAPTCHA_SETUP.md for full details of configuring this.
-
-# This homeserver's ReCAPTCHA public key. Must be specified if
-# enable_registration_captcha is enabled.
-#
-#recaptcha_public_key: "YOUR_PUBLIC_KEY"
-
-# This homeserver's ReCAPTCHA private key. Must be specified if
-# enable_registration_captcha is enabled.
-#
-#recaptcha_private_key: "YOUR_PRIVATE_KEY"
-
-# Uncomment to enable ReCaptcha checks when registering, preventing signup
-# unless a captcha is answered. Requires a valid ReCaptcha
-# public/private key. Defaults to 'false'.
-#
-#enable_registration_captcha: true
-
-# The API endpoint to use for verifying m.login.recaptcha responses.
-# Defaults to "https://www.recaptcha.net/recaptcha/api/siteverify".
-#
-#recaptcha_siteverify_api: "https://my.recaptcha.site"
-
-
-## TURN ##
-
-# The public URIs of the TURN server to give to clients
-#
-#turn_uris: []
-
-# The shared secret used to compute passwords for the TURN server
-#
-#turn_shared_secret: "YOUR_SHARED_SECRET"
-
-# The Username and password if the TURN server needs them and
-# does not use a token
-#
-#turn_username: "TURNSERVER_USERNAME"
-#turn_password: "TURNSERVER_PASSWORD"
-
-# How long generated TURN credentials last
-#
-#turn_user_lifetime: 1h
-
-# Whether guests should be allowed to use the TURN server.
-# This defaults to True, otherwise VoIP will be unreliable for guests.
-# However, it does introduce a slight security risk as it allows users to
-# connect to arbitrary endpoints without having first signed up for a
-# valid account (e.g. by passing a CAPTCHA).
-#
-#turn_allow_guests: true
-
-
-## Registration ##
-#
-# Registration can be rate-limited using the parameters in the "Ratelimiting"
-# section of this file.
-
-# Enable registration for new users.
-#
-enable_registration: false
-
-# Time that a user's session remains valid for, after they log in.
-#
-# Note that this is not currently compatible with guest logins.
-#
-# Note also that this is calculated at login time: changes are not applied
-# retrospectively to users who have already logged in.
-#
-# By default, this is infinite.
-#
-#session_lifetime: 24h
-
-# The user must provide all of the below types of 3PID when registering.
-#
-#registrations_require_3pid:
-# - email
-# - msisdn
-
-# Explicitly disable asking for MSISDNs from the registration
-# flow (overrides registrations_require_3pid if MSISDNs are set as required)
-#
-#disable_msisdn_registration: true
-
-# Mandate that users are only allowed to associate certain formats of
-# 3PIDs with accounts on this server.
-#
-#allowed_local_3pids:
-# - medium: email
-# pattern: '^[^@]+@matrix\.org$'
-# - medium: email
-# pattern: '^[^@]+@vector\.im$'
-# - medium: msisdn
-# pattern: '\+44'
-
-# Enable 3PIDs lookup requests to identity servers from this server.
-#
-#enable_3pid_lookup: true
-
-# Require users to submit a token during registration.
-# Tokens can be managed using the admin API:
-# https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/registration_tokens.html
-# Note that `enable_registration` must be set to `true`.
-# Disabling this option will not delete any tokens previously generated.
-# Defaults to false. Uncomment the following to require tokens:
-#
-#registration_requires_token: true
-
-# If set, allows registration of standard or admin accounts by anyone who
-# has the shared secret, even if registration is otherwise disabled.
-#
-registration_shared_secret: "GEny_DPO:TPeFlsUXyEP.T2KWcCzS~FEfxE3EewqfsGp5vR5Gi"
-
-# Set the number of bcrypt rounds used to generate password hash.
-# Larger numbers increase the work factor needed to generate the hash.
-# The default number is 12 (which equates to 2^12 rounds).
-# N.B. that increasing this will exponentially increase the time required
-# to register or login - e.g. 24 => 2^24 rounds which will take >20 mins.
-#
-#bcrypt_rounds: 12
-
-# Allows users to register as guests without a password/email/etc, and
-# participate in rooms hosted on this server which have been made
-# accessible to anonymous users.
-#
-#allow_guest_access: false
-
-# The identity server which we suggest that clients should use when users log
-# in on this server.
-#
-# (By default, no suggestion is made, so it is left up to the client.
-# This setting is ignored unless public_baseurl is also set.)
-#
-#default_identity_server: https://matrix.org
-
-# Handle threepid (email/phone etc) registration and password resets through a set of
-# *trusted* identity servers. Note that this allows the configured identity server to
-# reset passwords for accounts!
-#
-# Be aware that if `email` is not set, and SMTP options have not been
-# configured in the email config block, registration and user password resets via
-# email will be globally disabled.
-#
-# Additionally, if `msisdn` is not set, registration and password resets via msisdn
-# will be disabled regardless, and users will not be able to associate an msisdn
-# identifier to their account. This is due to Synapse currently not supporting
-# any method of sending SMS messages on its own.
-#
-# To enable using an identity server for operations regarding a particular third-party
-# identifier type, set the value to the URL of that identity server as shown in the
-# examples below.
-#
-# Servers handling the these requests must answer the `/requestToken` endpoints defined
-# by the Matrix Identity Service API specification:
-# https://matrix.org/docs/spec/identity_service/latest
-#
-# If a delegate is specified, the config option public_baseurl must also be filled out.
-#
-account_threepid_delegates:
- #email: https://example.com # Delegate email sending to example.com
- #msisdn: http://localhost:8090 # Delegate SMS sending to this local process
-
-# Whether users are allowed to change their displayname after it has
-# been initially set. Useful when provisioning users based on the
-# contents of a third-party directory.
-#
-# Does not apply to server administrators. Defaults to 'true'
-#
-#enable_set_displayname: false
-
-# Whether users are allowed to change their avatar after it has been
-# initially set. Useful when provisioning users based on the contents
-# of a third-party directory.
-#
-# Does not apply to server administrators. Defaults to 'true'
-#
-#enable_set_avatar_url: false
-
-# Whether users can change the 3PIDs associated with their accounts
-# (email address and msisdn).
-#
-# Defaults to 'true'
-#
-#enable_3pid_changes: false
-
-# Users who register on this homeserver will automatically be joined
-# to these rooms.
-#
-# By default, any room aliases included in this list will be created
-# as a publicly joinable room when the first user registers for the
-# homeserver. This behaviour can be customised with the settings below.
-# If the room already exists, make certain it is a publicly joinable
-# room. The join rule of the room must be set to 'public'.
-#
-#auto_join_rooms:
-# - "#example:example.com"
-
-# Where auto_join_rooms are specified, setting this flag ensures that the
-# the rooms exist by creating them when the first user on the
-# homeserver registers.
-#
-# By default the auto-created rooms are publicly joinable from any federated
-# server. Use the autocreate_auto_join_rooms_federated and
-# autocreate_auto_join_room_preset settings below to customise this behaviour.
-#
-# Setting to false means that if the rooms are not manually created,
-# users cannot be auto-joined since they do not exist.
-#
-# Defaults to true. Uncomment the following line to disable automatically
-# creating auto-join rooms.
-#
-#autocreate_auto_join_rooms: false
-
-# Whether the auto_join_rooms that are auto-created are available via
-# federation. Only has an effect if autocreate_auto_join_rooms is true.
-#
-# Note that whether a room is federated cannot be modified after
-# creation.
-#
-# Defaults to true: the room will be joinable from other servers.
-# Uncomment the following to prevent users from other homeservers from
-# joining these rooms.
-#
-#autocreate_auto_join_rooms_federated: false
-
-# The room preset to use when auto-creating one of auto_join_rooms. Only has an
-# effect if autocreate_auto_join_rooms is true.
-#
-# This can be one of "public_chat", "private_chat", or "trusted_private_chat".
-# If a value of "private_chat" or "trusted_private_chat" is used then
-# auto_join_mxid_localpart must also be configured.
-#
-# Defaults to "public_chat", meaning that the room is joinable by anyone, including
-# federated servers if autocreate_auto_join_rooms_federated is true (the default).
-# Uncomment the following to require an invitation to join these rooms.
-#
-#autocreate_auto_join_room_preset: private_chat
-
-# The local part of the user id which is used to create auto_join_rooms if
-# autocreate_auto_join_rooms is true. If this is not provided then the
-# initial user account that registers will be used to create the rooms.
-#
-# The user id is also used to invite new users to any auto-join rooms which
-# are set to invite-only.
-#
-# It *must* be configured if autocreate_auto_join_room_preset is set to
-# "private_chat" or "trusted_private_chat".
-#
-# Note that this must be specified in order for new users to be correctly
-# invited to any auto-join rooms which have been set to invite-only (either
-# at the time of creation or subsequently).
-#
-# Note that, if the room already exists, this user must be joined and
-# have the appropriate permissions to invite new members.
-#
-#auto_join_mxid_localpart: system
-
-# When auto_join_rooms is specified, setting this flag to false prevents
-# guest accounts from being automatically joined to the rooms.
-#
-# Defaults to true.
-#
-#auto_join_rooms_for_guests: false
-
-
-## Metrics ###
-
-# Enable collection and rendering of performance metrics
-#
-#enable_metrics: false
-
-# Enable sentry integration
-# NOTE: While attempts are made to ensure that the logs don't contain
-# any sensitive information, this cannot be guaranteed. By enabling
-# this option the sentry server may therefore receive sensitive
-# information, and it in turn may then diseminate sensitive information
-# through insecure notification channels if so configured.
-#
-#sentry:
-# dsn: "..."
-
-# Flags to enable Prometheus metrics which are not suitable to be
-# enabled by default, either for performance reasons or limited use.
-#
-metrics_flags:
- # Publish synapse_federation_known_servers, a gauge of the number of
- # servers this homeserver knows about, including itself. May cause
- # performance problems on large homeservers.
- #
- #known_servers: true
-
-# Whether or not to report anonymized homeserver usage statistics.
-#
-report_stats: false
-
-# The endpoint to report the anonymized homeserver usage statistics to.
-# Defaults to https://matrix.org/report-usage-stats/push
-#
-#report_stats_endpoint: https://example.com/report-usage-stats/push
-
-
-## API Configuration ##
-
-# Controls for the state that is shared with users who receive an invite
-# to a room
-#
-room_prejoin_state:
- # By default, the following state event types are shared with users who
- # receive invites to the room:
- #
- # - m.room.join_rules
- # - m.room.canonical_alias
- # - m.room.avatar
- # - m.room.encryption
- # - m.room.name
- # - m.room.create
- #
- # Uncomment the following to disable these defaults (so that only the event
- # types listed in 'additional_event_types' are shared). Defaults to 'false'.
- #
- #disable_default_event_types: true
-
- # Additional state event types to share with users when they are invited
- # to a room.
- #
- # By default, this list is empty (so only the default event types are shared).
- #
- #additional_event_types:
- # - org.example.custom.event.type
-
-
-# A list of application service config files to use
-#
-#app_service_config_files:
-# - app_service_1.yaml
-# - app_service_2.yaml
-
-# Uncomment to enable tracking of application service IP addresses. Implicitly
-# enables MAU tracking for application service users.
-#
-#track_appservice_user_ips: true
-
-
-# a secret which is used to sign access tokens. If none is specified,
-# the registration_shared_secret is used, if one is given; otherwise,
-# a secret key is derived from the signing key.
-#
-macaroon_secret_key: "fZKtQV48EPAGg:k&#K1U-Q-CHY6wyaiY@UpvGwVz-^i+_t,Mcq"
-
-# a secret which is used to calculate HMACs for form values, to stop
-# falsification of values. Must be specified for the User Consent
-# forms to work.
-#
-form_secret: "_o;aphJt@h*.He2y0rmpKt+y_uycKcl7aLfV5wtw9Ro~Bu~SW."
-
-## Signing Keys ##
-
-# Path to the signing key to sign messages with
-#
-signing_key_path: "/data/lekva.me.signing.key"
-
-# The keys that the server used to sign messages with but won't use
-# to sign new messages.
-#
-old_signing_keys:
- # For each key, `key` should be the base64-encoded public key, and
- # `expired_ts`should be the time (in milliseconds since the unix epoch) that
- # it was last used.
- #
- # It is possible to build an entry from an old signing.key file using the
- # `export_signing_key` script which is provided with synapse.
- #
- # For example:
- #
- #"ed25519:id": { key: "base64string", expired_ts: 123456789123 }
-
-# How long key response published by this server is valid for.
-# Used to set the valid_until_ts in /key/v2 APIs.
-# Determines how quickly servers will query to check which keys
-# are still valid.
-#
-#key_refresh_interval: 1d
-
-# The trusted servers to download signing keys from.
-#
-# When we need to fetch a signing key, each server is tried in parallel.
-#
-# Normally, the connection to the key server is validated via TLS certificates.
-# Additional security can be provided by configuring a `verify key`, which
-# will make synapse check that the response is signed by that key.
-#
-# This setting supercedes an older setting named `perspectives`. The old format
-# is still supported for backwards-compatibility, but it is deprecated.
-#
-# 'trusted_key_servers' defaults to matrix.org, but using it will generate a
-# warning on start-up. To suppress this warning, set
-# 'suppress_key_server_warning' to true.
-#
-# Options for each entry in the list include:
-#
-# server_name: the name of the server. required.
-#
-# verify_keys: an optional map from key id to base64-encoded public key.
-# If specified, we will check that the response is signed by at least
-# one of the given keys.
-#
-# accept_keys_insecurely: a boolean. Normally, if `verify_keys` is unset,
-# and federation_verify_certificates is not `true`, synapse will refuse
-# to start, because this would allow anyone who can spoof DNS responses
-# to masquerade as the trusted key server. If you know what you are doing
-# and are sure that your network environment provides a secure connection
-# to the key server, you can set this to `true` to override this
-# behaviour.
-#
-# An example configuration might look like:
-#
-#trusted_key_servers:
-# - server_name: "my_trusted_server.example.com"
-# verify_keys:
-# "ed25519:auto": "abcdefghijklmnopqrstuvwxyzabcdefghijklmopqr"
-# - server_name: "my_other_trusted_server.example.com"
-#
-trusted_key_servers:
- - server_name: "matrix.org"
-
-# Uncomment the following to disable the warning that is emitted when the
-# trusted_key_servers include 'matrix.org'. See above.
-#
-#suppress_key_server_warning: true
-
-# The signing keys to use when acting as a trusted key server. If not specified
-# defaults to the server signing key.
-#
-# Can contain multiple keys, one per line.
-#
-#key_server_signing_keys_path: "key_server_signing_keys.key"
-
-
-## Single sign-on integration ##
-
-# The following settings can be used to make Synapse use a single sign-on
-# provider for authentication, instead of its internal password database.
-#
-# You will probably also want to set the following options to `false` to
-# disable the regular login/registration flows:
-# * enable_registration
-# * password_config.enabled
-#
-# You will also want to investigate the settings under the "sso" configuration
-# section below.
-
-# Enable SAML2 for registration and login. Uses pysaml2.
-#
-# At least one of `sp_config` or `config_path` must be set in this section to
-# enable SAML login.
-#
-# Once SAML support is enabled, a metadata file will be exposed at
-# https://<server>:<port>/_synapse/client/saml2/metadata.xml, which you may be able to
-# use to configure your SAML IdP with. Alternatively, you can manually configure
-# the IdP to use an ACS location of
-# https://<server>:<port>/_synapse/client/saml2/authn_response.
-#
-saml2_config:
- # `sp_config` is the configuration for the pysaml2 Service Provider.
- # See pysaml2 docs for format of config.
- #
- # Default values will be used for the 'entityid' and 'service' settings,
- # so it is not normally necessary to specify them unless you need to
- # override them.
- #
- sp_config:
- # Point this to the IdP's metadata. You must provide either a local
- # file via the `local` attribute or (preferably) a URL via the
- # `remote` attribute.
- #
- #metadata:
- # local: ["saml2/idp.xml"]
- # remote:
- # - url: https://our_idp/metadata.xml
-
- # Allowed clock difference in seconds between the homeserver and IdP.
- #
- # Uncomment the below to increase the accepted time difference from 0 to 3 seconds.
- #
- #accepted_time_diff: 3
-
- # By default, the user has to go to our login page first. If you'd like
- # to allow IdP-initiated login, set 'allow_unsolicited: true' in a
- # 'service.sp' section:
- #
- #service:
- # sp:
- # allow_unsolicited: true
-
- # The examples below are just used to generate our metadata xml, and you
- # may well not need them, depending on your setup. Alternatively you
- # may need a whole lot more detail - see the pysaml2 docs!
-
- #description: ["My awesome SP", "en"]
- #name: ["Test SP", "en"]
-
- #ui_info:
- # display_name:
- # - lang: en
- # text: "Display Name is the descriptive name of your service."
- # description:
- # - lang: en
- # text: "Description should be a short paragraph explaining the purpose of the service."
- # information_url:
- # - lang: en
- # text: "https://example.com/terms-of-service"
- # privacy_statement_url:
- # - lang: en
- # text: "https://example.com/privacy-policy"
- # keywords:
- # - lang: en
- # text: ["Matrix", "Element"]
- # logo:
- # - lang: en
- # text: "https://example.com/logo.svg"
- # width: "200"
- # height: "80"
-
- #organization:
- # name: Example com
- # display_name:
- # - ["Example co", "en"]
- # url: "http://example.com"
-
- #contact_person:
- # - given_name: Bob
- # sur_name: "the Sysadmin"
- # email_address": ["admin@example.com"]
- # contact_type": technical
-
- # Instead of putting the config inline as above, you can specify a
- # separate pysaml2 configuration file:
- #
- #config_path: "/data/sp_conf.py"
-
- # The lifetime of a SAML session. This defines how long a user has to
- # complete the authentication process, if allow_unsolicited is unset.
- # The default is 15 minutes.
- #
- #saml_session_lifetime: 5m
-
- # An external module can be provided here as a custom solution to
- # mapping attributes returned from a saml provider onto a matrix user.
- #
- user_mapping_provider:
- # The custom module's class. Uncomment to use a custom module.
- #
- #module: mapping_provider.SamlMappingProvider
-
- # Custom configuration values for the module. Below options are
- # intended for the built-in provider, they should be changed if
- # using a custom module. This section will be passed as a Python
- # dictionary to the module's `parse_config` method.
- #
- config:
- # The SAML attribute (after mapping via the attribute maps) to use
- # to derive the Matrix ID from. 'uid' by default.
- #
- # Note: This used to be configured by the
- # saml2_config.mxid_source_attribute option. If that is still
- # defined, its value will be used instead.
- #
- #mxid_source_attribute: displayName
-
- # The mapping system to use for mapping the saml attribute onto a
- # matrix ID.
- #
- # Options include:
- # * 'hexencode' (which maps unpermitted characters to '=xx')
- # * 'dotreplace' (which replaces unpermitted characters with
- # '.').
- # The default is 'hexencode'.
- #
- # Note: This used to be configured by the
- # saml2_config.mxid_mapping option. If that is still defined, its
- # value will be used instead.
- #
- #mxid_mapping: dotreplace
-
- # In previous versions of synapse, the mapping from SAML attribute to
- # MXID was always calculated dynamically rather than stored in a
- # table. For backwards- compatibility, we will look for user_ids
- # matching such a pattern before creating a new account.
- #
- # This setting controls the SAML attribute which will be used for this
- # backwards-compatibility lookup. Typically it should be 'uid', but if
- # the attribute maps are changed, it may be necessary to change it.
- #
- # The default is 'uid'.
- #
- #grandfathered_mxid_source_attribute: upn
-
- # It is possible to configure Synapse to only allow logins if SAML attributes
- # match particular values. The requirements can be listed under
- # `attribute_requirements` as shown below. All of the listed attributes must
- # match for the login to be permitted.
- #
- #attribute_requirements:
- # - attribute: userGroup
- # value: "staff"
- # - attribute: department
- # value: "sales"
-
- # If the metadata XML contains multiple IdP entities then the `idp_entityid`
- # option must be set to the entity to redirect users to.
- #
- # Most deployments only have a single IdP entity and so should omit this
- # option.
- #
- #idp_entityid: 'https://our_idp/entityid'
-
-
-# List of OpenID Connect (OIDC) / OAuth 2.0 identity providers, for registration
-# and login.
-#
-# Options for each entry include:
-#
-# idp_id: a unique identifier for this identity provider. Used internally
-# by Synapse; should be a single word such as 'github'.
-#
-# Note that, if this is changed, users authenticating via that provider
-# will no longer be recognised as the same user!
-#
-# (Use "oidc" here if you are migrating from an old "oidc_config"
-# configuration.)
-#
-# idp_name: A user-facing name for this identity provider, which is used to
-# offer the user a choice of login mechanisms.
-#
-# idp_icon: An optional icon for this identity provider, which is presented
-# by clients and Synapse's own IdP picker page. If given, must be an
-# MXC URI of the format mxc://<server-name>/<media-id>. (An easy way to
-# obtain such an MXC URI is to upload an image to an (unencrypted) room
-# and then copy the "url" from the source of the event.)
-#
-# idp_brand: An optional brand for this identity provider, allowing clients
-# to style the login flow according to the identity provider in question.
-# See the spec for possible options here.
-#
-# discover: set to 'false' to disable the use of the OIDC discovery mechanism
-# to discover endpoints. Defaults to true.
-#
-# issuer: Required. The OIDC issuer. Used to validate tokens and (if discovery
-# is enabled) to discover the provider's endpoints.
-#
-# client_id: Required. oauth2 client id to use.
-#
-# client_secret: oauth2 client secret to use. May be omitted if
-# client_secret_jwt_key is given, or if client_auth_method is 'none'.
-#
-# client_secret_jwt_key: Alternative to client_secret: details of a key used
-# to create a JSON Web Token to be used as an OAuth2 client secret. If
-# given, must be a dictionary with the following properties:
-#
-# key: a pem-encoded signing key. Must be a suitable key for the
-# algorithm specified. Required unless 'key_file' is given.
-#
-# key_file: the path to file containing a pem-encoded signing key file.
-# Required unless 'key' is given.
-#
-# jwt_header: a dictionary giving properties to include in the JWT
-# header. Must include the key 'alg', giving the algorithm used to
-# sign the JWT, such as "ES256", using the JWA identifiers in
-# RFC7518.
-#
-# jwt_payload: an optional dictionary giving properties to include in
-# the JWT payload. Normally this should include an 'iss' key.
-#
-# client_auth_method: auth method to use when exchanging the token. Valid
-# values are 'client_secret_basic' (default), 'client_secret_post' and
-# 'none'.
-#
-# scopes: list of scopes to request. This should normally include the "openid"
-# scope. Defaults to ["openid"].
-#
-# authorization_endpoint: the oauth2 authorization endpoint. Required if
-# provider discovery is disabled.
-#
-# token_endpoint: the oauth2 token endpoint. Required if provider discovery is
-# disabled.
-#
-# userinfo_endpoint: the OIDC userinfo endpoint. Required if discovery is
-# disabled and the 'openid' scope is not requested.
-#
-# jwks_uri: URI where to fetch the JWKS. Required if discovery is disabled and
-# the 'openid' scope is used.
-#
-# skip_verification: set to 'true' to skip metadata verification. Use this if
-# you are connecting to a provider that is not OpenID Connect compliant.
-# Defaults to false. Avoid this in production.
-#
-# user_profile_method: Whether to fetch the user profile from the userinfo
-# endpoint. Valid values are: 'auto' or 'userinfo_endpoint'.
-#
-# Defaults to 'auto', which fetches the userinfo endpoint if 'openid' is
-# included in 'scopes'. Set to 'userinfo_endpoint' to always fetch the
-# userinfo endpoint.
-#
-# allow_existing_users: set to 'true' to allow a user logging in via OIDC to
-# match a pre-existing account instead of failing. This could be used if
-# switching from password logins to OIDC. Defaults to false.
-#
-# user_mapping_provider: Configuration for how attributes returned from a OIDC
-# provider are mapped onto a matrix user. This setting has the following
-# sub-properties:
-#
-# module: The class name of a custom mapping module. Default is
-# 'synapse.handlers.oidc.JinjaOidcMappingProvider'.
-# See https://matrix-org.github.io/synapse/latest/sso_mapping_providers.html#openid-mapping-providers
-# for information on implementing a custom mapping provider.
-#
-# config: Configuration for the mapping provider module. This section will
-# be passed as a Python dictionary to the user mapping provider
-# module's `parse_config` method.
-#
-# For the default provider, the following settings are available:
-#
-# subject_claim: name of the claim containing a unique identifier
-# for the user. Defaults to 'sub', which OpenID Connect
-# compliant providers should provide.
-#
-# localpart_template: Jinja2 template for the localpart of the MXID.
-# If this is not set, the user will be prompted to choose their
-# own username (see 'sso_auth_account_details.html' in the 'sso'
-# section of this file).
-#
-# display_name_template: Jinja2 template for the display name to set
-# on first login. If unset, no displayname will be set.
-#
-# email_template: Jinja2 template for the email address of the user.
-# If unset, no email address will be added to the account.
-#
-# extra_attributes: a map of Jinja2 templates for extra attributes
-# to send back to the client during login.
-# Note that these are non-standard and clients will ignore them
-# without modifications.
-#
-# When rendering, the Jinja2 templates are given a 'user' variable,
-# which is set to the claims returned by the UserInfo Endpoint and/or
-# in the ID Token.
-#
-# It is possible to configure Synapse to only allow logins if certain attributes
-# match particular values in the OIDC userinfo. The requirements can be listed under
-# `attribute_requirements` as shown below. All of the listed attributes must
-# match for the login to be permitted. Additional attributes can be added to
-# userinfo by expanding the `scopes` section of the OIDC config to retrieve
-# additional information from the OIDC provider.
-#
-# If the OIDC claim is a list, then the attribute must match any value in the list.
-# Otherwise, it must exactly match the value of the claim. Using the example
-# below, the `family_name` claim MUST be "Stephensson", but the `groups`
-# claim MUST contain "admin".
-#
-# attribute_requirements:
-# - attribute: family_name
-# value: "Stephensson"
-# - attribute: groups
-# value: "admin"
-#
-# See https://matrix-org.github.io/synapse/latest/openid.html
-# for information on how to configure these options.
-#
-# For backwards compatibility, it is also possible to configure a single OIDC
-# provider via an 'oidc_config' setting. This is now deprecated and admins are
-# advised to migrate to the 'oidc_providers' format. (When doing that migration,
-# use 'oidc' for the idp_id to ensure that existing users continue to be
-# recognised.)
-#
-oidc_providers:
- # Generic example
- #
- #- idp_id: my_idp
- # idp_name: "My OpenID provider"
- # idp_icon: "mxc://example.com/mediaid"
- # discover: false
- # issuer: "https://accounts.example.com/"
- # client_id: "provided-by-your-issuer"
- # client_secret: "provided-by-your-issuer"
- # client_auth_method: client_secret_post
- # scopes: ["openid", "profile"]
- # authorization_endpoint: "https://accounts.example.com/oauth2/auth"
- # token_endpoint: "https://accounts.example.com/oauth2/token"
- # userinfo_endpoint: "https://accounts.example.com/userinfo"
- # jwks_uri: "https://accounts.example.com/.well-known/jwks.json"
- # skip_verification: true
- # user_mapping_provider:
- # config:
- # subject_claim: "id"
- # localpart_template: "{{ user.login }}"
- # display_name_template: "{{ user.name }}"
- # email_template: "{{ user.email }}"
- # attribute_requirements:
- # - attribute: userGroup
- # value: "synapseUsers"
-
-
-# Enable Central Authentication Service (CAS) for registration and login.
-#
-cas_config:
- # Uncomment the following to enable authorization against a CAS server.
- # Defaults to false.
- #
- #enabled: true
-
- # The URL of the CAS authorization endpoint.
- #
- #server_url: "https://cas-server.com"
-
- # The attribute of the CAS response to use as the display name.
- #
- # If unset, no displayname will be set.
- #
- #displayname_attribute: name
-
- # It is possible to configure Synapse to only allow logins if CAS attributes
- # match particular values. All of the keys in the mapping below must exist
- # and the values must match the given value. Alternately if the given value
- # is None then any value is allowed (the attribute just must exist).
- # All of the listed attributes must match for the login to be permitted.
- #
- #required_attributes:
- # userGroup: "staff"
- # department: None
-
-
-# Additional settings to use with single-sign on systems such as OpenID Connect,
-# SAML2 and CAS.
-#
-# Server admins can configure custom templates for pages related to SSO. See
-# https://matrix-org.github.io/synapse/latest/templates.html for more information.
-#
-sso:
- # A list of client URLs which are whitelisted so that the user does not
- # have to confirm giving access to their account to the URL. Any client
- # whose URL starts with an entry in the following list will not be subject
- # to an additional confirmation step after the SSO login is completed.
- #
- # WARNING: An entry such as "https://my.client" is insecure, because it
- # will also match "https://my.client.evil.site", exposing your users to
- # phishing attacks from evil.site. To avoid this, include a slash after the
- # hostname: "https://my.client/".
- #
- # If public_baseurl is set, then the login fallback page (used by clients
- # that don't natively support the required login flows) is whitelisted in
- # addition to any URLs in this list.
- #
- # By default, this list is empty.
- #
- #client_whitelist:
- # - https://riot.im/develop
- # - https://my.custom.client/
-
- # Uncomment to keep a user's profile fields in sync with information from
- # the identity provider. Currently only syncing the displayname is
- # supported. Fields are checked on every SSO login, and are updated
- # if necessary.
- #
- # Note that enabling this option will override user profile information,
- # regardless of whether users have opted-out of syncing that
- # information when first signing in. Defaults to false.
- #
- #update_profile_information: true
-
-
-# JSON web token integration. The following settings can be used to make
-# Synapse JSON web tokens for authentication, instead of its internal
-# password database.
-#
-# Each JSON Web Token needs to contain a "sub" (subject) claim, which is
-# used as the localpart of the mxid.
-#
-# Additionally, the expiration time ("exp"), not before time ("nbf"),
-# and issued at ("iat") claims are validated if present.
-#
-# Note that this is a non-standard login type and client support is
-# expected to be non-existent.
-#
-# See https://matrix-org.github.io/synapse/latest/jwt.html.
-#
-#jwt_config:
- # Uncomment the following to enable authorization using JSON web
- # tokens. Defaults to false.
- #
- #enabled: true
-
- # This is either the private shared secret or the public key used to
- # decode the contents of the JSON web token.
- #
- # Required if 'enabled' is true.
- #
- #secret: "provided-by-your-issuer"
-
- # The algorithm used to sign the JSON web token.
- #
- # Supported algorithms are listed at
- # https://pyjwt.readthedocs.io/en/latest/algorithms.html
- #
- # Required if 'enabled' is true.
- #
- #algorithm: "provided-by-your-issuer"
-
- # The issuer to validate the "iss" claim against.
- #
- # Optional, if provided the "iss" claim will be required and
- # validated for all JSON web tokens.
- #
- #issuer: "provided-by-your-issuer"
-
- # A list of audiences to validate the "aud" claim against.
- #
- # Optional, if provided the "aud" claim will be required and
- # validated for all JSON web tokens.
- #
- # Note that if the "aud" claim is included in a JSON web token then
- # validation will fail without configuring audiences.
- #
- #audiences:
- # - "provided-by-your-issuer"
-
-
-password_config:
- # Uncomment to disable password login
- #
- #enabled: false
-
- # Uncomment to disable authentication against the local password
- # database. This is ignored if `enabled` is false, and is only useful
- # if you have other password_providers.
- #
- #localdb_enabled: false
-
- # Uncomment and change to a secret random string for extra security.
- # DO NOT CHANGE THIS AFTER INITIAL SETUP!
- #
- #pepper: "EVEN_MORE_SECRET"
-
- # Define and enforce a password policy. Each parameter is optional.
- # This is an implementation of MSC2000.
- #
- policy:
- # Whether to enforce the password policy.
- # Defaults to 'false'.
- #
- #enabled: true
-
- # Minimum accepted length for a password.
- # Defaults to 0.
- #
- #minimum_length: 15
-
- # Whether a password must contain at least one digit.
- # Defaults to 'false'.
- #
- #require_digit: true
-
- # Whether a password must contain at least one symbol.
- # A symbol is any character that's not a number or a letter.
- # Defaults to 'false'.
- #
- #require_symbol: true
-
- # Whether a password must contain at least one lowercase letter.
- # Defaults to 'false'.
- #
- #require_lowercase: true
-
- # Whether a password must contain at least one uppercase letter.
- # Defaults to 'false'.
- #
- #require_uppercase: true
-
-ui_auth:
- # The amount of time to allow a user-interactive authentication session
- # to be active.
- #
- # This defaults to 0, meaning the user is queried for their credentials
- # before every action, but this can be overridden to allow a single
- # validation to be re-used. This weakens the protections afforded by
- # the user-interactive authentication process, by allowing for multiple
- # (and potentially different) operations to use the same validation session.
- #
- # This is ignored for potentially "dangerous" operations (including
- # deactivating an account, modifying an account password, and
- # adding a 3PID).
- #
- # Uncomment below to allow for credential validation to last for 15
- # seconds.
- #
- #session_timeout: "15s"
-
-
-# Configuration for sending emails from Synapse.
-#
-# Server admins can configure custom templates for email content. See
-# https://matrix-org.github.io/synapse/latest/templates.html for more information.
-#
-email:
- # The hostname of the outgoing SMTP server to use. Defaults to 'localhost'.
- #
- #smtp_host: mail.server
-
- # The port on the mail server for outgoing SMTP. Defaults to 25.
- #
- #smtp_port: 587
-
- # Username/password for authentication to the SMTP server. By default, no
- # authentication is attempted.
- #
- #smtp_user: "exampleusername"
- #smtp_pass: "examplepassword"
-
- # Uncomment the following to require TLS transport security for SMTP.
- # By default, Synapse will connect over plain text, and will then switch to
- # TLS via STARTTLS *if the SMTP server supports it*. If this option is set,
- # Synapse will refuse to connect unless the server supports STARTTLS.
- #
- #require_transport_security: true
-
- # Uncomment the following to disable TLS for SMTP.
- #
- # By default, if the server supports TLS, it will be used, and the server
- # must present a certificate that is valid for 'smtp_host'. If this option
- # is set to false, TLS will not be used.
- #
- #enable_tls: false
-
- # notif_from defines the "From" address to use when sending emails.
- # It must be set if email sending is enabled.
- #
- # The placeholder '%(app)s' will be replaced by the application name,
- # which is normally 'app_name' (below), but may be overridden by the
- # Matrix client application.
- #
- # Note that the placeholder must be written '%(app)s', including the
- # trailing 's'.
- #
- #notif_from: "Your Friendly %(app)s homeserver <noreply@example.com>"
-
- # app_name defines the default value for '%(app)s' in notif_from and email
- # subjects. It defaults to 'Matrix'.
- #
- #app_name: my_branded_matrix_server
-
- # Uncomment the following to enable sending emails for messages that the user
- # has missed. Disabled by default.
- #
- #enable_notifs: true
-
- # Uncomment the following to disable automatic subscription to email
- # notifications for new users. Enabled by default.
- #
- #notif_for_new_users: false
-
- # Custom URL for client links within the email notifications. By default
- # links will be based on "https://matrix.to".
- #
- # (This setting used to be called riot_base_url; the old name is still
- # supported for backwards-compatibility but is now deprecated.)
- #
- #client_base_url: "http://localhost/riot"
-
- # Configure the time that a validation email will expire after sending.
- # Defaults to 1h.
- #
- #validation_token_lifetime: 15m
-
- # The web client location to direct users to during an invite. This is passed
- # to the identity server as the org.matrix.web_client_location key. Defaults
- # to unset, giving no guidance to the identity server.
- #
- #invite_client_location: https://app.element.io
-
- # Subjects to use when sending emails from Synapse.
- #
- # The placeholder '%(app)s' will be replaced with the value of the 'app_name'
- # setting above, or by a value dictated by the Matrix client application.
- #
- # If a subject isn't overridden in this configuration file, the value used as
- # its example will be used.
- #
- #subjects:
-
- # Subjects for notification emails.
- #
- # On top of the '%(app)s' placeholder, these can use the following
- # placeholders:
- #
- # * '%(person)s', which will be replaced by the display name of the user(s)
- # that sent the message(s), e.g. "Alice and Bob".
- # * '%(room)s', which will be replaced by the name of the room the
- # message(s) have been sent to, e.g. "My super room".
- #
- # See the example provided for each setting to see which placeholder can be
- # used and how to use them.
- #
- # Subject to use to notify about one message from one or more user(s) in a
- # room which has a name.
- #message_from_person_in_room: "[%(app)s] You have a message on %(app)s from %(person)s in the %(room)s room..."
- #
- # Subject to use to notify about one message from one or more user(s) in a
- # room which doesn't have a name.
- #message_from_person: "[%(app)s] You have a message on %(app)s from %(person)s..."
- #
- # Subject to use to notify about multiple messages from one or more users in
- # a room which doesn't have a name.
- #messages_from_person: "[%(app)s] You have messages on %(app)s from %(person)s..."
- #
- # Subject to use to notify about multiple messages in a room which has a
- # name.
- #messages_in_room: "[%(app)s] You have messages on %(app)s in the %(room)s room..."
- #
- # Subject to use to notify about multiple messages in multiple rooms.
- #messages_in_room_and_others: "[%(app)s] You have messages on %(app)s in the %(room)s room and others..."
- #
- # Subject to use to notify about multiple messages from multiple persons in
- # multiple rooms. This is similar to the setting above except it's used when
- # the room in which the notification was triggered has no name.
- #messages_from_person_and_others: "[%(app)s] You have messages on %(app)s from %(person)s and others..."
- #
- # Subject to use to notify about an invite to a room which has a name.
- #invite_from_person_to_room: "[%(app)s] %(person)s has invited you to join the %(room)s room on %(app)s..."
- #
- # Subject to use to notify about an invite to a room which doesn't have a
- # name.
- #invite_from_person: "[%(app)s] %(person)s has invited you to chat on %(app)s..."
-
- # Subject for emails related to account administration.
- #
- # On top of the '%(app)s' placeholder, these one can use the
- # '%(server_name)s' placeholder, which will be replaced by the value of the
- # 'server_name' setting in your Synapse configuration.
- #
- # Subject to use when sending a password reset email.
- #password_reset: "[%(server_name)s] Password reset"
- #
- # Subject to use when sending a verification email to assert an address's
- # ownership.
- #email_validation: "[%(server_name)s] Validate your email"
-
-
-# Password providers allow homeserver administrators to integrate
-# their Synapse installation with existing authentication methods
-# ex. LDAP, external tokens, etc.
-#
-# For more information and known implementations, please see
-# https://matrix-org.github.io/synapse/latest/password_auth_providers.html
-#
-# Note: instances wishing to use SAML or CAS authentication should
-# instead use the `saml2_config` or `cas_config` options,
-# respectively.
-#
-password_providers:
-# # Example config for an LDAP auth provider
-# - module: "ldap_auth_provider.LdapAuthProvider"
-# config:
-# enabled: true
-# uri: "ldap://ldap.example.com:389"
-# start_tls: true
-# base: "ou=users,dc=example,dc=com"
-# attributes:
-# uid: "cn"
-# mail: "email"
-# name: "givenName"
-# #bind_dn:
-# #bind_password:
-# #filter: "(objectClass=posixAccount)"
-
-
-
-## Push ##
-
-push:
- # Clients requesting push notifications can either have the body of
- # the message sent in the notification poke along with other details
- # like the sender, or just the event ID and room ID (`event_id_only`).
- # If clients choose the former, this option controls whether the
- # notification request includes the content of the event (other details
- # like the sender are still included). For `event_id_only` push, it
- # has no effect.
- #
- # For modern android devices the notification content will still appear
- # because it is loaded by the app. iPhone, however will send a
- # notification saying only that a message arrived and who it came from.
- #
- # The default value is "true" to include message details. Uncomment to only
- # include the event ID and room ID in push notification payloads.
- #
- #include_content: false
-
- # When a push notification is received, an unread count is also sent.
- # This number can either be calculated as the number of unread messages
- # for the user, or the number of *rooms* the user has unread messages in.
- #
- # The default value is "true", meaning push clients will see the number of
- # rooms with unread messages in them. Uncomment to instead send the number
- # of unread messages.
- #
- #group_unread_count_by_room: false
-
-
-## Rooms ##
-
-# Controls whether locally-created rooms should be end-to-end encrypted by
-# default.
-#
-# Possible options are "all", "invite", and "off". They are defined as:
-#
-# * "all": any locally-created room
-# * "invite": any room created with the "private_chat" or "trusted_private_chat"
-# room creation presets
-# * "off": this option will take no effect
-#
-# The default value is "off".
-#
-# Note that this option will only affect rooms created after it is set. It
-# will also not affect rooms created by other servers.
-#
-#encryption_enabled_by_default_for_room_type: invite
-
-
-# Uncomment to allow non-server-admin users to create groups on this server
-#
-#enable_group_creation: true
-
-# If enabled, non server admins can only create groups with local parts
-# starting with this prefix
-#
-#group_creation_prefix: "unofficial_"
-
-
-
-# User Directory configuration
-#
-user_directory:
- # Defines whether users can search the user directory. If false then
- # empty responses are returned to all queries. Defaults to true.
- #
- # Uncomment to disable the user directory.
- #
- #enabled: false
-
- # Defines whether to search all users visible to your HS when searching
- # the user directory, rather than limiting to users visible in public
- # rooms. Defaults to false.
- #
- # If you set it true, you'll have to rebuild the user_directory search
- # indexes, see:
- # https://matrix-org.github.io/synapse/latest/user_directory.html
- #
- # Uncomment to return search results containing all known users, even if that
- # user does not share a room with the requester.
- #
- #search_all_users: true
-
- # Defines whether to prefer local users in search query results.
- # If True, local users are more likely to appear above remote users
- # when searching the user directory. Defaults to false.
- #
- # Uncomment to prefer local over remote users in user directory search
- # results.
- #
- #prefer_local_users: true
-
-
-# User Consent configuration
-#
-# for detailed instructions, see
-# https://matrix-org.github.io/synapse/latest/consent_tracking.html
-#
-# Parts of this section are required if enabling the 'consent' resource under
-# 'listeners', in particular 'template_dir' and 'version'.
-#
-# 'template_dir' gives the location of the templates for the HTML forms.
-# This directory should contain one subdirectory per language (eg, 'en', 'fr'),
-# and each language directory should contain the policy document (named as
-# '<version>.html') and a success page (success.html).
-#
-# 'version' specifies the 'current' version of the policy document. It defines
-# the version to be served by the consent resource if there is no 'v'
-# parameter.
-#
-# 'server_notice_content', if enabled, will send a user a "Server Notice"
-# asking them to consent to the privacy policy. The 'server_notices' section
-# must also be configured for this to work. Notices will *not* be sent to
-# guest users unless 'send_server_notice_to_guests' is set to true.
-#
-# 'block_events_error', if set, will block any attempts to send events
-# until the user consents to the privacy policy. The value of the setting is
-# used as the text of the error.
-#
-# 'require_at_registration', if enabled, will add a step to the registration
-# process, similar to how captcha works. Users will be required to accept the
-# policy before their account is created.
-#
-# 'policy_name' is the display name of the policy users will see when registering
-# for an account. Has no effect unless `require_at_registration` is enabled.
-# Defaults to "Privacy Policy".
-#
-#user_consent:
-# template_dir: res/templates/privacy
-# version: 1.0
-# server_notice_content:
-# msgtype: m.text
-# body: >-
-# To continue using this homeserver you must review and agree to the
-# terms and conditions at %(consent_uri)s
-# send_server_notice_to_guests: true
-# block_events_error: >-
-# To continue using this homeserver you must review and agree to the
-# terms and conditions at %(consent_uri)s
-# require_at_registration: false
-# policy_name: Privacy Policy
-#
-
-
-
-# Settings for local room and user statistics collection. See
-# https://matrix-org.github.io/synapse/latest/room_and_user_statistics.html.
-#
-stats:
- # Uncomment the following to disable room and user statistics. Note that doing
- # so may cause certain features (such as the room directory) not to work
- # correctly.
- #
- #enabled: false
-
-
-# Server Notices room configuration
-#
-# Uncomment this section to enable a room which can be used to send notices
-# from the server to users. It is a special room which cannot be left; notices
-# come from a special "notices" user id.
-#
-# If you uncomment this section, you *must* define the system_mxid_localpart
-# setting, which defines the id of the user which will be used to send the
-# notices.
-#
-# It's also possible to override the room name, the display name of the
-# "notices" user, and the avatar for the user.
-#
-#server_notices:
-# system_mxid_localpart: notices
-# system_mxid_display_name: "Server Notices"
-# system_mxid_avatar_url: "mxc://server.com/oumMVlgDnLYFaPVkExemNVVZ"
-# room_name: "Server Notices"
-
-
-
-# Uncomment to disable searching the public room list. When disabled
-# blocks searching local and remote room lists for local and remote
-# users by always returning an empty list for all queries.
-#
-#enable_room_list_search: false
-
-# The `alias_creation` option controls who's allowed to create aliases
-# on this server.
-#
-# The format of this option is a list of rules that contain globs that
-# match against user_id, room_id and the new alias (fully qualified with
-# server name). The action in the first rule that matches is taken,
-# which can currently either be "allow" or "deny".
-#
-# Missing user_id/room_id/alias fields default to "*".
-#
-# If no rules match the request is denied. An empty list means no one
-# can create aliases.
-#
-# Options for the rules include:
-#
-# user_id: Matches against the creator of the alias
-# alias: Matches against the alias being created
-# room_id: Matches against the room ID the alias is being pointed at
-# action: Whether to "allow" or "deny" the request if the rule matches
-#
-# The default is:
-#
-#alias_creation_rules:
-# - user_id: "*"
-# alias: "*"
-# room_id: "*"
-# action: allow
-
-# The `room_list_publication_rules` option controls who can publish and
-# which rooms can be published in the public room list.
-#
-# The format of this option is the same as that for
-# `alias_creation_rules`.
-#
-# If the room has one or more aliases associated with it, only one of
-# the aliases needs to match the alias rule. If there are no aliases
-# then only rules with `alias: *` match.
-#
-# If no rules match the request is denied. An empty list means no one
-# can publish rooms.
-#
-# Options for the rules include:
-#
-# user_id: Matches against the creator of the alias
-# room_id: Matches against the room ID being published
-# alias: Matches against any current local or canonical aliases
-# associated with the room
-# action: Whether to "allow" or "deny" the request if the rule matches
-#
-# The default is:
-#
-#room_list_publication_rules:
-# - user_id: "*"
-# alias: "*"
-# room_id: "*"
-# action: allow
-
-
-## Opentracing ##
-
-# These settings enable opentracing, which implements distributed tracing.
-# This allows you to observe the causal chains of events across servers
-# including requests, key lookups etc., across any server running
-# synapse or any other other services which supports opentracing
-# (specifically those implemented with Jaeger).
-#
-opentracing:
- # tracing is disabled by default. Uncomment the following line to enable it.
- #
- #enabled: true
-
- # The list of homeservers we wish to send and receive span contexts and span baggage.
- # See https://matrix-org.github.io/synapse/latest/opentracing.html.
- #
- # This is a list of regexes which are matched against the server_name of the
- # homeserver.
- #
- # By default, it is empty, so no servers are matched.
- #
- #homeserver_whitelist:
- # - ".*"
-
- # A list of the matrix IDs of users whose requests will always be traced,
- # even if the tracing system would otherwise drop the traces due to
- # probabilistic sampling.
- #
- # By default, the list is empty.
- #
- #force_tracing_for_users:
- # - "@user1:server_name"
- # - "@user2:server_name"
-
- # Jaeger can be configured to sample traces at different rates.
- # All configuration options provided by Jaeger can be set here.
- # Jaeger's configuration is mostly related to trace sampling which
- # is documented here:
- # https://www.jaegertracing.io/docs/latest/sampling/.
- #
- #jaeger_config:
- # sampler:
- # type: const
- # param: 1
- # logging:
- # false
-
-
-## Workers ##
-
-# Disables sending of outbound federation transactions on the main process.
-# Uncomment if using a federation sender worker.
-#
-#send_federation: false
-
-# It is possible to run multiple federation sender workers, in which case the
-# work is balanced across them.
-#
-# This configuration must be shared between all federation sender workers, and if
-# changed all federation sender workers must be stopped at the same time and then
-# started, to ensure that all instances are running with the same config (otherwise
-# events may be dropped).
-#
-#federation_sender_instances:
-# - federation_sender1
-
-# When using workers this should be a map from `worker_name` to the
-# HTTP replication listener of the worker, if configured.
-#
-#instance_map:
-# worker1:
-# host: localhost
-# port: 8034
-
-# Experimental: When using workers you can define which workers should
-# handle event persistence and typing notifications. Any worker
-# specified here must also be in the `instance_map`.
-#
-#stream_writers:
-# events: worker1
-# typing: worker1
-
-# The worker that is used to run background tasks (e.g. cleaning up expired
-# data). If not provided this defaults to the main process.
-#
-#run_background_tasks_on: worker1
-
-# A shared secret used by the replication APIs to authenticate HTTP requests
-# from workers.
-#
-# By default this is unused and traffic is not authenticated.
-#
-#worker_replication_secret: ""
-
-
-# Configuration for Redis when using workers. This *must* be enabled when
-# using workers (unless using old style direct TCP configuration).
-#
-redis:
- # Uncomment the below to enable Redis support.
- #
- #enabled: true
-
- # Optional host and port to use to connect to redis. Defaults to
- # localhost and 6379
- #
- #host: localhost
- #port: 6379
-
- # Optional password if configured on the Redis instance
- #
- #password: <secret_password>
-
-
-# vim:ft=yaml
diff --git a/apps/matrix/install.yaml b/apps/matrix/install.yaml
deleted file mode 100644
index 1519b86..0000000
--- a/apps/matrix/install.yaml
+++ /dev/null
@@ -1,230 +0,0 @@
-# TODO(giolekva): cleanup volumes
----
-apiVersion: v1
-kind: Namespace
-metadata:
- name: app-matrix
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
- creationTimestamp: null
- name: CreateConfigMaps
- namespace: app-matrix
-rules:
-- apiGroups:
- - ""
- resources:
- - configmaps
- verbs:
- - create
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
- creationTimestamp: null
- name: default-CreateConfigMaps
- namespace: app-matrix
-roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: Role
- name: CreateConfigMaps
-subjects:
-- kind: ServiceAccount
- name: default
- namespace: app-matrix
----
-apiVersion: v1
-kind: Service
-metadata:
- name: matrix
- namespace: app-matrix
-spec:
- type: ClusterIP
- selector:
- app: matrix
- ports:
- - name: http
- port: 80
- targetPort: http
- protocol: TCP
----
-apiVersion: networking.k8s.io/v1
-kind: Ingress
-metadata:
- name: ingress
- namespace: app-matrix
- annotations:
- cert-manager.io/cluster-issuer: "letsencrypt-prod"
- acme.cert-manager.io/http01-edit-in-place: "true"
-spec:
- ingressClassName: nginx
- tls:
- - hosts:
- - matrix.lekva.me
- secretName: cert-matrix.lekva.me
- rules:
- - host: matrix.lekva.me
- http:
- paths:
- - path: /
- pathType: Prefix
- backend:
- service:
- name: matrix
- port:
- name: http
----
-apiVersion: batch/v1
-kind: Job
-metadata:
- name: generate-config
- namespace: app-matrix
-spec:
- template:
- metadata:
- labels:
- app: generate-config
- spec:
- restartPolicy: OnFailure
- volumes:
- - name: data
- persistentVolumeClaim:
- claimName: matrix-data
- - name: config
- persistentVolumeClaim:
- claimName: matrix-config
- - name: homeserver-config
- persistentVolumeClaim:
- claimName: matrix-homeserver-config
- initContainers:
- - name: matrix
- image: matrixdotorg/synapse:v1.43.0
- imagePullPolicy: IfNotPresent
- ports:
- - name: http
- containerPort: 8008
- protocol: TCP
- env:
- - name: SYNAPSE_SERVER_NAME
- value: "lekva.me"
- - name: SYNAPSE_REPORT_STATS
- value: "no"
- - name: SYNAPSE_CONFIG_DIR
- value: "/data"
- - name: SYNAPSE_CONFIG_PATH
- value: "/data/homeserver.yaml"
- - name: SYNAPSE_DATA_DIR
- value: "/data"
- command: ["/start.py"]
- args: ["generate"]
- volumeMounts:
- - name: data
- mountPath: /data
- # - name: config
- # mountPath: /matrix-config
- - name: homeserver-config
- mountPath: /homeserver-config
- containers:
- - name: capture-config
- image: giolekva/capture-config:latest
- imagePullPolicy: Always
- command: ["capture-config"]
- args: ["--config=/data/homeserver.yaml", "--namespace=app-matrix", "--config-map-name=config"]
- volumeMounts:
- - name: data
- mountPath: /data
- # - name: config
- # mountPath: /matrix-config
- - name: homeserver-config
- mountPath: /homeserver-config
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: matrix
- namespace: app-matrix
-spec:
- selector:
- matchLabels:
- app: matrix
- replicas: 1
- template:
- metadata:
- labels:
- app: matrix
- spec:
- volumes:
- - name: data
- persistentVolumeClaim:
- claimName: matrix-data
- - name: config
- persistentVolumeClaim:
- claimName: matrix-config
- - name: homeserver-config
- configMap:
- name: config
- containers:
- - name: matrix
- image: matrixdotorg/synapse:v1.43.0
- imagePullPolicy: IfNotPresent
- ports:
- - name: http
- containerPort: 8008
- protocol: TCP
- env:
- - name: SYNAPSE_SERVER_NAME
- value: "lekva.me"
- - name: SYNAPSE_REPORT_STATS
- value: "no"
- - name: SYNAPSE_CONFIG_DIR
- value: "/data"
- - name: SYNAPSE_CONFIG_PATH
- value: "/homeserver-config/homeserver.yaml"
- - name: SYNAPSE_DATA_DIR
- value: "/data"
- command: ["/start.py"]
- volumeMounts:
- - name: data
- mountPath: /data
- # - name: config
- # mountPath: /matrix-config
- - name: homeserver-config
- mountPath: /homeserver-config
- readOnly: true
----
-apiVersion: v1
-kind: PersistentVolumeClaim
-metadata:
- name: matrix-data
- namespace: app-matrix
-spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 10Gi
----
-apiVersion: v1
-kind: PersistentVolumeClaim
-metadata:
- name: matrix-config
- namespace: app-matrix
-spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 10Gi
----
-apiVersion: v1
-kind: PersistentVolumeClaim
-metadata:
- name: matrix-homeserver-config
- namespace: app-matrix
-spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 10Gi
diff --git a/apps/pihole/docker.sh b/apps/pihole/docker.sh
deleted file mode 100644
index ffddec3..0000000
--- a/apps/pihole/docker.sh
+++ /dev/null
@@ -1,14 +0,0 @@
- # -p 8000:80 \
- # -e VIRTUAL_HOST=localhost:8000 \
-
-docker run -d -i \
- --name pihole \
- -p 53:53/tcp \
- -p 53:53/udp \
- -p 80:80 \
- -e TZ="Asia/Tbilisi" \
- -e WEBPASSWORD="1234" \
- -v $(pwd)/volume/etc/:/etc/pihole/ \
- -v $(pwd)/volume/dnsmasq.d/:/etc/dnsmasq.d/ \
- --dns=0.0.0.0 --dns=1.1.1.1 \
- pihole/pihole:latest
diff --git a/apps/pihole/pod.yaml b/apps/pihole/pod.yaml
deleted file mode 100644
index c52aebd..0000000
--- a/apps/pihole/pod.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-apiVersion: v1
-kind: Pod
-metadata:
- name: pihole
-spec:
- containers:
- - name: pihole
- image: giolekva/pihole:latest
- imagePullPolicy: Always
diff --git a/apps/pihole/run_docker.sh b/apps/pihole/run_docker.sh
deleted file mode 100644
index de9409a..0000000
--- a/apps/pihole/run_docker.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-
-# https://github.com/pi-hole/docker-pi-hole/blob/master/README.md
-
-# Note: ServerIP should be replaced with your external ip.
-docker run -d \
- --name pihole \
- -p 53:53/tcp -p 53:53/udp \
- -p 80:80 \
- -p 443:443 \
- -e TZ="America/Chicago" \
- -v "$(pwd)/etc-pihole/:/etc/pihole/" \
- -v "$(pwd)/etc-dnsmasq.d/:/etc/dnsmasq.d/" \
- --restart=unless-stopped \
- --hostname pi.hole \
- -e VIRTUAL_HOST="pi.hole" \
- -e PROXY_LOCATION="pi.hole" \
- -e ServerIP="127.0.0.1" \
- pihole/pihole:latest
-
-# --dns=127.0.0.1 --dns=1.1.1.1 \
-
-printf 'Starting up pihole container '
-for i in $(seq 1 20); do
- if [ "$(docker inspect -f "{{.State.Health.Status}}" pihole)" == "healthy" ] ; then
- printf ' OK'
- echo -e "\n$(docker logs pihole 2> /dev/null | grep 'password:') for your pi-hole: https://${IP}/admin/"
- exit 0
- else
- sleep 3
- printf '.'
- fi
-
- if [ $i -eq 20 ] ; then
- echo -e "\nTimed out waiting for Pi-hole start, consult check your container logs for more info (\`docker logs pihole\`)"
- exit 1
- fi
-done;
diff --git a/apps/vaultwarden/install.yaml b/apps/vaultwarden/install.yaml
deleted file mode 100644
index d2faede..0000000
--- a/apps/vaultwarden/install.yaml
+++ /dev/null
@@ -1,96 +0,0 @@
----
-apiVersion: v1
-kind: Namespace
-metadata:
- name: app-vault
----
-apiVersion: v1
-kind: PersistentVolumeClaim
-metadata:
- name: data
- namespace: app-vault
-spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 10Gi
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: server
- namespace: app-vault
-spec:
- selector:
- matchLabels:
- app: server
- replicas: 1
- template:
- metadata:
- labels:
- app: server
- spec:
- volumes:
- - name: data
- persistentVolumeClaim:
- claimName: data
- containers:
- - name: server
- image: vaultwarden/server:1.22.2
- imagePullPolicy: IfNotPresent
- env:
- - name: ROCKET_PORT
- value: "80"
- - name: DISABLE_ADMIN_TOKEN
- value: "true"
- - name: DOMAIN
- value: "https://vault.pcloud"
- ports:
- - name: http
- containerPort: 80
- protocol: TCP
- volumeMounts:
- - name: data
- mountPath: /data
----
-apiVersion: v1
-kind: Service
-metadata:
- name: server
- namespace: app-vault
-spec:
- type: ClusterIP
- selector:
- app: server
- ports:
- - name: http
- port: 80
- targetPort: http
- protocol: TCP
----
-apiVersion: networking.k8s.io/v1
-kind: Ingress
-metadata:
- name: ingress
- namespace: app-vault
- annotations:
- cert-manager.io/cluster-issuer: "selfsigned-ca"
- acme.cert-manager.io/http01-edit-in-place: "true"
-spec:
- ingressClassName: nginx-private
- tls:
- - hosts:
- - vault.pcloud
- secretName: cert-vault.pcloud
- rules:
- - host: vault.pcloud
- http:
- paths:
- - path: /
- pathType: Prefix
- backend:
- service:
- name: server
- port:
- name: http
diff --git a/apps/wireguard/.dockerignore b/apps/wireguard/.dockerignore
deleted file mode 100644
index ea65eb2..0000000
--- a/apps/wireguard/.dockerignore
+++ /dev/null
@@ -1,6 +0,0 @@
-.git
-docker-compose.yml
-Dockerfile
-LICENSE
-README
-wireguard/
diff --git a/apps/wireguard/Dockerfile b/apps/wireguard/Dockerfile
deleted file mode 100644
index 1d838c4..0000000
--- a/apps/wireguard/Dockerfile
+++ /dev/null
@@ -1,29 +0,0 @@
-FROM golang:1.14.1-alpine3.11 as builder
-
-ARG wg_go_tag=v0.0.20200320
-ARG wg_tools_tag=v1.0.20200513
-
-RUN apk add --update git build-base libmnl-dev iptables
-
-RUN git clone https://git.zx2c4.com/wireguard-go && \
- cd wireguard-go && \
- git checkout $wg_go_tag && \
- make && \
- make install
-
-ENV WITH_WGQUICK=yes
-RUN git clone https://git.zx2c4.com/wireguard-tools && \
- cd wireguard-tools && \
- git checkout $wg_tools_tag && \
- cd src && \
- make && \
- make install
-
-FROM alpine:3.11
-
-RUN apk add --no-cache --update bash libmnl iptables openresolv iproute2
-
-COPY --from=builder /usr/bin/wireguard-go /usr/bin/wg* /usr/bin/
-COPY entrypoint.sh /entrypoint.sh
-
-CMD ["/entrypoint.sh"]
diff --git a/apps/wireguard/LICENSE b/apps/wireguard/LICENSE
deleted file mode 100644
index e3759ca..0000000
--- a/apps/wireguard/LICENSE
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- wireguard-go-docker
- Copyright (C) 2018 Jordi Masip
-
- This program 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.
-
- This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- wireguard-go-docker Copyright (C) 2018 Jordi Masip
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/apps/wireguard/README.md b/apps/wireguard/README.md
deleted file mode 100644
index 7097a91..0000000
--- a/apps/wireguard/README.md
+++ /dev/null
@@ -1,201 +0,0 @@
-# wireguard-go docker
-
-## Setup
-
-First of all you need a key pair for the server. Use the following command to generate the public and private keys:
-
-```bash
-# Generate privatekey
-docker run --rm -i masipcat/wireguard-go wg genkey > privatekey
-
-# Generate publickey from privatekey
-docker run --rm -i masipcat/wireguard-go wg pubkey < privatekey > publickey
-```
-
-## Run server
-
-### Docker
-
-`docker-compose.yaml`
-```yaml
-version: '3.3'
-services:
- wireguard:
- image: masipcat/wireguard-go:latest
- cap_add:
- - NET_ADMIN
- sysctls:
- - net.ipv4.ip_forward=1
- volumes:
- - /dev/net/tun:/dev/net/tun
- # Folder with 'publickey', 'privatekey' and 'wg0.conf'
- - ./wireguard:/etc/wireguard
- environment:
- - WG_COLOR_MODE=always
- - LOG_LEVEL=info
- ports:
- - 51820:51820/udp
- # Uncomment the following line when 'AllowedIPs' is '0.0.0.0/0'
- # privileged: true
- restart: always
-```
-
-```
-docker-compose up -d
-```
-
-### Kubernetes
-
-Steps to deploy Wireguard-go to a k8s cluster:
-
-1. Set the `privatekey` for the wireguard server in the `Secret` object
-2. Add at least one peer in `wg0.conf`
-3. Run `kubectl apply -f wireguard.yaml` to deploy wireguard
-
-`wireguard.yaml`
-```yaml
-kind: Secret
-apiVersion: v1
-metadata:
- name: wg-secret
-type: Opaque
-data:
- # Generate and encode the server private key: `wg genkey | base64`
- privatekey: REPLACE_WITH_BASE64_PRIVKEY
----
-kind: ConfigMap
-apiVersion: v1
-metadata:
- name: wg-configmap
-data:
- wg0.conf: |
- [Interface]
- Address = 10.33.0.1/24
- ListenPort = 51820
- PostUp = wg set wg0 private-key /etc/wireguard/privatekey && iptables -t nat -A POSTROUTING -s 10.33.0.0/24 -o eth0 -j MASQUERADE
- PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
-
- # [Peer]
- # PublicKey =
- # AllowedIPs = 10.33.0.2/32
----
-kind: Service
-apiVersion: v1
-metadata:
- name: wireguard
- labels:
- app: wireguard
-spec:
- type: LoadBalancer
- ports:
- - name: wg
- protocol: UDP
- port: 51820
- targetPort: 51820
- selector:
- app: wireguard
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: wireguard
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: wireguard
- template:
- metadata:
- labels:
- app: wireguard
- spec:
- initContainers:
- - name: sysctls
- image: busybox
- command:
- - sh
- - -c
- - sysctl -w net.ipv4.ip_forward=1 && sysctl -w net.ipv4.conf.all.forwarding=1
- securityContext:
- capabilities:
- add:
- - NET_ADMIN
- privileged: true
- containers:
- - name: wireguard
- image: masipcat/wireguard-go:latest
- command:
- - sh
- - -c
- - echo "Public key '$(wg pubkey < /etc/wireguard/privatekey)'" && /entrypoint.sh
- ports:
- - containerPort: 51820
- protocol: UDP
- name: wireguard
- env:
- - name: LOG_LEVEL
- value: info
- securityContext:
- capabilities:
- add:
- - NET_ADMIN
- privileged: true
- resources:
- requests:
- memory: 64Mi
- cpu: "100m"
- limits:
- memory: 256Mi
- volumeMounts:
- - name: cfgmap
- mountPath: /etc/wireguard/wg0.conf
- subPath: wg0.conf
- - name: secret
- mountPath: /etc/wireguard/privatekey
- subPath: privatekey
- volumes:
- - name: cfgmap
- configMap:
- name: wg-configmap
- - name: secret
- secret:
- secretName: wg-secret
-```
-
-## Client config examples
-
-### Basic
-
-`/etc/wireguard/wg0.conf`
-```conf
-[Interface]
-# Assign you an IP (that's not in use) and add it to server configmap
-Address = 10.33.0.2/32
-# generate private key using `wg genkey`
-PrivateKey = <your private key>
-
-[Peer]
-# Wireguard server public key
-PublicKey = AbC...XyZ=
-# LoadBalancer IP (replace with your LoadBalancer ip)
-Endpoint = 1.2.3.4:51820
-AllowedIPs = 0.0.0.0/0
-PersistentKeepalive = 25
-```
-
-### Basic + kube-dns
-
-(This example only works with OS that use `openresolv`)
-
-`/etc/wireguard/wg0.conf`
-```conf
-[Interface]
-...
-# Configure kube-dns ip address as dns resolver in you local machine (resolves names like 'your-service.default.svc.cluster.local')
-PostUp = printf "nameserver 10.90.0.5\nsearch default.svc.cluster.local svc.cluster.local cluster.local" | resolvconf -a %i
-
-[Peer]
-...
-# Change AllowedIPs to 10.0.0.0/8 if you only want to connect to k8s pods/services
-AllowedIPs = 10.0.0.0/8
-```
diff --git a/apps/wireguard/client.conf b/apps/wireguard/client.conf
deleted file mode 100644
index b1b2bb9..0000000
--- a/apps/wireguard/client.conf
+++ /dev/null
@@ -1,17 +0,0 @@
-[Interface]
-# Assign you an IP (that's not in use) and add it to server configmap
-Address = 10.0.0.2/24
-# generate private key using `wg genkey`
-PrivateKey = WKWEjmmiOgZfhlS4LSmQpG0FEo5uvUc27i+ysTOqwmQ=
-#PostUp = iptables -A FORWARD -o %i -j ACCEPT
-#PostDown = iptables -D FORWARD -o %i -j ACCEPT
-DNS = 8.8.8.8
-
-
-[Peer]
-# Wireguard server public key
-PublicKey = Wq2JWFJI4aU1Mhoy5+bKTTWN5Lm84rpj61dPGNsUWnw=
-# LoadBalancer IP (replace with your LoadBalancer ip)
-Endpoint = 192.168.0.111:51820
-AllowedIPs = 0.0.0.0/0
-PersistentKeepalive = 25
\ No newline at end of file
diff --git a/apps/wireguard/docker-compose.yml b/apps/wireguard/docker-compose.yml
deleted file mode 100644
index c2ac180..0000000
--- a/apps/wireguard/docker-compose.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-version: '3.3'
-services:
- wireguard:
- image: masipcat/wireguard-go:latest
- cap_add:
- - NET_ADMIN
- sysctls:
- - net.ipv4.ip_forward=1
- volumes:
- - /dev/net/tun:/dev/net/tun
- - ./wireguard:/etc/wireguard
- environment:
- - WG_COLOR_MODE=always
- - LOG_LEVEL=info
- ports:
- - 51820:51820/udp
- # Uncomment the following line when 'AllowedIPs' is '0.0.0.0/0'
- # privileged: true
- restart: always
diff --git a/apps/wireguard/entrypoint.sh b/apps/wireguard/entrypoint.sh
deleted file mode 100755
index 0390b69..0000000
--- a/apps/wireguard/entrypoint.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-finish () {
- wg-quick down wg0
- exit 0
-}
-trap finish SIGTERM SIGINT SIGQUIT
-
-wg-quick up /etc/wireguard/wg0.conf
-
-# Inifinite sleep
-while true; do
- sleep 86400
- wait $!
-done
diff --git a/apps/wireguard/install.yaml b/apps/wireguard/install.yaml
deleted file mode 100644
index 5864424..0000000
--- a/apps/wireguard/install.yaml
+++ /dev/null
@@ -1,115 +0,0 @@
-kind: Secret
-apiVersion: v1
-metadata:
- name: wg-secret
- namespace: wireguard
-type: Opaque
-data:
- # Generate and encode the server private key: `wg genkey | base64`
- privatekey: Z0hnaVdNdDJjbzhKQ2JyT05HWnlLTEFpYnVKaUJRdFlUZzJ0RlJkS1NrST0K
----
-kind: ConfigMap
-apiVersion: v1
-metadata:
- name: wg-configmap
- namespace: wireguard
-data:
- wg0.conf: |
- [Interface]
- Address = 10.0.0.1/24
- ListenPort = 51820
- PostUp = wg set wg0 private-key /etc/wireguard/privatekey; iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
- # PostUp = wg set wg0 private-key /etc/wireguard/privatekey && iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -o eth0 -j MASQUERADE
- # PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
- # PostUp = wg set wg0 private-key /etc/wireguard/privatekey && iptables -A FORWARD -i %i -j ACCEPT && iptables -A FORWARD -o %i -j ACCEPT && iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
- # PostDown = iptables -D FORWARD -i %i -j ACCEPT && iptables -D FORWARD -o %i -j ACCEPT && iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
- DNS = 8.8.8.8
-
- [Peer]
- PublicKey = ES2NAzBw/ZVWu14blA2/UiQBVfeuxZpstbZbkEAuzUo=
- AllowedIPs = 10.0.0.2/24
----
-kind: Service
-apiVersion: v1
-metadata:
- name: wireguard
- namespace: wireguard
- labels:
- app: wireguard
-spec:
- type: LoadBalancer
- ports:
- - name: wg
- protocol: UDP
- port: 51820
- targetPort: 51820
- selector:
- app: wireguard
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: wireguard
- namespace: wireguard
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: wireguard
- template:
- metadata:
- labels:
- app: wireguard
- spec:
- initContainers:
- - name: sysctls
- image: busybox
- command:
- - sh
- - -c
- - sysctl -w net.ipv4.ip_forward=1 && sysctl -w net.ipv4.conf.all.forwarding=1
- securityContext:
- capabilities:
- add:
- - NET_ADMIN
- privileged: true
- containers:
- - name: wireguard
- image: giolekva/wireguard:latest
- command:
- - sh
- - -c
- - echo "Public key '$(wg pubkey < /etc/wireguard/privatekey)'" && sysctl -w net.ipv4.ip_forward=1 && sysctl -w net.ipv4.conf.all.forwarding=1 && /entrypoint.sh
- ports:
- - containerPort: 51820
- protocol: UDP
- name: wireguard
- env:
- - name: LOG_LEVEL
- value: debug
- securityContext:
- capabilities:
- add:
- - NET_ADMIN
- privileged: true
- resources:
- requests:
- memory: 64Mi
- cpu: "100m"
- limits:
- memory: 256Mi
- volumeMounts:
- - name: cfgmap
- mountPath: /etc/wireguard/wg0.conf
- subPath: wg0.conf
- - name: secret
- mountPath: /etc/wireguard/privatekey
- subPath: privatekey
- volumes:
- - name: cfgmap
- configMap:
- name: wg-configmap
- - name: secret
- secret:
- secretName: wg-secret
\ No newline at end of file
diff --git a/apps/wireguard/wireguard/privatekey b/apps/wireguard/wireguard/privatekey
deleted file mode 100644
index 0d049d3..0000000
--- a/apps/wireguard/wireguard/privatekey
+++ /dev/null
@@ -1 +0,0 @@
-<placeholder>
\ No newline at end of file
diff --git a/apps/wireguard/wireguard/publickey b/apps/wireguard/wireguard/publickey
deleted file mode 100644
index 0d049d3..0000000
--- a/apps/wireguard/wireguard/publickey
+++ /dev/null
@@ -1 +0,0 @@
-<placeholder>
\ No newline at end of file
diff --git a/apps/wireguard/wireguard/wg0.conf b/apps/wireguard/wireguard/wg0.conf
deleted file mode 100644
index 03d4c4d..0000000
--- a/apps/wireguard/wireguard/wg0.conf
+++ /dev/null
@@ -1,10 +0,0 @@
-[Interface]
-Address = 10.99.0.1/24
-ListenPort = 51820
-PostUp = wg set wg0 private-key /etc/wireguard/privatekey && iptables -t nat -A POSTROUTING -s 10.99.0.0/24 -o eth0 -j MASQUERADE
-PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
-
-# [Peer]
-# PublicKey = <client's publickey>
-# AllowedIPs = 10.99.0.2/32
-
diff --git a/apps/alps/Dockerfile b/archive/apps/alps/Dockerfile
similarity index 100%
rename from apps/alps/Dockerfile
rename to archive/apps/alps/Dockerfile
diff --git a/apps/alps/Makefile b/archive/apps/alps/Makefile
similarity index 100%
rename from apps/alps/Makefile
rename to archive/apps/alps/Makefile
diff --git a/apps/alps/install.yaml b/archive/apps/alps/install.yaml
similarity index 100%
rename from apps/alps/install.yaml
rename to archive/apps/alps/install.yaml
diff --git a/apps/client/hello/Makefile b/archive/apps/client/hello/Makefile
similarity index 100%
rename from apps/client/hello/Makefile
rename to archive/apps/client/hello/Makefile
diff --git a/apps/client/hello/call_host/Cargo.lock b/archive/apps/client/hello/call_host/Cargo.lock
similarity index 100%
rename from apps/client/hello/call_host/Cargo.lock
rename to archive/apps/client/hello/call_host/Cargo.lock
diff --git a/apps/client/hello/call_host/Cargo.toml b/archive/apps/client/hello/call_host/Cargo.toml
similarity index 100%
rename from apps/client/hello/call_host/Cargo.toml
rename to archive/apps/client/hello/call_host/Cargo.toml
diff --git a/apps/client/hello/call_host/src/lib.rs b/archive/apps/client/hello/call_host/src/lib.rs
similarity index 100%
rename from apps/client/hello/call_host/src/lib.rs
rename to archive/apps/client/hello/call_host/src/lib.rs
diff --git a/apps/client/hello/go.mod b/archive/apps/client/hello/go.mod
similarity index 100%
rename from apps/client/hello/go.mod
rename to archive/apps/client/hello/go.mod
diff --git a/apps/client/hello/go.sum b/archive/apps/client/hello/go.sum
similarity index 100%
rename from apps/client/hello/go.sum
rename to archive/apps/client/hello/go.sum
diff --git a/apps/client/hello/hello_rust/Cargo.lock b/archive/apps/client/hello/hello_rust/Cargo.lock
similarity index 100%
rename from apps/client/hello/hello_rust/Cargo.lock
rename to archive/apps/client/hello/hello_rust/Cargo.lock
diff --git a/apps/client/hello/hello_rust/Cargo.toml b/archive/apps/client/hello/hello_rust/Cargo.toml
similarity index 100%
rename from apps/client/hello/hello_rust/Cargo.toml
rename to archive/apps/client/hello/hello_rust/Cargo.toml
diff --git a/apps/client/hello/hello_rust/src/main.rs b/archive/apps/client/hello/hello_rust/src/main.rs
similarity index 100%
rename from apps/client/hello/hello_rust/src/main.rs
rename to archive/apps/client/hello/hello_rust/src/main.rs
diff --git a/apps/client/hello/main.go b/archive/apps/client/hello/main.go
similarity index 100%
rename from apps/client/hello/main.go
rename to archive/apps/client/hello/main.go
diff --git a/apps/dgraph/Dockerfile b/archive/apps/dgraph/Dockerfile
similarity index 100%
rename from apps/dgraph/Dockerfile
rename to archive/apps/dgraph/Dockerfile
diff --git a/apps/dgraph/install-single-server.yaml b/archive/apps/dgraph/install-single-server.yaml
similarity index 100%
rename from apps/dgraph/install-single-server.yaml
rename to archive/apps/dgraph/install-single-server.yaml
diff --git a/apps/dgraph/install.sh b/archive/apps/dgraph/install.sh
similarity index 100%
rename from apps/dgraph/install.sh
rename to archive/apps/dgraph/install.sh
diff --git a/apps/dgraph/schema.graphql b/archive/apps/dgraph/schema.graphql
similarity index 100%
rename from apps/dgraph/schema.graphql
rename to archive/apps/dgraph/schema.graphql
diff --git a/apps/face_detection/Dockerfile b/archive/apps/face_detection/Dockerfile
similarity index 100%
rename from apps/face_detection/Dockerfile
rename to archive/apps/face_detection/Dockerfile
diff --git a/apps/face_detection/chart/Chart.yaml b/archive/apps/face_detection/chart/Chart.yaml
similarity index 100%
rename from apps/face_detection/chart/Chart.yaml
rename to archive/apps/face_detection/chart/Chart.yaml
diff --git a/apps/face_detection/chart/README.md b/archive/apps/face_detection/chart/README.md
similarity index 100%
rename from apps/face_detection/chart/README.md
rename to archive/apps/face_detection/chart/README.md
diff --git a/apps/face_detection/chart/templates/pcloud/Actions.yaml b/archive/apps/face_detection/chart/templates/pcloud/Actions.yaml
similarity index 100%
rename from apps/face_detection/chart/templates/pcloud/Actions.yaml
rename to archive/apps/face_detection/chart/templates/pcloud/Actions.yaml
diff --git a/apps/face_detection/chart/templates/pcloud/Schema.yaml b/archive/apps/face_detection/chart/templates/pcloud/Schema.yaml
similarity index 100%
rename from apps/face_detection/chart/templates/pcloud/Schema.yaml
rename to archive/apps/face_detection/chart/templates/pcloud/Schema.yaml
diff --git a/apps/face_detection/chart/templates/pcloud/Triggers.yaml b/archive/apps/face_detection/chart/templates/pcloud/Triggers.yaml
similarity index 100%
rename from apps/face_detection/chart/templates/pcloud/Triggers.yaml
rename to archive/apps/face_detection/chart/templates/pcloud/Triggers.yaml
diff --git a/apps/face_detection/chart/values.yaml b/archive/apps/face_detection/chart/values.yaml
similarity index 100%
rename from apps/face_detection/chart/values.yaml
rename to archive/apps/face_detection/chart/values.yaml
diff --git a/apps/face_detection/deploy.yaml b/archive/apps/face_detection/deploy.yaml
similarity index 100%
rename from apps/face_detection/deploy.yaml
rename to archive/apps/face_detection/deploy.yaml
diff --git a/apps/face_detection/haar.py b/archive/apps/face_detection/haar.py
similarity index 100%
rename from apps/face_detection/haar.py
rename to archive/apps/face_detection/haar.py
diff --git a/apps/face_detection/haarcascade_frontalface_default.xml b/archive/apps/face_detection/haarcascade_frontalface_default.xml
similarity index 100%
rename from apps/face_detection/haarcascade_frontalface_default.xml
rename to archive/apps/face_detection/haarcascade_frontalface_default.xml
diff --git a/apps/face_detection/main.py b/archive/apps/face_detection/main.py
similarity index 100%
rename from apps/face_detection/main.py
rename to archive/apps/face_detection/main.py
diff --git a/apps/face_detection/mtcnn.py b/archive/apps/face_detection/mtcnn.py
similarity index 100%
rename from apps/face_detection/mtcnn.py
rename to archive/apps/face_detection/mtcnn.py
diff --git a/apps/minio/chart/Chart.lock b/archive/apps/minio/chart/Chart.lock
similarity index 100%
rename from apps/minio/chart/Chart.lock
rename to archive/apps/minio/chart/Chart.lock
diff --git a/apps/minio/chart/Chart.yaml b/archive/apps/minio/chart/Chart.yaml
similarity index 100%
rename from apps/minio/chart/Chart.yaml
rename to archive/apps/minio/chart/Chart.yaml
diff --git a/apps/minio/chart/README.md b/archive/apps/minio/chart/README.md
similarity index 100%
rename from apps/minio/chart/README.md
rename to archive/apps/minio/chart/README.md
diff --git a/apps/minio/chart/charts/minio-5.0.25.tgz b/archive/apps/minio/chart/charts/minio-5.0.25.tgz
similarity index 100%
rename from apps/minio/chart/charts/minio-5.0.25.tgz
rename to archive/apps/minio/chart/charts/minio-5.0.25.tgz
Binary files differ
diff --git a/apps/minio/chart/templates/configmap.yaml b/archive/apps/minio/chart/templates/configmap.yaml
similarity index 100%
rename from apps/minio/chart/templates/configmap.yaml
rename to archive/apps/minio/chart/templates/configmap.yaml
diff --git a/apps/minio/chart/templates/credentials.yaml b/archive/apps/minio/chart/templates/credentials.yaml
similarity index 100%
rename from apps/minio/chart/templates/credentials.yaml
rename to archive/apps/minio/chart/templates/credentials.yaml
diff --git a/apps/minio/chart/templates/ingress.yaml b/archive/apps/minio/chart/templates/ingress.yaml
similarity index 100%
rename from apps/minio/chart/templates/ingress.yaml
rename to archive/apps/minio/chart/templates/ingress.yaml
diff --git a/apps/minio/chart/templates/pcloud/Actions.yaml b/archive/apps/minio/chart/templates/pcloud/Actions.yaml
similarity index 100%
rename from apps/minio/chart/templates/pcloud/Actions.yaml
rename to archive/apps/minio/chart/templates/pcloud/Actions.yaml
diff --git a/apps/minio/chart/values.yaml b/archive/apps/minio/chart/values.yaml
similarity index 100%
rename from apps/minio/chart/values.yaml
rename to archive/apps/minio/chart/values.yaml
diff --git a/apps/minio/importer/chart/Chart.yaml b/archive/apps/minio/importer/chart/Chart.yaml
similarity index 100%
rename from apps/minio/importer/chart/Chart.yaml
rename to archive/apps/minio/importer/chart/Chart.yaml
diff --git a/apps/minio/importer/chart/README.md b/archive/apps/minio/importer/chart/README.md
similarity index 100%
rename from apps/minio/importer/chart/README.md
rename to archive/apps/minio/importer/chart/README.md
diff --git a/apps/minio/importer/chart/templates/deployment.yaml b/archive/apps/minio/importer/chart/templates/deployment.yaml
similarity index 100%
rename from apps/minio/importer/chart/templates/deployment.yaml
rename to archive/apps/minio/importer/chart/templates/deployment.yaml
diff --git a/apps/minio/importer/chart/templates/pcloud/Init.yaml b/archive/apps/minio/importer/chart/templates/pcloud/Init.yaml
similarity index 100%
rename from apps/minio/importer/chart/templates/pcloud/Init.yaml
rename to archive/apps/minio/importer/chart/templates/pcloud/Init.yaml
diff --git a/apps/minio/importer/chart/templates/pcloud/Schema.yaml b/archive/apps/minio/importer/chart/templates/pcloud/Schema.yaml
similarity index 100%
rename from apps/minio/importer/chart/templates/pcloud/Schema.yaml
rename to archive/apps/minio/importer/chart/templates/pcloud/Schema.yaml
diff --git a/apps/minio/importer/chart/templates/service.yaml b/archive/apps/minio/importer/chart/templates/service.yaml
similarity index 100%
rename from apps/minio/importer/chart/templates/service.yaml
rename to archive/apps/minio/importer/chart/templates/service.yaml
diff --git a/apps/minio/importer/chart/values.yaml b/archive/apps/minio/importer/chart/values.yaml
similarity index 100%
rename from apps/minio/importer/chart/values.yaml
rename to archive/apps/minio/importer/chart/values.yaml
diff --git a/apps/minio/importer/importer.go b/archive/apps/minio/importer/importer.go
similarity index 100%
rename from apps/minio/importer/importer.go
rename to archive/apps/minio/importer/importer.go
diff --git a/apps/minio/importer/importer_test.go b/archive/apps/minio/importer/importer_test.go
similarity index 100%
rename from apps/minio/importer/importer_test.go
rename to archive/apps/minio/importer/importer_test.go
diff --git a/apps/minio/importer/install.yaml b/archive/apps/minio/importer/install.yaml
similarity index 100%
rename from apps/minio/importer/install.yaml
rename to archive/apps/minio/importer/install.yaml
diff --git a/apps/minio/importer/main.go b/archive/apps/minio/importer/main.go
similarity index 100%
rename from apps/minio/importer/main.go
rename to archive/apps/minio/importer/main.go
diff --git a/apps/photos-ui/chart/Chart.yaml b/archive/apps/photos-ui/chart/Chart.yaml
similarity index 100%
rename from apps/photos-ui/chart/Chart.yaml
rename to archive/apps/photos-ui/chart/Chart.yaml
diff --git a/apps/photos-ui/chart/README.md b/archive/apps/photos-ui/chart/README.md
similarity index 100%
rename from apps/photos-ui/chart/README.md
rename to archive/apps/photos-ui/chart/README.md
diff --git a/apps/photos-ui/chart/templates/install.yaml b/archive/apps/photos-ui/chart/templates/install.yaml
similarity index 100%
rename from apps/photos-ui/chart/templates/install.yaml
rename to archive/apps/photos-ui/chart/templates/install.yaml
diff --git a/apps/photos-ui/chart/values.yaml b/archive/apps/photos-ui/chart/values.yaml
similarity index 100%
rename from apps/photos-ui/chart/values.yaml
rename to archive/apps/photos-ui/chart/values.yaml
diff --git a/apps/photos-ui/gallery.html b/archive/apps/photos-ui/gallery.html
similarity index 100%
rename from apps/photos-ui/gallery.html
rename to archive/apps/photos-ui/gallery.html
diff --git a/apps/photos-ui/main.go b/archive/apps/photos-ui/main.go
similarity index 100%
rename from apps/photos-ui/main.go
rename to archive/apps/photos-ui/main.go
diff --git a/apps/photos-ui/photo.html b/archive/apps/photos-ui/photo.html
similarity index 100%
rename from apps/photos-ui/photo.html
rename to archive/apps/photos-ui/photo.html
diff --git a/apps/photos-ui/photos_ui.runfiles_manifest b/archive/apps/photos-ui/photos_ui.runfiles_manifest
similarity index 100%
rename from apps/photos-ui/photos_ui.runfiles_manifest
rename to archive/apps/photos-ui/photos_ui.runfiles_manifest
diff --git a/apps/photos-ui/static/photos.js b/archive/apps/photos-ui/static/photos.js
similarity index 100%
rename from apps/photos-ui/static/photos.js
rename to archive/apps/photos-ui/static/photos.js
diff --git a/core/api/Dockerfile b/archive/core/api/Dockerfile
similarity index 100%
rename from core/api/Dockerfile
rename to archive/core/api/Dockerfile
diff --git a/core/api/chart/Chart.yaml b/archive/core/api/chart/Chart.yaml
similarity index 100%
rename from core/api/chart/Chart.yaml
rename to archive/core/api/chart/Chart.yaml
diff --git a/core/api/chart/README.md b/archive/core/api/chart/README.md
similarity index 100%
rename from core/api/chart/README.md
rename to archive/core/api/chart/README.md
diff --git a/core/api/chart/templates/deployment.yaml b/archive/core/api/chart/templates/deployment.yaml
similarity index 100%
rename from core/api/chart/templates/deployment.yaml
rename to archive/core/api/chart/templates/deployment.yaml
diff --git a/core/api/chart/templates/service.yaml b/archive/core/api/chart/templates/service.yaml
similarity index 100%
rename from core/api/chart/templates/service.yaml
rename to archive/core/api/chart/templates/service.yaml
diff --git a/core/api/chart/values.yaml b/archive/core/api/chart/values.yaml
similarity index 100%
rename from core/api/chart/values.yaml
rename to archive/core/api/chart/values.yaml
diff --git a/core/api/go.mod b/archive/core/api/go.mod
similarity index 100%
rename from core/api/go.mod
rename to archive/core/api/go.mod
diff --git a/core/api/go.sum b/archive/core/api/go.sum
similarity index 100%
rename from core/api/go.sum
rename to archive/core/api/go.sum
diff --git a/core/api/main.go b/archive/core/api/main.go
similarity index 100%
rename from core/api/main.go
rename to archive/core/api/main.go
diff --git a/core/api/schema/dgraph_schema_store.go b/archive/core/api/schema/dgraph_schema_store.go
similarity index 100%
rename from core/api/schema/dgraph_schema_store.go
rename to archive/core/api/schema/dgraph_schema_store.go
diff --git a/core/api/schema/schema.go b/archive/core/api/schema/schema.go
similarity index 100%
rename from core/api/schema/schema.go
rename to archive/core/api/schema/schema.go
diff --git a/core/api/tests/query_test.go b/archive/core/api/tests/query_test.go
similarity index 100%
rename from core/api/tests/query_test.go
rename to archive/core/api/tests/query_test.go
diff --git a/core/appmanager/Dockerfile b/archive/core/appmanager/Dockerfile
similarity index 100%
rename from core/appmanager/Dockerfile
rename to archive/core/appmanager/Dockerfile
diff --git a/core/appmanager/actions.go b/archive/core/appmanager/actions.go
similarity index 100%
rename from core/appmanager/actions.go
rename to archive/core/appmanager/actions.go
diff --git a/core/appmanager/chart/Chart.yaml b/archive/core/appmanager/chart/Chart.yaml
similarity index 100%
rename from core/appmanager/chart/Chart.yaml
rename to archive/core/appmanager/chart/Chart.yaml
diff --git a/core/appmanager/chart/README.md b/archive/core/appmanager/chart/README.md
similarity index 100%
rename from core/appmanager/chart/README.md
rename to archive/core/appmanager/chart/README.md
diff --git a/core/appmanager/chart/templates/cluster-role-binding.yaml b/archive/core/appmanager/chart/templates/cluster-role-binding.yaml
similarity index 100%
rename from core/appmanager/chart/templates/cluster-role-binding.yaml
rename to archive/core/appmanager/chart/templates/cluster-role-binding.yaml
diff --git a/core/appmanager/chart/templates/cluster-role.yaml b/archive/core/appmanager/chart/templates/cluster-role.yaml
similarity index 100%
rename from core/appmanager/chart/templates/cluster-role.yaml
rename to archive/core/appmanager/chart/templates/cluster-role.yaml
diff --git a/core/appmanager/chart/templates/ingress.yaml b/archive/core/appmanager/chart/templates/ingress.yaml
similarity index 100%
rename from core/appmanager/chart/templates/ingress.yaml
rename to archive/core/appmanager/chart/templates/ingress.yaml
diff --git a/core/appmanager/chart/templates/service.yaml b/archive/core/appmanager/chart/templates/service.yaml
similarity index 100%
rename from core/appmanager/chart/templates/service.yaml
rename to archive/core/appmanager/chart/templates/service.yaml
diff --git a/core/appmanager/chart/templates/statefulset.yaml b/archive/core/appmanager/chart/templates/statefulset.yaml
similarity index 100%
rename from core/appmanager/chart/templates/statefulset.yaml
rename to archive/core/appmanager/chart/templates/statefulset.yaml
diff --git a/core/appmanager/chart/values.yaml b/archive/core/appmanager/chart/values.yaml
similarity index 100%
rename from core/appmanager/chart/values.yaml
rename to archive/core/appmanager/chart/values.yaml
diff --git a/core/appmanager/cmd/main.go b/archive/core/appmanager/cmd/main.go
similarity index 100%
rename from core/appmanager/cmd/main.go
rename to archive/core/appmanager/cmd/main.go
diff --git a/core/appmanager/go.mod b/archive/core/appmanager/go.mod
similarity index 100%
rename from core/appmanager/go.mod
rename to archive/core/appmanager/go.mod
diff --git a/core/appmanager/go.sum b/archive/core/appmanager/go.sum
similarity index 100%
rename from core/appmanager/go.sum
rename to archive/core/appmanager/go.sum
diff --git a/core/appmanager/helm.go b/archive/core/appmanager/helm.go
similarity index 100%
rename from core/appmanager/helm.go
rename to archive/core/appmanager/helm.go
diff --git a/core/appmanager/installer.go b/archive/core/appmanager/installer.go
similarity index 100%
rename from core/appmanager/installer.go
rename to archive/core/appmanager/installer.go
diff --git a/core/appmanager/launcher.go b/archive/core/appmanager/launcher.go
similarity index 100%
rename from core/appmanager/launcher.go
rename to archive/core/appmanager/launcher.go
diff --git a/core/appmanager/manager.go b/archive/core/appmanager/manager.go
similarity index 100%
rename from core/appmanager/manager.go
rename to archive/core/appmanager/manager.go
diff --git a/core/appmanager/schema.go b/archive/core/appmanager/schema.go
similarity index 100%
rename from core/appmanager/schema.go
rename to archive/core/appmanager/schema.go
diff --git a/core/appmanager/triggers.go b/archive/core/appmanager/triggers.go
similarity index 100%
rename from core/appmanager/triggers.go
rename to archive/core/appmanager/triggers.go
diff --git a/core/appmanager/triggers_test.go b/archive/core/appmanager/triggers_test.go
similarity index 100%
rename from core/appmanager/triggers_test.go
rename to archive/core/appmanager/triggers_test.go
diff --git a/core/client/.gitignore b/archive/core/client/.gitignore
similarity index 100%
rename from core/client/.gitignore
rename to archive/core/client/.gitignore
diff --git a/core/client/Makefile b/archive/core/client/Makefile
similarity index 100%
rename from core/client/Makefile
rename to archive/core/client/Makefile
diff --git a/core/client/android/.gitignore b/archive/core/client/android/.gitignore
similarity index 100%
rename from core/client/android/.gitignore
rename to archive/core/client/android/.gitignore
diff --git a/core/client/android/app/.gitignore b/archive/core/client/android/app/.gitignore
similarity index 100%
rename from core/client/android/app/.gitignore
rename to archive/core/client/android/app/.gitignore
diff --git a/core/client/android/app/build.gradle b/archive/core/client/android/app/build.gradle
similarity index 100%
rename from core/client/android/app/build.gradle
rename to archive/core/client/android/app/build.gradle
diff --git a/core/client/android/app/proguard-rules.pro b/archive/core/client/android/app/proguard-rules.pro
similarity index 100%
rename from core/client/android/app/proguard-rules.pro
rename to archive/core/client/android/app/proguard-rules.pro
diff --git a/core/client/android/build.gradle b/archive/core/client/android/build.gradle
similarity index 100%
rename from core/client/android/build.gradle
rename to archive/core/client/android/build.gradle
diff --git a/core/client/android/gradle.properties b/archive/core/client/android/gradle.properties
similarity index 100%
rename from core/client/android/gradle.properties
rename to archive/core/client/android/gradle.properties
diff --git a/core/client/android/gradle/wrapper/gradle-wrapper.jar b/archive/core/client/android/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from core/client/android/gradle/wrapper/gradle-wrapper.jar
rename to archive/core/client/android/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/core/client/android/gradle/wrapper/gradle-wrapper.properties b/archive/core/client/android/gradle/wrapper/gradle-wrapper.properties
similarity index 100%
rename from core/client/android/gradle/wrapper/gradle-wrapper.properties
rename to archive/core/client/android/gradle/wrapper/gradle-wrapper.properties
diff --git a/core/client/android/gradlew b/archive/core/client/android/gradlew
similarity index 100%
rename from core/client/android/gradlew
rename to archive/core/client/android/gradlew
diff --git a/core/client/android/gradlew.bat b/archive/core/client/android/gradlew.bat
similarity index 100%
rename from core/client/android/gradlew.bat
rename to archive/core/client/android/gradlew.bat
diff --git a/core/client/android/settings.gradle b/archive/core/client/android/settings.gradle
similarity index 100%
rename from core/client/android/settings.gradle
rename to archive/core/client/android/settings.gradle
diff --git a/core/client/cmd/pcloud/app.go b/archive/core/client/cmd/pcloud/app.go
similarity index 100%
rename from core/client/cmd/pcloud/app.go
rename to archive/core/client/cmd/pcloud/app.go
diff --git a/core/client/cmd/pcloud/app_android.go b/archive/core/client/cmd/pcloud/app_android.go
similarity index 100%
rename from core/client/cmd/pcloud/app_android.go
rename to archive/core/client/cmd/pcloud/app_android.go
diff --git a/core/client/cmd/pcloud/app_macos.go b/archive/core/client/cmd/pcloud/app_macos.go
similarity index 100%
rename from core/client/cmd/pcloud/app_macos.go
rename to archive/core/client/cmd/pcloud/app_macos.go
diff --git a/core/client/cmd/pcloud/callbacks_android.go b/archive/core/client/cmd/pcloud/callbacks_android.go
similarity index 100%
rename from core/client/cmd/pcloud/callbacks_android.go
rename to archive/core/client/cmd/pcloud/callbacks_android.go
diff --git a/core/client/cmd/pcloud/client.go b/archive/core/client/cmd/pcloud/client.go
similarity index 100%
rename from core/client/cmd/pcloud/client.go
rename to archive/core/client/cmd/pcloud/client.go
diff --git a/core/client/cmd/pcloud/config.go b/archive/core/client/cmd/pcloud/config.go
similarity index 100%
rename from core/client/cmd/pcloud/config.go
rename to archive/core/client/cmd/pcloud/config.go
diff --git a/core/client/cmd/pcloud/main.go b/archive/core/client/cmd/pcloud/main.go
similarity index 100%
rename from core/client/cmd/pcloud/main.go
rename to archive/core/client/cmd/pcloud/main.go
diff --git a/core/client/cmd/pcloud/nebula.go b/archive/core/client/cmd/pcloud/nebula.go
similarity index 100%
rename from core/client/cmd/pcloud/nebula.go
rename to archive/core/client/cmd/pcloud/nebula.go
diff --git a/core/client/cmd/pcloud/storage.go b/archive/core/client/cmd/pcloud/storage.go
similarity index 100%
rename from core/client/cmd/pcloud/storage.go
rename to archive/core/client/cmd/pcloud/storage.go
diff --git a/core/client/cmd/pcloud/storage_android.go b/archive/core/client/cmd/pcloud/storage_android.go
similarity index 100%
rename from core/client/cmd/pcloud/storage_android.go
rename to archive/core/client/cmd/pcloud/storage_android.go
diff --git a/core/client/cmd/pcloud/storage_darwin.go b/archive/core/client/cmd/pcloud/storage_darwin.go
similarity index 100%
rename from core/client/cmd/pcloud/storage_darwin.go
rename to archive/core/client/cmd/pcloud/storage_darwin.go
diff --git a/core/client/cmd/pcloud/tools.go b/archive/core/client/cmd/pcloud/tools.go
similarity index 100%
rename from core/client/cmd/pcloud/tools.go
rename to archive/core/client/cmd/pcloud/tools.go
diff --git a/core/client/cmd/pcloud/ui.go b/archive/core/client/cmd/pcloud/ui.go
similarity index 100%
rename from core/client/cmd/pcloud/ui.go
rename to archive/core/client/cmd/pcloud/ui.go
diff --git a/core/client/cmd/pcloud/ui_events.go b/archive/core/client/cmd/pcloud/ui_events.go
similarity index 100%
rename from core/client/cmd/pcloud/ui_events.go
rename to archive/core/client/cmd/pcloud/ui_events.go
diff --git a/core/client/go.mod b/archive/core/client/go.mod
similarity index 100%
rename from core/client/go.mod
rename to archive/core/client/go.mod
diff --git a/core/client/go.sum b/archive/core/client/go.sum
similarity index 100%
rename from core/client/go.sum
rename to archive/core/client/go.sum
diff --git a/core/client/jni/jni.go b/archive/core/client/jni/jni.go
similarity index 100%
rename from core/client/jni/jni.go
rename to archive/core/client/jni/jni.go
diff --git a/core/client/jni/jni_android.go b/archive/core/client/jni/jni_android.go
similarity index 100%
rename from core/client/jni/jni_android.go
rename to archive/core/client/jni/jni_android.go
diff --git a/core/events/Dockerfile b/archive/core/events/Dockerfile
similarity index 100%
rename from core/events/Dockerfile
rename to archive/core/events/Dockerfile
diff --git a/core/events/appmanager.go b/archive/core/events/appmanager.go
similarity index 100%
rename from core/events/appmanager.go
rename to archive/core/events/appmanager.go
diff --git a/core/events/chart/Chart.yaml b/archive/core/events/chart/Chart.yaml
similarity index 100%
rename from core/events/chart/Chart.yaml
rename to archive/core/events/chart/Chart.yaml
diff --git a/core/events/chart/README.md b/archive/core/events/chart/README.md
similarity index 100%
rename from core/events/chart/README.md
rename to archive/core/events/chart/README.md
diff --git a/core/events/chart/templates/deployment.yaml b/archive/core/events/chart/templates/deployment.yaml
similarity index 100%
rename from core/events/chart/templates/deployment.yaml
rename to archive/core/events/chart/templates/deployment.yaml
diff --git a/core/events/chart/values.yaml b/archive/core/events/chart/values.yaml
similarity index 100%
rename from core/events/chart/values.yaml
rename to archive/core/events/chart/values.yaml
diff --git a/core/events/client.go b/archive/core/events/client.go
similarity index 100%
rename from core/events/client.go
rename to archive/core/events/client.go
diff --git a/core/events/cmd/main.go b/archive/core/events/cmd/main.go
similarity index 100%
rename from core/events/cmd/main.go
rename to archive/core/events/cmd/main.go
diff --git a/core/events/event.go b/archive/core/events/event.go
similarity index 100%
rename from core/events/event.go
rename to archive/core/events/event.go
diff --git a/core/events/go.mod b/archive/core/events/go.mod
similarity index 100%
rename from core/events/go.mod
rename to archive/core/events/go.mod
diff --git a/core/events/go.sum b/archive/core/events/go.sum
similarity index 100%
rename from core/events/go.sum
rename to archive/core/events/go.sum
diff --git a/core/events/processor.go b/archive/core/events/processor.go
similarity index 100%
rename from core/events/processor.go
rename to archive/core/events/processor.go
diff --git a/core/kg/Makefile b/archive/core/kg/Makefile
similarity index 100%
rename from core/kg/Makefile
rename to archive/core/kg/Makefile
diff --git a/core/kg/api/rest/handler.go b/archive/core/kg/api/rest/handler.go
similarity index 100%
rename from core/kg/api/rest/handler.go
rename to archive/core/kg/api/rest/handler.go
diff --git a/core/kg/api/rest/router.go b/archive/core/kg/api/rest/router.go
similarity index 100%
rename from core/kg/api/rest/router.go
rename to archive/core/kg/api/rest/router.go
diff --git a/core/kg/api/rest/user_service.go b/archive/core/kg/api/rest/user_service.go
similarity index 100%
rename from core/kg/api/rest/user_service.go
rename to archive/core/kg/api/rest/user_service.go
diff --git a/core/kg/api/rpc/user_service.go b/archive/core/kg/api/rpc/user_service.go
similarity index 100%
rename from core/kg/api/rpc/user_service.go
rename to archive/core/kg/api/rpc/user_service.go
diff --git a/core/kg/api/rpc/user_service_test.go b/archive/core/kg/api/rpc/user_service_test.go
similarity index 100%
rename from core/kg/api/rpc/user_service_test.go
rename to archive/core/kg/api/rpc/user_service_test.go
diff --git a/core/kg/app/app.go b/archive/core/kg/app/app.go
similarity index 100%
rename from core/kg/app/app.go
rename to archive/core/kg/app/app.go
diff --git a/core/kg/app/app_mock.go b/archive/core/kg/app/app_mock.go
similarity index 100%
rename from core/kg/app/app_mock.go
rename to archive/core/kg/app/app_mock.go
diff --git a/core/kg/app/user.go b/archive/core/kg/app/user.go
similarity index 100%
rename from core/kg/app/user.go
rename to archive/core/kg/app/user.go
diff --git a/core/kg/cmd/commands/root.go b/archive/core/kg/cmd/commands/root.go
similarity index 100%
rename from core/kg/cmd/commands/root.go
rename to archive/core/kg/cmd/commands/root.go
diff --git a/core/kg/cmd/main.go b/archive/core/kg/cmd/main.go
similarity index 100%
rename from core/kg/cmd/main.go
rename to archive/core/kg/cmd/main.go
diff --git a/core/kg/common/interfaces.go b/archive/core/kg/common/interfaces.go
similarity index 100%
rename from core/kg/common/interfaces.go
rename to archive/core/kg/common/interfaces.go
diff --git a/core/kg/go.mod b/archive/core/kg/go.mod
similarity index 100%
rename from core/kg/go.mod
rename to archive/core/kg/go.mod
diff --git a/core/kg/go.sum b/archive/core/kg/go.sum
similarity index 100%
rename from core/kg/go.sum
rename to archive/core/kg/go.sum
diff --git a/core/kg/log/log.go b/archive/core/kg/log/log.go
similarity index 100%
rename from core/kg/log/log.go
rename to archive/core/kg/log/log.go
diff --git a/core/kg/log/noop.go b/archive/core/kg/log/noop.go
similarity index 100%
rename from core/kg/log/noop.go
rename to archive/core/kg/log/noop.go
diff --git a/core/kg/model/config.go b/archive/core/kg/model/config.go
similarity index 100%
rename from core/kg/model/config.go
rename to archive/core/kg/model/config.go
diff --git a/core/kg/model/proto/Makefile b/archive/core/kg/model/proto/Makefile
similarity index 100%
rename from core/kg/model/proto/Makefile
rename to archive/core/kg/model/proto/Makefile
diff --git a/core/kg/model/proto/user.proto b/archive/core/kg/model/proto/user.proto
similarity index 100%
rename from core/kg/model/proto/user.proto
rename to archive/core/kg/model/proto/user.proto
diff --git a/core/kg/model/user.go b/archive/core/kg/model/user.go
similarity index 100%
rename from core/kg/model/user.go
rename to archive/core/kg/model/user.go
diff --git a/core/kg/server/grpc_server.go b/archive/core/kg/server/grpc_server.go
similarity index 100%
rename from core/kg/server/grpc_server.go
rename to archive/core/kg/server/grpc_server.go
diff --git a/core/kg/server/http_server.go b/archive/core/kg/server/http_server.go
similarity index 100%
rename from core/kg/server/http_server.go
rename to archive/core/kg/server/http_server.go
diff --git a/core/kg/server/servers.go b/archive/core/kg/server/servers.go
similarity index 100%
rename from core/kg/server/servers.go
rename to archive/core/kg/server/servers.go
diff --git a/core/kg/server/servers_mock.go b/archive/core/kg/server/servers_mock.go
similarity index 100%
rename from core/kg/server/servers_mock.go
rename to archive/core/kg/server/servers_mock.go
diff --git a/core/kg/store/memory/store.go b/archive/core/kg/store/memory/store.go
similarity index 100%
rename from core/kg/store/memory/store.go
rename to archive/core/kg/store/memory/store.go
diff --git a/core/kg/store/memory/user_store.go b/archive/core/kg/store/memory/user_store.go
similarity index 100%
rename from core/kg/store/memory/user_store.go
rename to archive/core/kg/store/memory/user_store.go
diff --git a/core/kg/store/sqlstore/store.go b/archive/core/kg/store/sqlstore/store.go
similarity index 100%
rename from core/kg/store/sqlstore/store.go
rename to archive/core/kg/store/sqlstore/store.go
diff --git a/core/kg/store/sqlstore/user_store.go b/archive/core/kg/store/sqlstore/user_store.go
similarity index 100%
rename from core/kg/store/sqlstore/user_store.go
rename to archive/core/kg/store/sqlstore/user_store.go
diff --git a/core/kg/store/store.go b/archive/core/kg/store/store.go
similarity index 100%
rename from core/kg/store/store.go
rename to archive/core/kg/store/store.go
diff --git a/core/nebula/Dockerfile b/archive/core/nebula/Dockerfile
similarity index 100%
rename from core/nebula/Dockerfile
rename to archive/core/nebula/Dockerfile
diff --git a/core/nebula/Makefile b/archive/core/nebula/Makefile
similarity index 100%
rename from core/nebula/Makefile
rename to archive/core/nebula/Makefile
diff --git a/core/nebula/api/.gitignore b/archive/core/nebula/api/.gitignore
similarity index 100%
rename from core/nebula/api/.gitignore
rename to archive/core/nebula/api/.gitignore
diff --git a/core/nebula/api/Dockerfile b/archive/core/nebula/api/Dockerfile
similarity index 100%
rename from core/nebula/api/Dockerfile
rename to archive/core/nebula/api/Dockerfile
diff --git a/core/nebula/api/Makefile b/archive/core/nebula/api/Makefile
similarity index 100%
rename from core/nebula/api/Makefile
rename to archive/core/nebula/api/Makefile
diff --git a/core/nebula/api/go.mod b/archive/core/nebula/api/go.mod
similarity index 100%
rename from core/nebula/api/go.mod
rename to archive/core/nebula/api/go.mod
diff --git a/core/nebula/api/go.sum b/archive/core/nebula/api/go.sum
similarity index 100%
rename from core/nebula/api/go.sum
rename to archive/core/nebula/api/go.sum
diff --git a/core/nebula/api/main.go b/archive/core/nebula/api/main.go
similarity index 100%
rename from core/nebula/api/main.go
rename to archive/core/nebula/api/main.go
diff --git a/core/nebula/api/manager.go b/archive/core/nebula/api/manager.go
similarity index 100%
rename from core/nebula/api/manager.go
rename to archive/core/nebula/api/manager.go
diff --git a/core/nebula/api/nebula.go b/archive/core/nebula/api/nebula.go
similarity index 100%
rename from core/nebula/api/nebula.go
rename to archive/core/nebula/api/nebula.go
diff --git a/core/nebula/api/templates/index.html b/archive/core/nebula/api/templates/index.html
similarity index 100%
rename from core/nebula/api/templates/index.html
rename to archive/core/nebula/api/templates/index.html
diff --git a/core/nebula/controller/.gitignore b/archive/core/nebula/controller/.gitignore
similarity index 100%
rename from core/nebula/controller/.gitignore
rename to archive/core/nebula/controller/.gitignore
diff --git a/core/nebula/controller/Dockerfile b/archive/core/nebula/controller/Dockerfile
similarity index 100%
rename from core/nebula/controller/Dockerfile
rename to archive/core/nebula/controller/Dockerfile
diff --git a/core/nebula/controller/Makefile b/archive/core/nebula/controller/Makefile
similarity index 100%
rename from core/nebula/controller/Makefile
rename to archive/core/nebula/controller/Makefile
diff --git a/core/nebula/controller/apis/nebula/v1/doc.go b/archive/core/nebula/controller/apis/nebula/v1/doc.go
similarity index 100%
rename from core/nebula/controller/apis/nebula/v1/doc.go
rename to archive/core/nebula/controller/apis/nebula/v1/doc.go
diff --git a/core/nebula/controller/apis/nebula/v1/register.go b/archive/core/nebula/controller/apis/nebula/v1/register.go
similarity index 100%
rename from core/nebula/controller/apis/nebula/v1/register.go
rename to archive/core/nebula/controller/apis/nebula/v1/register.go
diff --git a/core/nebula/controller/apis/nebula/v1/types.go b/archive/core/nebula/controller/apis/nebula/v1/types.go
similarity index 100%
rename from core/nebula/controller/apis/nebula/v1/types.go
rename to archive/core/nebula/controller/apis/nebula/v1/types.go
diff --git a/core/nebula/controller/apis/nebula/v1/zz_generated.deepcopy.go b/archive/core/nebula/controller/apis/nebula/v1/zz_generated.deepcopy.go
similarity index 100%
rename from core/nebula/controller/apis/nebula/v1/zz_generated.deepcopy.go
rename to archive/core/nebula/controller/apis/nebula/v1/zz_generated.deepcopy.go
diff --git a/core/nebula/controller/controllers/ca.go b/archive/core/nebula/controller/controllers/ca.go
similarity index 100%
rename from core/nebula/controller/controllers/ca.go
rename to archive/core/nebula/controller/controllers/ca.go
diff --git a/core/nebula/controller/controllers/client.go b/archive/core/nebula/controller/controllers/client.go
similarity index 100%
rename from core/nebula/controller/controllers/client.go
rename to archive/core/nebula/controller/controllers/client.go
diff --git a/core/nebula/controller/generated/clientset/versioned/clientset.go b/archive/core/nebula/controller/generated/clientset/versioned/clientset.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/clientset.go
rename to archive/core/nebula/controller/generated/clientset/versioned/clientset.go
diff --git a/core/nebula/controller/generated/clientset/versioned/doc.go b/archive/core/nebula/controller/generated/clientset/versioned/doc.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/doc.go
rename to archive/core/nebula/controller/generated/clientset/versioned/doc.go
diff --git a/core/nebula/controller/generated/clientset/versioned/fake/clientset_generated.go b/archive/core/nebula/controller/generated/clientset/versioned/fake/clientset_generated.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/fake/clientset_generated.go
rename to archive/core/nebula/controller/generated/clientset/versioned/fake/clientset_generated.go
diff --git a/core/nebula/controller/generated/clientset/versioned/fake/doc.go b/archive/core/nebula/controller/generated/clientset/versioned/fake/doc.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/fake/doc.go
rename to archive/core/nebula/controller/generated/clientset/versioned/fake/doc.go
diff --git a/core/nebula/controller/generated/clientset/versioned/fake/register.go b/archive/core/nebula/controller/generated/clientset/versioned/fake/register.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/fake/register.go
rename to archive/core/nebula/controller/generated/clientset/versioned/fake/register.go
diff --git a/core/nebula/controller/generated/clientset/versioned/scheme/doc.go b/archive/core/nebula/controller/generated/clientset/versioned/scheme/doc.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/scheme/doc.go
rename to archive/core/nebula/controller/generated/clientset/versioned/scheme/doc.go
diff --git a/core/nebula/controller/generated/clientset/versioned/scheme/register.go b/archive/core/nebula/controller/generated/clientset/versioned/scheme/register.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/scheme/register.go
rename to archive/core/nebula/controller/generated/clientset/versioned/scheme/register.go
diff --git a/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/doc.go b/archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/doc.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/doc.go
rename to archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/doc.go
diff --git a/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/doc.go b/archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/doc.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/doc.go
rename to archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/doc.go
diff --git a/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebula_client.go b/archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebula_client.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebula_client.go
rename to archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebula_client.go
diff --git a/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulaca.go b/archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulaca.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulaca.go
rename to archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulaca.go
diff --git a/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulanode.go b/archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulanode.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulanode.go
rename to archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulanode.go
diff --git a/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/generated_expansion.go b/archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/generated_expansion.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/generated_expansion.go
rename to archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/generated_expansion.go
diff --git a/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebula_client.go b/archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebula_client.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebula_client.go
rename to archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebula_client.go
diff --git a/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebulaca.go b/archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebulaca.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebulaca.go
rename to archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebulaca.go
diff --git a/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebulanode.go b/archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebulanode.go
similarity index 100%
rename from core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebulanode.go
rename to archive/core/nebula/controller/generated/clientset/versioned/typed/nebula/v1/nebulanode.go
diff --git a/core/nebula/controller/generated/informers/externalversions/factory.go b/archive/core/nebula/controller/generated/informers/externalversions/factory.go
similarity index 100%
rename from core/nebula/controller/generated/informers/externalversions/factory.go
rename to archive/core/nebula/controller/generated/informers/externalversions/factory.go
diff --git a/core/nebula/controller/generated/informers/externalversions/generic.go b/archive/core/nebula/controller/generated/informers/externalversions/generic.go
similarity index 100%
rename from core/nebula/controller/generated/informers/externalversions/generic.go
rename to archive/core/nebula/controller/generated/informers/externalversions/generic.go
diff --git a/core/nebula/controller/generated/informers/externalversions/internalinterfaces/factory_interfaces.go b/archive/core/nebula/controller/generated/informers/externalversions/internalinterfaces/factory_interfaces.go
similarity index 100%
rename from core/nebula/controller/generated/informers/externalversions/internalinterfaces/factory_interfaces.go
rename to archive/core/nebula/controller/generated/informers/externalversions/internalinterfaces/factory_interfaces.go
diff --git a/core/nebula/controller/generated/informers/externalversions/nebula/interface.go b/archive/core/nebula/controller/generated/informers/externalversions/nebula/interface.go
similarity index 100%
rename from core/nebula/controller/generated/informers/externalversions/nebula/interface.go
rename to archive/core/nebula/controller/generated/informers/externalversions/nebula/interface.go
diff --git a/core/nebula/controller/generated/informers/externalversions/nebula/v1/interface.go b/archive/core/nebula/controller/generated/informers/externalversions/nebula/v1/interface.go
similarity index 100%
rename from core/nebula/controller/generated/informers/externalversions/nebula/v1/interface.go
rename to archive/core/nebula/controller/generated/informers/externalversions/nebula/v1/interface.go
diff --git a/core/nebula/controller/generated/informers/externalversions/nebula/v1/nebulaca.go b/archive/core/nebula/controller/generated/informers/externalversions/nebula/v1/nebulaca.go
similarity index 100%
rename from core/nebula/controller/generated/informers/externalversions/nebula/v1/nebulaca.go
rename to archive/core/nebula/controller/generated/informers/externalversions/nebula/v1/nebulaca.go
diff --git a/core/nebula/controller/generated/informers/externalversions/nebula/v1/nebulanode.go b/archive/core/nebula/controller/generated/informers/externalversions/nebula/v1/nebulanode.go
similarity index 100%
rename from core/nebula/controller/generated/informers/externalversions/nebula/v1/nebulanode.go
rename to archive/core/nebula/controller/generated/informers/externalversions/nebula/v1/nebulanode.go
diff --git a/core/nebula/controller/generated/listers/nebula/v1/expansion_generated.go b/archive/core/nebula/controller/generated/listers/nebula/v1/expansion_generated.go
similarity index 100%
rename from core/nebula/controller/generated/listers/nebula/v1/expansion_generated.go
rename to archive/core/nebula/controller/generated/listers/nebula/v1/expansion_generated.go
diff --git a/core/nebula/controller/generated/listers/nebula/v1/nebulaca.go b/archive/core/nebula/controller/generated/listers/nebula/v1/nebulaca.go
similarity index 100%
rename from core/nebula/controller/generated/listers/nebula/v1/nebulaca.go
rename to archive/core/nebula/controller/generated/listers/nebula/v1/nebulaca.go
diff --git a/core/nebula/controller/generated/listers/nebula/v1/nebulanode.go b/archive/core/nebula/controller/generated/listers/nebula/v1/nebulanode.go
similarity index 100%
rename from core/nebula/controller/generated/listers/nebula/v1/nebulanode.go
rename to archive/core/nebula/controller/generated/listers/nebula/v1/nebulanode.go
diff --git a/core/nebula/controller/go.mod b/archive/core/nebula/controller/go.mod
similarity index 100%
rename from core/nebula/controller/go.mod
rename to archive/core/nebula/controller/go.mod
diff --git a/core/nebula/controller/go.sum b/archive/core/nebula/controller/go.sum
similarity index 100%
rename from core/nebula/controller/go.sum
rename to archive/core/nebula/controller/go.sum
diff --git a/core/nebula/controller/hack/boilerplate.go.txt b/archive/core/nebula/controller/hack/boilerplate.go.txt
similarity index 100%
rename from core/nebula/controller/hack/boilerplate.go.txt
rename to archive/core/nebula/controller/hack/boilerplate.go.txt
diff --git a/core/nebula/controller/hack/generate.sh b/archive/core/nebula/controller/hack/generate.sh
similarity index 100%
rename from core/nebula/controller/hack/generate.sh
rename to archive/core/nebula/controller/hack/generate.sh
diff --git a/core/nebula/controller/hack/tools.go b/archive/core/nebula/controller/hack/tools.go
similarity index 100%
rename from core/nebula/controller/hack/tools.go
rename to archive/core/nebula/controller/hack/tools.go
diff --git a/core/nebula/controller/main.go b/archive/core/nebula/controller/main.go
similarity index 100%
rename from core/nebula/controller/main.go
rename to archive/core/nebula/controller/main.go
diff --git a/core/nebula/generated/clientset/versioned/clientset.go b/archive/core/nebula/generated/clientset/versioned/clientset.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/clientset.go
rename to archive/core/nebula/generated/clientset/versioned/clientset.go
diff --git a/core/nebula/generated/clientset/versioned/doc.go b/archive/core/nebula/generated/clientset/versioned/doc.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/doc.go
rename to archive/core/nebula/generated/clientset/versioned/doc.go
diff --git a/core/nebula/generated/clientset/versioned/fake/clientset_generated.go b/archive/core/nebula/generated/clientset/versioned/fake/clientset_generated.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/fake/clientset_generated.go
rename to archive/core/nebula/generated/clientset/versioned/fake/clientset_generated.go
diff --git a/core/nebula/generated/clientset/versioned/fake/doc.go b/archive/core/nebula/generated/clientset/versioned/fake/doc.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/fake/doc.go
rename to archive/core/nebula/generated/clientset/versioned/fake/doc.go
diff --git a/core/nebula/generated/clientset/versioned/fake/register.go b/archive/core/nebula/generated/clientset/versioned/fake/register.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/fake/register.go
rename to archive/core/nebula/generated/clientset/versioned/fake/register.go
diff --git a/core/nebula/generated/clientset/versioned/scheme/doc.go b/archive/core/nebula/generated/clientset/versioned/scheme/doc.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/scheme/doc.go
rename to archive/core/nebula/generated/clientset/versioned/scheme/doc.go
diff --git a/core/nebula/generated/clientset/versioned/scheme/register.go b/archive/core/nebula/generated/clientset/versioned/scheme/register.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/scheme/register.go
rename to archive/core/nebula/generated/clientset/versioned/scheme/register.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/doc.go b/archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/doc.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/doc.go
rename to archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/doc.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/doc.go b/archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/doc.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/doc.go
rename to archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/doc.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebula_client.go b/archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebula_client.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebula_client.go
rename to archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebula_client.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulaca.go b/archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulaca.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulaca.go
rename to archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulaca.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulanode.go b/archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulanode.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulanode.go
rename to archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/fake/fake_nebulanode.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/generated_expansion.go b/archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/generated_expansion.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/generated_expansion.go
rename to archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/generated_expansion.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/nebula_client.go b/archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/nebula_client.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/nebula_client.go
rename to archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/nebula_client.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/nebulaca.go b/archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/nebulaca.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/nebulaca.go
rename to archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/nebulaca.go
diff --git a/core/nebula/generated/clientset/versioned/typed/nebula/v1/nebulanode.go b/archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/nebulanode.go
similarity index 100%
rename from core/nebula/generated/clientset/versioned/typed/nebula/v1/nebulanode.go
rename to archive/core/nebula/generated/clientset/versioned/typed/nebula/v1/nebulanode.go
diff --git a/core/nebula/generated/informers/externalversions/factory.go b/archive/core/nebula/generated/informers/externalversions/factory.go
similarity index 100%
rename from core/nebula/generated/informers/externalversions/factory.go
rename to archive/core/nebula/generated/informers/externalversions/factory.go
diff --git a/core/nebula/generated/informers/externalversions/generic.go b/archive/core/nebula/generated/informers/externalversions/generic.go
similarity index 100%
rename from core/nebula/generated/informers/externalversions/generic.go
rename to archive/core/nebula/generated/informers/externalversions/generic.go
diff --git a/core/nebula/generated/informers/externalversions/internalinterfaces/factory_interfaces.go b/archive/core/nebula/generated/informers/externalversions/internalinterfaces/factory_interfaces.go
similarity index 100%
rename from core/nebula/generated/informers/externalversions/internalinterfaces/factory_interfaces.go
rename to archive/core/nebula/generated/informers/externalversions/internalinterfaces/factory_interfaces.go
diff --git a/core/nebula/generated/informers/externalversions/nebula/interface.go b/archive/core/nebula/generated/informers/externalversions/nebula/interface.go
similarity index 100%
rename from core/nebula/generated/informers/externalversions/nebula/interface.go
rename to archive/core/nebula/generated/informers/externalversions/nebula/interface.go
diff --git a/core/nebula/generated/informers/externalversions/nebula/v1/interface.go b/archive/core/nebula/generated/informers/externalversions/nebula/v1/interface.go
similarity index 100%
rename from core/nebula/generated/informers/externalversions/nebula/v1/interface.go
rename to archive/core/nebula/generated/informers/externalversions/nebula/v1/interface.go
diff --git a/core/nebula/generated/informers/externalversions/nebula/v1/nebulaca.go b/archive/core/nebula/generated/informers/externalversions/nebula/v1/nebulaca.go
similarity index 100%
rename from core/nebula/generated/informers/externalversions/nebula/v1/nebulaca.go
rename to archive/core/nebula/generated/informers/externalversions/nebula/v1/nebulaca.go
diff --git a/core/nebula/generated/informers/externalversions/nebula/v1/nebulanode.go b/archive/core/nebula/generated/informers/externalversions/nebula/v1/nebulanode.go
similarity index 100%
rename from core/nebula/generated/informers/externalversions/nebula/v1/nebulanode.go
rename to archive/core/nebula/generated/informers/externalversions/nebula/v1/nebulanode.go
diff --git a/core/nebula/generated/listers/nebula/v1/expansion_generated.go b/archive/core/nebula/generated/listers/nebula/v1/expansion_generated.go
similarity index 100%
rename from core/nebula/generated/listers/nebula/v1/expansion_generated.go
rename to archive/core/nebula/generated/listers/nebula/v1/expansion_generated.go
diff --git a/core/nebula/generated/listers/nebula/v1/nebulaca.go b/archive/core/nebula/generated/listers/nebula/v1/nebulaca.go
similarity index 100%
rename from core/nebula/generated/listers/nebula/v1/nebulaca.go
rename to archive/core/nebula/generated/listers/nebula/v1/nebulaca.go
diff --git a/core/nebula/generated/listers/nebula/v1/nebulanode.go b/archive/core/nebula/generated/listers/nebula/v1/nebulanode.go
similarity index 100%
rename from core/nebula/generated/listers/nebula/v1/nebulanode.go
rename to archive/core/nebula/generated/listers/nebula/v1/nebulanode.go
diff --git a/charts/service-transport-controller/Chart.yaml b/charts/service-transport-controller/Chart.yaml
deleted file mode 100644
index 9708d0a..0000000
--- a/charts/service-transport-controller/Chart.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-apiVersion: v2
-name: service-transport-controller
-description: A Helm chart for service-transport controller
-type: application
-version: 0.0.1
-appVersion: "0.0.1"
diff --git a/charts/service-transport-controller/templates/crds.yaml b/charts/service-transport-controller/templates/crds.yaml
deleted file mode 100644
index 45154a5..0000000
--- a/charts/service-transport-controller/templates/crds.yaml
+++ /dev/null
@@ -1,55 +0,0 @@
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- controller-gen.kubebuilder.io/version: v0.9.2
- creationTimestamp: null
- name: servicetransports.transport.dodo.cloud
-spec:
- group: transport.dodo.cloud
- names:
- kind: ServiceTransport
- listKind: ServiceTransportList
- plural: servicetransports
- singular: servicetransport
- scope: Namespaced
- versions:
- - name: v1
- schema:
- openAPIV3Schema:
- description: ServiceTransport is the Schema for the servicetransports API
- properties:
- apiVersion:
- description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
- type: string
- kind:
- description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
- type: string
- metadata:
- type: object
- spec:
- description: ServiceTransportSpec defines the desired state of ServiceTransport
- properties:
- ingressClassName:
- type: string
- port:
- description: Foo is an example field of ServiceTransport. Edit servicetransport_types.go to remove/update
- type: integer
- protocol:
- type: string
- service:
- type: string
- sourcePort:
- type: integer
- type: object
- status:
- description: ServiceTransportStatus defines the observed state of ServiceTransport
- properties:
- port:
- type: integer
- type: object
- type: object
- served: true
- storage: true
- subresources:
- status: {}
diff --git a/charts/service-transport-controller/templates/install.yaml b/charts/service-transport-controller/templates/install.yaml
deleted file mode 100644
index f79c8ba..0000000
--- a/charts/service-transport-controller/templates/install.yaml
+++ /dev/null
@@ -1,325 +0,0 @@
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- controller-gen.kubebuilder.io/version: v0.9.2
- creationTimestamp: null
- name: servicetransports.transport.dodo.cloud
-spec:
- group: transport.dodo.cloud
- names:
- kind: ServiceTransport
- listKind: ServiceTransportList
- plural: servicetransports
- singular: servicetransport
- scope: Namespaced
- versions:
- - name: v1
- schema:
- openAPIV3Schema:
- description: ServiceTransport is the Schema for the servicetransports API
- properties:
- apiVersion:
- description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
- type: string
- kind:
- description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
- type: string
- metadata:
- type: object
- spec:
- description: ServiceTransportSpec defines the desired state of ServiceTransport
- properties:
- ingressClassName:
- type: string
- port:
- description: Foo is an example field of ServiceTransport. Edit servicetransport_types.go to remove/update
- type: integer
- protocol:
- type: string
- service:
- type: string
- sourcePort:
- type: integer
- type: object
- status:
- description: ServiceTransportStatus defines the observed state of ServiceTransport
- properties:
- port:
- type: integer
- type: object
- type: object
- served: true
- storage: true
- subresources:
- status: {}
----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
- name: tcp-udp-transport-controller-manager
- namespace: {{ .Release.Namespace }}
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
- name: tcp-udp-transport-leader-election-role
- namespace: {{ .Release.Namespace }}
-rules:
-- apiGroups:
- - ""
- resources:
- - configmaps
- verbs:
- - get
- - list
- - watch
- - create
- - update
- - patch
- - delete
-- apiGroups:
- - coordination.k8s.io
- resources:
- - leases
- verbs:
- - get
- - list
- - watch
- - create
- - update
- - patch
- - delete
-- apiGroups:
- - ""
- resources:
- - events
- verbs:
- - create
- - patch
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
- creationTimestamp: null
- name: tcp-udp-transport-manager-role
-rules:
-- apiGroups:
- - transport.dodo.cloud
- resources:
- - servicetransports
- verbs:
- - create
- - delete
- - get
- - list
- - patch
- - update
- - watch
-- apiGroups:
- - transport.dodo.cloud
- resources:
- - servicetransports/finalizers
- verbs:
- - update
-- apiGroups:
- - transport.dodo.cloud
- resources:
- - servicetransports/status
- verbs:
- - get
- - patch
- - update
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
- name: tcp-udp-transport-metrics-reader
-rules:
-- nonResourceURLs:
- - /metrics
- verbs:
- - get
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
- name: tcp-udp-transport-proxy-role
-rules:
-- apiGroups:
- - authentication.k8s.io
- resources:
- - tokenreviews
- verbs:
- - create
-- apiGroups:
- - authorization.k8s.io
- resources:
- - subjectaccessreviews
- verbs:
- - create
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
- name: tcp-udp-transport-leader-election-rolebinding
- namespace: {{ .Release.Namespace }}
-roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: Role
- name: tcp-udp-transport-leader-election-role
-subjects:
-- kind: ServiceAccount
- name: tcp-udp-transport-controller-manager
- namespace: {{ .Release.Namespace }}
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
- name: tcp-udp-transport-manager-rolebinding
-roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: tcp-udp-transport-manager-role
-subjects:
-- kind: ServiceAccount
- name: tcp-udp-transport-controller-manager
- namespace: {{ .Release.Namespace }}
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
- name: tcp-udp-transport-proxy-rolebinding
-roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: tcp-udp-transport-proxy-role
-subjects:
-- kind: ServiceAccount
- name: tcp-udp-transport-controller-manager
- namespace: {{ .Release.Namespace }}
----
-apiVersion: v1
-data:
- controller_manager_config.yaml: |
- apiVersion: controller-runtime.sigs.k8s.io/v1alpha1
- kind: ControllerManagerConfig
- health:
- healthProbeBindAddress: :8081
- metrics:
- bindAddress: 127.0.0.1:8080
- webhook:
- port: 9443
- leaderElection:
- leaderElect: true
- resourceName: 798a733c.dodo.cloud
- # leaderElectionReleaseOnCancel defines if the leader should step down volume
- # when the Manager ends. This requires the binary to immediately end when the
- # Manager is stopped, otherwise, this setting is unsafe. Setting this significantly
- # speeds up voluntary leader transitions as the new leader don't have to wait
- # LeaseDuration time first.
- # In the default scaffold provided, the program ends immediately after
- # the manager stops, so would be fine to enable this option. However,
- # if you are doing or is intended to do any operation such as perform cleanups
- # after the manager stops then its usage might be unsafe.
- # leaderElectionReleaseOnCancel: true
-kind: ConfigMap
-metadata:
- name: tcp-udp-transport-manager-config
- namespace: {{ .Release.Namespace }}
----
-apiVersion: v1
-kind: Service
-metadata:
- labels:
- control-plane: controller-manager
- name: tcp-udp-transport-controller-manager-metrics-service
- namespace: {{ .Release.Namespace }}
-spec:
- ports:
- - name: https
- port: 8443
- protocol: TCP
- targetPort: https
- selector:
- control-plane: controller-manager
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- labels:
- control-plane: controller-manager
- name: tcp-udp-transport-controller-manager
- namespace: {{ .Release.Namespace }}
-spec:
- replicas: 1
- selector:
- matchLabels:
- control-plane: controller-manager
- template:
- metadata:
- annotations:
- kubectl.kubernetes.io/default-container: manager
- labels:
- control-plane: controller-manager
- spec:
- containers:
- - args:
- - --secure-listen-address=0.0.0.0:8443
- - --upstream=http://127.0.0.1:8080/
- - --logtostderr=true
- - --v=0
- image: gcr.io/kubebuilder/kube-rbac-proxy:v0.13.0
- name: kube-rbac-proxy
- ports:
- - containerPort: 8443
- name: https
- protocol: TCP
- resources:
- limits:
- cpu: 500m
- memory: 128Mi
- requests:
- cpu: 5m
- memory: 64Mi
- securityContext:
- allowPrivilegeEscalation: false
- capabilities:
- drop:
- - ALL
- - args:
- - --health-probe-bind-address=:8081
- - --metrics-bind-address=127.0.0.1:8080
- - --leader-elect
- command:
- - /manager
- image: giolekva/service-transport-controller:latest
- livenessProbe:
- httpGet:
- path: /healthz
- port: 8081
- initialDelaySeconds: 15
- periodSeconds: 20
- name: manager
- readinessProbe:
- httpGet:
- path: /readyz
- port: 8081
- initialDelaySeconds: 5
- periodSeconds: 10
- resources:
- limits:
- cpu: 500m
- memory: 128Mi
- requests:
- cpu: 10m
- memory: 64Mi
- securityContext:
- allowPrivilegeEscalation: false
- capabilities:
- drop:
- - ALL
- securityContext:
- runAsNonRoot: true
- serviceAccountName: tcp-udp-transport-controller-manager
- terminationGracePeriodSeconds: 10
diff --git a/charts/service-transport-controller/values.yaml b/charts/service-transport-controller/values.yaml
deleted file mode 100644
index 64c0347..0000000
--- a/charts/service-transport-controller/values.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-image:
- repository: giolekva/rpuppy-arm
- tag: latest
- pullPolicy: Always
-installCRDs: false
diff --git a/core/client/android/app/src/main/AndroidManifest.xml b/core/client/android/app/src/main/AndroidManifest.xml
deleted file mode 100644
index ccdff2c..0000000
--- a/core/client/android/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="me.lekva.pcloud">
-
- <uses-permission android:name="android.permission.CAMERA" />
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
-
- <application
- android:name=".PCloudApp"
- android:allowBackup="true"
- android:icon="@mipmap/ic_launcher"
- android:label="@string/app_name"
- android:roundIcon="@mipmap/ic_launcher_round"
- android:supportsRtl="true"
- android:theme="@style/Theme.Pcloud"
- android:hardwareAccelerated="true">
- <activity
- android:name=".PCloudActivity"
- android:exported="true">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <service android:name=".PCloudVPNService"
- android:permission="android.permission.BIND_VPN_SERVICE"
- android:exported="true">
- <intent-filter>
- <action android:name="android.net.VpnService"/>
- </intent-filter>
- </service>
- </application>
-
-</manifest>
\ No newline at end of file
diff --git a/core/client/android/app/src/main/java/me/lekva/pcloud/PCloudActivity.java b/core/client/android/app/src/main/java/me/lekva/pcloud/PCloudActivity.java
deleted file mode 100644
index 5e7dedd..0000000
--- a/core/client/android/app/src/main/java/me/lekva/pcloud/PCloudActivity.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package me.lekva.pcloud;
-
-import android.content.Intent;
-import android.content.res.Configuration;
-import android.net.VpnService;
-import android.os.Bundle;
-
-import androidx.activity.result.ActivityResultLauncher;
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
-
-import com.journeyapps.barcodescanner.ScanContract;
-import com.journeyapps.barcodescanner.ScanOptions;
-
-import org.gioui.GioView;
-
-public class PCloudActivity extends AppCompatActivity {
- private static final int VPN_START_CODE = 0x10;
-
- private GioView view;
-
- private final ActivityResultLauncher<ScanOptions> barcodeLauncher = registerForActivityResult(new ScanContract(),
- result -> {
- if(result.getContents() != null) {
- qrcodeScanned(result.getContents());
- }
- });
-
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- view = new GioView(this);
- setContentView(view);
- }
-
- @Override
- public void onDestroy() {
- view.destroy();
- super.onDestroy();
- }
-
- @Override
- public void onStart() {
- super.onStart();
- view.start();
- }
-
- @Override
- public void onStop() {
- view.stop();
- super.onStop();
- }
-
- @Override
- public void onConfigurationChanged(Configuration c) {
- super.onConfigurationChanged(c);
- view.configurationChanged();
- }
-
- @Override
- public void onLowMemory() {
- super.onLowMemory();
- view.onLowMemory();
- }
-
- @Override
- public void onBackPressed() {
- if (!view.backPressed())
- super.onBackPressed();
- }
-
- // TODO(giolekva): return void instead of String
- public String launchBarcodeScanner() {
- ScanOptions options = new ScanOptions();
- options.setDesiredBarcodeFormats(ScanOptions.QR_CODE);
- options.setPrompt("Join PCloud mesh");
- options.setCameraId(0); // Use a specific camera of the device
- options.setBeepEnabled(true);
- options.setBarcodeImageEnabled(false);
- barcodeLauncher.launch(options);
- return null;
- }
-
- public void startVpn() {
- Intent intent = VpnService.prepare(this);
- if (intent != null) {
- intent.setAction(PCloudVPNService.ACTION_CONNECT);
- startActivityForResult(intent, VPN_START_CODE);
- } else {
- intent = new Intent(this, PCloudVPNService.class);
- startService(intent);
- }
- }
-
- private native void qrcodeScanned(String contents);
-}
diff --git a/core/client/android/app/src/main/java/me/lekva/pcloud/PCloudApp.java b/core/client/android/app/src/main/java/me/lekva/pcloud/PCloudApp.java
deleted file mode 100644
index 14a8875..0000000
--- a/core/client/android/app/src/main/java/me/lekva/pcloud/PCloudApp.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package me.lekva.pcloud;
-
-import android.app.Application;
-import android.app.NotificationChannel;
-import android.content.SharedPreferences;
-import android.os.Build;
-import android.provider.Settings;
-
-import androidx.core.app.NotificationManagerCompat;
-import androidx.security.crypto.EncryptedSharedPreferences;
-import androidx.security.crypto.MasterKey;
-
-import org.gioui.Gio;
-
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-
-public class PCloudApp extends Application {
- static final String STATUS_CHANNEL_ID = "pcloud-status";
- static final int STATUS_NOTIFICATION_ID = 1;
-
- static final String NOTIFY_CHANNEL_ID = "pcloud-notify";
- static final int NOTIFY_NOTIFICATION_ID = 2;
-
- @Override
- public void onCreate() {
- super.onCreate();
- Gio.init(this);
-
- createNotificationChannel(NOTIFY_CHANNEL_ID, "Notifications", NotificationManagerCompat.IMPORTANCE_DEFAULT);
- createNotificationChannel(STATUS_CHANNEL_ID, "VPN Status", NotificationManagerCompat.IMPORTANCE_LOW);
- }
-
- private void createNotificationChannel(String id, String name, int importance) {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
- return;
- }
- NotificationChannel channel = new NotificationChannel(id, name, importance);
- NotificationManagerCompat nm = NotificationManagerCompat.from(this);
- nm.createNotificationChannel(channel);
- }
-
- String getHostname() {
- String userConfiguredDeviceName = getUserConfiguredDeviceName();
- if (!isEmpty(userConfiguredDeviceName)) return userConfiguredDeviceName;
- return getModelName();
- }
-
- private String getUserConfiguredDeviceName() {
- String nameFromSystemBluetooth = Settings.System.getString(getContentResolver(), "bluetooth_name");
- String nameFromSecureBluetooth = Settings.Secure.getString(getContentResolver(), "bluetooth_name");
- String nameFromSystemDevice = Settings.Secure.getString(getContentResolver(), "device_name");
- if (!isEmpty(nameFromSystemBluetooth)) return nameFromSystemBluetooth;
- if (!isEmpty(nameFromSecureBluetooth)) return nameFromSecureBluetooth;
- if (!isEmpty(nameFromSystemDevice)) return nameFromSystemDevice;
- return null;
- }
-
- String getModelName() {
- String manu = Build.MANUFACTURER;
- String model = Build.MODEL;
- // Strip manufacturer from model.
- int idx = model.toLowerCase().indexOf(manu.toLowerCase());
- if (idx != -1) {
- model = model.substring(idx + manu.length());
- model = model.trim();
- }
- return manu + " " + model;
- }
-
- private static boolean isEmpty(String str) {
- return str == null || str.length() == 0;
- }
-
-
- // encryptToPref a byte array of data using the Jetpack Security
- // library and writes it to a global encrypted preference store.
- public void encryptToPref(String prefKey, String plaintext) throws IOException, GeneralSecurityException {
- getEncryptedPrefs().edit().putString(prefKey, plaintext).commit();
- }
-
- // decryptFromPref decrypts a encrypted preference using the Jetpack Security
- // library and returns the plaintext.
- public String decryptFromPref(String prefKey) throws IOException, GeneralSecurityException {
- return getEncryptedPrefs().getString(prefKey, null);
- }
-
- private SharedPreferences getEncryptedPrefs() throws IOException, GeneralSecurityException {
- MasterKey key = new MasterKey.Builder(this)
- .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
- .build();
- return EncryptedSharedPreferences.create(
- this,
- "secret_shared_prefs",
- key,
- EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
- EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
- );
- }
-}
diff --git a/core/client/android/app/src/main/java/me/lekva/pcloud/PCloudVPNService.java b/core/client/android/app/src/main/java/me/lekva/pcloud/PCloudVPNService.java
deleted file mode 100644
index 91a4a38..0000000
--- a/core/client/android/app/src/main/java/me/lekva/pcloud/PCloudVPNService.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package me.lekva.pcloud;
-
-import android.app.PendingIntent;
-import android.app.Service;
-import android.content.Intent;
-import android.net.VpnService;
-import android.os.Build;
-import android.os.Handler;
-import android.os.Message;
-import android.system.OsConstants;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.RequiresApi;
-import androidx.core.app.NotificationCompat;
-
-public class PCloudVPNService extends VpnService implements Handler.Callback {
- public static final String ACTION_CONNECT = "CONNECT";
- public static final String ACTION_DISCONNECT = "DISCONNECT";
-
- private PendingIntent configureIntent;
-
- private boolean running = false;
- private Handler handler = null;
-
- @Override
- public void onCreate() {
- if (handler == null) {
- handler = new Handler(this);
- }
-
- configureIntent = PendingIntent.getActivity(this, 0, new Intent(this, PCloudActivity.class),
- PendingIntent.FLAG_UPDATE_CURRENT);
- }
-
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- if (intent != null && ACTION_DISCONNECT.equals(intent.getAction())) {
- stopVpn();
- return Service.START_NOT_STICKY;
- } else {
- startVpn();
- return Service.START_STICKY;
- }
- }
-
- @Override
- public void onDestroy() {
- stopVpn();
- }
-
- @RequiresApi(api = Build.VERSION_CODES.O)
- private void startVpn() {
- System.out.println("--- START");
- updateForegroundNotification();
- connect();
- }
-
- private void stopVpn() {
- System.out.println("--- STOP");
- running = false;
- }
-
- @Override
- public boolean handleMessage(@NonNull Message message) {
- System.out.println(getString(message.what));
- return true;
- }
-
- private PendingIntent configIntent() {
- return PendingIntent.getActivity(this, 0, new Intent(this, PCloudActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
- }
-
- public VpnService.Builder newBuilder() {
- VpnService.Builder builder = new VpnService.Builder()
- .setConfigureIntent(configIntent())
- .allowFamily(OsConstants.AF_INET)
- .allowFamily(OsConstants.AF_INET6);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
- builder.setMetered(false); // Inherit the metered status from the underlying networks.
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
- builder.setUnderlyingNetworks(null); // Use all available networks.
- return builder;
- }
-
- private void updateForegroundNotification() {
- NotificationCompat.Builder builder = new NotificationCompat.Builder(this, PCloudApp.STATUS_CHANNEL_ID)
- .setContentTitle("PCloud")
- .setContentText("hiiii")
- .setContentIntent(configureIntent)
- .setPriority(NotificationCompat.PRIORITY_LOW);
- startForeground(PCloudApp.STATUS_NOTIFICATION_ID, builder.build());
- }
-
- private native void connect();
- private native void disconnect();
-}
diff --git a/core/client/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/core/client/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
deleted file mode 100644
index 2b068d1..0000000
--- a/core/client/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:aapt="http://schemas.android.com/aapt"
- android:width="108dp"
- android:height="108dp"
- android:viewportWidth="108"
- android:viewportHeight="108">
- <path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
- <aapt:attr name="android:fillColor">
- <gradient
- android:endX="85.84757"
- android:endY="92.4963"
- android:startX="42.9492"
- android:startY="49.59793"
- android:type="linear">
- <item
- android:color="#44000000"
- android:offset="0.0" />
- <item
- android:color="#00000000"
- android:offset="1.0" />
- </gradient>
- </aapt:attr>
- </path>
- <path
- android:fillColor="#FFFFFF"
- android:fillType="nonZero"
- android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
- android:strokeWidth="1"
- android:strokeColor="#00000000" />
-</vector>
\ No newline at end of file
diff --git a/core/client/android/app/src/main/res/drawable/ic_launcher_background.xml b/core/client/android/app/src/main/res/drawable/ic_launcher_background.xml
deleted file mode 100644
index 07d5da9..0000000
--- a/core/client/android/app/src/main/res/drawable/ic_launcher_background.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="108dp"
- android:height="108dp"
- android:viewportWidth="108"
- android:viewportHeight="108">
- <path
- android:fillColor="#3DDC84"
- android:pathData="M0,0h108v108h-108z" />
- <path
- android:fillColor="#00000000"
- android:pathData="M9,0L9,108"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M19,0L19,108"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M29,0L29,108"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M39,0L39,108"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M49,0L49,108"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M59,0L59,108"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M69,0L69,108"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M79,0L79,108"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M89,0L89,108"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M99,0L99,108"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M0,9L108,9"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M0,19L108,19"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M0,29L108,29"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M0,39L108,39"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M0,49L108,49"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M0,59L108,59"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M0,69L108,69"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M0,79L108,79"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M0,89L108,89"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M0,99L108,99"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M19,29L89,29"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M19,39L89,39"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M19,49L89,49"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M19,59L89,59"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M19,69L89,69"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M19,79L89,79"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M29,19L29,89"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M39,19L39,89"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M49,19L49,89"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M59,19L59,89"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M69,19L69,89"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
- <path
- android:fillColor="#00000000"
- android:pathData="M79,19L79,89"
- android:strokeWidth="0.8"
- android:strokeColor="#33FFFFFF" />
-</vector>
diff --git a/core/client/android/app/src/main/res/layout/activity_main.xml b/core/client/android/app/src/main/res/layout/activity_main.xml
deleted file mode 100644
index 988e611..0000000
--- a/core/client/android/app/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".MainActivity">
-
- <androidx.camera.view.PreviewView
- android:id="@+id/camera_preview"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent" />
-
- <androidx.appcompat.widget.AppCompatButton
- android:id="@+id/scan_qr_code"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/scan_qr_code"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/core/client/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/core/client/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
deleted file mode 100644
index eca70cf..0000000
--- a/core/client/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
- <background android:drawable="@drawable/ic_launcher_background" />
- <foreground android:drawable="@drawable/ic_launcher_foreground" />
-</adaptive-icon>
\ No newline at end of file
diff --git a/core/client/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/core/client/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
deleted file mode 100644
index eca70cf..0000000
--- a/core/client/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
- <background android:drawable="@drawable/ic_launcher_background" />
- <foreground android:drawable="@drawable/ic_launcher_foreground" />
-</adaptive-icon>
\ No newline at end of file
diff --git a/core/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/core/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp
deleted file mode 100644
index c209e78..0000000
--- a/core/client/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp
+++ /dev/null
Binary files differ
diff --git a/core/client/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/core/client/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
deleted file mode 100644
index b2dfe3d..0000000
--- a/core/client/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
+++ /dev/null
Binary files differ
diff --git a/core/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/core/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp
deleted file mode 100644
index 4f0f1d6..0000000
--- a/core/client/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp
+++ /dev/null
Binary files differ
diff --git a/core/client/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/core/client/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
deleted file mode 100644
index 62b611d..0000000
--- a/core/client/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
+++ /dev/null
Binary files differ
diff --git a/core/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/core/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
deleted file mode 100644
index 948a307..0000000
--- a/core/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
+++ /dev/null
Binary files differ
diff --git a/core/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/core/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
deleted file mode 100644
index 1b9a695..0000000
--- a/core/client/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
+++ /dev/null
Binary files differ
diff --git a/core/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/core/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
deleted file mode 100644
index 28d4b77..0000000
--- a/core/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
+++ /dev/null
Binary files differ
diff --git a/core/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/core/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
deleted file mode 100644
index 9287f50..0000000
--- a/core/client/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
+++ /dev/null
Binary files differ
diff --git a/core/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/core/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
deleted file mode 100644
index aa7d642..0000000
--- a/core/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
+++ /dev/null
Binary files differ
diff --git a/core/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/core/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
deleted file mode 100644
index 9126ae3..0000000
--- a/core/client/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
+++ /dev/null
Binary files differ
diff --git a/core/client/android/app/src/main/res/values-night/themes.xml b/core/client/android/app/src/main/res/values-night/themes.xml
deleted file mode 100644
index 96627ca..0000000
--- a/core/client/android/app/src/main/res/values-night/themes.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<resources xmlns:tools="http://schemas.android.com/tools">
- <!-- Base application theme. -->
- <style name="Theme.Pcloud" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
- <!-- Primary brand color. -->
- <item name="colorPrimary">@color/purple_200</item>
- <item name="colorPrimaryVariant">@color/purple_700</item>
- <item name="colorOnPrimary">@color/black</item>
- <!-- Secondary brand color. -->
- <item name="colorSecondary">@color/teal_200</item>
- <item name="colorSecondaryVariant">@color/teal_200</item>
- <item name="colorOnSecondary">@color/black</item>
- <!-- Status bar color. -->
- <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
- <!-- Customize your theme here. -->
- </style>
-</resources>
\ No newline at end of file
diff --git a/core/client/android/app/src/main/res/values/colors.xml b/core/client/android/app/src/main/res/values/colors.xml
deleted file mode 100644
index f8c6127..0000000
--- a/core/client/android/app/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <color name="purple_200">#FFBB86FC</color>
- <color name="purple_500">#FF6200EE</color>
- <color name="purple_700">#FF3700B3</color>
- <color name="teal_200">#FF03DAC5</color>
- <color name="teal_700">#FF018786</color>
- <color name="black">#FF000000</color>
- <color name="white">#FFFFFFFF</color>
-</resources>
\ No newline at end of file
diff --git a/core/client/android/app/src/main/res/values/strings.xml b/core/client/android/app/src/main/res/values/strings.xml
deleted file mode 100644
index 4e112d8..0000000
--- a/core/client/android/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<resources>
- <string name="app_name">pcloud</string>
- <string name="scan_qr_code">Scan QR code</string>
-</resources>
\ No newline at end of file
diff --git a/core/client/android/app/src/main/res/values/themes.xml b/core/client/android/app/src/main/res/values/themes.xml
deleted file mode 100644
index 8a512ae..0000000
--- a/core/client/android/app/src/main/res/values/themes.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<resources xmlns:tools="http://schemas.android.com/tools">
- <!-- Base application theme. -->
- <style name="Theme.Pcloud" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
- <!-- Primary brand color. -->
- <item name="colorPrimary">@color/purple_500</item>
- <item name="colorPrimaryVariant">@color/purple_700</item>
- <item name="colorOnPrimary">@color/white</item>
- <!-- Secondary brand color. -->
- <item name="colorSecondary">@color/teal_200</item>
- <item name="colorSecondaryVariant">@color/teal_700</item>
- <item name="colorOnSecondary">@color/black</item>
- <!-- Status bar color. -->
- <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
- <!-- Customize your theme here. -->
- </style>
-</resources>
\ No newline at end of file
diff --git a/core/tcp-udp-transport/.dockerignore b/core/tcp-udp-transport/.dockerignore
deleted file mode 100644
index 0f04682..0000000
--- a/core/tcp-udp-transport/.dockerignore
+++ /dev/null
@@ -1,4 +0,0 @@
-# More info: https://docs.docker.com/engine/reference/builder/#dockerignore-file
-# Ignore build and test binaries.
-bin/
-testbin/
diff --git a/core/tcp-udp-transport/.gitignore b/core/tcp-udp-transport/.gitignore
deleted file mode 100644
index c0a7a54..0000000
--- a/core/tcp-udp-transport/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# Binaries for programs and plugins
-*.exe
-*.exe~
-*.dll
-*.so
-*.dylib
-bin
-testbin/*
-
-# Test binary, build with `go test -c`
-*.test
-
-# Output of the go coverage tool, specifically when used with LiteIDE
-*.out
-
-# Kubernetes Generated files - skip generated files, except for vendored files
-
-!vendor/**/zz_generated.*
-
-# editor and IDE paraphernalia
-.idea
-*.swp
-*.swo
-*~
diff --git a/core/tcp-udp-transport/Dockerfile b/core/tcp-udp-transport/Dockerfile
deleted file mode 100644
index b66cbeb..0000000
--- a/core/tcp-udp-transport/Dockerfile
+++ /dev/null
@@ -1,28 +0,0 @@
-# # Build the manager binary
-# FROM golang:1.18 as builder
-
-# WORKDIR /workspace
-# # Copy the Go Modules manifests
-# COPY go.mod go.mod
-# COPY go.sum go.sum
-# # cache deps before building and copying source so that we don't need to re-download as much
-# # and so that source changes don't invalidate our downloaded layer
-# RUN go mod download
-
-# # Copy the go source
-# COPY main.go main.go
-# COPY api/ api/
-# COPY controllers/ controllers/
-
-# # Build
-# RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o manager main.go
-
-# Use distroless as minimal base image to package the manager binary
-# Refer to https://github.com/GoogleContainerTools/distroless for more details
-FROM gcr.io/distroless/static:nonroot
-ARG TARGETARCH
-WORKDIR /
-COPY manager_${TARGETARCH} manager
-USER 65532:65532
-
-ENTRYPOINT ["/manager"]
diff --git a/core/tcp-udp-transport/Makefile b/core/tcp-udp-transport/Makefile
deleted file mode 100644
index d6fe918..0000000
--- a/core/tcp-udp-transport/Makefile
+++ /dev/null
@@ -1,160 +0,0 @@
-
-# Image URL to use all building/pushing image targets
-IMG ?= giolekva/service-transport-controller:latest
-# ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary.
-ENVTEST_K8S_VERSION = 1.24.2
-
-# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
-ifeq (,$(shell go env GOBIN))
-GOBIN=$(shell go env GOPATH)/bin
-else
-GOBIN=$(shell go env GOBIN)
-endif
-
-# Setting SHELL to bash allows bash commands to be executed by recipes.
-# Options are set to exit when a recipe line exits non-zero or a piped command fails.
-SHELL = /usr/bin/env bash -o pipefail
-.SHELLFLAGS = -ec
-
-.PHONY: all
-all: build
-
-##@ General
-
-# The help target prints out all targets with their descriptions organized
-# beneath their categories. The categories are represented by '##@' and the
-# target descriptions by '##'. The awk commands is responsible for reading the
-# entire set of makefiles included in this invocation, looking for lines of the
-# file as xyz: ## something, and then pretty-format the target and help. Then,
-# if there's a line with ##@ something, that gets pretty-printed as a category.
-# More info on the usage of ANSI control characters for terminal formatting:
-# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters
-# More info on the awk command:
-# http://linuxcommand.org/lc3_adv_awk.php
-
-.PHONY: help
-help: ## Display this help.
- @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
-
-##@ Development
-
-.PHONY: manifests
-manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.
- $(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases
-
-.PHONY: generate
-generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
- $(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..."
-
-.PHONY: fmt
-fmt: ## Run go fmt against code.
- go fmt ./...
-
-.PHONY: vet
-vet: ## Run go vet against code.
- go vet ./...
-
-.PHONY: test
-test: manifests generate fmt vet envtest ## Run tests.
- KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" go test ./... -coverprofile cover.out
-
-##@ Build
-
-.PHONY: build
-build: generate fmt vet ## Build manager binary.
- go build -o bin/manager main.go
-
-.PHONY: run
-run: manifests generate fmt vet ## Run a controller from your host.
- go run ./main.go --ssh-key=/Users/lekva/.ssh/id_rsa
-
-clean:
- rm -rf manager_arm64 manager_amd64
-
-build_arm64: export CGO_ENABLED=0
-build_arm64: export GO111MODULE=on
-build_arm64: export GOOS=linux
-build_arm64: export GOARCH=arm64
-build_arm64:
- go build -a -o manager_arm64 main.go
-
-build_amd64: export CGO_ENABLED=0
-build_amd64: export GO111MODULE=on
-build_amd64: export GOOS=linux
-build_amd64: export GOARCH=amd64
-build_amd64:
- go build -a -o manager_amd64 main.go
-
-
-.PHONY: docker-build
-docker-build: test clean build_arm64 build_amd64 ## Build docker image with the manager.
- podman build --platform linux/arm64 --tag ${IMG}-arm64 .
- podman build --platform linux/amd64 --tag ${IMG}-amd64 .
-
-.PHONY: docker-push
-docker-push: ## Push docker image with the manager.
- podman push ${IMG}-arm64
- podman push ${IMG}-amd64
- podman manifest create ${IMG} ${IMG}-arm64 ${IMG}-amd64
- podman manifest push ${IMG} docker://docker.io/${IMG}
- podman manifest rm ${IMG}
-
-##@ Deployment
-
-ifndef ignore-not-found
- ignore-not-found = false
-endif
-
-.PHONY: install
-install: manifests kustomize ## Install CRDs into the K8s cluster specified in ~/.kube/config.
- $(KUSTOMIZE) build config/crd | kubectl apply -f -
-
-.PHONY: uninstall
-uninstall: manifests kustomize ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion.
- $(KUSTOMIZE) build config/crd | kubectl delete --ignore-not-found=$(ignore-not-found) -f -
-
-.PHONY: deploy
-deploy: manifests kustomize ## Deploy controller to the K8s cluster specified in ~/.kube/config.
- cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}
- $(KUSTOMIZE) build config/default | kubectl apply -f -
-
-.PHONY: undeploy
-undeploy: ## Undeploy controller from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion.
- $(KUSTOMIZE) build config/default | kubectl delete --ignore-not-found=$(ignore-not-found) -f -
-
-##@ Build Dependencies
-
-## Location to install dependencies to
-LOCALBIN ?= $(shell pwd)/bin
-$(LOCALBIN):
- mkdir -p $(LOCALBIN)
-
-## Tool Binaries
-KUSTOMIZE ?= $(LOCALBIN)/kustomize
-CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen
-ENVTEST ?= $(LOCALBIN)/setup-envtest
-
-## Tool Versions
-KUSTOMIZE_VERSION ?= v3.8.7
-CONTROLLER_TOOLS_VERSION ?= v0.9.2
-
-KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"
-.PHONY: kustomize
-kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
-$(KUSTOMIZE): $(LOCALBIN)
- test -s $(LOCALBIN)/kustomize || { curl -s $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); }
-
-.PHONY: controller-gen
-controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
-$(CONTROLLER_GEN): $(LOCALBIN)
- test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
-
-.PHONY: envtest
-envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.
-$(ENVTEST): $(LOCALBIN)
- test -s $(LOCALBIN)/setup-envtest || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest
-
-generate-helm-chart: manifests kustomize
- $(KUSTOMIZE) build config/crd > ../../charts/service-transport-controller/templates/crds.yaml
- cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}
- $(KUSTOMIZE) build config/default | sed 's/: tcp-udp-transport-system/: {{ .Release.Namespace }}/g' > ../../charts/service-transport-controller/templates/install.yaml
diff --git a/core/tcp-udp-transport/PROJECT b/core/tcp-udp-transport/PROJECT
deleted file mode 100644
index 0a4b0d5..0000000
--- a/core/tcp-udp-transport/PROJECT
+++ /dev/null
@@ -1,16 +0,0 @@
-domain: dodo.cloud
-layout:
-- go.kubebuilder.io/v3
-projectName: tcp-udp-transport
-repo: github.com/giolekva/pcloud
-resources:
-- api:
- crdVersion: v1
- namespaced: true
- controller: true
- domain: dodo.cloud
- group: transport
- kind: ServiceTransport
- path: github.com/giolekva/pcloud/api/v1
- version: v1
-version: "3"
diff --git a/core/tcp-udp-transport/README.md b/core/tcp-udp-transport/README.md
deleted file mode 100644
index a4870ca..0000000
--- a/core/tcp-udp-transport/README.md
+++ /dev/null
@@ -1,94 +0,0 @@
-# tcp-udp-transport
-// TODO(user): Add simple overview of use/purpose
-
-## Description
-// TODO(user): An in-depth paragraph about your project and overview of use
-
-## Getting Started
-You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster.
-**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows).
-
-### Running on the cluster
-1. Install Instances of Custom Resources:
-
-```sh
-kubectl apply -f config/samples/
-```
-
-2. Build and push your image to the location specified by `IMG`:
-
-```sh
-make docker-build docker-push IMG=<some-registry>/tcp-udp-transport:tag
-```
-
-3. Deploy the controller to the cluster with the image specified by `IMG`:
-
-```sh
-make deploy IMG=<some-registry>/tcp-udp-transport:tag
-```
-
-### Uninstall CRDs
-To delete the CRDs from the cluster:
-
-```sh
-make uninstall
-```
-
-### Undeploy controller
-UnDeploy the controller to the cluster:
-
-```sh
-make undeploy
-```
-
-## Contributing
-// TODO(user): Add detailed information on how you would like others to contribute to this project
-
-### How it works
-This project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/)
-
-It uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/)
-which provides a reconcile function responsible for synchronizing resources untile the desired state is reached on the cluster
-
-### Test It Out
-1. Install the CRDs into the cluster:
-
-```sh
-make install
-```
-
-2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running):
-
-```sh
-make run
-```
-
-**NOTE:** You can also run this in one step by running: `make install run`
-
-### Modifying the API definitions
-If you are editing the API definitions, generate the manifests such as CRs or CRDs using:
-
-```sh
-make manifests
-```
-
-**NOTE:** Run `make --help` for more information on all potential `make` targets
-
-More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html)
-
-## License
-
-Copyright 2023.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
diff --git a/core/tcp-udp-transport/api/v1/groupversion_info.go b/core/tcp-udp-transport/api/v1/groupversion_info.go
deleted file mode 100644
index cd9d336..0000000
--- a/core/tcp-udp-transport/api/v1/groupversion_info.go
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-Copyright 2023.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-// Package v1 contains API Schema definitions for the transport v1 API group
-//+kubebuilder:object:generate=true
-//+groupName=transport.dodo.cloud
-package v1
-
-import (
- "k8s.io/apimachinery/pkg/runtime/schema"
- "sigs.k8s.io/controller-runtime/pkg/scheme"
-)
-
-var (
- // GroupVersion is group version used to register these objects
- GroupVersion = schema.GroupVersion{Group: "transport.dodo.cloud", Version: "v1"}
-
- // SchemeBuilder is used to add go types to the GroupVersionKind scheme
- SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}
-
- // AddToScheme adds the types in this group-version to the given scheme.
- AddToScheme = SchemeBuilder.AddToScheme
-)
diff --git a/core/tcp-udp-transport/api/v1/servicetransport_types.go b/core/tcp-udp-transport/api/v1/servicetransport_types.go
deleted file mode 100644
index 6eb8222..0000000
--- a/core/tcp-udp-transport/api/v1/servicetransport_types.go
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-Copyright 2023.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package v1
-
-import (
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-)
-
-// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
-// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
-
-// ServiceTransportSpec defines the desired state of ServiceTransport
-type ServiceTransportSpec struct {
- // INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
- // Important: Run "make" to regenerate code after modifying this file
-
- // Foo is an example field of ServiceTransport. Edit servicetransport_types.go to remove/update
- Port int `json:"port,omitempty"`
- SourcePort int `json:"sourcePort,omitempty"`
- Protocol string `json:"protocol,omitempty"`
- Service string `json:"service,omitempty"`
- IngressClassName string `json:"ingressClassName,omitempty"`
-}
-
-// ServiceTransportStatus defines the observed state of ServiceTransport
-type ServiceTransportStatus struct {
- Port int `json:"port,omitempty"`
-}
-
-//+kubebuilder:object:root=true
-//+kubebuilder:subresource:status
-
-// ServiceTransport is the Schema for the servicetransports API
-type ServiceTransport struct {
- metav1.TypeMeta `json:",inline"`
- metav1.ObjectMeta `json:"metadata,omitempty"`
-
- Spec ServiceTransportSpec `json:"spec,omitempty"`
- Status ServiceTransportStatus `json:"status,omitempty"`
-}
-
-//+kubebuilder:object:root=true
-
-// ServiceTransportList contains a list of ServiceTransport
-type ServiceTransportList struct {
- metav1.TypeMeta `json:",inline"`
- metav1.ListMeta `json:"metadata,omitempty"`
- Items []ServiceTransport `json:"items"`
-}
-
-func init() {
- SchemeBuilder.Register(&ServiceTransport{}, &ServiceTransportList{})
-}
diff --git a/core/tcp-udp-transport/api/v1/zz_generated.deepcopy.go b/core/tcp-udp-transport/api/v1/zz_generated.deepcopy.go
deleted file mode 100644
index 3d6d9b1..0000000
--- a/core/tcp-udp-transport/api/v1/zz_generated.deepcopy.go
+++ /dev/null
@@ -1,115 +0,0 @@
-//go:build !ignore_autogenerated
-// +build !ignore_autogenerated
-
-/*
-Copyright 2023.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-// Code generated by controller-gen. DO NOT EDIT.
-
-package v1
-
-import (
- runtime "k8s.io/apimachinery/pkg/runtime"
-)
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ServiceTransport) DeepCopyInto(out *ServiceTransport) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
- out.Spec = in.Spec
- out.Status = in.Status
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceTransport.
-func (in *ServiceTransport) DeepCopy() *ServiceTransport {
- if in == nil {
- return nil
- }
- out := new(ServiceTransport)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *ServiceTransport) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- }
- return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ServiceTransportList) DeepCopyInto(out *ServiceTransportList) {
- *out = *in
- out.TypeMeta = in.TypeMeta
- in.ListMeta.DeepCopyInto(&out.ListMeta)
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]ServiceTransport, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
- }
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceTransportList.
-func (in *ServiceTransportList) DeepCopy() *ServiceTransportList {
- if in == nil {
- return nil
- }
- out := new(ServiceTransportList)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *ServiceTransportList) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- }
- return nil
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ServiceTransportSpec) DeepCopyInto(out *ServiceTransportSpec) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceTransportSpec.
-func (in *ServiceTransportSpec) DeepCopy() *ServiceTransportSpec {
- if in == nil {
- return nil
- }
- out := new(ServiceTransportSpec)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ServiceTransportStatus) DeepCopyInto(out *ServiceTransportStatus) {
- *out = *in
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceTransportStatus.
-func (in *ServiceTransportStatus) DeepCopy() *ServiceTransportStatus {
- if in == nil {
- return nil
- }
- out := new(ServiceTransportStatus)
- in.DeepCopyInto(out)
- return out
-}
diff --git a/core/tcp-udp-transport/config/crd/bases/transport.dodo.cloud_servicetransports.yaml b/core/tcp-udp-transport/config/crd/bases/transport.dodo.cloud_servicetransports.yaml
deleted file mode 100644
index a0c428e..0000000
--- a/core/tcp-udp-transport/config/crd/bases/transport.dodo.cloud_servicetransports.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- controller-gen.kubebuilder.io/version: v0.9.2
- creationTimestamp: null
- name: servicetransports.transport.dodo.cloud
-spec:
- group: transport.dodo.cloud
- names:
- kind: ServiceTransport
- listKind: ServiceTransportList
- plural: servicetransports
- singular: servicetransport
- scope: Namespaced
- versions:
- - name: v1
- schema:
- openAPIV3Schema:
- description: ServiceTransport is the Schema for the servicetransports API
- properties:
- apiVersion:
- description: 'APIVersion defines the versioned schema of this representation
- of an object. Servers should convert recognized schemas to the latest
- internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
- type: string
- kind:
- description: 'Kind is a string value representing the REST resource this
- object represents. Servers may infer this from the endpoint the client
- submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
- type: string
- metadata:
- type: object
- spec:
- description: ServiceTransportSpec defines the desired state of ServiceTransport
- properties:
- ingressClassName:
- type: string
- port:
- description: Foo is an example field of ServiceTransport. Edit servicetransport_types.go
- to remove/update
- type: integer
- protocol:
- type: string
- service:
- type: string
- sourcePort:
- type: integer
- type: object
- status:
- description: ServiceTransportStatus defines the observed state of ServiceTransport
- properties:
- port:
- type: integer
- type: object
- type: object
- served: true
- storage: true
- subresources:
- status: {}
diff --git a/core/tcp-udp-transport/config/crd/kustomization.yaml b/core/tcp-udp-transport/config/crd/kustomization.yaml
deleted file mode 100644
index b498870..0000000
--- a/core/tcp-udp-transport/config/crd/kustomization.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-# This kustomization.yaml is not intended to be run by itself,
-# since it depends on service name and namespace that are out of this kustomize package.
-# It should be run by config/default
-resources:
-- bases/transport.dodo.cloud_servicetransports.yaml
-#+kubebuilder:scaffold:crdkustomizeresource
-
-patchesStrategicMerge:
-# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix.
-# patches here are for enabling the conversion webhook for each CRD
-#- patches/webhook_in_servicetransports.yaml
-#+kubebuilder:scaffold:crdkustomizewebhookpatch
-
-# [CERTMANAGER] To enable cert-manager, uncomment all the sections with [CERTMANAGER] prefix.
-# patches here are for enabling the CA injection for each CRD
-#- patches/cainjection_in_servicetransports.yaml
-#+kubebuilder:scaffold:crdkustomizecainjectionpatch
-
-# the following config is for teaching kustomize how to do kustomization for CRDs.
-configurations:
-- kustomizeconfig.yaml
diff --git a/core/tcp-udp-transport/config/crd/kustomizeconfig.yaml b/core/tcp-udp-transport/config/crd/kustomizeconfig.yaml
deleted file mode 100644
index ec5c150..0000000
--- a/core/tcp-udp-transport/config/crd/kustomizeconfig.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
-# This file is for teaching kustomize how to substitute name and namespace reference in CRD
-nameReference:
-- kind: Service
- version: v1
- fieldSpecs:
- - kind: CustomResourceDefinition
- version: v1
- group: apiextensions.k8s.io
- path: spec/conversion/webhook/clientConfig/service/name
-
-namespace:
-- kind: CustomResourceDefinition
- version: v1
- group: apiextensions.k8s.io
- path: spec/conversion/webhook/clientConfig/service/namespace
- create: false
-
-varReference:
-- path: metadata/annotations
diff --git a/core/tcp-udp-transport/config/crd/patches/cainjection_in_servicetransports.yaml b/core/tcp-udp-transport/config/crd/patches/cainjection_in_servicetransports.yaml
deleted file mode 100644
index 1349742..0000000
--- a/core/tcp-udp-transport/config/crd/patches/cainjection_in_servicetransports.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-# The following patch adds a directive for certmanager to inject CA into the CRD
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME)
- name: servicetransports.transport.dodo.cloud
diff --git a/core/tcp-udp-transport/config/crd/patches/webhook_in_servicetransports.yaml b/core/tcp-udp-transport/config/crd/patches/webhook_in_servicetransports.yaml
deleted file mode 100644
index 85c91ea..0000000
--- a/core/tcp-udp-transport/config/crd/patches/webhook_in_servicetransports.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-# The following patch enables a conversion webhook for the CRD
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- name: servicetransports.transport.dodo.cloud
-spec:
- conversion:
- strategy: Webhook
- webhook:
- clientConfig:
- service:
- namespace: system
- name: webhook-service
- path: /convert
- conversionReviewVersions:
- - v1
diff --git a/core/tcp-udp-transport/config/default/kustomization.yaml b/core/tcp-udp-transport/config/default/kustomization.yaml
deleted file mode 100644
index 51f6249..0000000
--- a/core/tcp-udp-transport/config/default/kustomization.yaml
+++ /dev/null
@@ -1,74 +0,0 @@
-# Adds namespace to all resources.
-namespace: tcp-udp-transport-system
-
-# Value of this field is prepended to the
-# names of all resources, e.g. a deployment named
-# "wordpress" becomes "alices-wordpress".
-# Note that it should also match with the prefix (text before '-') of the namespace
-# field above.
-namePrefix: tcp-udp-transport-
-
-# Labels to add to all resources and selectors.
-#commonLabels:
-# someName: someValue
-
-bases:
-- ../crd
-- ../rbac
-- ../manager
-# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in
-# crd/kustomization.yaml
-#- ../webhook
-# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'. 'WEBHOOK' components are required.
-#- ../certmanager
-# [PROMETHEUS] To enable prometheus monitor, uncomment all sections with 'PROMETHEUS'.
-#- ../prometheus
-
-patchesStrategicMerge:
-# Protect the /metrics endpoint by putting it behind auth.
-# If you want your controller-manager to expose the /metrics
-# endpoint w/o any authn/z, please comment the following line.
-- manager_auth_proxy_patch.yaml
-
-# Mount the controller config file for loading manager configurations
-# through a ComponentConfig type
-#- manager_config_patch.yaml
-
-# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in
-# crd/kustomization.yaml
-#- manager_webhook_patch.yaml
-
-# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'.
-# Uncomment 'CERTMANAGER' sections in crd/kustomization.yaml to enable the CA injection in the admission webhooks.
-# 'CERTMANAGER' needs to be enabled to use ca injection
-#- webhookcainjection_patch.yaml
-
-# the following config is for teaching kustomize how to do var substitution
-vars:
-# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER' prefix.
-#- name: CERTIFICATE_NAMESPACE # namespace of the certificate CR
-# objref:
-# kind: Certificate
-# group: cert-manager.io
-# version: v1
-# name: serving-cert # this name should match the one in certificate.yaml
-# fieldref:
-# fieldpath: metadata.namespace
-#- name: CERTIFICATE_NAME
-# objref:
-# kind: Certificate
-# group: cert-manager.io
-# version: v1
-# name: serving-cert # this name should match the one in certificate.yaml
-#- name: SERVICE_NAMESPACE # namespace of the service
-# objref:
-# kind: Service
-# version: v1
-# name: webhook-service
-# fieldref:
-# fieldpath: metadata.namespace
-#- name: SERVICE_NAME
-# objref:
-# kind: Service
-# version: v1
-# name: webhook-service
diff --git a/core/tcp-udp-transport/config/default/manager_auth_proxy_patch.yaml b/core/tcp-udp-transport/config/default/manager_auth_proxy_patch.yaml
deleted file mode 100644
index cec149a..0000000
--- a/core/tcp-udp-transport/config/default/manager_auth_proxy_patch.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-# This patch inject a sidecar container which is a HTTP proxy for the
-# controller manager, it performs RBAC authorization against the Kubernetes API using SubjectAccessReviews.
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: controller-manager
- namespace: system
-spec:
- template:
- spec:
- containers:
- - name: kube-rbac-proxy
- securityContext:
- allowPrivilegeEscalation: false
- capabilities:
- drop:
- - "ALL"
- image: gcr.io/kubebuilder/kube-rbac-proxy:v0.13.0
- args:
- - "--secure-listen-address=0.0.0.0:8443"
- - "--upstream=http://127.0.0.1:8080/"
- - "--logtostderr=true"
- - "--v=0"
- ports:
- - containerPort: 8443
- protocol: TCP
- name: https
- resources:
- limits:
- cpu: 500m
- memory: 128Mi
- requests:
- cpu: 5m
- memory: 64Mi
- - name: manager
- args:
- - "--health-probe-bind-address=:8081"
- - "--metrics-bind-address=127.0.0.1:8080"
- - "--leader-elect"
diff --git a/core/tcp-udp-transport/config/default/manager_config_patch.yaml b/core/tcp-udp-transport/config/default/manager_config_patch.yaml
deleted file mode 100644
index 6c40015..0000000
--- a/core/tcp-udp-transport/config/default/manager_config_patch.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: controller-manager
- namespace: system
-spec:
- template:
- spec:
- containers:
- - name: manager
- args:
- - "--config=controller_manager_config.yaml"
- volumeMounts:
- - name: manager-config
- mountPath: /controller_manager_config.yaml
- subPath: controller_manager_config.yaml
- volumes:
- - name: manager-config
- configMap:
- name: manager-config
diff --git a/core/tcp-udp-transport/config/manager/controller_manager_config.yaml b/core/tcp-udp-transport/config/manager/controller_manager_config.yaml
deleted file mode 100644
index 8d7e816..0000000
--- a/core/tcp-udp-transport/config/manager/controller_manager_config.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: controller-runtime.sigs.k8s.io/v1alpha1
-kind: ControllerManagerConfig
-health:
- healthProbeBindAddress: :8081
-metrics:
- bindAddress: 127.0.0.1:8080
-webhook:
- port: 9443
-leaderElection:
- leaderElect: true
- resourceName: 798a733c.dodo.cloud
-# leaderElectionReleaseOnCancel defines if the leader should step down volume
-# when the Manager ends. This requires the binary to immediately end when the
-# Manager is stopped, otherwise, this setting is unsafe. Setting this significantly
-# speeds up voluntary leader transitions as the new leader don't have to wait
-# LeaseDuration time first.
-# In the default scaffold provided, the program ends immediately after
-# the manager stops, so would be fine to enable this option. However,
-# if you are doing or is intended to do any operation such as perform cleanups
-# after the manager stops then its usage might be unsafe.
-# leaderElectionReleaseOnCancel: true
diff --git a/core/tcp-udp-transport/config/manager/kustomization.yaml b/core/tcp-udp-transport/config/manager/kustomization.yaml
deleted file mode 100644
index 0973e2a..0000000
--- a/core/tcp-udp-transport/config/manager/kustomization.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-resources:
-- manager.yaml
-
-generatorOptions:
- disableNameSuffixHash: true
-
-configMapGenerator:
-- files:
- - controller_manager_config.yaml
- name: manager-config
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-images:
-- name: controller
- newName: giolekva/service-transport-controller
- newTag: latest
diff --git a/core/tcp-udp-transport/config/manager/manager.yaml b/core/tcp-udp-transport/config/manager/manager.yaml
deleted file mode 100644
index 878ad48..0000000
--- a/core/tcp-udp-transport/config/manager/manager.yaml
+++ /dev/null
@@ -1,70 +0,0 @@
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- control-plane: controller-manager
- name: system
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: controller-manager
- namespace: system
- labels:
- control-plane: controller-manager
-spec:
- selector:
- matchLabels:
- control-plane: controller-manager
- replicas: 1
- template:
- metadata:
- annotations:
- kubectl.kubernetes.io/default-container: manager
- labels:
- control-plane: controller-manager
- spec:
- securityContext:
- runAsNonRoot: true
- # TODO(user): For common cases that do not require escalating privileges
- # it is recommended to ensure that all your Pods/Containers are restrictive.
- # More info: https://kubernetes.io/docs/concepts/security/pod-security-standards/#restricted
- # Please uncomment the following code if your project does NOT have to work on old Kubernetes
- # versions < 1.19 or on vendors versions which do NOT support this field by default (i.e. Openshift < 4.11 ).
- # seccompProfile:
- # type: RuntimeDefault
- containers:
- - command:
- - /manager
- args:
- - --leader-elect
- image: controller:latest
- name: manager
- securityContext:
- allowPrivilegeEscalation: false
- capabilities:
- drop:
- - "ALL"
- livenessProbe:
- httpGet:
- path: /healthz
- port: 8081
- initialDelaySeconds: 15
- periodSeconds: 20
- readinessProbe:
- httpGet:
- path: /readyz
- port: 8081
- initialDelaySeconds: 5
- periodSeconds: 10
- # TODO(user): Configure the resources accordingly based on the project requirements.
- # More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
- resources:
- limits:
- cpu: 500m
- memory: 128Mi
- requests:
- cpu: 10m
- memory: 64Mi
- serviceAccountName: controller-manager
- terminationGracePeriodSeconds: 10
diff --git a/core/tcp-udp-transport/config/prometheus/kustomization.yaml b/core/tcp-udp-transport/config/prometheus/kustomization.yaml
deleted file mode 100644
index ed13716..0000000
--- a/core/tcp-udp-transport/config/prometheus/kustomization.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-resources:
-- monitor.yaml
diff --git a/core/tcp-udp-transport/config/prometheus/monitor.yaml b/core/tcp-udp-transport/config/prometheus/monitor.yaml
deleted file mode 100644
index d19136a..0000000
--- a/core/tcp-udp-transport/config/prometheus/monitor.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-# Prometheus Monitor Service (Metrics)
-apiVersion: monitoring.coreos.com/v1
-kind: ServiceMonitor
-metadata:
- labels:
- control-plane: controller-manager
- name: controller-manager-metrics-monitor
- namespace: system
-spec:
- endpoints:
- - path: /metrics
- port: https
- scheme: https
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
- tlsConfig:
- insecureSkipVerify: true
- selector:
- matchLabels:
- control-plane: controller-manager
diff --git a/core/tcp-udp-transport/config/rbac/auth_proxy_client_clusterrole.yaml b/core/tcp-udp-transport/config/rbac/auth_proxy_client_clusterrole.yaml
deleted file mode 100644
index 51a75db..0000000
--- a/core/tcp-udp-transport/config/rbac/auth_proxy_client_clusterrole.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
- name: metrics-reader
-rules:
-- nonResourceURLs:
- - "/metrics"
- verbs:
- - get
diff --git a/core/tcp-udp-transport/config/rbac/auth_proxy_role.yaml b/core/tcp-udp-transport/config/rbac/auth_proxy_role.yaml
deleted file mode 100644
index 80e1857..0000000
--- a/core/tcp-udp-transport/config/rbac/auth_proxy_role.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
- name: proxy-role
-rules:
-- apiGroups:
- - authentication.k8s.io
- resources:
- - tokenreviews
- verbs:
- - create
-- apiGroups:
- - authorization.k8s.io
- resources:
- - subjectaccessreviews
- verbs:
- - create
diff --git a/core/tcp-udp-transport/config/rbac/auth_proxy_role_binding.yaml b/core/tcp-udp-transport/config/rbac/auth_proxy_role_binding.yaml
deleted file mode 100644
index ec7acc0..0000000
--- a/core/tcp-udp-transport/config/rbac/auth_proxy_role_binding.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
- name: proxy-rolebinding
-roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: proxy-role
-subjects:
-- kind: ServiceAccount
- name: controller-manager
- namespace: system
diff --git a/core/tcp-udp-transport/config/rbac/auth_proxy_service.yaml b/core/tcp-udp-transport/config/rbac/auth_proxy_service.yaml
deleted file mode 100644
index 71f1797..0000000
--- a/core/tcp-udp-transport/config/rbac/auth_proxy_service.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
- labels:
- control-plane: controller-manager
- name: controller-manager-metrics-service
- namespace: system
-spec:
- ports:
- - name: https
- port: 8443
- protocol: TCP
- targetPort: https
- selector:
- control-plane: controller-manager
diff --git a/core/tcp-udp-transport/config/rbac/kustomization.yaml b/core/tcp-udp-transport/config/rbac/kustomization.yaml
deleted file mode 100644
index 731832a..0000000
--- a/core/tcp-udp-transport/config/rbac/kustomization.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-resources:
-# All RBAC will be applied under this service account in
-# the deployment namespace. You may comment out this resource
-# if your manager will use a service account that exists at
-# runtime. Be sure to update RoleBinding and ClusterRoleBinding
-# subjects if changing service account names.
-- service_account.yaml
-- role.yaml
-- role_binding.yaml
-- leader_election_role.yaml
-- leader_election_role_binding.yaml
-# Comment the following 4 lines if you want to disable
-# the auth proxy (https://github.com/brancz/kube-rbac-proxy)
-# which protects your /metrics endpoint.
-- auth_proxy_service.yaml
-- auth_proxy_role.yaml
-- auth_proxy_role_binding.yaml
-- auth_proxy_client_clusterrole.yaml
diff --git a/core/tcp-udp-transport/config/rbac/leader_election_role.yaml b/core/tcp-udp-transport/config/rbac/leader_election_role.yaml
deleted file mode 100644
index 4190ec8..0000000
--- a/core/tcp-udp-transport/config/rbac/leader_election_role.yaml
+++ /dev/null
@@ -1,37 +0,0 @@
-# permissions to do leader election.
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
- name: leader-election-role
-rules:
-- apiGroups:
- - ""
- resources:
- - configmaps
- verbs:
- - get
- - list
- - watch
- - create
- - update
- - patch
- - delete
-- apiGroups:
- - coordination.k8s.io
- resources:
- - leases
- verbs:
- - get
- - list
- - watch
- - create
- - update
- - patch
- - delete
-- apiGroups:
- - ""
- resources:
- - events
- verbs:
- - create
- - patch
diff --git a/core/tcp-udp-transport/config/rbac/leader_election_role_binding.yaml b/core/tcp-udp-transport/config/rbac/leader_election_role_binding.yaml
deleted file mode 100644
index 1d1321e..0000000
--- a/core/tcp-udp-transport/config/rbac/leader_election_role_binding.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
- name: leader-election-rolebinding
-roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: Role
- name: leader-election-role
-subjects:
-- kind: ServiceAccount
- name: controller-manager
- namespace: system
diff --git a/core/tcp-udp-transport/config/rbac/role.yaml b/core/tcp-udp-transport/config/rbac/role.yaml
deleted file mode 100644
index f3f54b8..0000000
--- a/core/tcp-udp-transport/config/rbac/role.yaml
+++ /dev/null
@@ -1,33 +0,0 @@
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
- creationTimestamp: null
- name: manager-role
-rules:
-- apiGroups:
- - transport.dodo.cloud
- resources:
- - servicetransports
- verbs:
- - create
- - delete
- - get
- - list
- - patch
- - update
- - watch
-- apiGroups:
- - transport.dodo.cloud
- resources:
- - servicetransports/finalizers
- verbs:
- - update
-- apiGroups:
- - transport.dodo.cloud
- resources:
- - servicetransports/status
- verbs:
- - get
- - patch
- - update
diff --git a/core/tcp-udp-transport/config/rbac/role_binding.yaml b/core/tcp-udp-transport/config/rbac/role_binding.yaml
deleted file mode 100644
index 2070ede..0000000
--- a/core/tcp-udp-transport/config/rbac/role_binding.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
- name: manager-rolebinding
-roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: manager-role
-subjects:
-- kind: ServiceAccount
- name: controller-manager
- namespace: system
diff --git a/core/tcp-udp-transport/config/rbac/service_account.yaml b/core/tcp-udp-transport/config/rbac/service_account.yaml
deleted file mode 100644
index 7cd6025..0000000
--- a/core/tcp-udp-transport/config/rbac/service_account.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-apiVersion: v1
-kind: ServiceAccount
-metadata:
- name: controller-manager
- namespace: system
diff --git a/core/tcp-udp-transport/config/rbac/servicetransport_editor_role.yaml b/core/tcp-udp-transport/config/rbac/servicetransport_editor_role.yaml
deleted file mode 100644
index 80db4ee..0000000
--- a/core/tcp-udp-transport/config/rbac/servicetransport_editor_role.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-# permissions for end users to edit servicetransports.
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
- name: servicetransport-editor-role
-rules:
-- apiGroups:
- - transport.dodo.cloud
- resources:
- - servicetransports
- verbs:
- - create
- - delete
- - get
- - list
- - patch
- - update
- - watch
-- apiGroups:
- - transport.dodo.cloud
- resources:
- - servicetransports/status
- verbs:
- - get
diff --git a/core/tcp-udp-transport/config/rbac/servicetransport_viewer_role.yaml b/core/tcp-udp-transport/config/rbac/servicetransport_viewer_role.yaml
deleted file mode 100644
index a15bbea..0000000
--- a/core/tcp-udp-transport/config/rbac/servicetransport_viewer_role.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-# permissions for end users to view servicetransports.
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
- name: servicetransport-viewer-role
-rules:
-- apiGroups:
- - transport.dodo.cloud
- resources:
- - servicetransports
- verbs:
- - get
- - list
- - watch
-- apiGroups:
- - transport.dodo.cloud
- resources:
- - servicetransports/status
- verbs:
- - get
diff --git a/core/tcp-udp-transport/config/samples/transport_v1_servicetransport.yaml b/core/tcp-udp-transport/config/samples/transport_v1_servicetransport.yaml
deleted file mode 100644
index 6a816ea..0000000
--- a/core/tcp-udp-transport/config/samples/transport_v1_servicetransport.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-apiVersion: transport.dodo.cloud/v1
-kind: ServiceTransport
-metadata:
- name: test
- namespace: qwe-app-soft-serve
-spec:
- port: 22
- protocol: tcp
- service: soft-serve
- ingressClassName: pcloud-ingress-public
diff --git a/core/tcp-udp-transport/controllers/servicetransport_controller.go b/core/tcp-udp-transport/controllers/servicetransport_controller.go
deleted file mode 100644
index c6b44bc..0000000
--- a/core/tcp-udp-transport/controllers/servicetransport_controller.go
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
-Copyright 2023.
-
-Licensed under the Apache License, Version 2.0 (the "License");time
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package controllers
-
-import (
- "context"
- "fmt"
- "math/rand"
- "net"
- "strconv"
- "strings"
- "time"
-
- "github.com/go-git/go-billy/v5/memfs"
- "github.com/go-git/go-git/v5"
- gitssh "github.com/go-git/go-git/v5/plumbing/transport/ssh"
- "github.com/go-git/go-git/v5/storage/memory"
- "golang.org/x/crypto/ssh"
- "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
- "k8s.io/apimachinery/pkg/labels"
- "k8s.io/apimachinery/pkg/runtime"
- "k8s.io/apimachinery/pkg/selection"
- ctrl "sigs.k8s.io/controller-runtime"
- "sigs.k8s.io/controller-runtime/pkg/client"
- "sigs.k8s.io/controller-runtime/pkg/log"
-
- transportv1 "github.com/giolekva/pcloud/api/v1"
- installer "github.com/giolekva/pcloud/core/installer"
-)
-
-// ServiceTransportReconciler reconciles a ServiceTransport object
-type ServiceTransportReconciler struct {
- client.Client
- Scheme *runtime.Scheme
- Signer ssh.Signer
-}
-
-//+kubebuilder:rbac:groups=transport.dodo.cloud,resources=servicetransports,verbs=get;list;watch;create;update;patch;delete
-//+kubebuilder:rbac:groups=transport.dodo.cloud,resources=servicetransports/status,verbs=get;update;patch
-//+kubebuilder:rbac:groups=transport.dodo.cloud,resources=servicetransports/finalizers,verbs=update
-
-// Reconcile is part of the main kubernetes reconciliation loop which aims to
-// move the current state of the cluster closer to the desired state.
-// TODO(user): Modify the Reconcile function to compare the state specified by
-// the ServiceTransport object against the actual cluster state, and then
-// perform operations to make the cluster state reflect the state specified by
-// the user.
-//
-// For more details, check Reconcile and its Result here:
-// - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.12.2/pkg/reconcile
-func (r *ServiceTransportReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
- logger := log.FromContext(ctx)
- logger.Info(req.String())
-
- resource := &transportv1.ServiceTransport{}
- if err := r.Get(context.Background(), client.ObjectKey{
- Namespace: req.Namespace,
- Name: req.Name,
- }, resource); err != nil {
- fmt.Println(err)
- return ctrl.Result{RequeueAfter: time.Minute}, err
- }
- fmt.Printf("%+v\n", resource)
- if resource.Status.Port != 0 {
- return ctrl.Result{}, nil
- }
-
- ingressClassName := resource.Spec.IngressClassName
- labelSelector, err := labels.NewRequirement(
- "dodo.cloud/ingressClassName",
- selection.Equals,
- []string{ingressClassName},
- )
- if err != nil {
- return ctrl.Result{RequeueAfter: time.Minute}, err
- }
- releases := unstructured.UnstructuredList{
- Object: map[string]interface{}{
- "kind": "HelmRelease",
- "apiVersion": "helm.toolkit.fluxcd.io/v2beta1",
- },
- Items: []unstructured.Unstructured{},
- }
- if err := r.List(context.Background(), &releases, &client.ListOptions{
- LabelSelector: labels.NewSelector().Add(*labelSelector),
- }); err != nil {
- return ctrl.Result{RequeueAfter: time.Minute}, err
- }
- if len(releases.Items) == 0 {
- return ctrl.Result{RequeueAfter: time.Minute}, fmt.Errorf("Ingress %s not found", ingressClassName)
- }
- if len(releases.Items) > 1 {
- return ctrl.Result{RequeueAfter: time.Minute}, fmt.Errorf("Found more than one ingress %s", ingressClassName)
- }
- rel := releases.Items[0].Object
- repoAddr, repoPath, err := extractRepoInfo(rel)
- if err != nil {
- return ctrl.Result{RequeueAfter: time.Minute}, err
- }
- repo, err := cloneRepo(repoAddr, r.Signer)
- if err != nil {
- return ctrl.Result{RequeueAfter: time.Minute}, err
- }
- repoIO := soft.NewRepoIO(repo, r.Signer)
- data, err := repoIO.ReadYaml(repoPath)
- if err != nil {
- return ctrl.Result{RequeueAfter: time.Minute}, err
- }
- def, ok := data.(map[string]any)
- if !ok {
- return ctrl.Result{RequeueAfter: time.Minute}, fmt.Errorf("Not map")
- }
- spec, ok := def["spec"].(map[string]any)
- if !ok {
- return ctrl.Result{RequeueAfter: time.Minute}, fmt.Errorf("Not map")
- }
- values, ok := spec["values"].(map[string]any)
- if !ok {
- return ctrl.Result{RequeueAfter: time.Minute}, fmt.Errorf("Not map")
- }
- protocol := strings.ToLower(resource.Spec.Protocol)
- var m map[string]any
- k, has := values[protocol]
- if !has {
- m = make(map[string]any)
- values[protocol] = m
- } else {
- m, ok = k.(map[string]any)
- if !ok {
- return ctrl.Result{RequeueAfter: time.Minute}, fmt.Errorf("Not map")
- }
- }
- var sourcePort int
- if resource.Spec.SourcePort != 0 {
- sourcePort = resource.Spec.SourcePort
- if _, ok := m[strconv.Itoa(sourcePort)]; ok {
- return ctrl.Result{RequeueAfter: time.Minute}, fmt.Errorf("Source port %d is already taken", sourcePort)
- }
- } else {
- for {
- sourcePort = rand.Intn(65536-1000) + 1000
- if _, ok := m[strconv.Itoa(sourcePort)]; !ok {
- break
- }
- }
- }
- dest := fmt.Sprintf("%s/%s:%d", resource.ObjectMeta.Namespace, resource.Spec.Service, resource.Spec.Port)
- m[strconv.Itoa(sourcePort)] = dest
- if err := repoIO.WriteYaml(repoPath, def); err != nil {
- return ctrl.Result{RequeueAfter: time.Minute}, err
- }
- if err := repoIO.CommitAndPush(fmt.Sprintf("%s transport for %s", protocol, dest)); err != nil {
- return ctrl.Result{RequeueAfter: time.Minute}, err
- }
- resource.Status.Port = sourcePort
- if err := r.Status().Update(context.Background(), resource); err != nil {
- return ctrl.Result{RequeueAfter: time.Minute}, err
- }
-
- return ctrl.Result{}, nil
-}
-
-// SetupWithManager sets up the controller with the Manager.
-func (r *ServiceTransportReconciler) SetupWithManager(mgr ctrl.Manager) error {
- return ctrl.NewControllerManagedBy(mgr).
- For(&transportv1.ServiceTransport{}).
- Complete(r)
-}
-
-func extractRepoInfo(o map[string]any) (string, string, error) {
- metadata, ok := o["metadata"].(map[string]any)
- if !ok {
- return "", "", fmt.Errorf("Not map")
- }
- annotations, ok := metadata["annotations"].(map[string]any)
- if !ok {
- return "", "", fmt.Errorf("Not map")
- }
- repoAddr, ok := annotations["dodo.cloud/releaseSourceRepo"].(string)
- if !ok {
- return "", "", fmt.Errorf("Not string")
- }
- repoPath, ok := annotations["dodo.cloud/releasePath"].(string)
- if !ok {
- return "", "", fmt.Errorf("Not string")
- }
- return repoAddr, repoPath, nil
-}
-
-func cloneRepo(address string, signer ssh.Signer) (*git.Repository, error) {
- return git.Clone(memory.NewStorage(), memfs.New(), &git.CloneOptions{
- URL: address,
- Auth: auth(signer),
- RemoteName: "origin",
- InsecureSkipTLS: true,
- })
-}
-
-func auth(signer ssh.Signer) *gitssh.PublicKeys {
- return &gitssh.PublicKeys{
- Signer: signer,
- HostKeyCallbackHelper: gitssh.HostKeyCallbackHelper{
- HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error {
- // TODO(giolekva): verify server public key
- // fmt.Printf("## %s || %s -- \n", serverPubKey, ssh.MarshalAuthorizedKey(key))
- return nil
- },
- },
- }
-}
diff --git a/core/tcp-udp-transport/controllers/suite_test.go b/core/tcp-udp-transport/controllers/suite_test.go
deleted file mode 100644
index 83920b0..0000000
--- a/core/tcp-udp-transport/controllers/suite_test.go
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-Copyright 2023.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package controllers
-
-import (
- "path/filepath"
- "testing"
-
- . "github.com/onsi/ginkgo"
- . "github.com/onsi/gomega"
-
- "k8s.io/client-go/kubernetes/scheme"
- "k8s.io/client-go/rest"
- "sigs.k8s.io/controller-runtime/pkg/client"
- "sigs.k8s.io/controller-runtime/pkg/envtest"
- "sigs.k8s.io/controller-runtime/pkg/envtest/printer"
- logf "sigs.k8s.io/controller-runtime/pkg/log"
- "sigs.k8s.io/controller-runtime/pkg/log/zap"
-
- transportv1 "github.com/giolekva/pcloud/api/v1"
- //+kubebuilder:scaffold:imports
-)
-
-// These tests use Ginkgo (BDD-style Go testing framework). Refer to
-// http://onsi.github.io/ginkgo/ to learn more about Ginkgo.
-
-var cfg *rest.Config
-var k8sClient client.Client
-var testEnv *envtest.Environment
-
-func TestAPIs(t *testing.T) {
- RegisterFailHandler(Fail)
-
- RunSpecsWithDefaultAndCustomReporters(t,
- "Controller Suite",
- []Reporter{printer.NewlineReporter{}})
-}
-
-var _ = BeforeSuite(func() {
- logf.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true)))
-
- By("bootstrapping test environment")
- testEnv = &envtest.Environment{
- CRDDirectoryPaths: []string{filepath.Join("..", "config", "crd", "bases")},
- ErrorIfCRDPathMissing: true,
- }
-
- var err error
- // cfg is defined in this file globally.
- cfg, err = testEnv.Start()
- Expect(err).NotTo(HaveOccurred())
- Expect(cfg).NotTo(BeNil())
-
- err = transportv1.AddToScheme(scheme.Scheme)
- Expect(err).NotTo(HaveOccurred())
-
- //+kubebuilder:scaffold:scheme
-
- k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme})
- Expect(err).NotTo(HaveOccurred())
- Expect(k8sClient).NotTo(BeNil())
-
-}, 60)
-
-var _ = AfterSuite(func() {
- By("tearing down the test environment")
- err := testEnv.Stop()
- Expect(err).NotTo(HaveOccurred())
-})
diff --git a/core/tcp-udp-transport/go.mod b/core/tcp-udp-transport/go.mod
deleted file mode 100644
index 8791bc3..0000000
--- a/core/tcp-udp-transport/go.mod
+++ /dev/null
@@ -1,108 +0,0 @@
-module github.com/giolekva/pcloud
-
-go 1.18
-
-require (
- github.com/go-git/go-billy/v5 v5.4.1
- github.com/go-git/go-git/v5 v5.7.0
- github.com/onsi/ginkgo v1.16.5
- github.com/onsi/gomega v1.18.1
- golang.org/x/crypto v0.9.0
- k8s.io/apimachinery v0.24.2
- k8s.io/client-go v0.24.2
- sigs.k8s.io/controller-runtime v0.12.2
-)
-
-require (
- cloud.google.com/go v0.81.0 // indirect
- github.com/Azure/go-autorest v14.2.0+incompatible // indirect
- github.com/Azure/go-autorest/autorest v0.11.18 // indirect
- github.com/Azure/go-autorest/autorest/adal v0.9.13 // indirect
- github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
- github.com/Azure/go-autorest/logger v0.2.1 // indirect
- github.com/Azure/go-autorest/tracing v0.6.0 // indirect
- github.com/Masterminds/goutils v1.1.1 // indirect
- github.com/Masterminds/semver/v3 v3.1.1 // indirect
- github.com/Masterminds/sprig/v3 v3.2.2 // indirect
- github.com/Microsoft/go-winio v0.5.2 // indirect
- github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 // indirect
- github.com/PuerkitoBio/purell v1.1.1 // indirect
- github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
- github.com/acomagu/bufpipe v1.0.4 // indirect
- github.com/beorn7/perks v1.0.1 // indirect
- github.com/cespare/xxhash/v2 v2.1.2 // indirect
- github.com/cloudflare/circl v1.3.3 // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/emicklei/go-restful v2.9.5+incompatible // indirect
- github.com/emirpasic/gods v1.18.1 // indirect
- github.com/evanphx/json-patch v4.12.0+incompatible // indirect
- github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect
- github.com/fsnotify/fsnotify v1.5.1 // indirect
- github.com/giolekva/pcloud/core/installer v0.0.0-20230711074902-1506a4f79a87 // indirect
- github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
- github.com/go-logr/logr v1.2.2 // indirect
- github.com/go-logr/zapr v1.2.0 // indirect
- github.com/go-openapi/jsonpointer v0.19.5 // indirect
- github.com/go-openapi/jsonreference v0.19.5 // indirect
- github.com/go-openapi/swag v0.19.14 // indirect
- github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/golang/protobuf v1.5.2 // indirect
- github.com/google/gnostic v0.5.7-v3refs // indirect
- github.com/google/go-cmp v0.5.9 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
- github.com/google/uuid v1.2.0 // indirect
- github.com/huandu/xstrings v1.3.2 // indirect
- github.com/imdario/mergo v0.3.15 // indirect
- github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
- github.com/josharian/intern v1.0.0 // indirect
- github.com/json-iterator/go v1.1.12 // indirect
- github.com/kevinburke/ssh_config v1.2.0 // indirect
- github.com/mailru/easyjson v0.7.6 // indirect
- github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
- github.com/mitchellh/copystructure v1.2.0 // indirect
- github.com/mitchellh/reflectwalk v1.0.2 // indirect
- github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
- github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
- github.com/nxadm/tail v1.4.8 // indirect
- github.com/pjbgf/sha1cd v0.3.0 // indirect
- github.com/pkg/errors v0.9.1 // indirect
- github.com/prometheus/client_golang v1.12.1 // indirect
- github.com/prometheus/client_model v0.2.0 // indirect
- github.com/prometheus/common v0.32.1 // indirect
- github.com/prometheus/procfs v0.7.3 // indirect
- github.com/sergi/go-diff v1.1.0 // indirect
- github.com/shopspring/decimal v1.2.0 // indirect
- github.com/skeema/knownhosts v1.1.1 // indirect
- github.com/spf13/cast v1.4.1 // indirect
- github.com/spf13/pflag v1.0.5 // indirect
- github.com/xanzy/ssh-agent v0.3.3 // indirect
- go.uber.org/atomic v1.7.0 // indirect
- go.uber.org/multierr v1.6.0 // indirect
- go.uber.org/zap v1.19.1 // indirect
- golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 // indirect
- golang.org/x/net v0.10.0 // indirect
- golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect
- golang.org/x/sys v0.8.0 // indirect
- golang.org/x/term v0.8.0 // indirect
- golang.org/x/text v0.9.0 // indirect
- golang.org/x/time v0.3.0 // indirect
- gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect
- google.golang.org/appengine v1.6.7 // indirect
- google.golang.org/protobuf v1.27.1 // indirect
- gopkg.in/inf.v0 v0.9.1 // indirect
- gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
- gopkg.in/warnings.v0 v0.1.2 // indirect
- gopkg.in/yaml.v2 v2.4.0 // indirect
- gopkg.in/yaml.v3 v3.0.1 // indirect
- k8s.io/api v0.24.2 // indirect
- k8s.io/apiextensions-apiserver v0.24.2 // indirect
- k8s.io/component-base v0.24.2 // indirect
- k8s.io/klog/v2 v2.60.1 // indirect
- k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 // indirect
- k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 // indirect
- sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect
- sigs.k8s.io/yaml v1.3.0 // indirect
-)
diff --git a/core/tcp-udp-transport/go.sum b/core/tcp-udp-transport/go.sum
deleted file mode 100644
index 9de7eee..0000000
--- a/core/tcp-udp-transport/go.sum
+++ /dev/null
@@ -1,1078 +0,0 @@
-cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
-cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
-cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
-cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
-cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
-cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
-cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
-cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
-cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
-cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
-cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
-cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
-cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
-cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
-cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
-cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=
-cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=
-cloud.google.com/go v0.81.0 h1:at8Tk2zUz63cLPR0JPWm5vp77pEZmzxEQBEfRKn1VV8=
-cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=
-cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
-cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
-cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
-cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
-cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
-cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
-cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
-cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
-cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
-cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
-cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
-cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
-cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
-cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
-cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
-cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
-cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
-cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
-github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
-github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
-github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
-github.com/Azure/go-autorest/autorest v0.11.18 h1:90Y4srNYrwOtAgVo3ndrQkTYn6kf1Eg/AjTFJ8Is2aM=
-github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA=
-github.com/Azure/go-autorest/autorest/adal v0.9.13 h1:Mp5hbtOePIzM8pJVRa3YLrWWmZtoxRXqUEzCfJt3+/Q=
-github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M=
-github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw=
-github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
-github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk=
-github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
-github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg=
-github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
-github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
-github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
-github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
-github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
-github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
-github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
-github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
-github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8=
-github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk=
-github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA=
-github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
-github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
-github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
-github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
-github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 h1:ZK3C5DtzV2nVAQTx5S5jQvMeDqWtD1By5mOoyY/xJek=
-github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE=
-github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI=
-github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
-github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
-github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
-github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
-github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
-github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
-github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
-github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
-github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
-github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
-github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
-github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
-github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY=
-github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
-github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
-github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
-github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
-github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
-github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
-github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM=
-github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
-github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
-github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
-github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
-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/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
-github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
-github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
-github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
-github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
-github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
-github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
-github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
-github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
-github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I=
-github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs=
-github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
-github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo=
-github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA=
-github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI=
-github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
-github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
-github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
-github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
-github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
-github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
-github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
-github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
-github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
-github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
-github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
-github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
-github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
-github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0=
-github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
-github.com/emicklei/go-restful v2.9.5+incompatible h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk=
-github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
-github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
-github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
-github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
-github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
-github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
-github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=
-github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ=
-github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84=
-github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
-github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
-github.com/form3tech-oss/jwt-go v3.2.3+incompatible h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c=
-github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
-github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
-github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=
-github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
-github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg=
-github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ=
-github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/giolekva/pcloud/core/installer v0.0.0-20230709153857-402fff9531b2 h1:oPukHNi3IVU/RUw6K6Z6DS66lI6KY/5Z2T0q5qtmJsE=
-github.com/giolekva/pcloud/core/installer v0.0.0-20230709153857-402fff9531b2/go.mod h1:j8M4LIXCbhAzz3vHtpWeS2P81B6sf09cyYpjwzokLd8=
-github.com/giolekva/pcloud/core/installer v0.0.0-20230711074902-1506a4f79a87 h1:cQIYs7d+piGED3GllB6qlLcZ68zfCi8gthjGotPPvUc=
-github.com/giolekva/pcloud/core/installer v0.0.0-20230711074902-1506a4f79a87/go.mod h1:j8M4LIXCbhAzz3vHtpWeS2P81B6sf09cyYpjwzokLd8=
-github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY=
-github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
-github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
-github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4=
-github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg=
-github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8=
-github.com/go-git/go-git/v5 v5.7.0 h1:t9AudWVLmqzlo+4bqdf7GY+46SUuRsx59SboFxkq2aE=
-github.com/go-git/go-git/v5 v5.7.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhcZd8Fodw8=
-github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
-github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
-github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
-github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
-github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
-github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
-github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
-github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
-github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
-github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.2.2 h1:ahHml/yUpnlb96Rp8HCvtYVPY8ZYpxq3g7UYchIYwbs=
-github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/zapr v1.2.0 h1:n4JnPI1T3Qq1SFEi/F8rwLrZERp2bso19PJZDB9dayk=
-github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro=
-github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
-github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
-github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
-github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8=
-github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM=
-github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg=
-github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
-github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng=
-github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
-github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
-github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
-github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
-github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
-github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
-github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=
-github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
-github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
-github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
-github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=
-github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
-github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
-github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
-github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
-github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
-github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
-github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
-github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=
-github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
-github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
-github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
-github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA=
-github.com/google/cel-go v0.10.1/go.mod h1:U7ayypeSkw23szu4GaQTPJGx66c20mx8JklMSxrmI1w=
-github.com/google/cel-spec v0.6.0/go.mod h1:Nwjgxy5CbjlPrtCWjeDjUyKMl8w41YBYGjsyDdqk0xA=
-github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54=
-github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ=
-github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
-github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
-github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
-github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
-github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs=
-github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
-github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
-github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
-github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
-github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
-github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y=
-github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
-github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
-github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
-github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q=
-github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
-github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
-github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
-github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
-github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
-github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
-github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
-github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
-github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
-github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
-github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
-github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
-github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
-github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
-github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
-github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
-github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw=
-github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
-github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
-github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
-github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM=
-github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
-github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
-github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
-github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
-github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
-github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
-github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8=
-github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
-github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
-github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
-github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
-github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
-github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
-github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
-github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
-github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
-github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
-github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
-github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
-github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
-github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
-github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
-github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
-github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
-github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
-github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
-github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
-github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
-github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
-github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA=
-github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A=
-github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA=
-github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
-github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
-github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
-github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI=
-github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
-github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
-github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
-github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
-github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
-github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
-github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
-github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
-github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
-github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
-github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
-github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
-github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
-github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
-github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw=
-github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
-github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
-github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
-github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
-github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
-github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
-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/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
-github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
-github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
-github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
-github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
-github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
-github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
-github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
-github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
-github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
-github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
-github.com/onsi/ginkgo/v2 v2.0.0 h1:CcuG/HvWNkkaqCUpJifQY8z7qEMBJya6aLPx6ftGyjQ=
-github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
-github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
-github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
-github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
-github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
-github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs=
-github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
-github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
-github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
-github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
-github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
-github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
-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/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
-github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
-github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
-github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
-github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
-github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
-github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
-github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk=
-github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
-github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=
-github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
-github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
-github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
-github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
-github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4=
-github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
-github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
-github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
-github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
-github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
-github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU=
-github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
-github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
-github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
-github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
-github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
-github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
-github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
-github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
-github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
-github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
-github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
-github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
-github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
-github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
-github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/skeema/knownhosts v1.1.1 h1:MTk78x9FPgDFVFkDLTrsnnfCJl7g1C/nnKvePgrIngE=
-github.com/skeema/knownhosts v1.1.1/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo=
-github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
-github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
-github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0=
-github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
-github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
-github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
-github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
-github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo=
-github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g=
-github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
-github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
-github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
-github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
-github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
-github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
-github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
-github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
-github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
-github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
-github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
-go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4=
-go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
-go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
-go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
-go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
-go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ=
-go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0=
-go.etcd.io/etcd/client/v3 v3.5.1/go.mod h1:OnjH4M8OnAotwaB2l9bVgZzRFKru7/ZMoS46OtKyd3Q=
-go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE=
-go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc=
-go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4=
-go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
-go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
-go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
-go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
-go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4=
-go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo=
-go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM=
-go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU=
-go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw=
-go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc=
-go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE=
-go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE=
-go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw=
-go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
-go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
-go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
-go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
-go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA=
-go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
-go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
-go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
-go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
-go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
-go.uber.org/zap v1.19.1 h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI=
-go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=
-golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
-golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g=
-golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
-golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
-golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
-golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
-golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
-golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERsqu1GIbi967PQMq3Ivc=
-golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
-golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
-golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
-golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
-golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
-golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
-golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
-golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
-golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
-golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
-golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
-golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
-golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
-golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
-golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
-golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
-golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
-golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
-golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
-golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
-golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 h1:RerP+noqYHUQ8CMRcPlC2nvTa4dcBIjegkuWdcUDuqg=
-golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
-golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
-golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=
-golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
-golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
-golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
-golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
-golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
-golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
-golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
-golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-gomodules.xyz/jsonpatch/v2 v2.2.0 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY=
-gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY=
-google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
-google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
-google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
-google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
-google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
-google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
-google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
-google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
-google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
-google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=
-google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=
-google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
-google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
-google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
-google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
-google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
-google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
-google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
-google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
-google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
-google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
-google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
-google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
-google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201102152239-715cce707fb0/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
-google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
-google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
-google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
-google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
-google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
-google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
-google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
-google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
-google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
-google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
-google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
-google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
-google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
-google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
-google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
-google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
-google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
-google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
-google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
-google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/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/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
-gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
-gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
-gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
-gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
-gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
-gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
-gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
-gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
-gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
-gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
-gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
-honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
-honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-k8s.io/api v0.24.2 h1:g518dPU/L7VRLxWfcadQn2OnsiGWVOadTLpdnqgY2OI=
-k8s.io/api v0.24.2/go.mod h1:AHqbSkTm6YrQ0ObxjO3Pmp/ubFF/KuM7jU+3khoBsOg=
-k8s.io/apiextensions-apiserver v0.24.2 h1:/4NEQHKlEz1MlaK/wHT5KMKC9UKYz6NZz6JE6ov4G6k=
-k8s.io/apiextensions-apiserver v0.24.2/go.mod h1:e5t2GMFVngUEHUd0wuCJzw8YDwZoqZfJiGOW6mm2hLQ=
-k8s.io/apimachinery v0.24.2 h1:5QlH9SL2C8KMcrNJPor+LbXVTaZRReml7svPEh4OKDM=
-k8s.io/apimachinery v0.24.2/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM=
-k8s.io/apiserver v0.24.2/go.mod h1:pSuKzr3zV+L+MWqsEo0kHHYwCo77AT5qXbFXP2jbvFI=
-k8s.io/client-go v0.24.2 h1:CoXFSf8if+bLEbinDqN9ePIDGzcLtqhfd6jpfnwGOFA=
-k8s.io/client-go v0.24.2/go.mod h1:zg4Xaoo+umDsfCWr4fCnmLEtQXyCNXCvJuSsglNcV30=
-k8s.io/code-generator v0.24.2/go.mod h1:dpVhs00hTuTdTY6jvVxvTFCk6gSMrtfRydbhZwHI15w=
-k8s.io/component-base v0.24.2 h1:kwpQdoSfbcH+8MPN4tALtajLDfSfYxBDYlXobNWI6OU=
-k8s.io/component-base v0.24.2/go.mod h1:ucHwW76dajvQ9B7+zecZAP3BVqvrHoOxm8olHEg0nmM=
-k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
-k8s.io/gengo v0.0.0-20211129171323-c02415ce4185/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
-k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
-k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
-k8s.io/klog/v2 v2.60.1 h1:VW25q3bZx9uE3vvdL6M8ezOX79vA2Aq1nEWLqNQclHc=
-k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
-k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 h1:Gii5eqf+GmIEwGNKQYQClCayuJCe2/4fZUvF7VG99sU=
-k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk=
-k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
-k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc=
-k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
-rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
-rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
-rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
-sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.30/go.mod h1:fEO7lRTdivWO2qYVCVG7dEADOMo/MLDCVr8So2g88Uw=
-sigs.k8s.io/controller-runtime v0.12.2 h1:nqV02cvhbAj7tbt21bpPpTByrXGn2INHRsi39lXy9sE=
-sigs.k8s.io/controller-runtime v0.12.2/go.mod h1:qKsk4WE6zW2Hfj0G4v10EnNB2jMG1C+NTb8h+DwCoU0=
-sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y=
-sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY=
-sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
-sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
-sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
-sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
diff --git a/core/tcp-udp-transport/hack/boilerplate.go.txt b/core/tcp-udp-transport/hack/boilerplate.go.txt
deleted file mode 100644
index 65b8622..0000000
--- a/core/tcp-udp-transport/hack/boilerplate.go.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
-Copyright 2023.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
\ No newline at end of file
diff --git a/core/tcp-udp-transport/main.go b/core/tcp-udp-transport/main.go
deleted file mode 100644
index 6e14be5..0000000
--- a/core/tcp-udp-transport/main.go
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
-Copyright 2023.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package main
-
-import (
- "flag"
- "golang.org/x/crypto/ssh"
- "os"
-
- // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.)
- // to ensure that exec-entrypoint and run can make use of them.
- _ "k8s.io/client-go/plugin/pkg/client/auth"
-
- "k8s.io/apimachinery/pkg/runtime"
- utilruntime "k8s.io/apimachinery/pkg/util/runtime"
- clientgoscheme "k8s.io/client-go/kubernetes/scheme"
- ctrl "sigs.k8s.io/controller-runtime"
- "sigs.k8s.io/controller-runtime/pkg/healthz"
- "sigs.k8s.io/controller-runtime/pkg/log/zap"
-
- transportv1 "github.com/giolekva/pcloud/api/v1"
- "github.com/giolekva/pcloud/controllers"
- //+kubebuilder:scaffold:imports
-)
-
-var (
- scheme = runtime.NewScheme()
- setupLog = ctrl.Log.WithName("setup")
-)
-
-func init() {
- utilruntime.Must(clientgoscheme.AddToScheme(scheme))
-
- utilruntime.Must(transportv1.AddToScheme(scheme))
- //+kubebuilder:scaffold:scheme
-}
-
-func main() {
- var metricsAddr string
- var enableLeaderElection bool
- var probeAddr string
- var sshKey string
- flag.StringVar(&metricsAddr, "metrics-bind-address", ":8080", "The address the metric endpoint binds to.")
- flag.StringVar(&probeAddr, "health-probe-bind-address", ":8081", "The address the probe endpoint binds to.")
- flag.BoolVar(&enableLeaderElection, "leader-elect", false,
- "Enable leader election for controller manager. "+
- "Enabling this will ensure there is only one active controller manager.")
- flag.StringVar(&sshKey, "ssh-key", "", "Path to private SSH key file.")
- opts := zap.Options{
- Development: true,
- }
- opts.BindFlags(flag.CommandLine)
- flag.Parse()
-
- ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts)))
-
- privKey, err := os.ReadFile(sshKey)
- if err != nil {
- panic(err)
- }
- signer, err := ssh.ParsePrivateKey(privKey)
-
- mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
- Scheme: scheme,
- MetricsBindAddress: metricsAddr,
- Port: 9443,
- HealthProbeBindAddress: probeAddr,
- LeaderElection: enableLeaderElection,
- LeaderElectionID: "798a733c.dodo.cloud",
- // LeaderElectionReleaseOnCancel defines if the leader should step down voluntarily
- // when the Manager ends. This requires the binary to immediately end when the
- // Manager is stopped, otherwise, this setting is unsafe. Setting this significantly
- // speeds up voluntary leader transitions as the new leader don't have to wait
- // LeaseDuration time first.
- //
- // In the default scaffold provided, the program ends immediately after
- // the manager stops, so would be fine to enable this option. However,
- // if you are doing or is intended to do any operation such as perform cleanups
- // after the manager stops then its usage might be unsafe.
- // LeaderElectionReleaseOnCancel: true,
- })
- if err != nil {
- setupLog.Error(err, "unable to start manager")
- os.Exit(1)
- }
-
- if err = (&controllers.ServiceTransportReconciler{
- Client: mgr.GetClient(),
- Scheme: mgr.GetScheme(),
- Signer: signer,
- }).SetupWithManager(mgr); err != nil {
- setupLog.Error(err, "unable to create controller", "controller", "ServiceTransport")
- os.Exit(1)
- }
- //+kubebuilder:scaffold:builder
-
- if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil {
- setupLog.Error(err, "unable to set up health check")
- os.Exit(1)
- }
- if err := mgr.AddReadyzCheck("readyz", healthz.Ping); err != nil {
- setupLog.Error(err, "unable to set up ready check")
- os.Exit(1)
- }
-
- setupLog.Info("starting manager")
- if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
- setupLog.Error(err, "problem running manager")
- os.Exit(1)
- }
-}
diff --git a/core/tcp-udp-transport/manager b/core/tcp-udp-transport/manager
deleted file mode 100755
index b23e8eb..0000000
--- a/core/tcp-udp-transport/manager
+++ /dev/null
Binary files differ