Commit 76185ede3896e57190f1d43f310c253e32913379

Kano 2013-09-01T00:23:26

API mcast add a description option with miner.php

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);
 }
 #