mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-01-18 18:56:24 +00:00
simplify hook firing
only need network and member IDs
This commit is contained in:
parent
60fb8c941a
commit
d322f332e8
@ -1690,48 +1690,10 @@ void PostgreSQL::commitThread()
|
||||
}
|
||||
|
||||
void PostgreSQL::notifyNewMember(const std::string &networkID, const std::string &memberID) {
|
||||
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_id "
|
||||
"FROM ztc_hook h "
|
||||
"INNER JOIN ztc_hook_hook_types ht "
|
||||
"ON ht.hook_id = h.hook_id "
|
||||
"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 "
|
||||
"AND ht.hook_type = 'NETWORK_JOIN'", 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;
|
||||
}
|
||||
memberID.c_str());
|
||||
}
|
||||
|
||||
void PostgreSQL::onlineNotificationThread()
|
||||
|
@ -64,8 +64,6 @@ pub extern "C" fn smee_client_notify_network_joined(
|
||||
smee_instance: *mut SmeeClient,
|
||||
network_id: *const c_char,
|
||||
member_id: *const c_char,
|
||||
hook_id: *const c_char,
|
||||
src_ip: *const c_char,
|
||||
) -> bool {
|
||||
let nwid = unsafe {
|
||||
assert!(!network_id.is_null());
|
||||
@ -77,25 +75,12 @@ pub extern "C" fn smee_client_notify_network_joined(
|
||||
CStr::from_ptr(member_id).to_str().unwrap()
|
||||
};
|
||||
|
||||
let hid = unsafe {
|
||||
assert!(!hook_id.is_null());
|
||||
CStr::from_ptr(hook_id).to_str().unwrap()
|
||||
};
|
||||
|
||||
let src = unsafe {
|
||||
if src_ip.is_null() {
|
||||
None
|
||||
} else {
|
||||
Some(CStr::from_ptr(src_ip).to_str().unwrap())
|
||||
}
|
||||
};
|
||||
|
||||
let smee = unsafe {
|
||||
assert!(!smee_instance.is_null());
|
||||
&mut *smee_instance
|
||||
};
|
||||
|
||||
let params = NetworkJoinedParams::new(nwid, mem_id, hid, src);
|
||||
let params = NetworkJoinedParams::new(nwid, mem_id);
|
||||
|
||||
match smee.notify_network_joined(params) {
|
||||
Ok(()) => true,
|
||||
|
@ -31,24 +31,13 @@ pub struct NetworkJoinedParams {
|
||||
|
||||
#[serde(rename = "MemberID")]
|
||||
pub member_id: String,
|
||||
|
||||
#[serde(rename = "HookID")]
|
||||
pub hook_id: String,
|
||||
|
||||
#[serde(rename = "SrcIP")]
|
||||
pub src_ip: Option<String>,
|
||||
}
|
||||
|
||||
impl NetworkJoinedParams {
|
||||
fn new(network_id: &str, member_id: &str, hook_id: &str, src_ip: Option<&str>) -> Self {
|
||||
fn new(network_id: &str, member_id: &str) -> Self {
|
||||
Self {
|
||||
network_id: network_id.to_string(),
|
||||
member_id: member_id.to_string(),
|
||||
hook_id: hook_id.to_string(),
|
||||
src_ip: match src_ip {
|
||||
Some(x) => Some(x.to_string()),
|
||||
None => None,
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user