Add an ad-hoc configure command on IRC channels
Include encodingIn and encodingOut options, unused at the moment
This commit is contained in:
@@ -43,7 +43,8 @@ static std::set<std::string> kickable_errors{
|
||||
|
||||
BiboumiComponent::BiboumiComponent(std::shared_ptr<Poller> poller, const std::string& hostname, const std::string& secret):
|
||||
XmppComponent(poller, hostname, secret),
|
||||
irc_server_adhoc_commands_handler(*this)
|
||||
irc_server_adhoc_commands_handler(*this),
|
||||
irc_channel_adhoc_commands_handler(*this)
|
||||
{
|
||||
this->stanza_handlers.emplace("presence",
|
||||
std::bind(&BiboumiComponent::handle_presence, this,std::placeholders::_1));
|
||||
@@ -65,6 +66,9 @@ BiboumiComponent::BiboumiComponent(std::shared_ptr<Poller> poller, const std::st
|
||||
{"configure", AdhocCommand({&ConfigureIrcServerStep1, &ConfigureIrcServerStep2}, "Configure a few settings for that IRC server", false)},
|
||||
#endif
|
||||
};
|
||||
this->irc_channel_adhoc_commands_handler.get_commands() = {
|
||||
{"configure", AdhocCommand({&ConfigureIrcChannelStep1, &ConfigureIrcChannelStep2}, "Configure a few settings for that IRC channel", false)},
|
||||
};
|
||||
}
|
||||
|
||||
void BiboumiComponent::shutdown()
|
||||
@@ -331,6 +335,8 @@ void BiboumiComponent::handle_iq(const Stanza& stanza)
|
||||
AdhocCommandsHandler* adhoc_handler;
|
||||
if (!to.local.empty() && !iid.is_user && !iid.is_channel)
|
||||
adhoc_handler = &this->irc_server_adhoc_commands_handler;
|
||||
else if (!to.local.empty() && iid.is_channel)
|
||||
adhoc_handler = &this->irc_channel_adhoc_commands_handler;
|
||||
else
|
||||
adhoc_handler = &this->adhoc_commands_handler;
|
||||
|
||||
@@ -407,6 +413,14 @@ void BiboumiComponent::handle_iq(const Stanza& stanza)
|
||||
this->irc_server_adhoc_commands_handler);
|
||||
stanza_error.disable();
|
||||
}
|
||||
else if (!iid.is_user && iid.is_channel)
|
||||
{ // Get the channel's adhoc commands
|
||||
this->send_adhoc_commands_list(id, from, to_str,
|
||||
(Config::get("admin", "") ==
|
||||
from_jid.bare()),
|
||||
this->irc_channel_adhoc_commands_handler);
|
||||
stanza_error.disable();
|
||||
}
|
||||
}
|
||||
else if (node.empty() && !iid.is_user && !iid.is_channel)
|
||||
{ // Disco on an IRC server: get the list of channels
|
||||
|
||||
Reference in New Issue
Block a user