]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/hash.h
This is a spam checking module, remember to disable it just comment out the nick...
[irc/evilnet/x3.git] / src / hash.h
index 48f680ff23629ee0d18b2842fdc12be20642097f..e584cca0eeaf078ea941aa862060eaca20fee116 100644 (file)
@@ -1,9 +1,9 @@
 /* hash.h - IRC network state database
  * Copyright 2000-2004 srvx Development Team
  *
- * This file is part of srvx.
+ * This file is part of x3.
  *
- * srvx is free software; you can redistribute it and/or modify
+ * x3 is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
 #define MODE_OPERSONLY          0x00080000 /* +O Opers only */
 #define MODE_NOQUITMSGS         0x00100000 /* +Q suppress messages from quit notices */
 #define MODE_NOAMSG             0x00200000 /* +T no multi-target messages */
-#define MODE_SSLONLY            0x00400000 /* +z ssl only */
+#define MODE_SSLONLY            0x00400000 /* +Z ssl only */
 #define MODE_HALFOP             0x00800000 /* +h USER */
+#define MODE_EXEMPT             0x01000000 /* +e exempt */
+#define MODE_HIDEMODE          0x02000000 /* +L hide modes */
+#define MODE_APASS             0x04000000 /* +A adminpass */
+#define MODE_UPASS             0x08000000 /* +U userpass */
 #define MODE_REMOVE             0x80000000
 
 #define FLAGS_OPER             0x0001 /* Operator +O */
 #define NICKLEN         30
 #define USERLEN         10
 #define HOSTLEN         63
+#define SOCKIPLEN       45
+#define ACCOUNTLEN      15
 #define REALLEN         50
 #define TOPICLEN        250
 #define CHANNELLEN      200
+#define MAXOPLEVEL      999
 
 #define MAXMODEPARAMS  6
-#define MAXBANS                45
+#define MAXBANS                128
+#define MAXEXEMPTS     45
 
 /* IDLEN is 6 because it takes 5.33 Base64 digits to store 32 bytes. */
 #define IDLEN           6
 DECLARE_LIST(userList, struct userNode*);
 DECLARE_LIST(modeList, struct modeNode*);
 DECLARE_LIST(banList, struct banNode*);
+DECLARE_LIST(exemptList, struct exemptNode*);
 DECLARE_LIST(channelList, struct chanNode*);
 DECLARE_LIST(serverList, struct server*);
 
@@ -119,12 +128,15 @@ struct userNode {
     char info[REALLEN + 1];       /* Free form additional client information */
     char hostname[HOSTLEN + 1];   /* DNS name or IP address */
     char fakehost[HOSTLEN + 1];   /* Assigned fake host */
+    char crypthost[HOSTLEN + 30]; /* Crypted hostname */
+    char cryptip[SOCKIPLEN + 30]; /* Crypted IP */
 #ifdef WITH_PROTOCOL_P10
     char numeric[COMBO_NUMERIC_LEN+1];
     unsigned int num_local : 18;
 #endif
+    unsigned int loc;             /* Is user connecting via LOC? */
     unsigned int dead : 1;        /* Is user waiting to be recycled? */
-    struct in_addr ip;            /* User's IP address */
+    irc_in_addr_t ip;             /* User's IP address */
     long modes;                   /* user flags +isw etc... */
 
     // sethost - reed/apples
@@ -144,6 +156,8 @@ struct chanNode {
     chan_mode_t modes;
     unsigned int limit, locks;
     char key[KEYLEN + 1];
+    char upass[KEYLEN + 1];
+    char apass[KEYLEN + 1];
     time_t timestamp; /* creation time */
   
     char topic[TOPICLEN + 1];
@@ -152,6 +166,7 @@ struct chanNode {
 
     struct modeList members;
     struct banList banlist;
+    struct exemptList exemptlist;
     struct policer join_policer;
     unsigned int join_flooded : 1;
     unsigned int bad_channel : 1;
@@ -167,10 +182,17 @@ struct banNode {
     time_t set; /* time ban was set */
 };
 
+struct exemptNode {
+    char exempt[NICKLEN + USERLEN + HOSTLEN + 3]; /* 1 for '\0', 1 for ! and 1 for @ = 3 */
+    char who[NICKLEN + 1]; /* who set exempt */
+    time_t set; /* time exempt was set */
+};
+
 struct modeNode {
     struct chanNode *channel;
     struct userNode *user;
-    long modes;
+    unsigned short modes;
+    short oplevel;
     time_t idle_since;
 };
 
@@ -226,7 +248,7 @@ void NickChange(struct userNode* user, const char *new_nick, int no_announce);
 typedef void (*account_func_t) (struct userNode *user, const char *stamp);
 void reg_account_func(account_func_t handler);
 void call_account_func(struct userNode *user, const char *stamp);
-void StampUser(struct userNode *user, const char *stamp);
+void StampUser(struct userNode *user, const char *stamp, time_t timestamp);
 void assign_fakehost(struct userNode *user, const char *host, int announce);
 
 typedef void (*new_channel_func_t) (struct chanNode *chan);
@@ -236,7 +258,7 @@ void reg_join_func(join_func_t handler);
 typedef void (*del_channel_func_t) (struct chanNode *chan);
 void reg_del_channel_func(del_channel_func_t handler);
 
-struct chanNode* AddChannel(const char *name, time_t time_, const char *modes, char *banlist);
+struct chanNode* AddChannel(const char *name, time_t time_, const char *modes, char *banlist, char *exemptlist);
 void LockChannel(struct chanNode *channel);
 void UnlockChannel(struct chanNode *channel);
 
@@ -253,10 +275,12 @@ void reg_kick_func(kick_func_t handler);
 void ChannelUserKicked(struct userNode* kicker, struct userNode* victim, struct chanNode* channel);
 
 int ChannelBanExists(struct chanNode *channel, const char *ban);
+int ChannelExemptExists(struct chanNode *channel, const char *exempt);
 
 typedef int (*topic_func_t)(struct userNode *who, struct chanNode *chan, const char *old_topic);
 void reg_topic_func(topic_func_t handler);
-void SetChannelTopic(struct chanNode *channel, struct userNode *user, const char *topic, int announce);
+void SetChannelTopic(struct chanNode *channel, struct userNode *service, struct userNode *user, const char *topic, int announce);
+struct userNode *IsInChannel(struct chanNode *channel, struct userNode *user);
 
 void init_structs(void);