From: pk910 Date: Tue, 18 Oct 2011 21:22:35 +0000 (+0200) Subject: moved privctcp handler and use it for both bots X-Git-Tag: v5.3~281 X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=commitdiff_plain;h=cf2f1f690c661ed1b98afc5842a395b840db6769 moved privctcp handler and use it for both bots --- diff --git a/src/bot_NeonServ.c b/src/bot_NeonServ.c index ea5b662..345b635 100644 --- a/src/bot_NeonServ.c +++ b/src/bot_NeonServ.c @@ -32,7 +32,6 @@ #include "DBHelper.h" #include "tools.h" #include "timeq.h" -#include "version.h" #include "EventLogger.h" #include "cmd_neonserv.h" @@ -506,7 +505,7 @@ void init_NeonServ() { bind_part(neonserv_event_part); bind_quit(neonserv_event_quit); bind_chanctcp(neonserv_event_chanctcp); - bind_privctcp(neonserv_event_privctcp); + bind_privctcp(general_event_privctcp); bind_channotice(neonserv_event_channotice); bind_topic(neonserv_event_topic); bind_invite(neonserv_event_invite); diff --git a/src/bot_NeonSpam.c b/src/bot_NeonSpam.c index c4e92bc..19a14b0 100644 --- a/src/bot_NeonSpam.c +++ b/src/bot_NeonSpam.c @@ -115,6 +115,7 @@ void init_NeonSpam() { //register events bind_bot_ready(neonspam_bot_ready); //bind_join(neonspam_event_join); + bind_privctcp(general_event_privctcp); set_trigger_callback(BOTID, neonspam_trigger_callback); diff --git a/src/bots.c b/src/bots.c index 6f64c5e..bd7f4a6 100644 --- a/src/bots.c +++ b/src/bots.c @@ -22,6 +22,7 @@ #include "UserNode.h" #include "ChanNode.h" #include "ChanUser.h" +#include "version.h" #include "bot_NeonServ.h" #include "bot_NeonSpam.h" @@ -93,3 +94,43 @@ TIMEQ_CALLBACK(channel_ban_timeout) { } free(str_banid); } + +static int general_ctcp(char *buffer, char *command, char *text); + +void general_event_privctcp(struct UserNode *user, struct UserNode *target, char *command, char *text) { + char ctcpBuf[MAXLEN]; + if(general_ctcp(ctcpBuf, command, text)) { + struct ClientSocket *bot; + for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) { + if(bot->user == target) break; + } + if(bot) + putsock(bot, "NOTICE %s :\001%s\001", user->nick, ctcpBuf); + } +} + +static int general_ctcp(char *buffer, char *command, char *text) { + if(!stricmp(command, "VERSION")) { + sprintf(buffer, "VERSION NeonServ v" NEONSERV_VERSION " by pk910 (%s)", (strcmp(revision, "") ? revision : "-")); + return 1; + } + if(!stricmp(command, "FINGER")) { + sprintf(buffer, "FINGER NeonServ v" NEONSERV_VERSION " (%s) build %s lines C code using " COMPILER " (see +netinfo)", (strcmp(revision, "") ? revision : "-"), codelines); + return 1; + } + if(!stricmp(command, "PING")) { + sprintf(buffer, "PING %s", (text ? text : "0")); + return 1; + } + if(!stricmp(command, "TIME")) { + time_t rawtime; + struct tm *timeinfo; + char timeBuf[80]; + time(&rawtime); + timeinfo = localtime(&rawtime); + strftime(timeBuf, 80, "%c", timeinfo); + sprintf(buffer, "TIME %s", timeBuf); + return 1; + } + return 0; +} diff --git a/src/bots.h b/src/bots.h index c0dcd29..742544b 100644 --- a/src/bots.h +++ b/src/bots.h @@ -20,6 +20,7 @@ #include "main.h" #include "timeq.h" +struct UserNode; struct ChanNode; struct ClientSocket; @@ -29,5 +30,6 @@ void free_bots(); struct ClientSocket *getChannelBot(struct ChanNode *chan, int botid); TIMEQ_CALLBACK(channel_ban_timeout); +void general_event_privctcp(struct UserNode *user, struct UserNode *target, char *command, char *text); #endif \ No newline at end of file diff --git a/src/event_neonserv_ctcp.c b/src/event_neonserv_ctcp.c index 32d8b89..ec88b84 100644 --- a/src/event_neonserv_ctcp.c +++ b/src/event_neonserv_ctcp.c @@ -25,7 +25,6 @@ struct neonserv_event_ctcp_cache { static USERAUTH_CALLBACK(neonserv_event_ctcp_nick_lookup); static void neonserv_event_ctcp_async1(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, char *command, char *text); -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) @@ -111,40 +110,3 @@ static void neonserv_event_ctcp_async1(struct ClientSocket *client, struct UserN } } -static void neonserv_event_privctcp(struct UserNode *user, struct UserNode *target, char *command, char *text) { - char ctcpBuf[MAXLEN]; - if(neonserv_ctcp(ctcpBuf, command, text)) { - struct ClientSocket *bot; - for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) { - if(bot->user == target) break; - } - if(bot) - putsock(bot, "NOTICE %s :\001%s\001", user->nick, ctcpBuf); - } -} - -static int neonserv_ctcp(char *buffer, char *command, char *text) { - if(!stricmp(command, "VERSION")) { - sprintf(buffer, "VERSION NeonServ v" NEONSERV_VERSION " by pk910 (%s)", (strcmp(revision, "") ? revision : "-")); - return 1; - } - if(!stricmp(command, "FINGER")) { - sprintf(buffer, "FINGER NeonServ v" NEONSERV_VERSION " (%s) build %s lines C code using " COMPILER " (see +netinfo)", (strcmp(revision, "") ? revision : "-"), codelines); - return 1; - } - if(!stricmp(command, "PING")) { - sprintf(buffer, "PING %s", (text ? text : "0")); - return 1; - } - if(!stricmp(command, "TIME")) { - time_t rawtime; - struct tm *timeinfo; - char timeBuf[80]; - time(&rawtime); - timeinfo = localtime(&rawtime); - strftime(timeBuf, 80, "%c", timeinfo); - sprintf(buffer, "TIME %s", timeBuf); - return 1; - } - return 0; -}