mirror of
https://github.com/absmach/magistrala.git
synced 2026-06-23 04:10:28 +00:00
NOISSUE - Export Auth Package (#34)
* feat(auth): Export auth setup Since auth is used by other external packages it is wise to export the package of how to connect to auth service so that other packages can be able to use it rather than to rewrite the code Added envPrefix as a parameter as the user should be able to specify their own ev prefix Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * feat: Add auth configuration loading and setup This commit adds auth configuration loading and setup to the main.go files in different commands. The modifications include setting up authentication and authorization for various services, connecting to servers, and setting up authentication clients and handlers. Changes are made to the main function and other functions in different packages to set up auth clients and parse configuration options. Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> --------- Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>
This commit is contained in:
+11
-4
@@ -19,13 +19,13 @@ import (
|
||||
bootstrappg "github.com/absmach/magistrala/bootstrap/postgres"
|
||||
"github.com/absmach/magistrala/bootstrap/tracing"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
"github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/postgres"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
"github.com/absmach/magistrala/pkg/events/store"
|
||||
mgsdk "github.com/absmach/magistrala/pkg/sdk/go"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
@@ -40,6 +40,7 @@ const (
|
||||
svcName = "bootstrap"
|
||||
envPrefixDB = "MG_BOOTSTRAP_DB_"
|
||||
envPrefixHTTP = "MG_BOOTSTRAP_HTTP_"
|
||||
envPrefixAuth = "MG_AUTH_GRPC_"
|
||||
defDB = "bootstrap"
|
||||
defSvcHTTPPort = "9013"
|
||||
|
||||
@@ -96,8 +97,14 @@ func main() {
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
// Create new auth grpc client api
|
||||
auth, authHandler, err := authclient.Setup(svcName)
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuth}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
authClient, authHandler, err := auth.Setup(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
@@ -120,7 +127,7 @@ func main() {
|
||||
tracer := tp.Tracer(svcName)
|
||||
|
||||
// Create new service
|
||||
svc, err := newService(ctx, auth, db, tracer, logger, cfg, dbConfig)
|
||||
svc, err := newService(ctx, authClient, db, tracer, logger, cfg, dbConfig)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to create %s service: %s", svcName, err))
|
||||
exitCode = 1
|
||||
|
||||
@@ -13,10 +13,10 @@ import (
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
cassandraclient "github.com/absmach/magistrala/internal/clients/cassandra"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/absmach/magistrala/readers"
|
||||
"github.com/absmach/magistrala/readers/api"
|
||||
@@ -31,6 +31,8 @@ const (
|
||||
svcName = "cassandra-reader"
|
||||
envPrefixDB = "MG_CASSANDRA_"
|
||||
envPrefixHTTP = "MG_CASSANDRA_READER_HTTP_"
|
||||
envPrefixAuth = "MG_AUTH_GRPC_"
|
||||
envPrefixAuthz = "MG_THINGS_AUTH_GRPC_"
|
||||
defSvcHTTPPort = "9003"
|
||||
)
|
||||
|
||||
@@ -66,7 +68,14 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
ac, acHandler, err := authclient.Setup(svcName)
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuth}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
ac, acHandler, err := auth.Setup(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
@@ -76,7 +85,14 @@ func main() {
|
||||
|
||||
logger.Info("Successfully connected to auth grpc server " + acHandler.Secure())
|
||||
|
||||
tc, tcHandler, err := authclient.SetupAuthz(svcName)
|
||||
authConfig = auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuthz}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
tc, tcHandler, err := auth.SetupAuthz(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
|
||||
+11
-3
@@ -18,13 +18,13 @@ import (
|
||||
certspg "github.com/absmach/magistrala/certs/postgres"
|
||||
"github.com/absmach/magistrala/certs/tracing"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/postgres"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
mgsdk "github.com/absmach/magistrala/pkg/sdk/go"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
@@ -38,6 +38,7 @@ const (
|
||||
svcName = "certs"
|
||||
envPrefixDB = "MG_CERTS_DB_"
|
||||
envPrefixHTTP = "MG_CERTS_HTTP_"
|
||||
envPrefixAuth = "MG_AUTH_GRPC_"
|
||||
defDB = "certs"
|
||||
defSvcHTTPPort = "9019"
|
||||
)
|
||||
@@ -112,7 +113,14 @@ func main() {
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
auth, authHandler, err := authclient.Setup(svcName)
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuth}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
authClient, authHandler, err := auth.Setup(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
@@ -135,7 +143,7 @@ func main() {
|
||||
}()
|
||||
tracer := tp.Tracer(svcName)
|
||||
|
||||
svc := newService(auth, db, tracer, logger, cfg, dbConfig, pkiclient)
|
||||
svc := newService(authClient, db, tracer, logger, cfg, dbConfig, pkiclient)
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
|
||||
+13
-5
@@ -16,12 +16,12 @@ import (
|
||||
"github.com/absmach/magistrala/coap/api"
|
||||
"github.com/absmach/magistrala/coap/tracing"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authapi "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
coapserver "github.com/absmach/magistrala/internal/server/coap"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
@@ -34,6 +34,7 @@ const (
|
||||
svcName = "coap_adapter"
|
||||
envPrefix = "MG_COAP_ADAPTER_"
|
||||
envPrefixHTTP = "MG_COAP_ADAPTER_HTTP_"
|
||||
envPrefixAuthz = "MG_THINGS_AUTH_GRPC_"
|
||||
defSvcHTTPPort = "5683"
|
||||
defSvcCoAPPort = "5683"
|
||||
)
|
||||
@@ -86,15 +87,22 @@ func main() {
|
||||
return
|
||||
}
|
||||
|
||||
auth, aHandler, err := authapi.SetupAuthz(svcName)
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuthz}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
authClient, authHandler, err := auth.SetupAuthz(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
defer aHandler.Close()
|
||||
defer authHandler.Close()
|
||||
|
||||
logger.Info("Successfully connected to things grpc server " + aHandler.Secure())
|
||||
logger.Info("Successfully connected to things grpc server " + authHandler.Secure())
|
||||
|
||||
tp, err := jaegerclient.NewProvider(ctx, svcName, cfg.JaegerURL, cfg.InstanceID, cfg.TraceRatio)
|
||||
if err != nil {
|
||||
@@ -118,7 +126,7 @@ func main() {
|
||||
defer nps.Close()
|
||||
nps = brokerstracing.NewPubSub(coapServerConfig, tracer, nps)
|
||||
|
||||
svc := coap.New(auth, nps)
|
||||
svc := coap.New(authClient, nps)
|
||||
|
||||
svc = tracing.New(tracer, svc)
|
||||
|
||||
|
||||
+13
-5
@@ -16,11 +16,11 @@ import (
|
||||
adapter "github.com/absmach/magistrala/http"
|
||||
"github.com/absmach/magistrala/http/api"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authapi "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
@@ -37,6 +37,7 @@ import (
|
||||
const (
|
||||
svcName = "http_adapter"
|
||||
envPrefix = "MG_HTTP_ADAPTER_"
|
||||
envPrefixAuthz = "MG_THINGS_AUTH_GRPC_"
|
||||
defSvcHTTPPort = "80"
|
||||
targetHTTPPort = "81"
|
||||
targetHTTPHost = "http://localhost"
|
||||
@@ -83,15 +84,22 @@ func main() {
|
||||
return
|
||||
}
|
||||
|
||||
auth, aHandler, err := authapi.SetupAuthz("authz")
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuthz}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
authClient, authHandler, err := auth.SetupAuthz(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
defer aHandler.Close()
|
||||
defer authHandler.Close()
|
||||
|
||||
logger.Info("Successfully connected to things grpc server " + aHandler.Secure())
|
||||
logger.Info("Successfully connected to things grpc server " + authHandler.Secure())
|
||||
|
||||
tp, err := jaegerclient.NewProvider(ctx, svcName, cfg.JaegerURL, cfg.InstanceID, cfg.TraceRatio)
|
||||
if err != nil {
|
||||
@@ -115,7 +123,7 @@ func main() {
|
||||
defer pub.Close()
|
||||
pub = brokerstracing.NewPublisher(httpServerConfig, tracer, pub)
|
||||
|
||||
svc := newService(pub, auth, logger, tracer)
|
||||
svc := newService(pub, authClient, logger, tracer)
|
||||
targetServerCfg := server.Config{Port: targetHTTPPort}
|
||||
|
||||
hs := httpserver.New(ctx, cancel, svcName, targetServerCfg, api.MakeHandler(cfg.InstanceID), logger)
|
||||
|
||||
@@ -12,11 +12,11 @@ import (
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
influxdbclient "github.com/absmach/magistrala/internal/clients/influxdb"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/absmach/magistrala/readers"
|
||||
"github.com/absmach/magistrala/readers/api"
|
||||
@@ -30,6 +30,8 @@ import (
|
||||
const (
|
||||
svcName = "influxdb-reader"
|
||||
envPrefixHTTP = "MG_INFLUX_READER_HTTP_"
|
||||
envPrefixAuth = "MG_AUTH_GRPC_"
|
||||
envPrefixAuthz = "MG_THINGS_AUTH_GRPC_"
|
||||
envPrefixDB = "MG_INFLUXDB_"
|
||||
defSvcHTTPPort = "9005"
|
||||
)
|
||||
@@ -65,7 +67,14 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
ac, acHandler, err := authclient.Setup(svcName)
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuth}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
ac, acHandler, err := auth.Setup(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
@@ -75,7 +84,14 @@ func main() {
|
||||
|
||||
logger.Info("Successfully connected to auth grpc server " + acHandler.Secure())
|
||||
|
||||
tc, tcHandler, err := authclient.SetupAuthz(svcName)
|
||||
authConfig = auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuthz}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
tc, tcHandler, err := auth.SetupAuthz(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
|
||||
@@ -12,11 +12,11 @@ import (
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
mongoclient "github.com/absmach/magistrala/internal/clients/mongo"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/absmach/magistrala/readers"
|
||||
"github.com/absmach/magistrala/readers/api"
|
||||
@@ -31,6 +31,8 @@ const (
|
||||
svcName = "mongodb-reader"
|
||||
envPrefixDB = "MG_MONGO_"
|
||||
envPrefixHTTP = "MG_MONGO_READER_HTTP_"
|
||||
envPrefixAuth = "MG_AUTH_GRPC_"
|
||||
envPrefixAuthz = "MG_THINGS_AUTH_GRPC_"
|
||||
defSvcHTTPPort = "9007"
|
||||
)
|
||||
|
||||
@@ -74,7 +76,14 @@ func main() {
|
||||
|
||||
repo := newService(db, logger)
|
||||
|
||||
ac, acHandler, err := authclient.Setup(svcName)
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuth}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
ac, acHandler, err := auth.Setup(authConfig)
|
||||
if err != nil {
|
||||
logger.Fatal(err.Error())
|
||||
exitCode = 1
|
||||
@@ -84,7 +93,14 @@ func main() {
|
||||
|
||||
logger.Info("Successfully connected to auth grpc server " + acHandler.Secure())
|
||||
|
||||
tc, tcHandler, err := authclient.SetupAuthz(svcName)
|
||||
authConfig = auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuthz}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
tc, tcHandler, err := auth.SetupAuthz(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
|
||||
+16
-6
@@ -15,13 +15,13 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
authapi "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/mqtt"
|
||||
"github.com/absmach/magistrala/mqtt/events"
|
||||
mqtttracing "github.com/absmach/magistrala/mqtt/tracing"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
@@ -37,7 +37,10 @@ import (
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
const svcName = "mqtt"
|
||||
const (
|
||||
svcName = "mqtt"
|
||||
envPrefixAuthz = "MG_THINGS_AUTH_GRPC_"
|
||||
)
|
||||
|
||||
type config struct {
|
||||
LogLevel string `env:"MG_MQTT_ADAPTER_LOG_LEVEL" envDefault:"info"`
|
||||
@@ -157,17 +160,24 @@ func main() {
|
||||
return
|
||||
}
|
||||
|
||||
auth, aHandler, err := authapi.SetupAuthz("authz")
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuthz}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
authClient, authHandler, err := auth.SetupAuthz(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
defer aHandler.Close()
|
||||
defer authHandler.Close()
|
||||
|
||||
logger.Info("Successfully connected to things grpc server " + aHandler.Secure())
|
||||
logger.Info("Successfully connected to things grpc server " + authHandler.Secure())
|
||||
|
||||
h := mqtt.NewHandler(np, es, logger, auth)
|
||||
h := mqtt.NewHandler(np, es, logger, authClient)
|
||||
h = handler.NewTracing(tracer, h)
|
||||
|
||||
if cfg.SendTelemetry {
|
||||
|
||||
@@ -12,11 +12,11 @@ import (
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/absmach/magistrala/readers"
|
||||
"github.com/absmach/magistrala/readers/api"
|
||||
@@ -31,6 +31,8 @@ const (
|
||||
svcName = "postgres-reader"
|
||||
envPrefixDB = "MG_POSTGRES_"
|
||||
envPrefixHTTP = "MG_POSTGRES_READER_HTTP_"
|
||||
envPrefixAuth = "MG_AUTH_GRPC_"
|
||||
envPrefixAuthz = "MG_THINGS_AUTH_GRPC_"
|
||||
defDB = "magistrala"
|
||||
defSvcHTTPPort = "9009"
|
||||
)
|
||||
@@ -80,7 +82,14 @@ func main() {
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
ac, acHandler, err := authclient.Setup(svcName)
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuth}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
ac, acHandler, err := auth.Setup(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
@@ -90,7 +99,14 @@ func main() {
|
||||
|
||||
logger.Info("Successfully connected to auth grpc server " + acHandler.Secure())
|
||||
|
||||
tc, tcHandler, err := authclient.SetupAuthz(svcName)
|
||||
authConfig = auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuthz}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
tc, tcHandler, err := auth.SetupAuthz(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
|
||||
@@ -19,12 +19,12 @@ import (
|
||||
mgsmpp "github.com/absmach/magistrala/consumers/notifiers/smpp"
|
||||
"github.com/absmach/magistrala/consumers/notifiers/tracing"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/ulid"
|
||||
@@ -40,6 +40,7 @@ const (
|
||||
svcName = "smpp-notifier"
|
||||
envPrefixDB = "MG_SMPP_NOTIFIER_DB_"
|
||||
envPrefixHTTP = "MG_SMPP_NOTIFIER_HTTP_"
|
||||
envPrefixAuth = "MG_AUTH_GRPC_"
|
||||
defDB = "subscriptions"
|
||||
defSvcHTTPPort = "9014"
|
||||
)
|
||||
@@ -123,7 +124,14 @@ func main() {
|
||||
defer pubSub.Close()
|
||||
pubSub = brokerstracing.NewPubSub(httpServerConfig, tracer, pubSub)
|
||||
|
||||
auth, authHandler, err := authclient.Setup(svcName)
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuth}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
authClient, authHandler, err := auth.Setup(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
@@ -132,7 +140,7 @@ func main() {
|
||||
defer authHandler.Close()
|
||||
logger.Info("Successfully connected to auth grpc server " + authHandler.Secure())
|
||||
|
||||
svc := newService(db, tracer, auth, cfg, smppConfig, logger)
|
||||
svc := newService(db, tracer, authClient, cfg, smppConfig, logger)
|
||||
if err = consumers.Start(ctx, svcName, pubSub, svc, cfg.ConfigPath, logger); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to create Postgres writer: %s", err))
|
||||
exitCode = 1
|
||||
|
||||
@@ -19,13 +19,13 @@ import (
|
||||
"github.com/absmach/magistrala/consumers/notifiers/smtp"
|
||||
"github.com/absmach/magistrala/consumers/notifiers/tracing"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/email"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/ulid"
|
||||
@@ -41,6 +41,7 @@ const (
|
||||
svcName = "smtp-notifier"
|
||||
envPrefixDB = "MG_SMTP_NOTIFIER_DB_"
|
||||
envPrefixHTTP = "MG_SMTP_NOTIFIER_HTTP_"
|
||||
envPrefixAuth = "MG_AUTH_GRPC_"
|
||||
defDB = "subscriptions"
|
||||
defSvcHTTPPort = "9015"
|
||||
)
|
||||
@@ -126,7 +127,14 @@ func main() {
|
||||
defer pubSub.Close()
|
||||
pubSub = brokerstracing.NewPubSub(httpServerConfig, tracer, pubSub)
|
||||
|
||||
auth, authHandler, err := authclient.Setup(svcName)
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuth}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
authClient, authHandler, err := auth.Setup(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
@@ -136,7 +144,7 @@ func main() {
|
||||
|
||||
logger.Info("Successfully connected to auth grpc server " + authHandler.Secure())
|
||||
|
||||
svc, err := newService(db, tracer, auth, cfg, ec, logger)
|
||||
svc, err := newService(db, tracer, authClient, cfg, ec, logger)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
|
||||
+14
-6
@@ -14,7 +14,6 @@ import (
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
redisclient "github.com/absmach/magistrala/internal/clients/redis"
|
||||
@@ -27,6 +26,7 @@ import (
|
||||
grpcserver "github.com/absmach/magistrala/internal/server/grpc"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
"github.com/absmach/magistrala/pkg/groups"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/absmach/magistrala/things"
|
||||
@@ -54,6 +54,7 @@ const (
|
||||
envPrefixDB = "MG_THINGS_DB_"
|
||||
envPrefixHTTP = "MG_THINGS_HTTP_"
|
||||
envPrefixGRPC = "MG_THINGS_AUTH_GRPC_"
|
||||
envPrefixAuth = "MG_AUTH_GRPC_"
|
||||
defDB = "things"
|
||||
defSvcHTTPPort = "9000"
|
||||
defSvcAuthGRPCPort = "7000"
|
||||
@@ -137,25 +138,32 @@ func main() {
|
||||
}
|
||||
defer cacheclient.Close()
|
||||
|
||||
var auth magistrala.AuthServiceClient
|
||||
var authClient magistrala.AuthServiceClient
|
||||
|
||||
switch cfg.StandaloneID != "" && cfg.StandaloneToken != "" {
|
||||
case true:
|
||||
auth = localusers.NewAuthService(cfg.StandaloneID, cfg.StandaloneToken)
|
||||
authClient = localusers.NewAuthService(cfg.StandaloneID, cfg.StandaloneToken)
|
||||
logger.Info("Using standalone auth service")
|
||||
default:
|
||||
authServiceClient, authHandler, err := authclient.Setup(svcName)
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuth}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
authServiceClient, authHandler, err := auth.Setup(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
defer authHandler.Close()
|
||||
auth = authServiceClient
|
||||
authClient = authServiceClient
|
||||
logger.Info("Successfully connected to auth grpc server " + authHandler.Secure())
|
||||
}
|
||||
|
||||
csvc, gsvc, err := newService(ctx, db, dbConfig, auth, cacheclient, cfg.CacheKeyDuration, cfg.ESURL, tracer, logger)
|
||||
csvc, gsvc, err := newService(ctx, db, dbConfig, authClient, cacheclient, cfg.CacheKeyDuration, cfg.ESURL, tracer, logger)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to create services: %s", err))
|
||||
exitCode = 1
|
||||
|
||||
@@ -12,11 +12,11 @@ import (
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/absmach/magistrala/readers"
|
||||
"github.com/absmach/magistrala/readers/api"
|
||||
@@ -31,6 +31,8 @@ const (
|
||||
svcName = "timescaledb-reader"
|
||||
envPrefixDB = "MG_TIMESCALE_"
|
||||
envPrefixHTTP = "MG_TIMESCALE_READER_HTTP_"
|
||||
envPrefixAuth = "MG_AUTH_GRPC_"
|
||||
envPrefixAuthz = "MG_THINGS_AUTH_GRPC_"
|
||||
defDB = "messages"
|
||||
defSvcHTTPPort = "9011"
|
||||
)
|
||||
@@ -80,7 +82,14 @@ func main() {
|
||||
|
||||
repo := newService(db, logger)
|
||||
|
||||
ac, acHandler, err := authclient.Setup(svcName)
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuth}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
ac, acHandler, err := auth.Setup(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
@@ -90,7 +99,14 @@ func main() {
|
||||
|
||||
logger.Info("Successfully connected to auth grpc server " + acHandler.Secure())
|
||||
|
||||
tc, tcHandler, err := authclient.SetupAuthz(svcName)
|
||||
authConfig = auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuthz}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
tc, tcHandler, err := auth.SetupAuthz(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
|
||||
+14
-6
@@ -13,13 +13,13 @@ import (
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
mongoclient "github.com/absmach/magistrala/internal/clients/mongo"
|
||||
redisclient "github.com/absmach/magistrala/internal/clients/redis"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
@@ -43,6 +43,7 @@ const (
|
||||
svcName = "twins"
|
||||
envPrefixDB = "MG_TWINS_DB_"
|
||||
envPrefixHTTP = "MG_TWINS_HTTP_"
|
||||
envPrefixAuth = "MG_AUTH_GRPC_"
|
||||
defSvcHTTPPort = "9018"
|
||||
)
|
||||
|
||||
@@ -120,19 +121,26 @@ func main() {
|
||||
}()
|
||||
tracer := tp.Tracer(svcName)
|
||||
|
||||
var auth magistrala.AuthServiceClient
|
||||
var authClient magistrala.AuthServiceClient
|
||||
switch cfg.StandaloneID != "" && cfg.StandaloneToken != "" {
|
||||
case true:
|
||||
auth = localusers.NewAuthService(cfg.StandaloneID, cfg.StandaloneToken)
|
||||
authClient = localusers.NewAuthService(cfg.StandaloneID, cfg.StandaloneToken)
|
||||
default:
|
||||
authServiceClient, authHandler, err := authclient.Setup(svcName)
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuth}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
authServiceClient, authHandler, err := auth.Setup(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
defer authHandler.Close()
|
||||
auth = authServiceClient
|
||||
authClient = authServiceClient
|
||||
logger.Info("Successfully connected to auth grpc server " + authHandler.Secure())
|
||||
}
|
||||
|
||||
@@ -145,7 +153,7 @@ func main() {
|
||||
defer pubSub.Close()
|
||||
pubSub = brokerstracing.NewPubSub(httpServerConfig, tracer, pubSub)
|
||||
|
||||
svc, err := newService(ctx, svcName, pubSub, cfg, auth, tracer, db, cacheClient, logger)
|
||||
svc, err := newService(ctx, svcName, pubSub, cfg, authClient, tracer, db, cacheClient, logger)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to create %s service: %s", svcName, err))
|
||||
exitCode = 1
|
||||
|
||||
+13
-5
@@ -16,7 +16,6 @@ import (
|
||||
"github.com/absmach/magistrala"
|
||||
authSvc "github.com/absmach/magistrala/auth"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/email"
|
||||
@@ -29,6 +28,7 @@ import (
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
mgclients "github.com/absmach/magistrala/pkg/clients"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/absmach/magistrala/pkg/groups"
|
||||
@@ -53,6 +53,7 @@ const (
|
||||
envPrefixDB = "MG_USERS_DB_"
|
||||
envPrefixHTTP = "MG_USERS_HTTP_"
|
||||
envPrefixGrpc = "MG_USERS_GRPC_"
|
||||
envPrefixAuth = "MG_AUTH_GRPC_"
|
||||
defDB = "users"
|
||||
defSvcHTTPPort = "9002"
|
||||
defSvcGRPCPort = "9192"
|
||||
@@ -141,7 +142,14 @@ func main() {
|
||||
}()
|
||||
tracer := tp.Tracer(svcName)
|
||||
|
||||
auth, authHandler, err := authclient.Setup(svcName)
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuth}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
authClient, authHandler, err := auth.Setup(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
@@ -150,7 +158,7 @@ func main() {
|
||||
defer authHandler.Close()
|
||||
logger.Info("Successfully connected to auth grpc server " + authHandler.Secure())
|
||||
|
||||
csvc, gsvc, err := newService(ctx, auth, db, dbConfig, tracer, cfg, ec, logger)
|
||||
csvc, gsvc, err := newService(ctx, authClient, db, dbConfig, tracer, cfg, ec, logger)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to setup service: %s", err))
|
||||
exitCode = 1
|
||||
@@ -220,7 +228,7 @@ func newService(ctx context.Context, auth magistrala.AuthServiceClient, db *sqlx
|
||||
counter, latency = internal.MakeMetrics("groups", "api")
|
||||
gsvc = gapi.MetricsMiddleware(gsvc, counter, latency)
|
||||
|
||||
clientID, err := createAdmin(ctx, c, cRepo, hsr, csvc, auth)
|
||||
clientID, err := createAdmin(ctx, c, cRepo, hsr, csvc)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to create admin client: %s", err))
|
||||
}
|
||||
@@ -230,7 +238,7 @@ func newService(ctx context.Context, auth magistrala.AuthServiceClient, db *sqlx
|
||||
return csvc, gsvc, err
|
||||
}
|
||||
|
||||
func createAdmin(ctx context.Context, c config, crepo clientspg.Repository, hsr users.Hasher, svc users.Service, auth magistrala.AuthServiceClient) (string, error) {
|
||||
func createAdmin(ctx context.Context, c config, crepo clientspg.Repository, hsr users.Hasher, svc users.Service) (string, error) {
|
||||
id, err := uuid.New().ID()
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
||||
+14
-6
@@ -13,11 +13,11 @@ import (
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authapi "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/auth"
|
||||
"github.com/absmach/magistrala/pkg/messaging"
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
@@ -36,6 +36,7 @@ import (
|
||||
const (
|
||||
svcName = "ws-adapter"
|
||||
envPrefixHTTP = "MG_WS_ADAPTER_HTTP_"
|
||||
envPrefixAuthz = "MG_THINGS_AUTH_GRPC_"
|
||||
defSvcHTTPPort = "8190"
|
||||
targetWSPort = "8191"
|
||||
targetWSHost = "localhost"
|
||||
@@ -87,15 +88,22 @@ func main() {
|
||||
Host: targetWSHost,
|
||||
}
|
||||
|
||||
auth, aHandler, err := authapi.SetupAuthz("authz")
|
||||
authConfig := auth.Config{}
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefixAuthz}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s auth configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
authClient, authHandler, err := auth.SetupAuthz(authConfig)
|
||||
if err != nil {
|
||||
logger.Error(err.Error())
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
defer aHandler.Close()
|
||||
defer authHandler.Close()
|
||||
|
||||
logger.Info("Successfully connected to things grpc server " + aHandler.Secure())
|
||||
logger.Info("Successfully connected to things grpc server " + authHandler.Secure())
|
||||
|
||||
tp, err := jaegerclient.NewProvider(ctx, svcName, cfg.JaegerURL, cfg.InstanceID, cfg.TraceRatio)
|
||||
if err != nil {
|
||||
@@ -119,7 +127,7 @@ func main() {
|
||||
defer nps.Close()
|
||||
nps = brokerstracing.NewPubSub(targetServerConf, tracer, nps)
|
||||
|
||||
svc := newService(auth, nps, logger, tracer)
|
||||
svc := newService(authClient, nps, logger, tracer)
|
||||
|
||||
hs := httpserver.New(ctx, cancel, svcName, targetServerConf, api.MakeHandler(ctx, svc, logger, cfg.InstanceID), logger)
|
||||
|
||||
@@ -132,7 +140,7 @@ func main() {
|
||||
g.Go(func() error {
|
||||
return hs.Start()
|
||||
})
|
||||
handler := ws.NewHandler(nps, logger, auth)
|
||||
handler := ws.NewHandler(nps, logger, authClient)
|
||||
return proxyWS(ctx, httpServerConfig, logger, handler)
|
||||
})
|
||||
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
// Copyright (c) Magistrala
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package auth
|
||||
|
||||
import (
|
||||
"github.com/absmach/magistrala"
|
||||
authgrpc "github.com/absmach/magistrala/auth/api/grpc"
|
||||
grpcclient "github.com/absmach/magistrala/internal/clients/grpc"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
thingsauth "github.com/absmach/magistrala/things/api/grpc"
|
||||
"github.com/caarlos0/env/v10"
|
||||
)
|
||||
|
||||
const (
|
||||
envAuthGrpcPrefix = "MG_AUTH_GRPC_"
|
||||
envAuthzGrpcPrefix = "MG_THINGS_AUTH_GRPC_"
|
||||
)
|
||||
|
||||
var errGrpcConfig = errors.New("failed to load grpc configuration")
|
||||
|
||||
// Setup loads Auth gRPC configuration from environment variable and creates new Auth gRPC API.
|
||||
func Setup(svcName string) (magistrala.AuthServiceClient, grpcclient.ClientHandler, error) {
|
||||
config := grpcclient.Config{}
|
||||
if err := env.ParseWithOptions(&config, env.Options{Prefix: envAuthGrpcPrefix}); err != nil {
|
||||
return nil, nil, errors.Wrap(errGrpcConfig, err)
|
||||
}
|
||||
c, ch, err := grpcclient.Setup(config, svcName)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
return authgrpc.NewClient(c.ClientConn, config.Timeout), ch, nil
|
||||
}
|
||||
|
||||
// Setup loads Auth gRPC configuration from environment variable and creates new Auth gRPC API.
|
||||
func SetupAuthz(svcName string) (magistrala.AuthzServiceClient, grpcclient.ClientHandler, error) {
|
||||
config := grpcclient.Config{}
|
||||
if err := env.ParseWithOptions(&config, env.Options{Prefix: envAuthzGrpcPrefix}); err != nil {
|
||||
return nil, nil, errors.Wrap(errGrpcConfig, err)
|
||||
}
|
||||
c, ch, err := grpcclient.Setup(config, svcName)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
return thingsauth.NewClient(c.ClientConn, config.Timeout), ch, nil
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
// Copyright (c) Magistrala
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Package grpc contains the domain concept definitions needed to support
|
||||
// Magistrala grpc functionality.
|
||||
package grpc
|
||||
@@ -1,15 +0,0 @@
|
||||
// Copyright (c) Magistrala
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package internal
|
||||
|
||||
import (
|
||||
"github.com/absmach/magistrala/internal/clients/grpc"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
)
|
||||
|
||||
func Close(log mglog.Logger, clientHandler grpc.ClientHandler) {
|
||||
if err := clientHandler.Close(); err != nil {
|
||||
log.Warn(err.Error())
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
// Copyright (c) Magistrala
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package auth
|
||||
|
||||
import (
|
||||
"github.com/absmach/magistrala"
|
||||
authgrpc "github.com/absmach/magistrala/auth/api/grpc"
|
||||
thingsauth "github.com/absmach/magistrala/things/api/grpc"
|
||||
)
|
||||
|
||||
// Setup loads Auth gRPC configuration and creates new Auth gRPC client.
|
||||
//
|
||||
// For example:
|
||||
//
|
||||
// authClient, authHandler, err := auth.Setup(auth.Config{})
|
||||
func Setup(cfg Config) (magistrala.AuthServiceClient, Handler, error) {
|
||||
client, err := newClient(cfg)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
return authgrpc.NewClient(client.Connection(), cfg.Timeout), client, nil
|
||||
}
|
||||
|
||||
// Setup loads Authz gRPC configuration and creates new Authz gRPC client.
|
||||
//
|
||||
// For example:
|
||||
//
|
||||
// authzClient, authzHandler, err := auth.Setup(auth.Config{})
|
||||
func SetupAuthz(cfg Config) (magistrala.AuthzServiceClient, Handler, error) {
|
||||
client, err := newClient(cfg)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
return thingsauth.NewClient(client.Connection(), cfg.Timeout), client, nil
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) Magistrala
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package grpc
|
||||
package auth
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
@@ -35,30 +35,82 @@ type Config struct {
|
||||
ClientCert string `env:"CLIENT_CERT" envDefault:""`
|
||||
ClientKey string `env:"CLIENT_KEY" envDefault:""`
|
||||
ServerCAFile string `env:"SERVER_CA_CERTS" envDefault:""`
|
||||
URL string `env:"URL" envDefault:""`
|
||||
URL string `env:"URL" envDefault:"localhost:8181"`
|
||||
Timeout time.Duration `env:"TIMEOUT" envDefault:"1s"`
|
||||
}
|
||||
|
||||
type ClientHandler interface {
|
||||
// Handler is used to handle gRPC connection.
|
||||
type Handler interface {
|
||||
// Close closes gRPC connection.
|
||||
Close() error
|
||||
IsSecure() bool
|
||||
|
||||
// Secure is used for pretty printing TLS info.
|
||||
Secure() string
|
||||
|
||||
// Connection returns the gRPC connection.
|
||||
Connection() *grpc.ClientConn
|
||||
}
|
||||
|
||||
type Client struct {
|
||||
type client struct {
|
||||
*grpc.ClientConn
|
||||
cfg Config
|
||||
secure security
|
||||
}
|
||||
|
||||
var _ ClientHandler = (*Client)(nil)
|
||||
var _ Handler = (*client)(nil)
|
||||
|
||||
// NewClientHandler create new client handler for gRPC client.
|
||||
func NewClientHandler(c *Client) ClientHandler {
|
||||
return c
|
||||
func newClient(cfg Config) (Handler, error) {
|
||||
conn, secure, err := connect(cfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &client{
|
||||
ClientConn: conn,
|
||||
cfg: cfg,
|
||||
secure: secure,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Connect creates new gRPC client and connect to gRPC server.
|
||||
func Connect(cfg Config) (*grpc.ClientConn, security, error) {
|
||||
func (c *client) Close() error {
|
||||
if err := c.ClientConn.Close(); err != nil {
|
||||
return errors.Wrap(errGrpcClose, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *client) IsSecure() bool {
|
||||
switch c.secure {
|
||||
case withTLS, withmTLS:
|
||||
return true
|
||||
case withoutTLS:
|
||||
fallthrough
|
||||
default:
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
func (c *client) Connection() *grpc.ClientConn {
|
||||
return c.ClientConn
|
||||
}
|
||||
|
||||
// Secure is used for pretty printing TLS info.
|
||||
func (c *client) Secure() string {
|
||||
switch c.secure {
|
||||
case withTLS:
|
||||
return "with TLS"
|
||||
case withmTLS:
|
||||
return "with mTLS"
|
||||
case withoutTLS:
|
||||
fallthrough
|
||||
default:
|
||||
return "without TLS"
|
||||
}
|
||||
}
|
||||
|
||||
// connect creates new gRPC client and connect to gRPC server.
|
||||
func connect(cfg Config) (*grpc.ClientConn, security, error) {
|
||||
opts := []grpc.DialOption{
|
||||
grpc.WithUnaryInterceptor(otelgrpc.UnaryClientInterceptor()),
|
||||
}
|
||||
@@ -104,57 +156,7 @@ func Connect(cfg Config) (*grpc.ClientConn, security, error) {
|
||||
|
||||
conn, err := grpc.Dial(cfg.URL, opts...)
|
||||
if err != nil {
|
||||
return nil, secure, err
|
||||
return nil, secure, errors.Wrap(errGrpcConnect, err)
|
||||
}
|
||||
return conn, secure, nil
|
||||
}
|
||||
|
||||
// Setup load gRPC configuration from environment variable, creates new gRPC client and connect to gRPC server.
|
||||
func Setup(config Config, svcName string) (*Client, ClientHandler, error) {
|
||||
// connect to auth grpc server
|
||||
grpcClient, secure, err := Connect(config)
|
||||
if err != nil {
|
||||
return nil, nil, errors.Wrap(errGrpcConnect, err)
|
||||
}
|
||||
|
||||
c := &Client{grpcClient, secure}
|
||||
|
||||
return c, NewClientHandler(c), nil
|
||||
}
|
||||
|
||||
// Close shuts down trace provider.
|
||||
func (c *Client) Close() error {
|
||||
var retErr error
|
||||
err := c.ClientConn.Close()
|
||||
if err != nil {
|
||||
retErr = errors.Wrap(errGrpcClose, err)
|
||||
}
|
||||
return retErr
|
||||
}
|
||||
|
||||
// IsSecure is utility method for checking if
|
||||
// the client is running with TLS enabled.
|
||||
func (c *Client) IsSecure() bool {
|
||||
switch c.secure {
|
||||
case withTLS, withmTLS:
|
||||
return true
|
||||
case withoutTLS:
|
||||
fallthrough
|
||||
default:
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
// Secure is used for pretty printing TLS info.
|
||||
func (c *Client) Secure() string {
|
||||
switch c.secure {
|
||||
case withTLS:
|
||||
return "with TLS"
|
||||
case withmTLS:
|
||||
return "with mTLS"
|
||||
case withoutTLS:
|
||||
fallthrough
|
||||
default:
|
||||
return "without TLS"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright (c) Magistrala
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Package auth contains the domain concept definitions needed to support
|
||||
// Magistrala auth functionality.
|
||||
package auth
|
||||
@@ -1,3 +1,6 @@
|
||||
// Copyright (c) Magistrala
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package senml
|
||||
|
||||
// Message represents a resolved (normalized) SenML record.
|
||||
|
||||
+1
-1
@@ -224,7 +224,7 @@ func (h *handler) Disconnect(ctx context.Context) error {
|
||||
func (h *handler) authAccess(ctx context.Context, password, topic, action string) error {
|
||||
// Topics are in the format:
|
||||
// channels/<channel_id>/messages/<subtopic>/.../ct/<content_type>
|
||||
if !channelRegExp.Match([]byte(topic)) {
|
||||
if !channelRegExp.MatchString(topic) {
|
||||
return ErrMalformedTopic
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user