X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fevent_neonserv_ctcp.c;h=11d03e25ae99285247b454daf3c8b14b45b93d8f;hb=f90d21daf31f8d69e24406678be696afa8cae962;hp=a8df98e856dc49f8b143eb4979ebe17c964bd52a;hpb=0f1dc61921eef1db8e404a5a82372e2d1cd55daa;p=NeonServV5.git diff --git a/src/event_neonserv_ctcp.c b/src/event_neonserv_ctcp.c index a8df98e..11d03e2 100644 --- a/src/event_neonserv_ctcp.c +++ b/src/event_neonserv_ctcp.c @@ -1,3 +1,19 @@ +/* event_neonserv_ctcp.c - NeonServ v5.3 + * Copyright (C) 2011-2012 Philipp Kreil (pk910) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ struct neonserv_event_ctcp_cache { struct ClientSocket *client; @@ -9,12 +25,12 @@ 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) 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)) { @@ -77,7 +93,7 @@ static void neonserv_event_ctcp_async1(struct ClientSocket *client, struct UserN duration = 3600; banmask = generate_banmask(user, banmaskBuf); printf_mysql_query("INSERT INTO `bans` (`ban_channel`, `ban_mask`, `ban_triggered`, `ban_timeout`, `ban_owner`, `ban_reason`) VALUES ('%d', '%s', UNIX_TIMESTAMP(), '%lu', '%d', '%s')", chan->channel_id, escape_string(banmask), (unsigned long) (time(0) + duration), 0, escape_string(reason)); - int banid = (int) mysql_insert_id(mysql_conn); + int banid = (int) mysql_insert_id(get_mysql_conn()); char nameBuf[MAXLEN]; char banidBuf[20]; sprintf(nameBuf, "ban_%d", banid); @@ -94,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; -}