51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+#include <fstream>
#include <iostream>
#include <sstream>
#include <algorithm>
#include "version.h"
-#include "main.h" // for g_settings
#include "settings.h"
#include "serverlist.h"
#include "filesys.h"
#include "porting.h"
#include "log.h"
+#include "network/networkprotocol.h"
#include "json/json.h"
#include "convert_json.h"
#include "httpfetch.h"
std::vector<ServerListSpec> getOnline()
{
- Json::Value root = fetchJsonValue(
- (g_settings->get("serverlist_url") + "/list").c_str(), NULL);
+ std::ostringstream geturl;
+ geturl << g_settings->get("serverlist_url") <<
+ "/list?proto_version_min=" << CLIENT_PROTOCOL_VERSION_MIN <<
+ "&proto_version_max=" << CLIENT_PROTOCOL_VERSION_MAX;
+ Json::Value root = fetchJsonValue(geturl.str(), NULL);
std::vector<ServerListSpec> server_list;
std::string liststring;
for (std::vector<ServerListSpec>::const_iterator it = serverlist.begin();
it != serverlist.end();
- it++) {
+ ++it) {
liststring += "[server]\n";
liststring += (*it)["name"].asString() + '\n';
liststring += (*it)["address"].asString() + '\n';
Json::Value list(Json::arrayValue);
for (std::vector<ServerListSpec>::const_iterator it = serverlist.begin();
it != serverlist.end();
- it++) {
+ ++it) {
list.append(*it);
}
root["list"] = list;
#if USE_CURL
void sendAnnounce(const std::string &action,
+ const u16 port,
const std::vector<std::string> &clients_names,
const double uptime,
const u32 game_time,
{
Json::Value server;
server["action"] = action;
- server["port"] = g_settings->getU16("port");
+ server["port"] = port;
if (g_settings->exists("server_address")) {
server["address"] = g_settings->get("server_address");
}
if (action != "delete") {
+ bool strict_checking = g_settings->getBool("strict_protocol_version_checking");
server["name"] = g_settings->get("server_name");
server["description"] = g_settings->get("server_description");
- server["version"] = minetest_version_simple;
+ server["version"] = g_version_string;
+ server["proto_min"] = strict_checking ? LATEST_PROTOCOL_VERSION : SERVER_PROTOCOL_VERSION_MIN;
+ server["proto_max"] = strict_checking ? LATEST_PROTOCOL_VERSION : SERVER_PROTOCOL_VERSION_MAX;
server["url"] = g_settings->get("server_url");
server["creative"] = g_settings->getBool("creative_mode");
server["damage"] = g_settings->getBool("enable_damage");