Server.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. #ifndef Server_H
  2. #define Server_H
  3. #include "Network.h"
  4. #ifndef HEADER_OPENSSL_TYPES_H
  5. struct SSL_CTX;
  6. struct SSL;
  7. #endif
  8. namespace Framework
  9. {
  10. namespace Encryption
  11. {
  12. class Key;
  13. }
  14. class Text;
  15. }
  16. using namespace Framework;
  17. namespace Network
  18. {
  19. class Server; // aus dieser Datei
  20. class SKlient; // aus dieser Datei
  21. class Server
  22. {
  23. private:
  24. SOCKET sock;
  25. SOCKADDR_IN addresse;
  26. int klients;
  27. int ref;
  28. public:
  29. // Konstruktor
  30. __declspec( dllexport ) Server();
  31. // Destruktor
  32. __declspec( dllexport ) ~Server();
  33. // nicht constant
  34. __declspec( dllexport ) bool verbinde( unsigned short port, int warteschlangenLen ); // Öffnet das Socket
  35. __declspec( dllexport ) SKlient *getKlient(); // nimmt Klient an
  36. __declspec( dllexport ) int getKlients( bool reset ); // gibt die Anzahl der Klients zurück
  37. __declspec( dllexport ) bool trenne(); // beendet den Server
  38. // constant
  39. __declspec( dllexport ) unsigned short getPort() const; // gibt den Port zurück
  40. // Reference Counting
  41. __declspec( dllexport ) Server *getThis();
  42. __declspec( dllexport ) Server *release();
  43. };
  44. class SKlient
  45. {
  46. private:
  47. SOCKET sock;
  48. sockaddr_in clientAddr;
  49. Encryption::Key *sendeKey;
  50. Encryption::Key *empfangKey;
  51. int downStreamBytes;
  52. int upStreamBytes;
  53. int ref;
  54. public:
  55. // Konstruktor
  56. __declspec( dllexport ) SKlient( sockaddr_in client, SOCKET sock );
  57. // Destruktor
  58. __declspec( dllexport ) ~SKlient();
  59. // nicht constant
  60. __declspec( dllexport ) void setSendeKeyZ( Encryption::Key *key ); // Setzt den Schlüssel fürs Senden
  61. __declspec( dllexport ) void setEmpfangKeyZ( Encryption::Key *key ); // Setzt den Schlüssel fürs Empfangen
  62. __declspec( dllexport ) void setSendeKey( char *key, int len ); // Setzt den Schlüssel fürs Senden
  63. __declspec( dllexport ) void setEmpfangKey( char *key, int len ); // Setzt den Schlüssel fürs Empfangen
  64. __declspec( dllexport ) bool sende( const char *nachricht, int len ); // sendet zum Klient
  65. __declspec( dllexport ) bool getNachricht( char *nachricht, int len ); // empfängt Nachricht von Klient
  66. __declspec( dllexport ) bool sendeEncrypted( const char *nachricht, int len ); // sendet zum Server
  67. __declspec( dllexport ) bool getNachrichtEncrypted( char *nachricht, int len ); // empfängt Nachricht
  68. __declspec( dllexport ) int getDownloadBytes( bool reset ); // gibt die anzahl von empfangen bytes zurück
  69. __declspec( dllexport ) int getUploadBytes( bool reset ); // gibt die anzahl von versendeter bytes zurück
  70. __declspec( dllexport ) bool trenne(); // trennt die Verbindung zum Klient
  71. // constant
  72. __declspec( dllexport ) unsigned short getPort() const; // gibt den Port zurück
  73. __declspec( dllexport ) const char *getIp() const; // gibt die Ip des Klients zurück
  74. // Reference Counting
  75. __declspec( dllexport ) SKlient *getThis();
  76. __declspec( dllexport ) SKlient *release();
  77. };
  78. class SSLSKlient;
  79. class SSLServer
  80. {
  81. private:
  82. SOCKET s;
  83. SOCKADDR_IN addr;
  84. SSL_CTX *ctx;
  85. Text *passw;
  86. int klients;
  87. int ref;
  88. public:
  89. // Konstruktor
  90. __declspec( dllexport ) SSLServer();
  91. // Destruktor
  92. __declspec( dllexport ) ~SSLServer();
  93. // nicht constant
  94. // Setzt den Pfad zur Datei, in dem das Certifikat gespeichert ist
  95. __declspec( dllexport ) bool setCertificateFile( const char *file );
  96. // Setzt den Pfad zur Datei, in dem der private Schlüssel gespeichert ist
  97. __declspec( dllexport ) bool setPrivateKeyFile( const char *file );
  98. // setzt das passwort des private keys (muss vor setPrivateKeyFile aufgerufen werden)
  99. __declspec( dllexport ) void setPrivateKeyPassword( const char *password );
  100. // Öffnet das Socket
  101. __declspec( dllexport ) bool verbinde( unsigned short port, int warteschlangenLen );
  102. // nimmt Klient an
  103. __declspec( dllexport ) SSLSKlient *getKlient();
  104. // gibt die Anzahl der Klients zurück
  105. __declspec( dllexport ) int getKlients( bool reset );
  106. // beendet den Server
  107. __declspec( dllexport ) bool trenne();
  108. // constant
  109. // gibt den Port zurück
  110. __declspec( dllexport ) unsigned short getPort() const;
  111. // giebt 1 zurück, falls der Server verbunden ist
  112. __declspec( dllexport ) bool isConnected() const;
  113. // Reference Counting
  114. __declspec( dllexport ) SSLServer *getThis();
  115. __declspec( dllexport ) SSLServer *release();
  116. };
  117. class SSLSKlient
  118. {
  119. private:
  120. SOCKET s;
  121. SSL* ssl;
  122. sockaddr_in clientAddr;
  123. int downStreamBytes;
  124. int upStreamBytes;
  125. int ref;
  126. public:
  127. // Konstruktor
  128. __declspec( dllexport ) SSLSKlient( sockaddr_in client, SSL *ssl, SOCKET s );
  129. // Destruktor
  130. __declspec( dllexport ) ~SSLSKlient();
  131. // nicht constant
  132. __declspec( dllexport ) bool sende( const char *nachricht, int len ); // sendet zum Klient
  133. __declspec( dllexport ) bool getNachricht( char *nachricht, int len ); // empfängt Nachricht von Klient
  134. __declspec( dllexport ) int getDownloadBytes( bool reset ); // gibt die anzahl von empfangen bytes zurück
  135. __declspec( dllexport ) int getUploadBytes( bool reset ); // gibt die anzahl von versendeter bytes zurück
  136. __declspec( dllexport ) bool trenne(); // trennt die Verbindung zum Klient
  137. // constant
  138. __declspec( dllexport ) unsigned short getPort() const; // gibt den Port zurück
  139. __declspec( dllexport ) const char *getIp() const; // gibt die Ip des Klients zurück
  140. // Reference Counting
  141. __declspec( dllexport ) SSLSKlient *getThis();
  142. __declspec( dllexport ) SSLSKlient *release();
  143. };
  144. }
  145. #endif