Restrict member storage and invite connection candidates to admitted members

This commit is contained in:
evgeny committed 2026-11-03 16:00:58 +01:00
1 parent a35b09c4de
commit 635a03bbd8
3 files changed
+4 -4

No files matched your search

+1 -1
View File
@@ -1006,7 +1006,7 @@ int chat_attachment_downloaded(struct UTUN_INSTANCE* inst, const char* channel,
int rc = sqlite3_exec(db, "BEGIN IMMEDIATE /* attachment downloaded */", NULL, NULL, NULL);
if (rc != SQLITE_OK) goto fail;
char sql[512]; snprintf(sql, sizeof(sql), "SELECT downloaded,wanted,error,NOT EXISTS(SELECT 1 FROM peers_%s"
" WHERE node_id=? AND source=0 AND deleted=0 AND length(adm_tags_sig)=64 AND json_extract(adm_tags,'$.storage')='yes')"
" WHERE node_id=? AND source=0 AND deleted=0 AND admitted=1 AND length(adm_tags_sig)=64 AND json_extract(adm_tags,'$.storage')='yes')"
" FROM attachment_keys WHERE channel=? AND message_id=?", channel);
stage = "prepare download state"; rc = sqlite3_prepare_v2(db, sql, -1, &st, NULL);
if (rc != SQLITE_OK) goto fail;
+1 -1
View File
@@ -81,7 +81,7 @@ static int select_nodes(struct UTUN_INSTANCE* inst, uint64_t channel, struct inv
DEBUG_ERROR(DEBUG_CATEGORY_CHAT_SYNC, "invite_build: inactive context/invalid channel=%llu", (unsigned long long)channel); return -1;
}
char sql[256];
snprintf(sql, sizeof(sql), "SELECT node_id,node_type FROM peers_%llu WHERE source=0 AND deleted=0 ORDER BY node_id<0,node_id",
snprintf(sql, sizeof(sql), "SELECT node_id,node_type FROM peers_%llu WHERE source=0 AND deleted=0 AND admitted=1 ORDER BY node_id<0,node_id",
(unsigned long long)channel);
sqlite3_stmt* st = NULL; result->priority = 4;
int rc = sqlite3_prepare_v2(cc->db, sql, -1, &st, NULL);
+2 -2
View File
@@ -109,7 +109,7 @@ int member_files_member(struct UTUN_INSTANCE* inst, uint64_t group, uint64_t nod
(unsigned long long)group, (unsigned long long)node, storage); return 0;
}
char sql[256];
snprintf(sql, sizeof(sql), "SELECT adm_tags,source,adm_tags_sig,deleted FROM \"peers_%llu\" WHERE node_id=?",
snprintf(sql, sizeof(sql), "SELECT adm_tags,source,adm_tags_sig,deleted FROM \"peers_%llu\" WHERE node_id=? AND admitted=1",
(unsigned long long)group);
sqlite3_stmt* st = NULL;
if (sqlite3_prepare_v2(inst->topo_sqlite_db, sql, -1, &st, NULL) != SQLITE_OK) {
@@ -334,7 +334,7 @@ static void mf_roots(struct mf_job* j) {
*r = j->request; r->kind = MF_RESPONSE; r->type = MF_DIRECTORY; r->data_len = 0; r->more = 0;
if (*r->path || r->command != MF_LIST) { r->status = MF_INVALID_PATH; return; }
char sql[256];
snprintf(sql, sizeof(sql), "SELECT node_id,join_ts,update_ts,adm_tags FROM \"peers_%llu\" WHERE deleted=0 AND source=0 ORDER BY node_id",
snprintf(sql, sizeof(sql), "SELECT node_id,join_ts,update_ts,adm_tags FROM \"peers_%llu\" WHERE deleted=0 AND source=0 AND admitted=1 ORDER BY node_id",
(unsigned long long)j->group);
sqlite3_stmt* st = NULL; EVP_MD_CTX* hash = EVP_MD_CTX_new();
if (!hash || EVP_DigestInit_ex(hash, EVP_sha256(), NULL) != 1 ||