xep-0092: make it possible to ask servers or components for software

This adds the new `/serversoftware` command.

```
/software user@domain.org/resource
/serversoftware domain.org
```

Fix https://github.com/profanity-im/profanity/issues/1338
This commit is contained in:
Michael Vetter
2020-05-14 19:13:27 +02:00
parent 9243655a22
commit 9c853d9f46
4 changed files with 65 additions and 17 deletions

View File

@@ -2433,6 +2433,23 @@ static struct cmd_t command_defs[] =
{ "on|off", "Enable or disable slashguard." })
CMD_NOEXAMPLES
},
{ "/serversoftware",
parse_args, 1, 1, NULL,
CMD_NOSUBFUNCS
CMD_MAINFUNC(cmd_serversoftware)
CMD_TAGS(
CMD_TAG_DISCOVERY)
CMD_SYN(
"/serversoftware <domain>")
CMD_DESC(
"Find server or component software version information.")
CMD_ARGS(
{ "<domain>", "The jid of your server or component." })
CMD_EXAMPLES(
"/software valhalla.edda",
"/software xmpp.vanaheimr.edda")
}
};
static GHashTable *search_index;

View File

@@ -3521,6 +3521,25 @@ cmd_software(ProfWin *window, const char *const command, gchar **args)
return TRUE;
}
gboolean
cmd_serversoftware(ProfWin *window, const char *const command, gchar **args)
{
jabber_conn_status_t conn_status = connection_get_status();
if (conn_status != JABBER_CONNECTED) {
cons_show("You are not currently connected.");
return TRUE;
}
if (args[0]) {
iq_send_software_version(args[0]);
} else {
cons_show("You must provide a jid to the /serversoftware command.");
}
return TRUE;
}
gboolean
cmd_join(ProfWin *window, const char *const command, gchar **args)
{

View File

@@ -231,4 +231,5 @@ gboolean cmd_os(ProfWin *window, const char *const command, gchar **args);
gboolean cmd_correction(ProfWin *window, const char *const command, gchar **args);
gboolean cmd_correct(ProfWin *window, const char *const command, gchar **args);
gboolean cmd_slashguard(ProfWin *window, const char *const command, gchar **args);
gboolean cmd_serversoftware(ProfWin *window, const char *const command, gchar **args);
#endif