]> jfr.im git - irc/quakenet/newserv.git/blame - regexgline/regexgline.h
Merge.
[irc/quakenet/newserv.git] / regexgline / regexgline.h
CommitLineData
1e0c4014
CP
1#ifndef __regexgline_H
2#define __regexgline_H
3
4#include <stdio.h>
5#include <stdlib.h>
6#include <stdarg.h>
7#include <mysql/mysql.h>
8#include <errno.h>
9#include <pcre.h>
10#include <string.h>
4ad1cf7a 11#include <strings.h>
1e0c4014
CP
12
13#include "../core/config.h"
14#include "../control/control.h"
15#include "../lib/irc_string.h"
16#include "../localuser/localuserchannel.h"
17#include "../lib/sstring.h"
18#include "../core/schedule.h"
19
20#define RG_QUERY_BUF_SIZE 5120
21#define RG_MAX_CASUALTIES_DEFAULT 5000
22#define RG_MAX_SPEW_DEFAULT 300
23#define RG_REGEXGLINE_MAX 512
24#define RG_REASON_MAX 255
25#define RG_EXPIRY_BUFFER 200
26#define RG_MASKLEN HOSTLEN + USERLEN + NICKLEN + REALLEN + 5 /* includes NULL terminator */
27#define RG_PCREFLAGS PCRE_CASELESS
28#define RG_MIN_MASK_LEN 5
29#define RG_MAX_PER_GLINE_DEFAULT 5
5f3eb6fa
CP
30#define RG_MINIMUM_DELAY_TIME 5
31#define RG_MAXIMUM_RAND_TIME 15
1e0c4014 32#define RG_EXPIRY_TIME_DEFAULT 1800
de2bb012 33#define RG_NETWORK_WIDE_MAX_GLINES_PER_8_SEC 625 /* 5000 / 8 */
1e0c4014
CP
34
35#define RGStringise(x) #x
d28e0741 36#define RGBuildHostname(buf, np) snprintf(buf, sizeof(buf), "%s!%s@%s\r%s", np->nick, np->ident, np->host->name->content, np->realname->name->content);
1e0c4014
CP
37#define RGMasksEqual(a, b) !strcasecmp(a, b)
38
39typedef MYSQL_RES *rg_sqlresult;
40typedef MYSQL_ROW rg_sqlrow;
41typedef MYSQL rg_sqlconnection;
42
43typedef struct rg_struct {
44 int id; /* database id */
45 sstring *mask; /* gline mask */
46 sstring *setby; /* who it's set by */
47 sstring *reason; /* reason for gline */
48 time_t expires; /* when it expires */
49 int type; /* gline type (user@ip or *@ip) */
50 pcre *regex; /* pcre expression */
51 pcre_extra *hint; /* pcre hint */
52 long glineid; /* gline ID */
53 struct rg_struct *next; /* ... pointer to next item */
54} rg_struct;
55
56rg_sqlconnection rg_sql;
57struct rg_struct *rg_list = NULL;
58
59int rg_max_casualties, rg_max_spew, rg_expiry_time, rg_max_per_gline;
60int rg_sqlconnected = 0;
61void *rg_schedule = NULL;
62
63void rg_nick(int hooknum, void *arg);
5f3eb6fa 64void rg_lostnick(int hooknum, void *arg);
1e0c4014
CP
65void rg_startup(void);
66
67int rg_gline(void *source, int cargc, char **cargv);
68int rg_delgline(void *source, int cargc, char **cargv);
69int rg_glist(void *source, int cargc, char **cargv);
70int rg_idlist(void *source, int cargc, char **cargv);
71int rg_spew(void *source, int cargc, char **cargv);
72int rg_sanitycheck(char *mask, int *count);
73
74int rg_dbconnect(void);
75int rg_dbload(void);
76
77int rg_sqlconnect(char *dbhost, char *dbuser, char *dbpass, char *db, unsigned int port);
78void rg_sqldisconnect(void);
79void rg_sqlescape_string(char *dest, char *source, size_t length);
80int rg_sqlquery(char *format, ...);
81rg_sqlresult rg_sqlstoreresult(void);
82rg_sqlrow rg_sqlgetrow(rg_sqlresult res);
83void rg_sqlfree(rg_sqlresult res);
84
85void rg_freestruct(struct rg_struct *rp);
86struct rg_struct *rg_newstruct(time_t expires);
87struct rg_struct *rg_newsstruct(char *id, char *mask, char *setby, char *reason, char *expires, char *type, time_t iexpires, int iid);
88
89void rg_displaygline(nick *np, struct rg_struct *rp);
90
1e0c4014
CP
91void rg_checkexpiry(void *arg);
92
93void rg_logevent(nick *np, char *event, char *details, ...);
d28e0741 94void rg_loggline(struct rg_struct *rg, nick *np);
1e0c4014
CP
95
96unsigned char rc_hexlookup[256] = {
97 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
98 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
99 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
100 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
101 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01,
102 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0xff, 0xff,
103 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
104 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
105 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
106 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, 0x0b, 0x0c,
107 0x0d, 0x0e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
108 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
109 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
110 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
111 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
112 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
113 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
114 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
115 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
116 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
117 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
118 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
119 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
120 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
121 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
122 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
123 };
124
125#endif