瀏覽代碼

An neue Datenbank angepasst

Kolja Strohm 7 年之前
父節點
當前提交
6743b4ecc6

+ 28 - 149
EditorServer/Datenbank.cpp

@@ -1,25 +1,33 @@
 #include "Datenbank.h"
 #include <Zeit.h>
+#include <iostream>
 
 // Inhalt der LSDatenbank Klasse aus Datenbank.h
 // Konstruktor
 EdSDatenbank::EdSDatenbank( InitDatei *zIni )
 {
-    if( !zIni->wertExistiert( "DBBenutzer" ) )
-        zIni->addWert( "DBBenutzer", "editorserveru" );
-    if( !zIni->wertExistiert( "DBPasswort" ) )
-        zIni->addWert( "DBPasswort", "LTEditorServerPW" );
-    if( !zIni->wertExistiert( "DBName" ) )
-        zIni->addWert( "DBName", "koljadb" );
-    if( !zIni->wertExistiert( "DBIP" ) )
-        zIni->addWert( "DBIP", "127.0.0.1" );
-    if( !zIni->wertExistiert( "DBPort" ) )
-        zIni->addWert( "DBPort", "5432" );
     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 << "EdS: Die Verbindung zur Datenbank konnte nicht hergestellt werden.\nDas Programm wird beendet.";
+        exit( 1 );
+    }
     InitializeCriticalSection( &cs );
     ref = 1;
+    Text befehl = "SELECT port, admin_port  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 ] );
+    }
+    res.destroy();
 }
 
 // Destruktor
@@ -44,9 +52,9 @@ int EdSDatenbank::istAdministrator( const char *name, const char *passwort )
 {
     Text *befehl = new Text( "SELECT id FROM benutzer WHERE name = '" );
     befehl->append( name );
-    befehl->append( "' AND passwort = '" );
+    befehl->append( "' AND passwort = md5('" );
     befehl->append( passwort );
-    befehl->append( "'" );
+    befehl->append( "')" );
     lock();
     datenbank->befehl( befehl->getText() );
     Result res = datenbank->getResult();
@@ -75,7 +83,7 @@ bool EdSDatenbank::adminHatRecht( int id, int recht )
 
 bool EdSDatenbank::proveKlient( int num, int sNum )
 {
-    Text *befehl = new Text( "SELECT * FROM server_editor_clients WHERE server_editor_id = " );
+    Text *befehl = new Text( "SELECT * FROM server_client WHERE server_id = " );
     befehl->append( sNum );
     befehl->append( " AND client_id = " );
     befehl->append( num );
@@ -94,7 +102,7 @@ bool EdSDatenbank::proveKlient( int num, int sNum )
 Text *EdSDatenbank::getKlientKey( int cId )
 {
     lock();
-    if( !datenbank->befehl( Text( "SELECT schluessel FROM clients WHERE id = " ) += cId ) )
+    if( !datenbank->befehl( Text( "SELECT schluessel FROM client WHERE id = " ) += cId ) )
     {
         unlock();
         return 0;
@@ -113,7 +121,7 @@ Text *EdSDatenbank::getKlientKey( int cId )
 
 void EdSDatenbank::unregisterKlient( int num, int sNum )
 {
-    Text *befehl = new Text( "DELETE FROM server_editor_clients WHERE client_id = " );
+    Text *befehl = new Text( "DELETE FROM server_client WHERE client_id = " );
     befehl->append( num );
     befehl->append( " AND server_editor_id = " );
     befehl->append( sNum );
@@ -123,114 +131,9 @@ void EdSDatenbank::unregisterKlient( int num, int sNum )
     befehl->release();
 }
 
-bool EdSDatenbank::serverAnmelden( InitDatei *zIni )
-{
-    if( !zIni->wertExistiert( "ServerId" ) )
-        zIni->addWert( "ServerId", "0" );
-    if( !zIni->wertExistiert( "ServerName" ) )
-        zIni->addWert( "ServerName", "Name" );
-    if( !zIni->wertExistiert( "ServerPort" ) )
-        zIni->addWert( "ServerPort", "49144" );
-    if( !zIni->wertExistiert( "ServerIP" ) )
-        zIni->addWert( "ServerIP", "127.0.0.1" );
-    if( !zIni->wertExistiert( "AdminServerPort" ) )
-        zIni->addWert( "AdminServerPort", "49143" );
-    if( !zIni->wertExistiert( "Aktiv" ) )
-        zIni->addWert( "Aktiv", "FALSE" );
-    if( !zIni->wertExistiert( "MaxKarten" ) )
-        zIni->addWert( "MaxKarten", "50" );
-    bool insert = 0;
-    int id = *zIni->zWert( "ServerId" );
-    if( id )
-    {
-        lock();
-        if( !datenbank->befehl( Text( "SELECT id FROM server_editor WHERE id = " ) += id ) )
-        {
-            unlock();
-            return 0;
-        }
-        int anz = datenbank->getZeilenAnzahl();
-        unlock();
-        insert = anz == 0;
-        if( !insert )
-        {
-            lock();
-            if( !datenbank->befehl( Text( "SELECT id FROM server_editor WHERE server_status_id = 1 AND id = " ) += id ) )
-            {
-                unlock();
-                return 0;
-            }
-            int anz = datenbank->getZeilenAnzahl();
-            unlock();
-            if( !anz ) // Server läuft bereits
-                return 0;
-        }
-    }
-    if( insert || !id )
-    { // Neuer Eintrag in Tabelle server_editor
-        Text *befehl = new Text( "INSERT INTO server_editor( " );
-        if( id )
-            *befehl += "id, ";
-        *befehl += "name, ip, port, admin_port, server_status_id, max_karten ) VALUES( ";
-        if( id )
-        {
-            *befehl += id;
-            *befehl += ", ";
-        }
-        *befehl += "'";
-        *befehl += zIni->zWert( "ServerName" )->getText();
-        *befehl += "', '";
-        *befehl += zIni->zWert( "ServerIP" )->getText();
-        *befehl += "', ";
-        *befehl += zIni->zWert( "ServerPort" )->getText();
-        *befehl += ", ";
-        *befehl += zIni->zWert( "AdminServerPort" )->getText();
-        *befehl += ", 1, ";
-        *befehl += zIni->zWert( "MaxKarten" )->getText();
-        *befehl += " ) RETURNING id";
-        lock();
-        if( !datenbank->befehl( *befehl ) )
-        {
-            unlock();
-            befehl->release();
-            return 0;
-        }
-        Result res = datenbank->getResult();
-        unlock();
-        befehl->release();
-        if( !res.zeilenAnzahl )
-        {
-            res.destroy();
-            return 0;
-        }
-        zIni->setWert( "ServerId", res.values[ 0 ] );
-        return 1;
-    }
-    else
-    { // Alten Eintrag aus Tabelle server_editor ändern
-        Text *befehl = new Text( "UPDATE server_editor SET name = '" );
-        *befehl += zIni->zWert( "ServerName" )->getText();
-        *befehl += "', port = ";
-        *befehl += zIni->zWert( "ServerPort" )->getText();
-        *befehl += ", ip = '";
-        *befehl += zIni->zWert( "ServerIP" )->getText();
-        *befehl += "', max_karten = ";
-        *befehl += zIni->zWert( "MaxKarten" )->getText();
-        *befehl += ", admin_port = ";
-        *befehl += zIni->zWert( "AdminServerPort" )->getText();
-        *befehl += " WHERE id = ";
-        *befehl += id;
-        lock();
-        bool ret = datenbank->befehl( *befehl );
-        unlock();
-        befehl->release();
-        return ret;
-    }
-}
-
 bool EdSDatenbank::setServerStatus( int id, int status )
 {
-    Text *befehl = new Text( "UPDATE server_editor SET server_status_id = " );
+    Text *befehl = new Text( "UPDATE server SET server_status_id = " );
     *befehl += status;
     *befehl += "WHERE id = ";
     *befehl += id;
@@ -249,7 +152,7 @@ bool EdSDatenbank::setServerStatus( int id, int status )
 
 bool EdSDatenbank::setMaxKarten( int id, int maxK )
 {
-    Text *befehl = new Text( "UPDATE server_editor SET max_karten = " );
+    Text *befehl = new Text( "UPDATE server SET max_tasks = " );
     befehl->append( maxK );
     befehl->append( " WHERE id = " );
     befehl->append( id );
@@ -266,33 +169,9 @@ bool EdSDatenbank::setMaxKarten( int id, int maxK )
     return ret;
 }
 
-int EdSDatenbank::getAdminPort( int id )
-{
-    Text *befehl = new Text( "SELECT admin_port FROM server_editor 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;
-    }
-    int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
-    res.destroy();
-    return ret;
-}
-
 bool EdSDatenbank::serverIstNichtPausiert( int id )
 {
-    Text *befehl = new Text( "SELECT server_status_id FROM server_editor WHERE id = " );
+    Text *befehl = new Text( "SELECT server_status_id FROM server WHERE id = " );
     befehl->append( id );
     lock();
     if( !datenbank->befehl( befehl->getText() ) )
@@ -338,7 +217,7 @@ Text *EdSDatenbank::getKarteName( int id )
 
 bool EdSDatenbank::proveKarte( int id, int cId, int sNum )
 {
-    Text befehl = "SELECT a.id FROM karte a, account_clients b WHERE a.id = ";
+    Text befehl = "SELECT a.id FROM karte a, account_client b WHERE a.id = ";
     befehl += id;
     befehl += " AND a.account_id = b.account_id AND b.client_id = ";
     befehl += cId;
@@ -573,7 +452,7 @@ bool EdSDatenbank::karteErstellen( const char *name, int spielArt, int klient )
         return 0;
     }
     unlock();
-    befehl = "SELECT account_id FROM account_clients WHERE client_id = ";
+    befehl = "SELECT account_id FROM account_client WHERE client_id = ";
     befehl = klient;
     lock();
     if( !datenbank->befehl( befehl ) )

+ 4 - 6
EditorServer/Datenbank.h

@@ -11,10 +11,10 @@ using namespace sql;
 
 namespace Admin_Recht
 {
-	const int EdSStarten = 0x00000032;
-	const int EdSBeenden = 0x00000033;
-	const int EdSPausieren = 0x00000034;
-	const int EdSMKChange = 0x00000035;
+	const int EdSStarten = 49;
+	const int EdSBeenden = 50;
+	const int EdSPausieren = 51;
+	const int EdSMKChange = 52;
 }
 
 struct AHDaten;
@@ -39,10 +39,8 @@ public:
 	bool proveKlient( int num, int sNum );
 	Text *getKlientKey( int cId );
 	void unregisterKlient( int num, int sNum );
-	bool serverAnmelden( InitDatei *zIni );
 	bool setServerStatus( int id, int status );
 	bool setMaxKarten( int id, int maxK );
-	int getAdminPort( int id );
 	bool serverIstNichtPausiert( int id );
 	Text *getKarteName( int id );
 	bool proveKarte( int id, int cId, int sNum );

+ 1 - 9
EditorServer/EditorServer.cpp

@@ -17,19 +17,11 @@ EditorServer::EditorServer( InitDatei *zIni )
     gesendet = 0;
     fehler = new Text();
     ini = zIni->getThis();
-    if( !db->serverAnmelden( zIni ) )
-    {
-        std::cout << "EdS: Der Server konnte nicht in die Datenbank eingetragen werden:\n";
-        Text *txt = db->getLetzterFehler();
-        std::cout << txt->getText() << "\nDas Programm wird beendet.";
-        txt->release();
-        exit( 1 );
-    }
     id = *zIni->zWert( "ServerId" );
     server = new Server();
     aServer = new Server();
     std::cout << "EdS: Starten des Admin Servers...\n";
-    if( !aServer->verbinde( (unsigned short)db->getAdminPort( id ), 10 ) )
+    if( !aServer->verbinde( (unsigned short)TextZuInt( ini->zWert( "AdminServerPort" )->getText(), 10 ), 10 ) )
     {
         std::cout << "EdS: Der Admin Server konnte nicht gestartet werden. Das Programm wird beendet.\n";
         exit( 1 );

+ 0 - 5
EditorServer/EditorServer.h

@@ -6,13 +6,8 @@
 #include <Datei.h>
 #include <Text.h>
 #include <InitDatei.h>
-#ifdef WIN32
-#include "Karte/KarteEditor.h"
-#include "../Datenbank/Datenbank.h"
-#else
 #include "Datenbank.h"
 #include "KarteEditor.h"
-#endif
 
 using namespace Framework;
 using namespace Network;

+ 10 - 6
EditorServer/EditorServer.vcxproj

@@ -36,13 +36,17 @@
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <TargetExt />
-    <RemoteProjectDir>$(RemoteRootDir)/Server/$(ProjectName)/Release</RemoteProjectDir>
-    <IncludePath>..\..\..\..\Allgemein\Framework;../../../Framework/Release;..\..\..\..\Allgemein\Network\Network;../../../Network/Release;..\..\..\..\Allgemein\sql\sql;../../../sql/Release;$(IncludePath)</IncludePath>
+    <RemoteProjectDir>$(RemoteRootDir)/Server/$(ProjectName)/release</RemoteProjectDir>
+    <IncludePath>..\..\..\..\Allgemein\Framework;../../../Framework/release;..\..\..\..\Allgemein\Network\Network;../../../Network/release;..\..\..\..\Allgemein\sql\sql;../../../sql/release;$(IncludePath)</IncludePath>
+    <OutDir>$(ProjectDir)bin\$(Platform)\release\</OutDir>
+    <IntDir>$(ProjectDir)obj\$(Platform)\release\</IntDir>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <TargetExt />
-    <RemoteProjectDir>$(RemoteRootDir)/Server/$(ProjectName)/Debug</RemoteProjectDir>
-    <IncludePath>..\..\..\..\Allgemein\Framework;../../../Framework/Debug;..\..\..\..\Allgemein\Network\Network;../../../Network/Debug;..\..\..\..\Allgemein\sql\sql;../../../sql/Debug;..\AppServer;$(IncludePath)</IncludePath>
+    <RemoteProjectDir>$(RemoteRootDir)/Server/$(ProjectName)/debug</RemoteProjectDir>
+    <IncludePath>..\..\..\..\Allgemein\Framework;../../../Framework/debug;..\..\..\..\Allgemein\Network\Network;../../../Network/debug;..\..\..\..\Allgemein\sql\sql;../../../sql/debug;..\AppServer;$(IncludePath)</IncludePath>
+    <OutDir>$(ProjectDir)bin\$(Platform)\debug\</OutDir>
+    <IntDir>$(ProjectDir)obj\$(Platform)\debug\</IntDir>
   </PropertyGroup>
   <ItemGroup>
     <ClInclude Include="BeschreibungEditor.h" />
@@ -71,14 +75,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <Link>
       <LibraryDependencies>dbgFramework;dbgNetwork;dbgSQL;pq;pthread;dl</LibraryDependencies>
-      <AdditionalLibraryDirectories>$(RemoteRootDir)/sql/Debug/bin/x64/debug;$(RemoteRootDir)/Network/Debug/bin/x64/debug;$(RemoteRootDir)/Framework/Debug/bin/x64/debug;/usr/lib/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalLibraryDirectories>$(RemoteRootDir)/sql/debug/bin/x64/debug;$(RemoteRootDir)/Network/debug/bin/x64/debug;$(RemoteRootDir)/Framework/debug/bin/x64/debug;/usr/lib/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>-Wl,-rpath,../lib %(AdditionalOptions)</AdditionalOptions>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <Link>
       <LibraryDependencies>Framework;Network;SQL;pq;pthread;dl</LibraryDependencies>
-      <AdditionalLibraryDirectories>$(RemoteRootDir)/sql/Release/bin/x64/release;$(RemoteRootDir)/Network/Release/bin/x64/release;$(RemoteRootDir)/Framework/Release/bin/x64/release;/usr/lib/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalLibraryDirectories>$(RemoteRootDir)/sql/release/bin/x64/release;$(RemoteRootDir)/Network/release/bin/x64/release;$(RemoteRootDir)/Framework/release/bin/x64/release;/usr/lib/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>-Wl,-rpath,../lib %(AdditionalOptions)</AdditionalOptions>
     </Link>
   </ItemDefinitionGroup>

+ 0 - 4
EditorServer/TeamsEditor.h

@@ -2,11 +2,7 @@
 
 #include <Text.h>
 #include <Server.h>
-#ifdef WIN32
-#include "../../../Datenbank/Datenbank.h"
-#else
 #include "Datenbank.h"
-#endif
 
 using namespace Framework;
 using namespace Network;

+ 13 - 0
EditorServer/main.cpp

@@ -6,6 +6,9 @@
 
 int main()
 {
+#ifdef DEBUG
+    cd( "/test/editor" );
+#endif
     Framework::initFramework();
 	Zeit *z = getZeit();
 	Text *pfad = new Text( "../log/editor/" );
@@ -33,6 +36,16 @@ int main()
         dat->release();
         exit( 1 );
     }
+    const char *wichtig[] = { "ServerId", "DBBenutzer", "DBPasswort", "DBName", "DBIP", "DBPort", "Aktiv", "KartenPfad", "gslPfad", "SpielePfad" };
+    for( const char *w : wichtig )
+    {
+        if( !dat->wertExistiert( w ) )
+        {
+            std::cout << "EdS: error: Der Wert '" << w << "' wurde nicht gefunden. Das Programm wird geschlossen.\n";
+            dat->release();
+            exit( 1 );
+        }
+    }
 
 	EditorServer *iServer = new EditorServer( dat );