Allow /ojoin !#channel/%#channel, if admin/halfop are enabled.
This commit is contained in:
parent
46a30dbe86
commit
8097430a81
|
@ -1,6 +1,5 @@
|
||||||
Todo list for ShadowIRCd 6.1
|
Todo list for ShadowIRCd 6.1
|
||||||
-----------------------------
|
-----------------------------
|
||||||
* update ojoin/omode/etc to use +ah
|
|
||||||
* notice/message !#channel and %#channel
|
* notice/message !#channel and %#channel
|
||||||
* Add a disable_oper option to auth {} to not allow users in that auth block
|
* Add a disable_oper option to auth {} to not allow users in that auth block
|
||||||
to use OPER.
|
to use OPER.
|
||||||
|
|
|
@ -36,7 +36,7 @@ m_oaccept.c - OACCEPT - Add metadata to a user that will allow you to
|
||||||
Syntax: OACCEPT <nick>
|
Syntax: OACCEPT <nick>
|
||||||
|
|
||||||
m_ojoin.c - OJOIN - Join a channel through any modes or limits with
|
m_ojoin.c - OJOIN - Join a channel through any modes or limits with
|
||||||
an optional status (@+)
|
an optional status (!@%+)
|
||||||
Syntax: OJOIN [status]<channel>
|
Syntax: OJOIN [status]<channel>
|
||||||
|
|
||||||
m_olist.c - OLIST - Lists channels like LIST, but shows hidden
|
m_olist.c - OLIST - Lists channels like LIST, but shows hidden
|
||||||
|
|
|
@ -65,7 +65,7 @@ mo_ojoin(struct Client *client_p, struct Client *source_p, int parc, const char
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(*parv[1] == '@' || *parv[1] == '%' || *parv[1] == '+')
|
if(*parv[1] == '@' || *parv[1] == '%' || *parv[1] == '+' || *parv[1] == '!')
|
||||||
{
|
{
|
||||||
parv[1]++;
|
parv[1]++;
|
||||||
move_me = 1;
|
move_me = 1;
|
||||||
|
@ -98,7 +98,20 @@ mo_ojoin(struct Client *client_p, struct Client *source_p, int parc, const char
|
||||||
me.name, parv[1],
|
me.name, parv[1],
|
||||||
source_p->name, source_p->username, source_p->host);
|
source_p->name, source_p->username, source_p->host);
|
||||||
|
|
||||||
if(*parv[1] == '@')
|
if(*parv[1] == '!' && ConfigChannel.use_admin)
|
||||||
|
{
|
||||||
|
add_user_to_channel(chptr, source_p, CHFL_ADMIN);
|
||||||
|
sendto_server(client_p, chptr, CAP_TS6, NOCAPS,
|
||||||
|
":%s SJOIN %ld %s + :!%s",
|
||||||
|
me.id, (long) chptr->channelts, chptr->chname, source_p->id);
|
||||||
|
sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%s@%s JOIN %s",
|
||||||
|
source_p->name,
|
||||||
|
source_p->username, source_p->host, chptr->chname);
|
||||||
|
sendto_channel_local(ALL_MEMBERS, chptr, ":%s MODE %s +a %s",
|
||||||
|
me.name, chptr->chname, source_p->name);
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(*parv[1] == '@')
|
||||||
{
|
{
|
||||||
add_user_to_channel(chptr, source_p, CHFL_CHANOP);
|
add_user_to_channel(chptr, source_p, CHFL_CHANOP);
|
||||||
sendto_server(client_p, chptr, CAP_TS6, NOCAPS,
|
sendto_server(client_p, chptr, CAP_TS6, NOCAPS,
|
||||||
|
@ -111,6 +124,18 @@ mo_ojoin(struct Client *client_p, struct Client *source_p, int parc, const char
|
||||||
me.name, chptr->chname, source_p->name);
|
me.name, chptr->chname, source_p->name);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else if(*parv[1] == '%' && ConfigChannel.use_halfop)
|
||||||
|
{
|
||||||
|
add_user_to_channel(chptr, source_p, CHFL_HALFOP);
|
||||||
|
sendto_server(client_p, chptr, CAP_TS6, NOCAPS,
|
||||||
|
":%s SJOIN %ld %s + :%s%s",
|
||||||
|
me.id, (long) chptr->channelts, chptr->chname, "%", source_p->id);
|
||||||
|
sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%s@%s JOIN %s",
|
||||||
|
source_p->name,
|
||||||
|
source_p->username, source_p->host, chptr->chname);
|
||||||
|
sendto_channel_local(ALL_MEMBERS, chptr, ":%s MODE %s +h %s",
|
||||||
|
me.name, chptr->chname, source_p->name);
|
||||||
|
}
|
||||||
else if(*parv[1] == '+')
|
else if(*parv[1] == '+')
|
||||||
{
|
{
|
||||||
add_user_to_channel(chptr, source_p, CHFL_VOICE);
|
add_user_to_channel(chptr, source_p, CHFL_VOICE);
|
||||||
|
|
Loading…
Reference in New Issue