summaryrefslogtreecommitdiff
path: root/src/buildtool/main/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/main/main.cpp')
-rw-r--r--src/buildtool/main/main.cpp45
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