-
-#if USE_CURL
-static size_t ServerAnnounceCallback(void *contents, size_t size, size_t nmemb, void *userp)
-{
- return 0;
- //((std::string*)userp)->append((char*)contents, size * nmemb);
- //return size * nmemb;
-}
-void sendAnnounce(std::string action, u16 clients) {
- Json::Value server;
- if (action.size())
- server["action"] = action;
- server["port"] = g_settings->get("port");
- if (action != "del") {
- server["name"] = g_settings->get("server_name");
- server["description"] = g_settings->get("server_description");
- server["address"] = g_settings->get("server_address");
- server["version"] = VERSION_STRING;
- server["url"] = g_settings->get("server_url");
- server["creative"] = g_settings->get("creative_mode");
- server["damage"] = g_settings->get("enable_damage");
- server["dedicated"] = g_settings->get("server_dedicated");
- server["password"] = g_settings->getBool("disallow_empty_password");
- server["pvp"] = g_settings->getBool("enable_pvp");
- server["clients"] = clients;
- server["clients_max"] = g_settings->get("max_users");
- }
- if(server["action"] == "start")
- actionstream << "announcing to " << g_settings->get("serverlist_url") << std::endl;
- Json::StyledWriter writer;
- CURL *curl;
- curl = curl_easy_init();
- if (curl)
- {
- CURLcode res;
- curl_easy_setopt(curl, CURLOPT_URL, (g_settings->get("serverlist_url")+std::string("/announce?json=")+curl_easy_escape(curl, writer.write( server ).c_str(), 0)).c_str());
- //curl_easy_setopt(curl, CURLOPT_USERAGENT, "minetest");
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, ServerList::ServerAnnounceCallback);
- //curl_easy_setopt(curl, CURLOPT_WRITEDATA, &liststring);
- curl_easy_setopt(curl, CURLOPT_TIMEOUT, 1);
- curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 1);
- res = curl_easy_perform(curl);
- //if (res != CURLE_OK)
- // errorstream<<"Serverlist at url "<<g_settings->get("serverlist_url")<<" not found (internet connection?)"<<std::endl;
- curl_easy_cleanup(curl);