look up hook URLs dynamically

This commit is contained in:
Grant Limberg 2023-08-07 16:42:23 -07:00
parent 0dc92c2d7b
commit 88b96265d7
No known key found for this signature in database
GPG key ID: 8F2F97D3BE8D7735
2 changed files with 46 additions and 8 deletions

View file

@ -1425,14 +1425,7 @@ void PostgreSQL::commitThread()
w.commit();
if (_smee != NULL && isNewMember) {
// TODO: Look up hook URL for network owner organization
smeeclient::smee_client_notify_network_joined(
_smee,
networkId.c_str(),
memberId.c_str(),
"http://hookcatcher:9999/hook",
NULL
);
notifyNewMember(networkId, memberId);
}
const uint64_t nwidInt = OSUtils::jsonIntHex(config["nwid"], 0ULL);
@ -1678,6 +1671,50 @@ void PostgreSQL::commitThread()
fprintf(stderr, "%s commitThread finished\n", _myAddressStr.c_str());
}
void PostgreSQL::notifyNewMember(const std::string &networkID, const std::string &memberID) {
// TODO: Look up hook URL for network owner organization
std::shared_ptr<PostgresConnection> c;
try {
c = _pool->borrow();
} catch (std::exception &e) {
fprintf(stderr, "ERROR: %s\n", e.what());
return;
}
try {
pqxx::work w(*c->c);
// TODO: Add check for active subscription
auto res = w.exec_params("SELECT h.hook_url "
"FROM ztc_hook h "
"INNER JOIN ztc_org o "
"ON o.org_id = h.org_id "
"INNER JOIN ztc_user u "
"ON u.id = o.owner_id "
"INNER JOIN ztc_network n "
"ON n.owner_id = u.id "
"WHERE n.id = $1", networkID);
for (auto const &row: res) {
std::string hookURL = row[0].as<std::string>();
smeeclient::smee_client_notify_network_joined(
_smee,
networkID.c_str(),
memberID.c_str(),
hookURL.c_str(),
NULL
);
}
_pool->unborrow(c);
} catch (std::exception &e) {
fprintf(stderr, "ERROR: %s\n", e.what());
return;
}
}
void PostgreSQL::onlineNotificationThread()
{
waitForReady();

View file

@ -149,6 +149,7 @@ private:
std::unordered_map< std::pair<uint64_t,uint64_t>,std::pair<int64_t,InetAddress>,_PairHasher > &lastOnline);
void configureSmee();
void notifyNewMember(const std::string &networkID, const std::string &memberID);
enum OverrideMode {
ALLOW_PGBOUNCER_OVERRIDE = 0,