um_regonlymsg: copy auto-accept logic from +g
This commit is contained in:
parent
d24434edb7
commit
c5d7c5ed44
1 changed files with 41 additions and 0 deletions
|
@ -94,6 +94,35 @@ allow_message(struct Client *source_p, struct Client *target_p)
|
|||
return false;
|
||||
}
|
||||
|
||||
static bool
|
||||
add_callerid_accept_for_source(enum message_type msgtype, struct Client *source_p, struct Client *target_p)
|
||||
{
|
||||
if (!MyClient(source_p))
|
||||
return true;
|
||||
|
||||
if(msgtype != MESSAGE_TYPE_NOTICE &&
|
||||
IsSetRegOnlyMsg(source_p) &&
|
||||
!accept_message(target_p, source_p) &&
|
||||
!IsOperGeneral(target_p))
|
||||
{
|
||||
if(rb_dlink_list_length(&source_p->localClient->allow_list) <
|
||||
(unsigned long)ConfigFileEntry.max_accept)
|
||||
{
|
||||
rb_dlinkAddAlloc(target_p, &source_p->localClient->allow_list);
|
||||
rb_dlinkAddAlloc(source_p, &target_p->on_allow_list);
|
||||
}
|
||||
else
|
||||
{
|
||||
sendto_one_numeric(source_p, ERR_OWNMODE,
|
||||
form_str(ERR_OWNMODE),
|
||||
target_p->name, "+R");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void
|
||||
h_hdl_invite(void *vdata)
|
||||
{
|
||||
|
@ -105,6 +134,12 @@ h_hdl_invite(void *vdata)
|
|||
if (data->approved)
|
||||
return;
|
||||
|
||||
if (!add_callerid_accept_for_source(MESSAGE_TYPE_PRIVMSG, source_p, target_p))
|
||||
{
|
||||
data->approved = ERR_NONONREG;
|
||||
return;
|
||||
}
|
||||
|
||||
if (allow_message(source_p, target_p))
|
||||
return;
|
||||
|
||||
|
@ -125,6 +160,12 @@ h_hdl_privmsg_user(void *vdata)
|
|||
if (data->approved)
|
||||
return;
|
||||
|
||||
if (!add_callerid_accept_for_source(data->msgtype, source_p, target_p))
|
||||
{
|
||||
data->approved = ERR_NONONREG;
|
||||
return;
|
||||
}
|
||||
|
||||
if (allow_message(source_p, target_p))
|
||||
return;
|
||||
|
||||
|
|
Loading…
Reference in a new issue