]> jfr.im git - irc/quakenet/newserv.git/blobdiff - regexgline/regexgline.h
merge
[irc/quakenet/newserv.git] / regexgline / regexgline.h
index 8130ec9278d764a4748382e1ec557f246e2880ed..3da4a5e840ea5248568a7d1dcd041a0be0eee088 100644 (file)
@@ -4,7 +4,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
-#include <mysql/mysql.h>
 #include <errno.h>
 #include <pcre.h>
 #include <string.h>
 #define RG_MINIMUM_DELAY_TIME     5
 #define RG_MAXIMUM_RAND_TIME      15
 #define RG_EXPIRY_TIME_DEFAULT    1800
+#define RG_NETWORK_WIDE_MAX_GLINES_PER_8_SEC 625*8 /* 5000 / 8 */
 
 #define RGStringise(x)            #x
 #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);
 #define RGMasksEqual(a, b)        !strcasecmp(a, b)
 
-typedef MYSQL_RES *rg_sqlresult;
-typedef MYSQL_ROW rg_sqlrow;
-typedef MYSQL rg_sqlconnection;
-
 typedef struct rg_struct {
   int              id;        /* database id */
   sstring          *mask;     /* gline mask */
@@ -49,14 +45,18 @@ typedef struct rg_struct {
   pcre             *regex;    /* pcre expression */
   pcre_extra       *hint;     /* pcre hint       */
   long             glineid;   /* gline ID */
+  const char       *class;    /* class of gline */
+  unsigned long    hits;      /* hits since we were loaded */
+  unsigned long    hitssaved; /* hits (persistent) */
+  unsigned int     marker;    /* newserv style marker */
+  time_t           lastseen;  /* ... */
+  short            dirty;     /* whether or not we need to flush to the db */
   struct rg_struct *next;     /* ... pointer to next item */
 } rg_struct;
 
-rg_sqlconnection rg_sql;
 struct rg_struct *rg_list = NULL;
 
 int rg_max_casualties, rg_max_spew, rg_expiry_time, rg_max_per_gline;
-int rg_sqlconnected = 0;
 void *rg_schedule = NULL;
 
 void rg_nick(int hooknum, void *arg);
@@ -71,25 +71,17 @@ int rg_spew(void *source, int cargc, char **cargv);
 int rg_sanitycheck(char *mask, int *count);
 
 int rg_dbconnect(void);
-int rg_dbload(void);
-
-int rg_sqlconnect(char *dbhost, char *dbuser, char *dbpass, char *db, unsigned int port);
-void rg_sqldisconnect(void);
-void rg_sqlescape_string(char *dest, char *source, size_t length);
-int rg_sqlquery(char *format, ...);
-rg_sqlresult rg_sqlstoreresult(void);
-rg_sqlrow rg_sqlgetrow(rg_sqlresult res);
-void rg_sqlfree(rg_sqlresult res);
+void rg_dbload(void);
 
 void rg_freestruct(struct rg_struct *rp);
 struct rg_struct *rg_newstruct(time_t expires);
-struct rg_struct *rg_newsstruct(char *id, char *mask, char *setby, char *reason, char *expires, char *type, time_t iexpires, int iid);
+struct rg_struct *rg_newsstruct(unsigned long id, char *mask, char *setby, char *reason, char *expires, char *type, time_t iexpires, char *class, time_t lastseen, unsigned int hitssaved);
 
-void rg_displaygline(nick *np, struct rg_struct *rp);
+void rg_displaygline(nick *np, struct rg_struct *rp, int longest);
 
 void rg_checkexpiry(void *arg);
 
-void rg_logevent(nick *np, char *event, char *details, ...);
+void rg_logevent(nick *np, char *event, char *details, ...) __attribute__ ((format (printf, 3, 4)));
 void rg_loggline(struct rg_struct *rg, nick *np);
 
 unsigned char rc_hexlookup[256] = {