* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information.
- *
- * IRC operator functions
*/
-
#include "portab.h"
+/**
+ * @file
+ * IRC operator functions
+ */
+
#include "imp.h"
#include <assert.h>
#include <string.h>
#include "conn.h"
-#include "client.h"
#include "channel.h"
#include "conf.h"
#include "log.h"
#include <exp.h>
#include "op.h"
+
/**
* Return and log a "no privileges" message.
*/
/**
- * Check that the client is an IRC operator allowed to administer this server.
+ * Check that the originator of a request is an IRC operator and allowed
+ * to administer this server.
+ *
+ * @param CLient Client from which the command has been received.
+ * @param Req Request structure.
+ * @return CLIENT structure of the client that initiated the command or
+ * NULL if client is not allowed to execute operator commands.
*/
-GLOBAL bool
+GLOBAL CLIENT *
Op_Check(CLIENT * Client, REQUEST * Req)
{
CLIENT *c;
c = Client_Search(Req->prefix);
else
c = Client;
+
if (!c)
- return false;
+ return NULL;
+ if (Client_Type(Client) == CLIENT_SERVER
+ && Client_Type(c) == CLIENT_SERVER)
+ return c;
if (!Client_HasMode(c, 'o'))
- return false;
+ return NULL;
if (!Client_OperByMe(c) && !Conf_AllowRemoteOper)
- return false;
+ return NULL;
+
/* The client is an local IRC operator, or this server is configured
* to trust remote operators. */
- return true;
+ return c;
} /* Op_Check */
+
+
+/* -eof- */