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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user