Fix bug #85 - Do not broadcast unknown commands, but allow for commands to be broadcasted if they are double escaped with ++ or !!.
This commit is contained in:
parent
40fc09a7ef
commit
f50b40fb92
@ -490,7 +490,7 @@ int command_dipatcher(struct hub_info* hub, struct hub_user* user, const char* m
|
||||
|
||||
/* Parse and validate the command */
|
||||
struct hub_command* cmd = command_create(message);
|
||||
if (!cmd) return 1;
|
||||
if (!cmd) return 0;
|
||||
|
||||
for (n = 0; command_handlers[n].prefix; n++)
|
||||
{
|
||||
@ -524,7 +524,7 @@ int command_dipatcher(struct hub_info* hub, struct hub_user* user, const char* m
|
||||
|
||||
command_not_found(hub, user, cmd);
|
||||
command_destroy(cmd);
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct commands_handler command_handlers[] = {
|
||||
|
@ -183,9 +183,23 @@ int hub_handle_chat_message(struct hub_info* hub, struct hub_user* u, struct adc
|
||||
int ret = 0;
|
||||
int relay = 1;
|
||||
|
||||
if (message[0] == '!' || message[0] == '+')
|
||||
if ((cmd->cache[0] == 'B') && (message[0] == '!' || message[0] == '+'))
|
||||
{
|
||||
relay = command_dipatcher(hub, u, message);
|
||||
/*
|
||||
* A message such as "++message" is handled as "+message", by removing the first character.
|
||||
* The first character is removed by memmoving the string one byte to the left.
|
||||
*/
|
||||
if (message[1] == message[0])
|
||||
{
|
||||
relay = 1;
|
||||
int offset = adc_msg_get_arg_offset(cmd);
|
||||
memmove(cmd->cache+offset+1, cmd->cache+offset+2, cmd->length - offset);
|
||||
cmd->length--;
|
||||
}
|
||||
else
|
||||
{
|
||||
relay = command_dipatcher(hub, u, message);
|
||||
}
|
||||
}
|
||||
|
||||
if (hub->config->chat_is_privileged && !user_is_protected(u) && (cmd->cache[0] == 'B' || cmd->cache[0] == 'F'))
|
||||
|
Loading…
Reference in New Issue
Block a user