1 /* cmd_neonserv_debug.c - NeonServ v5.0
2 * Copyright (C) 2011 Philipp Kreil (pk910)
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 #include "cmd_neonserv.h"
20 CMD_BIND(neonserv_cmd_debug) {
22 reply(getTextBot(), user, "HEAVY DEBUG!");
23 struct ChanNode *dbg_chan;
24 struct ChanUser *dbg_chanuser, *dbg_chanuser2;
25 struct UserNode *dbg_user;
27 reply(getTextBot(), user, "CHANNEL TRACE:");
28 for(dbg_chan = getAllChans(NULL); dbg_chan; dbg_chan = getAllChans(dbg_chan)) {
29 reply(getTextBot(), user, " \0037%s\003 [0x%08x] (ChanUsers: %d)", dbg_chan->name, dbg_chan, dbg_chan->usercount);
30 for(dbg_chanuser = dbg_chan->user; dbg_chanuser; dbg_chanuser = dbg_chanuser->next_user) {
31 reply(getTextBot(), user, " \0032%s@%s\003 [0x%08x] [UserNode: %08x] [ChanNode: %08x]", dbg_chanuser->user->nick, dbg_chanuser->chan->name, dbg_chanuser, dbg_chanuser->user, dbg_chanuser->chan);
32 dbg_user = dbg_chanuser->user;
33 dbg_string = "\0034fail\003";
34 for(dbg_chanuser2 = dbg_user->channel; dbg_chanuser2; dbg_chanuser2 = dbg_chanuser2->next_chan) {
35 if(dbg_chanuser2->chan == dbg_chan) {
36 dbg_string = "\0033OK\003";
40 reply(getTextBot(), user, " check for user->channel entry: %s", dbg_string);
43 reply(getTextBot(), user, "USER TRACE:");
44 for(dbg_user = getAllUsers(NULL); dbg_user; dbg_user = getAllUsers(dbg_user)) {
45 reply(getTextBot(), user, " \0037%s\003 [0x%08x] (Host: %s@%s Auth: %s)", dbg_user->nick, dbg_user, dbg_user->ident, dbg_user->host, ((dbg_user->flags & USERFLAG_ISAUTHED) ? dbg_user->auth : "*"));
46 for(dbg_chanuser = dbg_user->channel; dbg_chanuser; dbg_chanuser = dbg_chanuser->next_chan) {
47 reply(getTextBot(), user, " \0032%s@%s\003 [0x%08x] [UserNode: %08x] [ChanNode: %08x]", dbg_chanuser->user->nick, dbg_chanuser->chan->name, dbg_chanuser, dbg_chanuser->user, dbg_chanuser->chan);
48 dbg_chan = dbg_chanuser->chan;
49 dbg_string = "\0034fail\003";
50 for(dbg_chanuser2 = dbg_chan->user; dbg_chanuser2; dbg_chanuser2 = dbg_chanuser2->next_user) {
51 if(dbg_chanuser2->user == dbg_user) {
52 dbg_string = "\0033OK\003";
56 reply(getTextBot(), user, " check for channel->user entry: %s", dbg_string);