-/* cmd_neonserv_myaccess.c - NeonServ v5.1
- * Copyright (C) 2011 Philipp Kreil (pk910)
+/* cmd_neonserv_myaccess.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
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) {
static void neonserv_cmd_myaccess_async1(struct ClientSocket *client, struct ClientSocket *textclient, struct UserNode *user, struct ChanNode *chan, char *nick, char *auth, char *chanmatch) {
//we've got a valid auth now...
+ if(stricmp(user->auth, auth) && !isGodMode(user)) {
+ reply(textclient, user, "NS_MYACCESS_SELF_ONLY");
+ return;
+ }
MYSQL_RES *res, *default_res;
MYSQL_ROW user_row, chanuser_row, default_chan = NULL;
char flagBuf[5];
if ((user_row = mysql_fetch_row(res)) != NULL) {
userid = atoi(user_row[0]);
//check if the user is already added
- printf_mysql_query("SELECT `chanuser_access`, `chanuser_flags`, `chanuser_infoline`, `channel_name`, `channel_getop`, `channel_getvoice`, `botid` FROM `chanusers` LEFT JOIN `channels` ON `chanuser_cid` = `channel_id` LEFT JOIN `bot_channels` ON `chanuser_cid` = `chanid` LEFT JOIN `bots` ON `bots`.`id` = `botid` WHERE `chanuser_uid` = '%d' AND `botclass` = '%d' ORDER BY `chanuser_access` DESC, `channel_name` ASC", userid, client->botid);
+ printf_mysql_query("SELECT `chanuser_access`, `chanuser_flags`, `chanuser_infoline`, `channel_name`, `channel_getop`, `channel_getvoice`, `botid` FROM `chanusers` LEFT JOIN `channels` ON `chanuser_cid` = `channel_id` LEFT JOIN `bot_channels` ON `chanuser_cid` = `chanid` LEFT JOIN `bots` ON `bots`.`id` = `botid` WHERE `chanuser_uid` = '%d' AND `botclass` = '%d' AND `active` = '1' ORDER BY `chanuser_access` DESC, `channel_name` ASC", userid, client->botid);
res = mysql_use();
total_count = mysql_num_rows(res);
table = table_init(4, total_count + 1, 0);
flagPos += sprintf(flagBuf + flagPos, "v");
if((cflags & DB_CHANUSER_AUTOINVITE))
flagPos += sprintf(flagBuf + flagPos, "i");
- content[2] = flagBuf;
+ content[2] = (flagPos ? flagBuf : "");
content[3] = chanuser_row[2];
table_add(table, content);
}
} else {
reply(textclient, user, "NS_MYACCESS_COUNT", auth, total_count, owner_count);
}
+ table_free(table);
}