* Add ListTwins test
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Remove monotonic time from twins, definitions and attributes creation and update
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Separate twins and states endpoint tests in two files
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Add state generation helper funcs to state endpoint tests
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Add createStateResponse() to states test
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Add states test cases
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Simplify RetrieveAll twins and states methods
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Add service.go to mocks
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Rename mocks.NewService to mocks.New
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Add error checking to endpoint state tests
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Fix method comment
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Add json response decode success check
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Remove created and updated fields from twin and state res
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Remove definition fields from twin req and res
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Add Create funcs to mocks package
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Add service save state tests
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Add service list states test
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Add golangci-linter to CI script
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* add no-config flag
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* disable staticcheck
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* disable all except errcheck
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* add more linters
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* add verbose flag for debug
decrease concurrency to 1
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove errcheck and verbose flag
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* enable just golint
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* fix lint errors
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Implement errors package in senml transformer, readers and writers
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Remove unused const
Return wrapped error in postgres writer
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* fix default db host in postgres writer
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* fix capital letters in errors messages
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* use svcName instead of postgres for Promethius initialization
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Implement errors package in Authn service
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove imported and not used fmt package
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* wrapped errors when issued new key
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove blank line
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Change error message in tests
Remove nil case in encode error
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* return back nil value error handling
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* implement errors in bootstrap service
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove dead code
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* change errors messages
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* edit more errors messages
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Init commit - implement errors package on things service
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* things service errors issue
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Decode errors
Add authn service to run script
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Modify tests
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* service_test
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* debug lines
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Regulate tests
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Improve errors in Redis
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Remove dead code
Inline if conditions
Rename err var
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Transform errors messages to lowercase
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* improve errors package
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* modify wrap method
inline wrapping errors in redis
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add copyright to errors package
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* wrapping nil error returns wrapper (instead of nil)
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* move response messages in test to vars
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* golangcibot review fix
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* golangbot fix review in transport
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Update state based on SenML time value
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Use Modf to parse SenML rec time
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Add Update to State in mocks
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Add Delta to Twin Definition and iota consts for state actions
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* Use action consts for switch statement
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
* NOISSUE - Fix StatusBadDecodingError for opc-ua browse
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
* Reduce number of browse childrens level
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
* NOISSUE - Add opc-ua type handling and unsubscription
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
* Create const for max childrens
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
* Add bulk connect to CLI and SDK
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Add test for bulk connect
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Update docs
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Add file example
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Add JSON example to CLI docs
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Change some value datatypes back
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Use constants for file extensions
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* user service - wraping errors
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* wrapping more errors
unwrap only wrapped errors
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add internal database error
Wrap internal database error
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Wrap user not found error
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Wrapping errors in idp and hasher
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Use error.Is for testing errors in Identify test
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Get wraper from wrapped errors
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Switch order of wrapping errors
Remove dead code (comments)
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* assert true in tests
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Change comparing errors in tests (assert.True)
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add errorRes structure to API responses in body in things service
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* resolve conflicts after rebasing
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Create errors package
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* implement new errors package
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Modify tests
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* return copyright comments
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove changes from .gitignore
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Move logging to encode errors
Comment exported vars and methods
Formatting
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Login function returns errors.Error
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Modify login tests to meet login returning errors.Error
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Error interface
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Change parameter in Wrapper to interface Error
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* implement new error interface
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Modify tests to use new Error interface
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Fix Login
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Remove unnecessary errir casting
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* new error interface implementation
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* check if Error is empty in registrationEndpoint
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add Empty factory function
Use new Empty factory function
Use isEmpty method
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Lose else in encodeError
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Modify tests
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Remove *json.UnmarshalTypeError and *json.SyntaxError types from encodeError type switch
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Fix nil error value in jwtIdentityProvider
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Fix gprc to use new error package
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* rename receiver in errors package
grpc errors
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove debugging code
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Resolving conflicts after rebase
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Remove comment
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Remove Empty from custom error
Implement custom error on new methods
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* WIP tests
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove wrap from Error interface
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* password-change related tests
remove debug code
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove dead code
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Move all errors casting to errors package
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Fix comment in error package
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Change struct pointer to interface in package methods
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* resolving reviews
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* fix return in database.go
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Fix copyright header
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Fix comment in hasher
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Change connect endpoint to use bulk connections
Signed-off-by: nwneisen <nwneisen@gmail.com>
* Add documentation for bulk connect
Signed-off-by: nwneisen <nwneisen@gmail.com>
* Update service and postgres for multiple channels
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Update bulk connect endpoint
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Fix missed test
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Improve test code coverage
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Change methods to use shared data type
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Fix provisioning example
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Change depreciation messages to specify v1.0.0
Signed-off-by: nwneisen <nwneisen@gmail.com>
* Switch singluar log to plural
Signed-off-by: nwneisen <nwneisen@gmail.com>
* Change thing's service to use bulk connect
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Move owner check outside of loop
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Change invalid user to unauthorized access error
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Add transactions to postgres connect
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Change to use shorthand notation
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Change single endpoints to use bulk creation
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Remove single creation from thing's service
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Remove single save from thing's postgres
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Change BulkSave to Save
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Change service calls to use variadic parameters
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Change postgres things to use variadic functions
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Add depreciation warnings
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Use Normalizer as a lib
To normalize messages on the consumer side, Normalizer is moved
to the internal pkgs. Writers being message consumers are modified to
do message normalization instead of subscribing to normalized messages
subject.
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Fix logging middleware for readers and writers
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Remove normalizer interface
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Use Normalizer in writers
As we agreed on #919, we'll use normalizer as an interface and provide
the default SenML implementation. Because of that, Normalizer is removed
from `internal` and we'll use the project structure proposed in the
aforementioned issue.
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Fix tests
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Remove unused batch settings from influxDB reader
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Update docs
Move Normalizer service to `addons`.
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Rename channels input topic
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Update Noramlizer docs
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Remove commented code
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Update readers logging
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Update addons docker-compose files
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Update topcis explanations
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Switch to grpcbox
Use grpcbox as a gRPC client library, because
it is much better maintained.
Shows good performance and generation of protobuf
files is simple and automatic.
Signed-off-by: Drasko DRASKOVIC <drasko.draskovic@gmail.com>
* Fix typo
Signed-off-by: Drasko DRASKOVIC <drasko.draskovic@gmail.com>
* Add provisioning to postgres
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Add provisioning to things and channels service
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Add JSON provisioning endpoint to things API
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Add provisioning to SDK and CLI
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Update docs
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Remove response location and adjust channelsFromFile
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Change naming from 'provison' to 'bulkCreate'
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Add gocsv to vendors folder
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Update "bulk" naming
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Move CSV to CLI and remove gocsv dependancy
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Update docs and responses
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Change AddThings to be CreateThings
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Improve test coverage
Signed-off-by: nwneisen <nwneisen@gmail.com>
* Fixes after review
Signed-off-by: nwneisen <nwneisen@gmail.com>
* Add ES flat to the things service
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add env var for optional ES
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Change CanAccess to CanAccessByKey for things
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Change CanAccess in remaining occurances
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Regenerate generated files
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Generate pb.go files with protoc 3.6.1
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Tracing docs without example
Signed-off-by: nwneisen <nwneisen@gmail.com>
* Add tracing example using provisioning traces
Signed-off-by: Nick Neisen <nwneisen@gmail.com>
* Add link to Jaeger offical website
Signed-off-by: nwneisen <nwneisen@gmail.com>
* Remove extra http:// from UI URL
Signed-off-by: nwneisen <nwneisen@gmail.com>
* Change go version to 1.13 in docker images
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* update go version on CI
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* fix and add debug code in ci.sh
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Remove other Go version from PATH on semaphoreci
Add new go installation to PATH
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Create dir for golang 1.13
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove debug code
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add check for current go version before upgrade in ci script
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add version endpoint to MQTT adapter
Expose CoAP version endpoint in the default docker-compose.
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Use /tcp insted of implicit protocol name
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Add content type to MQTT sub topic
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Remove default content type value
Remove default content type value (SenML JSON) and replace it with
an empty string.
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Update docs in accordance with changes
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add `make rungw` command to run mainflux without jaeger
Add name to jaeger container
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add explanatory comment in Makefile
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add new line on end file
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add entrypoint in arm Dockerfile
Switch from ash to dash in entrypoint script
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add new line on file end
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add format to raw message and content type mapping
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add format as part of content type header
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add format to content-type header for WS adapter
Add format as part of content-type and add support for
content-type header and query parameter.
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add support for format and content-type in MQTT adapter
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add format and content-type to CoAP adapter
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add documentation for content type and format
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add comments to MQTT code
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Fix SenML JSON CoAP code type
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Remove format from the adapters
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Remove format from the docs
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Remove format field from MQTT adapter
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Update content type to be optional
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add support for CBOR content type in the normalizer
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Update docs for MQTT content type
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add open tracing dependencies
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add open tracing to users service
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add open tracing to the things service
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add open tracing to the http adapter
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add open tracing to the ws adapter
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add open tracing to the CoAP adapter
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Update LoRa adapter in accordance with changes
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Update SDK tests in accordance with changes
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Update bootstrap service in accordance with changes
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Update reader services with accordance with changes
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Update .env and docker-compose file
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add jaeger and timeout env vars
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Fix broken test for can access by id endpoint
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Update deps with proto empty package
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add can access by things ID endpoint to things service
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add new auth endpoint to the swagger docs
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add test for the new endpoint of the things service
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add authorization HTTP API to things service
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add new tests and update existing ones
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Update swagger documentation
Update swagger documentation for auth endpoints.
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Update README docs for things service
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Update docker-compose and fix endpoint typo
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Remove commented code
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* NOISSUE - Use .enr vars in docker-compose
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
* Add README and dupllicated .env in docker repo
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
* Use .env for Bootstrap Docker Composition
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
* Use .env for Cassandra (Reader-Writer) Docker Composition
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
* Use .env for InfluxDB (Reader-Writer) Docker Composition
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
* Use .env for MongoDB (Reader-Writer) Docker Composition
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
* Use .env for Postgres (Reader-Writer) Docker Composition
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
* Use .env for LoRa adapter Docker Composition
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
* Fix Grafana port in .env file
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
* Update README.md
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove docker/.env and update README.md
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* NOISSUE - Fix Docker for ARM
Signed-off-by: drasko <drasko.draskovic@gmail.com>
* Correct ARGs
Signed-off-by: drasko <drasko.draskovic@gmail.com>
* Fix docker-compose for ARM
Signed-off-by: drasko <drasko.draskovic@gmail.com>
* Add docker manifest
Signed-off-by: drasko <drasko.draskovic@gmail.com>
* cp not mv qemu from mf root
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* fix amd64 docker names for ui and mqtt images
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* edit ci.sh for testing purposes
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove bachslash from make manifest
edits in ci for testing purposes
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* fix manifest call
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* add manifest on version realese
delete space before latest argument
fix for loop in manifest creation
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* include tests
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* docker system prune
remove tests for testin purposes
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add variant in manifest file for armv7
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Remove white space
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* paralelise the compilation
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* fix place of -j$NPROC
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Remove installing non-existent package from ci
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove branch master condition in ci.sh to test it
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* fix syntax error
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* update apt
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* build arm images for latest release
push ui and mqtt arm images
install only qemu-user-static
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* clean docker after pushing amd64 images
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* installing all qemu app
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove docker images before building ui and mqtt arm-images
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* prune dockers and test only arm build
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* fix syntax error
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* fix moving qemu-arm-static
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* installing qemu with apt-get
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* add another apt-get update
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* apt install one liner
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* testing ci script
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* After installing qemu, get appropriate version
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Test ci without amd64 dockers
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove tests from ci for test purpose
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Uncomment commands
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Remove whitespace and change order of building images
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add arm Dockerfiles
Change version of postgres images in docker-compose to use versions with multiarch
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* docker compose file
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove bin qemu file
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove unnecesarry comments
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add make dockers_arm32v7 in Makefile
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Remove docker/Dockerfile.arm
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add build for arm32v7 in ui Makefile
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add arm32v7 tags
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* add docker-compose for arm
remove thing-db in docker compose (use same db as user)
fix dockerfile and makefile
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* fix thing database env variable
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Switch back to separate database for things and users
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* rename arm32v7 to arm
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* remove arm32v7 tag
rename arm32v7 image names
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Rename command for making mqtt and ui individual images, to match other miscroservices
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Push arm docker images
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* fix fucntion call in ci.sh
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* mergiing ui/Dockerfile
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add single user mode to things service
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add tests for things/users package
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Update init order in main
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Add username, password and port env var
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
* Update existing readme files with new env vars
Signed-off-by: Aleksandar Novakovic <anovakovic01@gmail.com>
This commit, intruduces changes to the current behavior of the "make cleandocker" command.
From now on, an extra parameter must be given in order to delete the persistent volumes, which up until now was done by default. The new command which represents the old behavior (deleting all artifacts created from the docker composition) is "make pv=true cleandocker".
Signed-off-by: Jovan Kostovski <chombium@gmail.com>
* added filter and a switch for volume deletion
Signed-off-by: Jovan Kostovski <chombium@gmail.com>
* added persistent volume configuration
Signed-off-by: Jovan Kostovski <chombium@gmail.com>
* Remove debugging message from response of handle error function
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Print error in debug console in case of bad body HTTP response
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* env variable for local dev
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Change menu style
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Revert "env variable for local dev"
This reverts commit 205e13be6cdde930f02e7bda2019bb615267ed14.
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Move font awesome class names to record in Helper
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add bootstrap pagination
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Fix enviroment variable in readme
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Change style
Remove pagination from channels and things lists if total less then limit
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Hide pagination when not needed on connection and message page
Code refacotoring
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Remove debug module and local dev variable.
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Remove debug logging
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add trailing slash note in README
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* proto
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Split Content-Type header field on semicolon and evaluate all substrings
Signed-off-by: Tony Ward <tony@lucidtron.com>
* included strings library
Signed-off-by: Tony Ward <tony0ward@hotmail.com>
* simplify code, run gofmt
Signed-off-by: tony <tony0ward@hotmail.com>
Signed-off-by: tony <tony@lucidtron.com>
* allow Content-Type to only contain the required type
Signed-off-by: Tony Ward <tony@lucidtron.com>
* Commit for mainflux-596
Modified and tested:
- cli
- http
- mqtt
- normalizer
- all readers
- sdk messages
- all writers
- ws
Missing:
- coap
- lora
Signed-off-by: ale <ale@metaverso.org>
* - fix subtopic name in, when starting with dot, http/ws/mqtt
- add some test on readers
Signed-off-by: ale <ale@metaverso.org>
* - fix string concatenation
- update http/transport regexp to match subtopic names with only \w-
- update ws/transport regexp like http ones with also the wildcard * and >
Signed-off-by: ale <ale@metaverso.org>
* added subtopic support to coap adapter
Signed-off-by: ale <ale@metaverso.org>
* - update replace functions with replaceall when needed
- renamed getDestChannel to fmtSubject
- update api/transport and ws/transport route to be more readable
- fix mqtt syntax
- renamed func andQuery to query as suggested by @anovakovic01
- have a nice we :)
Signed-off-by: ale <ale@metaverso.org>
* - fix error declaration on ws/nat/publisher
- fix regexp added missing allowed chars - and _ on coap/api/transport
- fix subtopic clean suffix / if present on coap/api/transport
- improve regexp on http and ws /api/transport, now does not accept url that do not strictly match
- add some ws subtopic tests
Signed-off-by: ale <ale@metaverso.org>
* - enabled wildcard chars on coap/api/transport
- allow use special chars on http and ws api/transport
Signed-off-by: ale <ale@metaverso.org>
* - use strings.Replace() insted ReplaceAll()
Signed-off-by: ale <ale@metaverso.org>
* - allow every chars on subtopics
- fix replace error on mqtt
Signed-off-by: ale <ale@metaverso.org>
* fix cassandra test
Signed-off-by: ale <ale@metaverso.org>
* fix ws test with invalid subtopic
Signed-off-by: ale <ale@metaverso.org>
* fix invalid GOCACHE in go1.12, replaced by -count 1, see https://golang.org/doc/go1.10#test
Signed-off-by: ale <ale@metaverso.org>
* - improve regexp on http/ws api/transport
- minor changes
Signed-off-by: ale <ale@metaverso.org>
* - add generic function parseSubtopic on ws/http adapters
Signed-off-by: ale <ale@metaverso.org>
* - add generic function fmtSubtopic on coap adapter
Signed-off-by: ale <ale@metaverso.org>
* NOISSUE - Prevent infinite loop in lora-adapter if Redis init fail
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
* Fix line length
Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
* Things returns 404 when not found, not 500
Signed-off-by: Vladimir Starcevic <vstarcevic@gmail.com>
* MF-579 Things returns 404 when not found or thingid is in invalid format
Signed-off-by: Vladimir Starcevic <vstarcevic@gmail.com>
* MF-579 Things and channels returns 404 when not found, or ID is malformed not 500
Signed-off-by: Vladimir Starcevic <vstarcevic@gmail.com>
* MF-579 Things & Channels returns 404 when not found or ID is malformed, not 500
Signed-off-by: Vladimir Starcevic <vstarcevic@gmail.com>
Current regexp makes 2 selection groups, while
capturing just the first group (the only one of
interest) into variable.
This PR simplifies the regexp and avoids capturing
secound group.
Signed-off-by: drasko <drasko.draskovic@gmail.com>
* Update docs with new connection endpoints
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Fix empty key bug
Return key that was absent from things that are returned in
connections endpoint.
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add list channels by thing id endpoint
Add list channels by thing id endpoint to things service. Add
pagination format and logic.
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add fetch channels by thing endpoint
Add fetch channels by thing endpoint with pagination.
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update list endpoints to contain pagination
Update list endpoints to contain pagination metadata.
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add tests for two new endpoints
Add tests for two new endpoints and update existing ones. Also,
remove connected field from channel response.
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Fix tests for SDK
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add SDK methods for new endpoints
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update swagger docs for things service
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add error handling to http tests
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Fix response body in http tests
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Remove unused responses from things service
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add test cases to things postgres tests
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add test cases for event sourcing
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
MQTT adapter wasn't scalable because mq emitter wasn't setup. Now
it's working as intended. You can create two different instances
and exchange messages between their clients.
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
Fix data scheme so that cassandra stores channel and thing id as
text. Support sorting by time per channel partition.
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* MF-448 - Add option to connect to DB with verify-ca and verify-full
Adds the option to connect with verify-ca and verify-full
Users can now specify any extra certs and keys they may need.
Signed-off-by: MichaelFinley <Michael.Finley@target.com>
* Passing db config struct rather than seperate parameters
Also updated the tests to use the config
Signed-off-by: MichaelFinley <Michael.Finley@target.com>
* Unexporting fields apart of users config
Also added comments to the newly exported Config in things & users postgres/init.go
Signed-off-by: MichaelFinley <Michael.Finley@target.com>
* Update increment ID to UUID in things service
Update increment ID to UUID for things and channels in things
service and proto files. Also, update ID type from uint to string.
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update increment ID to UUID in http adapter
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update increment ID to UUID in ws adapter
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update increment ID to UUID in CoAP adapter
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update increment ID to UUID in normalizer service
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update increment ID to UUID in writer services
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update increment ID to UUID in reader services
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update increment ID to UUID in SDK
Update increment ID to UUID in SDK. Update id type to string.
Update tests.
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update increment ID to UUID in mqtt adapter
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Remove unnecessary case from influxdb reader
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update tests in order to increase code coverage
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update lora adapter to use string ID instead of unsigned int
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add metadata field to channels and update things metadata
Add metadata field to channels. Update thing metadata field to be
in JSON format. Update tests..
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add metadata to channel events
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add metadata field to channel in go SDK
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Move CLI documentation from getting started guide to seperate page
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Fix cli usage examples in readme and docs
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Update "getting started" docs with CLI usage
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Update CLI description
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Update CLI docs with help flag
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add event sourcing middleware for things service
Add event sourcing for write operations over things and channels.
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add tests for event sourcing middleware
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update things in tests to contain metadata field
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add TLS support to CoAP adapter and all readers
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add new env vars to README files
Add tls env vars to README files for CoAP adapter, WS adapter
and all readers.
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update all services to exit on invalid TLS env var value
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add SKD tests for creating channel
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add SDK tests for Channel function
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add list channels over SDK tests
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add SDK tests for updating channel
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add SDK tests for deleting channel
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add users service SDK tests
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* SDK things tests
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add SDK test for connecting and disconnecting things from channel
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* testing SDK sending messages
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* add tests for SDK func SetContentType
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* add all test cases for sending messages
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add handling StatusBadRequest when deleting thing over SDK
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Update error responses when deleting channel and thing
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Removed unused Unauthorized response when creating user
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* update testing CreateChannel, tests if response is some string
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add bad request case in testing CreateToken
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Remove response error conflict from things service
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Fix definition of sdk.ErrFailedDisconnect and return error in test cases for disconnecting things
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add handling errors and formatting code
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Defined new ErrFailedPublish error in SDK
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add SDK test for version
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Delete unused http response status in sdk.DeleteChannel
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Use message time as Point time in InfluxDB
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Use actual message time
Update all Reader and Writer services to use time from the message
instead of time given from the corrseponding Writer service.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Remove message time check
Messages time less than 2**28 represent time relative to the current time so Writer used to convert this to the correct value, i.e. msg.Time += time.Now(). However, this step is optional and should really be a part of the app on top of Mainflux or could be introduced with minor changes in Normalizer, Reader or Writer services, so there is no need for this to be supported out of box.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Use channel and publisher as tag keys
Move all the other Message fields to the field keys.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Add TLS flag that will turn TLS on or off
Add TLS flag to things, http, ws and mqtt service.
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update readme files with new env vars
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* MF-448 - Option for Postgres SSL Mode
Adds an option to choose the ssl mode when connecting to postgres.
Only supporting disable or require for now with verify-ca and verify-full to come after more discussion.
Signed-off-by: Michael Finley <Michael.Finley@target.com>
* Changing package name back
Accidentally changed the package name so reverting that!
Signed-off-by: Michael Finley <Michael.Finley@target.com>
* Adding section in getting-started for securing pgsql connections
Signed-off-by: Michael Finley <Michael.Finley@target.com>
* Update project dependencies
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Update InfluxDB and Cassandra versions
Update InfluxDB and Cassandra versions in docker-compose file as well as
images version in tests.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Update gRPC version
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Make name first value of constraints
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Fix empty protobuf values
Update Normalizer service and .proto files. Reader and Writer services
needs to be updated due to message format change.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Update HTTP adapter to use gogo protobuf
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Update Reader services API
Update API or Reader services to match Message changes due to switching to gogo/proto.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Update InfluxDB services
Update InfluxDB Reader and Writer services to match new Message format.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Update MongoDB services
Update MongoDB Reader and Writer services to match new message format.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Update Cassandra services
Update Cassandra Reader and Writer service to match new Message format.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Fix InfluxDB Reader test
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Update Makefile and docs accordingly
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Fix possible data race in InfluxDB writer
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Update InfluxDB Writer tests
Raise test coverage.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Fix InfluxDB reader
Fix wrong ValueSum readings. Upadete tests and raise coverage.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Update MongoDB services tests
Raise test coverage for MongoDB Reader and Writer services.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Update Readers API tests
Raise test coverage.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Raise test coverage
Update Cassandra Reader and Writer services tests.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Use gogo/protobuf in CoAP adapter
Add gogo/protobuf to Gopkg.toml and update dependencies.
Update Dockerfile to run `make proto`.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Update Cassandra Reader tests
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Refactor code
Improve code style and comments to improve readability.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Rename Sum to SumValue
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Rename Values to Value
Since message contains only single value (or possibly no value at all),
`Values` name could be misleading. Rename simple double value from
`Value` to `FloatValue` accordingly.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Fix InfluxDB Reader logging
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Replace exclusive if statements with switch-case
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Update Cassandra services tests
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Expose the InfluxDB and Cassandra ports to host
Expose the InfluxDB's HTTP API port 8086 and Cassandra's CQL port 9042 from the containers
to the host machine, in order to enable easier exploration of the data stored in the databases
from the host machine and development of apps which connect and use the data stored in the databases.
Signed-off-by: Jovan Kostovski <chombium@gmail.com>
* Port exposing cleanup in docker-compose.yml files
There were some doubled configurations for port exposing with the expose and ports directives in the docker-compose.yml files which had to be cleaned.
Signed-off-by: Jovan Kostovski <chombium@gmail.com>
* Bring old CoAP code back
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Fix channel ID formatting due to type change
Uncomment error handling for authorization.
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Update CoAP adapter docs
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Add copyright headers
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Remove redundant type declaration
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Add CoAP adapter to the list of services
Add CoAp adapter in Makefile services list and fix corresponding documentation.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Refactor CoAP code
Merge multipe `const` block int single and declare consts before vars.
Un-export notFound handler since there is no need to export it.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Update http version endpoint
This separates CoAP and HTTP APIs.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Refactor CoAP POST method handling
This PR is a part of CoAP adapter refactoring that will simplify adapter implementation.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Refactor CoAP adapter
Change CoAP message handling to simplify adapter implementation.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Add backoff timeout for server ping to client
Update CoAP adapter to provide subset of necessary features from
protocol specification.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Fix leaking locked goroutine
In case of the stopped ticker, its channel is NOT closed, so pinging might be left stuck waiting for the stopped ticker to send a notification.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Format code
Use more meaningful name for Handlers map.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Use and stop ticker from the same goroutine
Stop handler Ticker from ping goroutine rather than the cancel goroutine.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Check if subscription already exists in put method
Fix potential leak of handlers providing check inside of put method.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Use MessageID as Observe option
Since MessageID satisfies observe option behaviour, use Message ID
instead of local timestamp. Remove Thicker from handler and use it on
transport layer.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Use name Observer insted of Handler
Name `Observer` is used in protocol specification, so this naming makes
code more self-documenting.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Add CoAP adapter to docker-compose.yml
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Add copyright headers
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Remove unused constants
Fix service name in startup log message.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Add metrics endpoint
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Refactor code
Config fields from main.go should not be exported; minor style changes.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Update authorization URI-Query option
Use `authorization` value in URI-Query option instead of `key`. This
mimics Authorization header in some other protocols (e.g. HTTP). Please
note that this value can be replaced with simple `auth` to save space,
due to constrained URI-Query option size.
Signed-off-by: Dusan Borovcanin <dusan.borovcanin@mainflux.com>
* Refactor Mainflux go SDK
Add structures instead of string parameters. Add offset and limit
parameters to things and channels methods. Add better configuration
support.
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add new public errors with better error handling
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update SDK to use uint instread of string id
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update cli to use new SDK API
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Remove TLS termination from nginx configuration
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Update SDK documentation and structures
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Refactor things service
Decouple HTTP layer from business logic. Remove ID number validation
check. Remove models from HTTP requests and responses.
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Reformat tests for things service
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Increase test coverage for things service
Signed-off-by: Aleksandar Novakovic <aleksandar.novakovic@mainflux.com>
* Add pull request template
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Fix formatting in docs
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Fix link for contributing guidelines
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add zero value check for batch size and timeout
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Update InfluxDB writer tests
Test creation of InfluxDB writer with invalid (zero) batch size and timeout.
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Fix config load
Loading batch size and timeout from env variables were missing in loadConfigs method.
Signed-off-by: Dušan Borovčanin <dusan.borovcanin@mainflux.com>
* Add test
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add test
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add test
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add test
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add test
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* MF-384 - Add test for Redis cache
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add copyright headers
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Fix copyright header
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Fix test setup
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* handling errors and put test cases in maps instead of slices
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add test case if thing already exists
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Fix TestThingSave to use require instead of assert
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Add test case for removing non-existing thing from cache
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Use table of test cases for Remove and test Connect for every case
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Use table of test cases for Save
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Test cases in slice instead of map for testing Remove
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Make test-cases independent, use asserts instead of requires
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Use slice and map where appropriate
Signed-off-by: Ivan Milošević <iva@blokovi.com>
* Adding an option to select log level
Signed-off-by: Michael Finley <Michael.Finley@target.com>
* making error default log level
Signed-off-by: Michael Finley <Michael.Finley@target.com>
* removing go-kit/levels and expanding levels wrapper
Signed-off-by: Michael Finley <Michael.Finley@target.com>
* refactoring test cases and using log.fatal
Signed-off-by: Michael Finley <Michael.Finley@target.com>
* logger.new no longer accpets enum and now accepts string for level
Signed-off-by: Michael Finley <Michael.Finley@target.com>
* level_test.go refactor to compare error
Signed-off-by: Michael Finley <Michael.Finley@target.com>
* Updating the ws README
Signed-off-by: Michael Finley <Michael.Finley@target.com>
* Adding log level for mqtt Adapter
Signed-off-by: Michael Finley <Michael.Finley@target.com>
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.
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).
## Reporting issues
Reporting issues are a great way to contribute to the project. We are perpetually grateful about a well-written,
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
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
report:
- What were you trying to achieve?
- What are the expected results?
- What are the received results?
- What are the steps to reproduce the issue?
- In what environment did you encounter the issue?
## Pull requests
Good pull requests (e.g. patches, improvements, new features) are a fantastic help. They should
remain focused in scope and avoid unrelated commits.
**Please ask first** before embarking on any significant pull request (e.g. implementing new features,
refactoring code etc.), otherwise you risk spending a lot of time working on something that the
maintainers might not want to merge into the project.
Please adhere to the coding conventions used throughout the project. If in doubt, consult the
Once the prerequisites are installed, execute the following commands from the project's root:
```bash
docker-compose -f docker/docker-compose.yml up -d
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:
```bash
make run
```
## Usage
The quickest way to start using Mainflux 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
```
Additional details on using the CLI can be found in the [CLI documentation](https://mainflux.readthedocs.io/en/latest/cli/).
## Documentation
Official documentation is hosted at [Mainflux Read The 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.
Additional practical information, news and tutorials can be found on the [Mainflux blog][blog].
## Authors
Main architect and BDFL of Mainflux 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
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
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.
## Contributing
Thank you for your interest in Mainflux and wish to contribute!
Thank you for your interest in Mainflux and the desire to contribute!
1. Take a look at our [open issues](https://github.com/mainflux/mainflux/issues).
2. Checkout the [contribution guide](.github/CONTRIBUTING.md) to learn more about our style and conventions.
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.
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
If you are interested in working professionally on Mainflux,
please head to company's [careers page][careers] or shoot us an e-mail at <careers@mainflux.com>.
>The best way to grab our attention is by sending PRs :sunglasses:.
Authentication service provides an API for managing authentication keys.
There are *three types of authentication keys*:
- user key - keys issued to the user upon login request
- API key - keys issued upon the user request
- recovery key - password recovery key
User keys are issued when user logs in. Each user request (other than `registration` and `login`) contains user key that is used to authenticate the user. API keys are similar to the User keys. The main difference is that API keys have configurable expiration time. If no time is set, the key will never expire. For that reason, API keys are _the only key type that can be revoked_. 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].
The following actions are supported:
- create (all key types)
- verify (all key types)
- obtain (API keys only; secret is never obtained)
- revoke (API keys only)
## Configuration
The service is configured using the environment variables presented in the
following table. Note that any unset variables will be replaced with their
| MF_AUTHN_DB_SSL_CERT | Path to the PEM encoded certificate file | |
| MF_AUTHN_DB_SSL_KEY | Path to the PEM encoded key file | |
| MF_AUTHN_DB_SSL_ROOT_CERT | Path to the PEM encoded root certificate file | |
| MF_AUTHN_HTTP_PORT | Authn service HTTP port | 8180 |
| MF_AUTHN_GRPC_PORT | Authn service gRPC port | 8181 |
| MF_AUTHN_SERVER_CERT | Path to server certificate in pem format | |
| MF_AUTHN_SERVER_KEY | Path to server key in pem format | |
| MF_AUTHN_SECRET | String used for signing tokens | auth |
| MF_JAEGER_URL | Jaeger server URL | localhost:6831 |
## Deployment
The service itself is distributed as Docker container. The following snippet
provides a compose file template that can be used to deploy the service container
locally:
```yaml
version:"2"
services:
authn:
image:mainflux/authn:[version]
container_name:[instance name]
ports:
- [host machine port]:[configured HTTP port]
environment:
MF_AUTHN_LOG_LEVEL:[Service log level]
MF_AUTHN_DB_HOST:[Database host address]
MF_AUTHN_DB_PORT:[Database host port]
MF_AUTHN_DB_USER:[Database user]
MF_AUTHN_DB_PASS:[Database password]
MF_AUTHN_DB:[Name of the database used by the service]
MF_AUTHN_DB_SSL_MODE:[SSL mode to connect to the database with]
MF_AUTHN_DB_SSL_CERT:[Path to the PEM encoded certificate file]
MF_AUTHN_DB_SSL_KEY:[Path to the PEM encoded key file]
MF_AUTHN_DB_SSL_ROOT_CERT:[Path to the PEM encoded root certificate file]
MF_AUTHN_HTTP_PORT:[Service HTTP port]
MF_AUTHN_GRPC_PORT:[Service gRPC port]
MF_AUTHN_SECRET:[String used for signing tokens]
MF_AUTHN_SERVER_CERT:[String path to server certificate in pem format]
MF_AUTHN_SERVER_KEY:[String path to server key in pem format]
MF_JAEGER_URL:[Jaeger server URL]
```
To start the service outside of the container, execute the following shell script:
```bash
# download the latest version of the service
go get github.com/mainflux/mainflux
cd$GOPATH/src/github.com/mainflux/mainflux
# compile the service
make authn
# copy binary to bin
make install
# set the environment variables and run the service
MF_AUTHN_LOG_LEVEL=[Service log level]MF_AUTHN_DB_HOST=[Database host address]MF_AUTHN_DB_PORT=[Database host port]MF_AUTHN_DB_USER=[Database user]MF_AUTHN_DB_PASS=[Database password]MF_AUTHN_DB=[Name of the database used by the service]MF_AUTHN_DB_SSL_MODE=[SSL mode to connect to the database with]MF_AUTHN_DB_SSL_CERT=[Path to the PEM encoded certificate file]MF_AUTHN_DB_SSL_KEY=[Path to the PEM encoded key file]MF_AUTHN_DB_SSL_ROOT_CERT=[Path to the PEM encoded root certificate file]MF_AUTHN_HTTP_PORT=[Service HTTP port]MF_AUTHN_GRPC_PORT=[Service gRPC port]MF_AUTHN_SECRET=[String used for signing tokens]MF_AUTHN_SERVER_CERT=[Path to server certificate]MF_AUTHN_SERVER_KEY=[Path to server key]MF_JAEGER_URL=[Jaeger server URL]$GOBIN/mainflux-authn
```
If `MF_EMAIL_TEMPLATE` doesn't point to any file service will function but password reset functionality will not work.
## Usage
For more information about service capabilities and its usage, please check out
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:
1) Creating new Mainflux 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.
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:
1) corresponding Mainflux Thing ID
2) corresponding Mainflux Thing key
3) list of the Mainflux 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.
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:
| Inactive | Thing is created, but isn't enabled |
| Active | Thing is able to communicate using Mainflux |
Switching between states `Active` and `Inactive` enables and disables Thing, respectively.
Thing configuration also contains the so-called `external ID` and `external key`. An external ID is a unique identifier of corresponding Thing. For example, a device MAC address is a good choice for external ID. External key is a secret key that is used for authentication during the bootstrapping procedure.
## Configuration
The service is configured using the environment variables presented in the following table. Note that any unset variables will be replaced with their default values.
| MF_BOOTSTRAP_EVENT_CONSUMER | Bootstrap service event source consumer name | bootstrap |
| MF_JAEGER_URL | Jaeger server URL | localhost:6831 |
| MF_AUTHN_GRPC_URL | AuthN service gRPC URL | localhost:8181 |
| MF_AUTHN_GRPC_TIMEOUT | AuthN service gRPC request timeout in seconds | 1 |
## Deployment
The service itself is distributed as Docker container. The following snippet
provides a compose file template that can be used to deploy the service container
locally:
```yaml
version:"2"
bootstrap:
image:mainflux/bootstrap:latest
container_name:mainflux-bootstrap
depends_on:
- bootstrap-db
restart:on-failure
ports:
- 8200:8200
environment:
MF_BOOTSTRAP_LOG_LEVEL:[Bootstrap log level]
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 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_BOOTSTRAP_ENCRYPT_KEY:[Hex-encoded encryption key used for secure bootstrap]
MF_BOOTSTRAP_CLIENT_TLS:[Boolean value to enable/disable client TLS]
MF_BOOTSTRAP_CA_CERTS:[Path to trusted CAs in PEM format]
MF_BOOTSTRAP_PORT:8200
MF_BOOTSTRAP_SERVER_CERT:[String path to server cert in pem format]
MF_BOOTSTRAP_SERVER_KEY:[String path to server key in pem format]
MF_SDK_BASE_URL:[Base SDK URL for the Mainflux services]
MF_SDK_THINGS_PREFIX:[SDK prefix for Things service]
MF_THINGS_ES_URL:[Things service event source URL]
MF_THINGS_ES_PASS:[Things service event source password]
MF_THINGS_ES_DB:[Things service event source database]
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_EVENT_CONSUMER:[Bootstrap service event source consumer name]
MF_JAEGER_URL:[Jaeger server URL]
MF_AUTHN_GRPC_URL:[AuthN service gRPC URL]
MF_AUTHN_GRPC_TIMEOUT:[AuthN service gRPC request timeout in seconds]
```
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
cd mainflux
# compile the service
make bootstrap
# copy binary to bin
make install
# set the environment variables and run the service
MF_BOOTSTRAP_LOG_LEVEL=[Bootstrap log level]\
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 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_BOOTSTRAP_ENCRYPT_KEY=[Hex-encoded encryption key used for secure bootstrap]\
MF_BOOTSTRAP_CLIENT_TLS=[Boolean value to enable/disable client TLS]\
MF_BOOTSTRAP_CA_CERTS=[Path to trusted CAs in PEM format]\
MF_BOOTSTRAP_PORT=[Service HTTP port]\
MF_BOOTSTRAP_SERVER_CERT=[Path to server certificate]\
MF_BOOTSTRAP_SERVER_KEY=[Path to server key]\
MF_SDK_BASE_URL=[Base SDK URL for the Mainflux services]\
MF_SDK_THINGS_PREFIX=[SDK prefix for Things service]\
MF_JAEGER_URL=[Jaeger server URL]\
MF_AUTHN_GRPC_URL=[AuthN service gRPC URL]\
MF_AUTHN_GRPC_TIMEOUT=[AuthN service gRPC request timeout in seconds]\
$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.
## Usage
For more information about service capabilities and its usage, please check out
*`file` - A CSV or JSON file containing thing and channel ids
*`user_auth_token` - A valid user auth token for the current system
An example CSV file might be
```csv
<thing_id>,<channel_id>
<thing_id>,<channel_id>
```
in which the first column is thing IDs and the second column is channel IDs. A connection will be created for each thing to each channel. This example would result in 4 connections being created.
A comparable JSON file would be
```json
{
"thing_ids":[
"<thing_id>",
"<thing_id>"
],
"channel_ids":[
"<channel_id>",
"<channel_id>"
]
}
```
#### Disconnect Thing from Channel
```bash
mainflux-cli things disconnect <thing_id> <channel_id> <user_auth_token>
```
#### Retrieve a subset list of Channels connected to Thing
```bash
mainflux-cli things connections <thing_id> <user_auth_token>
```
#### Retrieve a subset list of Things connected to Channel
Long:`Things handling: create, delete or update things.`,
Short:"Things management",
Long:`Things management: create, get, update or delete Thing, connect or disconnect Thing from Channel and get the list of Channels connected to Thing`,
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.