View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0005192 | unreal | ircd | public | 2019-01-20 14:40 | 2019-02-01 17:58 |
Reporter | syzop | Assigned To | syzop | ||
Priority | normal | Severity | minor | Reproducibility | N/A |
Status | resolved | Resolution | fixed | ||
Product Version | 4.2.1 | ||||
Target Version | 4.2.2-rc1 | Fixed in Version | 4.2.2-rc1 | ||
Summary | 0005192: WHOX: Several undocumented behavior changes | ||||
Description | Now that the whox module is loaded in modules.optional.conf several users reported behavior changes that are not documented. This can be fixed by updating the documentation, but it would be much more preferable to update the implementation so it has the same functionality/behavior as current who. 1. "WHO *" and "WHO #channel" no longer work for IRCOps to override::see, it requires "WHO !*" and "WHO !#channel" 2. Flags are only interpreted if they are the second parameter, eg: "WHO * +s server.test.net" 3. The behavior flags seem to be missing, even though these are popular with some users, eg +I (show users' IP addresses) | ||||
Tags | No tags attached. | ||||
3rd party modules | |||||
|
1) should be updated to reflect current UnrealIRCd behavior, but we can make it an option (not the default) to require the explicit '!' for those people who like it (privacy improvement due to explicit overriding). 2) The flags could be interpreted for the 1st argument also, 3) These are popular flags with some ircops, so we should definitely look into this. I'm sure it can be done via a particular WHOX line, but we want it to be as simple as WHO +I... I think most of these issues are just due to copying of code from another IRCd and not sufficiently modifying it to match UnrealIRCd behavior. Fortunately, this shouldn't be hard to do. |
|
Other observations: Syntax: /WHO [+|-][acghimnsuMRI] [args] Flags are specified like channel modes, the flags cgmnsu all have arguments Flags are set to a positive check by +, a negative check by - ^^ negative checks don't work anymore The flags available: Flag a: user is away ^^ no longer available Flag c <channel>: user is on <channel>, no wildcards accepted ^^ no longer available, although in most cases #chan as parameter 1 would give a similar effect Flag g <gcos/realname>: user has string <gcos> in his/her GCOS, wildcards accepted, oper only ^^ this one is now called 'r' rather than 'g' Flag h <host>: user has string <host> in his/her hostname, wildcards are accepted Flag i <ip>: user has string <ip> in his/her IP address Flag m <usermodes>: user has <usermodes> set, only o/C/A/a/N for nonopers Flag n <nick>: user has string <nick> in his/her nickname, wildcards accepted Flag s <server>: user is on server <server>, wildcards not accepted Flag u <user>: user has string <user> in his/her username, wildcards accepted ^^ these all exist Behavior flags: Flag M: check for user in channels I am a member of Flag R: show users' real hostnames ^^ missing Flag I: show users' IP addresses ^^ missing - Status flags: The who command shows several flags in the returned result to indicate different information about the user. These flags are explained below: G - User is /away (gone) H - User is not /away (here) r - User is using a registered nickname B - User is a bot (+B) ^^ missing * - User is an IRC Operator ~ - User is a Channel Owner (+q) & - User is a Channel Admin (+a) @ - User is a Channel Operator (+o) % - User is a Halfop (+h) + - User is Voiced (+v) ! - User is +H and you are an IRC Operator ? - User is only visible because you are an IRC Operator ^^ no longer works that way, due to the !mask operonly stuff |
|
Oh, and all the options that are available don't work if you use the original order like "WHO +s maintest.test.net", you need to use "WHO maintest.test.net s". Also, some ircds support an optional 3rd parameter which overrides the 1st: WHO <mask1> [<options> [<mask2>]] <mask2> is optional, if mask2 is present it's used for matching and mask1 is ignored, otherwise mask1 is used for matching, since mask2 is the last parameter it *can* contain a space and this can help when trying to match a "realname". Fun fun fun........ |
|
Done. Needs testing! commit f9415e1a912441cfe27db4985c2d25972892e70d (HEAD -> unreal42, origin/unreal42, origin/HEAD) Author: Bram Matthys <[email protected]> Date: Fri Feb 1 17:46:59 2019 +0100 m_whox: now accept and transform most classic UnrealIRCd WHO requests such as "WHO +s serv.er.name" to "WHO serv.er.name s". It also does advanced transformation such as "WHO -m z" to "WHO -z m" **copy paste from comment in code** Flag a: user is away << no longer exists Flag c <channel>: user is on <channel> << no longer exists Flag g <gcos/realname>: user has string <gcos> in his/her GCOS << now called 'r' Flag h <host>: user has string <host> in his/her hostname << no change Flag i <ip>: user has string <ip> in his/her IP address << no change Flag m <usermodes>: user has <usermodes> set << behavior change Flag n <nick>: user has string <nick> in his/her nickname << no change Flag s <server>: user is on server <server> << no change Flag u <user>: user has string <user> in his/her username << no change Behavior flags: Flag M: check for user in channels I am a member of << no longer exists Flag R: show users' real hostnames << no change (re-added) Flag I: show users' IP addresses << no change (re-added) **end of paste** Of course we cannot convert 100% from classic UnrealIRCd WHO to WHOX-style because things like "WHO +m r" could mean either "search for +m in realname" (WHOX) or "search for +r in modes" (classic). In cases like this we assume WHOX, so to not break any WHOX compatibility. Added matchers: 'R' (show real host) and 'I' (show IP) This code will need more testing, both by classic WHO and by WHOX users... commit eecd29bdc8201829fe41c52b12aa631581c49aa9 Author: Bram Matthys <[email protected]> Date: Fri Feb 1 15:21:53 2019 +0100 WHOX: adaptions for UnrealIRCd part 1: * No longer require a ! prefix for ircops to see users * "WHO *" is no longer different than the rest (previously in m_whox would only list users on 1st channel) Neither is part of the WHOX specs. |
Date Modified | Username | Field | Change |
---|---|---|---|
2019-01-20 14:40 | syzop | New Issue | |
2019-01-20 14:40 | syzop | Status | new => acknowledged |
2019-01-20 14:45 | syzop | Note Added: 0020456 | |
2019-01-20 15:45 | syzop | Note Added: 0020457 | |
2019-01-20 15:56 | syzop | Note Added: 0020458 | |
2019-01-20 16:16 | syzop | Note Edited: 0020456 | |
2019-01-20 16:17 | syzop | Description Updated | |
2019-02-01 17:58 | syzop | Assigned To | => syzop |
2019-02-01 17:58 | syzop | Status | acknowledged => resolved |
2019-02-01 17:58 | syzop | Resolution | open => fixed |
2019-02-01 17:58 | syzop | Fixed in Version | => 4.2.2-rc1 |
2019-02-01 17:58 | syzop | Note Added: 0020477 |