"Fossies" - the Fresh Open Source Software Archive

Member "ircd-hybrid-8.2.26/modules/core/m_die.c" (31 May 2019, 2895 Bytes) of package /linux/privat/ircd-hybrid-8.2.26.tgz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "m_die.c" see the Fossies "Dox" file reference documentation and the last Fossies "Diffs" side-by-side code changes report: 8.2.24_vs_8.2.25.

    1 /*
    2  *  ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd)
    3  *
    4  *  Copyright (c) 1997-2019 ircd-hybrid development team
    5  *
    6  *  This program is free software; you can redistribute it and/or modify
    7  *  it under the terms of the GNU General Public License as published by
    8  *  the Free Software Foundation; either version 2 of the License, or
    9  *  (at your option) any later version.
   10  *
   11  *  This program is distributed in the hope that it will be useful,
   12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
   13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   14  *  GNU General Public License for more details.
   15  *
   16  *  You should have received a copy of the GNU General Public License
   17  *  along with this program; if not, write to the Free Software
   18  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
   19  *  USA
   20  */
   21 
   22 /*! \file m_die.c
   23  * \brief Includes required functions for processing the DIE command.
   24  * \version $Id: m_die.c 8751 2019-01-01 11:06:50Z michael $
   25  */
   26 
   27 #include "stdinc.h"
   28 #include "client.h"
   29 #include "ircd.h"
   30 #include "irc_string.h"
   31 #include "numeric.h"
   32 #include "send.h"
   33 #include "parse.h"
   34 #include "modules.h"
   35 #include "restart.h"
   36 
   37 
   38 /*! \brief DIE command handler
   39  *
   40  * \param source_p Pointer to allocated Client struct from which the message
   41  *                 originally comes from.  This can be a local or remote client.
   42  * \param parc     Integer holding the number of supplied arguments.
   43  * \param parv     Argument vector where parv[0] .. parv[parc-1] are non-NULL
   44  *                 pointers.
   45  * \note Valid arguments for this command are:
   46  *      - parv[0] = command
   47  *      - parv[1] = server name
   48  */
   49 static int
   50 mo_die(struct Client *source_p, int parc, char *parv[])
   51 {
   52   char buf[IRCD_BUFSIZE] = "";
   53   const char *const name = parv[1];
   54 
   55   if (!HasOFlag(source_p, OPER_FLAG_DIE))
   56   {
   57     sendto_one_numeric(source_p, &me, ERR_NOPRIVS, "die");
   58     return 0;
   59   }
   60 
   61   if (EmptyString(name))
   62   {
   63     sendto_one_numeric(source_p, &me, ERR_NEEDMOREPARAMS, "DIE");
   64     return 0;
   65   }
   66 
   67   if (irccmp(name, me.name))
   68   {
   69     sendto_one_notice(source_p, &me, ":Mismatch on /die %s", me.name);
   70     return 0;
   71   }
   72 
   73   snprintf(buf, sizeof(buf), "received DIE command from %s",
   74            client_get_name(source_p, HIDE_IP));
   75   server_die(buf, false);
   76   return 0;
   77 }
   78 
   79 static struct Message die_msgtab =
   80 {
   81   .cmd = "DIE",
   82   .args_max = MAXPARA,
   83   .handlers[UNREGISTERED_HANDLER] = m_unregistered,
   84   .handlers[CLIENT_HANDLER] = m_not_oper,
   85   .handlers[SERVER_HANDLER] = m_ignore,
   86   .handlers[ENCAP_HANDLER] = m_ignore,
   87   .handlers[OPER_HANDLER] = mo_die
   88 };
   89 
   90 static void
   91 module_init(void)
   92 {
   93   mod_add_cmd(&die_msgtab);
   94 }
   95 
   96 static void
   97 module_exit(void)
   98 {
   99   mod_del_cmd(&die_msgtab);
  100 }
  101 
  102 struct module module_entry =
  103 {
  104   .version = "$Revision: 8751 $",
  105   .modinit = module_init,
  106   .modexit = module_exit,
  107   .is_core = true
  108 };