View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0003123 | unreal | ircd | public | 2006-11-21 05:02 | 2006-11-24 15:15 |
| Reporter | Bock | Assigned To | |||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | closed | Resolution | no change required | ||
| Product Version | 3.2.5 | ||||
| Summary | 0003123: not correct ircops flags for opers that confuse about oper_override and etc. | ||||
| Description | noticing about fake oper_override caused by: in struct.h: #define OFLAG_ISGLOBAL (OFLAG_GROUTE|OFLAG_GKILL|OFLAG_GNOTICE|OFLAG_TKL|OFLAG_GZL|OFLAG_OVERRIDE) Grep by src I found in modules/m_oper.c: oper_oflags[4].oflag = OFLAG_ISGLOBAL; oper_oflags[4].umode = &UMODE_OPER; oper_oflags[4].host = &oper_host; oper_oflags[4].announce = "is now an operator (O)"; For my opinion, it's not correct, #define OFLAG_ISGLOBAL must be deleted from struct.h and in m_oper.c must be: oper_oflags[4].oflag = OFLAG_LOCAL; oper_oflags[4].umode = &UMODE_OPER; oper_oflags[4].host = &oper_host; oper_oflags[4].announce = "is now an operator (O)"; It must to resolve some bugreports about oper_override ( for example http://bugs.unrealircd.org/view.php?id=3121) | ||||
| 3rd party modules | |||||
|
|
OFLAG_ISGLOBAL define is used to send notice about opering-up of user that has global oper flag, but not Tech/Net/Server admin, imho. |
|
|
Heh... But why exist #define OFLAG_GLOBAL (OFLAG_LOCAL|OFLAG_GROUTE|OFLAG_GKILL|OFLAG_GNOTICE) ? Simple why OFLAG_ISGLOBAL define OFLAG_OVERRIDE without testing? OFLAG_OVERRIDE must be setupable only from config by #define OPCanOverride(x) ((x)->oflag & OFLAG_OVERRIDE) Imho. :] EDIT: by docs global oper can: can_globalroute, can_globalkill, can_globalnotice. In source: #define OFLAG_GLOBAL (OFLAG_LOCAL|OFLAG_GROUTE|OFLAG_GKILL|OFLAG_GNOTICE) But I don't find in docs to what type of oper concerns OFLAG_ISGLOBAL with OVERRIDE flag :P |
|
|
i think, OFLAG_GLOBAL define is used for setting corresponding access rights for IRCOp, for example if you configure ircop only with "global" access level, according to define (#define OFLAG_GLOBAL (OFLAG_LOCAL|OFLAG_GROUTE|OFLAG_GKILL|OFLAG_GNOTICE)) he/she will get access rights to local routing, global routing, global kill and global notices, and OFLAG_ISGLOBAL is only used for printing notice "xxx is now an operator (O)" for opers that have can_globalroute or an_globalkill or can_globalnotice or can_gkline or can_gzline or can_override. In other cases, if user is netadmin or techadmin, etc - another notice will be printed out. I mean - the purpose of define OFLAG_ISGLOBAL - is only choosing what notice will be printed out on oper up. - if you will have oper with can_override, but not netadmin, or etc, - "xxx is now an operator (O)" will be printed out, instead of "xxx is now a network administrator (N)" or others in other words, ircd consider that ircop with can_override oper flag - is global oper if he/she is not net/tech/co/server admin, when choosing what notice to print-out fix me if i wrong. |
|
|
Noone better knows about it when developers. :] Just wait answer syzop or somebody else of developers. If you wanna know why I ask this question, just look at code: in struct.h: #define OFLAG_LOCAL (OFLAG_REHASH|OFLAG_HELPOP|OFLAG_GLOBOP|OFLAG_WALLOP|OFLAG_LOCOP|OFLAG_LROUTE|OFLAG_LKILL|OFLAG_KLINE|OFLAG_UNKLINE|OFLAG_LNOTICE) #define OFLAG_GLOBAL (OFLAG_LOCAL|OFLAG_GROUTE|OFLAG_GKILL|OFLAG_GNOTICE) #define OFLAG_ISGLOBAL (OFLAG_GROUTE|OFLAG_GKILL|OFLAG_GNOTICE|OFLAG_TKL|OFLAG_GZL|OFLAG_OVERRIDE) #define OFLAG_NADMIN (OFLAG_NETADMIN | OFLAG_SADMIN | OFLAG_ADMIN | OFLAG_GLOBAL | OFLAG_UMODEQ | OFLAG_DCCDENY) #define OFLAG_ADMIN_ (OFLAG_ADMIN | OFLAG_GLOBAL | OFLAG_DCCDENY) #define OFLAG_COADMIN_ (OFLAG_COADMIN | OFLAG_GLOBAL | OFLAG_DCCDENY) #define OFLAG_SADMIN_ (OFLAG_SADMIN | OFLAG_GLOBAL | OFLAG_UMODEQ | OFLAG_DCCDENY) and m_oper.c: static void init_operflags() { ... where not using OFLAG_SADMIN_, OFLAG_COADMIN_ and other, it using OFLAG_SADMIN, OFLAG_COADMIN and other, and more logicaly using OFLAG_LOCAL in init_operflags() intsead of OFLAG_ISGLOBAL. |
|
|
there are many debatable questions about how to do one or another thing better, okay, let's wait ;) |
|
|
my wrong, if user stands local ircop, it's not globalised, but if he has some flags more then local - he became Global ircop :] Must be close too. |
|
|
OFLAG_ISGLOBAL is used for determining if an oper needs to be a global oper or not. The flags listed are flags that simply don't work for, say, a local oper. It's not saying "If you're global, you have these." but "If you have any of these, you're global, at least." So, for example, if you try to do flags {local; can_override; };, you still get global usermodes etc because can_override needs you to be global to work. See also 0002349 . |
|
|
Bock said I could close this ;P |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2006-11-21 05:02 | Bock | New Issue | |
| 2006-11-22 03:49 | avb | Note Added: 0012692 | |
| 2006-11-22 03:50 | avb | Note Edited: 0012692 | |
| 2006-11-22 03:51 | avb | Note Edited: 0012692 | |
| 2006-11-22 04:36 | Bock | Note Added: 0012693 | |
| 2006-11-22 04:36 | Bock | Note Edited: 0012693 | |
| 2006-11-22 05:00 | Bock | Note Edited: 0012693 | |
| 2006-11-22 05:26 | avb | Note Added: 0012694 | |
| 2006-11-22 05:28 | avb | Note Edited: 0012694 | |
| 2006-11-22 05:39 | avb | Note Edited: 0012694 | |
| 2006-11-22 05:42 | avb | Note Edited: 0012694 | |
| 2006-11-22 05:43 | avb | Note Edited: 0012694 | |
| 2006-11-22 05:46 | Bock | Note Added: 0012695 | |
| 2006-11-22 06:38 | avb | Note Added: 0012696 | |
| 2006-11-22 06:39 | avb | Note Edited: 0012696 | |
| 2006-11-22 06:58 | Bock | Note Added: 0012697 | |
| 2006-11-22 16:07 | aquanight | Note Added: 0012704 | |
| 2006-11-24 15:15 | syzop | Status | new => closed |
| 2006-11-24 15:15 | syzop | Note Added: 0012717 | |
| 2006-11-24 15:15 | syzop | Resolution | open => no change required |