API mcast add a description option with miner.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
diff --git a/api.c b/api.c
index 2ea9ebd..cb9df4a 100644
--- a/api.c
+++ b/api.c
@@ -4403,8 +4403,8 @@ static void mcast()
reply_sock = socket(AF_INET, SOCK_DGRAM, 0);
snprintf(replybuf, sizeof(replybuf),
- "cgm-" API_MCAST_CODE "-%d",
- opt_api_port);
+ "cgm-" API_MCAST_CODE "-%d-%s",
+ opt_api_port, opt_api_mcast_des);
rep = sendto(reply_sock, replybuf, strlen(replybuf)+1,
0, (struct sockaddr *)(&came_from),
diff --git a/cgminer.c b/cgminer.c
index eaa2cbc..fc611a4 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -148,6 +148,7 @@ bool opt_api_listen;
bool opt_api_mcast;
char *opt_api_mcast_addr = API_MCAST_ADDR;
char *opt_api_mcast_code = API_MCAST_CODE;
+char *opt_api_mcast_des = "";
int opt_api_mcast_port = 4028;
bool opt_api_network;
bool opt_delaynet;
@@ -908,6 +909,13 @@ static char *set_api_mcast_code(const char *arg)
return NULL;
}
+static char *set_api_mcast_des(const char *arg)
+{
+ opt_set_charp(arg, &opt_api_mcast_des);
+
+ return NULL;
+}
+
#ifdef USE_ICARUS
static char *set_icarus_options(const char *arg)
{
@@ -970,6 +978,9 @@ static struct opt_table opt_config_table[] = {
OPT_WITH_ARG("--api-mcast-code",
set_api_mcast_code, NULL, NULL,
"Code expected in the API Multicast message, don't use '-'"),
+ OPT_WITH_ARG("--api-mcast-des",
+ set_api_mcast_des, NULL, NULL,
+ "Description appended to the API Multicast reply, default: ''"),
OPT_WITH_ARG("--api-mcast-port",
set_int_1_to_65535, opt_show_intval, &opt_api_mcast_port,
"API Multicast listen port"),
@@ -4214,6 +4225,8 @@ void write_config(FILE *fcfg)
fprintf(fcfg, ",\n\"api-mcast-addr\" : \"%s\"", json_escape(opt_api_mcast_addr));
if (strcmp(opt_api_mcast_code, API_MCAST_CODE) != 0)
fprintf(fcfg, ",\n\"api-mcast-code\" : \"%s\"", json_escape(opt_api_mcast_code));
+ if (*opt_api_mcast_des)
+ fprintf(fcfg, ",\n\"api-mcast-des\" : \"%s\"", json_escape(opt_api_mcast_des));
if (strcmp(opt_api_description, PACKAGE_STRING) != 0)
fprintf(fcfg, ",\n\"api-description\" : \"%s\"", json_escape(opt_api_description));
if (opt_api_groups)
diff --git a/miner.h b/miner.h
index 852ec1a..2300a27 100644
--- a/miner.h
+++ b/miner.h
@@ -883,6 +883,7 @@ extern char *opt_api_allow;
extern bool opt_api_mcast;
extern char *opt_api_mcast_addr;
extern char *opt_api_mcast_code;
+extern char *opt_api_mcast_des;
extern int opt_api_mcast_port;
extern char *opt_api_groups;
extern char *opt_api_description;
diff --git a/miner.php b/miner.php
index 2326713..137db7e 100644
--- a/miner.php
+++ b/miner.php
@@ -412,11 +412,20 @@ function getrigs()
$got = @socket_recvfrom($rep_soc, $buf, 32, MSG_DONTWAIT, $ip, $p);
if ($got !== false && $got > 0)
{
- $ans = explode('-', $buf);
- if (count($ans) == 3 && $ans[0] == 'cgm' && $ans[1] == 'FTW')
+ $ans = explode('-', $buf, 4);
+ if (count($ans) >= 3 && $ans[0] == 'cgm' && $ans[1] == 'FTW')
{
$rp = intval($ans[2]);
- $rigs[] = "$ip:$rp";
+
+ if (count($ans) > 3)
+ $mdes = str_replace("\0", '', $ans[3]);
+ else
+ $mdes = '';
+
+ if (strlen($mdes) > 0)
+ $rigs[] = "$ip:$rp:$mdes";
+ else
+ $rigs[] = "$ip:$rp";
}
}
if ((microtime(true) - $stt) >= $mcasttimeout)
@@ -424,7 +433,6 @@ function getrigs()
usleep(100000);
}
-
socket_close($rep_soc);
}
#