/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
+ * Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
*
* 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
* IRC operator functions
*/
-#include "imp.h"
#include <assert.h>
-#include <string.h>
#include "conn.h"
#include "channel.h"
#include "messages.h"
#include "irc-write.h"
-#include <exp.h>
#include "op.h"
-
/**
* Return and log a "no privileges" message.
*/
from = Client_Search(Req->prefix);
if (from) {
- Log(LOG_NOTICE, "No privileges: client \"%s\" (%s), command \"%s\"",
+ Log(LOG_NOTICE, "No privileges: client \"%s\" (%s), command \"%s\"!",
Req->prefix, Client_Mask(Client), Req->command);
- return IRC_WriteStrClient(from, ERR_NOPRIVILEGES_MSG,
+ return IRC_WriteErrClient(from, ERR_NOPRIVILEGES_MSG,
Client_ID(from));
} else {
- Log(LOG_NOTICE, "No privileges: client \"%s\", command \"%s\"",
+ Log(LOG_NOTICE, "No privileges: client \"%s\", command \"%s\"!",
Client_Mask(Client), Req->command);
- return IRC_WriteStrClient(Client, ERR_NOPRIVILEGES_MSG,
+ return IRC_WriteErrClient(Client, ERR_NOPRIVILEGES_MSG,
Client_ID(Client));
}
} /* Op_NoPrivileges */
-
/**
* Check that the originator of a request is an IRC operator and allowed
* to administer this server.
if (!c)
return NULL;
+ if (Client_Type(Client) == CLIENT_SERVER
+ && Client_Type(c) == CLIENT_SERVER)
+ return c;
if (!Client_HasMode(c, 'o'))
return NULL;
- if (!Client_OperByMe(c) && !Conf_AllowRemoteOper)
+ if (Client_Conn(c) <= NONE && !Conf_AllowRemoteOper)
return NULL;
/* The client is an local IRC operator, or this server is configured
return c;
} /* Op_Check */
-
/* -eof- */