mirror of
https://github.com/overte-org/overte.git
synced 2025-07-28 21:10:24 +02:00
Add WebRTC on/off switch to domain server settings
This commit is contained in:
parent
2971dd6185
commit
eb21eb3f38
4 changed files with 37 additions and 11 deletions
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": 2.5,
|
"version": 2.6,
|
||||||
"settings": [
|
"settings": [
|
||||||
{
|
{
|
||||||
"name": "metaverse",
|
"name": "metaverse",
|
||||||
|
@ -73,6 +73,20 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "webrtc",
|
||||||
|
"label": "Networking / WebRTC",
|
||||||
|
"settings": [
|
||||||
|
{
|
||||||
|
"name": "enable_webrtc",
|
||||||
|
"label": "Enable WebRTC Client Connections",
|
||||||
|
"help": "Allow web clients to connect over WebRTC data channels.",
|
||||||
|
"type": "checkbox",
|
||||||
|
"default": false,
|
||||||
|
"advanced": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "authentication",
|
"name": "authentication",
|
||||||
"label": "Networking / WordPress OAuth2",
|
"label": "Networking / WordPress OAuth2",
|
||||||
|
|
|
@ -196,10 +196,6 @@ DomainServer::DomainServer(int argc, char* argv[]) :
|
||||||
_gatekeeper(this),
|
_gatekeeper(this),
|
||||||
_httpManager(QHostAddress::AnyIPv4, DOMAIN_SERVER_HTTP_PORT,
|
_httpManager(QHostAddress::AnyIPv4, DOMAIN_SERVER_HTTP_PORT,
|
||||||
QString("%1/resources/web/").arg(QCoreApplication::applicationDirPath()), this)
|
QString("%1/resources/web/").arg(QCoreApplication::applicationDirPath()), this)
|
||||||
#if defined(WEBRTC_DATA_CHANNELS)
|
|
||||||
,
|
|
||||||
_webrtcSignalingServer(this)
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
if (_parentPID != -1) {
|
if (_parentPID != -1) {
|
||||||
watchParentProcess(_parentPID);
|
watchParentProcess(_parentPID);
|
||||||
|
@ -275,6 +271,17 @@ DomainServer::DomainServer(int argc, char* argv[]) :
|
||||||
|
|
||||||
_settingsManager.apiRefreshGroupInformation();
|
_settingsManager.apiRefreshGroupInformation();
|
||||||
|
|
||||||
|
#if defined(WEBRTC_DATA_CHANNELS)
|
||||||
|
const QString WEBRTC_ENABLE = "webrtc.enable_webrtc";
|
||||||
|
bool isWebRTCEnabled = _settingsManager.valueForKeyPath(WEBRTC_ENABLE).toBool();
|
||||||
|
qDebug() << "WebRTC enabled:" << isWebRTCEnabled;
|
||||||
|
// The domain server's WebRTC signaling server is used by the domain server and the assignment clients, so disabling it
|
||||||
|
// disables WebRTC for the server as a whole.
|
||||||
|
if (isWebRTCEnabled) {
|
||||||
|
_webrtcSignalingServer.reset(new WebRTCSignalingServer(this));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
setupNodeListAndAssignments();
|
setupNodeListAndAssignments();
|
||||||
|
|
||||||
updateReplicatedNodes();
|
updateReplicatedNodes();
|
||||||
|
@ -282,7 +289,9 @@ DomainServer::DomainServer(int argc, char* argv[]) :
|
||||||
updateUpstreamNodes();
|
updateUpstreamNodes();
|
||||||
|
|
||||||
#if defined(WEBRTC_DATA_CHANNELS)
|
#if defined(WEBRTC_DATA_CHANNELS)
|
||||||
|
if (isWebRTCEnabled) {
|
||||||
setUpWebRTCSignalingServer();
|
setUpWebRTCSignalingServer();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (_type != NonMetaverse) {
|
if (_type != NonMetaverse) {
|
||||||
|
@ -889,7 +898,7 @@ void DomainServer::setupNodeListAndAssignments() {
|
||||||
// Sets up the WebRTC signaling server that's hosted by the domain server.
|
// Sets up the WebRTC signaling server that's hosted by the domain server.
|
||||||
void DomainServer::setUpWebRTCSignalingServer() {
|
void DomainServer::setUpWebRTCSignalingServer() {
|
||||||
// Bind the WebRTC signaling server's WebSocket to its port.
|
// Bind the WebRTC signaling server's WebSocket to its port.
|
||||||
bool isBound = _webrtcSignalingServer.bind(QHostAddress::AnyIPv4, DEFAULT_DOMAIN_SERVER_WS_PORT);
|
bool isBound = _webrtcSignalingServer->bind(QHostAddress::AnyIPv4, DEFAULT_DOMAIN_SERVER_WS_PORT);
|
||||||
if (!isBound) {
|
if (!isBound) {
|
||||||
qWarning() << "WebRTC signaling server not bound to port. WebRTC connections are not supported.";
|
qWarning() << "WebRTC signaling server not bound to port. WebRTC connections are not supported.";
|
||||||
return;
|
return;
|
||||||
|
@ -898,13 +907,14 @@ void DomainServer::setUpWebRTCSignalingServer() {
|
||||||
auto limitedNodeList = DependencyManager::get<LimitedNodeList>();
|
auto limitedNodeList = DependencyManager::get<LimitedNodeList>();
|
||||||
|
|
||||||
// Route inbound WebRTC signaling messages received from user clients.
|
// Route inbound WebRTC signaling messages received from user clients.
|
||||||
connect(&_webrtcSignalingServer, &WebRTCSignalingServer::messageReceived,
|
connect(_webrtcSignalingServer.get(), &WebRTCSignalingServer::messageReceived,
|
||||||
this, &DomainServer::routeWebRTCSignalingMessage);
|
this, &DomainServer::routeWebRTCSignalingMessage);
|
||||||
|
|
||||||
// Route domain server signaling messages.
|
// Route domain server signaling messages.
|
||||||
auto webrtcSocket = limitedNodeList->getWebRTCSocket();
|
auto webrtcSocket = limitedNodeList->getWebRTCSocket();
|
||||||
connect(this, &DomainServer::webrtcSignalingMessageForDomainServer, webrtcSocket, &WebRTCSocket::onSignalingMessage);
|
connect(this, &DomainServer::webrtcSignalingMessageForDomainServer, webrtcSocket, &WebRTCSocket::onSignalingMessage);
|
||||||
connect(webrtcSocket, &WebRTCSocket::sendSignalingMessage, &_webrtcSignalingServer, &WebRTCSignalingServer::sendMessage);
|
connect(webrtcSocket, &WebRTCSocket::sendSignalingMessage,
|
||||||
|
_webrtcSignalingServer.get(), &WebRTCSignalingServer::sendMessage);
|
||||||
|
|
||||||
// Forward signaling messages received from assignment clients to user client.
|
// Forward signaling messages received from assignment clients to user client.
|
||||||
PacketReceiver& packetReceiver = limitedNodeList->getPacketReceiver();
|
PacketReceiver& packetReceiver = limitedNodeList->getPacketReceiver();
|
||||||
|
@ -912,7 +922,7 @@ void DomainServer::setUpWebRTCSignalingServer() {
|
||||||
PacketReceiver::makeUnsourcedListenerReference<DomainServer>(this,
|
PacketReceiver::makeUnsourcedListenerReference<DomainServer>(this,
|
||||||
&DomainServer::forwardAssignmentClientSignalingMessageToUserClient));
|
&DomainServer::forwardAssignmentClientSignalingMessageToUserClient));
|
||||||
connect(this, &DomainServer::webrtcSignalingMessageForUserClient,
|
connect(this, &DomainServer::webrtcSignalingMessageForUserClient,
|
||||||
&_webrtcSignalingServer, &WebRTCSignalingServer::sendMessage);
|
_webrtcSignalingServer.get(), &WebRTCSignalingServer::sendMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Routes an inbound WebRTC signaling message received from a client app to the appropriate recipient.
|
// Routes an inbound WebRTC signaling message received from a client app to the appropriate recipient.
|
||||||
|
|
|
@ -333,7 +333,7 @@ private:
|
||||||
QThread _assetClientThread;
|
QThread _assetClientThread;
|
||||||
|
|
||||||
#if defined(WEBRTC_DATA_CHANNELS)
|
#if defined(WEBRTC_DATA_CHANNELS)
|
||||||
WebRTCSignalingServer _webrtcSignalingServer;
|
std::unique_ptr<WebRTCSignalingServer> _webrtcSignalingServer { nullptr };
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -551,6 +551,8 @@ void DomainServerSettingsManager::setupConfigMap(const QString& userConfigFilena
|
||||||
packPermissions();
|
packPermissions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// No migration needed to version 2.6.
|
||||||
|
|
||||||
// write the current description version to our settings
|
// write the current description version to our settings
|
||||||
*versionVariant = _descriptionVersion;
|
*versionVariant = _descriptionVersion;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue