Server configuration is now written when "/#setting whatever = whatever" is issued.

This commit is contained in:
Perttu Ahola 2011-07-30 19:49:42 +03:00
parent 9b294ffa7a
commit cdadbdbd17
7 changed files with 36 additions and 14 deletions

View file

@ -715,7 +715,8 @@ void the_game(
std::string password, std::string password,
std::string address, std::string address,
u16 port, u16 port,
std::wstring &error_message std::wstring &error_message,
std::string configpath
) )
{ {
video::IVideoDriver* driver = device->getVideoDriver(); video::IVideoDriver* driver = device->getVideoDriver();
@ -755,7 +756,7 @@ void the_game(
if(address == ""){ if(address == ""){
draw_load_screen(L"Creating server...", driver, font); draw_load_screen(L"Creating server...", driver, font);
std::cout<<DTIME<<"Creating server"<<std::endl; std::cout<<DTIME<<"Creating server"<<std::endl;
server = new Server(map_dir); server = new Server(map_dir, configpath);
server->start(port); server->start(port);
} }

View file

@ -70,7 +70,8 @@ void the_game(
std::string password, std::string password,
std::string address, std::string address,
u16 port, u16 port,
std::wstring &error_message std::wstring &error_message,
std::string configpath
); );
#endif #endif

View file

@ -1302,7 +1302,7 @@ int main(int argc, char *argv[])
g_timegetter = new SimpleTimeGetter(); g_timegetter = new SimpleTimeGetter();
// Create server // Create server
Server server(map_dir.c_str()); Server server(map_dir.c_str(), configpath);
server.start(port); server.start(port);
// Run server // Run server
@ -1641,7 +1641,8 @@ int main(int argc, char *argv[])
password, password,
address, address,
port, port,
error_message error_message,
configpath
); );
} //try } //try

View file

@ -1058,7 +1058,8 @@ u32 PIChecksum(core::list<PlayerInfo> &l)
*/ */
Server::Server( Server::Server(
std::string mapsavedir std::string mapsavedir,
std::string configpath
): ):
m_env(new ServerMap(mapsavedir), this), m_env(new ServerMap(mapsavedir), this),
m_con(PROTOCOL_ID, 512, CONNECTION_TIMEOUT, this), m_con(PROTOCOL_ID, 512, CONNECTION_TIMEOUT, this),
@ -1069,6 +1070,7 @@ Server::Server(
m_time_of_day_send_timer(0), m_time_of_day_send_timer(0),
m_uptime(0), m_uptime(0),
m_mapsavedir(mapsavedir), m_mapsavedir(mapsavedir),
m_configpath(configpath),
m_shutdown_requested(false), m_shutdown_requested(false),
m_ignore_map_edit_events(false), m_ignore_map_edit_events(false),
m_ignore_map_edit_events_peer_id(0) 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()); message = message.substr(commandprefix.size());
WStrfnd f1(message); WStrfnd f1(message);
f1.next(L" "); f1.next(L" "); // Skip over /#whatever
std::wstring paramstring = f1.next(L""); std::wstring paramstring = f1.next(L"");
ServerCommandContext *ctx = new ServerCommandContext( ServerCommandContext *ctx = new ServerCommandContext(
@ -4023,9 +4025,9 @@ std::wstring Server::getStatusString()
} }
os<<L"}"; os<<L"}";
if(((ServerMap*)(&m_env.getMap()))->isSavingEnabled() == false) 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") != "") 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(); return os.str();
} }

View file

@ -364,7 +364,8 @@ class Server : public con::PeerHandler, public MapEventReceiver,
*/ */
Server( Server(
std::string mapsavedir std::string mapsavedir,
std::string configpath
); );
~Server(); ~Server();
void start(unsigned short port); void start(unsigned short port);
@ -443,6 +444,13 @@ class Server : public con::PeerHandler, public MapEventReceiver,
dstream<<"WARNING: Auth not found for "<<name<<std::endl; 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: private:
@ -606,6 +614,9 @@ class Server : public con::PeerHandler, public MapEventReceiver,
// Map directory // Map directory
std::string m_mapsavedir; std::string m_mapsavedir;
// Configuration path ("" = no configuration file)
std::string m_configpath;
bool m_shutdown_requested; bool m_shutdown_requested;
/* /*

View file

@ -142,10 +142,16 @@ void cmd_setting(std::wostringstream &os,
return; return;
} }
std::string confline = wide_to_narrow( /*std::string confline = wide_to_narrow(
ctx->parms[1] + L" = " + ctx->paramstring); ctx->parms[1] + L" = " + ctx->params[2]);*/
std::string confline = wide_to_narrow(ctx->paramstring);
g_settings.parseConfigLine(confline); g_settings.parseConfigLine(confline);
os<< L"-!- Setting changed.";
ctx->server->saveConfig();
os<< L"-!- Setting changed and configuration saved.";
} }
void cmd_teleport(std::wostringstream &os, void cmd_teleport(std::wostringstream &os,

View file

@ -323,7 +323,7 @@ int main(int argc, char *argv[])
map_dir = g_settings.get("map-dir"); map_dir = g_settings.get("map-dir");
// Create server // Create server
Server server(map_dir.c_str()); Server server(map_dir.c_str(), configpath);
server.start(port); server.start(port);
// Run server // Run server