|
@@ -16,7 +16,7 @@ NewsServer::NewsServer( InitDatei *zIni )
|
|
empfangen = 0;
|
|
empfangen = 0;
|
|
gesendet = 0;
|
|
gesendet = 0;
|
|
fehler = new Text();
|
|
fehler = new Text();
|
|
- ini = zIni->getThis();
|
|
|
|
|
|
+ ini = dynamic_cast<InitDatei *>( zIni->getThis() );
|
|
id = *zIni->zWert( "ServerId" );
|
|
id = *zIni->zWert( "ServerId" );
|
|
server = new Server();
|
|
server = new Server();
|
|
aServer = new SSLServer();
|
|
aServer = new SSLServer();
|
|
@@ -65,13 +65,13 @@ void NewsServer::runn()
|
|
if( end && klient )
|
|
if( end && klient )
|
|
{
|
|
{
|
|
klient->trenne();
|
|
klient->trenne();
|
|
- klient = klient->release();
|
|
|
|
|
|
+ klient = (SSLSKlient *)klient->release();
|
|
Sleep( 1000 );
|
|
Sleep( 1000 );
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
if( !klient )
|
|
if( !klient )
|
|
continue;
|
|
continue;
|
|
- NSAKlient * clHandle = new NSAKlient( klient, (NewsServer *)getThis() );
|
|
|
|
|
|
+ NSAKlient *clHandle = new NSAKlient( klient, dynamic_cast<NewsServer *>( getThis() ) );
|
|
clHandle->start();
|
|
clHandle->start();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -85,7 +85,7 @@ void NewsServer::thread()
|
|
if( !klient )
|
|
if( !klient )
|
|
continue;
|
|
continue;
|
|
Framework::getThreadRegister()->cleanUpClosedThreads();
|
|
Framework::getThreadRegister()->cleanUpClosedThreads();
|
|
- NSKlient * clHandle = new NSKlient( klient, (NewsServer *)getThis() );
|
|
|
|
|
|
+ NSKlient *clHandle = new NSKlient( klient, dynamic_cast<NewsServer *>( getThis() ) );
|
|
EnterCriticalSection( &cs );
|
|
EnterCriticalSection( &cs );
|
|
klients->set( clHandle, klientAnzahl );
|
|
klients->set( clHandle, klientAnzahl );
|
|
klientAnzahl++;
|
|
klientAnzahl++;
|
|
@@ -104,13 +104,13 @@ void NewsServer::close()
|
|
EnterCriticalSection( &cs );
|
|
EnterCriticalSection( &cs );
|
|
for( int i = 0; i < klientAnzahl; i++ )
|
|
for( int i = 0; i < klientAnzahl; i++ )
|
|
klients->z( i )->absturz();
|
|
klients->z( i )->absturz();
|
|
- klients = klients->release();
|
|
|
|
|
|
+ klients = ( RCArray<NSKlient>* )klients->release();
|
|
klientAnzahl = 0;
|
|
klientAnzahl = 0;
|
|
LeaveCriticalSection( &cs );
|
|
LeaveCriticalSection( &cs );
|
|
ende();
|
|
ende();
|
|
run = 0;
|
|
run = 0;
|
|
end = 1;
|
|
end = 1;
|
|
- Klient * klient = new Klient();
|
|
|
|
|
|
+ Klient *klient = new Klient();
|
|
klient->verbinde( aServer->getPort(), "127.0.0.1" );
|
|
klient->verbinde( aServer->getPort(), "127.0.0.1" );
|
|
Sleep( 500 );
|
|
Sleep( 500 );
|
|
aServer->trenne();
|
|
aServer->trenne();
|
|
@@ -223,7 +223,7 @@ bool NewsServer::absturzKlient( int klientId )
|
|
return gefunden;
|
|
return gefunden;
|
|
}
|
|
}
|
|
|
|
|
|
-bool NewsServer::removeKlient( NSKlient * zKlient )
|
|
|
|
|
|
+bool NewsServer::removeKlient( NSKlient *zKlient )
|
|
{
|
|
{
|
|
bool gefunden = 0;
|
|
bool gefunden = 0;
|
|
EnterCriticalSection( &cs );
|
|
EnterCriticalSection( &cs );
|
|
@@ -285,7 +285,7 @@ char *NewsServer::getLetzterFehler() const
|
|
|
|
|
|
// Inhalt der NSAKlient Klasse aus NewsServer.h
|
|
// Inhalt der NSAKlient Klasse aus NewsServer.h
|
|
// Konstruktor
|
|
// Konstruktor
|
|
-NSAKlient::NSAKlient( SSLSKlient * klient, NewsServer * ns )
|
|
|
|
|
|
+NSAKlient::NSAKlient( SSLSKlient *klient, NewsServer *ns )
|
|
: Thread()
|
|
: Thread()
|
|
{
|
|
{
|
|
this->klient = klient;
|
|
this->klient = klient;
|
|
@@ -323,13 +323,13 @@ void NSAKlient::thread()
|
|
{
|
|
{
|
|
klient->sende( "\1", 1 );
|
|
klient->sende( "\1", 1 );
|
|
unsigned char nLen = 0;
|
|
unsigned char nLen = 0;
|
|
- klient->getNachricht( (char *)& nLen, 1 );
|
|
|
|
|
|
+ klient->getNachricht( (char *)&nLen, 1 );
|
|
char *n = new char[ nLen + 1 ];
|
|
char *n = new char[ nLen + 1 ];
|
|
n[ (int)nLen ] = 0;
|
|
n[ (int)nLen ] = 0;
|
|
if( nLen )
|
|
if( nLen )
|
|
klient->getNachricht( n, nLen );
|
|
klient->getNachricht( n, nLen );
|
|
unsigned char pLen = 0;
|
|
unsigned char pLen = 0;
|
|
- klient->getNachricht( (char *)& pLen, 1 );
|
|
|
|
|
|
+ klient->getNachricht( (char *)&pLen, 1 );
|
|
char *p = new char[ pLen + 1 ];
|
|
char *p = new char[ pLen + 1 ];
|
|
p[ (int)pLen ] = 0;
|
|
p[ (int)pLen ] = 0;
|
|
if( pLen )
|
|
if( pLen )
|
|
@@ -425,7 +425,7 @@ void NSAKlient::thread()
|
|
}
|
|
}
|
|
else
|
|
else
|
|
ok = 1;
|
|
ok = 1;
|
|
- if( ok &&ns->hatClients() )
|
|
|
|
|
|
+ if( ok && ns->hatClients() )
|
|
{
|
|
{
|
|
errorZuKlient( "Es sind noch Klients Online. Bitte versuche es später erneut." );
|
|
errorZuKlient( "Es sind noch Klients Online. Bitte versuche es später erneut." );
|
|
break;
|
|
break;
|
|
@@ -521,7 +521,7 @@ void NSAKlient::thread()
|
|
{
|
|
{
|
|
klient->sende( "\1", 1 );
|
|
klient->sende( "\1", 1 );
|
|
int maxC = 0;
|
|
int maxC = 0;
|
|
- klient->getNachricht( (char *)& maxC, 4 );
|
|
|
|
|
|
+ klient->getNachricht( (char *)&maxC, 4 );
|
|
if( ns->zDB()->adminHatRecht( adminId, Admin_Recht::NSMCChange ) )
|
|
if( ns->zDB()->adminHatRecht( adminId, Admin_Recht::NSMCChange ) )
|
|
{
|
|
{
|
|
if( ns->setMaxKlients( maxC ) )
|
|
if( ns->setMaxKlients( maxC ) )
|
|
@@ -543,8 +543,8 @@ void NSAKlient::thread()
|
|
{
|
|
{
|
|
klient->sende( "\1", 1 );
|
|
klient->sende( "\1", 1 );
|
|
int klientId = 0;
|
|
int klientId = 0;
|
|
- klient->getNachricht( (char *)& klientId, 4 );
|
|
|
|
- if( klientId &&ns->absturzKlient( klientId ) )
|
|
|
|
|
|
+ klient->getNachricht( (char *)&klientId, 4 );
|
|
|
|
+ if( klientId && ns->absturzKlient( klientId ) )
|
|
klient->sende( "\1", 1 );
|
|
klient->sende( "\1", 1 );
|
|
else
|
|
else
|
|
klient->sende( "\0", 1 );
|
|
klient->sende( "\0", 1 );
|
|
@@ -576,7 +576,7 @@ void NSAKlient::errorZuKlient( const char *nachricht ) const // sendet eine Fehl
|
|
|
|
|
|
// Inhalt der NSKlient aus NewsServer.h
|
|
// Inhalt der NSKlient aus NewsServer.h
|
|
// Konstruktor
|
|
// Konstruktor
|
|
-NSKlient::NSKlient( SKlient * klient, NewsServer * ns )
|
|
|
|
|
|
+NSKlient::NSKlient( SKlient *klient, NewsServer *ns )
|
|
: Thread()
|
|
: Thread()
|
|
{
|
|
{
|
|
this->klient = klient;
|
|
this->klient = klient;
|
|
@@ -615,7 +615,7 @@ void NSKlient::thread()
|
|
switch( c )
|
|
switch( c )
|
|
{
|
|
{
|
|
case 1: // Klient identifikation
|
|
case 1: // Klient identifikation
|
|
- klient->getNachrichtEncrypted( (char *)& klientNummer, 4 );
|
|
|
|
|
|
+ klient->getNachrichtEncrypted( (char *)&klientNummer, 4 );
|
|
if( !ns->zDB()->proveKlient( klientNummer, ns->getId() ) )
|
|
if( !ns->zDB()->proveKlient( klientNummer, ns->getId() ) )
|
|
{
|
|
{
|
|
klientNummer = 0;
|
|
klientNummer = 0;
|
|
@@ -646,8 +646,8 @@ void NSKlient::thread()
|
|
if( 1 )
|
|
if( 1 )
|
|
{
|
|
{
|
|
int klientId = 0;
|
|
int klientId = 0;
|
|
- klient->getNachrichtEncrypted( (char *)& klientId, 4 );
|
|
|
|
- if( klientId &&ns->absturzKlient( klientId ) )
|
|
|
|
|
|
+ klient->getNachrichtEncrypted( (char *)&klientId, 4 );
|
|
|
|
+ if( klientId && ns->absturzKlient( klientId ) )
|
|
klient->sendeEncrypted( "\1", 1 );
|
|
klient->sendeEncrypted( "\1", 1 );
|
|
else
|
|
else
|
|
klient->sendeEncrypted( "\0", 1 );
|
|
klient->sendeEncrypted( "\0", 1 );
|
|
@@ -677,7 +677,7 @@ void NSKlient::thread()
|
|
{
|
|
{
|
|
klient->sendeEncrypted( "\1", 1 );
|
|
klient->sendeEncrypted( "\1", 1 );
|
|
unsigned char len = 0;
|
|
unsigned char len = 0;
|
|
- klient->getNachrichtEncrypted( (char *)& len, 1 );
|
|
|
|
|
|
+ klient->getNachrichtEncrypted( (char *)&len, 1 );
|
|
char *n = new char[ len + 1 ];
|
|
char *n = new char[ len + 1 ];
|
|
n[ (int)len ] = 0;
|
|
n[ (int)len ] = 0;
|
|
klient->getNachrichtEncrypted( n, len );
|
|
klient->getNachrichtEncrypted( n, len );
|
|
@@ -704,7 +704,7 @@ void NSKlient::thread()
|
|
i--;
|
|
i--;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- klient->sendeEncrypted( (char *)& dAnz, 4 );
|
|
|
|
|
|
+ klient->sendeEncrypted( (char *)&dAnz, 4 );
|
|
for( int i = 0; i < dAnz; i++ )
|
|
for( int i = 0; i < dAnz; i++ )
|
|
{
|
|
{
|
|
Text *pf = new Text( dat->zPfad()->getText() );
|
|
Text *pf = new Text( dat->zPfad()->getText() );
|
|
@@ -717,7 +717,7 @@ void NSKlient::thread()
|
|
klient->sendeEncrypted( &nl, 1 );
|
|
klient->sendeEncrypted( &nl, 1 );
|
|
klient->sendeEncrypted( list->z( i )->getText(), nl );
|
|
klient->sendeEncrypted( list->z( i )->getText(), nl );
|
|
__int64 gr = d->getSize();
|
|
__int64 gr = d->getSize();
|
|
- klient->sendeEncrypted( (char *)& gr, 8 );
|
|
|
|
|
|
+ klient->sendeEncrypted( (char *)&gr, 8 );
|
|
char *bytes = new char[ 2048 ];
|
|
char *bytes = new char[ 2048 ];
|
|
while( gr > 0 )
|
|
while( gr > 0 )
|
|
{
|
|
{
|