ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/modules/m_locops.c
(Generate patch)

Comparing ircd-hybrid/trunk/modules/m_locops.c (file contents):
Revision 1632 by michael, Sun Nov 4 15:37:10 2012 UTC vs.
Revision 4545 by michael, Fri Aug 22 08:46:13 2014 UTC

# Line 1 | Line 1
1   /*
2 < *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
3 < *  m_locops.c: Sends a message to all operators on the local server.
2 > *  ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd)
3   *
4 < *  Copyright (C) 2002 by the past and present ircd coders, and others.
4 > *  Copyright (c) 1997-2014 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
# Line 18 | Line 17
17   *  along with this program; if not, write to the Free Software
18   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
19   *  USA
20 < *
21 < *  $Id$
20 > */
21 >
22 > /*! \file m_locops.c
23 > * \brief Includes required functions for processing the LOCOPS command.
24 > * \version $Id$
25   */
26  
27   #include "stdinc.h"
# Line 29 | Line 31
31   #include "numeric.h"
32   #include "send.h"
33   #include "conf.h"
34 < #include "s_user.h"
33 < #include "s_serv.h"
34 < #include "hash.h"
34 > #include "server.h"
35   #include "parse.h"
36   #include "modules.h"
37  
38  
39 < /*
40 < * mo_locops - LOCOPS message handler
41 < * (write to *all* local opers currently online)
42 < *      parv[0] = sender prefix
43 < *      parv[1] = message text
39 > /*! \brief LOCOPS command handler
40 > *
41 > * \param source_p Pointer to allocated Client struct from which the message
42 > *                 originally comes from.  This can be a local or remote client.
43 > * \param parc     Integer holding the number of supplied arguments.
44 > * \param parv     Argument vector where parv[0] .. parv[parc-1] are non-NULL
45 > *                 pointers.
46 > * \note Valid arguments for this command are:
47 > *      - parv[0] = command
48 > *      - parv[1] = message text
49   */
50 < static void
51 < mo_locops(struct Client *client_p, struct Client *source_p,
47 <          int parc, char *parv[])
50 > static int
51 > mo_locops(struct Client *source_p, int parc, char *parv[])
52   {
53    const char *message = parv[1];
54  
55 <  if (EmptyString(message))
55 >  if (!HasOFlag(source_p, OPER_FLAG_LOCOPS))
56    {
57 <    sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS),
58 <               me.name, source_p->name, "LOCOPS");
55 <    return;
57 >    sendto_one_numeric(source_p, &me, ERR_NOPRIVS, "locops");
58 >    return 0;
59    }
60  
61 <  sendto_wallops_flags(UMODE_LOCOPS, source_p, "LOCOPS - %s",
62 <                       message);
61 >  if (EmptyString(message))
62 >  {
63 >    sendto_one_numeric(source_p, &me, ERR_NEEDMOREPARAMS, "LOCOPS");
64 >    return 0;
65 >  }
66  
67 +  sendto_realops_flags(UMODE_LOCOPS, L_ALL, SEND_LOCOPS, "from %s: %s",
68 +                       source_p->name, message);
69    cluster_a_line(source_p, "LOCOPS", 0, SHARED_LOCOPS, message);
70 +  return 0;
71   }
72  
73 < static void
74 < ms_locops(struct Client *client_p, struct Client *source_p,
75 <          int parc, char *parv[])
73 > /*! \brief LOCOPS command handler
74 > *
75 > * \param source_p Pointer to allocated Client struct from which the message
76 > *                 originally comes from.  This can be a local or remote client.
77 > * \param parc     Integer holding the number of supplied arguments.
78 > * \param parv     Argument vector where parv[0] .. parv[parc-1] are non-NULL
79 > *                 pointers.
80 > * \note Valid arguments for this command are:
81 > *      - parv[0] = command
82 > *      - parv[1] = target server
83 > *      - parv[2] = message text
84 > */
85 > static int
86 > ms_locops(struct Client *source_p, int parc, char *parv[])
87   {
88    if (parc != 3 || EmptyString(parv[2]))
89 <    return;
89 >    return 0;
90  
91 <  sendto_server(client_p, CAP_CLUSTER, 0, "LOCOPS %s :%s",
92 <                parv[1], parv[2]);
91 >  sendto_match_servs(source_p, parv[1], CAP_CLUSTER, "LOCOPS %s :%s",
92 >                     parv[1], parv[2]);
93  
94 <  if (!IsClient(source_p) || !match(parv[1], me.name))
95 <    return;
94 >  if (match(parv[1], me.name))
95 >    return 0;
96  
97    if (find_matching_name_conf(CONF_ULINE, source_p->servptr->name,
98                                "*", "*", SHARED_LOCOPS))
99 <    sendto_wallops_flags(UMODE_LOCOPS, source_p, "SLOCOPS - %s", parv[2]);
99 >    sendto_realops_flags(UMODE_LOCOPS, L_ALL, SEND_LOCOPS, "from %s: %s",
100 >                         source_p->name, parv[2]);
101 >  return 0;
102   }
103  
104 < static struct Message locops_msgtab = {
105 <  "LOCOPS", 0, 0, 2, MAXPARA, MFLG_SLOW, 0,
104 > static struct Message locops_msgtab =
105 > {
106 >  "LOCOPS", NULL, 0, 0, 2, MAXPARA, MFLG_SLOW, 0,
107    { m_unregistered, m_not_oper, ms_locops, m_ignore, mo_locops, m_ignore }
108   };
109  
# Line 96 | Line 119 | module_exit(void)
119    mod_del_cmd(&locops_msgtab);
120   }
121  
122 < struct module module_entry = {
122 > struct module module_entry =
123 > {
124    .node    = { NULL, NULL, NULL },
125    .name    = NULL,
126    .version = "$Revision$",

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)