#include <fstream>
#include <cstring>
+#ifndef PLATFORM_WINDOWS
#include <sys/utsname.h>
+#endif
+
#include <curl/curl.h>
#include <glibmm/miscutils.h>
#include "pbd/compose.h"
#include "pbd/pthread_utils.h"
+
#include "ardour/filesystem_paths.h"
+#include "ardour/rc_configuration.h"
#include "pingback.h"
using std::string;
+using namespace ARDOUR;
+#ifndef PLATFORM_WINDOWS // no pingback for windows, so far
static size_t
curl_write_data (char *bufptr, size_t size, size_t nitems, void *ptr)
{
return size * nitems;
}
+#endif
struct ping_call {
std::string version;
{
ping_call* cm = static_cast<ping_call*> (arg);
CURL* c;
- struct utsname utb;
string return_str;
-
- if (uname (&utb)) {
- return 0;
- }
-
//initialize curl
curl_global_init (CURL_GLOBAL_NOTHING);
curl_easy_setopt (c, CURLOPT_WRITEDATA, &return_str);
char errbuf[CURL_ERROR_SIZE];
curl_easy_setopt (c, CURLOPT_ERRORBUFFER, errbuf);
- /* we really would prefer to be able to authenticate the certificate
- but this has issues that right now (march 2013), i don't understand.
- */
- curl_easy_setopt (c, CURLOPT_SSL_VERIFYPEER, 0);
-
- //get announcements from our server
- std::cerr << "Checking for Announcements from ardour.org ...\n";
string url;
#ifdef __APPLE__
- url = "https://community.ardour.org/pingback/osx/";
+ url = Config->get_osx_pingback_url ();
+#elif defined PLATFORM_WINDOWS
+ url = Config->get_windows_pingback_url ();
#else
- url = "https://community.ardour.org/pingback/linux/";
+ url = Config->get_linux_pingback_url ();
#endif
+ if (url.compare (0, 4, "http") != 0) {
+ delete cm;
+ return 0;
+ }
+
char* v = curl_easy_escape (c, cm->version.c_str(), cm->version.length());
url += v;
url += '?';
free (v);
+#ifndef PLATFORM_WINDOWS
+ struct utsname utb;
+
+ if (uname (&utb)) {
+ delete cm;
+ return 0;
+ }
+
string uts = string_compose ("%1 %2 %3 %4", utb.sysname, utb.release, utb.version, utb.machine);
string s;
char* query;
s = string_compose ("m=%1", query);
url += s;
free (query);
-
- std::cerr << "ping using " << url << std::endl;
+#else
+ // this is hilarious: https://msdn.microsoft.com/en-us/library/windows/desktop/ms724429%28v=vs.85%29.aspx
+# if ( defined(__x86_64__) || defined(_M_X64) )
+ url += "a=64";
+# else
+ url += "a=32";
+# endif
+#endif /* PLATFORM_WINDOWS */
curl_easy_setopt (c, CURLOPT_URL, url.c_str());
return_str = "";
if (curl_easy_perform (c) == 0) {
- int http_status;
+ long http_status;
curl_easy_getinfo (c, CURLINFO_RESPONSE_CODE, &http_status);
curl_easy_cleanup (c);
delete cm;
-
return 0;
}