X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=UserNode.c;h=2ced2eb5b88d3f3129173b9b867a0fbf3823d048;hb=795115bf680185ae01043bd1222b78bfed8c1d87;hp=d85cceb9a4fc4e7ee0e86c0ecdeab18668e45d47;hpb=155620f8da656265315732e3379a9dd87e555806;p=NeonServV5.git diff --git a/UserNode.c b/UserNode.c index d85cceb..2ced2eb 100644 --- a/UserNode.c +++ b/UserNode.c @@ -1,7 +1,6 @@ #include "UserNode.h" #include "ChanUser.h" -#include "mysqlConn.h" -#include "lang.h" +#include "tools.h" static struct UserNode **userList; @@ -103,6 +102,58 @@ struct UserNode* searchUserByNick(const char *nick) { //case insensitive return NULL; } +int countUsersWithHost(char *host) { + int i, count = 0; + struct UserNode *user; + for(i = 0; i < VALID_NICK_CHARS_FIRST_LEN+1; i++) { + for(user = userList[i]; user; user = user->next) { + if(!strcmp(user->host, host)) { + count++; + } + } + } + return count; +} + +char *getAuthFakehost(char *auth) { + int i; + struct UserNode *user; + for(i = 0; i < VALID_NICK_CHARS_FIRST_LEN+1; i++) { + for(user = userList[i]; user; user = user->next) { + if((user->flags & USERFLAG_ISAUTHED) && !strcmp(user->auth, auth) && isFakeHost(user->host)) { + return user->host; + } + } + } + return NULL; +} + +struct UserNode* getAllUsers(struct UserNode *last) { + if(last == NULL || last->next == NULL) { + int cindex; + if(last == NULL) + cindex = 0; + else + cindex = get_nicklist_entry(last->nick[0]) + 1; + while(userList[cindex] == NULL && cindex <= VALID_NICK_CHARS_FIRST_LEN) + cindex++; + if(cindex > VALID_NICK_CHARS_FIRST_LEN) return NULL; + return userList[cindex]; + } else + return last->next; +} + +int getUserCount() { + int i, count = 0; + struct UserNode *user; + for(i = 0; i < VALID_NICK_CHARS_FIRST_LEN+1; i++) { + for(user = userList[i]; user; user = user->next) { + count++; + } + } + return count; +} + struct UserNode* addUser(const char *nick) { int userListIndex = get_nicklist_entry(*nick); if(userListIndex == -1 || !is_valid_nick(nick)) @@ -278,29 +329,3 @@ void clearTempUsers() { last_user = cuser; } } - - -void load_user_settings(struct UserNode *user) { - if(!(user->flags & USERFLAG_ISAUTHED) || (user->flags & USERFLAG_LOADED_SETTINGS)) - return; - check_mysql(); - MYSQL_RES *res; - MYSQL_ROW row; - printf_mysql_query("SELECT `user_lang`, `user_reply_privmsg`, `user_god` FROM `users` WHERE `user_user` = '%s'", escape_string(user->auth)); - res = mysql_use(); - if ((row = mysql_fetch_row(res)) != NULL) { - user->language = get_language_by_tag(row[0]); - if(user->language == NULL) user->language = get_default_language(); - if(strcmp(row[1], "0")) - user->flags |= USERFLAG_REPLY_PRIVMSG; - if(strcmp(row[2], "0")) - user->flags |= USERFLAG_GOD_MODE; - } else - user->language = get_default_language(); - user->flags |= USERFLAG_LOADED_SETTINGS; -} - -int isGodMode(struct UserNode *user) { - load_user_settings(user); - return (user->flags & USERFLAG_GOD_MODE); -}