void OnUserLogin(User *u) override { if (!IRCD->CanSetVHost) return; NickServ::Nick *na = NickServ::FindNick(u->nick); if (!na || na->GetAccount() != u->Account() || !na->HasVhost()) na = NickServ::FindNick(u->Account()->GetDisplay()); if (!na || !na->HasVhost()) return; if (u->vhost.empty() || !u->vhost.equals_cs(na->GetVhostHost()) || (!na->GetVhostIdent().empty() && !u->GetVIdent().equals_cs(na->GetVhostIdent()))) { IRCD->SendVhost(u, na->GetVhostIdent(), na->GetVhostHost()); u->vhost = na->GetVhostHost(); u->UpdateHost(); if (IRCD->CanSetVIdent && !na->GetVhostIdent().empty()) u->SetVIdent(na->GetVhostIdent()); if (HostServ) { if (!na->GetVhostIdent().empty()) u->SendMessage(*HostServ, _("Your vhost of \002%s\002@\002%s\002 is now activated."), na->GetVhostIdent().c_str(), na->GetVhostHost().c_str()); else u->SendMessage(*HostServ, _("Your vhost of \002%s\002 is now activated."), na->GetVhostHost().c_str()); } } }
void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) override { User *u = source.GetUser(); NickServ::Nick *na = NickServ::FindNick(u->nick); if (!na || !na->HasVhost() || na->GetAccount() != source.GetAccount()) { source.Reply(_("There is no vhost assigned to this nickname.")); return; } u->vhost.clear(); IRCD->SendVhostDel(u); Log(LOG_COMMAND, source, this) << "to disable their vhost"; source.Reply(_("Your vhost was removed and the normal cloaking restored.")); }