X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/61d7d5113a54f5a7fb0b3b320a44d58ad560531e..82d35fa527b028eccd4a17f10f8f582d8a2fd167:/trusts/trusts.h diff --git a/trusts/trusts.h b/trusts/trusts.h index e203dc0a..fbec7025 100644 --- a/trusts/trusts.h +++ b/trusts/trusts.h @@ -13,8 +13,18 @@ #define COMMENTLEN 300 #define TRUSTNAMELEN 100 #define TRUSTHOSTLEN 100 +#define CREATEDBYLEN NICKLEN + 1 + #define MAXTGEXTS 5 +#define MAXTRUSTEDFOR 50000 +#define MAXDURATION 365 * 86400 * 20 +#define MAXPERIDENT 1000 + +#define TABLES_REGULAR 0 +#define TABLES_MIGRATION 1 +#define TABLES_REPLICATION 2 + struct trustmigration; struct trusthost; @@ -31,6 +41,10 @@ typedef struct trusthost { unsigned int count; + struct trusthost *parent, *children; + unsigned int marker; + + struct trusthost *nextbychild; struct trusthost *next; } trusthost; @@ -44,12 +58,14 @@ typedef struct trustgroup { unsigned int maxusage; time_t expires; time_t lastseen; - time_t lastmaxuserreset; + time_t lastmaxusereset; sstring *createdby, *contact, *comment; trusthost *hosts; unsigned int count; + unsigned int marker; + struct trustgroup *next; void *exts[MAXTGEXTS]; @@ -65,32 +81,59 @@ extern int trusts_thext, trusts_nextuserext; int findtgext(const char *); int registertgext(const char *); void releasetgext(int); - -/* db.c */ -extern int trustsdbloaded; -int trusts_loaddb(void); -void trusts_closedb(int); +int trusts_fullyonline(void); /* formats.c */ char *trusts_timetostr(time_t); int trusts_parsecidr(const char *, uint32_t *, short *); int trusts_str2cidr(const char *, uint32_t *, uint32_t *); char *trusts_cidr2str(uint32_t, uint32_t); +char *dumpth(trusthost *, int); +char *dumptg(trustgroup *, int); +int parseth(char *, trusthost *, unsigned int *, int); +int parsetg(char *, trustgroup *, int); +char *rtrim(char *); /* data.c */ extern trustgroup *tglist; trustgroup *tg_getbyid(unsigned int); void th_free(trusthost *); -int th_add(trustgroup *, unsigned int, char *, unsigned int, time_t); -void tg_free(trustgroup *); -int tg_add(unsigned int, char *, unsigned int, int, unsigned int, unsigned int, time_t, time_t, time_t, char *, char *, char *); -trusthost *th_getbyhost(uint32_t host); +trusthost *th_add(trusthost *); +void tg_free(trustgroup *, int); +trustgroup *tg_add(trustgroup *); +trusthost *th_getbyhost(uint32_t); +trusthost *th_getbyhostandmask(uint32_t, uint32_t); +trusthost *th_getsmallestsupersetbyhost(uint32_t, uint32_t); +trustgroup *tg_strtotg(char *); +void th_adjusthosts(trusthost *th, trusthost *, trusthost *); +void th_getsuperandsubsets(uint32_t, uint32_t, trusthost **, trusthost **); +trusthost *th_getsubsetbyhost(uint32_t ip, uint32_t mask); +trusthost *th_getnextsubsetbyhost(trusthost *th, uint32_t ip, uint32_t mask); +void th_linktree(void); +unsigned int nexttgmarker(void); +unsigned int nextthmarker(void); +trusthost *th_getbyid(unsigned int); +int tg_modify(trustgroup *, trustgroup *); /* migration.c */ -typedef void (*TrustMigrationGroup)(void *, unsigned int, char *, unsigned int, unsigned int, unsigned int, unsigned int, time_t, time_t, time_t, char *, char *, char *); -typedef void (*TrustMigrationHost)(void *, unsigned int, char *, unsigned int, time_t); +typedef void (*TrustMigrationGroup)(void *, trustgroup *); +typedef void (*TrustMigrationHost)(void *, trusthost *, unsigned int); typedef void (*TrustMigrationFini)(void *, int); +/* trusts_db.c */ +extern int trustsdbloaded; +int trusts_loaddb(void); +void trusts_closedb(int); +trustgroup *tg_new(trustgroup *); +trusthost *th_new(trustgroup *, char *); +void trustsdb_insertth(char *, trusthost *, unsigned int); +void trustsdb_inserttg(char *, trustgroup *); +trustgroup *tg_copy(trustgroup *); +trusthost *th_copy(trusthost *); +void tg_update(trustgroup *); +void tg_delete(trustgroup *); +void th_delete(trusthost *); + typedef struct trustmigration { int count, cur; void *schedule; @@ -102,7 +145,13 @@ typedef struct trustmigration { } trustmigration; /* db-migration.c */ - typedef void (*TrustDBMigrationCallback)(int, void *); +/* events.c */ +void trusts_newnick(nick *, int); +void trusts_lostnick(nick *, int); + +/* trusts_api.c */ +int istrusted(nick *); + #endif