public static bool Init( string configFileName ) {
// generate random salt
Random random = new Random();
Salt = (long)random.Next() * (long)random.Next();
Logger.Log( "Config: Salt = " + Salt );
// try to load config file (XML)
XDocument file;
if( File.Exists( configFileName ) ) {
try {
file = XDocument.Load( configFileName );
if( file.Root == null || file.Root.Name != ConfigRootName ) {
Logger.LogAlert( "Config.Init: Malformed or incompatible config file " + configFileName+". Loading defaults." );
file = new XDocument();
file.Add( new XElement( ConfigRootName ) );
} else {
Logger.Log( "Config.Init: Config file " + configFileName + " loaded succesfully." );
}
} catch( Exception ex ) {
Logger.LogError( "Config.Init: Fatal error while loading config file " + configFileName + ": " + ex.Message );
return false;
}
} else {
// create a new one (with defaults) if no file exists
file = new XDocument();
file.Add( new XElement( ConfigRootName ) );
}
XElement config = file.Root;
// load settings
ServerName = ReadString( config, "ServerName", DefaultServerName );
MOTD = ReadString( config, "MOTD", DefaultMOTD );
MaxPlayers = ReadInt( config, "MaxPlayers", DefaultMaxPlayers );
IsPublic = ReadBool( config, "IsPublic", DefaultIsPublic );
VerifyNames = ReadBool( config, "VerifyNames", DefaultVerifyNames );
// save the settings
try {
file.Save( configFileName );
} catch( Exception ex ) {
Logger.LogError( "Config.Init: Fatal error while saving config file " + configFileName + ": " + ex.Message );
return false;
}
return true;
}