Skip to content

Commit

Permalink
auth: Wrap backend factories in smart pointers
Browse files Browse the repository at this point in the history
  • Loading branch information
rgacogne committed Apr 4, 2024
1 parent e472f31 commit 5144dfa
Show file tree
Hide file tree
Showing 16 changed files with 26 additions and 32 deletions.
2 changes: 1 addition & 1 deletion docs/appendices/backend-writers-guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ furthermore, only about its A record:
public:
RandomLoader()
{
BackendMakers().report(new RandomFactory);
BackendMakers().report(std::make_unique<RandomFactory>());
g_log << Logger::Info << "[randombackend] This is the random backend version " VERSION " reporting" << endl;
}
};
Expand Down
2 changes: 1 addition & 1 deletion modules/bindbackend/bindbackend2.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1535,7 +1535,7 @@ class Bind2Loader
public:
Bind2Loader()
{
BackendMakers().report(new Bind2Factory);
BackendMakers().report(std::make_unique<Bind2Factory>());
g_log << Logger::Info << "[bind2backend] This is the bind backend version " << VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
Expand Down
2 changes: 1 addition & 1 deletion modules/geoipbackend/geoipbackend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1199,7 +1199,7 @@ class GeoIPLoader
public:
GeoIPLoader()
{
BackendMakers().report(new GeoIPFactory);
BackendMakers().report(std::make_unique<GeoIPFactory>());
g_log << Logger::Info << "[geoipbackend] This is the geoip backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
Expand Down
2 changes: 1 addition & 1 deletion modules/gmysqlbackend/gmysqlbackend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ class gMySQLLoader
//! This reports us to the main UeberBackend class
gMySQLLoader()
{
BackendMakers().report(new gMySQLFactory("gmysql"));
BackendMakers().report(std::make_unique<gMySQLFactory>("gmysql"));
g_log << Logger::Info << "[gmysqlbackend] This is the gmysql backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
Expand Down
2 changes: 1 addition & 1 deletion modules/godbcbackend/godbcbackend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ class gODBCLoader
//! This reports us to the main UeberBackend class
gODBCLoader()
{
BackendMakers().report(new gODBCFactory("godbc"));
BackendMakers().report(std::make_unique<gODBCFactory>("godbc"));
g_log << Logger::Warning << "This is module godbcbackend reporting" << std::endl;
}
};
Expand Down
2 changes: 1 addition & 1 deletion modules/gpgsqlbackend/gpgsqlbackend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ class gPgSQLLoader
//! This reports us to the main UeberBackend class
gPgSQLLoader()
{
BackendMakers().report(new gPgSQLFactory("gpgsql"));
BackendMakers().report(std::make_unique<gPgSQLFactory>("gpgsql"));
g_log << Logger::Info << "[gpgsqlbackend] This is the gpgsql backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
Expand Down
2 changes: 1 addition & 1 deletion modules/gsqlite3backend/gsqlite3backend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ class gSQLite3Loader
//! This reports us to the main UeberBackend class
gSQLite3Loader()
{
BackendMakers().report(new gSQLite3Factory("gsqlite3"));
BackendMakers().report(std::make_unique<gSQLite3Factory>("gsqlite3"));
g_log << Logger::Info << "[gsqlite3] This is the gsqlite3 backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
Expand Down
4 changes: 1 addition & 3 deletions modules/ldapbackend/ldapbackend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -293,12 +293,10 @@ class LdapFactory : public BackendFactory

class LdapLoader
{
LdapFactory factory;

public:
LdapLoader()
{
BackendMakers().report(&factory);
BackendMakers().report(std::make_unique<LdapFactory>());
g_log << Logger::Info << "[ldapbackend] This is the ldap backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
Expand Down
2 changes: 1 addition & 1 deletion modules/lmdbbackend/lmdbbackend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2792,7 +2792,7 @@ class LMDBLoader
public:
LMDBLoader()
{
BackendMakers().report(new LMDBFactory);
BackendMakers().report(std::make_unique<LMDBFactory>());
g_log << Logger::Info << "[lmdbbackend] This is the lmdb backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
Expand Down
2 changes: 1 addition & 1 deletion modules/lua2backend/lua2backend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class Lua2Loader
public:
Lua2Loader()
{
BackendMakers().report(new Lua2Factory);
BackendMakers().report(std::make_unique<Lua2Factory>());

g_log << Logger::Info << "[lua2backend] This is the lua2 backend version " VERSION
#ifndef REPRODUCIBLE
Expand Down
2 changes: 1 addition & 1 deletion modules/pipebackend/pipebackend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -379,7 +379,7 @@ class PipeLoader
public:
PipeLoader()
{
BackendMakers().report(new PipeFactory);
BackendMakers().report(std::make_unique<PipeFactory>());
g_log << Logger::Info << kBackendId << " This is the pipe backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
Expand Down
2 changes: 1 addition & 1 deletion modules/remotebackend/remotebackend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1007,7 +1007,7 @@ class RemoteLoader

RemoteLoader::RemoteLoader()
{
BackendMakers().report(new RemoteBackendFactory);
BackendMakers().report(std::make_unique<RemoteBackendFactory>());
g_log << Logger::Info << kBackendId << " This is the remote backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
Expand Down
2 changes: 1 addition & 1 deletion modules/tinydnsbackend/tinydnsbackend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ class TinyDNSLoader
public:
TinyDNSLoader()
{
BackendMakers().report(new TinyDNSFactory);
BackendMakers().report(std::make_unique<TinyDNSFactory>());
g_log << Logger::Info << "[tinydnsbackend] This is the tinydns backend version " VERSION
#ifndef REPRODUCIBLE
<< " (" __DATE__ " " __TIME__ ")"
Expand Down
10 changes: 3 additions & 7 deletions pdns/dnsbackend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -85,18 +85,14 @@ BackendMakerClass& BackendMakers()
return bmc;
}

void BackendMakerClass::report(BackendFactory* backendFactory)
void BackendMakerClass::report(std::unique_ptr<BackendFactory>&& backendFactory)
{
d_repository[backendFactory->getName()] = backendFactory;
d_repository[backendFactory->getName()] = std::move(backendFactory);
}

void BackendMakerClass::clear()
{
d_instances.clear();
for (auto& repo : d_repository) {
delete repo.second;
repo.second = nullptr;
}
d_repository.clear();
}

Expand Down Expand Up @@ -199,7 +195,7 @@ vector<std::unique_ptr<DNSBackend>> BackendMakerClass::all(bool metadataOnly)
try {
for (const auto& instance : d_instances) {
current = instance.first + instance.second;
auto* repo = d_repository[instance.first];
const auto& repo = d_repository[instance.first];
std::unique_ptr<DNSBackend> made{metadataOnly ? repo->makeMetadataOnly(instance.second) : repo->make(instance.second)};
if (made == nullptr) {
throw PDNSException("Unable to launch backend '" + instance.first + "'");
Expand Down
4 changes: 2 additions & 2 deletions pdns/dnsbackend.hh
Original file line number Diff line number Diff line change
Expand Up @@ -500,7 +500,7 @@ private:
class BackendMakerClass
{
public:
void report(BackendFactory* backendFactory);
void report(std::unique_ptr<BackendFactory>&& backendFactory);
void launch(const string& instr);
vector<std::unique_ptr<DNSBackend>> all(bool metadataOnly = false);
static void load(const string& module);
Expand All @@ -510,7 +510,7 @@ public:

private:
static void load_all();
using d_repository_t = map<string, BackendFactory*>;
using d_repository_t = map<string, std::unique_ptr<BackendFactory>>;
d_repository_t d_repository;
vector<pair<string, string>> d_instances;
};
Expand Down
16 changes: 8 additions & 8 deletions pdns/test-ueberbackend_cc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ BOOST_AUTO_TEST_CASE(test_simple) {
zoneA.d_records->insert(SimpleBackend::SimpleDNSRecord(DNSName("geo.powerdns.com."), QType::A, "192.168.0.42", 60));
SimpleBackend::s_zones[1].insert(zoneA);

BackendMakers().report(new SimpleBackendFactory());
BackendMakers().report(std::make_unique<SimpleBackendFactory>());
BackendMakers().launch("SimpleBackend:1");
UeberBackend::go();

Expand Down Expand Up @@ -580,7 +580,7 @@ BOOST_AUTO_TEST_CASE(test_multi_backends_separate_zones) {
zoneB.d_records->insert(SimpleBackend::SimpleDNSRecord(DNSName("geo.powerdns.org."), QType::AAAA, "2001:db8::42", 60));
SimpleBackend::s_zones[2].insert(zoneB);

BackendMakers().report(new SimpleBackendFactory());
BackendMakers().report(std::make_unique<SimpleBackendFactory>());
BackendMakers().launch("SimpleBackend:1, SimpleBackend:2");
UeberBackend::go();

Expand Down Expand Up @@ -725,7 +725,7 @@ BOOST_AUTO_TEST_CASE(test_multi_backends_overlay) {
zoneB.d_records->insert(SimpleBackend::SimpleDNSRecord(DNSName("geo.powerdns.com."), QType::A, "192.168.0.42", 60));
SimpleBackend::s_zones[2].insert(zoneB);

BackendMakers().report(new SimpleBackendFactory());
BackendMakers().report(std::make_unique<SimpleBackendFactory>());
BackendMakers().launch("SimpleBackend:1, SimpleBackend:2");
UeberBackend::go();

Expand Down Expand Up @@ -852,7 +852,7 @@ BOOST_AUTO_TEST_CASE(test_multi_backends_overlay_name) {
zoneB.d_records->insert(SimpleBackend::SimpleDNSRecord(DNSName("geo.powerdns.com."), QType::A, "192.168.0.42", 60));
SimpleBackend::s_zones[2].insert(zoneB);

BackendMakers().report(new SimpleBackendFactory());
BackendMakers().report(std::make_unique<SimpleBackendFactory>());
BackendMakers().launch("SimpleBackend:1, SimpleBackend:2");
UeberBackend::go();

Expand Down Expand Up @@ -976,7 +976,7 @@ BOOST_AUTO_TEST_CASE(test_child_zone) {
zoneB.d_records->insert(SimpleBackend::SimpleDNSRecord(DNSName("ns1.powerdns.com."), QType::A, "192.0.2.1", 3600));
SimpleBackend::s_zones[2].insert(zoneB);

BackendMakers().report(new SimpleBackendFactory());
BackendMakers().report(std::make_unique<SimpleBackendFactory>());
BackendMakers().launch("SimpleBackend:1, SimpleBackend:2");
UeberBackend::go();

Expand Down Expand Up @@ -1049,8 +1049,8 @@ BOOST_AUTO_TEST_CASE(test_multi_backends_best_soa) {
zoneB.d_records->insert(SimpleBackend::SimpleDNSRecord(DNSName("0.1.0.0.2.ip6.arpa."), QType::SOA, "ns.apnic.net. read-txt-record-of-zone-first-dns-admin.apnic.net. 3005126844 7200 1800 604800 3600", 3600));
SimpleBackend::s_zones[2].insert(zoneB);

BackendMakers().report(new SimpleBackendFactory());
BackendMakers().report(new SimpleBackendBestAuthFactory());
BackendMakers().report(std::make_unique<SimpleBackendFactory>());
BackendMakers().report(std::make_unique<SimpleBackendBestAuthFactory>());
BackendMakers().launch("SimpleBackendBestAuth:1, SimpleBackend:2");
UeberBackend::go();

Expand Down Expand Up @@ -1112,7 +1112,7 @@ BOOST_AUTO_TEST_CASE(test_multi_backends_metadata) {
SimpleBackend::s_zones[2].insert(zoneB);
SimpleBackend::s_metadata[2].insert(SimpleBackend::SimpleMetaData(DNSName("powerdns.org."), "test-data-b", { "value1", "value2"}));

BackendMakers().report(new SimpleBackendFactory());
BackendMakers().report(std::make_unique<SimpleBackendFactory>());
BackendMakers().launch("SimpleBackend:1, SimpleBackend:2");
UeberBackend::go();

Expand Down

0 comments on commit 5144dfa

Please sign in to comment.