View Issue Details

IDProjectCategoryView StatusLast Update
0003513unrealircdpublic2007-09-02 21:22
ReporteraquanightAssigned Toaquanight 
PrioritynormalSeverityminorReproducibilityN/A
Status resolvedResolutionfixed 
Platformx86OSLinux GentooOS Version2.6.17
Product Version4.0-devel 
Target VersionFixed in Version4.0-devel 
Summary0003513: Extend chanrec::IsBanned (so we can have extbans)
DescriptionThe 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.
TagsNo tags attached.
3rd party modules

Relationships

child of 0003417 closed TODO list for Unreal4.0 

Activities

aquanight

2007-08-11 22:44

reporter   ~0014719

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.

aquanight

2007-09-02 21:22

reporter   ~0014750

Implemented in SVN 222

Issue History

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 stskeeps 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