Make the global ad-hoc configure command available in fixed mode
fix #3360
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
Version 8.3
|
||||||
|
===========
|
||||||
|
|
||||||
|
- The global ad-hoc configure command is now available on biboumi’s JID in
|
||||||
|
fixed_irc_server mode.
|
||||||
|
|
||||||
Version 8.2 - 2018-05-23
|
Version 8.2 - 2018-05-23
|
||||||
========================
|
========================
|
||||||
|
|
||||||
|
|||||||
@@ -72,11 +72,16 @@ BiboumiComponent::BiboumiComponent(std::shared_ptr<Poller>& poller, const std::s
|
|||||||
AdhocCommand configure_global_command({&ConfigureGlobalStep1, &ConfigureGlobalStep2}, "Configure a few settings", false);
|
AdhocCommand configure_global_command({&ConfigureGlobalStep1, &ConfigureGlobalStep2}, "Configure a few settings", false);
|
||||||
|
|
||||||
if (!Config::get("fixed_irc_server", "").empty())
|
if (!Config::get("fixed_irc_server", "").empty())
|
||||||
this->adhoc_commands_handler.add_command("configure", configure_server_command);
|
{
|
||||||
|
this->adhoc_commands_handler.add_command("server-configure", configure_server_command);
|
||||||
|
this->adhoc_commands_handler.add_command("global-configure", configure_global_command);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
this->adhoc_commands_handler.add_command("configure", configure_global_command);
|
{
|
||||||
|
this->adhoc_commands_handler.add_command("configure", configure_global_command);
|
||||||
|
this->irc_server_adhoc_commands_handler.add_command("configure", configure_server_command);
|
||||||
|
}
|
||||||
|
|
||||||
this->irc_server_adhoc_commands_handler.add_command("configure", configure_server_command);
|
|
||||||
this->irc_channel_adhoc_commands_handler.add_command("configure", {{&ConfigureIrcChannelStep1, &ConfigureIrcChannelStep2}, "Configure a few settings for that IRC channel", false});
|
this->irc_channel_adhoc_commands_handler.add_command("configure", {{&ConfigureIrcChannelStep1, &ConfigureIrcChannelStep2}, "Configure a few settings for that IRC channel", false});
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -891,28 +891,35 @@ if __name__ == '__main__':
|
|||||||
handshake_sequence(),
|
handshake_sequence(),
|
||||||
partial(send_stanza, "<iq type='get' id='idwhatever' from='{jid_one}/{resource_one}' to='{biboumi_host}'><query xmlns='http://jabber.org/protocol/disco#items' node='http://jabber.org/protocol/commands' /></iq>"),
|
partial(send_stanza, "<iq type='get' id='idwhatever' from='{jid_one}/{resource_one}' to='{biboumi_host}'><query xmlns='http://jabber.org/protocol/disco#items' node='http://jabber.org/protocol/commands' /></iq>"),
|
||||||
partial(expect_stanza, ("/iq[@type='result']/disco_items:query[@node='http://jabber.org/protocol/commands']",
|
partial(expect_stanza, ("/iq[@type='result']/disco_items:query[@node='http://jabber.org/protocol/commands']",
|
||||||
"/iq/disco_items:query/disco_items:item[3]")),
|
"/iq/disco_items:query/disco_items:item[@node='configure']",
|
||||||
|
"/iq/disco_items:query/disco_items:item[4]",
|
||||||
|
"!/iq/disco_items:query/disco_items:item[5]")),
|
||||||
]),
|
]),
|
||||||
Scenario("list_admin_adhoc",
|
Scenario("list_admin_adhoc",
|
||||||
[
|
[
|
||||||
handshake_sequence(),
|
handshake_sequence(),
|
||||||
partial(send_stanza, "<iq type='get' id='idwhatever' from='{jid_admin}/{resource_one}' to='{biboumi_host}'><query xmlns='http://jabber.org/protocol/disco#items' node='http://jabber.org/protocol/commands' /></iq>"),
|
partial(send_stanza, "<iq type='get' id='idwhatever' from='{jid_admin}/{resource_one}' to='{biboumi_host}'><query xmlns='http://jabber.org/protocol/disco#items' node='http://jabber.org/protocol/commands' /></iq>"),
|
||||||
partial(expect_stanza, ("/iq[@type='result']/disco_items:query[@node='http://jabber.org/protocol/commands']",
|
partial(expect_stanza, ("/iq[@type='result']/disco_items:query[@node='http://jabber.org/protocol/commands']",
|
||||||
"/iq/disco_items:query/disco_items:item[5]")),
|
"/iq/disco_items:query/disco_items:item[6]",
|
||||||
|
"!/iq/disco_items:query/disco_items:item[7]")),
|
||||||
]),
|
]),
|
||||||
Scenario("list_adhoc_fixed_server",
|
Scenario("list_adhoc_fixed_server",
|
||||||
[
|
[
|
||||||
handshake_sequence(),
|
handshake_sequence(),
|
||||||
partial(send_stanza, "<iq type='get' id='idwhatever' from='{jid_one}/{resource_one}' to='{biboumi_host}'><query xmlns='http://jabber.org/protocol/disco#items' node='http://jabber.org/protocol/commands' /></iq>"),
|
partial(send_stanza, "<iq type='get' id='idwhatever' from='{jid_one}/{resource_one}' to='{biboumi_host}'><query xmlns='http://jabber.org/protocol/disco#items' node='http://jabber.org/protocol/commands' /></iq>"),
|
||||||
partial(expect_stanza, ("/iq[@type='result']/disco_items:query[@node='http://jabber.org/protocol/commands']",
|
partial(expect_stanza, ("/iq[@type='result']/disco_items:query[@node='http://jabber.org/protocol/commands']",
|
||||||
"/iq/disco_items:query/disco_items:item[5]")),
|
"/iq/disco_items:query/disco_items:item[@node='global-configure']",
|
||||||
|
"/iq/disco_items:query/disco_items:item[@node='server-configure']",
|
||||||
|
"/iq/disco_items:query/disco_items:item[6]",
|
||||||
|
"!/iq/disco_items:query/disco_items:item[7]")),
|
||||||
], conf='fixed_server'),
|
], conf='fixed_server'),
|
||||||
Scenario("list_admin_adhoc_fixed_server",
|
Scenario("list_admin_adhoc_fixed_server",
|
||||||
[
|
[
|
||||||
handshake_sequence(),
|
handshake_sequence(),
|
||||||
partial(send_stanza, "<iq type='get' id='idwhatever' from='{jid_admin}/{resource_one}' to='{biboumi_host}'><query xmlns='http://jabber.org/protocol/disco#items' node='http://jabber.org/protocol/commands' /></iq>"),
|
partial(send_stanza, "<iq type='get' id='idwhatever' from='{jid_admin}/{resource_one}' to='{biboumi_host}'><query xmlns='http://jabber.org/protocol/disco#items' node='http://jabber.org/protocol/commands' /></iq>"),
|
||||||
partial(expect_stanza, ("/iq[@type='result']/disco_items:query[@node='http://jabber.org/protocol/commands']",
|
partial(expect_stanza, ("/iq[@type='result']/disco_items:query[@node='http://jabber.org/protocol/commands']",
|
||||||
"/iq/disco_items:query/disco_items:item[5]")),
|
"/iq/disco_items:query/disco_items:item[8]",
|
||||||
|
"!/iq/disco_items:query/disco_items:item[9]")),
|
||||||
], conf='fixed_server'),
|
], conf='fixed_server'),
|
||||||
Scenario("list_adhoc_irc",
|
Scenario("list_adhoc_irc",
|
||||||
[
|
[
|
||||||
@@ -921,20 +928,6 @@ if __name__ == '__main__':
|
|||||||
partial(expect_stanza, ("/iq[@type='result']/disco_items:query[@node='http://jabber.org/protocol/commands']",
|
partial(expect_stanza, ("/iq[@type='result']/disco_items:query[@node='http://jabber.org/protocol/commands']",
|
||||||
"/iq/disco_items:query/disco_items:item[2]")),
|
"/iq/disco_items:query/disco_items:item[2]")),
|
||||||
]),
|
]),
|
||||||
Scenario("list_adhoc_irc_fixed_server",
|
|
||||||
[
|
|
||||||
handshake_sequence(),
|
|
||||||
partial(send_stanza, "<iq type='get' id='idwhatever' from='{jid_one}/{resource_one}' to='{biboumi_host}'><query xmlns='http://jabber.org/protocol/disco#items' node='http://jabber.org/protocol/commands' /></iq>"),
|
|
||||||
partial(expect_stanza, ("/iq[@type='result']/disco_items:query[@node='http://jabber.org/protocol/commands']",
|
|
||||||
"/iq/disco_items:query/disco_items:item[4]")),
|
|
||||||
], conf='fixed_server'),
|
|
||||||
Scenario("list_admin_adhoc_irc_fixed_server",
|
|
||||||
[
|
|
||||||
handshake_sequence(),
|
|
||||||
partial(send_stanza, "<iq type='get' id='idwhatever' from='{jid_admin}/{resource_one}' to='{biboumi_host}'><query xmlns='http://jabber.org/protocol/disco#items' node='http://jabber.org/protocol/commands' /></iq>"),
|
|
||||||
partial(expect_stanza, ("/iq[@type='result']/disco_items:query[@node='http://jabber.org/protocol/commands']",
|
|
||||||
"/iq/disco_items:query/disco_items:item[6]")),
|
|
||||||
], conf='fixed_server'),
|
|
||||||
Scenario("list_muc_user_adhoc",
|
Scenario("list_muc_user_adhoc",
|
||||||
[
|
[
|
||||||
handshake_sequence(),
|
handshake_sequence(),
|
||||||
@@ -2807,6 +2800,40 @@ if __name__ == '__main__':
|
|||||||
partial(send_stanza, "<iq type='set' id='id4' from='{jid_one}/{resource_one}' to='{biboumi_host}'><command xmlns='http://jabber.org/protocol/commands' action='cancel' node='configure' sessionid='{sessionid}' /></iq>"),
|
partial(send_stanza, "<iq type='set' id='id4' from='{jid_one}/{resource_one}' to='{biboumi_host}'><command xmlns='http://jabber.org/protocol/commands' action='cancel' node='configure' sessionid='{sessionid}' /></iq>"),
|
||||||
partial(expect_stanza, "/iq[@type='result']/commands:command[@node='configure'][@status='canceled']"),
|
partial(expect_stanza, "/iq[@type='result']/commands:command[@node='configure'][@status='canceled']"),
|
||||||
]),
|
]),
|
||||||
|
Scenario("global_configure_fixed",
|
||||||
|
[
|
||||||
|
handshake_sequence(),
|
||||||
|
partial(send_stanza, "<iq type='set' id='id1' from='{jid_one}/{resource_one}' to='{biboumi_host}'><command xmlns='http://jabber.org/protocol/commands' node='global-configure' action='execute' /></iq>"),
|
||||||
|
partial(expect_stanza, ("/iq[@type='result']/commands:command[@node='global-configure'][@sessionid][@status='executing']",
|
||||||
|
"/iq/commands:command/dataform:x[@type='form']/dataform:title[text()='Configure some global default settings.']",
|
||||||
|
"/iq/commands:command/dataform:x[@type='form']/dataform:instructions[text()='Edit the form, to configure your global settings for the component.']",
|
||||||
|
"/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='text-single'][@var='max_history_length']/dataform:value[text()='20']",
|
||||||
|
"/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='boolean'][@var='record_history']/dataform:value[text()='true']",
|
||||||
|
"/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='boolean'][@var='persistent']/dataform:value[text()='false']",
|
||||||
|
"/iq/commands:command/commands:actions/commands:next",
|
||||||
|
),
|
||||||
|
after = partial(save_value, "sessionid", partial(extract_attribute, "/iq[@type='result']/commands:command[@node='global-configure']", "sessionid"))
|
||||||
|
),
|
||||||
|
partial(send_stanza, "<iq type='set' id='id2' from='{jid_one}/{resource_one}' to='{biboumi_host}'><command xmlns='http://jabber.org/protocol/commands' node='global-configure' sessionid='{sessionid}' action='next'><x xmlns='jabber:x:data' type='submit'><field var='record_history'><value>0</value></field><field var='max_history_length'><value>42</value></field></x></command></iq>"),
|
||||||
|
partial(expect_stanza, "/iq[@type='result']/commands:command[@node='global-configure'][@status='completed']/commands:note[@type='info'][text()='Configuration successfully applied.']"),
|
||||||
|
|
||||||
|
partial(send_stanza, "<iq type='set' id='id3' from='{jid_one}/{resource_one}' to='{biboumi_host}'><command xmlns='http://jabber.org/protocol/commands' node='global-configure' action='execute' /></iq>"),
|
||||||
|
partial(expect_stanza, ("/iq[@type='result']/commands:command[@node='global-configure'][@sessionid][@status='executing']",
|
||||||
|
"/iq/commands:command/dataform:x[@type='form']/dataform:title[text()='Configure some global default settings.']",
|
||||||
|
"/iq/commands:command/dataform:x[@type='form']/dataform:instructions[text()='Edit the form, to configure your global settings for the component.']",
|
||||||
|
"/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='text-single'][@var='max_history_length']/dataform:value[text()='42']",
|
||||||
|
"/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='boolean'][@var='record_history']/dataform:value[text()='false']",
|
||||||
|
"/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='boolean'][@var='persistent']/dataform:value[text()='false']",
|
||||||
|
"/iq/commands:command/commands:actions/commands:next",
|
||||||
|
),
|
||||||
|
after = partial(save_value, "sessionid", partial(extract_attribute, "/iq[@type='result']/commands:command[@node='global-configure']", "sessionid"))
|
||||||
|
),
|
||||||
|
partial(send_stanza, "<iq type='set' id='id4' from='{jid_one}/{resource_one}' to='{biboumi_host}'><command xmlns='http://jabber.org/protocol/commands' action='cancel' node='global-configure' sessionid='{sessionid}' /></iq>"),
|
||||||
|
partial(expect_stanza, "/iq[@type='result']/commands:command[@node='global-configure'][@status='canceled']"),
|
||||||
|
|
||||||
|
partial(send_stanza, "<iq type='set' id='id1' from='{jid_one}/{resource_one}' to='{biboumi_host}'><command xmlns='http://jabber.org/protocol/commands' node='server-configure' action='execute' /></iq>"),
|
||||||
|
partial(expect_stanza, ("/iq[@type='result']/commands:command[@node='server-configure'][@sessionid][@status='executing']",))
|
||||||
|
], conf='fixed_server'),
|
||||||
Scenario("global_configure_persistent_by_default",
|
Scenario("global_configure_persistent_by_default",
|
||||||
[
|
[
|
||||||
handshake_sequence(),
|
handshake_sequence(),
|
||||||
|
|||||||
Reference in New Issue
Block a user