@@ -55,6 +55,7 @@ import (
55
55
"github.com/spf13/cobra"
56
56
"golang.org/x/oauth2"
57
57
"google.golang.org/grpc"
58
+ "google.golang.org/grpc/credentials"
58
59
"google.golang.org/grpc/credentials/insecure"
59
60
"google.golang.org/grpc/metadata"
60
61
"google.golang.org/grpc/reflection"
@@ -98,6 +99,10 @@ func createServerCmd(execer fakeruntime.Execer, httpServer server.HTTPServer) (c
98
99
99
100
// gc related flags
100
101
flags .IntVarP (& opt .gcPercent , "gc-percent" , "" , 100 , "The GC percent of Go" )
102
+ //grpc_tls
103
+ flags .BoolVarP (& opt .tls , "tls-grpc" , "" , false , "Enable TLS mode. Set to true to enable TLS. Alow SAN certificates" )
104
+ flags .StringVarP (& opt .tlsCert , "cert-file" , "" , "" ,"The path to the certificate file, Alow SAN certificates" )
105
+ flags .StringVarP (& opt .tlsKey , "key-file" , "" , "" , "The path to the key file, Alow SAN certificates" )
101
106
102
107
c .Flags ().MarkHidden ("dry-run" )
103
108
c .Flags ().MarkHidden ("gc-percent" )
@@ -139,6 +144,9 @@ type serverOption struct {
139
144
140
145
// inner fields, not as command flags
141
146
provider oauth.OAuthProvider
147
+ tls bool
148
+ tlsCert string
149
+ tlsKey string
142
150
}
143
151
144
152
func (o * serverOption ) preRunE (cmd * cobra.Command , args []string ) (err error ) {
@@ -170,7 +178,15 @@ func (o *serverOption) preRunE(cmd *cobra.Command, args []string) (err error) {
170
178
171
179
grpcOpts = append (grpcOpts , oauth .NewAuthInterceptor (o .oauthGroup ))
172
180
}
173
-
181
+ if o .tls {
182
+ if o .tlsCert != "" && o .tlsKey != "" {
183
+ creds , err := credentials .NewServerTLSFromFile (o .tlsCert , o .tlsKey )
184
+ if err != nil {
185
+ return fmt .Errorf ("failed to load credentials: %v" , err )
186
+ }
187
+ grpcOpts = append (grpcOpts , grpc .Creds (creds ))
188
+ }
189
+ }
174
190
if o .dryRun {
175
191
o .gRPCServer = & fakeGRPCServer {}
176
192
} else {
@@ -269,9 +285,19 @@ func (o *serverOption) runE(cmd *cobra.Command, args []string) (err error) {
269
285
gRPCServerAddr := fmt .Sprintf ("127.0.0.1:%s" , gRPCServerPort )
270
286
271
287
mux := runtime .NewServeMux (runtime .WithMetadata (server .MetadataStoreFunc ))
272
- err = errors .Join (
273
- server .RegisterRunnerHandlerFromEndpoint (ctx , mux , gRPCServerAddr , []grpc.DialOption {grpc .WithTransportCredentials (insecure .NewCredentials ())}),
274
- server .RegisterMockHandlerFromEndpoint (ctx , mux , gRPCServerAddr , []grpc.DialOption {grpc .WithTransportCredentials (insecure .NewCredentials ())}))
288
+ if o .tls {
289
+ creds ,err := credentials .NewClientTLSFromFile (o .tlsCert ,"localhost" )
290
+ if err != nil {
291
+ return fmt .Errorf ("failed to load credentials: %v" , err )
292
+ }
293
+ err = errors .Join (
294
+ server .RegisterRunnerHandlerFromEndpoint (ctx , mux , gRPCServerAddr , []grpc.DialOption {grpc .WithTransportCredentials (creds )}),
295
+ server .RegisterMockHandlerFromEndpoint (ctx , mux , gRPCServerAddr , []grpc.DialOption {grpc .WithTransportCredentials (creds )}))
296
+ }else {
297
+ err = errors .Join (
298
+ server .RegisterRunnerHandlerFromEndpoint (ctx , mux , gRPCServerAddr , []grpc.DialOption {grpc .WithTransportCredentials (insecure .NewCredentials ())}),
299
+ server .RegisterMockHandlerFromEndpoint (ctx , mux , gRPCServerAddr , []grpc.DialOption {grpc .WithTransportCredentials (insecure .NewCredentials ())}))
300
+ }
275
301
if err == nil {
276
302
mux .HandlePath (http .MethodGet , "/" , frontEndHandlerWithLocation (o .consolePath ))
277
303
mux .HandlePath (http .MethodGet , "/assets/{asset}" , frontEndHandlerWithLocation (o .consolePath ))
0 commit comments