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

master
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 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);
}

View File

@ -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

View File

@ -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

View File

@ -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();
}

View File

@ -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;
/*

View File

@ -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,

View File

@ -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