* note: it is guaranteed that parv[0]..parv[parc-1] are all
* non-NULL pointers.
*/
-#if 0
-/*
- * No need to include handlers.h here the signatures must match
- * and we don't need to force a rebuild of all the handlers everytime
- * we add a new one to the list. --Bleep
- */
-#include "handlers.h"
-#endif /* 0 */
+#include "config.h"
+
#include "client.h"
#include "ircd.h"
+#include "ircd_policy.h"
#include "ircd_reply.h"
#include "ircd_string.h"
#include "match.h"
if (parc > 2)
{
- if (hunt_server(1, cptr, sptr, "%s%s LINKS %s :%s", 1, parc, parv) !=
+ if (hunt_server_cmd(sptr, CMD_LINKS, cptr, 1, "%C :%s", 1, parc, parv) !=
HUNTED_ISME)
return 0;
mask = parv[2];
else
mask = parc < 2 ? 0 : parv[1];
- for (acptr = GlobalClientList, collapse(mask); acptr; acptr = acptr->next)
+ for (acptr = GlobalClientList, collapse(mask); acptr; acptr = cli_next(acptr))
{
if (!IsServer(acptr) && !IsMe(acptr))
continue;
- if (!BadPtr(mask) && match(mask, acptr->name))
+ if (!BadPtr(mask) && match(mask, cli_name(acptr)))
continue;
- sendto_one(sptr, rpl_str(RPL_LINKS),
- me.name, parv[0], acptr->name, acptr->serv->up->name,
-#ifndef GODMODE
- acptr->hopcount, acptr->serv->prot,
-#else /* GODMODE */
- acptr->hopcount, acptr->serv->prot, acptr->serv->timestamp,
- NumServ(acptr),
-#endif /* GODMODE */
- (acptr->info[0] ? acptr->info : "(Unknown Location)"));
+ send_reply(sptr, RPL_LINKS, cli_name(acptr), cli_name(cli_serv(acptr)->up),
+ cli_hopcount(acptr), cli_serv(acptr)->prot,
+ ((cli_info(acptr))[0] ? cli_info(acptr) : "(Unknown Location)"));
}
- sendto_one(sptr, rpl_str(RPL_ENDOFLINKS), me.name, parv[0],
- BadPtr(mask) ? "*" : mask);
+ send_reply(sptr, RPL_ENDOFLINKS, BadPtr(mask) ? "*" : mask);
return 0;
}
-/*
- * ms_links - server message handler
- *
- * parv[0] = sender prefix
- * parv[1] = servername mask
- *
- * or
- *
- * parv[0] = sender prefix
- * parv[1] = server to query
- * parv[2] = servername mask
- */
-int ms_links(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
+#ifdef HEAD_IN_SAND_LINKS
+int m_links_redirect(struct Client* cptr, struct Client* sptr, int parc,
+ char* parv[])
{
- char *mask;
- struct Client *acptr;
if (parc > 2)
- {
- if (hunt_server(1, cptr, sptr, "%s%s LINKS %s :%s", 1, parc, parv) !=
- HUNTED_ISME)
- return 0;
- mask = parv[2];
- }
- else
- mask = parc < 2 ? 0 : parv[1];
+ return send_reply(cptr, ERR_NOPRIVILEGES);
- for (acptr = GlobalClientList, collapse(mask); acptr; acptr = acptr->next)
- {
- if (!IsServer(acptr) && !IsMe(acptr))
- continue;
- if (!BadPtr(mask) && match(mask, acptr->name))
- continue;
- sendto_one(sptr, rpl_str(RPL_LINKS),
- me.name, parv[0], acptr->name, acptr->serv->up->name,
-#ifndef GODMODE
- acptr->hopcount, acptr->serv->prot,
-#else /* GODMODE */
- acptr->hopcount, acptr->serv->prot, acptr->serv->timestamp,
- NumServ(acptr),
-#endif /* GODMODE */
- (acptr->info[0] ? acptr->info : "(Unknown Location)"));
- }
-
- sendto_one(sptr, rpl_str(RPL_ENDOFLINKS), me.name, parv[0],
- BadPtr(mask) ? "*" : mask);
+ send_reply(sptr, RPL_ENDOFLINKS, parc < 2 ? "*" : parv[1]);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :%s", sptr,
+ "/LINKS has been disabled, from CFV-165. "
+ "Visit http://www.undernet.org/servers.php");
return 0;
}
+#endif
-
-#if 0
/*
- * m_links
+ * ms_links - server message handler
*
* parv[0] = sender prefix
* parv[1] = servername mask
* parv[1] = server to query
* parv[2] = servername mask
*/
-int m_links(struct Client *cptr, struct Client *sptr, int parc, char *parv[])
+int ms_links(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
char *mask;
struct Client *acptr;
if (parc > 2)
{
- if (hunt_server(1, cptr, sptr, "%s%s LINKS %s :%s", 1, parc, parv) !=
+ if (hunt_server_cmd(sptr, CMD_LINKS, cptr, 1, "%C :%s", 1, parc, parv) !=
HUNTED_ISME)
return 0;
mask = parv[2];
else
mask = parc < 2 ? 0 : parv[1];
- for (acptr = GlobalClientList, collapse(mask); acptr; acptr = acptr->next)
+ for (acptr = GlobalClientList, collapse(mask); acptr; acptr = cli_next(acptr))
{
if (!IsServer(acptr) && !IsMe(acptr))
continue;
- if (!BadPtr(mask) && match(mask, acptr->name))
+ if (!BadPtr(mask) && match(mask, cli_name(acptr)))
continue;
- sendto_one(sptr, rpl_str(RPL_LINKS),
- me.name, parv[0], acptr->name, acptr->serv->up->name,
-#ifndef GODMODE
- acptr->hopcount, acptr->serv->prot,
-#else /* GODMODE */
- acptr->hopcount, acptr->serv->prot, acptr->serv->timestamp,
- NumServ(acptr),
-#endif /* GODMODE */
- (acptr->info[0] ? acptr->info : "(Unknown Location)"));
+ send_reply(sptr, RPL_LINKS, cli_name(acptr), cli_name(cli_serv(acptr)->up),
+ cli_hopcount(acptr), cli_serv(acptr)->prot,
+ ((cli_info(acptr))[0] ? cli_info(acptr) : "(Unknown Location)"));
}
- sendto_one(sptr, rpl_str(RPL_ENDOFLINKS), me.name, parv[0],
- BadPtr(mask) ? "*" : mask);
+ send_reply(sptr, RPL_ENDOFLINKS, BadPtr(mask) ? "*" : mask);
return 0;
}
-#endif /* 0 */
-