X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/8c7baf9e90af4216ce1bc87a8b3515e5a6cfd940..cb5aa4cdd6af4114b18db464f022ef99a44304d7:/nick/nick.h?ds=inline diff --git a/nick/nick.h b/nick/nick.h index 25205825..6adfa0e4 100644 --- a/nick/nick.h +++ b/nick/nick.h @@ -10,10 +10,15 @@ #include "../server/server.h" #include "../lib/base64.h" #include "../lib/irc_ipv6.h" -#include "../lib/patricia.h" +#include "../patricia/patricia.h" + +#include "../authext/authext.h" + #include -#define MAXNICKEXTS 6 +#ifndef MAXNICKEXTS +#define MAXNICKEXTS 6 +#endif #define UMODE_INV 0x0001 #define UMODE_WALLOPS 0x0002 @@ -28,8 +33,12 @@ #define UMODE_SETHOST 0x0400 #define UMODE_REGPRIV 0x0800 #define UMODE_HIDEIDLE 0x1000 +#define UMODE_PARANOID 0x2000 + +#define UMODE_ALL 0x3FFF -#define UMODE_ALL 0x1FFF +#define AFLAG_STAFF 0x0001 +#define AFLAG_DEVELOPER 0x0002 #define IsInvisible(x) ((x)->umodes & UMODE_INV) #define IsWallops(x) ((x)->umodes & UMODE_WALLOPS) @@ -44,6 +53,7 @@ #define IsSetHost(x) ((x)->umodes & UMODE_SETHOST) #define IsRegPriv(x) ((x)->umodes & UMODE_REGPRIV) #define IsHideIdle(x) ((x)->umodes & UMODE_HIDEIDLE) +#define IsParanoid(x) ((x)->umodes & UMODE_PARANOID) #define SetInvisible(x) ((x)->umodes |= UMODE_INV) #define SetWallops(x) ((x)->umodes |= UMODE_WALLOPS) @@ -58,6 +68,7 @@ #define SetSetHost(x) ((x)->umodes |= UMODE_SETHOST) #define SetRegPriv(x) ((x)->umodes |= UMODE_REGPRIV) #define SetHideIdle(x) ((x)->umodes |= UMODE_HIDEIDLE) +#define SetParanoid(x) ((x)->umodes |= UMODE_PARANOID) #define ClearInvisible(x) ((x)->umodes &= ~UMODE_INV) #define ClearWallops(x) ((x)->umodes &= ~UMODE_WALLOPS) @@ -72,6 +83,16 @@ #define ClearSetHost(x) ((x)->umodes &= ~UMODE_SETHOST) #define ClearRegPriv(x) ((x)->umodes &= ~UMODE_REGPRIV) #define ClearHideIdle(x) ((x)->umodes &= ~UMODE_HIDEIDLE) +#define ClearParanoid(x) ((x)->umodes &= ~UMODE_PARANOID) + +#define IsStaff(x) ((x)->umodes & AFLAG_STAFF) +#define IsDeveloper(x) ((x)->umodes & AFLAG_DEVELOPER) + +#define SetStaff(x) ((x)->umodes |= AFLAG_STAFF) +#define SetDeveloper(x) ((x)->umodes |= AFLAG_DEVELOPER) + +#define ClearStaff(x) ((x)->umodes &= ~AFLAG_STAFF) +#define ClearDeveloper(x) ((x)->umodes &= ~AFLAG_DEVELOPER) typedef struct host { sstring *name; @@ -99,13 +120,16 @@ typedef struct nick { sstring *sethost; flag_t umodes; char authname[ACCOUNTLEN+1]; + authname *auth; /* This requires User ID numbers to work */ time_t timestamp; time_t accountts; + flag_t accountflags; patricia_node_t *ipnode; unsigned int marker; struct nick *next; struct nick *nextbyhost; struct nick *nextbyrealname; + struct nick *nextbyauthname; /* These are extensions only used by other modules */ array *channels; void *exts[MAXNICKEXTS]; @@ -122,7 +146,7 @@ extern nick **servernicks[MAXSERVERS]; extern host *hosttable[HOSTHASHSIZE]; extern realname *realnametable[REALNAMEHASHSIZE]; extern const flag umodeflags[]; -extern patricia_tree_t *iptree; +extern const flag accountflags[]; #define MAXNUMERIC 0x3FFFFFFF @@ -155,9 +179,7 @@ int registernickext(const char *name); int findnickext(const char *name); void releasenickext(int index); char *visiblehostmask(nick *np, char *buf); -int registernodeext(const char *name); -int findnodeext(const char *name); -void releasenodeext(int index); +char *visibleuserhost(nick *np, char *buf); /* nickhandlers.c functions */ int handlenickmsg(void *source, int cargc, char **cargv); @@ -176,6 +198,7 @@ nick *getnickbynumericstr(char *numericstr); /* nickhelpers.c functions */ void initnickhelpers(); +void fininickhelpers(); host *findhost(const char *hostname); host *findorcreatehost(const char *hostname); void releasehost(host *hp);