1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-02 15:53:12 +02:00

relay: add option reconnect in command /remote (closes #2160)

This commit is contained in:
Sébastien Helleu
2024-07-19 09:19:34 +02:00
parent 66792445b4
commit 66707dbdf9
18 changed files with 431 additions and 299 deletions
+27 -10
View File
@@ -680,6 +680,25 @@ relay_command_remote (const void *pointer, void *data,
return WEECHAT_RC_OK;
}
if (weechat_strcmp (argv[1], "reconnect") == 0)
{
WEECHAT_COMMAND_MIN_ARGS(3, argv[1]);
ptr_remote = relay_remote_search (argv[2]);
if (!ptr_remote)
{
weechat_printf (
NULL,
_("%s%s: remote relay \"%s\" not found for \"%s\" command"),
weechat_prefix ("error"),
RELAY_PLUGIN_NAME,
argv[2],
"remote connect");
return WEECHAT_RC_ERROR;
}
relay_remote_reconnect (ptr_remote);
return WEECHAT_RC_OK;
}
if (weechat_strcmp (argv[1], "send") == 0)
{
WEECHAT_COMMAND_MIN_ARGS(4, argv[1]);
@@ -903,11 +922,9 @@ relay_command_init ()
/* TRANSLATORS: only text between angle brackets (eg: "<name>") must be translated */
N_("list|listfull [<name>]"
" || add|addreplace <name> <url> [-<option>[=<value>]]"
" || connect <name>"
" || connect|reconnect|disconnect|del <name>"
" || send <name> <json>"
" || disconnect <name>"
" || rename <name> <new_name>"
" || del <name>"),
" || rename <name> <new_name>"),
WEECHAT_CMD_ARGS_DESC(
N_("raw[list]: list remote relay servers "
"(without argument, this list is displayed)"),
@@ -921,25 +938,25 @@ relay_command_init ()
"or http://example.com:9000 (plain-text connection, not recommended)"),
N_("option: set option for remote relay"),
N_("raw[connect]: connect to a remote relay server"),
N_("raw[send]: send JSON data to a remote relay server"),
N_("raw[reconnect]: reconnect to a remote relay server"),
N_("raw[disconnect]: disconnect from a remote relay server"),
N_("raw[rename]: rename a remote relay server"),
N_("raw[del]: delete a remote relay server"),
N_("raw[send]: send JSON data to a remote relay server"),
N_("raw[rename]: rename a remote relay server"),
"",
N_("Examples:"),
AI(" /remote add example https://localhost:9000 "
"-password=my_secret_password -totp_secret=secrettotp"),
AI(" /remote connect example"),
AI(" /remote disconnect example"),
AI(" /remote del example")),
"list %(relay_remotes)"
" || listfull %(relay_remotes)"
" || add|addreplace %(relay_remotes) https://localhost:9000 "
"-autoconnect=on|-password=${xxx}|-proxy=xxx|-tls_verify=off|"
"-totp_secret=${xxx}|%*"
" || connect %(relay_remotes)"
" || connect|reconnect|disconnect|del %(relay_remotes)"
" || send %(relay_remotes) {\"request\":\"\"}"
" || disconnect %(relay_remotes)"
" || rename %(relay_remotes) %(relay_remotes)"
" || del %(relay_remotes)",
" || rename %(relay_remotes) %(relay_remotes)",
&relay_command_remote, NULL, NULL);
}
+38 -4
View File
@@ -639,13 +639,12 @@ relay_remote_set_status (struct t_relay_remote *remote,
int
relay_remote_connect (struct t_relay_remote *remote)
{
#ifdef HAVE_CJSON
if (!remote)
return 0;
#ifdef HAVE_CJSON
return relay_remote_network_connect (remote);
#else
(void) remote;
weechat_printf (NULL,
_("%s%s: error: unable to connect to a remote relay via API "
"(cJSON support is not enabled)"),
@@ -773,16 +772,51 @@ relay_remote_rename (struct t_relay_remote *remote, const char *name)
/*
* Disconnects one remote.
*
* Returns:
* 1: OK
* 0: error
*/
void
int
relay_remote_disconnect (struct t_relay_remote *remote)
{
if (!remote)
return 0;
#ifdef HAVE_CJSON
if (remote->sock >= 0)
relay_remote_network_disconnect (remote);
return 1;
#else
(void) remote;
return 0;
#endif /* HAVE_CJSON */
}
/*
* Reconnects to a remote WeeChat relay/api.
*
* Returns:
* 1: OK
* 0: error
*/
int
relay_remote_reconnect (struct t_relay_remote *remote)
{
if (!remote)
return 0;
#ifdef HAVE_CJSON
if (!relay_remote_disconnect (remote))
return 0;
return relay_remote_network_connect (remote);
#else
weechat_printf (NULL,
_("%s%s: error: unable to connect to a remote relay via API "
"(cJSON support is not enabled)"),
weechat_prefix ("error"), RELAY_PLUGIN_NAME);
return 0;
#endif /* HAVE_CJSON */
}
+2 -1
View File
@@ -100,7 +100,8 @@ extern void relay_remote_set_status (struct t_relay_remote *remote,
extern int relay_remote_connect (struct t_relay_remote *remote);
extern void relay_remote_auto_connect ();
extern int relay_remote_send (struct t_relay_remote *remote, const char *json);
extern void relay_remote_disconnect (struct t_relay_remote *remote);
extern int relay_remote_disconnect (struct t_relay_remote *remote);
extern int relay_remote_reconnect (struct t_relay_remote *remote);
extern void relay_remote_disconnect_all ();
extern int relay_remote_rename (struct t_relay_remote *remote, const char *name);
extern void relay_remote_free (struct t_relay_remote *remote);