]>
Commit | Line | Data |
---|---|---|
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 |