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: 8 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,11 @@ console/atest-desktop/atest.exe
console/atest-desktop/coverage
atest-store-git
.db
.marscode/
.marscode/
e2e/test.pem
e2e/test.csr
e2e/test.key
e2e/server.srl
e2e/server.key
e2e/server.csr
e2e/server.crt
41 changes: 24 additions & 17 deletions cmd/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,8 @@ func createServerCmd(execer fakeruntime.Execer, httpServer server.HTTPServer) (c

// gc related flags
flags.IntVarP(&opt.gcPercent, "gc-percent", "", 100, "The GC percent of Go")
//grpc_tls
flags.BoolVarP(&opt.tls, "tls-grpc", "", false, "Enable TLS mode. Set to true to enable TLS. Alow SAN certificates")

flags.BoolVarP(&opt.tls, "tls", "", false, "Enable TLS mode. Set to true to enable TLS. Alow SAN certificates")
flags.StringVarP(&opt.tlsCert, "cert-file", "", "", "The path to the certificate file, Alow SAN certificates")
flags.StringVarP(&opt.tlsKey, "key-file", "", "", "The path to the key file, Alow SAN certificates")

Expand All @@ -124,8 +124,12 @@ type serverOption struct {
httpServer server.HTTPServer
execer fakeruntime.Execer

port int
httpPort int
port int
httpPort int
tls bool
tlsCert string
tlsKey string

printProto bool
localStorage []string
consolePath string
Expand All @@ -148,17 +152,12 @@ type serverOption struct {
mockConfig []string
mockPrefix string

gcPercent int

dryRun bool

gcPercent int
dryRun bool
grpcMaxRecvMsgSize int

// inner fields, not as command flags
provider oauth.OAuthProvider
tls bool
tlsCert string
tlsKey string
}

func (o *serverOption) preRunE(cmd *cobra.Command, args []string) (err error) {
Expand Down Expand Up @@ -190,15 +189,20 @@ func (o *serverOption) preRunE(cmd *cobra.Command, args []string) (err error) {

grpcOpts = append(grpcOpts, atestoauth.NewAuthInterceptor(o.oauthGroup))
}

if o.tls {
if o.tlsCert != "" && o.tlsKey != "" {
creds, err := credentials.NewServerTLSFromFile(o.tlsCert, o.tlsKey)
if err != nil {
return fmt.Errorf("failed to load credentials: %v", err)
}
grpcOpts = append(grpcOpts, grpc.Creds(creds))
} else {
err = fmt.Errorf("both --cert-file and --key-file flags are required when --tls is enabled")
return
}
}

if o.dryRun {
o.gRPCServer = &fakeGRPCServer{}
} else {
Expand Down Expand Up @@ -278,7 +282,7 @@ func (o *serverOption) runE(cmd *cobra.Command, args []string) (err error) {
mockWriter = mock.NewInMemoryReader("")
}

dynamicMockServer := mock.NewInMemoryServer(cmd.Context(), 0)
dynamicMockServer := mock.NewInMemoryServer(cmd.Context(), 0).WithTLS(o.tlsCert, o.tlsKey)
mockServerController := server.NewMockServerController(mockWriter, dynamicMockServer, o.httpPort)

clean := make(chan os.Signal, 1)
Expand Down Expand Up @@ -330,15 +334,18 @@ func (o *serverOption) runE(cmd *cobra.Command, args []string) (err error) {
gRPCServerAddr := fmt.Sprintf("127.0.0.1:%s", gRPCServerPort)

if o.tls {
creds, err := credentials.NewClientTLSFromFile(o.tlsCert, "localhost")
var creds credentials.TransportCredentials
creds, err = credentials.NewClientTLSFromFile(o.tlsCert, "127.0.0.1")
if err != nil {
return fmt.Errorf("failed to load credentials: %v", err)
}

opts := []grpc.DialOption{grpc.WithTransportCredentials(creds)}
err = errors.Join(
server.RegisterRunnerHandlerFromEndpoint(ctx, mux, gRPCServerAddr, []grpc.DialOption{grpc.WithTransportCredentials(creds)}),
server.RegisterMockHandlerFromEndpoint(ctx, mux, gRPCServerAddr, []grpc.DialOption{grpc.WithTransportCredentials(creds)}),
server.RegisterThemeExtensionHandlerFromEndpoint(ctx, mux, gRPCServerAddr, []grpc.DialOption{grpc.WithTransportCredentials(creds)}),
server.RegisterDataServerHandlerFromEndpoint(ctx, mux, gRPCServerAddr, []grpc.DialOption{grpc.WithTransportCredentials(creds)}))
server.RegisterRunnerHandlerFromEndpoint(ctx, mux, gRPCServerAddr, opts),
server.RegisterMockHandlerFromEndpoint(ctx, mux, gRPCServerAddr, opts),
server.RegisterThemeExtensionHandlerFromEndpoint(ctx, mux, gRPCServerAddr, opts),
server.RegisterDataServerHandlerFromEndpoint(ctx, mux, gRPCServerAddr, opts))
} else {
dialOption := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials()),
grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(math.MaxInt))}
Expand Down
Loading
Loading