#define _DBHelper_h
#include "main.h"
-#include "ChanNode.h"
-#include "UserNode.h"
+struct UserNode;
+struct ChanNode;
#define DB_CHANUSER_SUSPENDED 0x01
#define DB_CHANUSER_AUTOINVITE 0x02
CC = gcc
-OBJ = EventLogger.o IRCEvents.o main.o ChanNode.o \
- IRCParser.o ClientSocket.o UserNode.o ChanUser.o \
- ModeNode.o BanNode.o WHOHandler.o modcmd.o \
- mysqlConn.o lang.o HandleInfoHandler.o tools.o \
- timeq.o DBHelper.o bots.o bot_NeonServ.o
-
+SRC = EventLogger.c \
+ IRCEvents.c \
+ main.c \
+ ChanNode.c \
+ IRCParser.c \
+ ClientSocket.c \
+ UserNode.c \
+ ChanUser.c \
+ ModeNode.c \
+ BanNode.c \
+ WHOHandler.c \
+ modcmd.c \
+ mysqlConn.c \
+ lang.c \
+ HandleInfoHandler.c \
+ tools.c \
+ timeq.c \
+ DBHelper.c \
+ bots.c \
+ bot_NeonServ.c
+CMD = cmd_neonserv_access.c \
+ cmd_neonserv_addban.c \
+ cmd_neonserv_addtimeban.c \
+ cmd_neonserv_adduser.c \
+ cmd_neonserv_ban.c \
+ cmd_neonserv_bans.c \
+ cmd_neonserv_bind.c \
+ cmd_neonserv_chanservsync.c \
+ cmd_neonserv_clvl.c \
+ cmd_neonserv_command.c \
+ cmd_neonserv_csuspend.c \
+ cmd_neonserv_cunsuspend.c \
+ cmd_neonserv_delban.c \
+ cmd_neonserv_delme.c \
+ cmd_neonserv_deluser.c \
+ cmd_neonserv_deop.c \
+ cmd_neonserv_deopall.c \
+ cmd_neonserv_devoice.c \
+ cmd_neonserv_devoiceall.c \
+ cmd_neonserv_down.c \
+ cmd_neonserv_downall.c \
+ cmd_neonserv_emote.c \
+ cmd_neonserv_events.c \
+ cmd_neonserv_giveowner.c \
+ cmd_neonserv_god.c \
+ cmd_neonserv_help.c \
+ cmd_neonserv_invite.c \
+ cmd_neonserv_inviteme.c \
+ cmd_neonserv_kick.c \
+ cmd_neonserv_kickban.c \
+ cmd_neonserv_mdeluser.c \
+ cmd_neonserv_mode.c \
+ cmd_neonserv_move.c \
+ cmd_neonserv_myaccess.c \
+ cmd_neonserv_netinfo.c \
+ cmd_neonserv_notice.c \
+ cmd_neonserv_op.c \
+ cmd_neonserv_opall.c \
+ cmd_neonserv_oplog.c \
+ cmd_neonserv_peek.c \
+ cmd_neonserv_raw.c \
+ cmd_neonserv_recover.c \
+ cmd_neonserv_register.c \
+ cmd_neonserv_reloadlang.c \
+ cmd_neonserv_resync.c \
+ cmd_neonserv_say.c \
+ cmd_neonserv_search.c \
+ cmd_neonserv_set.c \
+ cmd_neonserv_setaccess.c \
+ cmd_neonserv_suspend.c \
+ cmd_neonserv_topic.c \
+ cmd_neonserv_trace.c \
+ cmd_neonserv_trim.c \
+ cmd_neonserv_unban.c \
+ cmd_neonserv_unbanall.c \
+ cmd_neonserv_unbanme.c \
+ cmd_neonserv_unbind.c \
+ cmd_neonserv_unregister.c \
+ cmd_neonserv_unsuspend.c \
+ cmd_neonserv_up.c \
+ cmd_neonserv_upall.c \
+ cmd_neonserv_users.c \
+ cmd_neonserv_uset.c \
+ cmd_neonserv_version.c \
+ cmd_neonserv_voice.c \
+ cmd_neonserv_voiceall.c \
+ cmd_neonserv_wipeinfo.c
+CMD_DEPS = main.h modcmd.h IRCParser.h UserNode.h ChanNode.h ChanUser.h ModeNode.h \
+ ClientSocket.h mysqlConn.h lang.h HandleInfoHandler.h WHOHandler.h DBHelper.h \
+ tools.h timeq.h version.h EventLogger.h bot_NeonServ.h IRCEvents.h BanNode.h
+OBJS = ${SRC:%.c=%.o} ${CMD:%.c=%.o}
CFLAGS=-g -O2 -Wall -Wshadow -Werror
LIBS=-I. -I/usr/include/mysql
LINK=-lmysqlclient
-all: $(OBJ)
+all: $(OBJS)
-install: $(OBJ)
+install: $(OBJS)
chmod +x version.sh
./version.sh
$(CC) $(LIBS) -c version.c $(CFLAGS)
- $(CC) $(LIBS) -o neonserv $(OBJ) version.o $(CFLAGS) $(LINK)
+ $(CC) $(LIBS) -o neonserv $(OBJS) version.o $(CFLAGS) $(LINK)
%.o: %.c
$(CC) $(LIBS) -c $< $(CFLAGS)
clean:
- rm *.o
+ rm $(OBJS) version.o
+
+depend: $(SRC)
+ mv Makefile Makefile.bak
+ grep -A1 -B10000 '^# DEPENDINGS' Makefile.bak > Makefile
+ $(CC) $(CFLAGS) -MM $(LIBS) $(SRC) >> Makefile
+ rm Makefile.bak
+
+# DEPENDINGS -- generated by make depend
+
+
#include "timeq.h"
#include "version.h"
#include "EventLogger.h"
+#include "cmd_neonserv.h"
#define BOTID 1
{NULL, NULL}
};
-//define some useful functions :D
-static TIMEQ_CALLBACK(channel_ban_timeout);
-static struct ClientSocket *getBotForChannel(struct ChanNode *chan);
-
-/*
-INCLUDE ALL CMD's HERE
+/* TODO:
+trim bans
+cmd_neonserv_open.c
+cmd_neonserv_info.c
+parse, check and set modelock
+cmd_neonserv_modcmd.c
+cmd_neonserv_allowregister.c
+cmd_neonserv_noregister.c
+cmd_neonserv_expire.c
+cmd_neonserv_unvisited.c
+cmd_neonserv_merge.c
+cmd_neonserv_dnrsearch.c
+cmd_neonserv_rename.c
+cmd_neonserv_iplocate.c
+cmd_neonserv_calc.c
*/
-//USER CMD's
-#include "cmd_neonserv_access.c"
-#include "cmd_neonserv_myaccess.c"
-#include "cmd_neonserv_adduser.c"
-#include "cmd_neonserv_clvl.c"
-#include "cmd_neonserv_deluser.c"
-#include "cmd_neonserv_delme.c"
-#include "cmd_neonserv_mdeluser.c"
-#include "cmd_neonserv_trim.c" /* TODO: trim bans */
-#include "cmd_neonserv_giveowner.c"
-#include "cmd_neonserv_users.c"
-#include "cmd_neonserv_up.c"
-#include "cmd_neonserv_down.c"
-#include "cmd_neonserv_upall.c"
-#include "cmd_neonserv_downall.c"
-#include "cmd_neonserv_op.c"
-#include "cmd_neonserv_opall.c"
-#include "cmd_neonserv_deop.c"
-#include "cmd_neonserv_deopall.c"
-#include "cmd_neonserv_voice.c"
-#include "cmd_neonserv_voiceall.c"
-#include "cmd_neonserv_devoice.c"
-#include "cmd_neonserv_devoiceall.c"
-#include "cmd_neonserv_uset.c"
-#include "cmd_neonserv_kick.c"
-#include "cmd_neonserv_kickban.c"
-#include "cmd_neonserv_ban.c"
-#include "cmd_neonserv_unban.c"
-#include "cmd_neonserv_unbanall.c"
-#include "cmd_neonserv_unbanme.c"
-#include "cmd_neonserv_suspend.c"
-#include "cmd_neonserv_unsuspend.c"
-#include "cmd_neonserv_wipeinfo.c"
-#include "cmd_neonserv_addban.c"
-#include "cmd_neonserv_addtimeban.c"
-#include "cmd_neonserv_delban.c"
-#include "cmd_neonserv_bans.c"
-//#include "cmd_neonserv_open.c"
-#include "cmd_neonserv_topic.c"
-#include "cmd_neonserv_mode.c"
-#include "cmd_neonserv_invite.c"
-#include "cmd_neonserv_inviteme.c"
-//#include "cmd_neonserv_info.c"
-#include "cmd_neonserv_netinfo.c"
-#include "cmd_neonserv_peek.c"
-#include "cmd_neonserv_set.c" /* TODO: parse, check and set modelock */
-#include "cmd_neonserv_resync.c"
-#include "cmd_neonserv_help.c"
-#include "cmd_neonserv_version.c"
-#include "cmd_neonserv_chanservsync.c"
-#include "cmd_neonserv_events.c"
-#include "cmd_neonserv_command.c"
-
-//OPER CMD's
-#include "cmd_neonserv_bind.c"
-#include "cmd_neonserv_unbind.c"
-//#include "cmd_neonserv_modcmd.c"
-#include "cmd_neonserv_register.c"
-#include "cmd_neonserv_unregister.c"
-#include "cmd_neonserv_recover.c"
-//#include "cmd_neonserv_allowregister.c"
-//#include "cmd_neonserv_noregister.c"
-#include "cmd_neonserv_god.c"
-//#include "cmd_neonserv_expire.c"
-#include "cmd_neonserv_csuspend.c"
-#include "cmd_neonserv_cunsuspend.c"
-//#include "cmd_neonserv_unvisited.c"
-//#include "cmd_neonserv_merge.c"
-#include "cmd_neonserv_move.c"
-//#include "cmd_neonserv_dnrsearch.c"
-#include "cmd_neonserv_search.c"
-#include "cmd_neonserv_trace.c"
-#include "cmd_neonserv_say.c"
-#include "cmd_neonserv_emote.c"
-#include "cmd_neonserv_notice.c"
-#include "cmd_neonserv_raw.c"
-#include "cmd_neonserv_reloadlang.c"
-#include "cmd_neonserv_oplog.c"
-//#include "cmd_neonserv_rename.c"
-#include "cmd_neonserv_setaccess.c"
-
-//HARDCODED FUN CMD's
-//#include "cmd_neonserv_iplocate.c"
-//#include "cmd_neonserv_calc.c"
-
//EVENTS
#include "event_neonserv_join.c"
#include "event_neonserv_part.c"
#include "event_neonserv_invite.c"
#include "event_neonserv_topic.c"
-static struct ClientSocket *getBotForChannel(struct ChanNode *chan) {
+struct ClientSocket *getBotForChannel(struct ChanNode *chan) {
struct ClientSocket *bot, *use_bot = NULL, *second_bot = NULL, *third_bot = NULL;
struct ChanUser *chanuser;
for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) {
}
}
-static TIMEQ_CALLBACK(channel_ban_timeout) {
+TIMEQ_CALLBACK(channel_ban_timeout) {
char *str_banid = data;
MYSQL_RES *res;
MYSQL_ROW row;
#define _bot_NeonServ_h
#include "main.h"
+#include "timeq.h"
+
+struct ChanNode;
void init_NeonServ();
void loop_NeonServ();
void free_NeonServ();
+TIMEQ_CALLBACK(channel_ban_timeout);
+struct ClientSocket *getBotForChannel(struct ChanNode *chan);
+
#endif
\ No newline at end of file
--- /dev/null
+#ifndef _cmd_neonserv_h
+#define _cmd_neonserv_h
+#include "main.h"
+#include "modcmd.h"
+#include "IRCParser.h"
+#include "IRCEvents.h"
+#include "UserNode.h"
+#include "ChanNode.h"
+#include "ChanUser.h"
+#include "ModeNode.h"
+#include "BanNode.h"
+#include "ClientSocket.h"
+#include "mysqlConn.h"
+#include "lang.h"
+#include "HandleInfoHandler.h"
+#include "WHOHandler.h"
+#include "DBHelper.h"
+#include "tools.h"
+#include "timeq.h"
+#include "version.h"
+#include "EventLogger.h"
+#include "bot_NeonServ.h"
+
+CMD_BIND(neonserv_cmd_access);
+CMD_BIND(neonserv_cmd_addban);
+CMD_BIND(neonserv_cmd_addtimeban);
+CMD_BIND(neonserv_cmd_adduser);
+CMD_BIND(neonserv_cmd_ban);
+CMD_BIND(neonserv_cmd_bans);
+CMD_BIND(neonserv_cmd_bind);
+CMD_BIND(neonserv_cmd_chanservsync);
+CMD_BIND(neonserv_cmd_clvl);
+CMD_BIND(neonserv_cmd_command);
+CMD_BIND(neonserv_cmd_csuspend);
+CMD_BIND(neonserv_cmd_cunsuspend);
+CMD_BIND(neonserv_cmd_delban);
+CMD_BIND(neonserv_cmd_delme);
+CMD_BIND(neonserv_cmd_deluser);
+CMD_BIND(neonserv_cmd_deop);
+CMD_BIND(neonserv_cmd_deopall);
+CMD_BIND(neonserv_cmd_devoice);
+CMD_BIND(neonserv_cmd_devoiceall);
+CMD_BIND(neonserv_cmd_down);
+CMD_BIND(neonserv_cmd_downall);
+CMD_BIND(neonserv_cmd_emote);
+CMD_BIND(neonserv_cmd_events);
+CMD_BIND(neonserv_cmd_giveowner);
+CMD_BIND(neonserv_cmd_god);
+CMD_BIND(neonserv_cmd_help);
+CMD_BIND(neonserv_cmd_invite);
+CMD_BIND(neonserv_cmd_inviteme);
+CMD_BIND(neonserv_cmd_kick);
+CMD_BIND(neonserv_cmd_kickban);
+CMD_BIND(neonserv_cmd_mdeluser);
+CMD_BIND(neonserv_cmd_mode);
+CMD_BIND(neonserv_cmd_move);
+CMD_BIND(neonserv_cmd_myaccess);
+CMD_BIND(neonserv_cmd_netinfo);
+CMD_BIND(neonserv_cmd_notice);
+CMD_BIND(neonserv_cmd_op);
+CMD_BIND(neonserv_cmd_opall);
+CMD_BIND(neonserv_cmd_oplog);
+CMD_BIND(neonserv_cmd_peek);
+CMD_BIND(neonserv_cmd_raw);
+CMD_BIND(neonserv_cmd_recover);
+CMD_BIND(neonserv_cmd_register);
+CMD_BIND(neonserv_cmd_reloadlang);
+CMD_BIND(neonserv_cmd_resync);
+CMD_BIND(neonserv_cmd_say);
+CMD_BIND(neonserv_cmd_search);
+CMD_BIND(neonserv_cmd_set);
+CMD_BIND(neonserv_cmd_setaccess);
+CMD_BIND(neonserv_cmd_suspend);
+CMD_BIND(neonserv_cmd_topic);
+CMD_BIND(neonserv_cmd_trace);
+CMD_BIND(neonserv_cmd_trim);
+CMD_BIND(neonserv_cmd_unban);
+CMD_BIND(neonserv_cmd_unbanall);
+CMD_BIND(neonserv_cmd_unbanme);
+CMD_BIND(neonserv_cmd_unbind);
+CMD_BIND(neonserv_cmd_unregister);
+CMD_BIND(neonserv_cmd_unsuspend);
+CMD_BIND(neonserv_cmd_up);
+CMD_BIND(neonserv_cmd_upall);
+CMD_BIND(neonserv_cmd_users);
+CMD_BIND(neonserv_cmd_uset);
+CMD_BIND(neonserv_cmd_version);
+CMD_BIND(neonserv_cmd_voice);
+CMD_BIND(neonserv_cmd_voiceall);
+CMD_BIND(neonserv_cmd_wipeinfo);
+
+#endif
\ No newline at end of file
+#include "cmd_neonserv.h"
+
/*
* argv[0] - nick / *auth
*/
char *nick;
};
-static CMD_BIND(neonserv_cmd_access) {
+CMD_BIND(neonserv_cmd_access) {
if(argc == 0) {
if(!(user->flags & USERFLAG_ISAUTHED)) {
struct neonserv_cmd_access_cache *cache = malloc(sizeof(*cache));
+#include "cmd_neonserv.h"
+
/*
* argv[0] nick|*auth|*!*@mask
* argv[1-*] reason
char *reason;
};
-static CMD_BIND(neonserv_cmd_addban) {
+CMD_BIND(neonserv_cmd_addban) {
struct neonserv_cmd_addban_cache *cache = malloc(sizeof(*cache));
if (!cache) {
perror("malloc() failed");
+#include "cmd_neonserv.h"
+
/*
* argv[0] nick|*auth|*!*@mask
* argv[1] time
char *reason;
};
-static CMD_BIND(neonserv_cmd_addtimeban) {
+CMD_BIND(neonserv_cmd_addtimeban) {
int duration = strToTime(user, argv[1]);
if(duration < 30) {
reply(getTextBot(), user, "NS_TIMEBAN_DURATION_TOO_SHORT", 30);
+#include "cmd_neonserv.h"
+
/*
* argv[0] - nick / *auth
* argv[1] - chan access
char *nick;
};
-static CMD_BIND(neonserv_cmd_adduser) {
+CMD_BIND(neonserv_cmd_adduser) {
int caccess;
MYSQL_RES *res;
MYSQL_ROW row;
+#include "cmd_neonserv.h"
+
/*
* argv[0-*] nick[,*auth[,*!*@mask[...]]]
*/
char *masks;
};
-static CMD_BIND(neonserv_cmd_ban) {
+CMD_BIND(neonserv_cmd_ban) {
struct neonserv_cmd_ban_cache *cache = malloc(sizeof(*cache));
if (!cache) {
perror("malloc() failed");
+#include "cmd_neonserv.h"
+
/*
* argv[0] (optional) mask
*/
-static CMD_BIND(neonserv_cmd_bans) {
+CMD_BIND(neonserv_cmd_bans) {
MYSQL_RES *res;
MYSQL_ROW row;
//ban list
+#include "cmd_neonserv.h"
+
/*
* argv[0] command name
* argv[1] command function
* argv[2-*] parameters (optional)
*/
-static CMD_BIND(neonserv_cmd_bind) {
+CMD_BIND(neonserv_cmd_bind) {
MYSQL_RES *res;
MYSQL_ROW row;
printf_mysql_query("SELECT `function` FROM `bot_binds` WHERE `botclass` = '%d' AND `command` = '%s'", client->botid, escape_string(argv[0]));
+#include "cmd_neonserv.h"
+
/*
* argv[0] - botnick
* argv[1] - key
struct neonserv_cmd_chanservsync_cache *neonserv_cmd_chanservsync_used = NULL;
const char* neonserv_cmd_chanservsync_supported[] = {"ChanServ", NULL};
-static CMD_BIND(neonserv_cmd_chanservsync) {
+CMD_BIND(neonserv_cmd_chanservsync) {
if(neonserv_cmd_chanservsync_used && time(0) - neonserv_cmd_chanservsync_used->last_response < CHANSERVSYNC_END_TIMEOUT) {
reply(getTextBot(), user, "NS_CHANSERVSYNC_INUSE");
return;
+#include "cmd_neonserv.h"
+
/*
* argv[0] - nick / *auth
* argv[1] - access
int access;
};
-static CMD_BIND(neonserv_cmd_clvl) {
+CMD_BIND(neonserv_cmd_clvl) {
int caccess;
caccess = atoi(argv[1]);
if(caccess <= 0 || caccess > 500) {
+#include "cmd_neonserv.h"
+
/*
* argv[0-1] command
*/
static int neonserv_cmd_command_chanaccess(struct cmd_binding *cbind, struct ChanNode *chan);
static int neonserv_cmd_command_operaccess(struct cmd_binding *cbind);
-static CMD_BIND(neonserv_cmd_command) {
+CMD_BIND(neonserv_cmd_command) {
char *ident;
MYSQL_RES *res;
MYSQL_ROW row;
+#include "cmd_neonserv.h"
+
/*
* argv[0] - channel
*/
-static CMD_BIND(neonserv_cmd_csuspend) {
+CMD_BIND(neonserv_cmd_csuspend) {
MYSQL_RES *res;
MYSQL_ROW row;
char *channel = argv[0];
+#include "cmd_neonserv.h"
+
/*
* argv[0] - channel
*/
-static CMD_BIND(neonserv_cmd_cunsuspend) {
+CMD_BIND(neonserv_cmd_cunsuspend) {
MYSQL_RES *res;
MYSQL_ROW row;
char *channel = argv[0];
+#include "cmd_neonserv.h"
+
/*
* argv[0] nick|*auth|*!*@mask
*/
-static CMD_BIND(neonserv_cmd_delban) {
+CMD_BIND(neonserv_cmd_delban) {
char hostmask_buffer[NICKLEN+USERLEN+HOSTLEN+3];
char *mask = make_banmask(argv[0], hostmask_buffer);
int matching_bans = 0;
+#include "cmd_neonserv.h"
+
/*
* argv[0] - key
*/
-static CMD_BIND(neonserv_cmd_delme) {
+CMD_BIND(neonserv_cmd_delme) {
MYSQL_RES *res;
MYSQL_ROW row;
int userid;
+#include "cmd_neonserv.h"
+
/*
* argv[0] - nick / *auth
*/
char *nick;
};
-static CMD_BIND(neonserv_cmd_deluser) {
+CMD_BIND(neonserv_cmd_deluser) {
if(argv[0][0] == '*') {
//we've got an auth
argv[0]++;
+#include "cmd_neonserv.h"
+
/*
* argv[0-*] nicks
*/
int argc;
};
-static CMD_BIND(neonserv_cmd_deop) {
+CMD_BIND(neonserv_cmd_deop) {
struct neonserv_cmd_deop_cache *cache = malloc(sizeof(*cache));
if (!cache) {
perror("malloc() failed");
+#include "cmd_neonserv.h"
+
/*
* argv[0] (optional) nick mask
*/
int argc;
};
-static CMD_BIND(neonserv_cmd_deopall) {
+CMD_BIND(neonserv_cmd_deopall) {
struct neonserv_cmd_deopall_cache *cache = malloc(sizeof(*cache));
if (!cache) {
perror("malloc() failed");
+#include "cmd_neonserv.h"
+
/*
* argv[0-*] nicks
*/
-static CMD_BIND(neonserv_cmd_devoice) {
+CMD_BIND(neonserv_cmd_devoice) {
int i, done_users = 0;
struct UserNode *cuser;
struct ChanUser *chanuser;
+#include "cmd_neonserv.h"
+
/*
* argv[0] (optional) nick mask
*/
-static CMD_BIND(neonserv_cmd_devoiceall) {
+CMD_BIND(neonserv_cmd_devoiceall) {
int issuer_access, victim_access, done_users = 0;
char *nickmask = NULL;
struct ChanUser *chanuser;
+#include "cmd_neonserv.h"
+
/*
* no arguments
*/
-static CMD_BIND(neonserv_cmd_down) {
+CMD_BIND(neonserv_cmd_down) {
struct ChanUser *chanuser = getChanUser(user, chan);
if(!chanuser) {
reply(getTextBot(), user, "NS_NOT_ON_CHANNEL_YOU", chan->name);
+#include "cmd_neonserv.h"
+
/*
* no arguments
*/
-static CMD_BIND(neonserv_cmd_downall) {
+CMD_BIND(neonserv_cmd_downall) {
struct ChanUser *chanuser;
for(chanuser = getUserChannels(user, NULL); chanuser; chanuser = getUserChannels(user, chanuser)) {
chan = chanuser->chan;
+#include "cmd_neonserv.h"
+
/*
* argv[0] target
* argv[1-*] message
*/
-static CMD_BIND(neonserv_cmd_emote) {
+CMD_BIND(neonserv_cmd_emote) {
char *message = merge_argv(argv, 1, argc);
putsock(client, "PRIVMSG %s :\001ACTION %s\001", argv[0], message);
}
\ No newline at end of file
+#include "cmd_neonserv.h"
+
/*
* argv[0] time
* argv[1-*] match
*/
-static CMD_BIND(neonserv_cmd_events) {
+CMD_BIND(neonserv_cmd_events) {
char *str_match;
int duration = (argc ? strToTime(user, argv[0]) : 0);
if(argc > (duration ? 1 : 0))
+#include "cmd_neonserv.h"
+
/*
* argv[0] - nick / *auth
* argv[1] - key
char *key;
};
-static CMD_BIND(neonserv_cmd_giveowner) {
+CMD_BIND(neonserv_cmd_giveowner) {
MYSQL_RES *res;
MYSQL_ROW row;
printf_mysql_query("SELECT `channel_lastgiveowner` FROM `channels` WHERE `channel_id` = '%d'", chan->channel_id);
+#include "cmd_neonserv.h"
+
/*
* argv[0] (optional) on/off
*/
-static CMD_BIND(neonserv_cmd_god) {
+CMD_BIND(neonserv_cmd_god) {
if(argc > 0) {
if(!strcmp(argv[0], "0") || !stricmp(argv[0], "off") || !stricmp(argv[0], get_language_string(user, "NS_SET_OFF"))) {
if(isGodMode(user)) {
+#include "cmd_neonserv.h"
+
/*
* argv[0-*] index
*/
-static CMD_BIND(neonserv_cmd_help) {
+CMD_BIND(neonserv_cmd_help) {
char *ident;
if(argc)
ident = merge_argv(argv, 0, argc);
+#include "cmd_neonserv.h"
+
/*
* argv[0] - nick / *auth
*/
static struct neonserv_cmd_invite_timeout *first_timeout = NULL, *last_timeout = NULL;
-static CMD_BIND(neonserv_cmd_invite) {
+CMD_BIND(neonserv_cmd_invite) {
if(neonserv_cmd_invite_is_timeout(argv[0], chan->name)) {
reply(getTextBot(), user, "NS_INVITE_TIMEOUT", argv[0], chan->name);
return;
+#include "cmd_neonserv.h"
+
/*
* no arguments
*/
-static CMD_BIND(neonserv_cmd_inviteme) {
+CMD_BIND(neonserv_cmd_inviteme) {
if(getChanUser(user, chan)) {
reply(getTextBot(), user, "NS_INVITEME_ON_CHAN", chan->name);
/* BUG
+#include "cmd_neonserv.h"
+
/*
* argv[0] nick[,*auth[,*!*@mask[...]]]
* argv[1-*] reason
char *reason;
};
-static CMD_BIND(neonserv_cmd_kick) {
+CMD_BIND(neonserv_cmd_kick) {
struct neonserv_cmd_kick_cache *cache = malloc(sizeof(*cache));
if (!cache) {
perror("malloc() failed");
+#include "cmd_neonserv.h"
+
/*
* argv[0] nick[,*auth[,*!*@mask[...]]]
* argv[1-*] reason
char *reason;
};
-static CMD_BIND(neonserv_cmd_kickban) {
+CMD_BIND(neonserv_cmd_kickban) {
struct neonserv_cmd_kickban_cache *cache = malloc(sizeof(*cache));
if (!cache) {
perror("malloc() failed");
+#include "cmd_neonserv.h"
+
/*
* argv[0] access (format: minaccess-maxaccess)
* argv[1] pattern
*/
-static CMD_BIND(neonserv_cmd_mdeluser) {
+CMD_BIND(neonserv_cmd_mdeluser) {
if(!checkChannelAccess(user, chan, "channel_candel", 1, 0)) {
reply(getTextBot(), user, "NS_ACCESS_DENIED");
return;
+#include "cmd_neonserv.h"
+
/*
* argv[0] - modes
* argv[1-*] - parameters
char *mode;
};
-static CMD_BIND(neonserv_cmd_mode) {
+CMD_BIND(neonserv_cmd_mode) {
struct neonserv_cmd_mode_cache *cache = malloc(sizeof(*cache));
if (!cache) {
perror("malloc() failed");
+#include "cmd_neonserv.h"
+
/*
* argv[0] - channel
* argv[1] - new channel
*/
-static CMD_BIND(neonserv_cmd_move) {
+CMD_BIND(neonserv_cmd_move) {
MYSQL_RES *res;
MYSQL_ROW row;
char *channel = argv[0];
+#include "cmd_neonserv.h"
+
/*
* argv[0] - nick / *auth
*/
char *chanmatch;
};
-static CMD_BIND(neonserv_cmd_myaccess) {
+CMD_BIND(neonserv_cmd_myaccess) {
char *chanmatch = NULL;
if(argc == 0 || argv[0][0] == '#') {
if(argc != 0) {
+#include "cmd_neonserv.h"
+
/*
* no args
*/
-static CMD_BIND(neonserv_cmd_netinfo) {
+CMD_BIND(neonserv_cmd_netinfo) {
reply(getTextBot(), user, "NS_NETINFO_HEADER");
char tmp[MAXLEN];
struct Table *table;
+#include "cmd_neonserv.h"
+
/*
* argv[0] target
* argv[1-*] message
*/
-static CMD_BIND(neonserv_cmd_notice) {
+CMD_BIND(neonserv_cmd_notice) {
char *message = merge_argv(argv, 1, argc);
putsock(client, "NOTICE %s :%s", argv[0], message);
}
\ No newline at end of file
+#include "cmd_neonserv.h"
+
/*
* argv[0-*] nicks
*/
char *nicks;
};
-static CMD_BIND(neonserv_cmd_op) {
+CMD_BIND(neonserv_cmd_op) {
struct neonserv_cmd_op_cache *cache = malloc(sizeof(*cache));
if (!cache) {
perror("malloc() failed");
+#include "cmd_neonserv.h"
+
/*
* argv[0] "force"
* argv[1] (optional) nick mask
char *nickmask;
};
-static CMD_BIND(neonserv_cmd_opall) {
+CMD_BIND(neonserv_cmd_opall) {
if(!argc || strcmp(argv[0], "FORCE")) {
reply(getTextBot(), user, "NS_OPALL_SECURITY", chan->name);
return;
+#include "cmd_neonserv.h"
+
/*
* argv[0] time
* argv[1-*] match
*/
-static CMD_BIND(neonserv_cmd_oplog) {
+CMD_BIND(neonserv_cmd_oplog) {
char *str_match;
int duration = (argc ? strToTime(user, argv[0]) : 0);
if(argc > (duration ? 1 : 0))
+#include "cmd_neonserv.h"
+
/*
* no parameters
*/
struct UserNode *user;
};
-static CMD_BIND(neonserv_cmd_peek) {
+CMD_BIND(neonserv_cmd_peek) {
struct neonserv_cmd_peek_cache *cache = malloc(sizeof(*cache));
if (!cache) {
perror("malloc() failed");
+#include "cmd_neonserv.h"
+
/*
* argv[0-*] raw
*/
-static CMD_BIND(neonserv_cmd_raw) {
+CMD_BIND(neonserv_cmd_raw) {
char *raw = merge_argv(argv, 0, argc);
putsock(client, "%s", raw);
}
\ No newline at end of file
+#include "cmd_neonserv.h"
+
/*
* argv[0] - channel
*/
-static CMD_BIND(neonserv_cmd_recover) {
+CMD_BIND(neonserv_cmd_recover) {
MYSQL_RES *res;
MYSQL_ROW row, row2;
char *channel = argv[0];
+#include "cmd_neonserv.h"
+
/*
* argv[0] - channel
* argv[0/1] - nick / *auth
char *channel;
};
-static CMD_BIND(neonserv_cmd_register) {
+CMD_BIND(neonserv_cmd_register) {
MYSQL_RES *res;
MYSQL_ROW row;
char *channel = argv[0];
+#include "cmd_neonserv.h"
+
/*
* argv[0] language tag
*/
-static CMD_BIND(neonserv_cmd_reloadlang) {
+CMD_BIND(neonserv_cmd_reloadlang) {
MYSQL_RES *res;
MYSQL_ROW row;
printf_mysql_query("SELECT `text`, `lang` FROM `language` WHERE `ident` = 'name' AND `lang` = '%s'", escape_string(argv[0]));
+#include "cmd_neonserv.h"
+
/*
* argv[0] - usermask
* argv[1] - min access
int max_access;
};
-static CMD_BIND(neonserv_cmd_resync) {
+CMD_BIND(neonserv_cmd_resync) {
int min_access = 0, max_access = 500;
char *usermask = NULL;
if(argc > 0)
+#include "cmd_neonserv.h"
+
/*
* argv[0] target
* argv[1-*] message
*/
-static CMD_BIND(neonserv_cmd_say) {
+CMD_BIND(neonserv_cmd_say) {
char *message = merge_argv(argv, 1, argc);
putsock(client, "PRIVMSG %s :%s", argv[0], message);
}
\ No newline at end of file
+#include "cmd_neonserv.h"
+
#define CMD_SEARCH_FLAG_HAS_NODELETE 0x01
#define CMD_SEARCH_FLAG_NOT_NODELETE 0x02
#define CMD_SEARCH_FLAG_HAS_SUSPENDED 0x04
unsigned int limit : 16;
};
-static CMD_BIND(neonserv_cmd_search) {
+CMD_BIND(neonserv_cmd_search) {
//ok parse the criterias
struct neonserv_cmd_search_criteria *criteria = malloc(sizeof(*criteria));
if (!criteria) {
+#include "cmd_neonserv.h"
+
typedef char* neonserv_cmd_set_function(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument);
static void neonserv_cmd_set_setting(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, int setting, char *argument);
static char* neonserv_cmd_set_trigger(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument);
};
#define MAX_QUERY_LEN 1024
-static CMD_BIND(neonserv_cmd_set) {
+CMD_BIND(neonserv_cmd_set) {
int i, j;
if(argc && !strcmp(argv[0], "defaults")) {
//reset channel settings
+#include "cmd_neonserv.h"
+
/*
* argv[0] - nick / *auth
* argv[1] - global access
char *nick;
};
-static CMD_BIND(neonserv_cmd_setaccess) {
+CMD_BIND(neonserv_cmd_setaccess) {
int caccess;
MYSQL_RES *res;
MYSQL_ROW row;
+#include "cmd_neonserv.h"
+
/*
* argv[0] - nick / *auth
*/
char *nick;
};
-static CMD_BIND(neonserv_cmd_suspend) {
+CMD_BIND(neonserv_cmd_suspend) {
if(argv[0][0] == '*') {
//we've got an auth
argv[0]++;
+#include "cmd_neonserv.h"
+
/*
* ADVANCEDTOPIC enabled
* argv[0] topic id
#define ADVANCEDTOPIC_MAXID 9
-static CMD_BIND(neonserv_cmd_topic) {
+CMD_BIND(neonserv_cmd_topic) {
MYSQL_RES *res;
MYSQL_ROW row, default_row = NULL;
int advanced_topic, i;
+#include "cmd_neonserv.h"
+
#define NS_TRACE_CRITERIA_AUTHED 0x01
#define NS_TRACE_CRITERIA_NUMCHAN 0x02
unsigned int limit : 16;
};
-static CMD_BIND(neonserv_cmd_trace) {
+CMD_BIND(neonserv_cmd_trace) {
//ok parse the criterias
struct neonserv_cmd_trace_criteria *criteria = malloc(sizeof(*criteria));
if (!criteria) {
+#include "cmd_neonserv.h"
+
/*
* argv[0] target (format: minaccess-maxaccess/users/bans)
* argv[1] duration
int duration;
};
-static CMD_BIND(neonserv_cmd_trim) {
+CMD_BIND(neonserv_cmd_trim) {
if(stricmp(argv[0], "bans") && !checkChannelAccess(user, chan, "channel_candel", 0, 0)) {
if(isGodMode(user)) {
event->flags |= CMDFLAG_OPLOG;
+#include "cmd_neonserv.h"
+
/*
* argv[0-*] nick[,*auth[,*!*@mask[...]]]
*/
static void neonserv_cmd_unban_mask(struct neonserv_cmd_unban_cache *cache, char *mask);
static void neonserv_cmd_unban_finish(struct neonserv_cmd_unban_cache *cache);
-static CMD_BIND(neonserv_cmd_unban) {
+CMD_BIND(neonserv_cmd_unban) {
char *mask, *nextmask;
struct ModeBuffer *modeBuf;
modeBuf = initModeBuffer(client, chan);
+#include "cmd_neonserv.h"
+
/*
* argv[0-*] nothing
*/
-static CMD_BIND(neonserv_cmd_unbanall) {
+CMD_BIND(neonserv_cmd_unbanall) {
struct ModeBuffer *modeBuf;
int bans = 0;
struct BanNode *ban;
+#include "cmd_neonserv.h"
+
/*
* argv[0-*] nothing
*/
-static CMD_BIND(neonserv_cmd_unbanme) {
+CMD_BIND(neonserv_cmd_unbanme) {
struct ModeBuffer *modeBuf;
int bans = 0;
struct BanNode *ban;
+#include "cmd_neonserv.h"
+
/*
* argv[0] command name
*/
-static CMD_BIND(neonserv_cmd_unbind) {
+CMD_BIND(neonserv_cmd_unbind) {
MYSQL_RES *res;
MYSQL_ROW row;
printf_mysql_query("SELECT `id` FROM `bot_binds` WHERE `botclass` = '%d' AND `command` = '%s'", client->botid, escape_string(argv[0]));
+#include "cmd_neonserv.h"
+
/*
* argv[0] - channel
*/
-static CMD_BIND(neonserv_cmd_unregister) {
+CMD_BIND(neonserv_cmd_unregister) {
MYSQL_RES *res;
MYSQL_ROW row;
char *channel = argv[0];
+#include "cmd_neonserv.h"
+
/*
* argv[0] - nick / *auth
*/
char *nick;
};
-static CMD_BIND(neonserv_cmd_unsuspend) {
+CMD_BIND(neonserv_cmd_unsuspend) {
if(argv[0][0] == '*') {
//we've got an auth
argv[0]++;
+#include "cmd_neonserv.h"
+
/*
* no arguments
*/
-static CMD_BIND(neonserv_cmd_up) {
+CMD_BIND(neonserv_cmd_up) {
struct ChanUser *chanuser = getChanUser(user, chan);
if(!chanuser) {
reply(getTextBot(), user, "NS_NOT_ON_CHANNEL_YOU", chan->name);
+#include "cmd_neonserv.h"
+
/*
* no arguments
*/
-static CMD_BIND(neonserv_cmd_upall) {
+CMD_BIND(neonserv_cmd_upall) {
MYSQL_RES *res, *default_res;
MYSQL_ROW row, default_row;
struct ChanUser *chanuser;
+#include "cmd_neonserv.h"
+
/*
* argv[0] - usermask
* argv[1] - min access
int max_access;
};
-static CMD_BIND(neonserv_cmd_users) {
+CMD_BIND(neonserv_cmd_users) {
int min_access = 1, max_access = 500;
char *usermask = NULL;
if(argc > 0)
-static CMD_BIND(neonserv_cmd_uset) {
+#include "cmd_neonserv.h"
+
+CMD_BIND(neonserv_cmd_uset) {
MYSQL_RES *res;
MYSQL_ROW row;
loadUserSettings(user);
+#include "cmd_neonserv.h"
+
/*
* no args
*/
-static CMD_BIND(neonserv_cmd_version) {
+CMD_BIND(neonserv_cmd_version) {
reply(getTextBot(), user, "\002NeonServ " NEONSERV_VERSION "\002 (%s), written by pk910", (strcmp(revision, "") ? revision : "-"));
reply(getTextBot(), user, "Build (#%s) %s (%s lines, " COMPILER ")", compilation, creation, codelines);
reply(getTextBot(), user, "NeonServ source can be found on: http://git.pk910.de/?p=NeonServV5.git");
+#include "cmd_neonserv.h"
+
/*
* argv[0-*] nicks
*/
char *nicks;
};
-static CMD_BIND(neonserv_cmd_voice) {
+CMD_BIND(neonserv_cmd_voice) {
struct neonserv_cmd_voice_cache *cache = malloc(sizeof(*cache));
if (!cache) {
perror("malloc() failed");
+#include "cmd_neonserv.h"
+
/*
* argv[0] (optional) nick mask
*/
char *nickmask;
};
-static CMD_BIND(neonserv_cmd_voiceall) {
+CMD_BIND(neonserv_cmd_voiceall) {
struct neonserv_cmd_voiceall_cache *cache = malloc(sizeof(*cache));
if (!cache) {
perror("malloc() failed");
+#include "cmd_neonserv.h"
+
/*
* argv[0] - nick / *auth
*/
char *nick;
};
-static CMD_BIND(neonserv_cmd_wipeinfo) {
+CMD_BIND(neonserv_cmd_wipeinfo) {
if(argv[0][0] == '*') {
//we've got an auth
argv[0]++;