api: add api-bind param -b 0.0.0.0:4068
possible values : 5000 or :5000 to use port 5000 (local only) 0.0.0.0:5000 to allow connections from the network 127.0.0.1:4068 to only allow local connections (default) Use -b 0 to disable the API system. Signed-off-by: Tanguy Pruvot <tanguy.pruvot@gmail.com>
This commit is contained in:
parent
11a4bb1797
commit
2e0bc5e133
@ -1,5 +1,5 @@
|
||||
|
||||
ccMiner release 1.4.7-tpruvot (Nov 2014) - "Blake Intensity"
|
||||
ccMiner release 1.4.8-tpruvot (12 Nov 2014) - "API Stats"
|
||||
---------------------------------------------------------------
|
||||
|
||||
***************************************************************
|
||||
@ -107,6 +107,7 @@ its command line interface and options.
|
||||
-q, --quiet disable per-thread hashmeter output
|
||||
-D, --debug enable debug output
|
||||
-P, --protocol-dump verbose dump of protocol-level activities
|
||||
-b, --api-bind IP/Port for the miner API (default: 127.0.0.1:4068)
|
||||
--benchmark run in offline benchmark mode
|
||||
--cputest debug hashes from cpu algorithms
|
||||
-c, --config=FILE load a JSON-format configuration file
|
||||
@ -154,6 +155,10 @@ features.
|
||||
|
||||
>>> RELEASE HISTORY <<<
|
||||
|
||||
Nov. 12th 2014 v1.4.8
|
||||
Add a basic API and sample php json wrapper
|
||||
Fix displayed hashrate for multi gpus systems
|
||||
|
||||
Nov. 11th 2014 v1.4.7
|
||||
Average hashrate (based on the 20 last scans)
|
||||
Rewrite blake algo
|
||||
|
@ -2,6 +2,7 @@
|
||||
/**
|
||||
* Sample Request API to ccminer
|
||||
*/
|
||||
defined('API_HOST') || define('API_HOST', '127.0.0.1');
|
||||
defined('API_PORT') || define('API_PORT', 4068);
|
||||
|
||||
function getsock($port)
|
||||
@ -15,7 +16,7 @@ function getsock($port)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
$res = socket_connect($socket, '127.0.0.1', $port);
|
||||
$res = socket_connect($socket, API_HOST, $port);
|
||||
if ($res === false) {
|
||||
$error = socket_strerror(socket_last_error());
|
||||
$msg = "socket connect($port) failed";
|
||||
|
30
api.c
30
api.c
@ -87,8 +87,9 @@ static struct IP4ACCESS *ipaccess = NULL;
|
||||
// Socket is on 127.0.0.1
|
||||
#define QUEUE 10
|
||||
|
||||
#define LOCAL_ADDR_V4 "127.0.0.1"
|
||||
static const char *localaddr = LOCAL_ADDR_V4;
|
||||
#define ALLIP4 "0.0.0.0"
|
||||
|
||||
static const char *localaddr = "127.0.0.1";
|
||||
static const char *UNAVAILABLE = " - API will not be available";
|
||||
static char *buffer = NULL;
|
||||
static time_t startup = 0;
|
||||
@ -96,13 +97,12 @@ static int bye = 0;
|
||||
|
||||
extern int opt_intensity;
|
||||
extern int opt_n_threads;
|
||||
extern int opt_api_listen;
|
||||
extern char *opt_api_allow;
|
||||
extern int opt_api_listen; /* port */
|
||||
extern uint64_t global_hashrate;
|
||||
extern uint32_t accepted_count;
|
||||
extern uint32_t rejected_count;
|
||||
|
||||
char *opt_api_allow = LOCAL_ADDR_V4;
|
||||
int opt_api_network = 1;
|
||||
#define gpu_threads opt_n_threads
|
||||
|
||||
extern void get_currentalgo(char* buf, int sz);
|
||||
@ -162,8 +162,8 @@ static void gpustatus(int thr_id)
|
||||
static char *getsummary(char *params)
|
||||
{
|
||||
char algo[64] = "";
|
||||
int uptime = (time(NULL) - startup);
|
||||
double accps = (60.0 * accepted_count) / (uptime ? uptime : 1.0);
|
||||
time_t uptime = (time(NULL) - startup);
|
||||
double accps = (60.0 * accepted_count) / (uptime ? (uint32_t) uptime : 1.0);
|
||||
|
||||
get_currentalgo(algo, sizeof(algo));
|
||||
|
||||
@ -206,11 +206,6 @@ static void send_result(SOCKETTYPE c, char *result)
|
||||
n = send(c, result, strlen(result) + 1, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Interpret [W:]IP[/Prefix][,[R|W:]IP2[/Prefix2][,...]] --api-allow option
|
||||
* special case of 0/0 allows /0 (means all IP addresses)
|
||||
*/
|
||||
#define ALLIP4 "0/0"
|
||||
/*
|
||||
* N.B. IP4 addresses are by Definition 32bit big endian on all platforms
|
||||
*/
|
||||
@ -285,8 +280,8 @@ static void setup_ipaccess()
|
||||
dot = strchr(ptr, '.');
|
||||
if (dot)
|
||||
*(dot++) = '\0';
|
||||
|
||||
octet = atoi(ptr);
|
||||
|
||||
if (octet < 0 || octet > 0xff)
|
||||
goto popipo; // skip invalid
|
||||
|
||||
@ -319,11 +314,11 @@ static bool check_connect(struct sockaddr_in *cli, char **connectaddr, char *gro
|
||||
if ((client_ip & ipaccess[i].mask) == ipaccess[i].ip) {
|
||||
addrok = true;
|
||||
*group = ipaccess[i].group;
|
||||
applog(LOG_BLUE, "ip accepted %x", ipaccess[i].ip);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (opt_api_network)
|
||||
addrok = true;
|
||||
}
|
||||
else
|
||||
addrok = (strcmp(*connectaddr, localaddr) == 0);
|
||||
|
||||
@ -332,7 +327,7 @@ static bool check_connect(struct sockaddr_in *cli, char **connectaddr, char *gro
|
||||
|
||||
static void api()
|
||||
{
|
||||
const char *addr = localaddr;
|
||||
const char *addr = opt_api_allow;
|
||||
short int port = opt_api_listen; // 4068
|
||||
char buf[MYBUFSIZ];
|
||||
int c, n, bound;
|
||||
@ -375,7 +370,7 @@ static void api()
|
||||
|
||||
memset(&serv, 0, sizeof(serv));
|
||||
serv.sin_family = AF_INET;
|
||||
serv.sin_addr.s_addr = inet_addr(localaddr);
|
||||
serv.sin_addr.s_addr = inet_addr(addr);
|
||||
if (serv.sin_addr.s_addr == (in_addr_t)INVINETADDR) {
|
||||
applog(LOG_ERR, "API initialisation 2 failed (%s)%s", strerror(errno), UNAVAILABLE);
|
||||
return;
|
||||
@ -414,7 +409,6 @@ static void api()
|
||||
bound = 1;
|
||||
}
|
||||
|
||||
|
||||
if (bound == 0) {
|
||||
applog(LOG_ERR, "API bind to port %d failed (%s)%s", port, binderror, UNAVAILABLE);
|
||||
free(apisock);
|
||||
|
28
cpu-miner.c
28
cpu-miner.c
@ -241,7 +241,8 @@ int opt_statsavg = 20;
|
||||
int opt_intensity = 0;
|
||||
uint32_t opt_work_size = 0; /* default */
|
||||
|
||||
int opt_api_listen = 4068;
|
||||
char *opt_api_allow = "127.0.0.1"; /* 0.0.0.0 for all ips */
|
||||
int opt_api_listen = 4068; /* 0 to disable */
|
||||
|
||||
#ifdef HAVE_GETOPT_LONG
|
||||
#include <getopt.h>
|
||||
@ -310,7 +311,9 @@ Options:\n\
|
||||
-q, --quiet disable per-thread hashmeter output\n\
|
||||
--no-color disable colored output\n\
|
||||
-D, --debug enable debug output\n\
|
||||
-P, --protocol-dump verbose dump of protocol-level activities\n"
|
||||
-P, --protocol-dump verbose dump of protocol-level activities\n\
|
||||
-b, --api-bind IP/Port for the miner API (default: 127.0.0.1:4068)\n"
|
||||
|
||||
#ifdef HAVE_SYSLOG_H
|
||||
"\
|
||||
-S, --syslog use system log for output messages\n"
|
||||
@ -334,10 +337,11 @@ static char const short_options[] =
|
||||
#ifdef HAVE_SYSLOG_H
|
||||
"S"
|
||||
#endif
|
||||
"a:c:i:Dhp:Px:qr:R:s:t:T:o:u:O:Vd:f:mv:N:";
|
||||
"a:c:i:Dhp:Px:qr:R:s:t:T:o:u:O:Vd:f:mv:N:b:";
|
||||
|
||||
static struct option const options[] = {
|
||||
{ "algo", 1, NULL, 'a' },
|
||||
{ "api-bind", 1, NULL, 'b' },
|
||||
#ifndef WIN32
|
||||
{ "background", 0, NULL, 'B' },
|
||||
#endif
|
||||
@ -1578,7 +1582,6 @@ out:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#define PROGRAM_VERSION "1.4.8"
|
||||
static void show_version_and_exit(void)
|
||||
{
|
||||
printf("%s v%s\n"
|
||||
@ -1586,7 +1589,7 @@ static void show_version_and_exit(void)
|
||||
"pthreads static %s\n"
|
||||
#endif
|
||||
"%s\n",
|
||||
PACKAGE_STRING, PROGRAM_VERSION,
|
||||
PACKAGE_NAME, PACKAGE_VERSION,
|
||||
#ifdef WIN32
|
||||
PTW32_VERSION_STRING,
|
||||
#endif
|
||||
@ -1621,6 +1624,19 @@ static void parse_arg(int key, char *arg)
|
||||
if (i == ARRAY_SIZE(algo_names))
|
||||
show_usage_and_exit(1);
|
||||
break;
|
||||
case 'b':
|
||||
p = strstr(arg, ":");
|
||||
if (p) {
|
||||
/* ip:port */
|
||||
if (p - arg > 0) {
|
||||
opt_api_allow = strdup(arg);
|
||||
opt_api_allow[p - arg] = '\0';
|
||||
}
|
||||
opt_api_listen = atoi(p + 1);
|
||||
}
|
||||
else if (arg)
|
||||
opt_api_listen = atoi(arg);
|
||||
break;
|
||||
case 'B':
|
||||
opt_background = true;
|
||||
break;
|
||||
@ -1969,7 +1985,7 @@ int main(int argc, char *argv[])
|
||||
long flags;
|
||||
int i;
|
||||
|
||||
printf("*** ccminer " PROGRAM_VERSION " for nVidia GPUs by tpruvot@github ***\n");
|
||||
printf("*** ccminer " PACKAGE_VERSION " for nVidia GPUs by tpruvot@github ***\n");
|
||||
#ifdef WIN32
|
||||
printf("\tBuilt with VC++ 2013 and nVidia CUDA SDK 6.5\n\n");
|
||||
#else
|
||||
|
Loading…
Reference in New Issue
Block a user