Rename Mainflux to Magistrala

Signed-off-by: dusanb94 <dusan.borovcanin@mainflux.com>
This commit is contained in:
dusanb94
2023-10-25 20:29:19 +02:00
parent 8b185d205b
commit 7066101996
7435 changed files with 6559 additions and 2290603 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ The GitHub issue tracker is for bug reports and feature requests. General suppor
the following locations:
- Google group - https://groups.google.com/forum/#!forum/mainflux
- Gitter - https://gitter.im/mainflux/mainflux
- Gitter - https://gitter.im/absmach/magistrala
-->
**FEATURE REQUEST**
+1 -1
View File
@@ -1,5 +1,5 @@
Pull request title should be `MF-XXX - description` or `NOISSUE - description` where XXX is ID of issue that this PR relate to.
Please review the [CONTRIBUTING.md](https://github.com/mainflux/mainflux/blob/master/CONTRIBUTING.md) file for detailed contributing guidelines.
Please review the [CONTRIBUTING.md](https://github.com/absmach/magistrala/blob/master/CONTRIBUTING.md) file for detailed contributing guidelines.
### What does this do?
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (c) Mainflux
# Copyright (c) Abstract Machines
# SPDX-License-Identifier: Apache-2.0
# Set your private global .gitignore:
+1 -1
View File
@@ -29,7 +29,7 @@ linters-settings:
checks: ["-ST1000", "-ST1003", "-ST1020", "-ST1021", "-ST1022"]
goheader:
template: |-
Copyright (c) Mainflux
Copyright (c) Magistrala
SPDX-License-Identifier: Apache-2.0
linters:
+24 -24
View File
@@ -55,7 +55,7 @@ blocks:
- export PATH=$PATH:$HOME/go/bin
- |
echo "Setting up Mainflux..."
echo "Setting up Magistrala..."
for p in $(ls ./*.pb.go); do
mv $p $p.tmp
done
@@ -211,7 +211,7 @@ blocks:
- name: Build HTTP
commands:
- echo $DOCKER_TOKEN | docker login --username "$DOCKER_USERNAME" --password-stdin
- docker push mainflux/http:latest
- docker push magistrala/http:latest
secrets:
- name: docker_hub
- name: Lint and Test MQTT
@@ -246,7 +246,7 @@ blocks:
- name: Build MQTT
commands:
- echo $DOCKER_TOKEN | docker login --username "$DOCKER_USERNAME" --password-stdin
- docker push mainflux/mqtt:latest
- docker push magistrala/mqtt:latest
secrets:
- name: docker_hub
- name: Lint and Test WS
@@ -281,7 +281,7 @@ blocks:
- name: Build WS
commands:
- echo $DOCKER_TOKEN | docker login --username "$DOCKER_USERNAME" --password-stdin
- docker push mainflux/ws:latest
- docker push magistrala/ws:latest
secrets:
- name: docker_hub
- name: Lint and Test Bootstrap
@@ -316,7 +316,7 @@ blocks:
- name: Build Bootstrap
commands:
- echo $DOCKER_TOKEN | docker login --username "$DOCKER_USERNAME" --password-stdin
- docker push mainflux/bootstrap:latest
- docker push magistrala/bootstrap:latest
secrets:
- name: docker_hub
- name: Lint and Test Certs
@@ -351,7 +351,7 @@ blocks:
- name: Build Certs
commands:
- echo $DOCKER_TOKEN | docker login --username "$DOCKER_USERNAME" --password-stdin
- docker push mainflux/certs:latest
- docker push magistrala/certs:latest
secrets:
- name: docker_hub
- name: Lint and Test Provision
@@ -386,7 +386,7 @@ blocks:
- name: Build Provision
commands:
- echo $DOCKER_TOKEN | docker login --username "$DOCKER_USERNAME" --password-stdin
- docker push mainflux/http:latest
- docker push magistrala/http:latest
secrets:
- name: docker_hub
- name: Lint and Test Twins
@@ -421,7 +421,7 @@ blocks:
- name: Build Twins
commands:
- echo $DOCKER_TOKEN | docker login --username "$DOCKER_USERNAME" --password-stdin
- docker push mainflux/twins:latest
- docker push magistrala/twins:latest
secrets:
- name: docker_hub
- name: Lint and Test Readers
@@ -456,11 +456,11 @@ blocks:
- name: Build Readers
commands:
- echo $DOCKER_TOKEN | docker login --username "$DOCKER_USERNAME" --password-stdin
- docker push mainflux/cassandra-reader:latest
- docker push mainflux/influxdb-reader:latest
- docker push mainflux/mongodb-reader:latest
- docker push mainflux/postgres-reader:latest
- docker push mainflux/timescale-reader:latest
- docker push magistrala/cassandra-reader:latest
- docker push magistrala/influxdb-reader:latest
- docker push magistrala/mongodb-reader:latest
- docker push magistrala/postgres-reader:latest
- docker push magistrala/timescale-reader:latest
secrets:
- name: docker_hub
- name: Lint and Test Consumers
@@ -495,12 +495,12 @@ blocks:
- name: Build Consumers
commands:
- echo $DOCKER_TOKEN | docker login --username "$DOCKER_USERNAME" --password-stdin
- docker push mainflux/cassandra-writer:latest
- docker push mainflux/influxdb-writer:latest
- docker push mainflux/mongodb-writer:latest
- docker push mainflux/postgres-writer:latest
- docker push mainflux/timescale-writer:latest
- docker push mainflux/smtp-notifier:latest
- docker push magistrala/cassandra-writer:latest
- docker push magistrala/influxdb-writer:latest
- docker push magistrala/mongodb-writer:latest
- docker push magistrala/postgres-writer:latest
- docker push magistrala/timescale-writer:latest
- docker push magistrala/smtp-notifier:latest
secrets:
- name: docker_hub
- name: Lint and Test CLI
@@ -535,7 +535,7 @@ blocks:
- name: Build CLI
commands:
- echo $DOCKER_TOKEN | docker login --username "$DOCKER_USERNAME" --password-stdin
- docker push mainflux/cli:latest
- docker push magistrala/cli:latest
secrets:
- name: docker_hub
- name: Lint and Test LoRa
@@ -570,7 +570,7 @@ blocks:
- name: Build LoRa
commands:
- echo $DOCKER_TOKEN | docker login --username "$DOCKER_USERNAME" --password-stdin
- docker push mainflux/lora:latest
- docker push magistrala/lora:latest
secrets:
- name: docker_hub
- name: Lint and Test OPC-UA
@@ -605,7 +605,7 @@ blocks:
- name: Build OPC-UA
commands:
- echo $DOCKER_TOKEN | docker login --username "$DOCKER_USERNAME" --password-stdin
- docker push mainflux/opcua:latest
- docker push magistrala/opcua:latest
secrets:
- name: docker_hub
- name: Lint and Test Internal
@@ -695,7 +695,7 @@ blocks:
jobs:
- name: Compile For RabbitMQ
commands:
- MF_MESSAGE_BROKER_TYPE=rabbitmq make mqtt
- MG_MESSAGE_BROKER_TYPE=rabbitmq make mqtt
- name: Compile Check For Redis
dependencies:
@@ -704,4 +704,4 @@ blocks:
jobs:
- name: Compile For Redis
commands:
- MF_ES_STORE_TYPE=redis make mqtt
- MG_ES_STORE_TYPE=redis make mqtt
+6 -6
View File
@@ -1,12 +1,12 @@
# Adopters
As Mainflux Community grows, we'd like to keep track of Mainflux adopters to grow the community, contact other users, share experiences and best practices.
As Magistrala Community grows, we'd like to keep track of Magistrala adopters to grow the community, contact other users, share experiences and best practices.
To accomplish this, we created a public ledger. The list of organizations and users who consider themselves as Mainflux adopters and that **publicly/officially** shared information and/or details of their adoption journey(optional).
To accomplish this, we created a public ledger. The list of organizations and users who consider themselves as Magistrala adopters and that **publicly/officially** shared information and/or details of their adoption journey(optional).
Where users themselves directly maintain the list.
## Adding yourself as an adopter
If you are using Mainflux, please consider adding yourself as an adopter with a brief description of your use case by opening a pull request to this file and adding a section describing your adoption of Mainflux technology.
If you are using Magistrala, please consider adding yourself as an adopter with a brief description of your use case by opening a pull request to this file and adding a section describing your adoption of Magistrala technology.
**Please send PRs to add or remove organizations/users**
@@ -25,12 +25,12 @@ Pull request commit must be [signed](https://docs.github.com/en/github/authentic
* There is no minimum requirement or adaptation size, but we request to list permanent deployments only, i.e., no demo or trial deployments. Commercial or production use is not required. A well-done home lab setup can be equally impressive as a large-scale commercial deployment.
**The list of organizations/users that have publicly shared the usage of Mainflux:**
**The list of organizations/users that have publicly shared the usage of Magistrala:**
**Note**: Several other organizations/users couldn't publicly share their usage details but are active project contributors and Mainflux Community members.
**Note**: Several other organizations/users couldn't publicly share their usage details but are active project contributors and Magistrala Community members.
## Adopters list (alphabetical)
**Note:** The list is maintained by the users themselves. If you find yourself on this list, and you think it's inappropriate. Please contact [project maintainers](https://github.com/mainflux/mainflux/blob/master/MAINTAINERS) and you will be permanently removed from the list.
**Note:** The list is maintained by the users themselves. If you find yourself on this list, and you think it's inappropriate. Please contact [project maintainers](https://github.com/absmach/magistrala/blob/master/MAINTAINERS) and you will be permanently removed from the list.
+15 -15
View File
@@ -1,7 +1,7 @@
# Mainflux Changelog
# Magistrala Changelog
## Generation
Mainflux release notes for the latest release can be obtained via:
Magistrala release notes for the latest release can be obtained via:
```
make changelog
```
@@ -18,7 +18,7 @@ git log --pretty=oneline --abbrev-commit
- NOISSUE - Update changelog and readme for release 0.13.0
- MF-1582 - Fix lora-adapter MQTT client (#1583)
- NOISSUE - Fix CoAP adapter (#1572)
- NOISSUE - Unify MF_INFLUX_READER_DB_HOST and MF_INFLUX_WRITER_DB_HOST envars (#1585)
- NOISSUE - Unify MG_INFLUX_READER_DB_HOST and MG_INFLUX_WRITER_DB_HOST envars (#1585)
- MF-1580 - Influxdb Writer changes format of update-time to string (#1581)
- MF-1575 Add 'Name' field to ListMembers response in things svc (#1576)
- MF-1565 - Document Bearer, Thing and Basic Authorization header (#1566)
@@ -199,18 +199,18 @@ git log --pretty=oneline --abbrev-commit
- NOISSUE - Add subtopic wildcard for twin attribute's definition (#1214)
- fix envs for nginx (#1215)
- Remove twin mqtt related obsolete var and fix es-redis address (#1213)
- NOISSUE - Remove unused `MF_THINGS_SECRET` env var (#1211)
- NOISSUE - Remove unused `MG_THINGS_SECRET` env var (#1211)
- NOISSUE - Fix some typos (#1212)
- NOISSUE - Remove unknown Bootstrap requests (#1210)
- NOISSUE - Use `pgcrypto` instead `uuid-ossp` for UUIDs generation (version 4) (#1208)
- MF-1198 - Add errors package tests (#1207)
- MF-1025 - timeout env in sec, use parseduration (#1206)
- MF-1201 - Fix MF_THINGS_AUTH_GRPC_URL mongo reader ENVAR (#1203)
- MF-1201 - Fix MG_THINGS_AUTH_GRPC_URL mongo reader ENVAR (#1203)
- NOISSUE - Fix CI (#1204)
- MF-1180 - Add redis based twins and states cache (#1184)
- MF-739 - Add ID to the User entity (#1152)
- NOISSUE - Fix default db name for storage databases (#1194)
- NOISSUE - Add `MF_DOCKER_IMAGE_NAME_PREFIX` to Makefile (#1173)
- NOISSUE - Add `MG_DOCKER_IMAGE_NAME_PREFIX` to Makefile (#1173)
- MF-1154 - Move UUID provider to project root (#1172)
- Fix typo in error messages (#1193)
- MF-1190 - Add pkg for library packages (#1191)
@@ -224,7 +224,7 @@ git log --pretty=oneline --abbrev-commit
- MF-995 - Add Twins tests for endpoint list twins and list states (#1174)
- NOISSUE - Update dependencies (#1176)
- MF-1163 - Fix influxdb-reader to use nanoseconds precision (#1171)
- Rename environment variable MF_MQTT_ADAPTER_PORT to MF_MQTT_ADAPTER_MQTT_PORT in docker environment (#1170)
- Rename environment variable MG_MQTT_ADAPTER_PORT to MG_MQTT_ADAPTER_MQTT_PORT in docker environment (#1170)
- Remove thing related code from twins service (#1169)
- MF-997 - Add twins service swagger file (#1167)
- MF-1079 - Add MQTT forwarder (#1164)
@@ -341,7 +341,7 @@ git log --pretty=oneline --abbrev-commit
- MF-898 - Add transactions to postgres connect (#940)
- Add missing user service tests (#945)
- Remove Normalizer service from compose (#937)
- MF-919 - Mainflux message updates (#924)
- MF-919 - Magistrala message updates (#924)
- NOISSUE - Remove ARM multi-arch images (#929)
- MF-906 - Change single creation endpoints to use bulk service calls (#927)
- MF-922 - Add UpdateUser endpoint (#923)
@@ -493,7 +493,7 @@ git log --pretty=oneline --abbrev-commit
- Fix CI with fixed plugin versions (#747)
- fix building problems (#741)
- fix docker-compose env (#775)
- Fix MF_THINGS_AUTH_GRPC_PORT in addons' docker-compose files (#781)
- Fix MG_THINGS_AUTH_GRPC_PORT in addons' docker-compose files (#781)
- Fix MQTT raw message deserialization (#753)
- fix variant option for manifest annotate (#765)
- fix to makefile for OSX/Darwin (#724)
@@ -510,7 +510,7 @@ git log --pretty=oneline --abbrev-commit
### Summary
https://github.com/mainflux/mainflux/milestone/10?closed=1
https://github.com/absmach/magistrala/milestone/10?closed=1
## 0.8.0 - 20. MAR 2019.
### Features
@@ -576,7 +576,7 @@ https://github.com/mainflux/mainflux/milestone/10?closed=1
- NOISSUE - Fix normalizer exposed port in docker-compose (#548)
### Summary
https://github.com/mainflux/mainflux/milestone/9?closed=1
https://github.com/absmach/magistrala/milestone/9?closed=1
## 0.7.0 - 08. DEC 2018.
@@ -601,10 +601,10 @@ https://github.com/mainflux/mainflux/milestone/9?closed=1
- MF-454 - Use message Time field as a time for InfluxDB points (#455)
- NOISSUE - Add .dockerignore to project root (#457)
- Update docker-compose so that every service has debug log level (#453)
- NOISSUE - Add TLS flag for Mainflux services (#452)
- NOISSUE - Add TLS flag for Magistrala services (#452)
- MF-448 - Option for Postgres SSL Mode (#449)
- MF-443 Update project dependencies (#444)
- MF-426 - Add optional MF_CA_CERTS env variable to allow GRPC client to use TLS certs (#430)
- MF-426 - Add optional MG_CA_CERTS env variable to allow GRPC client to use TLS certs (#430)
- Expose the InfluxDB and Cassandra ports to host (#441)
- MF-374 - Bring back CoAP adapter (#413)
@@ -613,7 +613,7 @@ https://github.com/mainflux/mainflux/milestone/9?closed=1
- MF-407 - Values of zero are being omitted (#434)
### Summary
https://github.com/mainflux/mainflux/milestone/8?closed=1
https://github.com/absmach/magistrala/milestone/8?closed=1
## 0.6.0 - 26. OCT 2018.
@@ -653,7 +653,7 @@ https://github.com/mainflux/mainflux/milestone/8?closed=1
- Vendor correct gRPC version (#340)
### Summary
https://github.com/mainflux/mainflux/milestone/6?closed=1
https://github.com/absmach/magistrala/milestone/6?closed=1
## 0.4.0 - 01. JUN 2018.
+13 -13
View File
@@ -1,11 +1,11 @@
# Contributing to Mainflux
# Contributing to Magistrala
The following is a set of guidelines to contribute to Mainflux and its libraries, which are
hosted on the [Mainflux Organization](https://github.com/mainflux) on GitHub.
The following is a set of guidelines to contribute to Magistrala and its libraries, which are
hosted on the [Abstract Machines Organization](https://github.com/absmach) on GitHub.
This project adheres to the [Contributor Covenant 1.2](http://contributor-covenant.org/version/1/2/0).
By participating, you are expected to uphold this code. Please report unacceptable behavior to
[abuse@mainflux.com](mailto:abuse@mainflux.com).
[abuse@magistrala.com](mailto:abuse@magistrala.com).
## Reporting issues
@@ -13,7 +13,7 @@ Reporting issues are a great way to contribute to the project. We are perpetuall
thorough bug report.
Before raising a new issue, check [our issue
list](https://github.com/mainflux/mainflux/issues) to determine if it already contains the
list](https://github.com/absmach/magistrala/issues) to determine if it already contains the
problem that you are facing.
A good bug report shouldn't leave others needing to chase you for more information. Please be as detailed as possible. The following questions might serve as a template for writing a detailed
@@ -41,23 +41,23 @@ To contribute to the project, [fork](https://help.github.com/articles/fork-a-rep
clone your fork repository, and configure the remotes:
```
git clone https://github.com/<your-username>/mainflux.git
cd mainflux
git remote add upstream https://github.com/mainflux/mainflux.git
git clone https://github.com/<your-username>/magistrala.git
cd magistrala
git remote add upstream https://github.com/absmach/magistrala.git
```
If your cloned repository is behind the upstream commits, then get the latest changes from upstream:
```
git checkout master
git pull --rebase upstream master
git pull --rebase upstream main
```
Create a new topic branch from `master` using the naming convention `MF-[issue-number]`
Create a new topic branch from `master` using the naming convention `MG-[issue-number]`
to help us keep track of your contribution scope:
```
git checkout -b MF-[issue-number]
git checkout -b MG-[issue-number]
```
Commit your changes in logical chunks. When you are ready to commit, make sure
@@ -74,13 +74,13 @@ and `user.email` git configs, you can sign your commit automatically with `git c
Locally merge (or rebase) the upstream development branch into your topic branch:
```
git pull --rebase upstream master
git pull --rebase upstream main
```
Push your topic branch up to your fork:
```
git push origin MF-[issue-number]
git push origin MG-[issue-number]
```
[Open a Pull Request](https://help.github.com/articles/using-pull-requests/) with a clear title
+1 -1
View File
@@ -176,7 +176,7 @@
END OF TERMS AND CONDITIONS
Copyright 2015-2020 Mainflux
Copyright 2015-2020 Magistrala
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
+7 -23
View File
@@ -1,4 +1,4 @@
# Mainflux follows the timeless, highly efficient and totally unfair system
# Magistrala follows the timeless, highly efficient and totally unfair system
# known as [Benevolent dictator for
# life](https://en.wikipedia.org/wiki/Benevolent_Dictator_for_Life), with
# Drasko DRASKOVIC in the role of BDFL.
@@ -6,8 +6,8 @@
[bdfl]
[[drasko]]
Name = "Drasko DRASKOVIC"
Email = "drasko@mainflux.com"
Name = "Drasko Draskovic"
Email = "draasko.draskovic@abstractmachines.fr"
GitHub = "drasko"
# However, this role serves only in dead-lock events, or in a special and very rare cases
@@ -18,29 +18,13 @@
# Maintainers have the special role in the project in managing and accepting PRs,
# overall leading the project and making design decisions on the maintained subsystems.
#
# A reference list of all maintainers of the Mainflux project.
# A reference list of all maintainers of the Magistrala project.
# ADD YOURSELF HERE IN ALPHABETICAL ORDER
[maintainers]
[[aleksandar]]
Name = "Aleksandar NOVAKOVIC"
Email = "aleksandar@mainflux.com"
GitHub = "anovakovic01"
[[dusan]]
Name = "Dusan BOROVCANIN"
Email = "dusan@mainflux.com"
GitHub = "dusanb94"
[[manuel]]
Name = "Manuel IMPERIALE"
Email = "manuel@mainflux.com"
GitHub = "manuIO"
[[nikola]]
Name = "Nikola MARCETIC"
Email = "nikola@mainflux.com"
GitHub = "nmarcetic"
Name = "Dusan Borovcanin"
Email = "dusan.borovcanin@abstractmachines.fr"
GitHub = "dborovcanin"
+37 -37
View File
@@ -1,7 +1,7 @@
# Copyright (c) Mainflux
# Copyright (c) Abstract Machines
# SPDX-License-Identifier: Apache-2.0
MF_DOCKER_IMAGE_NAME_PREFIX ?= mainflux
MG_DOCKER_IMAGE_NAME_PREFIX ?= magistrala
BUILD_DIR = build
SERVICES = auth users things http coap ws lora influxdb-writer influxdb-reader mongodb-writer \
mongodb-reader cassandra-writer cassandra-reader postgres-writer postgres-reader timescale-writer timescale-reader cli \
@@ -22,32 +22,32 @@ DOCKER_PROJECT ?= $(shell echo $(subst $(space),,$(USER_REPO)_$(BRANCH)) | tr -c
DOCKER_COMPOSE_COMMANDS_SUPPORTED := up down config
DEFAULT_DOCKER_COMPOSE_COMMAND := up
GRPC_MTLS_CERT_FILES_EXISTS = 0
DOCKER_PROFILE ?= $(MF_MQTT_BROKER_TYPE)_$(MF_MESSAGE_BROKER_TYPE)
ifneq ($(MF_MESSAGE_BROKER_TYPE),)
MF_MESSAGE_BROKER_TYPE := $(MF_MESSAGE_BROKER_TYPE)
DOCKER_PROFILE ?= $(MG_MQTT_BROKER_TYPE)_$(MG_MESSAGE_BROKER_TYPE)
ifneq ($(MG_MESSAGE_BROKER_TYPE),)
MG_MESSAGE_BROKER_TYPE := $(MG_MESSAGE_BROKER_TYPE)
else
MF_MESSAGE_BROKER_TYPE=nats
MG_MESSAGE_BROKER_TYPE=nats
endif
ifneq ($(MF_MQTT_BROKER_TYPE),)
MF_MQTT_BROKER_TYPE := $(MF_MQTT_BROKER_TYPE)
ifneq ($(MG_MQTT_BROKER_TYPE),)
MG_MQTT_BROKER_TYPE := $(MG_MQTT_BROKER_TYPE)
else
MF_MQTT_BROKER_TYPE=nats
MG_MQTT_BROKER_TYPE=nats
endif
ifneq ($(MF_ES_STORE_TYPE),)
MF_ES_STORE_TYPE := $(MF_ES_STORE_TYPE)
ifneq ($(MG_ES_STORE_TYPE),)
MG_ES_STORE_TYPE := $(MG_ES_STORE_TYPE)
else
MF_ES_STORE_TYPE=nats
MG_ES_STORE_TYPE=nats
endif
define compile_service
CGO_ENABLED=$(CGO_ENABLED) GOOS=$(GOOS) GOARCH=$(GOARCH) GOARM=$(GOARM) \
go build -mod=vendor -tags $(MF_MESSAGE_BROKER_TYPE) --tags $(MF_ES_STORE_TYPE) -ldflags "-s -w \
-X 'github.com/mainflux/mainflux.BuildTime=$(TIME)' \
-X 'github.com/mainflux/mainflux.Version=$(VERSION)' \
-X 'github.com/mainflux/mainflux.Commit=$(COMMIT)'" \
-o ${BUILD_DIR}/mainflux-$(1) cmd/$(1)/main.go
go build -tags $(MG_MESSAGE_BROKER_TYPE) --tags $(MG_ES_STORE_TYPE) -ldflags "-s -w \
-X 'github.com/absmach/magistrala.BuildTime=$(TIME)' \
-X 'github.com/absmach/magistrala.Version=$(VERSION)' \
-X 'github.com/absmach/magistrala.Commit=$(COMMIT)'" \
-o ${BUILD_DIR}/$(1) cmd/$(1)/main.go
endef
define make_docker
@@ -61,7 +61,7 @@ define make_docker
--build-arg VERSION=$(VERSION) \
--build-arg COMMIT=$(COMMIT) \
--build-arg TIME=$(TIME) \
--tag=$(MF_DOCKER_IMAGE_NAME_PREFIX)/$(svc) \
--tag=$(MG_DOCKER_IMAGE_NAME_PREFIX)/$(svc) \
-f docker/Dockerfile .
endef
@@ -71,7 +71,7 @@ define make_docker_dev
docker build \
--no-cache \
--build-arg SVC=$(svc) \
--tag=$(MF_DOCKER_IMAGE_NAME_PREFIX)/$(svc) \
--tag=$(MG_DOCKER_IMAGE_NAME_PREFIX)/$(svc) \
-f docker/Dockerfile.dev ./build
endef
@@ -115,7 +115,7 @@ cleandocker:
ifdef pv
# Remove unused volumes
docker volume ls -f name=$(MF_DOCKER_IMAGE_NAME_PREFIX) -f dangling=true -q | xargs -r docker volume rm
docker volume ls -f name=$(MG_DOCKER_IMAGE_NAME_PREFIX) -f dangling=true -q | xargs -r docker volume rm
endif
install:
@@ -142,7 +142,7 @@ dockers_dev: $(DOCKERS_DEV)
define docker_push
for svc in $(SERVICES); do \
docker push $(MF_DOCKER_IMAGE_NAME_PREFIX)/$$svc:$(1); \
docker push $(MG_DOCKER_IMAGE_NAME_PREFIX)/$$svc:$(1); \
done
endef
@@ -157,7 +157,7 @@ release:
git checkout $(version)
$(MAKE) dockers
for svc in $(SERVICES); do \
docker tag $(MF_DOCKER_IMAGE_NAME_PREFIX)/$$svc $(MF_DOCKER_IMAGE_NAME_PREFIX)/$$svc:$(version); \
docker tag $(MG_DOCKER_IMAGE_NAME_PREFIX)/$$svc $(MG_DOCKER_IMAGE_NAME_PREFIX)/$$svc:$(version); \
done
$(call docker_push,$(version))
@@ -197,30 +197,30 @@ endif
endif
define edit_docker_config
sed -i "s/MF_MQTT_BROKER_TYPE=.*/MF_MQTT_BROKER_TYPE=$(1)/" docker/.env
sed -i "s/MF_MQTT_BROKER_HEALTH_CHECK=.*/MF_MQTT_BROKER_HEALTH_CHECK=$$\{MF_$(shell echo ${MF_MQTT_BROKER_TYPE} | tr 'a-z' 'A-Z')_HEALTH_CHECK}/" docker/.env
sed -i "s/MF_MQTT_ADAPTER_WS_TARGET_PATH=.*/MF_MQTT_ADAPTER_WS_TARGET_PATH=$$\{MF_$(shell echo ${MF_MQTT_BROKER_TYPE} | tr 'a-z' 'A-Z')_WS_TARGET_PATH}/" docker/.env
sed -i "s/MF_MESSAGE_BROKER_TYPE=.*/MF_MESSAGE_BROKER_TYPE=$(2)/" docker/.env
sed -i "s/MG_MQTT_BROKER_TYPE=.*/MG_MQTT_BROKER_TYPE=$(1)/" docker/.env
sed -i "s/MG_MQTT_BROKER_HEALTH_CHECK=.*/MG_MQTT_BROKER_HEALTH_CHECK=$$\{MG_$(shell echo ${MG_MQTT_BROKER_TYPE} | tr 'a-z' 'A-Z')_HEALTH_CHECK}/" docker/.env
sed -i "s/MG_MQTT_ADAPTER_WS_TARGET_PATH=.*/MG_MQTT_ADAPTER_WS_TARGET_PATH=$$\{MG_$(shell echo ${MG_MQTT_BROKER_TYPE} | tr 'a-z' 'A-Z')_WS_TARGET_PATH}/" docker/.env
sed -i "s/MG_MESSAGE_BROKER_TYPE=.*/MG_MESSAGE_BROKER_TYPE=$(2)/" docker/.env
sed -i "s,file: .*.yml,file: $(2).yml," docker/brokers/docker-compose.yml
sed -i "s,MF_MESSAGE_BROKER_URL=.*,MF_MESSAGE_BROKER_URL=$$\{MF_$(shell echo ${MF_MESSAGE_BROKER_TYPE} | tr 'a-z' 'A-Z')_URL\}," docker/.env
sed -i "s,MF_MQTT_ADAPTER_MQTT_QOS=.*,MF_MQTT_ADAPTER_MQTT_QOS=$$\{MF_$(shell echo ${MF_MQTT_BROKER_TYPE} | tr 'a-z' 'A-Z')_MQTT_QOS\}," docker/.env
sed -i "s,MG_MESSAGE_BROKER_URL=.*,MG_MESSAGE_BROKER_URL=$$\{MG_$(shell echo ${MG_MESSAGE_BROKER_TYPE} | tr 'a-z' 'A-Z')_URL\}," docker/.env
sed -i "s,MG_MQTT_ADAPTER_MQTT_QOS=.*,MG_MQTT_ADAPTER_MQTT_QOS=$$\{MG_$(shell echo ${MG_MQTT_BROKER_TYPE} | tr 'a-z' 'A-Z')_MQTT_QOS\}," docker/.env
endef
change_config:
ifeq ($(DOCKER_PROFILE),nats_nats)
sed -i "s/- broker/- nats/g" docker/docker-compose.yml
sed -i "s/- rabbitmq/- nats/g" docker/docker-compose.yml
sed -i "s,MF_NATS_URL=.*,MF_NATS_URL=nats://nats:$$\{MF_NATS_PORT}," docker/.env
sed -i "s,MG_NATS_URL=.*,MG_NATS_URL=nats://nats:$$\{MG_NATS_PORT}," docker/.env
$(call edit_docker_config,nats,nats)
else ifeq ($(DOCKER_PROFILE),nats_rabbitmq)
sed -i "s/nats/broker/g" docker/docker-compose.yml
sed -i "s,MF_NATS_URL=.*,MF_NATS_URL=nats://nats:$$\{MF_NATS_PORT}," docker/.env
sed -i "s,MG_NATS_URL=.*,MG_NATS_URL=nats://nats:$$\{MG_NATS_PORT}," docker/.env
sed -i "s/rabbitmq/broker/g" docker/docker-compose.yml
$(call edit_docker_config,nats,rabbitmq)
else ifeq ($(DOCKER_PROFILE),vernemq_nats)
sed -i "s/nats/broker/g" docker/docker-compose.yml
sed -i "s/rabbitmq/broker/g" docker/docker-compose.yml
sed -i "s,MF_NATS_URL=.*,MF_NATS_URL=nats://broker:$$\{MF_NATS_PORT}," docker/.env
sed -i "s,MG_NATS_URL=.*,MG_NATS_URL=nats://broker:$$\{MG_NATS_PORT}," docker/.env
$(call edit_docker_config,vernemq,nats)
else ifeq ($(DOCKER_PROFILE),vernemq_rabbitmq)
sed -i "s/nats/broker/g" docker/docker-compose.yml
@@ -231,13 +231,13 @@ else
endif
run: check_certs change_config
ifeq ($(MF_ES_STORE_TYPE), redis)
sed -i "s/MF_ES_STORE_TYPE=.*/MF_ES_STORE_TYPE=redis/" docker/.env
sed -i "s/MF_ES_STORE_URL=.*/MF_ES_STORE_URL=$$\{MF_REDIS_URL}/" docker/.env
ifeq ($(MG_ES_STORE_TYPE), redis)
sed -i "s/MG_ES_STORE_TYPE=.*/MG_ES_STORE_TYPE=redis/" docker/.env
sed -i "s/MG_ES_STORE_URL=.*/MG_ES_STORE_URL=$$\{MG_REDIS_URL}/" docker/.env
docker-compose -f docker/docker-compose.yml --profile $(DOCKER_PROFILE) --profile redis -p $(DOCKER_PROJECT) $(DOCKER_COMPOSE_COMMAND) $(args)
else
sed -i "s,MF_ES_STORE_TYPE=.*,MF_ES_STORE_TYPE=$$\{MF_MESSAGE_BROKER_TYPE}," docker/.env
sed -i "s,MF_ES_STORE_URL=.*,MF_ES_STORE_URL=$$\{MF_$(shell echo ${MF_MESSAGE_BROKER_TYPE} | tr 'a-z' 'A-Z')_URL\}," docker/.env
sed -i "s,MG_ES_STORE_TYPE=.*,MG_ES_STORE_TYPE=$$\{MG_MESSAGE_BROKER_TYPE}," docker/.env
sed -i "s,MG_ES_STORE_URL=.*,MG_ES_STORE_URL=$$\{MG_$(shell echo ${MG_MESSAGE_BROKER_TYPE} | tr 'a-z' 'A-Z')_URL\}," docker/.env
docker-compose -f docker/docker-compose.yml --profile $(DOCKER_PROFILE) -p $(DOCKER_PROJECT) $(DOCKER_COMPOSE_COMMAND) $(args)
endif
@@ -245,5 +245,5 @@ run_addons: check_certs
$(call change_config)
$(foreach SVC,$(RUN_ADDON_ARGS),$(if $(filter $(SVC),$(ADDON_SERVICES) $(EXTERNAL_SERVICES)),,$(error Invalid Service $(SVC))))
@for SVC in $(RUN_ADDON_ARGS); do \
MF_ADDONS_CERTS_PATH_PREFIX="../." docker-compose -f docker/addons/$$SVC/docker-compose.yml -p $(DOCKER_PROJECT) --env-file ./docker/.env $(DOCKER_COMPOSE_COMMAND) $(args) & \
MG_ADDONS_CERTS_PATH_PREFIX="../." docker-compose -f docker/addons/$$SVC/docker-compose.yml -p $(DOCKER_PROJECT) --env-file ./docker/.env $(DOCKER_COMPOSE_COMMAND) $(args) & \
done
+34 -34
View File
@@ -1,4 +1,4 @@
# Mainflux
# Magistrala
[![Build Status](https://mainflux.semaphoreci.com/badges/mainflux/branches/master.svg?style=shields)](https://mainflux.semaphoreci.com/projects/mainflux)
[![go report card][grc-badge]][grc-url]
@@ -8,7 +8,7 @@
![banner][banner]
Mainflux is modern, scalable, secure, open-source, and patent-free IoT cloud platform written in Go.
Magistrala is modern, scalable, secure, open-source, and patent-free IoT cloud platform written in Go.
It accepts user and thing (sensor, actuator, application) connections over various network protocols (i.e. HTTP,
MQTT, WebSocket, CoAP), thus making a seamless bridge between them. It is used as the IoT middleware
@@ -36,12 +36,12 @@ For more details, check out the [official documentation][docs].
## Prerequisites
The following are needed to run Mainflux:
The following are needed to run Magistrala:
- [Docker](https://docs.docker.com/install/) (version 20.10)
- [Docker compose](https://docs.docker.com/compose/install/) (version 1.29)
Developing Mainflux will also require:
Developing Magistrala will also require:
- [Go](https://golang.org/doc/install) (version 1.19.2)
- [Protobuf](https://github.com/protocolbuffers/protobuf#protocol-compiler-installation) (version 3.6.1)
@@ -54,14 +54,14 @@ Once the prerequisites are installed, execute the following commands from the pr
docker-compose -f docker/docker-compose.yml up
```
This will bring up the Mainflux docker services and interconnect them. This command can also be executed using the project's included Makefile:
This will bring up the Magistrala docker services and interconnect them. This command can also be executed using the project's included Makefile:
```bash
make run
```
If you want to run services from specific release checkout code from github and make sure that
`MF_RELEASE_TAG` in [.env](.env) is being set to match the release version
`MG_RELEASE_TAG` in [.env](.env) is being set to match the release version
```bash
git checkout tags/<release_number> -b <release_number>
@@ -71,65 +71,65 @@ git checkout tags/<release_number> -b <release_number>
Check that `.env` file contains:
```bash
MF_RELEASE_TAG=<release_number>
MG_RELEASE_TAG=<release_number>
```
>`docker-compose` should be used for development and testing deployments. For production we suggest using [Kubernetes](https://docs.mainflux.io/kubernetes).
## Usage
The quickest way to start using Mainflux is via the CLI. The latest version can be downloaded from the [official releases page][rel].
The quickest way to start using Magistrala is via the CLI. The latest version can be downloaded from the [official releases page][rel].
It can also be built and used from the project's root directory:
```bash
make cli
./build/mainflux-cli version
./build/cli version
```
Additional details on using the CLI can be found in the [CLI documentation](https://docs.mainflux.io/cli).
## Documentation
Official documentation is hosted at [Mainflux official docs page][docs]. Documentation is auto-generated, checkout the instructions on [official docs repository](https://github.com/mainflux/docs):
Official documentation is hosted at [Magistrala official docs page][docs]. Documentation is auto-generated, checkout the instructions on [official docs repository](https://github.com/mainflux/docs):
If you spot an error or a need for corrections, please let us know - or even better: send us a PR.
## Authors
Main architect and BDFL of Mainflux project is [@drasko][drasko].
Main architect and BDFL of Magistrala project is [@drasko][drasko].
Additionally, [@nmarcetic][nikola] and [@janko-isidorovic][janko] assured
overall architecture and design, while [@manuio][manu] and [@darkodraskovic][darko]
helped with crafting initial implementation and continuously worked on the project evolutions.
Besides them, Mainflux is constantly improved and actively
Besides them, Magistrala is constantly improved and actively
developed by [@anovakovic01][alex], [@dusanb94][dusan], [@srados][sava],
[@gsaleh][george], [@blokovi][iva], [@chombium][kole], [@mteodor][mirko] and a large set of contributors.
Maintainers are listed in [MAINTAINERS](MAINTAINERS) file.
The Mainflux team would like to give special thanks to [@mijicd][dejan] for his monumental work
The Magistrala team would like to give special thanks to [@mijicd][dejan] for his monumental work
on designing and implementing a highly improved and optimized version of the platform,
and [@malidukica][dusanm] for his effort on implementing the initial user interface.
## Professional Support
There are many companies offering professional support for the Mainflux system.
There are many companies offering professional support for the Magistrala system.
If you need this kind of support, best is to reach out to [@drasko][drasko] directly, and he will point you out to the best-matching support team.
## Contributing
Thank you for your interest in Mainflux and the desire to contribute!
Thank you for your interest in Magistrala and the desire to contribute!
1. Take a look at our [open issues](https://github.com/mainflux/mainflux/issues). The [good-first-issue](https://github.com/mainflux/mainflux/labels/good-first-issue) label is specifically for issues that are great for getting started.
1. Take a look at our [open issues](https://github.com/absmach/magistrala/issues). The [good-first-issue](https://github.com/absmach/magistrala/labels/good-first-issue) label is specifically for issues that are great for getting started.
2. Checkout the [contribution guide](CONTRIBUTING.md) to learn more about our style and conventions.
3. Make your changes compatible to our workflow.
### We're Hiring
You like Mainflux and you would like to make it your day job? We're always looking for talented engineers interested in open-source, IoT and distributed systems. If you recognize yourself, reach out to [@drasko][drasko] - he will contact you back.
You like Magistrala and you would like to make it your day job? We're always looking for talented engineers interested in open-source, IoT and distributed systems. If you recognize yourself, reach out to [@drasko][drasko] - he will contact you back.
>The best way to grab our attention is, of course, by sending PRs :sunglasses:.
@@ -145,34 +145,34 @@ You like Mainflux and you would like to make it your day job? We're always looki
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fmainflux%2Fmainflux.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fmainflux%2Fmainflux?ref=badge_large)
## Data Collection for Mainflux
Mainflux is committed to continuously improving its services and ensuring a seamless experience for its users. To achieve this, we collect certain data from your deployments. Rest assured, this data is collected solely for the purpose of enhancing Mainflux and is not used with any malicious intent. The deployment summary can be found on our [website][callhome].
## Data Collection for Magistrala
Magistrala is committed to continuously improving its services and ensuring a seamless experience for its users. To achieve this, we collect certain data from your deployments. Rest assured, this data is collected solely for the purpose of enhancing Magistrala and is not used with any malicious intent. The deployment summary can be found on our [website][callhome].
The collected data includes:
- **IP Address** - Used for approximate location information on deployments.
- **Services Used** - To understand which features are popular and prioritize future developments.
- **Last Seen Time** - To ensure the stability and availability of Mainflux.
- **Mainflux Version** - To track the software version and deliver relevant updates.
- **Last Seen Time** - To ensure the stability and availability of Magistrala.
- **Magistrala Version** - To track the software version and deliver relevant updates.
We take your privacy and data security seriously. All data collected is handled in accordance with our stringent privacy policies and industry best practices.
Data collection is on by default and can be disabled by setting the env variable:
`MF_SEND_TELEMETRY=false`
`MG_SEND_TELEMETRY=false`
By utilizing Mainflux, you actively contribute to its improvement. Together, we can build a more robust and efficient IoT platform. Thank you for your trust in Mainflux!
By utilizing Magistrala, you actively contribute to its improvement. Together, we can build a more robust and efficient IoT platform. Thank you for your trust in Magistrala!
[banner]: https://github.com/mainflux/docs/blob/master/docs/img/gopherBanner.jpg
[ci-badge]: https://semaphoreci.com/api/v1/mainflux/mainflux/branches/master/badge.svg
[ci-url]: https://semaphoreci.com/mainflux/mainflux
[ci-badge]: https://semaphoreci.com/api/v1/absmach/magistrala/branches/master/badge.svg
[ci-url]: https://semaphoreci.com/absmach/magistrala
[docs]: https://docs.mainflux.io
[docker]: https://www.docker.com
[forum]: https://groups.google.com/forum/#!forum/mainflux
[gitter]: https://gitter.im/mainflux/mainflux?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
[gitter]: https://gitter.im/absmach/magistrala?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
[gitter-badge]: https://badges.gitter.im/Join%20Chat.svg
[grc-badge]: https://goreportcard.com/badge/github.com/mainflux/mainflux
[grc-url]: https://goreportcard.com/report/github.com/mainflux/mainflux
[cov-badge]: https://codecov.io/gh/mainflux/mainflux/branch/master/graph/badge.svg
[cov-url]: https://codecov.io/gh/mainflux/mainflux
[grc-badge]: https://goreportcard.com/badge/github.com/absmach/magistrala
[grc-url]: https://goreportcard.com/report/github.com/absmach/magistrala
[cov-badge]: https://codecov.io/gh/absmach/magistrala/branch/master/graph/badge.svg
[cov-url]: https://codecov.io/gh/absmach/magistrala
[license]: https://img.shields.io/badge/license-Apache%20v2.0-blue.svg
[twitter]: https://twitter.com/mainflux
[lora]: https://lora-alliance.org/
@@ -180,12 +180,12 @@ By utilizing Mainflux, you actively contribute to its improvement. Together, we
[agent]: https://github.com/mainflux/agent
[export]: https://github.com/mainflux/export
[kubernetes]: https://kubernetes.io/
[rel]: https://github.com/mainflux/mainflux/releases
[rel]: https://github.com/absmach/magistrala/releases
[careers]: https://www.mainflux.com/careers.html
[lf]: https://www.linuxfoundation.org/
[edgex]: https://www.edgexfoundry.org/
[company]: https://www.mainflux.com/
[blog]: https://medium.com/mainflux-iot-platform
[company]: https://abstractmachines.fr
[blog]: https://medium.com/abstract-machines-blog
[drasko]: https://github.com/drasko
[nikola]: https://github.com/nmarcetic
[dejan]: https://github.com/mijicd
@@ -193,7 +193,7 @@ By utilizing Mainflux, you actively contribute to its improvement. Together, we
[darko]: https://github.com/darkodraskovic
[janko]: https://github.com/janko-isidorovic
[alex]: https://github.com/anovakovic01
[dusan]: https://github.com/dusanb94
[dusan]: https://github.com/dborovcanin
[sava]: https://github.com/srados
[george]: https://github.com/gesaleh
[iva]: https://github.com/blokovi
+2 -2
View File
@@ -1,7 +1,7 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package mainflux
package magistrala
// Response contains HTTP response specific methods.
type Response interface {
+6 -6
View File
@@ -1,19 +1,19 @@
asyncapi: '2.6.0'
id: 'https://github.com/mainflux/mainflux/blob/master/api/asyncapi/mqtt.yml'
id: 'https://github.com/absmach/magistrala/blob/master/api/asyncapi/mqtt.yml'
info:
title: Mainflux MQTT Adapter
title: Magistrala MQTT Adapter
version: '1.0.0'
contact:
name: Mainflux Team
url: 'https://github.com/mainflux/mainflux'
name: Magistrala Team
url: 'https://github.com/absmach/magistrala'
email: info@mainflux.com
description: |
MQTT adapter provides an MQTT API for sending messages through the platform. MQTT adapter uses [mProxy](https://github.com/mainflux/mproxy) for proxying traffic between client and MQTT broker.
MQTT adapter provides an MQTT API for sending messages through the platform. MQTT adapter uses [mProxy](https://github.com/magistrala/mproxy) for proxying traffic between client and MQTT broker.
Additionally, the MQTT adapter and the message broker are replicating the traffic between brokers.
license:
name: Apache 2.0
url: 'https://github.com/mainflux/mainflux/blob/master/LICENSE'
url: 'https://github.com/absmach/magistrala/blob/master/LICENSE'
defaultContentType: application/json
+7 -7
View File
@@ -1,16 +1,16 @@
asyncapi: 2.6.0
id: 'https://github.com/mainflux/mainflux/blob/master/api/asyncapi/websocket.yml'
id: 'https://github.com/absmach/magistrala/blob/master/api/asyncapi/websocket.yml'
info:
title: Mainflux WebSocket adapter
title: Magistrala WebSocket adapter
description: WebSocket API for sending messages through communication channels
version: '1.0.0'
contact:
name: Mainflux Team
url: 'https://github.com/mainflux/mainflux'
name: Magistrala Team
url: 'https://github.com/absmach/magistrala'
email: info@mainflux.com
license:
name: Apache 2.0
url: 'https://github.com/mainflux/mainflux/blob/master/LICENSE'
url: 'https://github.com/absmach/magistrala/blob/master/LICENSE'
tags:
- name: WebSocket
defaultContentType: application/json
@@ -25,7 +25,7 @@ servers:
description: Hostname of the WebSocket adapter
default: localhost
port:
description: Mainflux WebSocket Adapter port
description: Magistrala WebSocket Adapter port
default: '8186'
channels:
@@ -67,7 +67,7 @@ channels:
- bearerAuth: []
/version:
subscribe:
summary: Get the version of the Mainflux adapter
summary: Get the version of the Magistrala adapter
operationId: getVersion
bindings:
http:
+2 -2
View File
@@ -1,5 +1,5 @@
# Mainflux OpenAPI Specification
# Magistrala OpenAPI Specification
This folder contains an OpenAPI specifications for Mainflux API.
This folder contains an OpenAPI specifications for Magistrala API.
View specification in Swagger UI at [api.mainflux.io](https://api.mainflux.io)
+3 -3
View File
@@ -1,15 +1,15 @@
openapi: 3.0.3
info:
title: Mainflux Auth Service
title: Magistrala Auth Service
description: |
This is the Auth Server based on the OpenAPI 3.0 specification. It is the HTTP API for managing platform users. You can now help us improve the API whether it's by making changes to the definition itself or to the code.
Some useful links:
- [The Mainflux repository](https://github.com/mainflux/mainflux)
- [The Magistrala repository](https://github.com/absmach/magistrala)
contact:
email: info@mainflux.com
license:
name: Apache 2.0
url: https://github.com/mainflux/mainflux/blob/master/LICENSE
url: https://github.com/absmach/magistrala/blob/master/LICENSE
version: 0.14.0
servers:
+12 -12
View File
@@ -1,15 +1,15 @@
openapi: 3.0.1
info:
title: Mainflux Bootstrap service
title: Magistrala Bootstrap service
description: |
HTTP API for managing platform things configuration.
Some useful links:
- [The Mainflux repository](https://github.com/mainflux/mainflux)
- [The Magistrala repository](https://github.com/absmach/magistrala)
contact:
email: info@mainflux.com
license:
name: Apache 2.0
url: https://github.com/mainflux/mainflux/blob/master/LICENSE
url: https://github.com/absmach/magistrala/blob/master/LICENSE
version: 0.14.0
servers:
@@ -89,7 +89,7 @@ paths:
description: |
Update is performed by replacing the current resource data with values
provided in a request payload. Note that the owner, ID, external ID,
external key, Mainflux Thing ID and key cannot be changed.
external key, Magistrala Thing ID and key cannot be changed.
tags:
- configs
parameters:
@@ -113,7 +113,7 @@ paths:
summary: Removes a Config
description: |
Removes a Config. In case of successful removal the service will ensure
that the removed config is disconnected from all of the Mainflux channels.
that the removed config is disconnected from all of the Magistrala channels.
tags:
- configs
parameters:
@@ -224,7 +224,7 @@ paths:
summary: Updates Config state.
description: |
Updating state represents enabling/disabling Config, i.e. connecting
and disconnecting corresponding Mainflux Thing to the list of Channels.
and disconnecting corresponding Magistrala Thing to the list of Channels.
tags:
- configs
parameters:
@@ -262,11 +262,11 @@ components:
thing_id:
type: string
format: uuid
description: Corresponding Mainflux Thing ID.
description: Corresponding Magistrala Thing ID.
mainflux_key:
type: string
format: uuid
description: Corresponding Mainflux Thing key.
description: Corresponding Magistrala Thing key.
channels:
type: array
minItems: 0
@@ -334,11 +334,11 @@ components:
thing_id:
type: string
format: uuid
description: Corresponding Mainflux Thing ID.
description: Corresponding Magistrala Thing ID.
thing_key:
type: string
format: uuid
description: Corresponding Mainflux Thing key.
description: Corresponding Magistrala Thing key.
channels:
type: array
minItems: 0
@@ -367,7 +367,7 @@ components:
thing_id:
type: string
format: uuid
description: Corresponding Mainflux Thing ID.
description: Corresponding Magistrala Thing ID.
client_cert:
type: string
description: Client certificate.
@@ -450,7 +450,7 @@ components:
description: External key.
thing_id:
type: string
description: ID of the corresponding Mainflux Thing.
description: ID of the corresponding Magistrala Thing.
channels:
type: array
minItems: 0
+4 -4
View File
@@ -1,15 +1,15 @@
openapi: 3.0.1
info:
title: Mainflux Certs service
title: Magistrala Certs service
description: |
HTTP API for Certs service
Some useful links:
- [The Mainflux repository](https://github.com/mainflux/mainflux)
- [The Magistrala repository](https://github.com/absmach/magistrala)
contact:
email: info@mainflux.com
license:
name: Apache 2.0
url: https://github.com/mainflux/mainflux/blob/master/LICENSE
url: https://github.com/absmach/magistrala/blob/master/LICENSE
version: 0.14.0
servers:
@@ -138,7 +138,7 @@ components:
thing_id:
type: string
format: uuid
description: Corresponding Mainflux Thing ID.
description: Corresponding Magistrala Thing ID.
client_cert:
type: string
description: Client Certificate.
+3 -3
View File
@@ -1,15 +1,15 @@
openapi: 3.0.1
info:
title: Mainflux Notifiers service
title: Magistrala Notifiers service
description: |
HTTP API for Notifiers service.
Some useful links:
- [The Mainflux repository](https://github.com/mainflux/mainflux)
- [The Magistrala repository](https://github.com/absmach/magistrala)
contact:
email: info@mainflux.com
license:
name: Apache 2.0
url: https://github.com/mainflux/mainflux/blob/master/LICENSE
url: https://github.com/absmach/magistrala/blob/master/LICENSE
version: 0.14.0
servers:
+3 -3
View File
@@ -1,15 +1,15 @@
openapi: 3.0.1
info:
title: Mainflux http adapter
title: Magistrala http adapter
description: |
HTTP API for sending messages through communication channels.
Some useful links:
- [The Mainflux repository](https://github.com/mainflux/mainflux)
- [The Magistrala repository](https://github.com/absmach/magistrala)
contact:
email: info@mainflux.com
license:
name: Apache 2.0
url: https://github.com/mainflux/mainflux/blob/master/LICENSE
url: https://github.com/absmach/magistrala/blob/master/LICENSE
version: 0.14.0
servers:
+3 -3
View File
@@ -1,15 +1,15 @@
openapi: 3.0.1
info:
title: Mainflux Provision service
title: Magistrala Provision service
description: |
HTTP API for Provision service
Some useful links:
- [The Mainflux repository](https://github.com/mainflux/mainflux)
- [The Magistrala repository](https://github.com/absmach/magistrala)
contact:
email: info@mainflux.com
license:
name: Apache 2.0
url: https://github.com/mainflux/mainflux/blob/master/LICENSE
url: https://github.com/absmach/magistrala/blob/master/LICENSE
version: 0.14.0
servers:
+3 -3
View File
@@ -1,15 +1,15 @@
openapi: 3.0.1
info:
title: Mainflux reader service
title: Magistrala reader service
description: |
HTTP API for reading messages.
Some useful links:
- [The Mainflux repository](https://github.com/mainflux/mainflux)
- [The Magistrala repository](https://github.com/absmach/magistrala)
contact:
email: info@mainflux.com
license:
name: Apache 2.0
url: https://github.com/mainflux/mainflux/blob/master/LICENSE
url: https://github.com/absmach/magistrala/blob/master/LICENSE
version: 0.14.0
servers:
+3 -3
View File
@@ -1,15 +1,15 @@
openapi: 3.0.3
info:
title: Mainflux Things Service
title: Magistrala Things Service
description: |
This is the Things Server based on the OpenAPI 3.0 specification. It is the HTTP API for managing platform things and channels. You can now help us improve the API whether it's by making changes to the definition itself or to the code.
Some useful links:
- [The Mainflux repository](https://github.com/mainflux/mainflux)
- [The Magistrala repository](https://github.com/absmach/magistrala)
contact:
email: info@mainflux.com
license:
name: Apache 2.0
url: https://github.com/mainflux/mainflux/blob/master/LICENSE
url: https://github.com/absmach/magistrala/blob/master/LICENSE
version: 0.14.0
servers:
+5 -5
View File
@@ -1,15 +1,15 @@
openapi: 3.0.1
info:
title: Mainflux twins service
title: Magistrala twins service
description: |
HTTP API for managing digital twins and their states.
Some useful links:
- [The Mainflux repository](https://github.com/mainflux/mainflux)
- [The Magistrala repository](https://github.com/absmach/magistrala)
contact:
email: info@mainflux.com
license:
name: Apache 2.0
url: https://github.com/mainflux/mainflux/blob/master/LICENSE
url: https://github.com/absmach/magistrala/blob/master/LICENSE
version: 0.14.0
servers:
@@ -221,7 +221,7 @@ components:
description: Name of the attribute.
channel:
type: string
description: Mainflux channel used by attribute.
description: Magistrala channel used by attribute.
subtopic:
type: string
description: Subtopic used by attribute.
@@ -256,7 +256,7 @@ components:
properties:
owner:
type: string
description: Email address of Mainflux user that owns twin.
description: Email address of Magistrala user that owns twin.
id:
type: string
format: uuid
+3 -3
View File
@@ -1,15 +1,15 @@
openapi: 3.0.3
info:
title: Mainflux Users Service
title: Magistrala Users Service
description: |
This is the Users Server based on the OpenAPI 3.0 specification. It is the HTTP API for managing platform users. You can now help us improve the API whether it's by making changes to the definition itself or to the code.
Some useful links:
- [The Mainflux repository](https://github.com/mainflux/mainflux)
- [The Magistrala repository](https://github.com/absmach/magistrala)
contact:
email: info@mainflux.com
license:
name: Apache 2.0
url: https://github.com/mainflux/mainflux/blob/master/LICENSE
url: https://github.com/absmach/magistrala/blob/master/LICENSE
version: 0.14.0
servers:
+273 -269
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
// Code generated by protoc-gen-go. DO NOT EDIT.
@@ -7,7 +7,7 @@
// protoc v4.24.3
// source: auth.proto
package mainflux
package magistrala
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
@@ -1473,118 +1473,140 @@ func (x *CountSubjectsRes) GetCount() int64 {
var File_auth_proto protoreflect.FileDescriptor
var file_auth_proto_rawDesc = []byte{
0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x6d, 0x61,
0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x22, 0x83, 0x01, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
0x12, 0x20, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b,
0x65, 0x6e, 0x12, 0x27, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b,
0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x66, 0x72,
0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x0a, 0x61,
0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f,
0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x23, 0x0a, 0x0b,
0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74,
0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65,
0x6e, 0x22, 0x1d, 0x0a, 0x0b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73,
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
0x22, 0x2e, 0x0a, 0x08, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04,
0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
0x22, 0x32, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06,
0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f,
0x6d, 0x61, 0x69, 0x6e, 0x22, 0x22, 0x0a, 0x0a, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52,
0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xac, 0x02, 0x0a, 0x0c, 0x41, 0x75, 0x74,
0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d,
0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x6d, 0x61,
0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x22, 0x83, 0x01, 0x0a, 0x05, 0x54, 0x6f, 0x6b,
0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65,
0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54,
0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x27, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54,
0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65,
0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a,
0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0f, 0x0a,
0x0d, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x23,
0x0a, 0x0b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a,
0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f,
0x6b, 0x65, 0x6e, 0x22, 0x1d, 0x0a, 0x0b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52,
0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
0x69, 0x64, 0x22, 0x2e, 0x0a, 0x08, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12,
0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79,
0x70, 0x65, 0x22, 0x32, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16,
0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x22, 0x0a, 0x0a, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73,
0x68, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xac, 0x02, 0x0a, 0x0c, 0x41,
0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x6e,
0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x75, 0x62,
0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0b, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c,
0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x12,
0x29, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65,
0x63, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75,
0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62,
0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
0x12, 0x16, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65,
0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f,
0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3e, 0x0a, 0x0c, 0x41, 0x75, 0x74,
0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x75, 0x74,
0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61,
0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x89, 0x02, 0x0a, 0x0c, 0x41, 0x64,
0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61,
0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e,
0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73,
0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65,
0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01,
0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a,
0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06,
0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x62,
0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74,
0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x2e, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x52, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
0x7a, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x6f,
0x72, 0x69, 0x7a, 0x65, 0x64, 0x22, 0x8c, 0x02, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d,
0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61,
0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6a, 0x65,
0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73,
0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x75,
0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0b, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x29, 0x0a,
0x10, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65,
0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06,
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e,
0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16,
0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3e, 0x0a, 0x0c, 0x41, 0x75, 0x74, 0x68, 0x6f,
0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x6f,
0x72, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74,
0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x89, 0x02, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x50,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65,
0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d,
0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x75,
0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x75, 0x62,
0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6c, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18,
0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a,
0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65,
0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x62,
0x6a, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65,
0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70,
0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54,
0x79, 0x70, 0x65, 0x22, 0x2e, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x52, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
0x7a, 0x65, 0x64, 0x22, 0x8c, 0x02, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65,
0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x75, 0x62,
0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04,
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a,
0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72,
0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70,
0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65,
0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79,
0x70, 0x65, 0x22, 0x2b, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x52, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22,
0xc7, 0x02, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52,
0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
0x12, 0x21, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54,
0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72,
0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73,
0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18,
0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69,
0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73,
0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x07,
0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b,
0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a,
0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x09,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f,
0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01,
0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x52, 0x0a, 0x0e, 0x4c, 0x69, 0x73,
0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70,
0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70,
0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50,
0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xb2, 0x02,
0x0a, 0x0f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65,
0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x75,
0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6c,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12,
0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
0x09, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70,
0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f,
0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79,
0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x54, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f,
0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74,
0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
0x64, 0x22, 0xc7, 0x02, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x73, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79,
0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65,
0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65,
0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73,
0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d,
0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f,
0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12,
0x24, 0x0a, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65,
0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a,
0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x52, 0x0a, 0x0e, 0x4c,
0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x12, 0x1a, 0x0a,
0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x65, 0x78,
0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22,
0xb2, 0x02, 0x0a, 0x0f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73,
0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f,
0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,
0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6c,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6c,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73,
0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69,
0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18,
0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a,
0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24,
0x0a, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54,
0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x27, 0x0a, 0x0f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc8, 0x02,
0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65,
0x71, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
0x21, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
@@ -1603,117 +1625,99 @@ var file_auth_proto_rawDesc = []byte{
0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d,
0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x09, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b,
0x65, 0x6e, 0x22, 0x27, 0x0a, 0x0f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x73, 0x52, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01,
0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc8, 0x02, 0x0a, 0x0f,
0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12,
0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a,
0x0c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65,
0x12, 0x29, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x6c, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73,
0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75,
0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18,
0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28,
0x09, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x65,
0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52,
0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x53, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75,
0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x6c,
0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c,
0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67,
0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65,
0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xb3, 0x02, 0x0a, 0x10,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71,
0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21,
0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70,
0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x6c,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62,
0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07,
0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73,
0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69,
0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01,
0x28, 0x09, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62,
0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6e,
0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x09, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65,
0x6e, 0x22, 0x28, 0x0a, 0x10, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x73, 0x52, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01,
0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0x4d, 0x0a, 0x0c, 0x41,
0x75, 0x74, 0x68, 0x7a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x41,
0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66,
0x6c, 0x75, 0x78, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71,
0x1a, 0x16, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x2e, 0x41, 0x75, 0x74, 0x68,
0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00, 0x32, 0xd6, 0x06, 0x0a, 0x0b, 0x41,
0x75, 0x74, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x49, 0x73,
0x73, 0x75, 0x65, 0x12, 0x12, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x2e, 0x49,
0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c,
0x75, 0x78, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x05, 0x4c, 0x6f,
0x67, 0x69, 0x6e, 0x12, 0x12, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x2e, 0x4c,
0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c,
0x75, 0x78, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x07, 0x52, 0x65,
0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x14, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78,
0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x6d, 0x61,
0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x00, 0x12, 0x3a,
0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x12, 0x15, 0x2e, 0x6d, 0x61, 0x69,
0x6e, 0x66, 0x6c, 0x75, 0x78, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65,
0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x2e, 0x49, 0x64, 0x65,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x09, 0x41, 0x75,
0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c,
0x75, 0x78, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x1a,
0x16, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f,
0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x09, 0x41, 0x64, 0x64,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x16, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75,
0x78, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x16,
0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x19, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66,
0x6c, 0x75, 0x78, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x2e, 0x44,
0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x22, 0x00,
0x12, 0x43, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12,
0x18, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f,
0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6d, 0x61, 0x69, 0x6e,
0x66, 0x6c, 0x75, 0x78, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73,
0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c,
0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c,
0x75, 0x78, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65,
0x71, 0x1a, 0x18, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x2e, 0x4c, 0x69, 0x73,
0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x46, 0x0a,
0x0c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x19, 0x2e,
0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x62,
0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66,
0x6c, 0x75, 0x78, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73,
0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62,
0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x19, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78,
0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28,
0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x53, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74,
0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70,
0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70,
0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50,
0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xb3, 0x02,
0x0a, 0x10, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52,
0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
0x12, 0x21, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54,
0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72,
0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73,
0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18,
0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69,
0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73,
0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x07,
0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b,
0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a,
0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x09,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f,
0x6b, 0x65, 0x6e, 0x22, 0x28, 0x0a, 0x10, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0x51, 0x0a,
0x0c, 0x41, 0x75, 0x74, 0x68, 0x7a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x41, 0x0a,
0x09, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x2e, 0x6d, 0x61, 0x67,
0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a,
0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c,
0x61, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00,
0x32, 0x8a, 0x07, 0x0a, 0x0b, 0x41, 0x75, 0x74, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x12, 0x32, 0x0a, 0x05, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x14, 0x2e, 0x6d, 0x61, 0x67, 0x69,
0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x1a,
0x11, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x54, 0x6f, 0x6b,
0x65, 0x6e, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x14, 0x2e,
0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e,
0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61,
0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x07, 0x52, 0x65, 0x66, 0x72,
0x65, 0x73, 0x68, 0x12, 0x16, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61,
0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x6d, 0x61,
0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x00,
0x12, 0x3e, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x12, 0x17, 0x2e, 0x6d,
0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
0x74, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61,
0x6c, 0x61, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x22, 0x00,
0x12, 0x41, 0x0a, 0x09, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x2e,
0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f,
0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74,
0x72, 0x61, 0x6c, 0x61, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65,
0x73, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x12, 0x18, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x41, 0x64,
0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6d, 0x61, 0x67,
0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63,
0x79, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1b, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72,
0x61, 0x6c, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61,
0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73,
0x22, 0x00, 0x12, 0x47, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x73, 0x12, 0x1a, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x4c,
0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e,
0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f,
0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x0e, 0x4c,
0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1a, 0x2e,
0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f,
0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x6d, 0x61, 0x67, 0x69,
0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x73, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x0c, 0x43, 0x6f, 0x75, 0x6e, 0x74,
0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74,
0x72, 0x61, 0x6c, 0x61, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x73, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c,
0x61, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65,
0x73, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6a, 0x65,
0x63, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61,
0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71,
0x1a, 0x19, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x2e, 0x4c, 0x69, 0x73, 0x74,
0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x49, 0x0a,
0x0f, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73,
0x12, 0x19, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x2e, 0x4c, 0x69, 0x73, 0x74,
0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x6d, 0x61,
0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6a, 0x65,
0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0d, 0x43, 0x6f, 0x75, 0x6e,
0x74, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x6d, 0x61, 0x69, 0x6e,
0x66, 0x6c, 0x75, 0x78, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78,
0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65,
0x73, 0x22, 0x00, 0x42, 0x0c, 0x5a, 0x0a, 0x2e, 0x2f, 0x6d, 0x61, 0x69, 0x6e, 0x66, 0x6c, 0x75,
0x78, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x1a, 0x1b, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x4c, 0x69,
0x73, 0x74, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12,
0x4d, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x73, 0x12, 0x1b, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e,
0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a,
0x1b, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x4c, 0x69, 0x73,
0x74, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x4d,
0x0a, 0x0d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12,
0x1c, 0x2e, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x43, 0x6f, 0x75,
0x6e, 0x74, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e,
0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74,
0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x22, 0x00, 0x42, 0x0e, 0x5a,
0x0c, 0x2e, 0x2f, 0x6d, 0x61, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x61, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -1730,56 +1734,56 @@ func file_auth_proto_rawDescGZIP() []byte {
var file_auth_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
var file_auth_proto_goTypes = []interface{}{
(*Token)(nil), // 0: mainflux.Token
(*IdentityReq)(nil), // 1: mainflux.IdentityReq
(*IdentityRes)(nil), // 2: mainflux.IdentityRes
(*IssueReq)(nil), // 3: mainflux.IssueReq
(*LoginReq)(nil), // 4: mainflux.LoginReq
(*RefreshReq)(nil), // 5: mainflux.RefreshReq
(*AuthorizeReq)(nil), // 6: mainflux.AuthorizeReq
(*AuthorizeRes)(nil), // 7: mainflux.AuthorizeRes
(*AddPolicyReq)(nil), // 8: mainflux.AddPolicyReq
(*AddPolicyRes)(nil), // 9: mainflux.AddPolicyRes
(*DeletePolicyReq)(nil), // 10: mainflux.DeletePolicyReq
(*DeletePolicyRes)(nil), // 11: mainflux.DeletePolicyRes
(*ListObjectsReq)(nil), // 12: mainflux.ListObjectsReq
(*ListObjectsRes)(nil), // 13: mainflux.ListObjectsRes
(*CountObjectsReq)(nil), // 14: mainflux.CountObjectsReq
(*CountObjectsRes)(nil), // 15: mainflux.CountObjectsRes
(*ListSubjectsReq)(nil), // 16: mainflux.ListSubjectsReq
(*ListSubjectsRes)(nil), // 17: mainflux.ListSubjectsRes
(*CountSubjectsReq)(nil), // 18: mainflux.CountSubjectsReq
(*CountSubjectsRes)(nil), // 19: mainflux.CountSubjectsRes
(*Token)(nil), // 0: magistrala.Token
(*IdentityReq)(nil), // 1: magistrala.IdentityReq
(*IdentityRes)(nil), // 2: magistrala.IdentityRes
(*IssueReq)(nil), // 3: magistrala.IssueReq
(*LoginReq)(nil), // 4: magistrala.LoginReq
(*RefreshReq)(nil), // 5: magistrala.RefreshReq
(*AuthorizeReq)(nil), // 6: magistrala.AuthorizeReq
(*AuthorizeRes)(nil), // 7: magistrala.AuthorizeRes
(*AddPolicyReq)(nil), // 8: magistrala.AddPolicyReq
(*AddPolicyRes)(nil), // 9: magistrala.AddPolicyRes
(*DeletePolicyReq)(nil), // 10: magistrala.DeletePolicyReq
(*DeletePolicyRes)(nil), // 11: magistrala.DeletePolicyRes
(*ListObjectsReq)(nil), // 12: magistrala.ListObjectsReq
(*ListObjectsRes)(nil), // 13: magistrala.ListObjectsRes
(*CountObjectsReq)(nil), // 14: magistrala.CountObjectsReq
(*CountObjectsRes)(nil), // 15: magistrala.CountObjectsRes
(*ListSubjectsReq)(nil), // 16: magistrala.ListSubjectsReq
(*ListSubjectsRes)(nil), // 17: magistrala.ListSubjectsRes
(*CountSubjectsReq)(nil), // 18: magistrala.CountSubjectsReq
(*CountSubjectsRes)(nil), // 19: magistrala.CountSubjectsRes
}
var file_auth_proto_depIdxs = []int32{
6, // 0: mainflux.AuthzService.Authorize:input_type -> mainflux.AuthorizeReq
3, // 1: mainflux.AuthService.Issue:input_type -> mainflux.IssueReq
4, // 2: mainflux.AuthService.Login:input_type -> mainflux.LoginReq
5, // 3: mainflux.AuthService.Refresh:input_type -> mainflux.RefreshReq
1, // 4: mainflux.AuthService.Identify:input_type -> mainflux.IdentityReq
6, // 5: mainflux.AuthService.Authorize:input_type -> mainflux.AuthorizeReq
8, // 6: mainflux.AuthService.AddPolicy:input_type -> mainflux.AddPolicyReq
10, // 7: mainflux.AuthService.DeletePolicy:input_type -> mainflux.DeletePolicyReq
12, // 8: mainflux.AuthService.ListObjects:input_type -> mainflux.ListObjectsReq
12, // 9: mainflux.AuthService.ListAllObjects:input_type -> mainflux.ListObjectsReq
14, // 10: mainflux.AuthService.CountObjects:input_type -> mainflux.CountObjectsReq
16, // 11: mainflux.AuthService.ListSubjects:input_type -> mainflux.ListSubjectsReq
16, // 12: mainflux.AuthService.ListAllSubjects:input_type -> mainflux.ListSubjectsReq
18, // 13: mainflux.AuthService.CountSubjects:input_type -> mainflux.CountSubjectsReq
7, // 14: mainflux.AuthzService.Authorize:output_type -> mainflux.AuthorizeRes
0, // 15: mainflux.AuthService.Issue:output_type -> mainflux.Token
0, // 16: mainflux.AuthService.Login:output_type -> mainflux.Token
0, // 17: mainflux.AuthService.Refresh:output_type -> mainflux.Token
2, // 18: mainflux.AuthService.Identify:output_type -> mainflux.IdentityRes
7, // 19: mainflux.AuthService.Authorize:output_type -> mainflux.AuthorizeRes
9, // 20: mainflux.AuthService.AddPolicy:output_type -> mainflux.AddPolicyRes
11, // 21: mainflux.AuthService.DeletePolicy:output_type -> mainflux.DeletePolicyRes
13, // 22: mainflux.AuthService.ListObjects:output_type -> mainflux.ListObjectsRes
13, // 23: mainflux.AuthService.ListAllObjects:output_type -> mainflux.ListObjectsRes
15, // 24: mainflux.AuthService.CountObjects:output_type -> mainflux.CountObjectsRes
17, // 25: mainflux.AuthService.ListSubjects:output_type -> mainflux.ListSubjectsRes
17, // 26: mainflux.AuthService.ListAllSubjects:output_type -> mainflux.ListSubjectsRes
19, // 27: mainflux.AuthService.CountSubjects:output_type -> mainflux.CountSubjectsRes
6, // 0: magistrala.AuthzService.Authorize:input_type -> magistrala.AuthorizeReq
3, // 1: magistrala.AuthService.Issue:input_type -> magistrala.IssueReq
4, // 2: magistrala.AuthService.Login:input_type -> magistrala.LoginReq
5, // 3: magistrala.AuthService.Refresh:input_type -> magistrala.RefreshReq
1, // 4: magistrala.AuthService.Identify:input_type -> magistrala.IdentityReq
6, // 5: magistrala.AuthService.Authorize:input_type -> magistrala.AuthorizeReq
8, // 6: magistrala.AuthService.AddPolicy:input_type -> magistrala.AddPolicyReq
10, // 7: magistrala.AuthService.DeletePolicy:input_type -> magistrala.DeletePolicyReq
12, // 8: magistrala.AuthService.ListObjects:input_type -> magistrala.ListObjectsReq
12, // 9: magistrala.AuthService.ListAllObjects:input_type -> magistrala.ListObjectsReq
14, // 10: magistrala.AuthService.CountObjects:input_type -> magistrala.CountObjectsReq
16, // 11: magistrala.AuthService.ListSubjects:input_type -> magistrala.ListSubjectsReq
16, // 12: magistrala.AuthService.ListAllSubjects:input_type -> magistrala.ListSubjectsReq
18, // 13: magistrala.AuthService.CountSubjects:input_type -> magistrala.CountSubjectsReq
7, // 14: magistrala.AuthzService.Authorize:output_type -> magistrala.AuthorizeRes
0, // 15: magistrala.AuthService.Issue:output_type -> magistrala.Token
0, // 16: magistrala.AuthService.Login:output_type -> magistrala.Token
0, // 17: magistrala.AuthService.Refresh:output_type -> magistrala.Token
2, // 18: magistrala.AuthService.Identify:output_type -> magistrala.IdentityRes
7, // 19: magistrala.AuthService.Authorize:output_type -> magistrala.AuthorizeRes
9, // 20: magistrala.AuthService.AddPolicy:output_type -> magistrala.AddPolicyRes
11, // 21: magistrala.AuthService.DeletePolicy:output_type -> magistrala.DeletePolicyRes
13, // 22: magistrala.AuthService.ListObjects:output_type -> magistrala.ListObjectsRes
13, // 23: magistrala.AuthService.ListAllObjects:output_type -> magistrala.ListObjectsRes
15, // 24: magistrala.AuthService.CountObjects:output_type -> magistrala.CountObjectsRes
17, // 25: magistrala.AuthService.ListSubjects:output_type -> magistrala.ListSubjectsRes
17, // 26: magistrala.AuthService.ListAllSubjects:output_type -> magistrala.ListSubjectsRes
19, // 27: magistrala.AuthService.CountSubjects:output_type -> magistrala.CountSubjectsRes
14, // [14:28] is the sub-list for method output_type
0, // [0:14] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
+3 -3
View File
@@ -1,10 +1,10 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
syntax = "proto3";
package mainflux;
option go_package = "./mainflux";
package magistrala;
option go_package = "./magistrala";
// AuthzService is a service that provides authentication and authorization
// functionalities for the things service.
+28 -28
View File
@@ -6,7 +6,7 @@ Auth service provides authentication features as an API for managing authenticat
User service is using Auth service gRPC API to obtain login token or password reset token. Authentication key consists of the following fields:
- ID - key ID
- Type - one of the three types described below
- IssuerID - an ID of the Mainflux User who issued the key
- IssuerID - an ID of the Magistrala User who issued the key
- Subject - user email
- IssuedAt - the timestamp when the key is issued
- ExpiresAt - the timestamp after which the key is invalid
@@ -26,7 +26,7 @@ API keys are similar to the User keys. The main difference is that API keys have
Recovery key is the password recovery key. It's short-lived token used for password recovery process.
For in-depth explanation of the aforementioned scenarios, as well as thorough
understanding of Mainflux, please check out the [official documentation][doc].
understanding of Magistrala, please check out the [official documentation][doc].
The following actions are supported:
@@ -57,31 +57,31 @@ default values.
| Variable | Description | Default |
|-------------------------------|--------------------------------------------------------------------------|----------------|
| MF_AUTH_LOG_LEVEL | Service level (debug, info, warn, error) | error |
| MF_AUTH_DB_HOST | Database host address | localhost |
| MF_AUTH_DB_PORT | Database host port | 5432 |
| MF_AUTH_DB_USER | Database user | mainflux |
| MF_AUTH_DB_PASSWORD | Database password | mainflux |
| MF_AUTH_DB | Name of the database used by the service | auth |
| MF_AUTH_DB_SSL_MODE | Database connection SSL mode (disable, require, verify-ca, verify-full) | disable |
| MF_AUTH_DB_SSL_CERT | Path to the PEM encoded certificate file | |
| MF_AUTH_DB_SSL_KEY | Path to the PEM encoded key file | |
| MF_AUTH_DB_SSL_ROOT_CERT | Path to the PEM encoded root certificate file | |
| MF_AUTH_HTTP_PORT | Auth service HTTP port | 8180 |
| MF_AUTH_GRPC_PORT | Auth service gRPC port | 8181 |
| MF_AUTH_SERVER_CERT | Path to server certificate in pem format | |
| MF_AUTH_SERVER_KEY | Path to server key in pem format | |
| MF_AUTH_SECRET | String used for signing tokens | auth |
| MF_AUTH_LOGIN_TOKEN_DURATION | The login token expiration period | 10h |
| MF_JAEGER_URL | Jaeger server URL | localhost:6831 |
| MF_KETO_READ_REMOTE_HOST | Keto Read Host | mainflux-keto |
| MF_KETO_WRITE_REMOTE_HOST | Keto Write Host | mainflux-keto |
| MF_KETO_READ_REMOTE_PORT | Keto Read Port | 4466 |
| MF_KETO_WRITE_REMOTE_PORT | Keto Write Port | 4467 |
| MG_AUTH_LOG_LEVEL | Service level (debug, info, warn, error) | error |
| MG_AUTH_DB_HOST | Database host address | localhost |
| MG_AUTH_DB_PORT | Database host port | 5432 |
| MG_AUTH_DB_USER | Database user | mainflux |
| MG_AUTH_DB_PASSWORD | Database password | mainflux |
| MG_AUTH_DB | Name of the database used by the service | auth |
| MG_AUTH_DB_SSL_MODE | Database connection SSL mode (disable, require, verify-ca, verify-full) | disable |
| MG_AUTH_DB_SSL_CERT | Path to the PEM encoded certificate file | |
| MG_AUTH_DB_SSL_KEY | Path to the PEM encoded key file | |
| MG_AUTH_DB_SSL_ROOT_CERT | Path to the PEM encoded root certificate file | |
| MG_AUTH_HTTP_PORT | Auth service HTTP port | 8180 |
| MG_AUTH_GRPC_PORT | Auth service gRPC port | 8181 |
| MG_AUTH_SERVER_CERT | Path to server certificate in pem format | |
| MG_AUTH_SERVER_KEY | Path to server key in pem format | |
| MG_AUTH_SECRET | String used for signing tokens | auth |
| MG_AUTH_LOGIN_TOKEN_DURATION | The login token expiration period | 10h |
| MG_JAEGER_URL | Jaeger server URL | localhost:6831 |
| MG_KETO_READ_REMOTE_HOST | Keto Read Host | mainflux-keto |
| MG_KETO_WRITE_REMOTE_HOST | Keto Write Host | mainflux-keto |
| MG_KETO_READ_REMOTE_PORT | Keto Read Port | 4466 |
| MG_KETO_WRITE_REMOTE_PORT | Keto Write Port | 4467 |
## Deployment
The service itself is distributed as Docker container. Check the [`auth`](https://github.com/mainflux/mainflux/blob/master/docker/docker-compose.yml#L71-L94) service section in
The service itself is distributed as Docker container. Check the [`auth`](https://github.com/absmach/magistrala/blob/master/docker/docker-compose.yml#L71-L94) service section in
docker-compose to see how service is deployed.
@@ -89,9 +89,9 @@ To start the service outside of the container, execute the following shell scrip
```bash
# download the latest version of the service
go get github.com/mainflux/mainflux
go get github.com/absmach/magistrala
cd $GOPATH/src/github.com/mainflux/mainflux
cd $GOPATH/src/github.com/absmach/magistrala
# compile the service
make auth
@@ -100,10 +100,10 @@ make auth
make install
# set the environment variables and run the service
MF_AUTH_LOG_LEVEL=[Service log level] MF_AUTH_DB_HOST=[Database host address] MF_AUTH_DB_PORT=[Database host port] MF_AUTH_DB_USER=[Database user] MF_AUTH_DB_PASS=[Database password] MF_AUTH_DB=[Name of the database used by the service] MF_AUTH_DB_SSL_MODE=[SSL mode to connect to the database with] MF_AUTH_DB_SSL_CERT=[Path to the PEM encoded certificate file] MF_AUTH_DB_SSL_KEY=[Path to the PEM encoded key file] MF_AUTH_DB_SSL_ROOT_CERT=[Path to the PEM encoded root certificate file] MF_AUTH_HTTP_PORT=[Service HTTP port] MF_AUTH_GRPC_PORT=[Service gRPC port] MF_AUTH_SECRET=[String used for signing tokens] MF_AUTH_SERVER_CERT=[Path to server certificate] MF_AUTH_SERVER_KEY=[Path to server key] MF_JAEGER_URL=[Jaeger server URL] MF_AUTH_LOGIN_TOKEN_DURATION=[The login token expiration period] $GOBIN/mainflux-auth
MG_AUTH_LOG_LEVEL=[Service log level] MG_AUTH_DB_HOST=[Database host address] MG_AUTH_DB_PORT=[Database host port] MG_AUTH_DB_USER=[Database user] MG_AUTH_DB_PASS=[Database password] MG_AUTH_DB=[Name of the database used by the service] MG_AUTH_DB_SSL_MODE=[SSL mode to connect to the database with] MG_AUTH_DB_SSL_CERT=[Path to the PEM encoded certificate file] MG_AUTH_DB_SSL_KEY=[Path to the PEM encoded key file] MG_AUTH_DB_SSL_ROOT_CERT=[Path to the PEM encoded root certificate file] MG_AUTH_HTTP_PORT=[Service HTTP port] MG_AUTH_GRPC_PORT=[Service gRPC port] MG_AUTH_SECRET=[String used for signing tokens] MG_AUTH_SERVER_CERT=[Path to server certificate] MG_AUTH_SERVER_KEY=[Path to server key] MG_JAEGER_URL=[Jaeger server URL] MG_AUTH_LOGIN_TOKEN_DURATION=[The login token expiration period] $GOBIN/mainflux-auth
```
If `MF_EMAIL_TEMPLATE` doesn't point to any file service will function but password reset functionality will not work.
If `MG_EMAIL_TEMPLATE` doesn't point to any file service will function but password reset functionality will not work.
## Usage
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
// Package api contains implementation of Auth service HTTP API.
+3 -3
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package grpc
@@ -7,10 +7,10 @@ import (
"context"
"time"
mainflux "github.com/absmach/magistrala"
"github.com/absmach/magistrala/auth"
"github.com/go-kit/kit/endpoint"
kitgrpc "github.com/go-kit/kit/transport/grpc"
"github.com/mainflux/mainflux"
"github.com/mainflux/mainflux/auth"
"google.golang.org/grpc"
)
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
// Package grpc contains implementation of Auth service gRPC API.
+2 -2
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package grpc
@@ -7,8 +7,8 @@ import (
"context"
"time"
"github.com/absmach/magistrala/auth"
"github.com/go-kit/kit/endpoint"
"github.com/mainflux/mainflux/auth"
)
func issueEndpoint(svc auth.Service) endpoint.Endpoint {
+7 -7
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package grpc_test
@@ -10,12 +10,12 @@ import (
"testing"
"time"
"github.com/mainflux/mainflux"
"github.com/mainflux/mainflux/auth"
grpcapi "github.com/mainflux/mainflux/auth/api/grpc"
"github.com/mainflux/mainflux/auth/jwt"
"github.com/mainflux/mainflux/auth/mocks"
"github.com/mainflux/mainflux/pkg/uuid"
mainflux "github.com/absmach/magistrala"
"github.com/absmach/magistrala/auth"
grpcapi "github.com/absmach/magistrala/auth/api/grpc"
"github.com/absmach/magistrala/auth/jwt"
"github.com/absmach/magistrala/auth/mocks"
"github.com/absmach/magistrala/pkg/uuid"
"github.com/stretchr/testify/assert"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
+3 -3
View File
@@ -1,11 +1,11 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package grpc
import (
"github.com/mainflux/mainflux/auth"
"github.com/mainflux/mainflux/internal/apiutil"
"github.com/absmach/magistrala/auth"
"github.com/absmach/magistrala/internal/apiutil"
)
type identityReq struct {
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package grpc
+5 -5
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package grpc
@@ -6,11 +6,11 @@ package grpc
import (
"context"
mainflux "github.com/absmach/magistrala"
"github.com/absmach/magistrala/auth"
"github.com/absmach/magistrala/internal/apiutil"
"github.com/absmach/magistrala/pkg/errors"
kitgrpc "github.com/go-kit/kit/transport/grpc"
mainflux "github.com/mainflux/mainflux"
"github.com/mainflux/mainflux/auth"
"github.com/mainflux/mainflux/internal/apiutil"
"github.com/mainflux/mainflux/pkg/errors"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package grpc_test
+1 -1
View File
@@ -1,3 +1,3 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package http
+2 -2
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package keys
@@ -7,8 +7,8 @@ import (
"context"
"time"
"github.com/absmach/magistrala/auth"
"github.com/go-kit/kit/endpoint"
"github.com/mainflux/mainflux/auth"
)
func issueEndpoint(svc auth.Service) endpoint.Endpoint {
+8 -8
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package keys_test
@@ -14,13 +14,13 @@ import (
"testing"
"time"
"github.com/mainflux/mainflux/auth"
httpapi "github.com/mainflux/mainflux/auth/api/http"
"github.com/mainflux/mainflux/auth/jwt"
"github.com/mainflux/mainflux/auth/mocks"
"github.com/mainflux/mainflux/internal/apiutil"
"github.com/mainflux/mainflux/logger"
"github.com/mainflux/mainflux/pkg/uuid"
"github.com/absmach/magistrala/auth"
httpapi "github.com/absmach/magistrala/auth/api/http"
"github.com/absmach/magistrala/auth/jwt"
"github.com/absmach/magistrala/auth/mocks"
"github.com/absmach/magistrala/internal/apiutil"
"github.com/absmach/magistrala/logger"
"github.com/absmach/magistrala/pkg/uuid"
"github.com/stretchr/testify/assert"
)
+3 -3
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package keys
@@ -6,8 +6,8 @@ package keys
import (
"time"
"github.com/mainflux/mainflux/auth"
"github.com/mainflux/mainflux/internal/apiutil"
"github.com/absmach/magistrala/auth"
"github.com/absmach/magistrala/internal/apiutil"
)
type issueKeyReq struct {
+3 -3
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package keys
@@ -7,8 +7,8 @@ import (
"net/http"
"time"
"github.com/mainflux/mainflux"
"github.com/mainflux/mainflux/auth"
mainflux "github.com/absmach/magistrala"
"github.com/absmach/magistrala/auth"
)
var (
+6 -6
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package keys
@@ -9,13 +9,13 @@ import (
"net/http"
"strings"
mainflux "github.com/absmach/magistrala"
"github.com/absmach/magistrala/auth"
"github.com/absmach/magistrala/internal/apiutil"
"github.com/absmach/magistrala/logger"
"github.com/absmach/magistrala/pkg/errors"
kithttp "github.com/go-kit/kit/transport/http"
"github.com/go-zoo/bone"
"github.com/mainflux/mainflux"
"github.com/mainflux/mainflux/auth"
"github.com/mainflux/mainflux/internal/apiutil"
"github.com/mainflux/mainflux/logger"
"github.com/mainflux/mainflux/pkg/errors"
)
const contentType = "application/json"
+2 -2
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package policies
@@ -6,8 +6,8 @@ package policies
import (
"context"
"github.com/absmach/magistrala/auth"
"github.com/go-kit/kit/endpoint"
"github.com/mainflux/mainflux/auth"
)
func createPolicyEndpoint(svc auth.Service) endpoint.Endpoint {
+8 -8
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package policies_test
@@ -14,13 +14,13 @@ import (
"testing"
"time"
"github.com/mainflux/mainflux/auth"
httpapi "github.com/mainflux/mainflux/auth/api/http"
"github.com/mainflux/mainflux/auth/jwt"
"github.com/mainflux/mainflux/auth/mocks"
"github.com/mainflux/mainflux/internal/apiutil"
"github.com/mainflux/mainflux/logger"
"github.com/mainflux/mainflux/pkg/uuid"
"github.com/absmach/magistrala/auth"
httpapi "github.com/absmach/magistrala/auth/api/http"
"github.com/absmach/magistrala/auth/jwt"
"github.com/absmach/magistrala/auth/mocks"
"github.com/absmach/magistrala/internal/apiutil"
"github.com/absmach/magistrala/logger"
"github.com/absmach/magistrala/pkg/uuid"
"github.com/stretchr/testify/assert"
)
+3 -3
View File
@@ -1,11 +1,11 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package policies
import "github.com/mainflux/mainflux/internal/apiutil"
import "github.com/absmach/magistrala/internal/apiutil"
// Action represents an enum for the policies used in the Mainflux.
// Action represents an enum for the policies used in the Magistrala.
type Action int
const (
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package policies
+6 -6
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package policies
@@ -9,13 +9,13 @@ import (
"net/http"
"strings"
mainflux "github.com/absmach/magistrala"
"github.com/absmach/magistrala/auth"
"github.com/absmach/magistrala/internal/apiutil"
"github.com/absmach/magistrala/logger"
"github.com/absmach/magistrala/pkg/errors"
kithttp "github.com/go-kit/kit/transport/http"
"github.com/go-zoo/bone"
"github.com/mainflux/mainflux"
"github.com/mainflux/mainflux/auth"
"github.com/mainflux/mainflux/internal/apiutil"
"github.com/mainflux/mainflux/logger"
"github.com/mainflux/mainflux/pkg/errors"
)
const contentType = "application/json"
+6 -6
View File
@@ -1,16 +1,16 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package http
import (
"net/http"
mainflux "github.com/absmach/magistrala"
"github.com/absmach/magistrala/auth"
"github.com/absmach/magistrala/auth/api/http/keys"
"github.com/absmach/magistrala/auth/api/http/policies"
"github.com/absmach/magistrala/logger"
"github.com/go-zoo/bone"
"github.com/mainflux/mainflux"
"github.com/mainflux/mainflux/auth"
"github.com/mainflux/mainflux/auth/api/http/keys"
"github.com/mainflux/mainflux/auth/api/http/policies"
"github.com/mainflux/mainflux/logger"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
+3 -3
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
//go:build !test
@@ -10,8 +10,8 @@ import (
"fmt"
"time"
"github.com/mainflux/mainflux/auth"
log "github.com/mainflux/mainflux/logger"
"github.com/absmach/magistrala/auth"
log "github.com/absmach/magistrala/logger"
)
var _ auth.Service = (*loggingMiddleware)(nil)
+2 -2
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
//go:build !test
@@ -9,8 +9,8 @@ import (
"context"
"time"
"github.com/absmach/magistrala/auth"
"github.com/go-kit/kit/metrics"
"github.com/mainflux/mainflux/auth"
)
var _ auth.Service = (*metricsMiddleware)(nil)
+4 -4
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package jwt_test
@@ -8,9 +8,9 @@ import (
"testing"
"time"
"github.com/mainflux/mainflux/auth"
"github.com/mainflux/mainflux/auth/jwt"
"github.com/mainflux/mainflux/pkg/errors"
"github.com/absmach/magistrala/auth"
"github.com/absmach/magistrala/auth/jwt"
"github.com/absmach/magistrala/pkg/errors"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
+3 -3
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package jwt
@@ -9,10 +9,10 @@ import (
"fmt"
"strconv"
"github.com/absmach/magistrala/auth"
"github.com/absmach/magistrala/pkg/errors"
"github.com/lestrrat-go/jwx/v2/jwa"
"github.com/lestrrat-go/jwx/v2/jwt"
"github.com/mainflux/mainflux/auth"
"github.com/mainflux/mainflux/pkg/errors"
)
var (
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package auth
+2 -2
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package auth_test
@@ -8,7 +8,7 @@ import (
"testing"
"time"
"github.com/mainflux/mainflux/auth"
"github.com/absmach/magistrala/auth"
"github.com/stretchr/testify/assert"
)
+2 -2
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package mocks
@@ -6,7 +6,7 @@ package mocks
import (
context "context"
auth "github.com/mainflux/mainflux/auth"
auth "github.com/absmach/magistrala/auth"
"github.com/stretchr/testify/mock"
)
+2 -2
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package mocks
@@ -6,7 +6,7 @@ package mocks
import (
context "context"
auth "github.com/mainflux/mainflux/auth"
auth "github.com/absmach/magistrala/auth"
"github.com/stretchr/testify/mock"
)
+3 -3
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package mocks
@@ -6,8 +6,8 @@ package mocks
import (
context "context"
"github.com/mainflux/mainflux"
"github.com/mainflux/mainflux/pkg/errors"
mainflux "github.com/absmach/magistrala"
"github.com/absmach/magistrala/pkg/errors"
"github.com/stretchr/testify/mock"
"google.golang.org/grpc"
)
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package auth
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
// Package postgres contains Key repository implementations using
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package postgres
+4 -4
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package postgres
@@ -8,9 +8,9 @@ import (
"database/sql"
"time"
"github.com/mainflux/mainflux/auth"
"github.com/mainflux/mainflux/internal/postgres"
"github.com/mainflux/mainflux/pkg/errors"
"github.com/absmach/magistrala/auth"
"github.com/absmach/magistrala/internal/postgres"
"github.com/absmach/magistrala/pkg/errors"
)
var (
+5 -5
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package postgres_test
@@ -10,10 +10,10 @@ import (
"testing"
"time"
"github.com/mainflux/mainflux/auth"
"github.com/mainflux/mainflux/auth/postgres"
"github.com/mainflux/mainflux/pkg/errors"
"github.com/mainflux/mainflux/pkg/uuid"
"github.com/absmach/magistrala/auth"
"github.com/absmach/magistrala/auth/postgres"
"github.com/absmach/magistrala/pkg/errors"
"github.com/absmach/magistrala/pkg/uuid"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
+4 -4
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
// Package postgres_test contains tests for PostgreSQL repository
@@ -13,10 +13,10 @@ import (
"testing"
"time"
apostgres "github.com/absmach/magistrala/auth/postgres"
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
"github.com/absmach/magistrala/internal/postgres"
"github.com/jmoiron/sqlx"
apostgres "github.com/mainflux/mainflux/auth/postgres"
pgclient "github.com/mainflux/mainflux/internal/clients/postgres"
"github.com/mainflux/mainflux/internal/postgres"
dockertest "github.com/ory/dockertest/v3"
"go.opentelemetry.io/otel"
)
+4 -4
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package auth
@@ -8,8 +8,8 @@ import (
"fmt"
"time"
"github.com/mainflux/mainflux"
"github.com/mainflux/mainflux/pkg/errors"
mainflux "github.com/absmach/magistrala"
"github.com/absmach/magistrala/pkg/errors"
)
const (
@@ -29,7 +29,7 @@ const (
parentGroupRelation = "parent_group"
viewerRelation = "viewer"
mainfluxObject = "mainflux"
mainfluxObject = "magistrala"
refreshToken = "refresh_token"
)
+6 -6
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package auth_test
@@ -9,11 +9,11 @@ import (
"testing"
"time"
"github.com/mainflux/mainflux/auth"
"github.com/mainflux/mainflux/auth/jwt"
"github.com/mainflux/mainflux/auth/mocks"
"github.com/mainflux/mainflux/pkg/errors"
"github.com/mainflux/mainflux/pkg/uuid"
"github.com/absmach/magistrala/auth"
"github.com/absmach/magistrala/auth/jwt"
"github.com/absmach/magistrala/auth/mocks"
"github.com/absmach/magistrala/pkg/errors"
"github.com/absmach/magistrala/pkg/uuid"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
+4 -4
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package spicedb
@@ -8,11 +8,11 @@ import (
"fmt"
"io"
"github.com/absmach/magistrala/auth"
mflog "github.com/absmach/magistrala/logger"
"github.com/absmach/magistrala/pkg/errors"
v1 "github.com/authzed/authzed-go/proto/authzed/api/v1"
"github.com/authzed/authzed-go/v1"
"github.com/mainflux/mainflux/auth"
mflog "github.com/mainflux/mainflux/logger"
"github.com/mainflux/mainflux/pkg/errors"
)
const defRetrieveAllLimit = 1000
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package auth
+5 -5
View File
@@ -1,12 +1,12 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
// Package tracing provides tracing instrumentation for Mainflux Users service.
// Package tracing provides tracing instrumentation for Magistrala Users service.
//
// This package provides tracing middleware for Mainflux Users service.
// This package provides tracing middleware for Magistrala Users service.
// It can be used to trace incoming requests and add tracing capabilities to
// Mainflux Users service.
// Magistrala Users service.
//
// For more details about tracing instrumentation for Mainflux messaging refer
// For more details about tracing instrumentation for Magistrala messaging refer
// to the documentation at https://docs.mainflux.io/tracing/.
package tracing
+2 -2
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package tracing
@@ -7,7 +7,7 @@ import (
"context"
"fmt"
"github.com/mainflux/mainflux/auth"
"github.com/absmach/magistrala/auth"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"
)
+18 -18
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
@@ -7,7 +7,7 @@
// - protoc v4.24.3
// source: auth.proto
package mainflux
package magistrala
import (
context "context"
@@ -22,7 +22,7 @@ import (
const _ = grpc.SupportPackageIsVersion7
const (
AuthzService_Authorize_FullMethodName = "/mainflux.AuthzService/Authorize"
AuthzService_Authorize_FullMethodName = "/magistrala.AuthzService/Authorize"
)
// AuthzServiceClient is the client API for AuthzService service.
@@ -103,7 +103,7 @@ func _AuthzService_Authorize_Handler(srv interface{}, ctx context.Context, dec f
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var AuthzService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "mainflux.AuthzService",
ServiceName: "magistrala.AuthzService",
HandlerType: (*AuthzServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
@@ -116,19 +116,19 @@ var AuthzService_ServiceDesc = grpc.ServiceDesc{
}
const (
AuthService_Issue_FullMethodName = "/mainflux.AuthService/Issue"
AuthService_Login_FullMethodName = "/mainflux.AuthService/Login"
AuthService_Refresh_FullMethodName = "/mainflux.AuthService/Refresh"
AuthService_Identify_FullMethodName = "/mainflux.AuthService/Identify"
AuthService_Authorize_FullMethodName = "/mainflux.AuthService/Authorize"
AuthService_AddPolicy_FullMethodName = "/mainflux.AuthService/AddPolicy"
AuthService_DeletePolicy_FullMethodName = "/mainflux.AuthService/DeletePolicy"
AuthService_ListObjects_FullMethodName = "/mainflux.AuthService/ListObjects"
AuthService_ListAllObjects_FullMethodName = "/mainflux.AuthService/ListAllObjects"
AuthService_CountObjects_FullMethodName = "/mainflux.AuthService/CountObjects"
AuthService_ListSubjects_FullMethodName = "/mainflux.AuthService/ListSubjects"
AuthService_ListAllSubjects_FullMethodName = "/mainflux.AuthService/ListAllSubjects"
AuthService_CountSubjects_FullMethodName = "/mainflux.AuthService/CountSubjects"
AuthService_Issue_FullMethodName = "/magistrala.AuthService/Issue"
AuthService_Login_FullMethodName = "/magistrala.AuthService/Login"
AuthService_Refresh_FullMethodName = "/magistrala.AuthService/Refresh"
AuthService_Identify_FullMethodName = "/magistrala.AuthService/Identify"
AuthService_Authorize_FullMethodName = "/magistrala.AuthService/Authorize"
AuthService_AddPolicy_FullMethodName = "/magistrala.AuthService/AddPolicy"
AuthService_DeletePolicy_FullMethodName = "/magistrala.AuthService/DeletePolicy"
AuthService_ListObjects_FullMethodName = "/magistrala.AuthService/ListObjects"
AuthService_ListAllObjects_FullMethodName = "/magistrala.AuthService/ListAllObjects"
AuthService_CountObjects_FullMethodName = "/magistrala.AuthService/CountObjects"
AuthService_ListSubjects_FullMethodName = "/magistrala.AuthService/ListSubjects"
AuthService_ListAllSubjects_FullMethodName = "/magistrala.AuthService/ListAllSubjects"
AuthService_CountSubjects_FullMethodName = "/magistrala.AuthService/CountSubjects"
)
// AuthServiceClient is the client API for AuthService service.
@@ -589,7 +589,7 @@ func _AuthService_CountSubjects_Handler(srv interface{}, ctx context.Context, de
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var AuthService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "mainflux.AuthService",
ServiceName: "magistrala.AuthService",
HandlerType: (*AuthServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
+67 -67
View File
@@ -1,31 +1,31 @@
# BOOTSTRAP SERVICE
New devices need to be configured properly and connected to the Mainflux. Bootstrap service is used in order to accomplish that. This service provides the following features:
New devices need to be configured properly and connected to the Magistrala. Bootstrap service is used in order to accomplish that. This service provides the following features:
1. Creating new Mainflux Things
1. Creating new Magistrala Things
2. Providing basic configuration for the newly created Things
3. Enabling/disabling Things
Pre-provisioning a new Thing is as simple as sending Configuration data to the Bootstrap service. Once the Thing is online, it sends a request for initial config to Bootstrap service. Bootstrap service provides an API for enabling and disabling Things. Only enabled Things can exchange messages over Mainflux. Bootstrapping does not implicitly enable Things, it has to be done manually.
Pre-provisioning a new Thing is as simple as sending Configuration data to the Bootstrap service. Once the Thing is online, it sends a request for initial config to Bootstrap service. Bootstrap service provides an API for enabling and disabling Things. Only enabled Things can exchange messages over Magistrala. Bootstrapping does not implicitly enable Things, it has to be done manually.
In order to bootstrap successfully, the Thing needs to send bootstrapping request to the specific URL, as well as a secret key. This key and URL are pre-provisioned during the manufacturing process. If the Thing is provisioned on the Bootstrap service side, the corresponding configuration will be sent as a response. Otherwise, the Thing will be saved so that it can be provisioned later.
## Thing Configuration Entity
Thing Configuration consists of two logical parts: the custom configuration that can be interpreted by the Thing itself and Mainflux-related configuration. Mainflux config contains:
Thing Configuration consists of two logical parts: the custom configuration that can be interpreted by the Thing itself and Magistrala-related configuration. Magistrala config contains:
1. corresponding Mainflux Thing ID
2. corresponding Mainflux Thing key
3. list of the Mainflux channels the Thing is connected to
1. corresponding Magistrala Thing ID
2. corresponding Magistrala Thing key
3. list of the Magistrala channels the Thing is connected to
> Note: list of channels contains IDs of the Mainflux channels. These channels are _pre-provisioned_ on the Mainflux side and, unlike corresponding Mainflux Thing, Bootstrap service is not able to create Mainflux Channels.
> Note: list of channels contains IDs of the Magistrala channels. These channels are _pre-provisioned_ on the Magistrala side and, unlike corresponding Magistrala Thing, Bootstrap service is not able to create Magistrala Channels.
Enabling and disabling Thing (adding Thing to/from whitelist) is as simple as connecting corresponding Mainflux Thing to the given list of Channels. Configuration keeps _state_ of the Thing:
Enabling and disabling Thing (adding Thing to/from whitelist) is as simple as connecting corresponding Magistrala Thing to the given list of Channels. Configuration keeps _state_ of the Thing:
| State | What it means |
| -------- | ------------------------------------------- |
| Inactive | Thing is created, but isn't enabled |
| Active | Thing is able to communicate using Mainflux |
| Active | Thing is able to communicate using Magistrala |
Switching between states `Active` and `Inactive` enables and disables Thing, respectively.
@@ -37,44 +37,44 @@ The service is configured using the environment variables presented in the follo
| Variable | Description | Default |
| ----------------------------- | ----------------------------------------------------------------------- | -------------------------------------------------- |
| MF_BOOTSTRAP_LOG_LEVEL | Log level for Bootstrap (debug, info, warn, error) | info |
| MF_BOOTSTRAP_DB_HOST | Database host address | localhost |
| MF_BOOTSTRAP_DB_PORT | Database host port | 5432 |
| MF_BOOTSTRAP_DB_USER | Database user | mainflux |
| MF_BOOTSTRAP_DB_PASS | Database password | mainflux |
| MF_BOOTSTRAP_DB_NAME | Name of the database used by the service | bootstrap |
| MF_BOOTSTRAP_DB_SSL_MODE | Database connection SSL mode (disable, require, verify-ca, verify-full) | disable |
| MF_BOOTSTRAP_DB_SSL_CERT | Path to the PEM encoded certificate file | |
| MF_BOOTSTRAP_DB_SSL_KEY | Path to the PEM encoded key file | |
| MF_BOOTSTRAP_DB_SSL_ROOT_CERT | Path to the PEM encoded root certificate file | |
| MF_BOOTSTRAP_ENCRYPT_KEY | Secret key for secure bootstrapping encryption | v7aT0HGxJxt2gULzr3RHwf4WIf6DusPphG5Ftm2bNCWD8mTpyr |
| MF_BOOTSTRAP_HTTP_HOST | Bootstrap service HTTP host | |
| MF_BOOTSTRAP_HTTP_PORT | Bootstrap service HTTP port | 9013 |
| MF_BOOTSTRAP_HTTP_SERVER_CERT | Path to server certificate in pem format | |
| MF_BOOTSTRAP_HTTP_SERVER_KEY | Path to server key in pem format | |
| MF_BOOTSTRAP_EVENT_CONSUMER | Bootstrap service event source consumer name | bootstrap |
| MF_BOOTSTRAP_ES_URL | Bootstrap service event source URL | localhost:6379 |
| MF_BOOTSTRAP_ES_PASS | Bootstrap service event source password | |
| MF_BOOTSTRAP_ES_DB | Bootstrap service event source database | 0 |
| MF_AUTH_GRPC_URL | Users service gRPC URL | localhost:7001 |
| MF_AUTH_GRPC_TIMEOUT | Users service gRPC request timeout in seconds | 1s |
| MF_AUTH_GRPC_CLIENT_TLS | Enable TLS for gRPC client | false |
| MF_AUTH_GRPC_CA_CERTS | CA certificates for gRPC client | |
| MF_THINGS_URL | Base url for Mainflux Things | http://localhost:9000 |
| MF_JAEGER_URL | Jaeger server URL | http://jaeger:14268/api/traces |
| MF_SEND_TELEMETRY | Send telemetry to mainflux call home server | true |
| MF_BOOTSTRAP_INSTANCE_ID | Bootstrap service instance ID | |
| MG_BOOTSTRAP_LOG_LEVEL | Log level for Bootstrap (debug, info, warn, error) | info |
| MG_BOOTSTRAP_DB_HOST | Database host address | localhost |
| MG_BOOTSTRAP_DB_PORT | Database host port | 5432 |
| MG_BOOTSTRAP_DB_USER | Database user | mainflux |
| MG_BOOTSTRAP_DB_PASS | Database password | mainflux |
| MG_BOOTSTRAP_DB_NAME | Name of the database used by the service | bootstrap |
| MG_BOOTSTRAP_DB_SSL_MODE | Database connection SSL mode (disable, require, verify-ca, verify-full) | disable |
| MG_BOOTSTRAP_DB_SSL_CERT | Path to the PEM encoded certificate file | |
| MG_BOOTSTRAP_DB_SSL_KEY | Path to the PEM encoded key file | |
| MG_BOOTSTRAP_DB_SSL_ROOT_CERT | Path to the PEM encoded root certificate file | |
| MG_BOOTSTRAP_ENCRYPT_KEY | Secret key for secure bootstrapping encryption | v7aT0HGxJxt2gULzr3RHwf4WIf6DusPphG5Ftm2bNCWD8mTpyr |
| MG_BOOTSTRAP_HTTP_HOST | Bootstrap service HTTP host | |
| MG_BOOTSTRAP_HTTP_PORT | Bootstrap service HTTP port | 9013 |
| MG_BOOTSTRAP_HTTP_SERVER_CERT | Path to server certificate in pem format | |
| MG_BOOTSTRAP_HTTP_SERVER_KEY | Path to server key in pem format | |
| MG_BOOTSTRAP_EVENT_CONSUMER | Bootstrap service event source consumer name | bootstrap |
| MG_BOOTSTRAP_ES_URL | Bootstrap service event source URL | localhost:6379 |
| MG_BOOTSTRAP_ES_PASS | Bootstrap service event source password | |
| MG_BOOTSTRAP_ES_DB | Bootstrap service event source database | 0 |
| MG_AUTH_GRPC_URL | Users service gRPC URL | localhost:7001 |
| MG_AUTH_GRPC_TIMEOUT | Users service gRPC request timeout in seconds | 1s |
| MG_AUTH_GRPC_CLIENT_TLS | Enable TLS for gRPC client | false |
| MG_AUTH_GRPC_CA_CERTS | CA certificates for gRPC client | |
| MG_THINGS_URL | Base url for Magistrala Things | http://localhost:9000 |
| MG_JAEGER_URL | Jaeger server URL | http://jaeger:14268/api/traces |
| MG_SEND_TELEMETRY | Send telemetry to mainflux call home server | true |
| MG_BOOTSTRAP_INSTANCE_ID | Bootstrap service instance ID | |
## Deployment
The service itself is distributed as Docker container. Check the [`boostrap`](https://github.com/mainflux/mainflux/blob/master/docker/addons/bootstrap/docker-compose.yml#L32-L56) service section in
The service itself is distributed as Docker container. Check the [`boostrap`](https://github.com/absmach/magistrala/blob/master/docker/addons/bootstrap/docker-compose.yml#L32-L56) service section in
docker-compose to see how service is deployed.
To start the service outside of the container, execute the following shell script:
```bash
# download the latest version of the service
git clone https://github.com/mainflux/mainflux
git clone https://github.com/absmach/magistrala
cd mainflux
@@ -85,37 +85,37 @@ make bootstrap
make install
# set the environment variables and run the service
MF_BOOTSTRAP_LOG_LEVEL=[Bootstrap log level] \
MF_BOOTSTRAP_ENCRYPT_KEY=[Hex-encoded encryption key used for secure bootstrap] \
MF_BOOTSTRAP_EVENT_CONSUMER=[Bootstrap service event source consumer name] \
MF_BOOTSTRAP_ES_URL=[Bootstrap service event source URL] \
MF_BOOTSTRAP_ES_PASS=[Bootstrap service event source password] \
MF_BOOTSTRAP_ES_DB=[Bootstrap service event source database] \
MF_BOOTSTRAP_HTTP_HOST=[Bootstrap service HTTP host] \
MF_BOOTSTRAP_HTTP_PORT=[Bootstrap service HTTP port] \
MF_BOOTSTRAP_HTTP_SERVER_CERT=[Path to HTTP server certificate in pem format] \
MF_BOOTSTRAP_HTTP_SERVER_KEY=[Path to HTTP server key in pem format] \
MF_BOOTSTRAP_DB_HOST=[Database host address] \
MF_BOOTSTRAP_DB_PORT=[Database host port] \
MF_BOOTSTRAP_DB_USER=[Database user] \
MF_BOOTSTRAP_DB_PASS=[Database password] \
MF_BOOTSTRAP_DB_NAME=[Name of the database used by the service] \
MF_BOOTSTRAP_DB_SSL_MODE=[SSL mode to connect to the database with] \
MF_BOOTSTRAP_DB_SSL_CERT=[Path to the PEM encoded certificate file] \
MF_BOOTSTRAP_DB_SSL_KEY=[Path to the PEM encoded key file] \
MF_BOOTSTRAP_DB_SSL_ROOT_CERT=[Path to the PEM encoded root certificate file] \
MF_AUTH_GRPC_URL=[Users service gRPC URL] \
MF_AUTH_GRPC_TIMEOUT=[Users service gRPC request timeout in seconds] \
MF_AUTH_GRPC_CLIENT_TLS=[Boolean value to enable/disable client TLS] \
MF_AUTH_GRPC_CA_CERT=[Path to trusted CAs in PEM format] \
MF_THINGS_URL=[Base url for Mainflux Things] \
MF_JAEGER_URL=[Jaeger server URL] \
MF_SEND_TELEMETRY=[Send telemetry to mainflux call home server] \
MF_BOOTSTRAP_INSTANCE_ID=[Bootstrap instance ID] \
MG_BOOTSTRAP_LOG_LEVEL=[Bootstrap log level] \
MG_BOOTSTRAP_ENCRYPT_KEY=[Hex-encoded encryption key used for secure bootstrap] \
MG_BOOTSTRAP_EVENT_CONSUMER=[Bootstrap service event source consumer name] \
MG_BOOTSTRAP_ES_URL=[Bootstrap service event source URL] \
MG_BOOTSTRAP_ES_PASS=[Bootstrap service event source password] \
MG_BOOTSTRAP_ES_DB=[Bootstrap service event source database] \
MG_BOOTSTRAP_HTTP_HOST=[Bootstrap service HTTP host] \
MG_BOOTSTRAP_HTTP_PORT=[Bootstrap service HTTP port] \
MG_BOOTSTRAP_HTTP_SERVER_CERT=[Path to HTTP server certificate in pem format] \
MG_BOOTSTRAP_HTTP_SERVER_KEY=[Path to HTTP server key in pem format] \
MG_BOOTSTRAP_DB_HOST=[Database host address] \
MG_BOOTSTRAP_DB_PORT=[Database host port] \
MG_BOOTSTRAP_DB_USER=[Database user] \
MG_BOOTSTRAP_DB_PASS=[Database password] \
MG_BOOTSTRAP_DB_NAME=[Name of the database used by the service] \
MG_BOOTSTRAP_DB_SSL_MODE=[SSL mode to connect to the database with] \
MG_BOOTSTRAP_DB_SSL_CERT=[Path to the PEM encoded certificate file] \
MG_BOOTSTRAP_DB_SSL_KEY=[Path to the PEM encoded key file] \
MG_BOOTSTRAP_DB_SSL_ROOT_CERT=[Path to the PEM encoded root certificate file] \
MG_AUTH_GRPC_URL=[Users service gRPC URL] \
MG_AUTH_GRPC_TIMEOUT=[Users service gRPC request timeout in seconds] \
MG_AUTH_GRPC_CLIENT_TLS=[Boolean value to enable/disable client TLS] \
MG_AUTH_GRPC_CA_CERT=[Path to trusted CAs in PEM format] \
MG_THINGS_URL=[Base url for Magistrala Things] \
MG_JAEGER_URL=[Jaeger server URL] \
MG_SEND_TELEMETRY=[Send telemetry to mainflux call home server] \
MG_BOOTSTRAP_INSTANCE_ID=[Bootstrap instance ID] \
$GOBIN/mainflux-bootstrap
```
Setting `MF_BOOTSTRAP_CA_CERTS` expects a file in PEM format of trusted CAs. This will enable TLS against the Users gRPC endpoint trusting only those CAs that are provided.
Setting `MG_BOOTSTRAP_CA_CERTS` expects a file in PEM format of trusted CAs. This will enable TLS against the Users gRPC endpoint trusting only those CAs that are provided.
## Usage
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
// Package api contains implementation of bootstrap service HTTP API.
+4 -4
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package api
@@ -6,10 +6,10 @@ package api
import (
"context"
"github.com/absmach/magistrala/bootstrap"
"github.com/absmach/magistrala/internal/apiutil"
"github.com/absmach/magistrala/pkg/errors"
"github.com/go-kit/kit/endpoint"
"github.com/mainflux/mainflux/bootstrap"
"github.com/mainflux/mainflux/internal/apiutil"
"github.com/mainflux/mainflux/pkg/errors"
)
func addEndpoint(svc bootstrap.Service) endpoint.Endpoint {
+17 -17
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package api_test
@@ -18,23 +18,23 @@ import (
"strings"
"testing"
mainflux "github.com/absmach/magistrala"
authmocks "github.com/absmach/magistrala/auth/mocks"
"github.com/absmach/magistrala/bootstrap"
bsapi "github.com/absmach/magistrala/bootstrap/api"
"github.com/absmach/magistrala/bootstrap/mocks"
"github.com/absmach/magistrala/internal/apiutil"
"github.com/absmach/magistrala/internal/groups"
chmocks "github.com/absmach/magistrala/internal/groups/mocks"
mflog "github.com/absmach/magistrala/logger"
"github.com/absmach/magistrala/pkg/errors"
mfgroups "github.com/absmach/magistrala/pkg/groups"
mfsdk "github.com/absmach/magistrala/pkg/sdk/go"
"github.com/absmach/magistrala/pkg/uuid"
"github.com/absmach/magistrala/things"
thapi "github.com/absmach/magistrala/things/api/http"
thmocks "github.com/absmach/magistrala/things/mocks"
"github.com/go-chi/chi/v5"
"github.com/mainflux/mainflux"
authmocks "github.com/mainflux/mainflux/auth/mocks"
"github.com/mainflux/mainflux/bootstrap"
bsapi "github.com/mainflux/mainflux/bootstrap/api"
"github.com/mainflux/mainflux/bootstrap/mocks"
"github.com/mainflux/mainflux/internal/apiutil"
"github.com/mainflux/mainflux/internal/groups"
chmocks "github.com/mainflux/mainflux/internal/groups/mocks"
mflog "github.com/mainflux/mainflux/logger"
"github.com/mainflux/mainflux/pkg/errors"
mfgroups "github.com/mainflux/mainflux/pkg/groups"
mfsdk "github.com/mainflux/mainflux/pkg/sdk/go"
"github.com/mainflux/mainflux/pkg/uuid"
"github.com/mainflux/mainflux/things"
thapi "github.com/mainflux/mainflux/things/api/http"
thmocks "github.com/mainflux/mainflux/things/mocks"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
+3 -3
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
//go:build !test
@@ -10,8 +10,8 @@ import (
"fmt"
"time"
"github.com/mainflux/mainflux/bootstrap"
mflog "github.com/mainflux/mainflux/logger"
"github.com/absmach/magistrala/bootstrap"
mflog "github.com/absmach/magistrala/logger"
)
var _ bootstrap.Service = (*loggingMiddleware)(nil)
+2 -2
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
//go:build !test
@@ -9,8 +9,8 @@ import (
"context"
"time"
"github.com/absmach/magistrala/bootstrap"
"github.com/go-kit/kit/metrics"
"github.com/mainflux/mainflux/bootstrap"
)
var _ bootstrap.Service = (*metricsMiddleware)(nil)
+3 -3
View File
@@ -1,11 +1,11 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package api
import (
"github.com/mainflux/mainflux/bootstrap"
"github.com/mainflux/mainflux/internal/apiutil"
"github.com/absmach/magistrala/bootstrap"
"github.com/absmach/magistrala/internal/apiutil"
)
const maxLimitSize = 100
+2 -2
View File
@@ -4,8 +4,8 @@ import (
"fmt"
"testing"
"github.com/mainflux/mainflux/bootstrap"
"github.com/mainflux/mainflux/internal/apiutil"
"github.com/absmach/magistrala/bootstrap"
"github.com/absmach/magistrala/internal/apiutil"
"github.com/stretchr/testify/assert"
)
+3 -3
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package api
@@ -7,8 +7,8 @@ import (
"fmt"
"net/http"
"github.com/mainflux/mainflux"
"github.com/mainflux/mainflux/bootstrap"
mainflux "github.com/absmach/magistrala"
"github.com/absmach/magistrala/bootstrap"
)
var (
+6 -6
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package api
@@ -10,13 +10,13 @@ import (
"net/url"
"strings"
mainflux "github.com/absmach/magistrala"
"github.com/absmach/magistrala/bootstrap"
"github.com/absmach/magistrala/internal/apiutil"
mflog "github.com/absmach/magistrala/logger"
"github.com/absmach/magistrala/pkg/errors"
kithttp "github.com/go-kit/kit/transport/http"
"github.com/go-zoo/bone"
"github.com/mainflux/mainflux"
"github.com/mainflux/mainflux/bootstrap"
"github.com/mainflux/mainflux/internal/apiutil"
mflog "github.com/mainflux/mainflux/logger"
"github.com/mainflux/mainflux/pkg/errors"
"github.com/prometheus/client_golang/prometheus/promhttp"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
)
+7 -7
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package bootstrap
@@ -7,14 +7,14 @@ import (
"context"
"time"
"github.com/mainflux/mainflux/pkg/clients"
"github.com/absmach/magistrala/pkg/clients"
)
// Config represents Configuration entity. It wraps information about external entity
// as well as info about corresponding Mainflux entities.
// MFThing represents corresponding Mainflux Thing ID.
// MFKey is key of corresponding Mainflux Thing.
// MFChannels is a list of Mainflux Channels corresponding Mainflux Thing connects to.
// as well as info about corresponding Magistrala entities.
// MFThing represents corresponding Magistrala Thing ID.
// MFKey is key of corresponding Magistrala Thing.
// MFChannels is a list of Magistrala Channels corresponding Magistrala Thing connects to.
type Config struct {
ThingID string `json:"thing_id"`
Owner string `json:"owner,omitempty"`
@@ -30,7 +30,7 @@ type Config struct {
State State `json:"state"`
}
// Channel represents Mainflux channel corresponding Mainflux Thing is connected to.
// Channel represents Magistrala channel corresponding Magistrala Thing is connected to.
type Channel struct {
ID string `json:"id"`
Name string `json:"name,omitempty"`
+2 -2
View File
@@ -1,6 +1,6 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
// Package bootstrap contains the domain concept definitions needed to support
// Mainflux bootstrap service functionality.
// Magistrala bootstrap service functionality.
package bootstrap
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
// Package consumer contains events consumer for events
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package consumer
+4 -4
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package consumer
@@ -8,9 +8,9 @@ import (
"encoding/json"
"time"
"github.com/mainflux/mainflux/bootstrap"
"github.com/mainflux/mainflux/pkg/clients"
"github.com/mainflux/mainflux/pkg/events"
"github.com/absmach/magistrala/bootstrap"
"github.com/absmach/magistrala/pkg/clients"
"github.com/absmach/magistrala/pkg/events"
)
const (
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
// Package events provides the domain concept definitions needed to support
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
// Package producer contains the domain events needed to support
+3 -3
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package producer
@@ -8,8 +8,8 @@ import (
"fmt"
"strings"
"github.com/mainflux/mainflux/bootstrap"
"github.com/mainflux/mainflux/pkg/events"
"github.com/absmach/magistrala/bootstrap"
"github.com/absmach/magistrala/pkg/events"
)
const (
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package producer_test
+4 -4
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package producer
@@ -6,9 +6,9 @@ package producer
import (
"context"
"github.com/mainflux/mainflux/bootstrap"
"github.com/mainflux/mainflux/pkg/events"
"github.com/mainflux/mainflux/pkg/events/store"
"github.com/absmach/magistrala/bootstrap"
"github.com/absmach/magistrala/pkg/events"
"github.com/absmach/magistrala/pkg/events/store"
)
const streamID = "mainflux.bootstrap"
+16 -16
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package producer_test
@@ -13,23 +13,23 @@ import (
"testing"
"time"
mainflux "github.com/absmach/magistrala"
authmocks "github.com/absmach/magistrala/auth/mocks"
"github.com/absmach/magistrala/bootstrap"
"github.com/absmach/magistrala/bootstrap/events/producer"
"github.com/absmach/magistrala/bootstrap/mocks"
"github.com/absmach/magistrala/internal/groups"
chmocks "github.com/absmach/magistrala/internal/groups/mocks"
mflog "github.com/absmach/magistrala/logger"
"github.com/absmach/magistrala/pkg/errors"
mfgroups "github.com/absmach/magistrala/pkg/groups"
mfsdk "github.com/absmach/magistrala/pkg/sdk/go"
"github.com/absmach/magistrala/pkg/uuid"
"github.com/absmach/magistrala/things"
thapi "github.com/absmach/magistrala/things/api/http"
thmocks "github.com/absmach/magistrala/things/mocks"
"github.com/go-chi/chi/v5"
"github.com/go-redis/redis/v8"
"github.com/mainflux/mainflux"
authmocks "github.com/mainflux/mainflux/auth/mocks"
"github.com/mainflux/mainflux/bootstrap"
"github.com/mainflux/mainflux/bootstrap/events/producer"
"github.com/mainflux/mainflux/bootstrap/mocks"
"github.com/mainflux/mainflux/internal/groups"
chmocks "github.com/mainflux/mainflux/internal/groups/mocks"
mflog "github.com/mainflux/mainflux/logger"
"github.com/mainflux/mainflux/pkg/errors"
mfgroups "github.com/mainflux/mainflux/pkg/groups"
mfsdk "github.com/mainflux/mainflux/pkg/sdk/go"
"github.com/mainflux/mainflux/pkg/uuid"
"github.com/mainflux/mainflux/things"
thapi "github.com/mainflux/mainflux/things/api/http"
thmocks "github.com/mainflux/mainflux/things/mocks"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
+3 -3
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package mocks
@@ -10,8 +10,8 @@ import (
"strings"
"sync"
"github.com/mainflux/mainflux/bootstrap"
"github.com/mainflux/mainflux/pkg/errors"
"github.com/absmach/magistrala/bootstrap"
"github.com/absmach/magistrala/pkg/errors"
)
const emptyState = -1
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
// Package mocks contains mocks for testing purposes.
+17 -17
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package postgres
@@ -11,15 +11,15 @@ import (
"strings"
"time"
"github.com/absmach/magistrala/bootstrap"
"github.com/absmach/magistrala/internal/postgres"
mflog "github.com/absmach/magistrala/logger"
"github.com/absmach/magistrala/pkg/clients"
"github.com/absmach/magistrala/pkg/errors"
"github.com/jackc/pgerrcode"
"github.com/jackc/pgtype"
"github.com/jackc/pgx/v5/pgconn"
"github.com/jmoiron/sqlx"
"github.com/mainflux/mainflux/bootstrap"
"github.com/mainflux/mainflux/internal/postgres"
mflog "github.com/mainflux/mainflux/logger"
"github.com/mainflux/mainflux/pkg/clients"
"github.com/mainflux/mainflux/pkg/errors"
)
var (
@@ -91,7 +91,7 @@ func (cr configRepository) RetrieveByID(ctx context.Context, owner, id string) (
WHERE mainflux_thing = :mainflux_thing AND owner = :owner`
dbcfg := dbConfig{
MFThing: id,
ThingID: id,
Owner: owner,
}
row, err := cr.db.NamedQueryContext(ctx, q, dbcfg)
@@ -256,7 +256,7 @@ func (cr configRepository) Update(ctx context.Context, cfg bootstrap.Config) err
dbcfg := dbConfig{
Name: nullString(cfg.Name),
Content: nullString(cfg.Content),
MFThing: cfg.ThingID,
ThingID: cfg.ThingID,
Owner: cfg.Owner,
}
@@ -282,7 +282,7 @@ func (cr configRepository) UpdateCert(ctx context.Context, owner, thingID, clien
RETURNING mainflux_thing, client_cert, client_key, ca_cert`
dbcfg := dbConfig{
MFThing: thingID,
ThingID: thingID,
ClientCert: nullString(clientCert),
Owner: owner,
ClientKey: nullString(clientKey),
@@ -338,7 +338,7 @@ func (cr configRepository) UpdateConnections(ctx context.Context, owner, id stri
func (cr configRepository) Remove(ctx context.Context, owner, id string) error {
q := `DELETE FROM configs WHERE mainflux_thing = :mainflux_thing AND owner = :owner`
dbcfg := dbConfig{
MFThing: id,
ThingID: id,
Owner: owner,
}
@@ -357,7 +357,7 @@ func (cr configRepository) ChangeState(ctx context.Context, owner, id string, st
q := `UPDATE configs SET state = :state WHERE mainflux_thing = :mainflux_thing AND owner = :owner;`
dbcfg := dbConfig{
MFThing: id,
ThingID: id,
State: state,
Owner: owner,
}
@@ -610,13 +610,13 @@ func nullTime(t time.Time) sql.NullTime {
}
type dbConfig struct {
MFThing string `db:"mainflux_thing"`
ThingID string `db:"mainflux_thing"`
Owner string `db:"owner"`
Name sql.NullString `db:"name"`
ClientCert sql.NullString `db:"client_cert"`
ClientKey sql.NullString `db:"client_key"`
CaCert sql.NullString `db:"ca_cert"`
MFKey string `db:"mainflux_key"`
ThingKey string `db:"mainflux_key"`
ExternalID string `db:"external_id"`
ExternalKey string `db:"external_key"`
Content sql.NullString `db:"content"`
@@ -625,13 +625,13 @@ type dbConfig struct {
func toDBConfig(cfg bootstrap.Config) dbConfig {
return dbConfig{
MFThing: cfg.ThingID,
ThingID: cfg.ThingID,
Owner: cfg.Owner,
Name: nullString(cfg.Name),
ClientCert: nullString(cfg.ClientCert),
ClientKey: nullString(cfg.ClientKey),
CaCert: nullString(cfg.CACert),
MFKey: cfg.ThingKey,
ThingKey: cfg.ThingKey,
ExternalID: cfg.ExternalID,
ExternalKey: cfg.ExternalKey,
Content: nullString(cfg.Content),
@@ -641,9 +641,9 @@ func toDBConfig(cfg bootstrap.Config) dbConfig {
func toConfig(dbcfg dbConfig) bootstrap.Config {
cfg := bootstrap.Config{
ThingID: dbcfg.MFThing,
ThingID: dbcfg.ThingID,
Owner: dbcfg.Owner,
ThingKey: dbcfg.MFKey,
ThingKey: dbcfg.ThingKey,
ExternalID: dbcfg.ExternalID,
ExternalKey: dbcfg.ExternalKey,
State: dbcfg.State,
+4 -4
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package postgres_test
@@ -9,10 +9,10 @@ import (
"strconv"
"testing"
"github.com/absmach/magistrala/bootstrap"
"github.com/absmach/magistrala/bootstrap/postgres"
"github.com/absmach/magistrala/pkg/errors"
"github.com/gofrs/uuid"
"github.com/mainflux/mainflux/bootstrap"
"github.com/mainflux/mainflux/bootstrap/postgres"
"github.com/mainflux/mainflux/pkg/errors"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
// Package postgres contains repository implementations using PostgreSQL as
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package postgres
+4 -4
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Magistrala
// SPDX-License-Identifier: Apache-2.0
package postgres_test
@@ -8,10 +8,10 @@ import (
"os"
"testing"
"github.com/absmach/magistrala/bootstrap/postgres"
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
"github.com/absmach/magistrala/logger"
"github.com/jmoiron/sqlx"
"github.com/mainflux/mainflux/bootstrap/postgres"
pgclient "github.com/mainflux/mainflux/internal/clients/postgres"
"github.com/mainflux/mainflux/logger"
"github.com/ory/dockertest/v3"
)

Some files were not shown because too many files have changed in this diff Show More