diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2005-12-02 16:05:59 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2005-12-02 16:05:59 +0000 |
commit | 3d8f1d6834843482d388daafff26b30be5e3cbe8 (patch) | |
tree | 947d27647489278c7f227d905db5c93d5ac6fdde /src | |
parent | d4e3eb56e271a40043c86abce55b0391e03b0ca2 (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.cpp | 4 | ||||
-rw-r--r-- | src/users.cpp | 9 |
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')) { |