next = chan->next;
for(chanuser = getChannelUsers(chan, NULL); chanuser; chanuser = next_chanuser) {
next_chanuser = getChannelUsers(chan, chanuser);
+ if(chanuser->spamnode)
+ free(chanuser->spamnode);
free(chanuser);
}
freeChanNode(chan);
strcpy(chan->name, name);
chan->user = NULL;
chan->bans = NULL;
+ chan->spam_settings = NULL;
chan->usercount = 0;
chan->chanbot = NULL;
chan->topic[0] = 0;
freeModeNode(chan->modes);
if(chan->bans)
removeChannelBans(chan);
+ if(chan->spam_settings)
+ free(chan->spam_settings);
free(chan);
}
//free the user (no more channels)
delUser(chanuser->user, 1);
}
+ if(chanuser->spamnode)
+ free(chanuser->spamnode);
free(chanuser);
}
chan->user = NULL;
struct ChanUser;
struct trigger_cache;
struct ModeNode;
+struct NeonSpamSettings;
#define CHANFLAG_RECEIVED_USERLIST 0x01
#define CHANFLAG_REQUESTED_CHANINFO 0x02
struct UserNode *chanbot;
struct trigger_cache *trigger;
int channel_id;
+
+ struct NeonSpamSettings *spam_settings;
struct ChanNode *next;
};
chanuser->chan = chan;
chanuser->changeTime = 0;
+ chanuser->spamnode = NULL;
chanuser->next_user = chan->user;
chan->user = chanuser;
chanuser->chan = chan;
chanuser->changeTime = 0;
+ chanuser->spamnode = NULL;
chanuser->next_user = chan->user;
chan->user = chanuser;
last = cchanuser;
}
- if(freeChanUser)
+ if(freeChanUser) {
+ if(chanuser->spamnode)
+ free(chanuser->spamnode);
free(chanuser);
- else {
+ } else {
chanuser->next_chan = NULL;
chanuser->next_user = NULL;
}
chanuser->next_chan = NULL;
}
- if(freeChanUser)
+ if(freeChanUser) {
+ if(chanuser->spamnode)
+ free(chanuser->spamnode);
free(chanuser);
+ }
}
struct ChanNode;
struct UserNode;
+struct NeonSpamNode;
struct ChanUser {
unsigned char flags;
int chageEvents;
time_t changeTime;
+ struct NeonSpamNode *spamnode;
+
struct ChanUser *next_user;
struct ChanUser *next_chan;
};
#include "main.h"
+#define SPAMSETTINGS_SPAMSCAN 0x01
+#define SPAMSETTINGS_FLOODSCAN 0x02
+#define SPAMSETTINGS_JOINSCAN 0x04
+#define SPAMSETTINGS_SCANOPS 0x08
+#define SPAMSETTINGS_SCANVOICE 0x10
+
+struct NeonSpamSettings {
+ unsigned int flags;
+ unsigned char spam_amount;
+ unsigned char spam_time;
+ unsigned char flood_amount;
+ unsigned char flood_time;
+
+};
+
+struct NeonSpamNode {
+ unsigned int flags;
+};
+
void init_NeonSpam();
void loop_NeonSpam();
void free_NeonSpam();