summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game.cpp5
-rw-r--r--src/game.h3
-rw-r--r--src/main.cpp5
-rw-r--r--src/server.cpp10
-rw-r--r--src/server.h13
-rw-r--r--src/servercommand.cpp12
-rw-r--r--src/servermain.cpp2
7 files changed, 36 insertions, 14 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 74b8e5029..6c0474ee7 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -715,7 +715,8 @@ void the_game(
std::string password,
std::string address,
u16 port,
- std::wstring &error_message
+ std::wstring &error_message,
+ std::string configpath
)
{
video::IVideoDriver* driver = device->getVideoDriver();
@@ -755,7 +756,7 @@ void the_game(
if(address == ""){
draw_load_screen(L"Creating server...", driver, font);
std::cout<<DTIME<<"Creating server"<<std::endl;
- server = new Server(map_dir);
+ server = new Server(map_dir, configpath);
server->start(port);
}
diff --git a/src/game.h b/src/game.h
index eb289b8f2..95623316a 100644
--- a/src/game.h
+++ b/src/game.h
@@ -70,7 +70,8 @@ void the_game(
std::string password,
std::string address,
u16 port,
- std::wstring &error_message
+ std::wstring &error_message,
+ std::string configpath
);
#endif
diff --git a/src/main.cpp b/src/main.cpp
index 9a9b22f87..3cc748954 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1302,7 +1302,7 @@ int main(int argc, char *argv[])
g_timegetter = new SimpleTimeGetter();
// Create server
- Server server(map_dir.c_str());
+ Server server(map_dir.c_str(), configpath);
server.start(port);
// Run server
@@ -1641,7 +1641,8 @@ int main(int argc, char *argv[])
password,
address,
port,
- error_message
+ error_message,
+ configpath
);
} //try
diff --git a/src/server.cpp b/src/server.cpp
index 0b312fbc3..96e64b314 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -1058,7 +1058,8 @@ u32 PIChecksum(core::list<PlayerInfo> &l)
*/
Server::Server(
- std::string mapsavedir
+ std::string mapsavedir,
+ std::string configpath
):
m_env(new ServerMap(mapsavedir), this),
m_con(PROTOCOL_ID, 512, CONNECTION_TIMEOUT, this),
@@ -1069,6 +1070,7 @@ Server::Server(
m_time_of_day_send_timer(0),
m_uptime(0),
m_mapsavedir(mapsavedir),
+ m_configpath(configpath),
m_shutdown_requested(false),
m_ignore_map_edit_events(false),
m_ignore_map_edit_events_peer_id(0)
@@ -3198,7 +3200,7 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
message = message.substr(commandprefix.size());
WStrfnd f1(message);
- f1.next(L" ");
+ f1.next(L" "); // Skip over /#whatever
std::wstring paramstring = f1.next(L"");
ServerCommandContext *ctx = new ServerCommandContext(
@@ -4023,9 +4025,9 @@ std::wstring Server::getStatusString()
}
os<<L"}";
if(((ServerMap*)(&m_env.getMap()))->isSavingEnabled() == false)
- os<<std::endl<<" WARNING: Map saving is disabled.";
+ os<<std::endl<<L"# Server: "<<" WARNING: Map saving is disabled.";
if(g_settings.get("motd") != "")
- os<<std::endl<<narrow_to_wide(g_settings.get("motd"));
+ os<<std::endl<<L"# Server: "<<narrow_to_wide(g_settings.get("motd"));
return os.str();
}
diff --git a/src/server.h b/src/server.h
index 1da004da5..c300d40e6 100644
--- a/src/server.h
+++ b/src/server.h
@@ -364,7 +364,8 @@ public:
*/
Server(
- std::string mapsavedir
+ std::string mapsavedir,
+ std::string configpath
);
~Server();
void start(unsigned short port);
@@ -443,6 +444,13 @@ public:
dstream<<"WARNING: Auth not found for "<<name<<std::endl;
}
}
+
+ // Saves g_settings to configpath given at initialization
+ void saveConfig()
+ {
+ if(m_configpath != "")
+ g_settings.updateConfigFile(m_configpath.c_str());
+ }
private:
@@ -606,6 +614,9 @@ private:
// Map directory
std::string m_mapsavedir;
+ // Configuration path ("" = no configuration file)
+ std::string m_configpath;
+
bool m_shutdown_requested;
/*
diff --git a/src/servercommand.cpp b/src/servercommand.cpp
index a2001b0c5..7d6d7bb73 100644
--- a/src/servercommand.cpp
+++ b/src/servercommand.cpp
@@ -142,10 +142,16 @@ void cmd_setting(std::wostringstream &os,
return;
}
- std::string confline = wide_to_narrow(
- ctx->parms[1] + L" = " + ctx->paramstring);
+ /*std::string confline = wide_to_narrow(
+ ctx->parms[1] + L" = " + ctx->params[2]);*/
+
+ std::string confline = wide_to_narrow(ctx->paramstring);
+
g_settings.parseConfigLine(confline);
- os<< L"-!- Setting changed.";
+
+ ctx->server->saveConfig();
+
+ os<< L"-!- Setting changed and configuration saved.";
}
void cmd_teleport(std::wostringstream &os,
diff --git a/src/servermain.cpp b/src/servermain.cpp
index 146c548c5..91fd1d3a5 100644
--- a/src/servermain.cpp
+++ b/src/servermain.cpp
@@ -323,7 +323,7 @@ int main(int argc, char *argv[])
map_dir = g_settings.get("map-dir");
// Create server
- Server server(map_dir.c_str());
+ Server server(map_dir.c_str(), configpath);
server.start(port);
// Run server