Fix flags and client service authentication

master
René Jochum 2 years ago
parent 943bda59e1
commit 669d5abdfa
Signed by: jochum
GPG Key ID: F7D906F5E51E8E5E

@ -14,6 +14,7 @@ import (
"go-micro.dev/v4/client" "go-micro.dev/v4/client"
"go-micro.dev/v4/errors" "go-micro.dev/v4/errors"
"google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/emptypb"
"jochum.dev/jo-micro/auth2"
auth "jochum.dev/jo-micro/auth2" auth "jochum.dev/jo-micro/auth2"
iLogger "jochum.dev/jo-micro/router/internal/logger" iLogger "jochum.dev/jo-micro/router/internal/logger"
"jochum.dev/jo-micro/router/internal/proto/routerclientpb" "jochum.dev/jo-micro/router/internal/proto/routerclientpb"
@ -60,7 +61,12 @@ func (h *Handler) Init(service micro.Service, engine *gin.Engine, routerAuth aut
for _, s := range services { for _, s := range services {
iLogger.Logrus().WithField("service", s.Name).Tracef("Found service") iLogger.Logrus().WithField("service", s.Name).Tracef("Found service")
client := routerclientpb.NewRouterClientService(s.Name, h.service.Client()) client := routerclientpb.NewRouterClientService(s.Name, h.service.Client())
resp, err := client.Routes(ctx, &emptypb.Empty{}) sCtx, err := auth2.ClientAuthRegistry().Plugin().ServiceContext(ctx)
if err != nil {
iLogger.Logrus().Error(err)
continue
}
resp, err := client.Routes(sCtx, &emptypb.Empty{})
if err != nil { if err != nil {
iLogger.Logrus().Error(err) iLogger.Logrus().Error(err)
// failure in getting routes, silently ignore // failure in getting routes, silently ignore

@ -23,20 +23,14 @@ import (
func internalService(routerHandler *handler.Handler) { func internalService(routerHandler *handler.Handler) {
srv := micro.NewService() srv := micro.NewService()
flags := []cli.Flag{
&cli.StringFlag{
Name: "router_basepath",
Usage: "Router basepath",
EnvVars: []string{"MICRO_ROUTER_BASEPATH"},
Value: "router",
},
}
opts := []micro.Option{ opts := []micro.Option{
micro.Name(config.Name + "-internal"), micro.Name(config.Name + "-internal"),
micro.Version(config.Version), micro.Version(config.Version),
micro.Flags(flags...),
micro.Action(func(c *cli.Context) error { micro.Action(func(c *cli.Context) error {
if err := auth2.ClientAuthRegistry().Init(c, srv); err != nil {
iLogger.Logrus().Fatal(err)
}
routerserverpb.RegisterRouterServerServiceHandler(srv.Server(), routerHandler) routerserverpb.RegisterRouterServerServiceHandler(srv.Server(), routerHandler)
r := router.NewHandler( r := router.NewHandler(
@ -60,9 +54,15 @@ func internalService(routerHandler *handler.Handler) {
iLogger.Logrus().Fatal(err) iLogger.Logrus().Fatal(err)
} }
// Stop the handler
if err := routerHandler.Stop(); err != nil { if err := routerHandler.Stop(); err != nil {
iLogger.Logrus().Fatal(err) iLogger.Logrus().Fatal(err)
} }
// Stop the client/service auth plugin
if err := auth2.ClientAuthRegistry().Stop(); err != nil {
iLogger.Logrus().Fatal(err)
}
} }
func main() { func main() {
@ -70,9 +70,9 @@ func main() {
micro.Server(httpServer.NewServer()), micro.Server(httpServer.NewServer()),
) )
authReg := auth2.RouterAuthRegistry() routerAuthReg := auth2.RouterAuthRegistry()
flags := []cli.Flag{ flags := iLogger.AppendFlags(routerAuthReg.AppendFlags(auth2.ClientAuthRegistry().AppendFlags([]cli.Flag{
// General // General
&cli.BoolFlag{ &cli.BoolFlag{
Name: "router_debugmode", Name: "router_debugmode",
@ -98,9 +98,7 @@ func main() {
EnvVars: []string{"MICRO_ROUTER_LISTEN"}, EnvVars: []string{"MICRO_ROUTER_LISTEN"},
Value: ":8080", Value: ":8080",
}, },
} })))
flags = append(flags, iLogger.Flags()...)
flags = append(flags, authReg.Flags()...)
routerHandler, err := handler.NewHandler() routerHandler, err := handler.NewHandler()
if err != nil { if err != nil {
@ -120,7 +118,7 @@ func main() {
} }
// Initialize the Auth Plugin over RouterAuthRegistry // Initialize the Auth Plugin over RouterAuthRegistry
if err := authReg.Init(c, srv); err != nil { if err := routerAuthReg.Init(c, srv); err != nil {
iLogger.Logrus().Fatal(err) iLogger.Logrus().Fatal(err)
} }
@ -133,7 +131,7 @@ func main() {
r := gin.New() r := gin.New()
// Initalize the Handler // Initalize the Handler
if err := routerHandler.Init(srv, r, authReg.Plugin(), c.Int("router_refresh")); err != nil { if err := routerHandler.Init(srv, r, routerAuthReg.Plugin(), c.Int("router_refresh")); err != nil {
iLogger.Logrus().Fatal(err) iLogger.Logrus().Fatal(err)
} }
@ -158,7 +156,7 @@ func main() {
} }
// Stop the plugin in RouterAuthRegistry // Stop the plugin in RouterAuthRegistry
if err := authReg.Stop(); err != nil { if err := routerAuthReg.Stop(); err != nil {
iLogger.Logrus().Fatal(err) iLogger.Logrus().Fatal(err)
} }

@ -6,5 +6,6 @@ import (
_ "github.com/go-micro/plugins/v4/transport/grpc" _ "github.com/go-micro/plugins/v4/transport/grpc"
_ "github.com/go-micro/plugins/v4/transport/nats" _ "github.com/go-micro/plugins/v4/transport/nats"
_ "jochum.dev/jo-micro/auth2/plugins/client/jwt"
_ "jochum.dev/jo-micro/auth2/plugins/router/jwt" _ "jochum.dev/jo-micro/auth2/plugins/router/jwt"
) )

@ -7,6 +7,7 @@ import (
microLogrus "github.com/go-micro/plugins/v4/logger/logrus" microLogrus "github.com/go-micro/plugins/v4/logger/logrus"
microLogger "go-micro.dev/v4/logger" microLogger "go-micro.dev/v4/logger"
"jochum.dev/jo-micro/router/internal/util"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"github.com/urfave/cli/v2" "github.com/urfave/cli/v2"
@ -15,15 +16,13 @@ import (
var myLogger *logrus.Logger = nil var myLogger *logrus.Logger = nil
var initialized = false var initialized = false
func Flags() []cli.Flag { func AppendFlags(flags []cli.Flag) []cli.Flag {
return []cli.Flag{ return util.AppendFlag(flags, &cli.StringFlag{
&cli.StringFlag{ Name: "router_loglevel",
Name: "loglevel", Value: "info",
Value: "info", Usage: "Logrus log level default 'info', {panic,fatal,error,warn,info,debug,trace} available",
Usage: "Logrus log level default 'info', {panic,fatal,error,warn,info,debug,trace} available", EnvVars: []string{"MICRO_ROUTER_LOG_LEVEL"},
EnvVars: []string{"LOG_LEVEL"}, })
},
}
} }
func Intialized() bool { func Intialized() bool {
@ -43,7 +42,7 @@ func Start(cli *cli.Context) error {
return nil return nil
} }
lvl, err := logrus.ParseLevel(cli.String("loglevel")) lvl, err := logrus.ParseLevel(cli.String("router_loglevel"))
if err != nil { if err != nil {
return err return err
} }

@ -0,0 +1,19 @@
package util
import "github.com/urfave/cli/v2"
func AppendFlag(flags []cli.Flag, flag cli.Flag) []cli.Flag {
has := false
for _, f := range flags {
if f.Names()[0] == flag.Names()[0] {
has = true
break
}
}
if has {
return flags
}
return append(flags, flag)
}
Loading…
Cancel
Save