From 20c78657aa1be1d9379d55cf0ff958c14040142d Mon Sep 17 00:00:00 2001
From: Lucio Zambon <lucio.zambon@elettra.eu>
Date: Wed, 30 Sep 2020 09:22:49 +0200
Subject: [PATCH] update version message

---
 src/acs.cpp | 36 +++++++++++++++++++++++++++++++-----
 1 file changed, 31 insertions(+), 5 deletions(-)

diff --git a/src/acs.cpp b/src/acs.cpp
index 509ac0b..ab83679 100644
--- a/src/acs.cpp
+++ b/src/acs.cpp
@@ -55,22 +55,29 @@ size_t write_data(char *ptr, size_t size, size_t nmemb, void *userdata) {
 	return size * nmemb;
 }
 void acs::web_read(char *url, const char *data) {
+	if (strlen(data)==0) return;
+	unsigned idata=0;
+	while (data[idata]==' ') {
+		idata++;
+		if (idata == strlen(data)) return;
+	}
 	CURL *curl;
 	CURLcode res;
-	curl = curl_easy_init();
+	curl = curl_easy_init();	
 	if(curl) {
 		char *output = curl_easy_escape(curl, (strlen(data)>0)? data: "", 0);
 		strcat(url, output);
-		// cout << "curl_easy_escape(): " << url << endl;
+		cout << "curl_easy_escape(): " << url << endl;
 		curl_easy_setopt(curl, CURLOPT_URL, url);
 		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &write_data);
 		// Perform the request, res will get the return code
 		res = curl_easy_perform(curl);
+		cout << "res: " << res << ", web_data: " << web_data << endl;
 		if (res == CURLE_OK && !web_data.compare("NOK")) {
 			QMessageBox::information(this, "REGISTRAZIONE MANCANTE", "ATTENZIONE, badge non presente nel registro elettronico degli accessi\nEffettuare al piu' presto la registrazione", QMessageBox::Ok);
 		}
 		else if (res != CURLE_OK || web_data.compare("OK")) {
-		    QMessageBox::information(this, "REGISTRAZIONE ACCESSO", "ATTENZIONE, non e' stato possibile contattare il registro elettronico degli accessi\nSi prega di verificare con cura che sia presente una registrazione", QMessageBox::Ok);
+			QMessageBox::information(this, "REGISTRAZIONE ACCESSO", "ATTENZIONE, non e' stato possibile contattare il registro elettronico degli accessi\nSi prega di verificare con cura che sia presente una registrazione", QMessageBox::Ok);
 		}
 		web_data.clear();
 		// clean escaped url string
@@ -2763,17 +2770,36 @@ void acs::open_register()
 {
 	register_process->start("/usr/local/firefox/firefox http://fcsproxy.elettra.eu/docs/pss/register.php");
 }
+std::string myexec(const char* cmd) {
+    char buffer[128];
+    std::string result = "";
+    FILE* pipe = popen(cmd, "r");
+    if (!pipe) throw std::runtime_error("popen() failed!");
+    try {
+        while (fgets(buffer, sizeof buffer, pipe) != NULL) {
+            result += buffer;
+        }
+    } catch (...) {
+        pclose(pipe);
+        throw;
+    }
+    pclose(pipe);
+    return result;
+}
 
 void acs::open_version_panel()
 {
 	vector<bool> stat;
-	string strstat;
+	string strstat, panelVersion;
+	panelVersion = myexec("/usr/bin/curl \"https://gitlab.elettra.eu/cs/gui/acs/-/tags\" -H \"Accept: text/html\" -s | grep Release | head -2 | tail -1");
+	cout << "panelVersion: " << panelVersion.c_str() << endl;
 	// set PLC status
 	if (myReadAttribute("Version")) {
 		myAttribute >> strstat;
 		// strstat += "pan_ver: 1.30";
 		strstat += "pan_ver: ";
-		strstat += myversion.length()>17? myversion.substr(15,2): myversion;
+		// strstat += myversion.length()>17? myversion.substr(15,2): myversion;
+		strstat += panelVersion;
 		// open procedure
 		try {
 			QMessageBox::question(this, "Versione", strstat.c_str(), "Esci");
-- 
GitLab