/*created*/ strtoul(dbgetvalue(pgres,11),NULL,10),
/*modified*/ strtoul(dbgetvalue(pgres,12),NULL,10)
);
+ if (!t) {
+ Error("trusts", ERR_ERROR, "Error loading trustblock.");
+ return;
+ }
+
if(t->id > trusts_lasttrustgroupid)
trusts_lasttrustgroupid = t->id;
/*created*/ strtoul(dbgetvalue(pgres,9),NULL,10),
/*modified*/ strtoul(dbgetvalue(pgres,8),NULL,10)
);
+ if (!t) {
+ Error("trusts", ERR_ERROR, "Error loading trusthost.");
+ return;
+ }
node = 0;
if(t->id > trusts_lasttrusthostid)
trusts_lasttrusthostid = t->id;
DBResult *pgres = dbgetresult(dbconn);
int rows=0;
trustblock_t *t;
+ struct irc_in_addr sin;
+ unsigned char bits;
+ patricia_node_t *node;
if(!dbquerysuccessful(pgres)) {
Error("trusts", ERR_ERROR, "Error loading trustblock list.");
trusts_lasttrustblockid = 1;
while(dbfetchrow(pgres)) {
-// t = gettrustblock();
- if(!t)
- Error("trusts", ERR_ERROR, "Unable to load trust block");
-
- t->id = strtoul(dbgetvalue(pgres,0),NULL,10);
- /* host */
- t->ownerid = strtoul(dbgetvalue(pgres,3),NULL,10);
- t->expire = strtoul(dbgetvalue(pgres,11),NULL,10);
- t->startdate = strtoul(dbgetvalue(pgres,2),NULL,10);
- /* reason_private */
- /* reason_public */
+ /*node*/
+ ipmask_parse(dbgetvalue(pgres,1), &sin, &bits);
+ node = refnode(iptree, &sin, bits);
+
+ t = createtrustblockfromdb(
+ /* id */ strtoul(dbgetvalue(pgres,0),NULL,10),
+ /* node */ node,
+ /* ownerid */ strtoul(dbgetvalue(pgres,2),NULL,10),
+ /* expire */ strtoul(dbgetvalue(pgres,3),NULL,10),
+ /* startdate*/ strtoul(dbgetvalue(pgres,4),NULL,10),
+ /* reason_private */ dbgetvalue(pgres,5),
+ /* reason_public */ dbgetvalue(pgres,6)
+ );
+ if (!t) {
+ Error("trusts", ERR_ERROR, "Error loading trustblock.");
+ return;
+ }
+
+ node->exts[tgb_ext] = t;
if(t->id > trusts_lasttrustblockid)
trusts_lasttrustblockid = t->id;
- //trusts_addtrustgrouptohash(t);
rows++;
}
Error("trusts",ERR_INFO,"Loaded %d trustblocks (highest ID was %lu)",rows,trusts_lasttrustblockid);
dbclear(pgres);
+
+ trusts_loaded = 1;
+ triggerhook(HOOK_TRUSTS_DBLOADED, NULL);
}
/* trust block */
void trustsdb_addtrustblock(trustblock_t *tb) {
- dbquery("INSERT INTO trusts.blocks ( blockid,block,owner,expires,startdate,reason_private,reason_public) VALUES (%lu,'%s/%d',%lu,%lu,%lu,'%s','%s')",tb->id, IPtostr(tb->node->prefix->sin), irc_bitlen(&(tb->node->prefix->sin),tb->node->prefix->bitlen), tb->ownerid, tb->expire, tb->startdate, tb->reason_private->content, tb->reason_public->content);
+ dbquery("INSERT INTO trusts.blocks ( blockid,block,owner,expires,startdate,reason_private,reason_public) VALUES (%lu,'%s/%d',%lu,%lu,%lu,'%s','%s')",tb->id, IPtostr(tb->node->prefix->sin), irc_bitlen(&(tb->node->prefix->sin),tb->node->prefix->bitlen), tb->ownerid, tb->expire, tb->startdate, tb->reason_private ? tb->reason_private->content : "", tb->reason_public ? tb->reason_public->content : "");
}
void trustsdb_updatetrustblock(trustblock_t *tb) {
- dbquery("UPDATE trusts.blocks SET blockid=%lu,block='%s/%d',owner=%lu,expires=%lu,startdate=%lu,reason_private='%s',reason_public='%s'", tb->id, IPtostr(tb->node->prefix->sin), irc_bitlen(&(tb->node->prefix->sin),tb->node->prefix->bitlen), tb->ownerid, tb->expire, tb->startdate, tb->reason_private->content, tb->reason_public->content);
+ char escprivate[2*512+1];
+ char escpublic[2*512+1];
+
+ dbescapestring(escprivate,tb->reason_private ? tb->reason_private->content : "", strlen(tb->reason_private ? tb->reason_private->content : ""));
+ dbescapestring(escpublic,tb->reason_public ? tb->reason_public->content : "", strlen(tb->reason_public ? tb->reason_public->content : ""));
+
+ dbquery("UPDATE trusts.blocks SET block='%s/%d',owner=%lu,expires=%lu,startdate=%lu,reason_private='%s',reason_public='%s' WHERE blockid=%lu", IPtostr(tb->node->prefix->sin), irc_bitlen(&(tb->node->prefix->sin),tb->node->prefix->bitlen), tb->ownerid, tb->expire, tb->startdate, escprivate, escpublic, tb->id);
}
void trustsdb_deletetrustblock(trustblock_t *tb) {