mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-07 15:25:01 +01:00
consolidate windows pingback
This commit is contained in:
parent
6315b2ebf5
commit
34315a59ad
1 changed files with 37 additions and 28 deletions
|
|
@ -73,6 +73,34 @@ struct ping_call {
|
||||||
: version (v), announce_path (a) {}
|
: version (v), announce_path (a) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef PLATFORM_WINDOWS
|
||||||
|
static bool
|
||||||
|
_query_registry (const char *regkey, const char *regval, std::string &rv) {
|
||||||
|
HKEY key;
|
||||||
|
DWORD size = PATH_MAX;
|
||||||
|
char tmp[PATH_MAX+1];
|
||||||
|
|
||||||
|
if ( (ERROR_SUCCESS == RegOpenKeyExA (HKEY_LOCAL_MACHINE, regkey, 0, KEY_READ, &key))
|
||||||
|
&& (ERROR_SUCCESS == RegQueryValueExA (key, regval, 0, NULL, reinterpret_cast<LPBYTE>(tmp), &size))
|
||||||
|
)
|
||||||
|
{
|
||||||
|
rv = Glib::locale_to_utf8 (tmp);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( (ERROR_SUCCESS == RegOpenKeyExA (HKEY_LOCAL_MACHINE, regkey, 0, KEY_READ | KEY_WOW64_32KEY, &key))
|
||||||
|
&& (ERROR_SUCCESS == RegQueryValueExA (key, regval, 0, NULL, reinterpret_cast<LPBYTE>(tmp), &size))
|
||||||
|
)
|
||||||
|
{
|
||||||
|
rv = Glib::locale_to_utf8 (tmp);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static void*
|
static void*
|
||||||
_pingback (void *arg)
|
_pingback (void *arg)
|
||||||
{
|
{
|
||||||
|
|
@ -138,52 +166,33 @@ _pingback (void *arg)
|
||||||
url += s;
|
url += s;
|
||||||
free (query);
|
free (query);
|
||||||
#else
|
#else
|
||||||
// this is hilarious: https://msdn.microsoft.com/en-us/library/windows/desktop/ms724429%28v=vs.85%29.aspx
|
std::string val;
|
||||||
HKEY key;
|
if (_query_registry("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", "ProductName", val)) {
|
||||||
DWORD size = PATH_MAX;
|
char* query = curl_easy_escape (c, val.c_str(), strlen (val.c_str()));
|
||||||
char tmp[PATH_MAX+1];
|
url += "r=";
|
||||||
|
url += query;
|
||||||
if ( (ERROR_SUCCESS == RegOpenKeyExA (HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", 0, KEY_READ, &key))
|
|
||||||
&& (ERROR_SUCCESS == RegQueryValueExA (key, "ProductName", 0, NULL, reinterpret_cast<LPBYTE>(tmp), &size))
|
|
||||||
// or "BuildLab" instead of "ProductName"
|
|
||||||
)
|
|
||||||
{
|
|
||||||
string s = Glib::locale_to_utf8 (tmp);
|
|
||||||
char* query = curl_easy_escape (c, s.c_str(), strlen (s.c_str()));
|
|
||||||
s = string_compose ("r=%1", query);
|
|
||||||
url += s;
|
|
||||||
url += '&';
|
url += '&';
|
||||||
free (query);
|
free (query);
|
||||||
} else {
|
} else {
|
||||||
url += "r=&";
|
url += "r=&";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( (ERROR_SUCCESS == RegOpenKeyExA (HKEY_LOCAL_MACHINE, "Hardware\\Description\\System\\CentralProcessor\\0", 0, KEY_READ, &key))
|
if (_query_registry("Hardware\\Description\\System\\CentralProcessor\\0", "Identifier", val)) {
|
||||||
&& (ERROR_SUCCESS == RegQueryValueExA (key, "Identifier", 0, NULL, reinterpret_cast<LPBYTE>(tmp), &size))
|
char* query = curl_easy_escape (c, val.c_str(), strlen (val.c_str()));
|
||||||
// or "ProcessorNameString" instead of "Identifier"
|
url += "m=";
|
||||||
)
|
url += query;
|
||||||
{
|
|
||||||
string s = Glib::locale_to_utf8 (tmp);
|
|
||||||
char* query = curl_easy_escape (c, s.c_str(), strlen (s.c_str()));
|
|
||||||
s = string_compose ("m=%1", query);
|
|
||||||
url += s;
|
|
||||||
url += '&';
|
url += '&';
|
||||||
free (query);
|
free (query);
|
||||||
} else {
|
} else {
|
||||||
url += "m=&";
|
url += "m=&";
|
||||||
}
|
}
|
||||||
|
|
||||||
url += "r=&";
|
|
||||||
# if ( defined(__x86_64__) || defined(_M_X64) )
|
# if ( defined(__x86_64__) || defined(_M_X64) )
|
||||||
url += "s=Windows64";
|
url += "s=Windows64";
|
||||||
# else
|
# else
|
||||||
url += "s=Windows32";
|
url += "s=Windows32";
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
#ifndef NDEBUG
|
|
||||||
std::cerr << "Pingback: " << url << std::endl;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* PLATFORM_WINDOWS */
|
#endif /* PLATFORM_WINDOWS */
|
||||||
|
|
||||||
curl_easy_setopt (c, CURLOPT_URL, url.c_str());
|
curl_easy_setopt (c, CURLOPT_URL, url.c_str());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue