Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions cmd/server/main.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package main

import (
"github.com/structx/teapot"
teafx "github.com/structx/teapot/adapter/fx"
"go.uber.org/fx"
"go.uber.org/fx/fxevent"
"soft.structx.io/dino/auth"
"soft.structx.io/dino/database"
"soft.structx.io/dino/database/migrate"
Expand All @@ -22,8 +25,10 @@ import (
)

var opts = fx.Options(
setup.Module, // server config
logging.Module, // uber/zap logger
setup.Module, // server config
logging.Module, fx.WithLogger(func(l *teapot.Logger) fxevent.Logger {
return teafx.New(l)
}),
database.Module, // pgx connector
auth.Module, // jwt authenticator
verifier.Module, // jwt verifier
Expand Down
18 changes: 9 additions & 9 deletions database/migrate/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,37 +8,37 @@ import (
"github.com/golang-migrate/migrate/v4"
pgx "github.com/golang-migrate/migrate/v4/database/pgx/v5"
"github.com/golang-migrate/migrate/v4/source/iofs"
"github.com/structx/teapot"
"go.uber.org/fx"
"go.uber.org/zap"
"soft.structx.io/dino/setup"
)

// Params
type Params struct {
fx.In

Logger *zap.Logger
Logger *teapot.Logger

Cfg *setup.DB

EmbedFS []embed.FS `group:"migrations"`
}

type zapAdapter struct {
logger *zap.Logger
type teaAdapter struct {
logger *teapot.Logger
}

// Printf implements migrate.Logger.
func (z *zapAdapter) Printf(format string, v ...interface{}) {
z.logger.Info(format, zap.Any("v", v))
func (t *teaAdapter) Printf(format string, v ...interface{}) {
t.logger.Info(format, teapot.Any("v", v))
}

// Verbose implements migrate.Logger.
func (z *zapAdapter) Verbose() bool {
func (t *teaAdapter) Verbose() bool {
return true
}

var _ migrate.Logger = (*zapAdapter)(nil)
var _ migrate.Logger = (*teaAdapter)(nil)

// Module
var Module = fx.Module("database_migrate", fx.Invoke(invokeModule))
Expand All @@ -65,7 +65,7 @@ func invokeModule(p Params) error {
return fmt.Errorf("migrate.NewWithInstance: %w", err)
}

m.Log = &zapAdapter{logger: p.Logger.Named("go_migrate")}
m.Log = &teaAdapter{logger: p.Logger}

if err := m.Up(); err != nil && !errors.Is(err, migrate.ErrNoChange) {
return fmt.Errorf("m.Up: %w", err)
Expand Down
4 changes: 2 additions & 2 deletions database/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import (
"github.com/jackc/pgx/v5"
"github.com/jackc/pgx/v5/pgconn"
"github.com/jackc/pgx/v5/pgxpool"
"github.com/structx/teapot"
"go.uber.org/fx"
"go.uber.org/zap"
"soft.structx.io/dino/setup"
)

Expand All @@ -34,7 +34,7 @@ type DBTX interface {
type Params struct {
fx.In

Logger *zap.Logger
Logger *teapot.Logger

Lc fx.Lifecycle

Expand Down
10 changes: 5 additions & 5 deletions gateway/interceptors/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,25 @@ package interceptors
import (
"context"

"go.uber.org/zap"
"github.com/structx/teapot"
"google.golang.org/grpc"
"soft.structx.io/dino/gateway"
)

type loggerInterceptor struct {
logger *zap.Logger
l *teapot.Logger
}

func newLoggerInterceptor(logger *zap.Logger) *loggerInterceptor {
func newLoggerInterceptor(logger *teapot.Logger) *loggerInterceptor {
return &loggerInterceptor{
logger: logger.Named("logging_interceptor"),
l: logger,
}
}

// UnaryInterceptor
func (li *loggerInterceptor) UnaryInterceptor() gateway.UnaryInterceptor {
return func(ctx context.Context, req any, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp any, err error) {
li.logger.Debug("gRPC handler", zap.String("full_method", info.FullMethod))
li.l.Debug("gRPC handler", teapot.String("full_method", info.FullMethod))
resp, err = handler(ctx, req)
if err != nil {
return nil, err
Expand Down
4 changes: 2 additions & 2 deletions gateway/interceptors/module.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package interceptors

import (
"github.com/structx/teapot"
"go.uber.org/fx"
"go.uber.org/zap"
"soft.structx.io/dino/gateway"
)

// Params
type Params struct {
fx.In

Logger *zap.Logger
Logger *teapot.Logger
}

// Result
Expand Down
22 changes: 11 additions & 11 deletions gateway/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,13 @@ import (
"net/http"
"time"

"github.com/structx/teapot"
"go.uber.org/fx"
"go.uber.org/multierr"
"go.uber.org/zap"
"go.uber.org/zap/zapgrpc"
"golang.org/x/net/http2"
"golang.org/x/net/http2/h2c"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/grpclog"
"google.golang.org/grpc/status"
"soft.structx.io/dino/setup"

Expand Down Expand Up @@ -58,7 +56,7 @@ type Params struct {

Lc fx.Lifecycle

Logger *zap.Logger
Logger *teapot.Logger

ServerConfig *setup.Server
ProxyConfig *setup.Proxy
Expand All @@ -78,7 +76,7 @@ func invokeModule(p Params) error {

hostAndPort := net.JoinHostPort(p.ServerConfig.Host, p.ServerConfig.Port)

p.Logger.Info("num transports", zap.Int("len", len(p.Transports)))
p.Logger.Info("num transports", teapot.Int("len", len(p.Transports)))

gs := grpc.NewServer()
for _, tr := range p.Transports {
Expand All @@ -88,8 +86,10 @@ func invokeModule(p Params) error {
healthcheck := health.NewServer()
healthpb.RegisterHealthServer(gs, healthcheck)

rpcLogger := zapgrpc.NewLogger(p.Logger)
grpclog.SetLoggerV2(rpcLogger)
// TODO
// implement teapot grpc adapter
// rpcLogger := zapgrpc.NewLogger(p.Logger)
// grpclog.SetLoggerV2(rpcLogger)

mux := http.NewServeMux()
mux.HandleFunc("/", p.Proxy.ServeHTTP)
Expand Down Expand Up @@ -118,17 +118,17 @@ func invokeModule(p Params) error {

p.Lc.Append(fx.Hook{
OnStart: func(ctx context.Context) error {
p.Logger.Info("start http/1 proxy server", zap.String("server_addr", h1.Addr))
p.Logger.Info("start http/1 proxy server", teapot.String("server_addr", h1.Addr))
go func() {
if err := h1.ListenAndServe(); err != nil && errors.Is(err, http.ErrServerClosed) {
p.Logger.Fatal("start http/1 proxy server", zap.Error(err))
p.Logger.Fatal("start http/1 proxy server", teapot.Error(err))
}
}()

p.Logger.Info("start hls server", zap.String("server_addr", hls.Addr))
p.Logger.Info("start hls server", teapot.String("server_addr", hls.Addr))
go func() {
if err := hls.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
p.Logger.Fatal("unable to start hls server", zap.Error(err))
p.Logger.Fatal("unable to start hls server", teapot.Error(err))
}
}()

Expand Down
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ require (
github.com/sethvargo/go-envconfig v1.3.0
github.com/spf13/cobra v1.10.2
github.com/stretchr/testify v1.11.1
github.com/structx/teapot v0.0.2
github.com/structx/teapot/adapter/fx v0.0.0-20260106030448-6f5af56058f3
go.uber.org/fx v1.24.0
go.uber.org/mock v0.6.0
go.uber.org/multierr v1.11.0
Expand Down
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,10 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
github.com/structx/teapot v0.0.2 h1:Hq2oxcuYuhUgsNP47PkETOxwO7EpkfB/0srt2ZtVVdc=
github.com/structx/teapot v0.0.2/go.mod h1:2Okp2a8rEEbRWxrEf9zwGPeafR6s9iUGOH6699wLVnY=
github.com/structx/teapot/adapter/fx v0.0.0-20260106030448-6f5af56058f3 h1:Gnvi0gvAOQVQHVH8dPxwH8OS5SF4+TnyByXpxIIlMGk=
github.com/structx/teapot/adapter/fx v0.0.0-20260106030448-6f5af56058f3/go.mod h1:shtQXZlyUJ3LWkvoFNYQbMI8GqV6HcQTRdvPV5JSvB8=
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 h1:ssfIgGNANqpVFCndZvcuyKbl0g+UAVcbBcqGkG28H0Y=
Expand Down
20 changes: 10 additions & 10 deletions internal/routes/grpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"context"
"time"

"go.uber.org/zap"
"github.com/structx/teapot"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"google.golang.org/protobuf/types/known/timestamppb"
Expand All @@ -14,20 +14,20 @@ import (
type routeServer struct {
pb.UnimplementedRouteServiceServer

log *zap.Logger
log *teapot.Logger
svc Service
}

func newRouteServer(logger *zap.Logger, routeService Service) pb.RouteServiceServer {
func newRouteServer(logger *teapot.Logger, routeService Service) pb.RouteServiceServer {
return &routeServer{
log: logger.Named("route_server"),
log: logger,
svc: routeService,
}
}

// CreateRoute
func (rs *routeServer) CreateRoute(ctx context.Context, in *pb.CreateRouteRequest) (*pb.CreateRouteResponse, error) {
rs.log.Debug("CreateRoute", zap.Any("request", in))
rs.log.Debug("CreateRoute", teapot.Any("request", in))
args := RouteCreate{
Tunnel: in.Create.Tunnel,
Hostname: in.Create.Hostname,
Expand All @@ -38,7 +38,7 @@ func (rs *routeServer) CreateRoute(ctx context.Context, in *pb.CreateRouteReques

route, err := rs.svc.Create(ctx, args)
if err != nil {
rs.log.Error("create route", zap.Error(err))
rs.log.Error("create route", teapot.Error(err))
return nil, status.Error(codes.Internal, codes.Internal.String())
}

Expand All @@ -49,7 +49,7 @@ func (rs *routeServer) CreateRoute(ctx context.Context, in *pb.CreateRouteReques
func (rs *routeServer) DeleteRoute(ctx context.Context, in *pb.DeleteRouteRequest) (*pb.DeleteRouteResponse, error) {
err := rs.svc.Delete(ctx, in.Hostname)
if err != nil {
rs.log.Error("delete route", zap.Error(err))
rs.log.Error("delete route", teapot.Error(err))
return nil, status.Error(codes.Internal, codes.Internal.String())
}
return newDeleteRouteResponse(), nil
Expand All @@ -63,7 +63,7 @@ func newDeleteRouteResponse() *pb.DeleteRouteResponse {
func (rs *routeServer) GetRoute(ctx context.Context, in *pb.GetRouteRequest) (*pb.GetRouteResponse, error) {
route, err := rs.svc.Get(ctx, in.Hostname)
if err != nil {
rs.log.Error("get route", zap.Error(err))
rs.log.Error("get route", teapot.Error(err))
return nil, status.Error(codes.Internal, codes.Internal.String())
}
return newGetRouteResponse(route), nil
Expand All @@ -77,7 +77,7 @@ func (rs *routeServer) ListRoutes(ctx context.Context, in *pb.ListRoutesRequest)
Offset: in.Offset,
})
if err != nil {
rs.log.Error("list routes", zap.Error(err))
rs.log.Error("list routes", teapot.Error(err))
return nil, status.Error(codes.Internal, codes.Internal.String())
}
return newListRoutesResponse(partials), err
Expand All @@ -97,7 +97,7 @@ func (rs *routeServer) UpdateRoute(ctx context.Context, in *pb.UpdateRouteReques

route, err := rs.svc.Update(ctx, args)
if err != nil {
rs.log.Error("update route", zap.Error(err))
rs.log.Error("update route", teapot.Error(err))
return nil, status.Error(codes.Internal, codes.Internal.String())
}

Expand Down
4 changes: 2 additions & 2 deletions internal/routes/module.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package routes

import (
"github.com/structx/teapot"
"go.uber.org/fx"
"go.uber.org/zap"
"soft.structx.io/dino/database"
"soft.structx.io/dino/gateway"
pb "soft.structx.io/dino/pb/routes/v1"
Expand All @@ -13,7 +13,7 @@ import (
type Params struct {
fx.In

Logger *zap.Logger
Logger *teapot.Logger

DBTX database.DBTX

Expand Down
Loading