本文整理汇总了C++中OperType类的典型用法代码示例。如果您正苦于以下问题:C++ OperType类的具体用法?C++ OperType怎么用?C++ OperType使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了OperType类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetType
bool Oper::HasCommand(const Anope::string &cmdstr)
{
OperType *type = GetType();
if (type != nullptr)
return type->HasCommand(cmdstr);
return false;
}
示例2: unserialize
static void unserialize(serialized_data &data)
{
OperType *ot = OperType::Find(data["type"].astr());
if (ot == NULL)
return;
NickCore *nc = findcore(data["name"].astr());
if (nc == NULL)
return;
nc->o = new MyOper(nc->display, ot);
Log(LOG_NORMAL, "operserv/oper") << "Tied oper " << nc->display << " to type " << ot->GetName();
}
示例3:
const std::list<Anope::string> OperType::GetPrivs() const
{
std::list<Anope::string> priv_list = this->privs;
for (std::set<OperType *>::const_iterator it = this->inheritances.begin(), it_end = this->inheritances.end(); it != it_end; ++it)
{
OperType *ot = *it;
std::list<Anope::string> priv = ot->GetPrivs();
for (std::list<Anope::string>::const_iterator it2 = priv.begin(), it2_end = priv.end(); it2 != it2_end; ++it2)
priv_list.push_back(*it2);
}
return priv_list;
}
示例4: DoOperType
void DoOperType(XMLRPCServiceInterface *iface, HTTPClient *client, XMLRPCRequest &request)
{
for (unsigned i = 0; i < Config->MyOperTypes.size(); ++i)
{
OperType *ot = Config->MyOperTypes[i];
Anope::string perms;
for (std::list<Anope::string>::const_iterator it2 = ot->GetPrivs().begin(), it2_end = ot->GetPrivs().end(); it2 != it2_end; ++it2)
perms += " " + *it2;
for (std::list<Anope::string>::const_iterator it2 = ot->GetCommands().begin(), it2_end = ot->GetCommands().end(); it2 != it2_end; ++it2)
perms += " " + *it2;
request.reply(ot->GetName(), perms);
}
}
示例5: if
bool OperType::HasPriv(const Anope::string &privstr) const
{
for (std::list<Anope::string>::const_iterator it = this->privs.begin(), it_end = this->privs.end(); it != it_end; ++it)
{
const Anope::string &s = *it;
if (!s.find('~') && Anope::Match(privstr, s.substr(1)))
return false;
else if (Anope::Match(privstr, s))
return true;
}
for (std::set<OperType *>::const_iterator iit = this->inheritances.begin(), iit_end = this->inheritances.end(); iit != iit_end; ++iit)
{
OperType *ot = *iit;
if (ot->HasPriv(privstr))
return true;
}
return false;
}
示例6: OnResult
void OnResult(const LDAPResult &r)
{
std::map<LDAPQuery, Anope::string>::iterator it = this->requests.find(r.id);
if (it == this->requests.end())
return;
User *u = finduser(it->second);
this->requests.erase(it);
if (!u || !u->Account())
return;
try
{
const LDAPAttributes &attr = r.get(0);
const Anope::string &opertype = attr.get(opertype_attribute);
OperType *ot = OperType::Find(opertype);
if (ot != NULL && (u->Account()->o == NULL || ot != u->Account()->o->ot))
{
Oper *o = u->Account()->o;
if (o != NULL && my_opers.count(o) > 0)
{
my_opers.erase(o);
delete o;
}
o = new Oper(u->nick, ot);
my_opers.insert(o);
u->Account()->o = o;
Log() << "m_ldap_oper: Tied " << u->nick << " (" << u->Account()->display << ") to opertype " << ot->GetName();
}
}
catch (const LDAPException &ex)
{
if (u->Account()->o != NULL)
{
if (my_opers.count(u->Account()->o) > 0)
{
my_opers.erase(u->Account()->o);
delete u->Account()->o;
}
u->Account()->o = NULL;
Log() << "m_ldap_oper: Removed services operator from " << u->nick << " (" << u->Account()->display << ")";
}
}
}
示例7: OnResult
void OnResult(const LDAPResult &r) override
{
if (!u || !u->Account())
return;
NickServ::Account *nc = u->Account();
try
{
const LDAPAttributes &attr = r.get(0);
const Anope::string &opertype = attr.get(opertype_attribute);
OperType *ot = OperType::Find(opertype);
if (ot != NULL && (nc->o == NULL || ot != nc->o->ot))
{
Oper *o = nc->o;
if (o != NULL && my_opers.count(o) > 0)
{
my_opers.erase(o);
delete o;
}
o = new Oper(u->nick, ot);
my_opers.insert(o);
nc->o = o;
Log(this->owner) << "Tied " << u->nick << " (" << nc->GetDisplay() << ") to opertype " << ot->GetName();
}
}
catch (const LDAPException &ex)
{
if (nc->o != NULL)
{
if (my_opers.count(nc->o) > 0)
{
my_opers.erase(nc->o);
delete nc->o;
}
nc->o = NULL;
Log(this->owner) << "Removed services operator from " << u->nick << " (" << nc->GetDisplay() << ")";
}
}
}
示例8: Execute
void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms)
{
const Anope::string &subcommand = params[0];
if (subcommand.equals_ci("ADD") && params.size() > 2)
{
const Anope::string &oper = params[1];
const Anope::string &otype = params[2];
NickAlias *na = findnick(oper);
if (na == NULL)
source.Reply(NICK_X_NOT_REGISTERED, oper.c_str());
else if (na->nc->o)
source.Reply(_("Nick \2%s\2 is already an operator."), na->nick.c_str());
else
{
OperType *ot = OperType::Find(otype);
if (ot == NULL)
source.Reply(_("Oper type \2%s\2 has not been configured."), otype.c_str());
else
{
na->nc->o = new MyOper(na->nc->display, ot);
Log(LOG_ADMIN, source.u, this) << "ADD " << na->nick << " as type " << ot->GetName();
source.Reply("%s (%s) added to the \2%s\2 list.", na->nick.c_str(), na->nc->display.c_str(), ot->GetName().c_str());
}
}
}
else if (subcommand.equals_ci("DEL") && params.size() > 1)
{
const Anope::string &oper = params[1];
NickAlias *na = findnick(oper);
if (na == NULL)
source.Reply(NICK_X_NOT_REGISTERED, oper.c_str());
else if (!na->nc || !na->nc->o)
source.Reply(_("Nick \2%s\2 is not a services operator."), oper.c_str());
else
{
delete na->nc->o;
na->nc->o = NULL;
Log(LOG_ADMIN, source.u, this) << "DEL " << na->nick;
source.Reply(_("Oper privileges removed from %s (%s)."), na->nick.c_str(), na->nc->display.c_str());
}
}
else if (subcommand.equals_ci("LIST"))
{
source.Reply(_("Name Type"));
for (nickcore_map::const_iterator it = NickCoreList.begin(), it_end = NickCoreList.end(); it != it_end; ++it)
{
NickCore *nc = it->second;
if (!nc->o)
continue;
source.Reply(_("%-8s %s"), nc->o->name.c_str(), nc->o->ot->GetName().c_str());
if (nc->o->config)
source.Reply(_(" This oper is configured in the configuration file."));
for (std::list<User *>::iterator uit = nc->Users.begin(); uit != nc->Users.end(); ++uit)
{
User *u = *uit;
source.Reply(_(" %s is online using this oper block."), u->nick.c_str());
}
}
}
else if (subcommand.equals_ci("INFO") && params.size() > 1)
{
Anope::string fulltype = params[1];
if (params.size() > 2)
fulltype += " " + params[2];
OperType *ot = OperType::Find(fulltype);
if (ot == NULL)
source.Reply(_("Oper type \2%s\2 has not been configured."), fulltype.c_str());
else
{
if (ot->GetCommands().empty())
source.Reply(_("Opertype \2%s\2 has no allowed commands."), ot->GetName().c_str());
else
{
source.Reply(_("Available commands for \2%s\2:"), ot->GetName().c_str());
Anope::string buf;
std::list<Anope::string> cmds = ot->GetCommands();
for (std::list<Anope::string>::const_iterator it = cmds.begin(), it_end = cmds.end(); it != it_end; ++it)
{
buf += *it + " ";
if (buf.length() > 400)
{
source.Reply("%s", buf.c_str());
buf.clear();
}
}
if (!buf.empty())
{
source.Reply("%s", buf.c_str());
buf.clear();
}
}
if (ot->GetPrivs().empty())
source.Reply(_("Opertype \2%s\2 has no allowed privileges."), ot->GetName().c_str());
//.........这里部分代码省略.........