Skip to content

Commit

Permalink
Backup provider
Browse files Browse the repository at this point in the history
Summary:
Let us set a backup provider in case the main provider (if any) fails to obtain the client certificates.

This could also fail too, but this one is meant to be set and controlled by FlipperKit.

Reviewed By: antonk52

Differential Revision: D54899819

fbshipit-source-id: 364698a063af3c79bfbbb2c29ba7250adfb42700
  • Loading branch information
lblasa authored and facebook-github-bot committed Mar 14, 2024
1 parent 488418c commit f0f2e20
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 1 deletion.
5 changes: 5 additions & 0 deletions xplat/Flipper/FlipperClient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,11 @@ void FlipperClient::setCertificateProvider(
socket_->setCertificateProvider(provider);
}

void FlipperClient::setBackupCertificateProvider(
const std::shared_ptr<FlipperCertificateProvider> provider) {
socket_->setBackupCertificateProvider(provider);
}

std::shared_ptr<FlipperCertificateProvider>
FlipperClient::getCertificateProvider() {
return socket_->getCertificateProvider();
Expand Down
4 changes: 4 additions & 0 deletions xplat/Flipper/FlipperClient.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,10 @@ class FlipperClient : public FlipperConnectionManager::Callbacks {

void setCertificateProvider(
const std::shared_ptr<FlipperCertificateProvider> provider);

void setBackupCertificateProvider(
const std::shared_ptr<FlipperCertificateProvider> provider);

std::shared_ptr<FlipperCertificateProvider> getCertificateProvider();

std::shared_ptr<FlipperPlugin> getPlugin(const std::string& identifier);
Expand Down
10 changes: 9 additions & 1 deletion xplat/Flipper/FlipperConnectionManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,19 @@ class FlipperConnectionManager {
virtual void stop() = 0;

/**
Sets the Auth token to be used for hitting an Intern end point
Set a certificate provider to be used to obtain the client certificate needed
to establish the connection.
*/
virtual void setCertificateProvider(
const std::shared_ptr<FlipperCertificateProvider> provider) = 0;

/**
Set an alternate certificate provider to be used in case the primary provider
fails to obtain the client certificate needed to establish the connection.
*/
virtual void setBackupCertificateProvider(
const std::shared_ptr<FlipperCertificateProvider> provider) = 0;

/**
Gets the certificate provider
*/
Expand Down
6 changes: 6 additions & 0 deletions xplat/Flipper/FlipperConnectionManagerImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,12 @@ void FlipperConnectionManagerImpl::setCertificateProvider(
certificateProvider_ = provider;
};

void FlipperConnectionManagerImpl::setBackupCertificateProvider(
const std::shared_ptr<FlipperCertificateProvider> provider) {
log_debug(LogLevel::Info, "[conn] Set backup certificate provider");
backupCertificateProvider_ = provider;
}

std::shared_ptr<FlipperCertificateProvider>
FlipperConnectionManagerImpl::getCertificateProvider() {
return certificateProvider_;
Expand Down
7 changes: 7 additions & 0 deletions xplat/Flipper/FlipperConnectionManagerImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,13 @@ class FlipperConnectionManagerImpl : public FlipperConnectionManager {
std::unique_ptr<FlipperResponder> responder) override;

void reconnect();

void setCertificateProvider(
const std::shared_ptr<FlipperCertificateProvider> provider) override;

void setBackupCertificateProvider(
const std::shared_ptr<FlipperCertificateProvider> provider) override;

std::shared_ptr<FlipperCertificateProvider> getCertificateProvider() override;

private:
Expand All @@ -59,6 +64,8 @@ class FlipperConnectionManagerImpl : public FlipperConnectionManager {
bool isConnectionTrusted_ = false;

std::shared_ptr<FlipperCertificateProvider> certificateProvider_ = nullptr;
std::shared_ptr<FlipperCertificateProvider> backupCertificateProvider_ =
nullptr;

Callbacks* callbacks_;

Expand Down
3 changes: 3 additions & 0 deletions xplat/FlipperTestLib/FlipperConnectionManagerMock.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ class FlipperConnectionManagerMock : public FlipperConnectionManager {
void setCertificateProvider(
const std::shared_ptr<FlipperCertificateProvider> provider) override{};

void setBackupCertificateProvider(
const std::shared_ptr<FlipperCertificateProvider> provider) override{};

std::shared_ptr<FlipperCertificateProvider> getCertificateProvider()
override {
return nullptr;
Expand Down

0 comments on commit f0f2e20

Please sign in to comment.