given SERVER_NAME populate SERVER_ID and vice versa

This commit is contained in:
Isaac Connor 2015-07-15 16:44:16 -04:00
parent ca9a391d62
commit 3481368574
1 changed files with 67 additions and 2 deletions

View File

@ -91,17 +91,82 @@ void zmLoadConfig()
staticConfig.DB_PASS = std::string(val_ptr);
else if ( strcasecmp( name_ptr, "ZM_PATH_WEB" ) == 0 )
staticConfig.PATH_WEB = std::string(val_ptr);
else if ( strcasecmp( name_ptr, "ZM_SERVER_HOST" ) == 0 )
staticConfig.SERVER_NAME = std::string(val_ptr);
else if ( strcasecmp( name_ptr, "ZM_SERVER_NAME" ) == 0 )
staticConfig.SERVER_NAME = std::string(val_ptr);
else if ( strcasecmp( name_ptr, "ZM_SERVER_ID" ) == 0 )
staticConfig.SERVER_ID = atoi(val_ptr);
else
{
// We ignore this now as there may be more parameters than the
// c/c++ binaries are bothered about
// Warning( "Invalid parameter '%s' in %s", name_ptr, ZM_CONFIG );
}
}
} // end foreach line of the config
fclose( cfg );
zmDbConnect();
config.Load();
config.Assign();
// Populate the server config entries
if ( ! staticConfig.SERVER_ID ) {
if ( staticConfig.SERVER_NAME && ! staticConfig.SERVER_NAME.empty() ) {
std::string sql = stringtf("SELECT Id FROM Servers WHERE Name='%s'", staticConfig.SERVER_NAME );
if ( mysql_query( &dbconn, sql.c_str() ) )
{
Error( "Can't run query: %s", mysql_error( &dbconn ) );
Fatal("Can't get ServerId for Server %s", staticConfig.SERVER_NAME );
}
MYSQL_RES *result = mysql_store_result( &dbconn );
if ( !result )
{
Error( "Can't use query result: %s", mysql_error( &dbconn ) );
Fatal("Can't get ServerId for Server %s", staticConfig.SERVER_NAME );
}
int n_rows = mysql_num_rows( result );
if ( n_rows != 1 )
{
Error( "Bogus number of lines return from Server lookup, %d, returned. Can't reload", n_rows );
Fatal("Can't get ServerId for Server %s", staticConfig.SERVER_NAME );
}
if ( MYSQL_ROW dbrow = mysql_fetch_row( result ) )
{
staticConfig.SERVER_ID = atoi(dbrow[0]);
}
mysql_free_result( result );
} // end if has SERVER_NAME
} else if ( ! staticConfig.SERVER_NAME ) {
std::string sql = stringtf("SELECT Name FROM Servers WHERE Id='%d'", staticConfig.SERVER_ID );
if ( mysql_query( &dbconn, sql.c_str() ) )
{
Error( "Can't run query: %s", mysql_error( &dbconn ) );
Fatal("Can't get ServerName for Server ID %d", staticConfig.SERVER_ID );
}
MYSQL_RES *result = mysql_store_result( &dbconn );
if ( !result )
{
Error( "Can't use query result: %s", mysql_error( &dbconn ) );
Fatal("Can't get ServerName for Server ID %d", staticConfig.SERVER_ID );
}
int n_rows = mysql_num_rows( result );
if ( n_rows != 1 )
{
Error( "Bogus number of lines return from Server lookup, %d, returned. Can't reload", n_rows );
Fatal("Can't get ServerName for Server ID %d", staticConfig.SERVER_ID );
}
if ( MYSQL_ROW dbrow = mysql_fetch_row( result ) )
{
staticConfig.SERVER_NAME = std::string(dbrow[0]);
}
mysql_free_result( result );
}
}
StaticConfig staticConfig;