*/
#include "config.h"
-#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 "client.h"
#include "ircd.h"
-#include "ircd_policy.h"
+#include "ircd_defs.h"
+#include "ircd_features.h"
+#include "ircd_log.h"
#include "ircd_reply.h"
#include "ircd_string.h"
#include "match.h"
#include "send.h"
#include "struct.h"
-#include <assert.h>
+/* #include <assert.h> -- Now using assert in ircd_log.h */
/*
* m_links - generic message handler
char *mask;
struct Client *acptr;
- if (parc > 2)
+ if (feature_bool(FEAT_HIS_LINKS) && !IsAnOper(sptr))
{
- if (hunt_server_cmd(sptr, CMD_LINKS, cptr, 1, "%C :%s", 1, parc, parv) !=
- HUNTED_ISME)
- return 0;
- mask = parv[2];
+ send_reply(sptr, RPL_ENDOFLINKS, parc < 2 ? "*" : parv[1]);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :%s %s", sptr,
+ "/LINKS has been disabled, from CFV-165. Visit ",
+ feature_str(FEAT_HIS_URLSERVERS));
+ return 0;
}
- else
- mask = parc < 2 ? 0 : parv[1];
-
- for (acptr = GlobalClientList, collapse(mask); acptr; acptr = cli_next(acptr))
- {
- if (!IsServer(acptr) && !IsMe(acptr))
- continue;
- if (!BadPtr(mask) && match(mask, cli_name(acptr)))
- continue;
- 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)"));
- }
-
- send_reply(sptr, RPL_ENDOFLINKS, BadPtr(mask) ? "*" : mask);
- return 0;
-}
-
-#ifdef HEAD_IN_SAND_LINKS
-int m_links_redirect(struct Client* cptr, struct Client* sptr, int parc,
- char* parv[])
-{
- 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
-
-/*
- * 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[])
-{
- char *mask;
- struct Client *acptr;
if (parc > 2)
{
}
send_reply(sptr, RPL_ENDOFLINKS, BadPtr(mask) ? "*" : mask);
+
return 0;
}
-
-#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[])
-{
- char *mask;
- struct Client *acptr;
-
- if (parc > 2)
- {
- if (hunt_server(1, cptr, sptr, "%s%s LINKS %s :%s", 1, parc, parv) != /* XXX DEAD */
- HUNTED_ISME)
- return 0;
- mask = parv[2];
- }
- else
- mask = parc < 2 ? 0 : parv[1];
-
- 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), /* XXX DEAD */
- 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], /* XXX DEAD */
- BadPtr(mask) ? "*" : mask);
- return 0;
-}
-#endif /* 0 */
-
+int
+ms_links(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
+ {
+ char *mask;
+ struct Client *acptr;
+
+ if (parc > 2)
+ {
+ 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 = cli_next(acptr))
+ {
+ if (!IsServer(acptr) && !IsMe(acptr))
+ continue;
+ if (!BadPtr(mask) && match(mask, cli_name(acptr)))
+ continue;
+ 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)"));
+ }
+
+ send_reply(sptr, RPL_ENDOFLINKS, BadPtr(mask) ? "*" : mask);
+ return 0;
+ }