Füge SSLServer-Klasse hinzu und verbessere SSL/TLS-Unterstützung
- Integriere die `SSLServer`-Klasse zur Handhabung von SSL/TLS-Verbindungen. - Aktualisiere `main.cpp`, um die SSL-Server-Instanz zu erstellen und zu starten, wenn SSL aktiviert ist. - Modifiziere die `handleWebSocketMessage`-Methode in `ssl_server.cpp`, um die Benutzerverwaltung zu optimieren. - Ergänze die `generateToken`-Methode in `base.cpp`, um Token für Benutzer zu generieren. - Aktualisiere die Header-Dateien, um neue Methoden und Klassen zu berücksichtigen.
This commit is contained in:
@@ -212,10 +212,13 @@ void SSLServer::handleWebSocketMessage(struct lws *wsi, const std::string& messa
|
||||
bool added = false;
|
||||
for (auto &roomObj: _rooms) {
|
||||
if (roomObj->name() == room) {
|
||||
// Create ChatUser and add to room
|
||||
auto chatUser = std::make_shared<ChatUser>(name, color, token, lws_get_socket_fd(wsi));
|
||||
// Add user to room (ChatUser will be created by addUser)
|
||||
if (roomObj->addUser(name, color, password, lws_get_socket_fd(wsi))) {
|
||||
_users[token] = chatUser;
|
||||
// Find the created ChatUser
|
||||
auto chatUser = roomObj->findUserByName(name);
|
||||
if (chatUser) {
|
||||
_users[token] = chatUser;
|
||||
}
|
||||
added = true;
|
||||
break;
|
||||
}
|
||||
@@ -244,7 +247,7 @@ void SSLServer::handleWebSocketMessage(struct lws *wsi, const std::string& messa
|
||||
// Process message through room
|
||||
for (auto &room: _rooms) {
|
||||
if (room->userIsInRoom(user->name())) {
|
||||
room->addMessage(user, msg);
|
||||
room->addMessage(ChatUser::MsgType::message, msg, user->name(), user->color());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -310,13 +313,13 @@ void SSLServer::broadcastToRoom(const std::string& roomName, const std::string&
|
||||
|
||||
void SSLServer::createRooms() {
|
||||
// Load rooms from database or config
|
||||
// This is a simplified version - would need to be expanded
|
||||
Json::Value roomList = _config->group("rooms");
|
||||
|
||||
if (roomList.isArray()) {
|
||||
for (const auto& room : roomList) {
|
||||
// Create room objects
|
||||
// This would need the actual ChatRoom constructor
|
||||
// Create room objects using the same logic as the main server
|
||||
auto newRoom = std::make_shared<ChatRoom>(nullptr, room); // parent will be set later
|
||||
_rooms.push_back(newRoom);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,6 +50,7 @@ public:
|
||||
|
||||
// Message handling
|
||||
void sendMessage(int socket, const std::string& message);
|
||||
void sendMessage(int socket, const Json::Value& message);
|
||||
void broadcastToRoom(const std::string& roomName, const std::string& message);
|
||||
|
||||
// WebSocket callbacks
|
||||
|
||||
Reference in New Issue
Block a user