View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003513 | unreal | ircd | public | 2007-08-11 22:41 | 2007-09-02 21:22 |
Reporter | aquanight | Assigned To | aquanight | ||
Priority | normal | Severity | minor | Reproducibility | N/A |
Status | resolved | Resolution | fixed | ||
Platform | x86 | OS | Linux Gentoo | OS Version | 2.6.17 |
Product Version | 4.0-devel | ||||
Fixed in Version | 4.0-devel | ||||
Summary | 0003513: Extend chanrec::IsBanned (so we can have extbans) | ||||
Description | The chanrec::IsBanned provides only simplistic implementation of ban checking, eg, if a n!u@h mask matches in the channel. In order to implement extended bans of any form, IsBanned will need at least two things: - Able to identify the type of action taken that is causing a ban check (eg: JOIN, NICK, PRIVMSG). - Able to call it module code before doing a normal check of a ban entry. Includes allowing the module to say "don't do a normal mask check". The first issue, I've considered: - Unreal 3's style: use named constants BANCHK_JOIN, etc. Advantage: no string compares. Disadvantage: modules have to fight over unique values, or we have to make a provider for it. Probably the best option, performance-wise. - Something closer to how insp does assorted things, namely: use text strings. Advantage: no fighting over uniqueness, if they just use their cmd name. Disadvantage: string compares, with all the slowdowns that can involve . Especially if some extbans want to check against several different command names (eg a ~q would need to trap PRIVMSG and NOTICE - double whammy, though we can avoid it with using non-command names like 'MESSAGE'). - Other ideads? For the second issue: Either built-in check for extended ban syntax ('~', something, ':'), or a hook that is triggered for every ban checked (that way module can provide the extban system, and other modules can do things to a specific ban check that don't strictly relate to extended bans). The latter is probably preferred. | ||||
Tags | No tags attached. | ||||
3rd party modules | |||||
child of | 0003417 | closed | TODO list for Unreal4.0 |
|
I should probably add: the existing IsBanned can stay as-is so we have compatibility, and we make an extended version of it (probably IsBanned(userrec* user, std::string/const char* checktype) or IsBanned(userrec* user, int checktype), or whatever. |
|
Implemented in SVN 222 |
Date Modified | Username | Field | Change |
---|---|---|---|
2007-08-11 22:41 | aquanight | New Issue | |
2007-08-11 22:41 | aquanight | QA | => Not touched yet by developer |
2007-08-11 22:41 | aquanight | U4: Need for upstream patch | => No need for upstream InspIRCd patch |
2007-08-11 22:41 | aquanight | U4: Upstream notification of bug | => Not decided |
2007-08-11 22:41 | aquanight | U4: Contributor working on this | => None |
2007-08-11 22:42 | aquanight | Relationship added | child of 0003417 |
2007-08-11 22:44 | aquanight | Note Added: 0014719 | |
2007-08-14 07:01 |
|
Status | new => confirmed |
2007-09-02 21:22 | aquanight | QA | Not touched yet by developer => Fixed by developer, needs QA testing |
2007-09-02 21:22 | aquanight | Note Added: 0014750 | |
2007-09-02 21:22 | aquanight | Assigned To | => aquanight |
2007-09-02 21:22 | aquanight | Status | confirmed => resolved |
2007-09-02 21:22 | aquanight | Resolution | open => fixed |
2007-09-02 21:22 | aquanight | Fixed in Version | => 4.0-devel |