X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fcmd_neonserv_access.c;h=25b2501c96b6008f34424a8a60fe9602e2fa287d;hb=cb3a4cb7d17ae071499ce4a1030e95e1eb356100;hp=fa69f44f05378180e1f5f48259e2e574f720ffbd;hpb=29eabaf1a49a1accda939fbdef6dad9bd3356b94;p=NeonServV5.git diff --git a/src/cmd_neonserv_access.c b/src/cmd_neonserv_access.c index fa69f44..25b2501 100644 --- a/src/cmd_neonserv_access.c +++ b/src/cmd_neonserv_access.c @@ -1,3 +1,19 @@ +/* cmd_neonserv_access.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 . + */ #include "cmd_neonserv.h" @@ -40,6 +56,10 @@ CMD_BIND(neonserv_cmd_access) { struct UserNode *cuser = getUserByNick(argv[0]); if(!cuser) { cuser = createTempUser(argv[0]); + if(!cuser) { + reply(getTextBot(), user, "NS_USER_UNKNOWN", argv[0]); + return; + } cuser->flags |= USERFLAG_ISTMPUSER; } if(cuser->flags & USERFLAG_ISAUTHED) { @@ -91,6 +111,11 @@ static void neonserv_cmd_access_async1(struct ClientSocket *client, struct Clien //check if the user is already added printf_mysql_query("SELECT `chanuser_access`, `chanuser_flags`, `chanuser_infoline` FROM `chanusers` WHERE `chanuser_cid` = '%d' AND `chanuser_uid` = '%d'", chan->channel_id, userid); res = mysql_use(); + if(strcmp(user_row[3], "0") && strcmp(user_row[4], "")) { + char rank_info[MAXLEN]; + neonserv_cmd_access_filter_ranking_info(user_row[4], rank_info, nick, auth, user_row[5]); + reply(textclient, user, "%s", rank_info); + } if ((chanuser_row = mysql_fetch_row(res)) != NULL) { //access output if(nick) @@ -102,25 +127,15 @@ static void neonserv_cmd_access_async1(struct ClientSocket *client, struct Clien reply(textclient, user, "NS_A_SUSPENDED", (nick ? nick : auth), chan->name); if(chanuser_row[2] && strcmp(chanuser_row[2], "")) reply(textclient, user, "[%s] %s", (nick ? nick : auth), chanuser_row[2]); - if(strcmp(user_row[3], "0") && strcmp(user_row[4], "")) { - char rank_info[MAXLEN]; - neonserv_cmd_access_filter_ranking_info(user_row[4], rank_info, nick, auth, user_row[5]); - reply(textclient, user, "%s", rank_info); - } } else if(!strcmp(user_row[2], "1")) { if(nick) reply(textclient, user, "NS_A_LACKS_ACCESS_BUT_GOD_AUTH", nick, auth, chan->name); else reply(textclient, user, "NS_A_LACKS_ACCESS_BUT_GOD_NICK", auth, chan->name); - if(strcmp(user_row[3], "0") && strcmp(user_row[4], "")) { - char rank_info[MAXLEN]; - neonserv_cmd_access_filter_ranking_info(user_row[4], rank_info, nick, auth, user_row[5]); - reply(textclient, user, "%s", rank_info); - } } else - reply(textclient, user, "NS_NOT_ON_USERLIST", nick, chan->name); + reply(textclient, user, "NS_NOT_ON_USERLIST", (nick ? nick : auth), chan->name); } else - reply(textclient, user, "NS_NOT_ON_USERLIST", nick, chan->name); + reply(textclient, user, "NS_NOT_ON_USERLIST", (nick ? nick : auth), chan->name); if(target && (target->flags & USERFLAG_ISIRCOP)) reply(textclient, user, "NS_A_IS_IRCOP", nick); }