Merge branch 'upstream/master'

This commit is contained in:
qvqc 2020-04-22 04:52:11 -04:00
commit 3dac5660cf
4 changed files with 29 additions and 11 deletions

View File

@ -1,3 +1,4 @@
pool-listen = 0.0.0.0
pool-port = 4242 pool-port = 4242
pool-ssl-port = pool-ssl-port =
webui-port = 4243 webui-port = 4243

View File

@ -137,6 +137,7 @@ typedef struct config_t
double retarget_ratio; double retarget_ratio;
double pool_fee; double pool_fee;
double payment_threshold; double payment_threshold;
char pool_listen[256];
uint32_t pool_port; uint32_t pool_port;
uint32_t pool_ssl_port; uint32_t pool_ssl_port;
uint32_t log_level; uint32_t log_level;
@ -2705,7 +2706,7 @@ static void
read_config(const char *config_file) read_config(const char *config_file)
{ {
/* Start with some defaults for any missing... */ /* Start with some defaults for any missing... */
strncpy(config.rpc_host, "127.0.0.1", 10); strcpy(config.rpc_host, "127.0.0.1");
config.rpc_port = 18081; config.rpc_port = 18081;
config.rpc_timeout = 15; config.rpc_timeout = 15;
config.pool_start_diff = 100; config.pool_start_diff = 100;
@ -2714,13 +2715,14 @@ read_config(const char *config_file)
config.retarget_ratio = 0.55; config.retarget_ratio = 0.55;
config.pool_fee = 0.01; config.pool_fee = 0.01;
config.payment_threshold = 0.33; config.payment_threshold = 0.33;
strcpy(config.pool_listen, "0.0.0.0");
config.pool_port = 4242; config.pool_port = 4242;
config.pool_ssl_port = 0; config.pool_ssl_port = 0;
config.log_level = 5; config.log_level = 5;
config.webui_port = 4243; config.webui_port = 4243;
config.block_notified = false; config.block_notified = false;
config.disable_self_select = false; config.disable_self_select = false;
strncpy(config.data_dir, "./data", 7); strcpy(config.data_dir, "./data");
char path[MAX_PATH] = {0}; char path[MAX_PATH] = {0};
if (config_file) if (config_file)
@ -2755,12 +2757,14 @@ read_config(const char *config_file)
log_fatal("Cannot open config file. Aborting."); log_fatal("Cannot open config file. Aborting.");
exit(-1); exit(-1);
} }
char line[256]; char line[1024];
char *key; char *key;
char *val; char *val;
const char *tok = " ="; const char *tok = " =";
while (fgets(line, sizeof(line), fp)) while (fgets(line, sizeof(line), fp))
{ {
if (*line == '#')
continue;
key = strtok(line, tok); key = strtok(line, tok);
if (!key) if (!key)
continue; continue;
@ -2768,7 +2772,11 @@ read_config(const char *config_file)
if (!val) if (!val)
continue; continue;
val[strcspn(val, "\r\n")] = 0; val[strcspn(val, "\r\n")] = 0;
if (strcmp(key, "pool-port") == 0) if (strcmp(key, "pool-listen") == 0)
{
strncpy(config.pool_listen, val, sizeof(config.pool_listen));
}
else if (strcmp(key, "pool-port") == 0)
{ {
config.pool_port = atoi(val); config.pool_port = atoi(val);
} }
@ -2887,6 +2895,7 @@ read_config(const char *config_file)
static void print_config() static void print_config()
{ {
log_info("\nCONFIG:\n" log_info("\nCONFIG:\n"
" pool-listen = %s\n"
" pool-port = %u\n" " pool-port = %u\n"
" pool-ssl-port = %u\n" " pool-ssl-port = %u\n"
" webui-port= %u\n" " webui-port= %u\n"
@ -2909,6 +2918,7 @@ static void print_config()
" data-dir = %s\n" " data-dir = %s\n"
" pid-file = %s\n" " pid-file = %s\n"
" forked = %u\n", " forked = %u\n",
config.pool_listen,
config.pool_port, config.pool_port,
config.pool_ssl_port, config.pool_ssl_port,
config.webui_port, config.webui_port,
@ -2951,7 +2961,9 @@ static void
run(void) run(void)
{ {
evutil_socket_t listener; evutil_socket_t listener;
struct sockaddr_in sin; struct addrinfo *info;
int rc;
char port[6];
base = event_base_new(); base = event_base_new();
if (!base) if (!base)
@ -2960,11 +2972,14 @@ run(void)
return; return;
} }
sin.sin_family = AF_INET; sprintf(port, "%d", config.pool_port);
sin.sin_addr.s_addr = 0; if ((rc = getaddrinfo(config.pool_listen, port, 0, &info)))
sin.sin_port = htons(config.pool_port); {
log_fatal("Error parsing listen address: %s", gai_strerror(rc));
return;
}
listener = socket(AF_INET, SOCK_STREAM, 0); listener = socket(info->ai_family, SOCK_STREAM, 0);
evutil_make_socket_nonblocking(listener); evutil_make_socket_nonblocking(listener);
#ifndef WIN32 #ifndef WIN32
@ -2974,7 +2989,7 @@ run(void)
} }
#endif #endif
if (bind(listener, (struct sockaddr*)&sin, sizeof(sin)) < 0) if (bind(listener, info->ai_addr, info->ai_addrlen) < 0)
{ {
perror("bind"); perror("bind");
return; return;
@ -3204,6 +3219,7 @@ int main(int argc, char **argv)
uic.port = config.webui_port; uic.port = config.webui_port;
uic.pool_stats = &pool_stats; uic.pool_stats = &pool_stats;
uic.pool_fee = config.pool_fee; uic.pool_fee = config.pool_fee;
strncpy(uic.pool_listen, config.pool_listen, sizeof(uic.pool_listen));
uic.pool_port = config.pool_port; uic.pool_port = config.pool_port;
uic.pool_ssl_port = config.pool_ssl_port; uic.pool_ssl_port = config.pool_ssl_port;
uic.allow_self_select = !config.disable_self_select; uic.allow_self_select = !config.disable_self_select;

View File

@ -144,7 +144,7 @@ thread_main(void *ctx)
{ {
wui_context_t *context = (wui_context_t*) ctx; wui_context_t *context = (wui_context_t*) ctx;
webui_listener = evhttp_bind_socket_with_handle( webui_listener = evhttp_bind_socket_with_handle(
webui_httpd, "0.0.0.0", context->port); webui_httpd, context->pool_listen, context->port);
if(!webui_listener) if(!webui_listener)
{ {
log_error("Failed to bind for port: %u", context->port); log_error("Failed to bind for port: %u", context->port);

View File

@ -55,6 +55,7 @@ typedef struct wui_context_t
double pool_fee; double pool_fee;
double payment_threshold; double payment_threshold;
uint32_t pool_port; uint32_t pool_port;
char pool_listen[256];
uint32_t pool_ssl_port; uint32_t pool_ssl_port;
unsigned allow_self_select; unsigned allow_self_select;
} wui_context_t; } wui_context_t;