Browse Source

framework changes

Kolja Strohm 2 years ago
parent
commit
db757e5dbe
4 changed files with 800 additions and 800 deletions
  1. 1 1
      AnmeldungServer/AnmeldungServer.cpp
  2. 708 708
      AnmeldungServer/Datenbank.cpp
  3. 46 46
      AnmeldungServer/Datenbank.h
  4. 45 45
      AnmeldungServer/main.cpp

+ 1 - 1
AnmeldungServer/AnmeldungServer.cpp

@@ -16,7 +16,7 @@ AnmeldungServer::AnmeldungServer(InitDatei* zIni)
 	gesendet = 0;
 	fehler = new Text();
 	ini = dynamic_cast<InitDatei*>(zIni->getThis());
-	id = *zIni->zWert("ServerId");
+	id = (int)*zIni->zWert("ServerId");
 	server = new Server();
 	aServer = new SSLServer();
 	aServer->setPrivateKeyPassword(zIni->zWert("SSLPasswort")->getText());

+ 708 - 708
AnmeldungServer/Datenbank.cpp

@@ -3,730 +3,730 @@
 
 // Inhalt der ASDatenbank Klasse aus Datenbank.h
 // Konstruktor
-ASDatenbank::ASDatenbank( InitDatei *zIni )
-    : ReferenceCounter()
-{
-    datenbank = new Datenbank( zIni->zWert( "DBBenutzer" )->getText(), zIni->zWert( "DBPasswort" )->getText(),
-                               zIni->zWert( "DBName" )->getText(), zIni->zWert( "DBIP" )->getText(),
-                               (unsigned short)TextZuInt( zIni->zWert( "DBPort" )->getText(), 10 ) );
-    if( !datenbank->istOk() )
-    {
-        std::cout << "AS: Die Verbindung zur Datenbank konnte nicht hergestellt werden.\nDas Programm wird beendet.";
-        exit( 1 );
-    }
-    InitializeCriticalSection( &cs );
-    Text befehl = "SELECT port, admin_port, ip  FROM server WHERE id = ";
-    befehl += zIni->zWert( "ServerId" )->getText();
-    lock();
-    datenbank->befehl( befehl );
-    Result res = datenbank->getResult();
-    unlock();
-    if( res.zeilenAnzahl == 1 )
-    {
-        zIni->addWert( "ServerPort", res.values[ 0 ] );
-        zIni->addWert( "AdminServerPort", res.values[ 1 ] );
-        zIni->addWert( "ServerIp", res.values[ 2 ] );
-    }
-    res.destroy();
+ASDatenbank::ASDatenbank(InitDatei* zIni)
+	: ReferenceCounter()
+{
+	datenbank = new Datenbank(zIni->zWert("DBBenutzer")->getText(), zIni->zWert("DBPasswort")->getText(),
+		zIni->zWert("DBName")->getText(), zIni->zWert("DBIP")->getText(),
+		(unsigned short)TextZuInt(zIni->zWert("DBPort")->getText(), 10));
+	if (!datenbank->istOk())
+	{
+		std::cout << "AS: Die Verbindung zur Datenbank konnte nicht hergestellt werden.\nDas Programm wird beendet.";
+		exit(1);
+	}
+	InitializeCriticalSection(&cs);
+	Text befehl = "SELECT port, admin_port, ip  FROM server WHERE id = ";
+	befehl += zIni->zWert("ServerId")->getText();
+	lock();
+	datenbank->befehl(befehl);
+	Result res = datenbank->getResult();
+	unlock();
+	if (res.zeilenAnzahl == 1)
+	{
+		zIni->addWert("ServerPort", res.values[0]);
+		zIni->addWert("AdminServerPort", res.values[1]);
+		zIni->addWert("ServerIp", res.values[2]);
+	}
+	res.destroy();
 }
 
 // Destruktor
 ASDatenbank::~ASDatenbank()
 {
-    datenbank->release();
-    DeleteCriticalSection( &cs );
+	datenbank->release();
+	DeleteCriticalSection(&cs);
 }
 
 // nicht constant
 void ASDatenbank::lock()
 {
-    EnterCriticalSection( &cs );
+	EnterCriticalSection(&cs);
 }
 
 void ASDatenbank::unlock()
 {
-    LeaveCriticalSection( &cs );
-}
-
-int ASDatenbank::istAdministrator( const char *name, const char *passwort )
-{
-    Text *befehl = new Text( "SELECT id FROM benutzer WHERE name = '" );
-    Text n( name );
-    n.ersetzen( "'", "''" );
-    befehl->append( (char *)n );
-    befehl->append( "' AND passwort = md5( '" );
-    Text p( passwort );
-    p.ersetzen( "'", "''" );
-    befehl->append( (char *)p );
-    befehl->append( "' )" );
-    lock();
-    datenbank->befehl( befehl->getText() );
-    Result res = datenbank->getResult();
-    unlock();
-    befehl->release();
-    int ret = 0;
-    if( res.zeilenAnzahl > 0 )
-        ret = TextZuInt( res.values[ 0 ].getText(), 10 );
-    res.destroy();
-    return ret;
-}
-
-bool ASDatenbank::adminHatRecht( int id, int recht )
-{
-    Text *befehl = new Text( "SELECT * FROM benutzer_rechte WHERE benutzer_id = " );
-    befehl->append( id );
-    befehl->append( " AND rechte_id = " );
-    befehl->append( recht );
-    lock();
-    datenbank->befehl( befehl->getText() );
-    int ret = datenbank->getZeilenAnzahl();
-    unlock();
-    befehl->release();
-    return ret != 0;
-}
-
-bool ASDatenbank::proveKlient( int num, int sNum )
-{
-    Text *befehl = new Text( "SELECT * FROM server_client WHERE server_id = " );
-    befehl->append( sNum );
-    befehl->append( " AND client_id = " );
-    befehl->append( num );
-    lock();
-    datenbank->befehl( befehl->getText() );
-    int ret = datenbank->getZeilenAnzahl();
-    unlock();
-    befehl->release();
-    return ret == 1;
-}
-
-Text *ASDatenbank::getKlientKey( int cId )
-{
-    lock();
-    if( !datenbank->befehl( Text( "SELECT schluessel FROM client WHERE id = " ) += cId ) )
-    {
-        unlock();
-        return 0;
-    }
-    Result res = datenbank->getResult();
-    unlock();
-    if( !res.zeilenAnzahl )
-    {
-        res.destroy();
-        return 0;
-    }
-    Text *ret = new Text( res.values[ 0 ].getText() );
-    res.destroy();
-    return ret;
-}
-
-void ASDatenbank::unregisterKlient( int num, int sNum )
-{
-    Text *befehl = new Text( "DELETE FROM server_client WHERE client_id = " );
-    befehl->append( num );
-    befehl->append( " AND server_id = " );
-    befehl->append( sNum );
-    lock();
-    datenbank->befehl( befehl->getText() );
-    int za = datenbank->getZeilenAnzahl();
-    unlock();
-    if( za == 1 )
-    {
-        befehl->setText( "UPDATE server SET tasks = tasks - 1 WHERE id = " );
-        befehl->append( sNum );
-        lock();
-        datenbank->befehl( befehl->getText() );
-        unlock();
-    }
-    befehl->release();
-}
-
-bool ASDatenbank::setServerStatus( int id, int status )
-{
-    Text *befehl = new Text( "UPDATE server SET server_status_id = " );
-    *befehl += status;
-    *befehl += " WHERE id = ";
-    *befehl += id;
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    bool ret = datenbank->getZeilenAnzahl() != 0;
-    unlock();
-    befehl->release();
-    return ret;
-}
-
-bool ASDatenbank::setMaxClients( int id, int maxC )
-{
-    Text *befehl = new Text( "UPDATE server SET max_tasks = " );
-    befehl->append( maxC );
-    befehl->append( " WHERE id = " );
-    befehl->append( id );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    bool ret = datenbank->getZeilenAnzahl() > 0;
-    unlock();
-    befehl->release();
-    return ret;
-}
-
-bool ASDatenbank::serverIstNichtPausiert( int id )
-{
-    Text *befehl = new Text( "SELECT server_status_id FROM server WHERE id = " );
-    befehl->append( id );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    Result res = datenbank->getResult();
-    unlock();
-    befehl->release();
-    if( !res.zeilenAnzahl )
-    {
-        res.destroy();
-        return 0;
-    }
-    bool ret = (int)res.values[ 0 ] == 3;
-    res.destroy();
-    return ret;
-}
-
-bool ASDatenbank::getChatServer( int accountId, Text *ip, int *port )
-{
-    Text *befehl = new Text( "SELECT a.port, a.ip FROM server a, server_client b, account_client c "
-                             "WHERE a.server_typ_name = 'chat' AND c.client_id = b.client_id AND a.id = b.server_id AND c.account_id = " );
-    befehl->append( accountId );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    Result res = datenbank->getResult();
-    unlock();
-    befehl->release();
-    if( !res.zeilenAnzahl )
-    {
-        res.destroy();
-        return 0;
-    }
-    *port = TextZuInt( res.values[ 0 ].getText(), 10 );
-    ip->setText( res.values[ 1 ].getText() );
-    res.destroy();
-    return 1;
-}
-
-int ASDatenbank::gruppeErstellen( int accountId, int karteId, int *gruppe_id )
-{
-    Text *befehl = new Text( "SELECT gruppe_erstellen( " );
-    befehl->append( accountId );
-    befehl->append( ", " );
-    befehl->append( karteId );
-    befehl->append( " )" );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 6;
-    }
-    Result res = datenbank->getResult();
-    unlock();
-    befehl->release();
-    int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
-    if( res.zeilenAnzahl > 1 )
-        *gruppe_id = TextZuInt( res.values[ 1 ].getText(), 10 );
-    res.destroy();
-    return ret;
-}
-
-bool ASDatenbank::gruppeAnmelden( int accountId, int gruppeId )
-{
-    Text *befehl = new Text( "SELECT * FROM gruppe WHERE id = " );
-    befehl->append( gruppeId );
-    befehl->append( " AND admin_account_id = " );
-    befehl->append( accountId );
-    lock();
-    datenbank->befehl( befehl->getText() );
-    if( !datenbank->getZeilenAnzahl() )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    unlock();
-    befehl->setText( "SELECT gruppe_anmelden( " );
-    befehl->append( gruppeId );
-    befehl->append( " )" );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    unlock();
-    befehl->release();
-    return 1;
-}
-
-bool ASDatenbank::gruppeAbmelden( int accountId, int gruppeId )
-{
-    Text *befehl = new Text( "SELECT * FROM gruppe WHERE id = " );
-    befehl->append( gruppeId );
-    befehl->append( " AND admin_account_id = " );
-    befehl->append( accountId );
-    lock();
-    datenbank->befehl( befehl->getText() );
-    if( !datenbank->getZeilenAnzahl() )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    unlock();
-    befehl->setText( "SELECT gruppe_abmelden( " );
-    befehl->append( gruppeId );
-    befehl->append( " )" );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    unlock();
-    befehl->release();
-    return 1;
-}
-
-bool ASDatenbank::setGruppeSpielStarten( int accountId, int gruppeId, bool starten )
-{
-    Text *befehl = new Text( "SELECT * FROM gruppe WHERE id = " );
-    befehl->append( gruppeId );
-    befehl->append( " AND admin_account_id = " );
-    befehl->append( accountId );
-    lock();
-    datenbank->befehl( befehl->getText() );
-    if( !datenbank->getZeilenAnzahl() )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    befehl->setText( "UPDATE gruppe SET spiel_starten = " );
-    if( starten )
-        befehl->append( "TRUE" );
-    else
-        befehl->append( "FALSE" );
-    befehl->append( " WHERE id = " );
-    befehl->append( gruppeId );
-    datenbank->befehl( "BEGIN;" );
-    datenbank->befehl( "LOCK TABLE lock_table;" );
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        datenbank->befehl( "ROLLBACK;" );
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    datenbank->befehl( "COMMIT;" );
-    unlock();
-    befehl->release();
-    return 1;
-}
-
-bool ASDatenbank::getGruppeSpielStarten( int gruppeId )
-{
-    Text *befehl = new Text( "SELECT spiel_starten FROM gruppe WHERE id = " );
-    befehl->append( gruppeId );
-    lock();
-    datenbank->befehl( befehl->getText() );
-    if( !datenbank->getZeilenAnzahl() )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    Result res = datenbank->getResult();
-    unlock();
-    befehl->release();
-    if( !res.zeilenAnzahl )
-    {
-        res.destroy();
-        return 0;
-    }
-    bool ret = res.values[ 0 ].istGleich( "t" );
-    res.destroy();
-    return ret;
-}
-
-bool ASDatenbank::proveEinladung( int vonAccount, int zuAccount, int gruppeId )
-{
-    Text *befehl = new Text( "SELECT * FROM gruppe WHERE id = " );
-    befehl->append( gruppeId );
-    befehl->append( " AND admin_account_id = " );
-    befehl->append( vonAccount );
-    lock();
-    datenbank->befehl( befehl->getText() );
-    if( !datenbank->getZeilenAnzahl() )
-    {
-        unlock();
-        return 0;
-    }
-    befehl->setText( "SELECT spieler_kann_spielen( " );
-    befehl->append( zuAccount );
-    befehl->append( " )" );
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    Result res = datenbank->getResult();
-    unlock();
-    befehl->release();
-    bool ret = TextZuInt( res.values[ 0 ].getText(), 10 ) == 6;
-    res.destroy();
-    return ret;
-}
-
-int ASDatenbank::gruppeBetreten( int accountId, int gruppeId )
-{
-    Text *befehl = new Text( "SELECT spieler_betritt_gruppe( " );
-    befehl->append( accountId );
-    befehl->append( ", " );
-    befehl->append( gruppeId );
-    befehl->append( " )" );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 6;
-    }
-    Result res = datenbank->getResult();
-    unlock();
-    befehl->release();
-    int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
-    res.destroy();
-    return ret;
-}
-
-int ASDatenbank::gruppeVerlassen( int accountId, int gruppeId )
-{
-    Text *befehl = new Text( "SELECT spieler_verlaesst_gruppe( " );
-    befehl->append( accountId );
-    befehl->append( ", " );
-    befehl->append( gruppeId );
-    befehl->append( " )" );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    Result res = datenbank->getResult();
-    unlock();
-    befehl->release();
-    int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
-    res.destroy();
-    return ret;
-}
-
-bool ASDatenbank::spielerKannKicken( int accountId, int gruppeId )
-{
-    Text *befehl = new Text( "SELECT * FROM gruppe WHERE id = " );
-    befehl->append( gruppeId );
-    befehl->append( " AND admin_account_id = " );
-    befehl->append( accountId );
-    bool ret = 1;
-    lock();
-    datenbank->befehl( befehl->getText() );
-    if( !datenbank->getZeilenAnzahl() )
-        ret = 0;
-    unlock();
-    return ret;
-}
-
-bool ASDatenbank::getSpielerInGruppe( int gruppeId, Array< int > *accountId, int *anzahl )
-{
-    Text *befehl = new Text( "SELECT account_id FROM gruppe_spieler WHERE gruppe_id = " );
-    befehl->append( gruppeId );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    Result res = datenbank->getResult();
-    unlock();
-    befehl->release();
-    *anzahl = res.zeilenAnzahl;
-    for( int i = 0; i < *anzahl; i++ )
-        accountId->add( TextZuInt( res.values[ i ].getText(), 10 ), i );
-    res.destroy();
-    return 1;
-}
-
-int ASDatenbank::getSpielerInGruppeAnzahl( int gruppeId )
-{
-    Text *befehl = new Text( "SELECT account_id FROM gruppe_spieler WHERE gruppe_id = " );
-    befehl->append( gruppeId );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    int ret = datenbank->getZeilenAnzahl();
-    unlock();
-    befehl->release();
-    return ret;
-}
-
-int ASDatenbank::getGruppeAdminId( int gruppeId )
-{
-    Text *befehl = new Text( "SELECT admin_account_id FROM gruppe WHERE id = " );
-    befehl->append( gruppeId );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    Result res = datenbank->getResult();
-    unlock();
-    befehl->release();
-    if( !res.zeilenAnzahl )
-    {
-        res.destroy();
-        return 0;
-    }
-    int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
-    res.destroy();
-    return ret;
-}
-
-bool ASDatenbank::gruppeSpielerEinladen( int vonAccount, int zuAccount, int gruppeId )
-{
-    if( proveEinladung( vonAccount, zuAccount, gruppeId ) )
-    {
-        Text *befehl = new Text( "INSERT INTO gruppe_einladung( gruppe_id, account_id ) VALUES( " );
-        befehl->append( gruppeId );
-        befehl->append( ", " );
-        befehl->append( zuAccount );
-        befehl->append( " )" );
-        lock();
-        if( !datenbank->befehl( befehl->getText() ) )
-        {
-            unlock();
-            befehl->release();
-            return 0;
-        }
-        unlock();
-        befehl->release();
-        return 1;
-    }
-    return 0;
-}
-
-bool ASDatenbank::gruppeEinladungAbbrechen( int admin, int gruppeId, int accountId )
-{
-    if( admin == getGruppeAdminId( gruppeId ) )
-    {
-        Text *befehl = new Text( "DELETE FROM gruppe_einladung WHERE gruppe_id =  " );
-        befehl->append( gruppeId );
-        befehl->append( " AND account_id = " );
-        befehl->append( accountId );
-        lock();
-        if( !datenbank->befehl( befehl->getText() ) )
-        {
-            unlock();
-            befehl->release();
-            return 0;
-        }
-        unlock();
-        befehl->release();
-        return 1;
-    }
-    return 0;
-}
-
-bool ASDatenbank::gruppeSpielerIstEingeladen( int gruppeId, int accountId )
-{
-    Text *befehl = new Text( "SELECT * FROM gruppe_einladung WHERE gruppe_id = " );
-    befehl->append( gruppeId );
-    befehl->append( " AND account_id = " );
-    befehl->append( accountId );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    bool ret = datenbank->getZeilenAnzahl() != 0;
-    unlock();
-    befehl->release();
-    return ret;
-}
-
-bool ASDatenbank::gruppeIstInWarteschlange( int gruppeId )
-{
-    Text *befehl = new Text( "SELECT * FROM gruppe_anmeldung_fuer_spiel WHERE gruppe_id = " );
-    befehl->append( gruppeId );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    bool ret = datenbank->getZeilenAnzahl() != 0;
-    unlock();
-    befehl->release();
-    return ret;
-}
-
-int ASDatenbank::getAccountId( int clientId )
-{
-    Text *befehl = new Text( "SELECT account_id FROM account_client WHERE client_id = " );
-    befehl->append( clientId );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    if( !datenbank->getZeilenAnzahl() )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    Result res = datenbank->getResult();
-    unlock();
-    befehl->release();
-    int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
-    res.destroy();
-    return ret;
-}
-
-int ASDatenbank::accountAnmelden( int accountId, int karteId )
-{
-    Text *befehl = new Text( "SELECT account_anmelden( " );
-    befehl->append( accountId );
-    befehl->append( ", " );
-    befehl->append( karteId );
-    befehl->append( " )" );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 6;
-    }
-    Result res = datenbank->getResult();
-    unlock();
-    befehl->release();
-    int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
-    res.destroy();
-    return ret;
-}
-
-void ASDatenbank::accountAbmelden( int accountId )
-{
-    Text *befehl = new Text( "SELECT account_abmelden( " );
-    befehl->append( accountId );
-    befehl->append( " )" );
-    lock();
-    datenbank->befehl( befehl->getText() );
-    unlock();
-    befehl->release();
-}
-
-bool ASDatenbank::spielerBesitztKarte( int accountId, int karteId )
-{
-    Text *befehl = new Text( "SELECT a.account_id FROM spiel_art_account a, karte_account b, karte c WHERE a.account_id = " );
-    befehl->append( accountId );
-    befehl->append( " AND a.spiel_art_id = c.spiel_art_id AND b.karte_id = c.id AND b.account_id = a.account_id AND c.id = " );
-    befehl->append( karteId );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    int zeilen = datenbank->getZeilenAnzahl();
-    unlock();
-    befehl->release();
-    return zeilen != 0;
-}
-
-int ASDatenbank::getGruppenKarte( int gruppeId )
-{
-    Text *befehl = new Text( "SELECT karte_id FROM gruppe WHERE id = " );
-    befehl->append( gruppeId );
-    lock();
-    if( !datenbank->befehl( befehl->getText() ) )
-    {
-        unlock();
-        befehl->release();
-        return 0;
-    }
-    Result res = datenbank->getResult();
-    unlock();
-    befehl->release();
-    if( !res.zeilenAnzahl )
-    {
-        res.destroy();
-        return 0;
-    }
-    int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
-    res.destroy();
-    return ret;
-}
-
-Text *ASDatenbank::getAccountRufName( int accountId )
-{
-    Text *befehl = new Text( "SELECT ruf_name FROM account WHERE id = " );
-    befehl->append( accountId );
-    lock();
-    datenbank->befehl( befehl->getText() );
-    Result res = datenbank->getResult();
-    unlock();
-    befehl->release();
-    if( !res.zeilenAnzahl )
-    {
-        res.destroy();
-        return new Text( "" );
-    }
-    Text *ret = new Text( res.values[ 0 ].getText() );
-    res.destroy();
-    return ret;
+	LeaveCriticalSection(&cs);
+}
+
+int ASDatenbank::istAdministrator(const char* name, const char* passwort)
+{
+	Text* befehl = new Text("SELECT id FROM benutzer WHERE name = '");
+	Text n(name);
+	n.ersetzen("'", "''");
+	befehl->append(n);
+	befehl->append("' AND passwort = md5( '");
+	Text p(passwort);
+	p.ersetzen("'", "''");
+	befehl->append(p);
+	befehl->append("' )");
+	lock();
+	datenbank->befehl(befehl->getText());
+	Result res = datenbank->getResult();
+	unlock();
+	befehl->release();
+	int ret = 0;
+	if (res.zeilenAnzahl > 0)
+		ret = TextZuInt(res.values[0].getText(), 10);
+	res.destroy();
+	return ret;
+}
+
+bool ASDatenbank::adminHatRecht(int id, int recht)
+{
+	Text* befehl = new Text("SELECT * FROM benutzer_rechte WHERE benutzer_id = ");
+	befehl->append(id);
+	befehl->append(" AND rechte_id = ");
+	befehl->append(recht);
+	lock();
+	datenbank->befehl(befehl->getText());
+	int ret = datenbank->getZeilenAnzahl();
+	unlock();
+	befehl->release();
+	return ret != 0;
+}
+
+bool ASDatenbank::proveKlient(int num, int sNum)
+{
+	Text* befehl = new Text("SELECT * FROM server_client WHERE server_id = ");
+	befehl->append(sNum);
+	befehl->append(" AND client_id = ");
+	befehl->append(num);
+	lock();
+	datenbank->befehl(befehl->getText());
+	int ret = datenbank->getZeilenAnzahl();
+	unlock();
+	befehl->release();
+	return ret == 1;
+}
+
+Text* ASDatenbank::getKlientKey(int cId)
+{
+	lock();
+	if (!datenbank->befehl(Text("SELECT schluessel FROM client WHERE id = ") += cId))
+	{
+		unlock();
+		return 0;
+	}
+	Result res = datenbank->getResult();
+	unlock();
+	if (!res.zeilenAnzahl)
+	{
+		res.destroy();
+		return 0;
+	}
+	Text* ret = new Text(res.values[0].getText());
+	res.destroy();
+	return ret;
+}
+
+void ASDatenbank::unregisterKlient(int num, int sNum)
+{
+	Text* befehl = new Text("DELETE FROM server_client WHERE client_id = ");
+	befehl->append(num);
+	befehl->append(" AND server_id = ");
+	befehl->append(sNum);
+	lock();
+	datenbank->befehl(befehl->getText());
+	int za = datenbank->getZeilenAnzahl();
+	unlock();
+	if (za == 1)
+	{
+		befehl->setText("UPDATE server SET tasks = tasks - 1 WHERE id = ");
+		befehl->append(sNum);
+		lock();
+		datenbank->befehl(befehl->getText());
+		unlock();
+	}
+	befehl->release();
+}
+
+bool ASDatenbank::setServerStatus(int id, int status)
+{
+	Text* befehl = new Text("UPDATE server SET server_status_id = ");
+	*befehl += status;
+	*befehl += " WHERE id = ";
+	*befehl += id;
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	bool ret = datenbank->getZeilenAnzahl() != 0;
+	unlock();
+	befehl->release();
+	return ret;
+}
+
+bool ASDatenbank::setMaxClients(int id, int maxC)
+{
+	Text* befehl = new Text("UPDATE server SET max_tasks = ");
+	befehl->append(maxC);
+	befehl->append(" WHERE id = ");
+	befehl->append(id);
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	bool ret = datenbank->getZeilenAnzahl() > 0;
+	unlock();
+	befehl->release();
+	return ret;
+}
+
+bool ASDatenbank::serverIstNichtPausiert(int id)
+{
+	Text* befehl = new Text("SELECT server_status_id FROM server WHERE id = ");
+	befehl->append(id);
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	Result res = datenbank->getResult();
+	unlock();
+	befehl->release();
+	if (!res.zeilenAnzahl)
+	{
+		res.destroy();
+		return 0;
+	}
+	bool ret = (int)res.values[0] == 3;
+	res.destroy();
+	return ret;
+}
+
+bool ASDatenbank::getChatServer(int accountId, Text* ip, int* port)
+{
+	Text* befehl = new Text("SELECT a.port, a.ip FROM server a, server_client b, account_client c "
+		"WHERE a.server_typ_name = 'chat' AND c.client_id = b.client_id AND a.id = b.server_id AND c.account_id = ");
+	befehl->append(accountId);
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	Result res = datenbank->getResult();
+	unlock();
+	befehl->release();
+	if (!res.zeilenAnzahl)
+	{
+		res.destroy();
+		return 0;
+	}
+	*port = TextZuInt(res.values[0].getText(), 10);
+	ip->setText(res.values[1].getText());
+	res.destroy();
+	return 1;
+}
+
+int ASDatenbank::gruppeErstellen(int accountId, int karteId, int* gruppe_id)
+{
+	Text* befehl = new Text("SELECT gruppe_erstellen( ");
+	befehl->append(accountId);
+	befehl->append(", ");
+	befehl->append(karteId);
+	befehl->append(" )");
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 6;
+	}
+	Result res = datenbank->getResult();
+	unlock();
+	befehl->release();
+	int ret = TextZuInt(res.values[0].getText(), 10);
+	if (res.zeilenAnzahl > 1)
+		*gruppe_id = TextZuInt(res.values[1].getText(), 10);
+	res.destroy();
+	return ret;
+}
+
+bool ASDatenbank::gruppeAnmelden(int accountId, int gruppeId)
+{
+	Text* befehl = new Text("SELECT * FROM gruppe WHERE id = ");
+	befehl->append(gruppeId);
+	befehl->append(" AND admin_account_id = ");
+	befehl->append(accountId);
+	lock();
+	datenbank->befehl(befehl->getText());
+	if (!datenbank->getZeilenAnzahl())
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	unlock();
+	befehl->setText("SELECT gruppe_anmelden( ");
+	befehl->append(gruppeId);
+	befehl->append(" )");
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	unlock();
+	befehl->release();
+	return 1;
+}
+
+bool ASDatenbank::gruppeAbmelden(int accountId, int gruppeId)
+{
+	Text* befehl = new Text("SELECT * FROM gruppe WHERE id = ");
+	befehl->append(gruppeId);
+	befehl->append(" AND admin_account_id = ");
+	befehl->append(accountId);
+	lock();
+	datenbank->befehl(befehl->getText());
+	if (!datenbank->getZeilenAnzahl())
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	unlock();
+	befehl->setText("SELECT gruppe_abmelden( ");
+	befehl->append(gruppeId);
+	befehl->append(" )");
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	unlock();
+	befehl->release();
+	return 1;
+}
+
+bool ASDatenbank::setGruppeSpielStarten(int accountId, int gruppeId, bool starten)
+{
+	Text* befehl = new Text("SELECT * FROM gruppe WHERE id = ");
+	befehl->append(gruppeId);
+	befehl->append(" AND admin_account_id = ");
+	befehl->append(accountId);
+	lock();
+	datenbank->befehl(befehl->getText());
+	if (!datenbank->getZeilenAnzahl())
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	befehl->setText("UPDATE gruppe SET spiel_starten = ");
+	if (starten)
+		befehl->append("TRUE");
+	else
+		befehl->append("FALSE");
+	befehl->append(" WHERE id = ");
+	befehl->append(gruppeId);
+	datenbank->befehl("BEGIN;");
+	datenbank->befehl("LOCK TABLE lock_table;");
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		datenbank->befehl("ROLLBACK;");
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	datenbank->befehl("COMMIT;");
+	unlock();
+	befehl->release();
+	return 1;
+}
+
+bool ASDatenbank::getGruppeSpielStarten(int gruppeId)
+{
+	Text* befehl = new Text("SELECT spiel_starten FROM gruppe WHERE id = ");
+	befehl->append(gruppeId);
+	lock();
+	datenbank->befehl(befehl->getText());
+	if (!datenbank->getZeilenAnzahl())
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	Result res = datenbank->getResult();
+	unlock();
+	befehl->release();
+	if (!res.zeilenAnzahl)
+	{
+		res.destroy();
+		return 0;
+	}
+	bool ret = res.values[0].istGleich("t");
+	res.destroy();
+	return ret;
+}
+
+bool ASDatenbank::proveEinladung(int vonAccount, int zuAccount, int gruppeId)
+{
+	Text* befehl = new Text("SELECT * FROM gruppe WHERE id = ");
+	befehl->append(gruppeId);
+	befehl->append(" AND admin_account_id = ");
+	befehl->append(vonAccount);
+	lock();
+	datenbank->befehl(befehl->getText());
+	if (!datenbank->getZeilenAnzahl())
+	{
+		unlock();
+		return 0;
+	}
+	befehl->setText("SELECT spieler_kann_spielen( ");
+	befehl->append(zuAccount);
+	befehl->append(" )");
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	Result res = datenbank->getResult();
+	unlock();
+	befehl->release();
+	bool ret = TextZuInt(res.values[0].getText(), 10) == 6;
+	res.destroy();
+	return ret;
+}
+
+int ASDatenbank::gruppeBetreten(int accountId, int gruppeId)
+{
+	Text* befehl = new Text("SELECT spieler_betritt_gruppe( ");
+	befehl->append(accountId);
+	befehl->append(", ");
+	befehl->append(gruppeId);
+	befehl->append(" )");
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 6;
+	}
+	Result res = datenbank->getResult();
+	unlock();
+	befehl->release();
+	int ret = TextZuInt(res.values[0].getText(), 10);
+	res.destroy();
+	return ret;
+}
+
+int ASDatenbank::gruppeVerlassen(int accountId, int gruppeId)
+{
+	Text* befehl = new Text("SELECT spieler_verlaesst_gruppe( ");
+	befehl->append(accountId);
+	befehl->append(", ");
+	befehl->append(gruppeId);
+	befehl->append(" )");
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	Result res = datenbank->getResult();
+	unlock();
+	befehl->release();
+	int ret = TextZuInt(res.values[0].getText(), 10);
+	res.destroy();
+	return ret;
+}
+
+bool ASDatenbank::spielerKannKicken(int accountId, int gruppeId)
+{
+	Text* befehl = new Text("SELECT * FROM gruppe WHERE id = ");
+	befehl->append(gruppeId);
+	befehl->append(" AND admin_account_id = ");
+	befehl->append(accountId);
+	bool ret = 1;
+	lock();
+	datenbank->befehl(befehl->getText());
+	if (!datenbank->getZeilenAnzahl())
+		ret = 0;
+	unlock();
+	return ret;
+}
+
+bool ASDatenbank::getSpielerInGruppe(int gruppeId, Array< int >* accountId, int* anzahl)
+{
+	Text* befehl = new Text("SELECT account_id FROM gruppe_spieler WHERE gruppe_id = ");
+	befehl->append(gruppeId);
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	Result res = datenbank->getResult();
+	unlock();
+	befehl->release();
+	*anzahl = res.zeilenAnzahl;
+	for (int i = 0; i < *anzahl; i++)
+		accountId->add(TextZuInt(res.values[i].getText(), 10), i);
+	res.destroy();
+	return 1;
+}
+
+int ASDatenbank::getSpielerInGruppeAnzahl(int gruppeId)
+{
+	Text* befehl = new Text("SELECT account_id FROM gruppe_spieler WHERE gruppe_id = ");
+	befehl->append(gruppeId);
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	int ret = datenbank->getZeilenAnzahl();
+	unlock();
+	befehl->release();
+	return ret;
+}
+
+int ASDatenbank::getGruppeAdminId(int gruppeId)
+{
+	Text* befehl = new Text("SELECT admin_account_id FROM gruppe WHERE id = ");
+	befehl->append(gruppeId);
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	Result res = datenbank->getResult();
+	unlock();
+	befehl->release();
+	if (!res.zeilenAnzahl)
+	{
+		res.destroy();
+		return 0;
+	}
+	int ret = TextZuInt(res.values[0].getText(), 10);
+	res.destroy();
+	return ret;
+}
+
+bool ASDatenbank::gruppeSpielerEinladen(int vonAccount, int zuAccount, int gruppeId)
+{
+	if (proveEinladung(vonAccount, zuAccount, gruppeId))
+	{
+		Text* befehl = new Text("INSERT INTO gruppe_einladung( gruppe_id, account_id ) VALUES( ");
+		befehl->append(gruppeId);
+		befehl->append(", ");
+		befehl->append(zuAccount);
+		befehl->append(" )");
+		lock();
+		if (!datenbank->befehl(befehl->getText()))
+		{
+			unlock();
+			befehl->release();
+			return 0;
+		}
+		unlock();
+		befehl->release();
+		return 1;
+	}
+	return 0;
+}
+
+bool ASDatenbank::gruppeEinladungAbbrechen(int admin, int gruppeId, int accountId)
+{
+	if (admin == getGruppeAdminId(gruppeId))
+	{
+		Text* befehl = new Text("DELETE FROM gruppe_einladung WHERE gruppe_id =  ");
+		befehl->append(gruppeId);
+		befehl->append(" AND account_id = ");
+		befehl->append(accountId);
+		lock();
+		if (!datenbank->befehl(befehl->getText()))
+		{
+			unlock();
+			befehl->release();
+			return 0;
+		}
+		unlock();
+		befehl->release();
+		return 1;
+	}
+	return 0;
+}
+
+bool ASDatenbank::gruppeSpielerIstEingeladen(int gruppeId, int accountId)
+{
+	Text* befehl = new Text("SELECT * FROM gruppe_einladung WHERE gruppe_id = ");
+	befehl->append(gruppeId);
+	befehl->append(" AND account_id = ");
+	befehl->append(accountId);
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	bool ret = datenbank->getZeilenAnzahl() != 0;
+	unlock();
+	befehl->release();
+	return ret;
+}
+
+bool ASDatenbank::gruppeIstInWarteschlange(int gruppeId)
+{
+	Text* befehl = new Text("SELECT * FROM gruppe_anmeldung_fuer_spiel WHERE gruppe_id = ");
+	befehl->append(gruppeId);
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	bool ret = datenbank->getZeilenAnzahl() != 0;
+	unlock();
+	befehl->release();
+	return ret;
+}
+
+int ASDatenbank::getAccountId(int clientId)
+{
+	Text* befehl = new Text("SELECT account_id FROM account_client WHERE client_id = ");
+	befehl->append(clientId);
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	if (!datenbank->getZeilenAnzahl())
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	Result res = datenbank->getResult();
+	unlock();
+	befehl->release();
+	int ret = TextZuInt(res.values[0].getText(), 10);
+	res.destroy();
+	return ret;
+}
+
+int ASDatenbank::accountAnmelden(int accountId, int karteId)
+{
+	Text* befehl = new Text("SELECT account_anmelden( ");
+	befehl->append(accountId);
+	befehl->append(", ");
+	befehl->append(karteId);
+	befehl->append(" )");
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 6;
+	}
+	Result res = datenbank->getResult();
+	unlock();
+	befehl->release();
+	int ret = TextZuInt(res.values[0].getText(), 10);
+	res.destroy();
+	return ret;
+}
+
+void ASDatenbank::accountAbmelden(int accountId)
+{
+	Text* befehl = new Text("SELECT account_abmelden( ");
+	befehl->append(accountId);
+	befehl->append(" )");
+	lock();
+	datenbank->befehl(befehl->getText());
+	unlock();
+	befehl->release();
+}
+
+bool ASDatenbank::spielerBesitztKarte(int accountId, int karteId)
+{
+	Text* befehl = new Text("SELECT a.account_id FROM spiel_art_account a, karte_account b, karte c WHERE a.account_id = ");
+	befehl->append(accountId);
+	befehl->append(" AND a.spiel_art_id = c.spiel_art_id AND b.karte_id = c.id AND b.account_id = a.account_id AND c.id = ");
+	befehl->append(karteId);
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	int zeilen = datenbank->getZeilenAnzahl();
+	unlock();
+	befehl->release();
+	return zeilen != 0;
+}
+
+int ASDatenbank::getGruppenKarte(int gruppeId)
+{
+	Text* befehl = new Text("SELECT karte_id FROM gruppe WHERE id = ");
+	befehl->append(gruppeId);
+	lock();
+	if (!datenbank->befehl(befehl->getText()))
+	{
+		unlock();
+		befehl->release();
+		return 0;
+	}
+	Result res = datenbank->getResult();
+	unlock();
+	befehl->release();
+	if (!res.zeilenAnzahl)
+	{
+		res.destroy();
+		return 0;
+	}
+	int ret = TextZuInt(res.values[0].getText(), 10);
+	res.destroy();
+	return ret;
+}
+
+Text* ASDatenbank::getAccountRufName(int accountId)
+{
+	Text* befehl = new Text("SELECT ruf_name FROM account WHERE id = ");
+	befehl->append(accountId);
+	lock();
+	datenbank->befehl(befehl->getText());
+	Result res = datenbank->getResult();
+	unlock();
+	befehl->release();
+	if (!res.zeilenAnzahl)
+	{
+		res.destroy();
+		return new Text("");
+	}
+	Text* ret = new Text(res.values[0].getText());
+	res.destroy();
+	return ret;
 }
 
 // constant
-Text *ASDatenbank::getLetzterFehler() const
+Text* ASDatenbank::getLetzterFehler() const
 {
-    return datenbank->getLetzterFehler();
+	return datenbank->getLetzterFehler();
 }

+ 46 - 46
AnmeldungServer/Datenbank.h

@@ -11,59 +11,59 @@ using namespace sql;
 
 namespace Admin_Recht
 {
-    const int ASStarten = 28;
-    const int ASBeenden = 29;
-    const int ASPausieren = 30;
-    const int ASMCChange = 31;
+	const int ASStarten = 28;
+	const int ASBeenden = 29;
+	const int ASPausieren = 30;
+	const int ASMCChange = 31;
 }
 
 class ASDatenbank : public virtual ReferenceCounter
 {
 private:
-    Datenbank *datenbank;
-    CRITICAL_SECTION cs;
+	Datenbank* datenbank;
+	CRITICAL_SECTION cs;
 
 public:
-    // Konstruktor
-    ASDatenbank( InitDatei *zIni );
-    // Destruktor
-    ~ASDatenbank();
-    // nicht constant
-    void lock();
-    void unlock();
-    int istAdministrator( const char *name, const char *passwort );
-    bool adminHatRecht( int id, int recht );
-    bool proveKlient( int num, int sNum );
-    Text *getKlientKey( int cId );
-    void unregisterKlient( int num, int sNum );
-    bool setServerStatus( int id, int status );
-    bool setMaxClients( int id, int maxC );
-    bool serverIstNichtPausiert( int id );
-    bool getChatServer( int accountId, Text *ip, int *port );
-    int gruppeErstellen( int accountId, int karteId, int *gruppe_id );
-    bool gruppeAnmelden( int accountId, int gruppeId );
-    bool gruppeAbmelden( int accountId, int gruppeId );
-    bool setGruppeSpielStarten( int accountId, int gruppeId, bool starten );
-    bool getGruppeSpielStarten( int gruppeId );
-    bool proveEinladung( int vonAccount, int zuAccount, int gruppeId );
-    int gruppeBetreten( int accountId, int gruppeId );
-    int gruppeVerlassen( int accountId, int gruppeId );
-    bool spielerKannKicken( int accountId, int gruppeId );
-    bool getSpielerInGruppe( int gruppeId, Array< int > *accountId, int *anzahl );
-    int getSpielerInGruppeAnzahl( int gruppeId );
-    int getGruppeAdminId( int gruppeId );
-    bool gruppeSpielerEinladen( int vonAccount, int zuAccount, int gruppeId );
-    bool gruppeEinladungAbbrechen( int admin, int gruppeId, int accountId );
-    bool gruppeSpielerIstEingeladen( int gruppeId, int accountId );
-    bool gruppeIstInWarteschlange( int gruppeId );
-    int getAccountId( int clientId );
-    int accountAnmelden( int accountId, int karteId );
-    void accountAbmelden( int accountId );
-    bool spielerBesitztKarte( int accountId, int karteId );
-    int getGruppenKarte( int gruppeId );
-    Text *getAccountRufName( int accountId );
-    // constant
-    Text *getLetzterFehler() const;
+	// Konstruktor
+	ASDatenbank(InitDatei* zIni);
+	// Destruktor
+	~ASDatenbank();
+	// nicht constant
+	void lock();
+	void unlock();
+	int istAdministrator(const char* name, const char* passwort);
+	bool adminHatRecht(int id, int recht);
+	bool proveKlient(int num, int sNum);
+	Text* getKlientKey(int cId);
+	void unregisterKlient(int num, int sNum);
+	bool setServerStatus(int id, int status);
+	bool setMaxClients(int id, int maxC);
+	bool serverIstNichtPausiert(int id);
+	bool getChatServer(int accountId, Text* ip, int* port);
+	int gruppeErstellen(int accountId, int karteId, int* gruppe_id);
+	bool gruppeAnmelden(int accountId, int gruppeId);
+	bool gruppeAbmelden(int accountId, int gruppeId);
+	bool setGruppeSpielStarten(int accountId, int gruppeId, bool starten);
+	bool getGruppeSpielStarten(int gruppeId);
+	bool proveEinladung(int vonAccount, int zuAccount, int gruppeId);
+	int gruppeBetreten(int accountId, int gruppeId);
+	int gruppeVerlassen(int accountId, int gruppeId);
+	bool spielerKannKicken(int accountId, int gruppeId);
+	bool getSpielerInGruppe(int gruppeId, Array< int >* accountId, int* anzahl);
+	int getSpielerInGruppeAnzahl(int gruppeId);
+	int getGruppeAdminId(int gruppeId);
+	bool gruppeSpielerEinladen(int vonAccount, int zuAccount, int gruppeId);
+	bool gruppeEinladungAbbrechen(int admin, int gruppeId, int accountId);
+	bool gruppeSpielerIstEingeladen(int gruppeId, int accountId);
+	bool gruppeIstInWarteschlange(int gruppeId);
+	int getAccountId(int clientId);
+	int accountAnmelden(int accountId, int karteId);
+	void accountAbmelden(int accountId);
+	bool spielerBesitztKarte(int accountId, int karteId);
+	int getGruppenKarte(int gruppeId);
+	Text* getAccountRufName(int accountId);
+	// constant
+	Text* getLetzterFehler() const;
 };
 
 #endif

+ 45 - 45
AnmeldungServer/main.cpp

@@ -7,55 +7,55 @@
 
 int main()
 {
-    struct rlimit core_limits;
-    core_limits.rlim_cur = core_limits.rlim_max = RLIM_INFINITY;
-    setrlimit( RLIMIT_CORE, &core_limits );
+	struct rlimit core_limits;
+	core_limits.rlim_cur = core_limits.rlim_max = RLIM_INFINITY;
+	setrlimit(RLIMIT_CORE, &core_limits);
 #ifdef DEBUG
-    chdir( "/test/anmeldung" );
+	chdir("/test/anmeldung");
 #endif
-    Framework::initFramework();
-    Zeit *z = getZeit();
-    Text *pfad = new Text( "../log/anmeldung/" );
-    pfad->append( z->getZeit( "y-m-d h-i-s.log" ) );
-    z->release();
-    DateiPfadErstellen( pfad->getText() );
-    std::ofstream file;
-    file.open( pfad->getText() );
-    std::streambuf *sbuf = std::cout.rdbuf();
-    std::cout.rdbuf( file.rdbuf() );
-    pfad->release();
+	Framework::initFramework();
+	Zeit* z = getZeit();
+	Text* pfad = new Text("../log/anmeldung/");
+	pfad->append(z->getZeit("y-m-d h-i-s.log"));
+	z->release();
+	DateiPfadErstellen(pfad->getText());
+	std::ofstream file;
+	file.open(pfad->getText());
+	std::streambuf* sbuf = std::cout.rdbuf();
+	std::cout.rdbuf(file.rdbuf());
+	pfad->release();
 
-    std::cout << "AS: Startet...\n";
-    std::cout << "AS: Lese init Datei ../data/asInit.ini ...\n";
-    InitDatei *dat = new InitDatei( "../data/asInit.ini" );
-    if( !dat->laden() )
-    {
-        std::cout << "AS: error: Datei konnte nicht gelesen werden. Das Programm wird geschlossen.\n";
-        dat->release();
-        exit( 1 );
-    }
-    const char *wichtig[] = { "ServerId", "DBBenutzer", "DBPasswort", "DBName", "DBIP", "DBPort", "Aktiv", "SSLCert", "SSLKey", "SSLPasswort" };
-    for( const char *w : wichtig )
-    {
-        if( !dat->wertExistiert( w ) )
-        {
-            std::cout << "AS: error: Der Wert '" << w << "' wurde nicht gefunden. Das Programm wird geschlossen.\n";
-            dat->release();
-            exit( 1 );
-        }
-    }
+	std::cout << "AS: Startet...\n";
+	std::cout << "AS: Lese init Datei ../data/asInit.ini ...\n";
+	InitDatei* dat = new InitDatei("../data/asInit.ini");
+	if (!dat->laden())
+	{
+		std::cout << "AS: error: Datei konnte nicht gelesen werden. Das Programm wird geschlossen.\n";
+		dat->release();
+		exit(1);
+	}
+	const char* wichtig[] = { "ServerId", "DBBenutzer", "DBPasswort", "DBName", "DBIP", "DBPort", "Aktiv", "SSLCert", "SSLKey", "SSLPasswort" };
+	for (const char* w : wichtig)
+	{
+		if (!dat->wertExistiert(w))
+		{
+			std::cout << "AS: error: Der Wert '" << w << "' wurde nicht gefunden. Das Programm wird geschlossen.\n";
+			dat->release();
+			exit(1);
+		}
+	}
 
-    AnmeldungServer *aServer = new AnmeldungServer( dat );
+	AnmeldungServer* aServer = new AnmeldungServer(dat);
 
-    std::cout << "AS: Der Admin Server läuft. Startforgang beendet.\n";
-    aServer->runn();
+	std::cout << "AS: Der Admin Server läuft. Startforgang beendet.\n";
+	aServer->runn();
 
-    aServer->ende();
-    aServer->release();
-    dat->release();
-    std::cout << "AS: Der Server ist heruntergefahren.\n";
-    file.close();
-    std::cout.rdbuf( sbuf );
-    Framework::releaseFramework();
-    return 0;
+	aServer->ende();
+	aServer->release();
+	dat->release();
+	std::cout << "AS: Der Server ist heruntergefahren.\n";
+	file.close();
+	std::cout.rdbuf(sbuf);
+	Framework::releaseFramework();
+	return 0;
 }