Op_Check(): return client that initiated the request or NULL

The old behavior of returning true/false is compatible to this change,
so there are no other code changes required.
This commit is contained in:
Alexander Barton 2011-12-25 16:52:31 +01:00
parent 3ca8703309
commit e23f025dd6
2 changed files with 16 additions and 8 deletions

View File

@ -58,9 +58,15 @@ Op_NoPrivileges(CLIENT * Client, REQUEST * Req)
/** /**
* 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) Op_Check(CLIENT * Client, REQUEST * Req)
{ {
CLIENT *c; CLIENT *c;
@ -72,15 +78,17 @@ Op_Check(CLIENT * Client, REQUEST * Req)
c = Client_Search(Req->prefix); c = Client_Search(Req->prefix);
else else
c = Client; c = Client;
if (!c) if (!c)
return false; return NULL;
if (!Client_HasMode(c, 'o')) if (!Client_HasMode(c, 'o'))
return false; return NULL;
if (!Client_OperByMe(c) && !Conf_AllowRemoteOper) if (!Client_OperByMe(c) && !Conf_AllowRemoteOper)
return false; return NULL;
/* The client is an local IRC operator, or this server is configured /* The client is an local IRC operator, or this server is configured
* to trust remote operators. */ * to trust remote operators. */
return true; return c;
} /* Op_Check */ } /* Op_Check */

View File

@ -1,6 +1,6 @@
/* /*
* ngIRCd -- The Next Generation IRC Daemon * ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2009 Alexander Barton (alex@barton.de) * Copyright (c)2001-2011 Alexander Barton (alex@barton.de) and Contributors.
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -18,7 +18,7 @@
*/ */
GLOBAL bool Op_NoPrivileges PARAMS((CLIENT * Client, REQUEST * Req)); GLOBAL bool Op_NoPrivileges PARAMS((CLIENT * Client, REQUEST * Req));
GLOBAL bool Op_Check PARAMS((CLIENT * Client, REQUEST * Req)); GLOBAL CLIENT *Op_Check PARAMS((CLIENT * Client, REQUEST * Req));
#endif #endif