void DoUser(XMLRPCServiceInterface *iface, XMLRPCClientSocket *source, XMLRPCRequest *request) { if (request->data.empty()) return; User *u = finduser(request->data[0]); request->reply("nick", iface->Sanitize(u ? u->nick : request->data[0])); if (u) { request->reply("ident", iface->Sanitize(u->GetIdent())); request->reply("vident", iface->Sanitize(u->GetVIdent())); request->reply("host", iface->Sanitize(u->host)); if (!u->vhost.empty()) request->reply("vhost", iface->Sanitize(u->vhost)); if (!u->chost.empty()) request->reply("chost", iface->Sanitize(u->chost)); if (u->ip()) request->reply("ip", u->ip.addr()); request->reply("timestamp", stringify(u->timestamp)); request->reply("signon", stringify(u->my_signon)); if (u->Account()) { request->reply("account", iface->Sanitize(u->Account()->display)); if (u->Account()->o) request->reply("opertype", iface->Sanitize(u->Account()->o->ot->GetName())); } Anope::string channels; for (UChannelList::const_iterator it = u->chans.begin(); it != u->chans.end(); ++it) { ChannelContainer *cc = *it; channels += cc->Status->BuildModePrefixList() + cc->chan->name + " "; } if (!channels.empty()) { channels.erase(channels.length() - 1); request->reply("channels", channels); } } }
void DoUser(XMLRPCServiceInterface *iface, HTTPClient *client, XMLRPCRequest &request) { if (request.data.empty()) return; User *u = User::Find(request.data[0]); request.reply("nick", iface->Sanitize(u ? u->nick : request.data[0])); if (u) { request.reply("ident", iface->Sanitize(u->GetIdent())); request.reply("vident", iface->Sanitize(u->GetVIdent())); request.reply("host", iface->Sanitize(u->host)); if (!u->vhost.empty()) request.reply("vhost", iface->Sanitize(u->vhost)); if (!u->chost.empty()) request.reply("chost", iface->Sanitize(u->chost)); request.reply("ip", u->ip.addr()); request.reply("timestamp", stringify(u->timestamp)); request.reply("signon", stringify(u->signon)); if (u->Account()) { request.reply("account", iface->Sanitize(u->Account()->GetDisplay())); if (u->Account()->o) request.reply("opertype", iface->Sanitize(u->Account()->o->GetType()->GetName())); } Anope::string channels; for (User::ChanUserList::const_iterator it = u->chans.begin(); it != u->chans.end(); ++it) { ChanUserContainer *cc = it->second; channels += cc->status.BuildModePrefixList() + cc->chan->name + " "; } if (!channels.empty()) { channels.erase(channels.length() - 1); request.reply("channels", channels); } } }