From: pk910 Date: Wed, 17 Aug 2011 05:22:12 +0000 (+0200) Subject: fixed last commits X-Git-Tag: v5.3~529 X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=commitdiff_plain;h=b3f4e38758f442e40fc4834469d113f230c7bc04 fixed last commits --- diff --git a/HandleInfoHandler.c b/HandleInfoHandler.c index 6673552..537cc45 100644 --- a/HandleInfoHandler.c +++ b/HandleInfoHandler.c @@ -8,8 +8,11 @@ #define AUTHSERV_NICK "AuthServ" struct HandleInfoQueueEntry { + struct ClientSocket *client; void *callback; void *data; + + struct HandleInfoQueueEntry *next; }; static struct HandleInfoQueueEntry *first_entry = NULL, *last_entry = NULL; @@ -73,29 +76,29 @@ static void recv_notice(struct UserNode *user, struct UserNode *target, char *me if(bot->user == target) break; } if(!bot) return; - char *auth; - int match = 0, exists = 0; + char *auth = NULL; + int do_match = 0, exists = 0; char *tmp; //messages to parse: // Account * has not been registered. // Account information for Skynet: if(!match("Account * has not been registered.", message)) { - match = 1; + do_match = 1; tmp = strstr(message, "\002"); auth = tmp+1; tmp = strstr(auth, "\002"); *tmp = '\0'; } if(!match("Account information for *", message)) { - match = 1; + do_match = 1; exists = 1; tmp = strstr(message, "\002"); auth = tmp+1; tmp = strstr(auth, "\002"); *tmp = '\0'; } - if(match) { - struct HandleInfoQueueEntry* entry = getNextHandleInfoQueueEntry(client, 1); + if(do_match) { + struct HandleInfoQueueEntry* entry = getNextHandleInfoQueueEntry(bot, 1); authlookup_callback_t *callback = entry->callback; callback(auth, exists, entry->data); free(entry); diff --git a/WHOHandler.c b/WHOHandler.c index f3da915..692093e 100644 --- a/WHOHandler.c +++ b/WHOHandler.c @@ -143,7 +143,7 @@ void recv_whohandler_354(struct ClientSocket *client, char **argv, unsigned int } } else if(type & WHOQUEUETYPE_USERAUTH) { //:OGN2.OnlineGamesNet.net 354 Skynet 1 pk910 2001:41d0:2:1d3b::babe Skynet pk910 - entry->flags |= WHOQUEUETYPE_FOUND; + entry->type |= WHOQUEUETYPE_FOUND; if(!strcmp(argv[5], "0") && !(entry->user->flags & USERFLAG_ISAUTHED)) { strcpy(entry->user->auth, argv[5]); entry->user->flags |= USERFLAG_ISAUTHED; @@ -166,7 +166,7 @@ void recv_whohandler_315(struct ClientSocket *client, char **argv, unsigned int userlist_callback_t *callback = entry->callback; callback(client, entry->chan, entry->data); } else if(type & WHOQUEUETYPE_USERAUTH) { - if(!(entry->flags & WHOQUEUETYPE_FOUND)) { + if(!(entry->type & WHOQUEUETYPE_FOUND)) { userauth_callback_t *callback = entry->callback; callback(client, NULL, entry->data); } diff --git a/bot_NeonServ.c b/bot_NeonServ.c index e8ced62..0005492 100644 --- a/bot_NeonServ.c +++ b/bot_NeonServ.c @@ -8,7 +8,8 @@ #include "ClientSocket.h" #include "mysqlConn.h" #include "lang.h" -#include "HandleInfoHandle.h" +#include "HandleInfoHandler.h" +#include "WHOHandler.h" #define BOTID 1 #define CLASSNAME "NeonServ" @@ -22,6 +23,7 @@ INCLUDE ALL CMD's HERE */ #include "cmd_neonserv_users.c" #include "cmd_neonserv_modes.c" +#include "cmd_neonserv_adduser.c" static void neonserv_bot_ready(struct ClientSocket *client) { MYSQL_RES *res; diff --git a/cmd_neonserv_adduser.c b/cmd_neonserv_adduser.c index 5d3983e..5e01854 100644 --- a/cmd_neonserv_adduser.c +++ b/cmd_neonserv_adduser.c @@ -1,6 +1,6 @@ /* -* argv[0] - nick/*auth +* argv[0] - nick / *auth * argv[1] - chan access */ static AUTHLOOKUP_CALLBACK(neonserv_cmd_adduser_auth_lookup); @@ -16,24 +16,24 @@ struct neonserv_cmd_adduser_cache { }; static CMD_BIND(neonserv_cmd_adduser) { - int access; + int caccess; MYSQL_RES *res; MYSQL_ROW row; check_mysql(); //check acccess - access = atoi(argv[1]); + caccess = atoi(argv[1]); if(argv[0][0] == '*') { //we've got an auth argv[0]++; printf_mysql_query("SELECT `user_user` FROM `users` WHERE `user_user` = '%s'", escape_string(argv[0])); res = mysql_use(); if ((row = mysql_fetch_row(res)) != NULL) { - neonserv_cmd_adduser_async1(client, getTextBot(), user, chan, argv[0], row[0], access); + neonserv_cmd_adduser_async1(client, getTextBot(), user, chan, argv[0], row[0], caccess); } else { //we need to create a new user... //but first lookup the auth to check if it really exists struct neonserv_cmd_adduser_cache *cache = malloc(sizeof(*cache)); - if (!user) { + if (!cache) { perror("malloc() failed"); return; } @@ -41,21 +41,21 @@ static CMD_BIND(neonserv_cmd_adduser) { cache->textclient = getTextBot(); cache->user = user; cache->chan = chan; - cache->access = access; + cache->access = caccess; cache->nick = strdup(argv[0]); lookup_authname(argv[0], neonserv_cmd_adduser_auth_lookup, cache); } } else { - struct UserNode *user = getUserByNick(argv[0]); - if(!user) { - user = createTempUser(from); - user->flags |= USERFLAG_ISTMPUSER; + struct UserNode *cuser = getUserByNick(argv[0]); + if(!cuser) { + cuser = createTempUser(argv[0]); + cuser->flags |= USERFLAG_ISTMPUSER; } - if(user->flags & USERFLAG_ISAUTHED) { - neonserv_cmd_adduser_async1(client, getTextBot(), user, chan, argv[0], user->auth, access); + if(cuser->flags & USERFLAG_ISAUTHED) { + neonserv_cmd_adduser_async1(client, getTextBot(), user, chan, argv[0], cuser->auth, caccess); } else { struct neonserv_cmd_adduser_cache *cache = malloc(sizeof(*cache)); - if (!user) { + if (!cache) { perror("malloc() failed"); return; } @@ -63,10 +63,9 @@ static CMD_BIND(neonserv_cmd_adduser) { cache->textclient = getTextBot(); cache->user = user; cache->chan = chan; - cache->access = access; + cache->access = caccess; cache->nick = strdup(argv[0]); - lookup_authname(argv[0], neonserv_cmd_adduser_nick_lookup, cache); - get_userauth(user, command_checked_auth, data); + get_userauth(cuser, neonserv_cmd_adduser_nick_lookup, cache); } } } @@ -95,7 +94,7 @@ static USERAUTH_CALLBACK(neonserv_cmd_adduser_nick_lookup) { free(cache); } -static void neonserv_cmd_adduser_async1(struct ClientSocket *client, struct ClientSocket *textclient, struct UserNode *user, struct ChanNode *chan, char *nick, char *auth, int access) { +static void neonserv_cmd_adduser_async1(struct ClientSocket *client, struct ClientSocket *textclient, struct UserNode *user, struct ChanNode *chan, char *nick, char *auth, int caccess) { //we've got a valid auth now... - putsock(client, "PRIVMSG %s :%s: %s %d", chan->name, nick, auth, access); + putsock(client, "PRIVMSG %s :%s: %s %d", chan->name, nick, auth, caccess); } diff --git a/tools.c b/tools.c index 19f1521..32d4ab3 100644 --- a/tools.c +++ b/tools.c @@ -55,14 +55,14 @@ int match(const char *mask, const char *name) for (n_tmp = n; *n && *n != *m; n++) ; } else { m_tmp = m; - for (n_tmp = n; *n && ToLower(*n) != ToLower(*m); n++) ; + for (n_tmp = n; *n && tolower(*n) != tolower(*m); n++) ; } } /* and fall through */ default: if (!*n) return *m != '\0'; - if (ToLower(*m) != ToLower(*n)) + if (tolower(*m) != tolower(*n)) goto backtrack; m++; n++;