View Issue Details

IDProjectCategoryView StatusLast Update
0001946unrealircdpublic2005-02-03 20:08
ReporterUnim4trix0 Assigned Tocodemastr 
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
PlatformUnixOSFreeBSDOS Version4.9-STABLE
Product Version3.2.2 
Summary0001946: cmode +O not accepted by remote servers when set by locops
Descriptionwhen a locop sets a channel +O, it is rejected by all other servers, but their server accepts it
thus some servers see the channel +O, and some see it -O
in adition, locops are unable to join +O channels
this only happens on servers with links
Steps To Reproduceoper up as a locop
set a channel +O
TagsNo tags attached.
3rd party modules

Relationships

has duplicate 0002186 closed Local Operators get error when setting ChMode +O 

Activities

EddieK101

2004-07-10 22:13

reporter   ~0006984

Bug Monitored: EddieK101

codemastr

2004-07-10 23:43

reporter   ~0006985

Does this problem happen in 3.2.1?

Unim4trix0

2004-07-11 00:22

reporter   ~0006986

Last edited: 2004-07-11 01:13

The same error of the mode not propogating properly occurs
the locops not being able to join +O is solved

edited on: 2004-07-11 01:13

fez

2004-07-11 02:42

reporter   ~0006987

confirmed, locops can set mode +O and local server thinks it's ok but remote servers reject it (even on 3.2.1)

 -- fez

vonitsanet

2004-07-12 13:59

reporter   ~0007015

Mabie restrict /mode #chan +O to global opers only?

Zell

2004-07-14 12:26

reporter   ~0007043

Negative. Putting a restrict on that umode would just be putting the IRCd back the way it was before 3.2.1 (locops cant join +O) -- ive noticed that bug b4... on my Net, we have to give Local opers a Global flag (O), but take off their global kill privileges... all that so they can get in the join-on-oper channel. the new ability for locops to join those rooms is great, probably just needs a little tweak somewhere ;-)

medice

2004-07-14 14:47

reporter   ~0007048

maybe it's not the right place here - but it has also something to do with localops in +O-channels...
some services-packages (ircservices for example) are taking a check on +O (and +A) channels if a joining user is allowed to be there - which means is an oper (is an admin) and kick'em if not. (rather senseful in case a +O channel gets empty and users who are joining before +O is set again would be able to stay in there...)
I think this is because there is no global distribution of the existence of localops (umode +O)
some may say, services should accept, that the ircd is working properly and that the ircd is handling joins and permissions correctly - which is partly true.
But I can not really see any reasons why the umode O isn't distributed at the first place...

(i think this localization <-> globalization-thingy has already been discused on some points (bugtracker - maillist?) - i didn't checked it up for now maybe someone has a link for a survey on this? ;) )

aquanight

2004-07-14 19:44

reporter   ~0007051

+O = Local Operator

Why do other servers need to know about local operators on other servers, considering that they ARE local?

If services wanted to check for a local operator, they could do :ChanServ WHOIS opernick opernick and see if the 313 reply (is an IRCop) comes before the 318 (end of WHOIS).

Bergee

2004-07-14 19:53

reporter   ~0007053

If Services decided to trust that the IRC server was right, think about what it would do if a local oper were the first person to join a channel that was mode locked +O. Services would have to kick the user because it couldn't know if the user was joining normally or if they were a local oper, because the IRCd wouldn't have known that mode +O was going to be set and therefore didn't check whether the user should be allowed in. I'm not sure exactly what the solution here is, but I think the way it stands now doesn't work. :)

aquanight

2004-07-14 19:57

reporter   ~0007054

Well, naturally if we change it, services would HAVE to follow...

But there is one issue: even if the channel is ALREADY created and +O, if a local op joins, services that validate this will still kickban the oper... (I think).

Currently the only sensible way to validate local opers is to send a far whois request and monitor the replies.

Bergee

2004-07-14 19:59

reporter   ~0007055

Last edited: 2004-07-14 20:00

Well right, assuming Services validates, then a local oper can't join at all. And if Services doesn't validate then you run into the issue I described with a local oper (or a regular user) being the first to join.

edited on: 2004-07-14 20:00

fez

2004-07-14 20:07

reporter   ~0007056

uhh.. services don't kickban locops for joining +O chans already, why would they start? I think the only change that needs to be made is Locops can't set mode +O on channel (cut can still join them)

Bergee

2004-07-14 20:11

reporter   ~0007057

Don't mean to drag further off topic, but that would depend on what services package you use -- IRCServices 5.0.36 certainly does just that. It will kick any local oper that joins a channel that has +O mode locked (it HAS to be mode locked +O, not just set +O).

aquanight

2004-07-14 20:15

reporter   ~0007058

[15:53:10] * Now talking in #Opers
[15:53:10] * irc.dragons.net sets mode: +ntG
[15:53:10] * ChanServ ([email protected]) has joined #Opers
[15:53:10] * ChanServ sets mode: +b *!~aquanight@*.dragons.net
[15:53:10] * You were kicked from #Opers by ChanServ (You are not permitted to be on this channel.)

(Despite the hostname, I was -o when doing this :P )

fez

2004-07-14 21:15

reporter   ~0007059

crappy. I wouldn't make services do that...
So perhaps dont allow locops to join +O?
or perhaps request the services coders redesign services?
or perhaps make a "hack" where instead of just
 :user JOIN #chan
it does
 :user MODE user +o
 :user JOIN #chan
 :user MODE user -o

but still that would be a nasty hack.......


otherwise, make locop modes get broadcast globally, and have remote servers "acknowledge" but not grant any extra priveleges?

some thoughts
 -- fez

aquanight

2004-07-14 21:17

reporter   ~0007060

>crappy. I wouldn't make services do that...

Well that's IRCServices for you! :P

crazy

2004-07-14 21:18

reporter   ~0007061

Last edited: 2004-07-14 21:20

locops can set +O on linked server ... But only they have a chanop status..(unreal say "Permission Denied- You do not have the correct IRC operator privileges" but works) I have 3 linked servers.. Example :

(1):
[02:29:49] * iMMortal sets mode: +wghsOxp
-
Server notice mask (+kcfFveGqsC)
-
You are now an IRC Operator

now iMMortal join channel #test|O|

#test|O| iMMortal StEiNi MaOaM
#test|O| End of /NAMES list.

[02:46:12] * Now talking in #test|O|
iMMortal do : /mode #test|O| +O (nothig happens only error like [02:48:09] * iMMortal: you're not channel operator )

[02:52:04] <iMMortal> MaOaM I need OP pls i want to set +O
[02:52:06] <iMMortal> :P
[02:52:19] * MaOaM sets mode: +o iMMortal
[02:52:20] <@iMMortal> Op meeeeeeee
[02:52:23] <@iMMortal> thx
[02:52:25] <MaOaM> :)
[02:52:31] * iMMortal sets mode: +O
(channel ist now +O but a error, ircd say : "Permission Denied- You do not have the correct IRC operator privileges" )


"in adition, locops are unable to join +O channels
this only happens on servers with links" ? ? (mabye wrong linked )

The #oper channel ist +O and any locop can join ....

(2):

iMMortal join now in #test ( mlock for #test are +ntOs)

[03:12:10] * Now talking in #test
[03:12:10] * ChanServ sets mode: +sntrO
[03:12:10] * ChanServ changes topic to 'locop +O test (iMMortal)'
[03:12:10] * ChanServ sets mode: +oq iMMortal iMMortal

it´s work.....

The only bug I see is ==> Permission Denied- You do not have the correct IRC operator privileges :P

edited on: 2004-07-14 21:20

aquanight

2004-07-14 21:24

reporter   ~0007063

You use IRCServices? :P

That's the only servicepackage I know of that kicks -o users from +O channels, -AaN users from +A channels, and -z users from +z channels. (Though *pokes w00t* winse will probably support this as well :P .)

Meaning Anope/Epona/Auspice probably doesn't do this.

(And don't say ChanServ would allow a channel owner to go through - see my example!)

crazy

2004-07-14 21:31

reporter   ~0007066

I use Anope-1.7.4 :P

aquanight all +O can join, not only chanowner lock :


[03:26:28] * Now talking in #test
[03:26:28] * ChanServ sets mode: +sntrO
[03:26:28] * ChanServ changes topic to 'locop +O test (iMMortal)'
[03:26:28] * ChanServ sets mode: -ahoq blabla blabla blabla blabla

^_^

aquanight

2004-07-14 21:33

reporter   ~0007067

Well for one, the channel wasn't +O when the oper actually joined :P . ChanServ sets it +O after the fact. And as I said, Anope probably doesn't enforce +OAz like IRCServices does :P .

crazy

2004-07-14 21:42

reporter   ~0007068

but now :P

===================================
Info on: #test|O|
Modes: +O
Users: 3
Creation time: 2004-07-15 02:30:37
===================================

[03:38:58] * Now talking in #test|O|

;)

Don´t know if enforce +OAz or not but works :)

Unim4trix0

2004-07-14 23:15

reporter   ~0007072

Crazy, as I said before, the local server DOES accept the chanmode +O, its the REMOTE servers that deny it. The local server will show the channel being +O, and the remotes will show it -O. There is a channel mode desync.

Zell

2004-07-15 00:12

reporter   ~0007076

Negative. Anope does -NOT- enforce +OAz on the first user joining. In fact, if you change mode +O or +A (ircd denys +z unless all are umode +z) while non-opers are in the room, Anope doesnt do anything.

* Zell sets mode +O
[nothing from services]
* Zell sets mode +A
[still, nothing]
* Zell sets mode -AO
->ChanServ- set #otest mlock +AO
* ChanServ sets mode +AO
<Nonop> so when is this thing gonna kick me?

Anope has a habit of doing that LOL... and if im not mistaken, I can mlock it to +z and it will set that even if non-SSL users are in the room (though they wont be let back in if they leave)

aquanight

2004-07-15 00:15

reporter   ~0007077

Isn't that what I said? :P

(Hm... Should it be possible to set +OA at the same time? :P )

codemastr

2004-07-15 12:54

reporter   ~0007093

Ok, that's enough debating this. Yes it affects some services. End of story. This isn't a place for you people to argue, it is a place to report bugs and suggest features.

Unim4trix0

2004-12-10 03:42

reporter   ~0008576

As this hasn't been marked resolved, i'll chime in again with an idea.
Perhaps simply remove mode checking from remote servers.
Have the local server check to make sure the mode change is allowed, then propgate it, and all other servers simply accept it without any fuss, similar to how JOIN is propogated as SJOIN

syzop

2004-12-10 11:21

administrator   ~0008578

ARggggggggggh *mark as private*.
Anyway, I suppose codemastr simply forgot about this issue. The fix, or at least temporarely, is easy (just making it a local-only check).

syzop

2005-02-03 20:08

administrator   ~0009014

Fixed in .254 [well, not the services discussion of course]

Issue History

Date Modified Username Field Change
2004-07-10 21:19 Unim4trix0 New Issue
2004-07-10 22:13 EddieK101 Note Added: 0006984
2004-07-10 23:43 codemastr Note Added: 0006985
2004-07-11 00:22 Unim4trix0 Note Added: 0006986
2004-07-11 01:13 Unim4trix0 Note Edited: 0006986
2004-07-11 02:42 fez Note Added: 0006987
2004-07-12 13:59 vonitsanet Note Added: 0007015
2004-07-12 15:40 codemastr Status new => assigned
2004-07-12 15:40 codemastr Assigned To => codemastr
2004-07-14 12:26 Zell Note Added: 0007043
2004-07-14 14:47 medice Note Added: 0007048
2004-07-14 19:44 aquanight Note Added: 0007051
2004-07-14 19:53 Bergee Note Added: 0007053
2004-07-14 19:57 aquanight Note Added: 0007054
2004-07-14 19:59 Bergee Note Added: 0007055
2004-07-14 20:00 Bergee Note Edited: 0007055
2004-07-14 20:07 fez Note Added: 0007056
2004-07-14 20:11 Bergee Note Added: 0007057
2004-07-14 20:15 aquanight Note Added: 0007058
2004-07-14 21:15 fez Note Added: 0007059
2004-07-14 21:17 aquanight Note Added: 0007060
2004-07-14 21:18 crazy Note Added: 0007061
2004-07-14 21:20 crazy Note Edited: 0007061
2004-07-14 21:24 aquanight Note Added: 0007063
2004-07-14 21:31 crazy Note Added: 0007066
2004-07-14 21:33 aquanight Note Added: 0007067
2004-07-14 21:42 crazy Note Added: 0007068
2004-07-14 23:15 Unim4trix0 Note Added: 0007072
2004-07-15 00:12 Zell Note Added: 0007076
2004-07-15 00:15 aquanight Note Added: 0007077
2004-07-15 12:54 codemastr Note Added: 0007093
2004-12-09 12:30 syzop Relationship added has duplicate 0002186
2004-12-10 03:42 Unim4trix0 Note Added: 0008576
2004-12-10 11:21 syzop Note Added: 0008578
2004-12-10 11:21 syzop View Status public => private
2005-02-03 20:06 syzop Severity major => minor
2005-02-03 20:06 syzop Product Version 3.2-RC2 => 3.2.2
2005-02-03 20:06 syzop View Status private => public
2005-02-03 20:08 syzop Status assigned => resolved
2005-02-03 20:08 syzop Resolution open => fixed
2005-02-03 20:08 syzop Note Added: 0009014