+ user->SendText(checkstr + " opertype " + oper->name);
+ if (loctarg)
+ {
+ std::string umodes;
+ std::string cmodes;
+ for(char c='A'; c < 'z'; c++)
+ {
+ ModeHandler* mh = ServerInstance->Modes->FindMode(c, MODETYPE_USER);
+ if (mh && mh->NeedsOper() && loctarg->HasModePermission(c, MODETYPE_USER))
+ umodes.push_back(c);
+ mh = ServerInstance->Modes->FindMode(c, MODETYPE_CHANNEL);
+ if (mh && mh->NeedsOper() && loctarg->HasModePermission(c, MODETYPE_CHANNEL))
+ cmodes.push_back(c);
+ }
+ user->SendText(checkstr + " modeperms user=" + umodes + " channel=" + cmodes);
+ std::string opcmds;
+ for(std::set<std::string>::iterator i = oper->AllowedOperCommands.begin(); i != oper->AllowedOperCommands.end(); i++)
+ {
+ opcmds.push_back(' ');
+ opcmds.append(*i);
+ }
+ std::stringstream opcmddump(opcmds);
+ user->SendText(checkstr + " commandperms", opcmddump);
+ std::string privs;
+ for(std::set<std::string>::iterator i = oper->AllowedPrivs.begin(); i != oper->AllowedPrivs.end(); i++)
+ {
+ privs.push_back(' ');
+ privs.append(*i);
+ }
+ std::stringstream privdump(privs);
+ user->SendText(checkstr + " permissions", privdump);
+ }
+ }
+
+ if (loctarg)
+ {
+ user->SendText(checkstr + " clientaddr " + irc::sockets::satouser(loctarg->client_sa));
+ user->SendText(checkstr + " serveraddr " + irc::sockets::satouser(loctarg->server_sa));
+
+ std::string classname = loctarg->GetClass()->name;
+ if (!classname.empty())
+ user->SendText(checkstr + " connectclass " + classname);