summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2005-12-02 16:05:59 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2005-12-02 16:05:59 +0000
commit3d8f1d6834843482d388daafff26b30be5e3cbe8 (patch)
tree947d27647489278c7f227d905db5c93d5ac6fdde /src
parentd4e3eb56e271a40043c86abce55b0391e03b0ca2 (diff)
Allowed ulined servers to by pass all oper permissions checking
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@2118 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r--src/inspircd.cpp4
-rw-r--r--src/users.cpp9
2 files changed, 11 insertions, 2 deletions
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index 0ab72bf21..a725755a7 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -1644,7 +1644,7 @@ bool is_valid_cmd(const char* commandname, int pcnt, userrec * user)
{
if (cmdlist[i].flags_needed)
{
- if (user->HasPermission((char*)commandname))
+ if ((user->HasPermission((char*)commandname)) || (is_uline(user->server)))
{
return true;
}
@@ -1678,7 +1678,7 @@ void call_handler(const char* commandname,char **parameters, int pcnt, userrec *
{
if (cmdlist[i].flags_needed)
{
- if (user->HasPermission((char*)commandname))
+ if ((user->HasPermission((char*)commandname)) || (is_uline(user->server)))
{
cmdlist[i].handler_function(parameters,pcnt,user);
}
diff --git a/src/users.cpp b/src/users.cpp
index 19d6a37f4..2c36a444c 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -161,6 +161,15 @@ bool userrec::HasPermission(char* command)
char* savept;
char* savept2;
+ // users on u-lined servers can completely bypass
+ // all permissions based checks.
+ //
+ // of course, if this is sent to a remote server and this
+ // server is not ulined there, then that other server
+ // silently drops the command.
+ if (is_uline(this->server))
+ return true;
+
// are they even an oper at all?
if (strchr(this->modes,'o'))
{