+ ServerInstance->Logs->Log("PRIVS", DEBUG, "Checking if I have " + privstr);
+ if (!IS_LOCAL(this))
+ {
+ ServerInstance->Logs->Log("PRIVS", DEBUG, "Remote (yes)");
+ return true;
+ }
+
+ if (!IS_OPER(this))
+ {
+ if (noisy)
+ this->WriteServ("NOTICE %s :You are not an oper", this->nick.c_str());
+ ServerInstance->Logs->Log("PRIVS", DEBUG, "Not oper (no)");
+ return false;
+ }
+
+ if (!AllowedPrivs)
+ {
+ if (noisy)
+ this->WriteServ("NOTICE %s :Privset empty(!?)", this->nick.c_str());
+ ServerInstance->Logs->Log("PRIVS", DEBUG, "No privs(?) (no)");
+ return false;
+ }
+
+ if (AllowedPrivs->find(privstr) != AllowedPrivs->end())
+ {
+ return true;
+ }
+ else if (AllowedPrivs->find("*") != AllowedPrivs->end())
+ {
+ return true;
+ }
+
+ if (noisy)
+ this->WriteServ("NOTICE %s :Oper type %s does not have access to priv %s", this->nick.c_str(), this->oper.c_str(), privstr.c_str());
+ return false;