diff options
Diffstat (limited to 'src/buildtool/main/main.cpp')
-rw-r--r-- | src/buildtool/main/main.cpp | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp index 0c9f047a..cf98bcf3 100644 --- a/src/buildtool/main/main.cpp +++ b/src/buildtool/main/main.cpp @@ -36,6 +36,7 @@ #include "src/buildtool/main/exit_codes.hpp" #include "src/buildtool/main/install_cas.hpp" #ifndef BOOTSTRAP_BUILD_TOOL +#include "src/buildtool/auth/authentication.hpp" #include "src/buildtool/graph_traverser/graph_traverser.hpp" #include "src/buildtool/progress_reporting/base_progress_reporter.hpp" #endif @@ -78,6 +79,7 @@ struct CommandLineArguments { RebuildArguments rebuild; FetchArguments fetch; GraphArguments graph; + AuthArguments auth; }; /// \brief Setup arguments for sub command "just describe". @@ -110,6 +112,7 @@ auto SetupBuildCommandArguments( SetupLogArguments(app, &clargs->log); SetupAnalysisArguments(app, &clargs->analysis); SetupEndpointArguments(app, &clargs->endpoint); + SetupAuthArguments(app, &clargs->auth); SetupBuildArguments(app, &clargs->build); SetupCompatibilityArguments(app); } @@ -136,6 +139,7 @@ auto SetupInstallCasCommandArguments( gsl::not_null<CommandLineArguments*> const& clargs) { SetupCompatibilityArguments(app); SetupEndpointArguments(app, &clargs->endpoint); + SetupAuthArguments(app, &clargs->auth); SetupFetchArguments(app, &clargs->fetch); SetupLogArguments(app, &clargs->log); } @@ -147,6 +151,7 @@ auto SetupTraverseCommandArguments( SetupCommonArguments(app, &clargs->common); SetupLogArguments(app, &clargs->log); SetupEndpointArguments(app, &clargs->endpoint); + SetupAuthArguments(app, &clargs->auth); SetupGraphArguments(app, &clargs->graph); // instead of analysis SetupBuildArguments(app, &clargs->build); SetupStageArguments(app, &clargs->stage); @@ -239,6 +244,7 @@ void SetupLogging(LogArguments const& clargs) { #ifndef BOOTSTRAP_BUILD_TOOL void SetupExecutionConfig(EndpointArguments const& eargs, + AuthArguments const& authargs, BuildArguments const& bargs, RebuildArguments const& rargs) { using LocalConfig = LocalExecutionConfig; @@ -276,6 +282,39 @@ void SetupExecutionConfig(EndpointArguments const& eargs, std::exit(kExitFailure); } } + auto use_tls = false; + if (authargs.tls_ca_cert) { + use_tls = true; + if (not Auth::TLS::SetCACertificate(*authargs.tls_ca_cert)) { + Logger::Log(LogLevel::Error, + "Could not read '{}' certificate.", + authargs.tls_ca_cert->string()); + std::exit(kExitFailure); + } + } + if (authargs.tls_client_cert) { + use_tls = true; + if (not Auth::TLS::SetClientCertificate(*authargs.tls_client_cert)) { + Logger::Log(LogLevel::Error, + "Could not read '{}' certificate.", + authargs.tls_client_cert->string()); + std::exit(kExitFailure); + } + } + if (authargs.tls_client_key) { + use_tls = true; + if (not Auth::TLS::SetClientKey(*authargs.tls_client_key)) { + Logger::Log(LogLevel::Error, + "Could not read '{}' key.", + authargs.tls_client_key->string()); + std::exit(kExitFailure); + } + } + if (use_tls) { + if (not Auth::TLS::Validate()) { + std::exit(kExitFailure); + } + } } void SetupHashFunction() { @@ -1097,8 +1136,10 @@ auto main(int argc, char* argv[]) -> int { } #ifndef BOOTSTRAP_BUILD_TOOL SetupHashFunction(); - SetupExecutionConfig( - arguments.endpoint, arguments.build, arguments.rebuild); + SetupExecutionConfig(arguments.endpoint, + arguments.auth, + arguments.build, + arguments.rebuild); #endif auto jobs = arguments.build.build_jobs > 0 ? arguments.build.build_jobs |