1
0
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:
Sebastien Helleu
2010-09-17 20:16:08 +02:00
parent bf98885506
commit a20ae821da
17 changed files with 123 additions and 12 deletions
+33 -1
View File
@@ -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",
+1
View File
@@ -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;
+9 -1
View File
@@ -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,
+2
View File
@@ -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);