mirror of
https://github.com/weechat/weechat.git
synced 2026-07-10 19:53:13 +02:00
Add new option relay.network.bind_address
This commit is contained in:
@@ -49,6 +49,7 @@ struct t_config_option *relay_config_color_status[RELAY_NUM_STATUS];
|
||||
|
||||
/* relay config, network section */
|
||||
|
||||
struct t_config_option *relay_config_network_bind_address;
|
||||
struct t_config_option *relay_config_network_max_clients;
|
||||
struct t_config_option *relay_config_network_password;
|
||||
|
||||
@@ -69,6 +70,29 @@ relay_config_refresh_cb (void *data, struct t_config_option *option)
|
||||
relay_buffer_refresh (NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* relay_config_change_network_bind_address_cb: callback called when user changes
|
||||
* network bind address option
|
||||
*/
|
||||
|
||||
void
|
||||
relay_config_change_network_bind_address_cb (void *data,
|
||||
struct t_config_option *option)
|
||||
{
|
||||
struct t_relay_server *ptr_server;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) data;
|
||||
(void) option;
|
||||
|
||||
for (ptr_server = relay_servers; ptr_server;
|
||||
ptr_server = ptr_server->next_server)
|
||||
{
|
||||
relay_server_close_socket (ptr_server);
|
||||
relay_server_create_socket (ptr_server);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* relay_config_change_port_cb: callback called when relay port option is
|
||||
* modified
|
||||
@@ -336,7 +360,15 @@ relay_config_init ()
|
||||
weechat_config_free (relay_config_file);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
relay_config_network_bind_address = weechat_config_new_option (
|
||||
relay_config_file, ptr_section,
|
||||
"bind_address", "string",
|
||||
N_("address for bind (if empty, connection is possible on all "
|
||||
"interfaces, use \"127.0.0.1\" to allow connections from "
|
||||
"local machine only)"),
|
||||
NULL, 0, 0, "", NULL, 0, NULL, NULL,
|
||||
&relay_config_change_network_bind_address_cb, NULL, NULL, NULL);
|
||||
relay_config_network_max_clients = weechat_config_new_option (
|
||||
relay_config_file, ptr_section,
|
||||
"max_clients", "integer",
|
||||
|
||||
@@ -33,6 +33,7 @@ extern struct t_config_option *relay_config_color_text_bg;
|
||||
extern struct t_config_option *relay_config_color_text_selected;
|
||||
extern struct t_config_option *relay_config_color_status[];
|
||||
|
||||
extern struct t_config_option *relay_config_network_bind_address;
|
||||
extern struct t_config_option *relay_config_network_max_clients;
|
||||
extern struct t_config_option *relay_config_network_password;
|
||||
|
||||
|
||||
@@ -248,7 +248,15 @@ relay_server_create_socket (struct t_relay_server *server)
|
||||
|
||||
memset(&server_addr, 0, sizeof(struct sockaddr_in));
|
||||
server_addr.sin_family = AF_INET;
|
||||
server_addr.sin_addr.s_addr = INADDR_ANY;
|
||||
if (weechat_config_string (relay_config_network_bind_address)
|
||||
&& weechat_config_string (relay_config_network_bind_address)[0])
|
||||
{
|
||||
server_addr.sin_addr.s_addr = inet_addr (weechat_config_string (relay_config_network_bind_address));
|
||||
}
|
||||
else
|
||||
{
|
||||
server_addr.sin_addr.s_addr = INADDR_ANY;
|
||||
}
|
||||
server_addr.sin_port = htons (server->port);
|
||||
|
||||
if (bind (server->sock, (struct sockaddr *) &server_addr,
|
||||
|
||||
@@ -41,6 +41,8 @@ extern void relay_server_get_protocol_string (const char *protocol_and_string,
|
||||
char **protocol_string);
|
||||
extern struct t_relay_server *relay_server_search (const char *protocol_and_string);
|
||||
extern struct t_relay_server *relay_server_search_port (int port);
|
||||
extern void relay_server_close_socket (struct t_relay_server *server);
|
||||
extern int relay_server_create_socket (struct t_relay_server *server);
|
||||
extern struct t_relay_server *relay_server_new (enum t_relay_protocol protocol,
|
||||
const char *protocol_string,
|
||||
int port);
|
||||
|
||||
Reference in New Issue
Block a user