struct UserNode *next;
};
-#define isNetworkService(USER) (USER->flags & (USERFLAG_ISBOT | USERFLAG_ISIRCOP))
+#define isNetworkService(USER) (USER->flags & (USERFLAG_ISBOT | USERFLAG_ISIRCOP | USERFLAG_ISSERVER))
#define isBot(USER) (USER->flags & (USERFLAG_ISBOT))
void init_UserNode();
static int neonserv_ctcp(char *buffer, char *command, char *text);
static void neonserv_event_chanctcp(struct UserNode *user, struct ChanNode *chan, char *command, char *text) {
+ if(!stricmp(command, "ACTION")) return; //always allow CTCP ACTION (/me)
struct ClientSocket *client = getBotForChannel(chan);
if(!client) return; //we can't "see" this event
- if(user->flags & (USERFLAG_ISBOT | USERFLAG_ISIRCOP)) return;
+ if(isNetworkService(user)) return;
loadChannelSettings(chan);
if(!(chan->flags & CHANFLAG_CHAN_REGISTERED)) return;
if(!(user->flags & USERFLAG_ISAUTHED)) {
static void neonserv_event_mode(struct UserNode *user, struct ChanNode *chan, char *modes, char **argv, int argc) {
struct ClientSocket *client = getBotForChannel(chan);
if(!client) return; //we can't "see" this event
- if(user->flags & (USERFLAG_ISBOT | USERFLAG_ISIRCOP)) return;
+ if(isNetworkService(user)) return;
loadChannelSettings(chan);
if(!(chan->flags & CHANFLAG_CHAN_REGISTERED)) return;
struct neonserv_event_mode_cache *cache = malloc(sizeof(*cache));
static void neonserv_event_channotice(struct UserNode *user, struct ChanNode *chan, char *message) {
struct ClientSocket *client = getBotForChannel(chan);
if(!client) return; //we can't "see" this event
- if(user->flags & (USERFLAG_ISBOT | USERFLAG_ISIRCOP)) return;
+ if(isNetworkService(user)) return;
loadChannelSettings(chan);
if(!(chan->flags & CHANFLAG_CHAN_REGISTERED)) return;
if(!(user->flags & USERFLAG_ISAUTHED)) {
static void neonserv_event_topic(struct UserNode *user, struct ChanNode *chan, const char *new_topic) {
struct ClientSocket *client = getBotForChannel(chan);
if(!client) return; //we can't "see" this event
- if(user->flags & (USERFLAG_ISBOT | USERFLAG_ISIRCOP)) return;
+ if(isNetworkService(user)) return;
loadChannelSettings(chan);
if(!(chan->flags & CHANFLAG_CHAN_REGISTERED)) return;
if(!(user->flags & USERFLAG_ISAUTHED)) {