mirror of
https://github.com/GOSTSec/ccminer
synced 2025-01-08 22:07:56 +00:00
api: pool query (uptime, ping, discon., url and user)
This commit is contained in:
parent
71f9003901
commit
7e15f31706
26
api.cpp
26
api.cpp
@ -110,6 +110,8 @@ extern int device_map[8];
|
|||||||
extern char *device_name[8];
|
extern char *device_name[8];
|
||||||
extern int num_cpus;
|
extern int num_cpus;
|
||||||
extern char driver_version[32];
|
extern char driver_version[32];
|
||||||
|
extern struct stratum_ctx stratum;
|
||||||
|
extern char* rpc_user;
|
||||||
|
|
||||||
// sysinfos.cpp
|
// sysinfos.cpp
|
||||||
extern float cpu_temp(int);
|
extern float cpu_temp(int);
|
||||||
@ -208,12 +210,34 @@ static char *getsummary(char *params)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns current pool infos
|
* Returns some infos about current pool
|
||||||
*/
|
*/
|
||||||
static char *getpoolnfo(char *params)
|
static char *getpoolnfo(char *params)
|
||||||
{
|
{
|
||||||
char *p = buffer;
|
char *p = buffer;
|
||||||
|
char jobid[128] = { 0 };
|
||||||
|
char nonce[128] = { 0 };
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
|
||||||
|
if (!stratum.url) {
|
||||||
|
sprintf(p, "|");
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stratum.job.job_id)
|
||||||
|
strncpy(jobid, stratum.job.job_id, sizeof(stratum.job.job_id));
|
||||||
|
|
||||||
|
if (stratum.job.xnonce2) {
|
||||||
|
/* used temporary to be sure all is ok */
|
||||||
|
cbin2hex(nonce, (const char*) stratum.job.xnonce2, stratum.xnonce2_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf(p, "URL=%s;USER=%s;H=%u;JOB=%s;DIFF=%.6f;N2SZ=%zd;N2=0x%s;PING=%u;DISCO=%u;UPTIME=%u|",
|
||||||
|
stratum.url, rpc_user ? rpc_user : "",
|
||||||
|
stratum.job.height, jobid, stratum.job.diff,
|
||||||
|
stratum.xnonce2_size, nonce, stratum.answer_msec,
|
||||||
|
stratum.disconnects, (uint32_t) (time(NULL) - stratum.tm_connected));
|
||||||
|
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
12
ccminer.cpp
12
ccminer.cpp
@ -211,9 +211,10 @@ int num_processors;
|
|||||||
int device_map[8] = {0,1,2,3,4,5,6,7}; // CB
|
int device_map[8] = {0,1,2,3,4,5,6,7}; // CB
|
||||||
char *device_name[8]; // CB
|
char *device_name[8]; // CB
|
||||||
int device_sm[8];
|
int device_sm[8];
|
||||||
|
char *rpc_user = NULL;
|
||||||
static char *rpc_url;
|
static char *rpc_url;
|
||||||
static char *rpc_userpass;
|
static char *rpc_userpass;
|
||||||
static char *rpc_user, *rpc_pass;
|
static char *rpc_pass;
|
||||||
static char *short_url = NULL;
|
static char *short_url = NULL;
|
||||||
char *opt_cert;
|
char *opt_cert;
|
||||||
char *opt_proxy;
|
char *opt_proxy;
|
||||||
@ -226,7 +227,7 @@ int stratum_thr_id = -1;
|
|||||||
int api_thr_id = -1;
|
int api_thr_id = -1;
|
||||||
bool stratum_need_reset = false;
|
bool stratum_need_reset = false;
|
||||||
struct work_restart *work_restart = NULL;
|
struct work_restart *work_restart = NULL;
|
||||||
static struct stratum_ctx stratum;
|
struct stratum_ctx stratum = { 0 };
|
||||||
|
|
||||||
pthread_mutex_t applog_lock;
|
pthread_mutex_t applog_lock;
|
||||||
static pthread_mutex_t stats_lock;
|
static pthread_mutex_t stats_lock;
|
||||||
@ -602,6 +603,7 @@ static bool submit_upstream_work(CURL *curl, struct work *work)
|
|||||||
free(ntimestr);
|
free(ntimestr);
|
||||||
free(noncestr);
|
free(noncestr);
|
||||||
|
|
||||||
|
gettimeofday(&stratum.tv_submit, NULL);
|
||||||
if (unlikely(!stratum_send_line(&stratum, s))) {
|
if (unlikely(!stratum_send_line(&stratum, s))) {
|
||||||
applog(LOG_ERR, "submit_upstream_work stratum_send_line failed");
|
applog(LOG_ERR, "submit_upstream_work stratum_send_line failed");
|
||||||
return false;
|
return false;
|
||||||
@ -1503,6 +1505,7 @@ static bool stratum_handle_response(char *buf)
|
|||||||
{
|
{
|
||||||
json_t *val, *err_val, *res_val, *id_val;
|
json_t *val, *err_val, *res_val, *id_val;
|
||||||
json_error_t err;
|
json_error_t err;
|
||||||
|
struct timeval tv_answer, diff;
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
|
|
||||||
val = JSON_LOADS(buf, &err);
|
val = JSON_LOADS(buf, &err);
|
||||||
@ -1522,6 +1525,11 @@ static bool stratum_handle_response(char *buf)
|
|||||||
if (json_integer_value(id_val) < 4)
|
if (json_integer_value(id_val) < 4)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
gettimeofday(&tv_answer, NULL);
|
||||||
|
timeval_subtract(&diff, &tv_answer, &stratum.tv_submit);
|
||||||
|
// store time required to the pool to answer to a submit
|
||||||
|
stratum.answer_msec = (1000.0 * diff.tv_sec) + (uint32_t) (0.001 * diff.tv_usec);
|
||||||
|
|
||||||
share_result(json_is_true(res_val),
|
share_result(json_is_true(res_val),
|
||||||
err_val ? json_string_value(json_array_get(err_val, 1)) : NULL);
|
err_val ? json_string_value(json_array_get(err_val, 1)) : NULL);
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ void hashlog_remember_scan_range(struct work* work)
|
|||||||
data = tlastshares[key];
|
data = tlastshares[key];
|
||||||
if (range == 0) {
|
if (range == 0) {
|
||||||
memset(&data, 0, sizeof(data));
|
memset(&data, 0, sizeof(data));
|
||||||
data.njobid = njobid;
|
data.njobid = (uint32_t) njobid;
|
||||||
} else {
|
} else {
|
||||||
// get min and max from all sent records
|
// get min and max from all sent records
|
||||||
data.scanned_from = LO_DWORD(range);
|
data.scanned_from = LO_DWORD(range);
|
||||||
|
5
miner.h
5
miner.h
@ -546,6 +546,11 @@ struct stratum_ctx {
|
|||||||
struct stratum_job job;
|
struct stratum_job job;
|
||||||
pthread_mutex_t work_lock;
|
pthread_mutex_t work_lock;
|
||||||
|
|
||||||
|
struct timeval tv_submit;
|
||||||
|
uint32_t answer_msec;
|
||||||
|
uint32_t disconnects;
|
||||||
|
time_t tm_connected;
|
||||||
|
|
||||||
int srvtime_diff;
|
int srvtime_diff;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
2
util.cpp
2
util.cpp
@ -875,6 +875,7 @@ void stratum_disconnect(struct stratum_ctx *sctx)
|
|||||||
{
|
{
|
||||||
pthread_mutex_lock(&sctx->sock_lock);
|
pthread_mutex_lock(&sctx->sock_lock);
|
||||||
if (sctx->curl) {
|
if (sctx->curl) {
|
||||||
|
sctx->disconnects++;
|
||||||
curl_easy_cleanup(sctx->curl);
|
curl_easy_cleanup(sctx->curl);
|
||||||
sctx->curl = NULL;
|
sctx->curl = NULL;
|
||||||
sctx->sockbuf[0] = '\0';
|
sctx->sockbuf[0] = '\0';
|
||||||
@ -1080,6 +1081,7 @@ bool stratum_authorize(struct stratum_ctx *sctx, const char *user, const char *p
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sctx->tm_connected = time(NULL);
|
||||||
ret = true;
|
ret = true;
|
||||||
|
|
||||||
// subscribe to extranonce (optional)
|
// subscribe to extranonce (optional)
|
||||||
|
Loading…
Reference in New Issue
Block a user