github.com/hxx258456/ccgo@v0.0.5-0.20230213014102-48b35f46f66f/grpc/interop/server/server.go (about) 1 /* 2 * 3 * Copyright 2014 gRPC authors. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 */ 18 19 // Binary server is an interop server. 20 package main 21 22 import ( 23 "flag" 24 "net" 25 "strconv" 26 27 grpc "github.com/hxx258456/ccgo/grpc" 28 "github.com/hxx258456/ccgo/grpc/credentials" 29 "github.com/hxx258456/ccgo/grpc/credentials/alts" 30 "github.com/hxx258456/ccgo/grpc/grpclog" 31 "github.com/hxx258456/ccgo/grpc/interop" 32 "github.com/hxx258456/ccgo/grpc/testdata" 33 34 testgrpc "github.com/hxx258456/ccgo/grpc/interop/grpc_testing" 35 ) 36 37 var ( 38 useTLS = flag.Bool("use_tls", false, "Connection uses TLS if true, else plain TCP") 39 useALTS = flag.Bool("use_alts", false, "Connection uses ALTS if true (this option can only be used on GCP)") 40 altsHSAddr = flag.String("alts_handshaker_service_address", "", "ALTS handshaker gRPC service address") 41 certFile = flag.String("tls_cert_file", "", "The TLS cert file") 42 keyFile = flag.String("tls_key_file", "", "The TLS key file") 43 port = flag.Int("port", 10000, "The server port") 44 45 logger = grpclog.Component("interop") 46 ) 47 48 func main() { 49 flag.Parse() 50 if *useTLS && *useALTS { 51 logger.Fatalf("use_tls and use_alts cannot be both set to true") 52 } 53 p := strconv.Itoa(*port) 54 lis, err := net.Listen("tcp", ":"+p) 55 if err != nil { 56 logger.Fatalf("failed to listen: %v", err) 57 } 58 var opts []grpc.ServerOption 59 if *useTLS { 60 if *certFile == "" { 61 *certFile = testdata.Path("server1.pem") 62 } 63 if *keyFile == "" { 64 *keyFile = testdata.Path("server1.key") 65 } 66 creds, err := credentials.NewServerTLSFromFile(*certFile, *keyFile) 67 if err != nil { 68 logger.Fatalf("Failed to generate credentials %v", err) 69 } 70 opts = append(opts, grpc.Creds(creds)) 71 } else if *useALTS { 72 altsOpts := alts.DefaultServerOptions() 73 if *altsHSAddr != "" { 74 altsOpts.HandshakerServiceAddress = *altsHSAddr 75 } 76 altsTC := alts.NewServerCreds(altsOpts) 77 opts = append(opts, grpc.Creds(altsTC)) 78 } 79 server := grpc.NewServer(opts...) 80 testgrpc.RegisterTestServiceServer(server, interop.NewTestServer()) 81 server.Serve(lis) 82 }