Code: Select all
/* This function adds as an extra (weird) operoverride.
* Currently it's only used if you try to operoverride for a +z channel,
* if you then do '/join #chan override' it will put the channel -z and allow you directly in.
* This is to avoid attackers from using 'race conditions' to prevent you from joining.
* PARAMETERS: sptr = the client, chptr = the channel, mval = mode value (eg MODE_ONLYSECURE),
* mchar = mode char (eg 'z')
* RETURNS: 1 if operoverride, 0 if not.
*/
int extended_operoverride(aClient *sptr, aChannel *chptr, char *key, int mval, char mchar) ...
Code: Select all
DLLFUNC int _can_join(aClient *cptr, aClient *sptr, aChannel *chptr, char *key, char *link, char *parv[])
{
Link *lp;
Ban *banned;
if ((chptr->mode.mode & MODE_ONLYSECURE) && !(sptr->umodes & UMODE_SECURE))
{
if (IsAnOper(sptr))
{
/* Yeah yeah.. duplicate code..
* Anyway: if the channel is +z we still allow an ircop to bypass it
* if they are invited.
*/
for (lp = sptr->user->invited; lp; lp = lp->next)
if (lp->value.chptr == chptr)
return 0;
}
return (ERR_SECUREONLYCHAN);
}
...
i tried to use: "/join #chan override" as an oper who had the flag can_override with nothing happend channel still +z and get i ERR_SECUREONLYCHAN
of course /invite works well, i just want to know why ?
ps: i think it doesn't matter anway ... unrealircd isn't compiled with ssl support
thanks to all the Team.