|
@@ -52,11 +52,11 @@ int PSDatenbank::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( (char *)n );
|
|
|
befehl->append( "' AND passwort = md5( '" );
|
|
|
Text p( passwort );
|
|
|
p.ersetzen( "'", "''" );
|
|
|
- befehl->append( (char*)p );
|
|
|
+ befehl->append( (char *)p );
|
|
|
befehl->append( "' )" );
|
|
|
lock();
|
|
|
datenbank->befehl( befehl->getText() );
|
|
@@ -102,7 +102,7 @@ bool PSDatenbank::proveKlient( int num, int sNum )
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-Text *PSDatenbank::getKlientKey( int cId )
|
|
|
+Text * PSDatenbank::getKlientKey( int cId )
|
|
|
{
|
|
|
lock();
|
|
|
if( !datenbank->befehl( Text( "SELECT schluessel FROM client WHERE id = " ) += cId ) )
|
|
@@ -505,11 +505,11 @@ int PSDatenbank::getDateiGruppePatchServer( int client, int gruppe )
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-bool PSDatenbank::getPatchServerPortIp( int server, int *port, Text *zIp )
|
|
|
+bool PSDatenbank::getPatchServerPortIp( int server, int *port, Text * zIp )
|
|
|
{
|
|
|
if( !server )
|
|
|
return 0;
|
|
|
- Text *befehl = new Text( "SELECT port, ip FROM server WHERE id = " );
|
|
|
+ Text * befehl = new Text( "SELECT port, ip FROM server WHERE id = " );
|
|
|
befehl->append( server );
|
|
|
lock();
|
|
|
if( !datenbank->befehl( befehl->getText() ) )
|
|
@@ -565,7 +565,7 @@ int PSDatenbank::getDateiVersion( const char *pfad, int system, int gruppe )
|
|
|
Text *befehl = new Text( "SELECT version FROM datei WHERE pfad = '" );
|
|
|
Text p( pfad );
|
|
|
p.ersetzen( "'", "''" );
|
|
|
- befehl->append( (char*)p );
|
|
|
+ befehl->append( (char *)p );
|
|
|
befehl->append( "' AND system_id = " );
|
|
|
befehl->append( system );
|
|
|
befehl->append( " AND datei_gruppe_id = " );
|
|
@@ -614,7 +614,7 @@ int PSDatenbank::getDateiGruppeVersion( int gruppe )
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-bool PSDatenbank::getFileGroupInfoList( int serverId, Array< FileGroupInfo* > *list )
|
|
|
+bool PSDatenbank::getFileGroupInfoList( int serverId, Array< FileGroupInfo * > * list )
|
|
|
{
|
|
|
Text befehl = "SELECT a.id, a.name, 'Fehlt' AS status, a.pfad, a.version FROM datei_gruppe a "
|
|
|
"LEFT JOIN server_patch_datei_gruppe b ON a.id = b.datei_gruppe_id AND b.server_patch_id = ";
|
|
@@ -644,9 +644,9 @@ bool PSDatenbank::getFileGroupInfoList( int serverId, Array< FileGroupInfo* > *l
|
|
|
{
|
|
|
FileGroupInfo *info = new FileGroupInfo();
|
|
|
info->id = res.values[ 0 + i * 5 ];
|
|
|
- info->name = (char*)res.values[ 1 + i * 5 ];
|
|
|
- info->status = (char*)res.values[ 2 + i * 5 ];
|
|
|
- info->pfad = (char*)res.values[ 3 + i * 5 ];
|
|
|
+ info->name = (char *)res.values[ 1 + i * 5 ];
|
|
|
+ info->status = (char *)res.values[ 2 + i * 5 ];
|
|
|
+ info->pfad = (char *)res.values[ 3 + i * 5 ];
|
|
|
info->version = res.values[ 4 + i * 5 ];
|
|
|
list->add( info );
|
|
|
}
|
|
@@ -654,165 +654,107 @@ bool PSDatenbank::getFileGroupInfoList( int serverId, Array< FileGroupInfo* > *l
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
-bool PSDatenbank::updateDatei( const char *pfad, char *letzteAEnderung, int system, int gruppe )
|
|
|
+bool PSDatenbank::updateDatei( const char *pfad, char status, char *letzteAEnderung, int system, int gruppe )
|
|
|
{
|
|
|
- Text *befehl = new Text( "SELECT * FROM datei WHERE pfad = '" );
|
|
|
+ Text befehl;
|
|
|
Text p( pfad );
|
|
|
p.ersetzen( "'", "''" );
|
|
|
- befehl->append( (char*)p );
|
|
|
- befehl->append( "' AND system_id = " );
|
|
|
- befehl->append( system );
|
|
|
- befehl->append( " AND datei_gruppe_id = " );
|
|
|
- befehl->append( gruppe );
|
|
|
- lock();
|
|
|
- if( !datenbank->befehl( befehl->getText() ) )
|
|
|
+ switch( status )
|
|
|
{
|
|
|
- unlock();
|
|
|
- befehl->release();
|
|
|
- return 0;
|
|
|
- }
|
|
|
- int anz = datenbank->getZeilenAnzahl();
|
|
|
- unlock();
|
|
|
- if( anz && !letzteAEnderung ) // datei existiert nicht mehr
|
|
|
- {
|
|
|
- befehl->setText( "SELECT * FROM datei"
|
|
|
- "WHERE geloescht = false AND pfad = '" );
|
|
|
- befehl->append( (char*)p );
|
|
|
- befehl->append( "' AND system_id = " );
|
|
|
- befehl->append( system );
|
|
|
- befehl->append( " AND datei_gruppe_id = " );
|
|
|
- befehl->append( gruppe );
|
|
|
+ case 0: // delete
|
|
|
+ befehl = Text( "UPDATE datei SET geloescht = true WHERE pfad = '" ) + p + "' AND system_id = " + system + " AND datei_gruppe_id = " + gruppe;
|
|
|
lock();
|
|
|
- if( !datenbank->befehl( befehl->getText() ) )
|
|
|
+ if( datenbank->befehl( befehl ) )
|
|
|
{
|
|
|
unlock();
|
|
|
- befehl->release();
|
|
|
- return 0;
|
|
|
+ return 1;
|
|
|
}
|
|
|
- int anz = datenbank->getZeilenAnzahl();
|
|
|
- unlock();
|
|
|
- if( anz ) // datei wurde noch nicht in die Tabelle datei_loeschen eingetragen
|
|
|
+ else
|
|
|
{
|
|
|
- befehl->setText( "UPDATE datei SET geloescht = true WHERE pfad = '" );
|
|
|
- befehl->append( (char*)p );
|
|
|
- befehl->append( "' AND system_id = " );
|
|
|
- befehl->append( system );
|
|
|
- befehl->append( " AND datei_gruppe_id = " );
|
|
|
- befehl->append( gruppe );
|
|
|
- lock();
|
|
|
- if( datenbank->befehl( befehl->getText() ) )
|
|
|
- {
|
|
|
- unlock();
|
|
|
- befehl->release();
|
|
|
- return 1;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- unlock();
|
|
|
- befehl->release();
|
|
|
- return 0;
|
|
|
- }
|
|
|
+ unlock();
|
|
|
+ return 0;
|
|
|
}
|
|
|
- }
|
|
|
- else if( !anz ) // neue Datei erstellt
|
|
|
+ break;
|
|
|
+ case 1: // update
|
|
|
{
|
|
|
- befehl->setText( "INSERT INTO datei( pfad, version, aenderung_dat, system_id, datei_gruppe_id ) VALUES( '" );
|
|
|
- befehl->append( (char*)p );
|
|
|
- befehl->append( "', 1, " );
|
|
|
- if( !letzteAEnderung )
|
|
|
- {
|
|
|
- befehl->append( "NULL, " );
|
|
|
- }
|
|
|
+ befehl = Text( "UPDATE datei SET geloescht = false WHERE pfad = '" ) + p + "' AND system_id = " + system + " AND datei_gruppe_id = " + gruppe;
|
|
|
+ lock();
|
|
|
+ if( datenbank->befehl( befehl ) )
|
|
|
+ unlock();
|
|
|
else
|
|
|
{
|
|
|
- befehl->append( "'" );
|
|
|
- Text l( letzteAEnderung );
|
|
|
- l.ersetzen( "'", "''" );
|
|
|
- befehl->append( (char*)l );
|
|
|
- befehl->append( "', " );
|
|
|
+ unlock();
|
|
|
+ return 0;
|
|
|
}
|
|
|
- befehl->append( system );
|
|
|
- befehl->append( ", " );
|
|
|
- befehl->append( gruppe );
|
|
|
- befehl->append( " )" );
|
|
|
+ Text l( letzteAEnderung );
|
|
|
+ l.ersetzen( "'", "''" );
|
|
|
+ befehl = Text( "UPDATE datei SET version = version + 1, aenderung_dat = '" ) + l + "' WHERE pfad = '" + p + "' AND system_id = " + system + " AND aenderung_dat != '" + l + "' AND datei_gruppe_id = " + gruppe;
|
|
|
lock();
|
|
|
- if( datenbank->befehl( befehl->getText() ) )
|
|
|
+ if( datenbank->befehl( befehl ) )
|
|
|
{
|
|
|
unlock();
|
|
|
- befehl->release();
|
|
|
return 1;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
unlock();
|
|
|
- befehl->release();
|
|
|
return 0;
|
|
|
}
|
|
|
+ break;
|
|
|
}
|
|
|
- else if( anz && letzteAEnderung ) // Datei existiert bereits
|
|
|
+ case 2: // new
|
|
|
{
|
|
|
- // Datei aus tabelle datei_loeschen entfernen, wenn sie vorhanden ist
|
|
|
- befehl->setText( "UPDATE datei SET geloescht = false WHERE pfad = '" );
|
|
|
- befehl->append( (char*)p );
|
|
|
- befehl->append( "' AND system_id = " );
|
|
|
- befehl->append( system );
|
|
|
- befehl->append( " AND datei_gruppe_id = " );
|
|
|
- befehl->append( gruppe );
|
|
|
+ befehl = Text( "SELECT * FROM datei WHERE pfad = '" ) + p + "' AND system_id = " + system + " AND datei_gruppe_id = " + gruppe;
|
|
|
lock();
|
|
|
- if( !datenbank->befehl( befehl->getText() ) )
|
|
|
+ if( !datenbank->befehl( befehl ) )
|
|
|
{
|
|
|
unlock();
|
|
|
- befehl->release();
|
|
|
return 0;
|
|
|
}
|
|
|
+ int anz = datenbank->getZeilenAnzahl();
|
|
|
unlock();
|
|
|
- befehl->setText( "SELECT * FROM datei WHERE pfad = '" );
|
|
|
- befehl->append( (char*)p );
|
|
|
- befehl->append( "' AND system_id = " );
|
|
|
- befehl->append( system );
|
|
|
- befehl->append( " AND datei_gruppe_id = " );
|
|
|
- befehl->append( gruppe );
|
|
|
- befehl->append( " AND aenderung_dat = '" );
|
|
|
- Text l( letzteAEnderung );
|
|
|
- l.ersetzen( "'", "''" );
|
|
|
- befehl->append( (char*)l );
|
|
|
- befehl->append( "'" );
|
|
|
- lock();
|
|
|
- if( !datenbank->befehl( befehl->getText() ) )
|
|
|
+ if( anz > 0 )
|
|
|
{
|
|
|
- unlock();
|
|
|
- befehl->release();
|
|
|
- return 0;
|
|
|
+ befehl = Text( "UPDATE datei SET geloescht = true WHERE pfad = '" ) + p + "' AND system_id = " + system + " AND datei_gruppe_id = " + gruppe;
|
|
|
+ lock();
|
|
|
+ if( datenbank->befehl( befehl ) )
|
|
|
+ {
|
|
|
+ unlock();
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ unlock();
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
}
|
|
|
- anz = datenbank->getZeilenAnzahl();
|
|
|
- unlock();
|
|
|
- if( !anz ) // Datei wurde geändert
|
|
|
+ else
|
|
|
{
|
|
|
- befehl->setText( "UPDATE datei SET version = version + 1, aenderung_dat = '" );
|
|
|
- befehl->append( (char*)l );
|
|
|
- befehl->append( "' WHERE pfad = '" );
|
|
|
- befehl->append( (char*)p );
|
|
|
- befehl->append( "' AND system_id = " );
|
|
|
- befehl->append( system );
|
|
|
- befehl->append( " AND datei_gruppe_id = " );
|
|
|
- befehl->append( gruppe );
|
|
|
- lock();
|
|
|
- if( datenbank->befehl( befehl->getText() ) )
|
|
|
+ befehl = Text( "INSERT INTO datei( pfad, version, aenderung_dat, system_id, datei_gruppe_id ) VALUES( '" ) + p + "', 1, ";
|
|
|
+ if( !letzteAEnderung )
|
|
|
+ befehl += "NULL, ";
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Text l( letzteAEnderung );
|
|
|
+ l.ersetzen( "'", "''" );
|
|
|
+ befehl += Text( "'" ) + l + "', ";
|
|
|
+ }
|
|
|
+ befehl += Text( system ) + ", " + gruppe + " )";
|
|
|
+ if( datenbank->befehl( befehl ) )
|
|
|
{
|
|
|
unlock();
|
|
|
- befehl->release();
|
|
|
return 1;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
unlock();
|
|
|
- befehl->release();
|
|
|
return 0;
|
|
|
}
|
|
|
}
|
|
|
+ break;
|
|
|
}
|
|
|
- befehl->release();
|
|
|
- return 1;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
bool PSDatenbank::dateiGruppeUpdate( int gruppe )
|