]> jfr.im git - irc/quakenet/newserv.git/blob - trusts2/trusts.h
add my version of trusts, trusts_newsearch, trusts_search modules
[irc/quakenet/newserv.git] / trusts2 / trusts.h
1 /*
2
3 * trust.h:
4 * Top level data structures and function prototypes for the
5 * trusts service module
6 */
7
8 #ifndef __TRUST_H
9 #define __TRUST_H
10
11 #include <string.h>
12
13 #include "../lib/irc_ipv6.h"
14 #include "../core/schedule.h"
15 #include "../lib/irc_string.h"
16 #include "../localuser/localuserchannel.h"
17 #include "../control/control.h"
18 #include "../patricia/patricia.h"
19 #include "../dbapi/dbapi.h"
20 #include "../patricianick/patricianick.h"
21 #include "../nick/nick.h"
22
23 #define TRUSTS_HASH_GROUPSIZE 500
24 #define TRUSTS_HASH_HOSTSIZE 1000
25 #define TRUSTS_HASH_IDENTSIZE 50
26
27 #define TRUSTS_MAXGROUPNAMELEN 20
28
29 extern int tgh_ext;
30
31 typedef struct trusthost_s {
32 /* Details */
33 unsigned long id;
34 patricia_node_t* node;
35 time_t startdate;
36 time_t lastused;
37 time_t expire;
38 unsigned long maxused;
39
40 /* Trust group */
41 struct trustgroup_s* trustgroup;
42
43 time_t created;
44 time_t modified;
45
46 /* Hash table */
47 struct trusthost_s* nextbyid;
48 struct trusthost_s* nextbygroupid;
49 } trusthost_t;
50
51 typedef struct trustgroup_s {
52 /* Details */
53 unsigned long id;
54 unsigned long maxusage, currenton;
55 unsigned long maxclones, maxperident;
56 unsigned short maxperip;
57 int enforceident;
58 time_t startdate,lastused, expire;
59 unsigned long ownerid;
60 int type;
61
62 time_t created;
63 time_t modified;
64
65 /* Hash table */
66 struct trustgroup_s* nextbyid;
67 } trustgroup_t;
68
69 typedef struct trustgroupidentcount_s {
70 /* Ident */
71 sstring *ident;
72
73 /* Trust group */
74 struct trustgroup_s* trustgroup;
75
76 /* Counter */
77 unsigned long currenton;
78
79 /* Hash table */
80 struct trustgroupidentcount_s* next;
81 } trustgroupidentcount_t;
82
83 typedef struct trustblock_s {
84 unsigned long id;
85 patricia_node_t* node;
86 unsigned long ownerid;
87 time_t expire;
88 time_t startdate;
89 sstring* reason_private;
90 sstring* reason_public;
91 struct trustblock_s* next;
92 } trustblock_t;
93
94 /* trusts hash tables */
95 extern trustgroup_t *trustgroupidtable[TRUSTS_HASH_GROUPSIZE];
96 extern trustgroup_t *trustgroupnametable[TRUSTS_HASH_GROUPSIZE];
97 extern trusthost_t *trusthostidtable[TRUSTS_HASH_HOSTSIZE];
98 extern trusthost_t *trusthostgroupidtable[TRUSTS_HASH_HOSTSIZE];
99 extern trustgroupidentcount_t *trustgroupidentcounttable[TRUSTS_HASH_IDENTSIZE];
100
101 #define trusts_gettrustgroupidhash(x) ((x)%TRUSTS_HASH_GROUPSIZE)
102 #define trusts_gettrustgroupnamehash(x) ((crc32i(x))%TRUSTS_HASH_GROUPSIZE)
103 #define trusts_gettrusthostidhash(x) ((x)%TRUSTS_HASH_HOSTSIZE)
104 #define trusts_gettrusthostgroupidhash(x) ((x)%TRUSTS_HASH_HOSTSIZE)
105 #define trusts_gettrustgroupidenthash(x) ((crc32i(x))%TRUSTS_HASH_IDENTSIZE)
106
107 /* trusts_hash.c */
108 void trusts_hash_init();
109 void trusts_hash_fini();
110
111 void trusts_addtrusthosttohash(trusthost_t *newhost);
112 void trusts_removetrusthostfromhash(trusthost_t *t);
113
114 void trusts_addtrustgrouptohash(trustgroup_t *newgroup);
115 void trusts_removetrustgroupfromhash(trustgroup_t *t);
116
117 void trusts_addtrustgroupidenttohash(trustgroupidentcount_t *newident);
118 void trusts_removetrustgroupidentfromhash(trustgroupidentcount_t *t);
119
120 trustgroup_t* findtrustgroupbyid(int id);
121 trustgroup_t* findtrustgroupbyownerid(int ownerid);
122
123 trustgroupidentcount_t* findtrustgroupcountbyident(char *ident, trustgroup_t *t);
124
125 trustgroupidentcount_t *getnewtrustgroupidentcount(trustgroup_t *tg, char *ident);
126
127 unsigned long trusts_lasttrustgroupid, trusts_lasttrusthostid, trusts_lasttrustblockid;
128
129 void trust_debug(char *format, ...);
130
131 /* trusts alloc */
132 trustgroup_t *newtrustgroup();
133 void freetrustgroup (trustgroup_t *trustgroup);
134 trusthost_t *newtrusthost();
135 void freetrusthost (trusthost_t *trusthost);
136 trustgroupidentcount_t *newtrustgroupidentcount();
137 void freetrustgroupidentcount (trustgroupidentcount_t *trustgroupidentcount);
138 trustblock_t *newtrustblock();
139 void freetrustblock (trustblock_t *trustblock);
140
141 /* trusts db */
142 int trusts_load_db(void);
143 void trusts_create_tables(void);
144 void trusts_cleanup_db(void);
145 void trusts_loadtrustgroups(DBConn *dbconn, void *arg);
146 void trusts_loadtrusthosts(DBConn *dbconn, void *arg);
147 void trusts_loadtrustblocks(DBConn *dbconn, void *arg);
148 void trustsdb_addtrustgroup(trustgroup_t *t);
149 void trustsdb_updatetrustgroup(trustgroup_t *t);
150 void trustsdb_deletetrustgroup(trustgroup_t *t);
151 void trustsdb_addtrusthost(trusthost_t *th);
152 void trustsdb_updatetrusthost(trusthost_t *th);
153 void trustsdb_deletetrusthost(trusthost_t *th);
154 void trustsdb_addtrustblock(trustblock_t *tb);
155 void trustsdb_updatetrustblock(trustblock_t *tb);
156 void trustsdb_deletetrustblock(trustblock_t *tb);
157 void trustsdb_logmessage(trustgroup_t *tg, unsigned long userid, int type, char *message);
158
159 /* trusts handlers */
160 void trusts_hook_newuser(int hook, void *arg);
161 void trusts_hook_lostuser(int hook, void *arg);
162
163 /* trusts groups */
164
165 trustgroup_t *createtrustgroupfromdb(unsigned long id, unsigned long maxusage, unsigned long maxclones, unsigned long maxperident, unsigned short maxperip, int enforceident, time_t startdate, time_t lastused, time_t expire, unsigned long ownerid, int type, time_t created, time_t modified);
166 trustgroup_t *createtrustgroup(unsigned long id, unsigned long maxclones, unsigned long maxperident, unsigned short maxperip, int enforceident, time_t expire, unsigned long ownerid, int type);
167 void trustgroup_expire (trustgroup_t *tg);
168 void trustgroup_free(trustgroup_t* t);
169
170 /* trusts hosts */
171 trusthost_t *createtrusthostfromdb(unsigned long id, patricia_node_t* node, time_t startdate, time_t lastused, time_t expire, unsigned long maxused, trustgroup_t* trustgroup, time_t created, time_t modified);
172 trusthost_t *createtrusthost(unsigned long id, patricia_node_t* node, time_t expire, trustgroup_t *trustgroup);
173 void trusthost_free(trusthost_t* t);
174 void trusthost_addcounters(trusthost_t* tgh);
175 trusthost_t* trusthostadd(patricia_node_t *node, trustgroup_t* tg, time_t expire);
176 void trusthost_expire ( trusthost_t *th);
177
178 /* trusts idents */
179 void increment_ident_count(nick *np, trustgroup_t *tg);
180 void decrement_ident_count(nick *np, trustgroup_t *tg);
181
182 /* trusts */
183 void decrement_trust_ipnode(patricia_node_t *node);
184 void increment_trust_ipnode(patricia_node_t *node);
185
186 /* trusts cmds */
187 void trusts_cmdinit();
188 void trusts_cmdfini();
189
190 int trust_groupadd(void *source, int cargc, char **cargv) ;
191 int trust_groupmodify(void *source, int cargc, char **cargv) ;
192 int trust_groupdel(void *source, int cargc, char **cargv) ;
193 int trust_denyadd(void *source, int cargc, char **cargv) ;
194 int trust_denydel(void *source, int cargc, char **cargv) ;
195 int trust_denylist(void *source, int cargc, char **cargv) ;
196 int trust_del(void *source, int cargc, char **cargv) ;
197 int trust_add(void *source, int cargc, char **cargv) ;
198 int trust_comment(void *source, int cargc, char **cargv) ;
199
200 int trust_stats(void *source, int cargc, char **cargv);
201 int trust_dump(void *source, int cargc, char **cargv) ;
202 #endif
203