JIJOOOOOOOOOOO

This commit is contained in:
simio 2025-06-19 13:29:19 -03:00
parent 0a0bd116d5
commit 16388f3760
2 changed files with 42 additions and 29 deletions

View File

@ -18,7 +18,6 @@ Server::Server(int p_ws_port, int p_wss_port, QObject *parent) :
m_secure_port(p_wss_port),
m_player_count(0)
{
timer = new QTimer(this);
db_manager = new DBManager;
@ -34,6 +33,10 @@ Server::Server(int p_ws_port, int p_wss_port, QObject *parent) :
connect(this, &Server::logConnectionAttempt, logger, &ULogger::logConnectionAttempt);
AOPacket::registerPackets();
// Initialize both servers
server = new QWebSocketServer(QStringLiteral("Akashi"), QWebSocketServer::NonSecureMode, this);
secure_server = new QWebSocketServer(QStringLiteral("Akashi"), QWebSocketServer::SecureMode, this);
}
void Server::start()
@ -47,8 +50,10 @@ void Server::start()
bind_addr = QHostAddress(bind_ip);
if (bind_addr.protocol() != QAbstractSocket::IPv4Protocol && bind_addr.protocol() != QAbstractSocket::IPv6Protocol && bind_addr != QHostAddress::Any) {
qDebug() << bind_ip << "is an invalid IP address to listen on! Server not starting, check your config.";
return;
}
// Configure SSL for secure server
QSettings settings("config/ssl.ini", QSettings::IniFormat);
QString privateKeyPath = settings.value("SSL/privateKey").toString();
@ -60,42 +65,50 @@ void Server::start()
QFile keyFile(privateKeyPath);
if (!keyFile.open(QIODevice::ReadOnly)) {
qWarning() << "Unable to open private key file.";
return;
}
QSslKey privateKey(&keyFile, QSsl::Rsa);
keyFile.close();
else {
QSslKey privateKey(&keyFile, QSsl::Rsa);
keyFile.close();
QFile certFile(certificatePath);
if (!certFile.open(QIODevice::ReadOnly)) {
qWarning() << "Unable to open certificate file.";
return;
QFile certFile(certificatePath);
if (!certFile.open(QIODevice::ReadOnly)) {
qWarning() << "Unable to open certificate file.";
}
else {
QSslCertificate certificate(&certFile);
certFile.close();
QFile caFile(caCertificatePath);
if (caFile.open(QIODevice::ReadOnly)) {
QSslCertificate caCertificate(&caFile);
sslConfig.addCaCertificate(caCertificate);
caFile.close();
}
sslConfig.setPrivateKey(privateKey);
sslConfig.setLocalCertificate(certificate);
secure_server->setSslConfiguration(sslConfig);
}
}
QSslCertificate certificate(&certFile);
certFile.close();
QFile caFile(caCertificatePath);
if (caFile.open(QIODevice::ReadOnly)) {
QSslCertificate caCertificate(&caFile);
sslConfig.addCaCertificate(caCertificate);
caFile.close();
}
sslConfig.setPrivateKey(privateKey);
sslConfig.setLocalCertificate(certificate);
server = new QWebSocketServer(QStringLiteral("Akashi"), QWebSocketServer::SecureMode, this);
server->setSslConfiguration(sslConfig);
// Start non-secure server
if (!server->listen(bind_addr, m_port)) {
qDebug() << "Server error:" << server->errorString();
qDebug() << "Non-secure server error:" << server->errorString();
}
else {
connect(server, &QWebSocketServer::newConnection,
this, &Server::clientConnected);
qInfo() << "Server listening on" << server->serverPort();
qInfo() << "Non-secure server listening on" << server->serverPort();
}
// Start secure server
if (!secure_server->listen(bind_addr, m_secure_port)) {
qDebug() << "Secure server error:" << secure_server->errorString();
}
else {
connect(secure_server, &QWebSocketServer::newConnection,
this, &Server::clientConnected);
qInfo() << "Secure server listening on" << secure_server->serverPort();
}
// Construct modern advertiser if enabled in config
@ -108,7 +121,6 @@ void Server::start()
m_backgrounds = ConfigManager::backgrounds();
// Build our music manager.
MusicList l_musiclist = ConfigManager::musiclist();
music_manager = new MusicManager(ConfigManager::cdnList(), l_musiclist, ConfigManager::ordered_songs(), this);
connect(music_manager, &MusicManager::sendFMPacket, this, &Server::unicast);

View File

@ -408,6 +408,7 @@ class Server : public QObject
* @brief Listens for incoming websocket connections.
*/
QWebSocketServer *server;
QWebSocketServer *secure_server;
/**
* @brief Handles HTTP server advertising.