X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fbots.c;h=1d95e182a05799ffdb7198e90dcefceb3b50ab31;hb=6139e830d50d2c8f995e65f7d98a983884e24f83;hp=6f64c5e1cb0ebfb2c3f99f81288f9955898b2459;hpb=cbe6ef12f3808f863e2143def86c696b46716b1e;p=NeonServV5.git diff --git a/src/bots.c b/src/bots.c index 6f64c5e..1d95e18 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%s.%d by pk910 (%s)", NEONSERV_VERSION, patchlevel, (strcmp(revision, "") ? revision : "-")); + return 1; + } + if(!stricmp(command, "FINGER")) { + sprintf(buffer, "FINGER NeonServ v%s.%d (%s) build %s lines C code using " COMPILER " (see +netinfo)", NEONSERV_VERSION, patchlevel, (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; +}