소스 검색

SSL Verbindungsaufbau mit Main Server hinzugefügt

Kolja Strohm 6 년 전
부모
커밋
1830d57f85
4개의 변경된 파일39개의 추가작업 그리고 41개의 파일을 삭제
  1. BIN
      Start/Framework.dll
  2. BIN
      Start/Network.dll
  3. 3 3
      Start/Start.vcxproj
  4. 36 38
      Start/start.cpp

BIN
Start/Framework.dll


BIN
Start/Network.dll


+ 3 - 3
Start/Start.vcxproj

@@ -71,18 +71,18 @@
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <LinkIncremental>true</LinkIncremental>
-    <IncludePath>..\..\..\..\Allgemein\Network\Network;..\..\..\..\Allgemein\Framework;$(IncludePath)</IncludePath>
+    <IncludePath>..\..\..\..\OpenSSL\x64\Debug\Include;..\..\..\..\Allgemein\Network\Network;..\..\..\..\Allgemein\Framework;$(IncludePath)</IncludePath>
     <LibraryPath>..\..\..\..\Allgemein\Framework\x64\Debug;..\..\..\..\Allgemein\Network\x64\Debug;$(LibraryPath)</LibraryPath>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <LinkIncremental>false</LinkIncremental>
-    <IncludePath>..\..\..\..\Allgemein\Framework;..\..\..\..\Allgemein\Network\Network;$(IncludePath)</IncludePath>
+    <IncludePath>..\..\..\..\Allgemein\Framework;..\..\..\..\Allgemein\Network\Network;..\..\..\..\OpenSSL\x32\Release\Include;$(IncludePath)</IncludePath>
     <LibraryPath>..\..\..\..\Allgemein\Framework\Release;..\..\..\..\Allgemein\Network\Release;$(LibraryPath)</LibraryPath>
     <CustomBuildBeforeTargets>Build</CustomBuildBeforeTargets>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <LinkIncremental>false</LinkIncremental>
-    <IncludePath>..\..\..\..\Allgemein\Framework;..\..\..\..\Allgemein\Network\Network;$(IncludePath)</IncludePath>
+    <IncludePath>..\..\..\..\OpenSSL\x64\Release\Include;..\..\..\..\Allgemein\Framework;..\..\..\..\Allgemein\Network\Network;$(IncludePath)</IncludePath>
     <LibraryPath>..\..\..\..\Allgemein\Framework\x64\Release;..\..\..\..\Allgemein\Network\x64\Release;$(LibraryPath)</LibraryPath>
     <CustomBuildBeforeTargets>Build</CustomBuildBeforeTargets>
   </PropertyGroup>

+ 36 - 38
Start/start.cpp

@@ -62,21 +62,14 @@ int KSGStart Framework::Start( Startparam p )
 	if( !iDat->zWert( "ServerIP" ) )
 		iDat->addWert( "ServerIP", "127.0.0.1" );
 	if( !iDat->zWert( "ServerPort" ) )
-		iDat->addWert( "ServerPort", "4253" );
+		iDat->addWert( "ServerPort", "4225" );
 	iDat->speichern();
 	Text *ipT = iDat->getWert( "ServerIP" );
 	unsigned short port = (unsigned short)TextZuInt( iDat->zWert( "ServerPort" )->getText(), 10 );
 	iDat->release();
-	Klient *klient = new Klient();
+    SSLKlient *klientSSL = new SSLKlient();
     int l = 0;
-    char *key;
-    Keys::getServerKey( &key, l, Keys::MAIN, Keys::SENDEN );
-	klient->setSendeKey( key, l );
-    delete[] key;
-    Keys::getServerKey( &key, l, Keys::MAIN, Keys::EMPFANGEN );
-	klient->setEmpfangKey( key, l );
-    delete[] key;
-	if( !klient->verbinde( port, ipT->getText() ) )
+	if( !klientSSL->verbinde( port, ipT->getText() ) )
 	{
 		Text *message = new Text( "Der Server wurde nicht gefunden.\nServer Ip:" );
 		message->append( ipT->getText() );
@@ -84,45 +77,44 @@ int KSGStart Framework::Start( Startparam p )
 		message->append( (int)port );
 		WMessageBox( 0, new Text( "Fehler" ), message, MB_ICONERROR );
 		ipT->release();
-		klient->release();
+        klientSSL->release();
 		Network::Exit();
 		return 0;
 	}
-	klient->sende( "\0", 1 ); // Verschlüsselung aktivieren
-	klient->sendeEncrypted( "\1\0\0\0\0", 5 );
+    klientSSL->sende( "\1", 5 );
 	char byte = 0;
-	klient->getNachrichtEncrypted( &byte, 1 );
+    klientSSL->getNachricht( &byte, 1 );
 	if( byte == 3 )
 	{
-		klient->getNachrichtEncrypted( &byte, 1 );
+        klientSSL->getNachricht( &byte, 1 );
 		char *message = new char[ byte + 1 ];
 		message[ byte ] = 0;
-		klient->getNachrichtEncrypted( message, byte );
+        klientSSL->getNachricht( message, byte );
 		Text *nachricht = new Text( "Fehler während der Identifikation beim Server.\nServer Rückgabe:\n " );
 		nachricht->append( message );
 		WMessageBox( 0, new Text( "Server Fehler" ), nachricht, MB_ICONERROR );
 		delete[]message;
 		ipT->release();
-		klient->sendeEncrypted( "\3", 1 );
-		klient->getNachrichtEncrypted( &serverReturn, 1 );
-		klient->trenne();
-		klient->release();
+        klientSSL->sende( "\3", 1 );
+		klientSSL->getNachricht( &serverReturn, 1 );
+		klientSSL->trenne();
+		klientSSL->release();
 		Network::Exit();
 		return 0;
 	}
 	int klientNummer = 0;
 	char *netwSchlüssel = 0;
 	char netwSchlüsselLän = 0;
+    int normPort = 0;
 	if( byte == 1 )
 	{
-		klient->getNachrichtEncrypted( (char*)&klientNummer, 4 );
-		klient->getNachrichtEncrypted( &netwSchlüsselLän, 1 );
+        klientSSL->getNachricht( (char*)&normPort, 4 );
+		klientSSL->getNachricht( (char*)&klientNummer, 4 );
+		klientSSL->getNachricht( &netwSchlüsselLän, 1 );
 		if( netwSchlüsselLän )
 		{
 			netwSchlüssel = new char[ netwSchlüsselLän ];
-			klient->getNachrichtEncrypted( netwSchlüssel, netwSchlüsselLän );
-			klient->setSendeKey( netwSchlüssel, netwSchlüsselLän );
-			klient->setEmpfangKey( netwSchlüssel, netwSchlüsselLän );
+            klientSSL->getNachricht( netwSchlüssel, netwSchlüsselLän );
 			Datei *dat = new Datei();
 			dat->setDatei( "data/tmp/schlüssel.netw" );
 			dat->erstellen();
@@ -137,10 +129,10 @@ int KSGStart Framework::Start( Startparam p )
 	{
 		WMessageBox( 0, new Text( "Server Fehler" ), new Text( "Unbekannte Rückgabe vom Server.\nEventuell ist deine Version des Spiels veraltet." ), MB_ICONERROR );
 		ipT->release();
-		klient->sendeEncrypted( "\3", 1 );
-		klient->getNachrichtEncrypted( &serverReturn, 1 );
-		klient->trenne();
-		klient->release();
+		klientSSL->sende( "\3", 1 );
+		klientSSL->getNachricht( &serverReturn, 1 );
+		klientSSL->trenne();
+		klientSSL->release();
 		Network::Exit();
 		delete[] netwSchlüssel;
 		return 0;
@@ -151,14 +143,19 @@ int KSGStart Framework::Start( Startparam p )
 	dat->open( Datei::Style::schreiben );
 	dat->schreibe( (char*)&klientNummer, 4 );
 	dat->close();
+    dat->setDatei( "data/tmp/m.port" );
+    dat->erstellen();
+    dat->open( Datei::Style::schreiben );
+    dat->schreibe( (char*)&normPort, 4 );
+    dat->close();
 	dat->release();
-	klient->sendeEncrypted( "\3", 1 );
-	klient->getNachrichtEncrypted( &serverReturn, 1 );
-	klient->trenne();
-	klient->release();
+	klientSSL->sende( "\3", 1 );
+	klientSSL->getNachricht( &serverReturn, 1 );
+	klientSSL->trenne();
+	klientSSL->release();
 
 	ErhaltungKlient *erhaltung = new ErhaltungKlient( klientNummer );
-	erhaltung->verbinden( port, ipT, netwSchlüssel, netwSchlüsselLän );
+	erhaltung->verbinden( normPort, ipT, netwSchlüssel, netwSchlüsselLän );
 
 	if( pe )
 	{
@@ -194,7 +191,7 @@ int KSGStart Framework::Start( Startparam p )
 					erhaltung->trennen();
 					erhaltung->warteAufThread( 5000 );
 					erhaltung->release();
-					klient = new Klient();
+					Klient *klient = new Klient();
                     int l = 0;
                     char *key;
                     Keys::getServerKey( &key, l, Keys::MAIN, Keys::SENDEN );
@@ -203,7 +200,7 @@ int KSGStart Framework::Start( Startparam p )
                     Keys::getServerKey( &key, l, Keys::MAIN, Keys::EMPFANGEN );
                     klient->setEmpfangKey( key, l );
                     delete[] key;
-					if( !klient->verbinde( port, ipT->getText() ) )
+					if( !klient->verbinde( normPort, ipT->getText() ) )
 					{
 						WMessageBox( 0, new Text( "Fehler" ), new Text( "Die Verbindung zum Server ist abgebrochen." ), MB_ICONERROR );
 						ipT->release();
@@ -291,14 +288,15 @@ int KSGStart Framework::Start( Startparam p )
 	erhaltung->warteAufThread( 5000 );
 	erhaltung->release();
 
-	klient = new Klient();
+	Klient *klient = new Klient();
+    char *key;
     Keys::getServerKey( &key, l, Keys::MAIN, Keys::SENDEN );
     klient->setSendeKey( key, l );
     delete[] key;
     Keys::getServerKey( &key, l, Keys::MAIN, Keys::EMPFANGEN );
     klient->setEmpfangKey( key, l );
     delete[] key;
-	if( !klient->verbinde( port, ipT->getText() ) )
+	if( !klient->verbinde( normPort, ipT->getText() ) )
 	{
 		WMessageBox( 0, new Text( "Fehler" ), new Text( "Die Verbindung zum Server ist abgebrochen." ), MB_ICONERROR );
 		ipT->release();