| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 | /* * * Copyright 2016 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */#include "test/cpp/util/cli_credentials.h"#include <gflags/gflags.h>DEFINE_bool(    enable_ssl, false,    "Whether to use ssl/tls. Deprecated. Use --channel_creds_type=ssl.");DEFINE_bool(use_auth, false,            "Whether to create default google credentials. Deprecated. Use "            "--channel_creds_type=gdc.");DEFINE_string(    access_token, "",    "The access token that will be sent to the server to authenticate RPCs.");DEFINE_string(    ssl_target, "",    "If not empty, treat the server host name as this for ssl/tls certificate "    "validation.");DEFINE_string(    channel_creds_type, "",    "The channel creds type: insecure, ssl, gdc (Google Default Credentials) "    "or alts.");namespace grpc {namespace testing {grpc::string CliCredentials::GetDefaultChannelCredsType() const {  // Compatibility logic for --enable_ssl.  if (FLAGS_enable_ssl) {    fprintf(stderr,            "warning: --enable_ssl is deprecated. Use "            "--channel_creds_type=ssl.\n");    return "ssl";  }  // Compatibility logic for --use_auth.  if (FLAGS_access_token.empty() && FLAGS_use_auth) {    fprintf(stderr,            "warning: --use_auth is deprecated. Use "            "--channel_creds_type=gdc.\n");    return "gdc";  }  return "insecure";}std::shared_ptr<grpc::ChannelCredentials>CliCredentials::GetChannelCredentials() const {  if (FLAGS_channel_creds_type.compare("insecure") == 0) {    return grpc::InsecureChannelCredentials();  } else if (FLAGS_channel_creds_type.compare("ssl") == 0) {    return grpc::SslCredentials(grpc::SslCredentialsOptions());  } else if (FLAGS_channel_creds_type.compare("gdc") == 0) {    return grpc::GoogleDefaultCredentials();  } else if (FLAGS_channel_creds_type.compare("alts") == 0) {    return grpc::experimental::AltsCredentials(        grpc::experimental::AltsCredentialsOptions());  }  fprintf(stderr,          "--channel_creds_type=%s invalid; must be insecure, ssl, gdc or "          "alts.\n",          FLAGS_channel_creds_type.c_str());  return std::shared_ptr<grpc::ChannelCredentials>();}std::shared_ptr<grpc::CallCredentials> CliCredentials::GetCallCredentials()    const {  if (!FLAGS_access_token.empty()) {    if (FLAGS_use_auth) {      fprintf(stderr,              "warning: use_auth is ignored when access_token is provided.");    }    return grpc::AccessTokenCredentials(FLAGS_access_token);  }  return std::shared_ptr<grpc::CallCredentials>();}std::shared_ptr<grpc::ChannelCredentials> CliCredentials::GetCredentials()    const {  if (FLAGS_channel_creds_type.empty()) {    FLAGS_channel_creds_type = GetDefaultChannelCredsType();  } else if (FLAGS_enable_ssl && FLAGS_channel_creds_type.compare("ssl") != 0) {    fprintf(stderr,            "warning: ignoring --enable_ssl because "            "--channel_creds_type already set to %s.\n",            FLAGS_channel_creds_type.c_str());  } else if (FLAGS_use_auth && FLAGS_channel_creds_type.compare("gdc") != 0) {    fprintf(stderr,            "warning: ignoring --use_auth because "            "--channel_creds_type already set to %s.\n",            FLAGS_channel_creds_type.c_str());  }  // Legacy transport upgrade logic for insecure requests.  if (!FLAGS_access_token.empty() &&      FLAGS_channel_creds_type.compare("insecure") == 0) {    fprintf(stderr,            "warning: --channel_creds_type=insecure upgraded to ssl because "            "an access token was provided.\n");    FLAGS_channel_creds_type = "ssl";  }  std::shared_ptr<grpc::ChannelCredentials> channel_creds =      GetChannelCredentials();  // Composite any call-type credentials on top of the base channel.  std::shared_ptr<grpc::CallCredentials> call_creds = GetCallCredentials();  return (channel_creds == nullptr || call_creds == nullptr)             ? channel_creds             : grpc::CompositeChannelCredentials(channel_creds, call_creds);}const grpc::string CliCredentials::GetCredentialUsage() const {  return "    --enable_ssl             ; Set whether to use ssl (deprecated)\n"         "    --use_auth               ; Set whether to create default google"         " credentials\n"         "    --access_token           ; Set the access token in metadata,"         " overrides --use_auth\n"         "    --ssl_target             ; Set server host for ssl validation\n"         "    --channel_creds_type     ; Set to insecure, ssl, gdc, or alts\n";}const grpc::string CliCredentials::GetSslTargetNameOverride() const {  bool use_ssl = FLAGS_channel_creds_type.compare("ssl") == 0 ||                 FLAGS_channel_creds_type.compare("gdc") == 0;  return use_ssl ? FLAGS_ssl_target : "";}}  // namespace testing}  // namespace grpc
 |