diff --git a/.gitignore b/.gitignore index c3cb03f201c..78202a7d730 100644 --- a/.gitignore +++ b/.gitignore @@ -130,3 +130,5 @@ interface/compiledResources # Act local GitHub Actions .secret +.kdev4/overte.kdev4 +overte.kdev4 diff --git a/assignment-client/src/main.cpp b/assignment-client/src/main.cpp index 7b4f12756d0..bcd678fcefe 100644 --- a/assignment-client/src/main.cpp +++ b/assignment-client/src/main.cpp @@ -11,19 +11,25 @@ #include #include +#include "SettingManager.h" +#include "SettingHelpers.h" #include "AssignmentClientApp.h" +#include #include int main(int argc, char* argv[]) { setupHifiApplication(BuildInfo::ASSIGNMENT_CLIENT_NAME); + //QVariantMap settingsToSet; + + Setting::init(); + AssignmentClientApp app(argc, argv); auto &ch = CrashHandler::getInstance(); ch.startMonitor(&app); - int acReturn = app.exec(); qDebug() << "assignment-client process" << app.applicationPid() << "exiting with status code" << acReturn; diff --git a/assignment-client/src/messages/MessagesMixer.cpp b/assignment-client/src/messages/MessagesMixer.cpp index 74efadf6e12..35cb5af3a48 100644 --- a/assignment-client/src/messages/MessagesMixer.cpp +++ b/assignment-client/src/messages/MessagesMixer.cpp @@ -123,6 +123,7 @@ void MessagesMixer::domainSettingsRequestComplete() { void MessagesMixer::parseDomainServerSettings(const QJsonObject& domainSettings) { commonParseSettingsObject(domainSettings); + qDebug() << "[configuration_dump]" << domainSettings; const QString MESSAGES_MIXER_SETTINGS_KEY = "messages_mixer"; QJsonObject messagesMixerGroupObject = domainSettings[MESSAGES_MIXER_SETTINGS_KEY].toObject(); diff --git a/domain-server/resources/describe-settings.json b/domain-server/resources/describe-settings.json index 98a3db16868..2e13c350d9f 100644 --- a/domain-server/resources/describe-settings.json +++ b/domain-server/resources/describe-settings.json @@ -2099,4 +2099,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 6af531cdd36..6b52333adc4 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -404,7 +404,7 @@ DomainServer::DomainServer(int argc, char* argv[]) : initializeMetadataExporter(); } -void DomainServer::parseCommandLine(int argc, char* argv[]) { +void DomainServer::parseCommandLine(int argc, char* argv[], QVariantMap &settingsToSet) { QCommandLineParser parser; parser.setApplicationDescription("Overte Domain Server"); const QCommandLineOption versionOption = parser.addVersionOption(); @@ -428,6 +428,9 @@ void DomainServer::parseCommandLine(int argc, char* argv[]) { const QCommandLineOption logOption("logOptions", "Logging options, comma separated: color,nocolor,process_id,thread_id,milliseconds,keep_repeats,journald,nojournald", "options"); parser.addOption(logOption); + const QCommandLineOption SetMetaverseverseURL("mv", "Set your metaverse api (Default: https://mv.overte.org/server)", "DIRECTORY_SERVER_HOSTNAME"); + parser.addOption(SetMetaverseverseURL); + const QCommandLineOption forceCrashReportingOption("forceCrashReporting", "Force crash reporting to initialize."); parser.addOption(forceCrashReportingOption); @@ -505,6 +508,9 @@ void DomainServer::parseCommandLine(int argc, char* argv[]) { } } + if(parser.isSet(SetMetaverseverseURL)) { + settingsToSet.insert("private/selectedMetaverseURL", parser.value(SetMetaverseverseURL)); + } if (parser.isSet(forceCrashReportingOption)) { _forceCrashReporting = true; } diff --git a/domain-server/src/DomainServer.h b/domain-server/src/DomainServer.h index a22671916be..408a317e5b3 100644 --- a/domain-server/src/DomainServer.h +++ b/domain-server/src/DomainServer.h @@ -64,7 +64,7 @@ class DomainServer : public QCoreApplication, public HTTPSRequestHandler { DomainServer(int argc, char* argv[]); ~DomainServer(); - static void parseCommandLine(int argc, char* argv[]); + static void parseCommandLine(int argc, char* argv[], QVariantMap &settingsToSet); enum DomainType { NonMetaverse, diff --git a/domain-server/src/main.cpp b/domain-server/src/main.cpp index ef8b68d1a16..dea3548e450 100644 --- a/domain-server/src/main.cpp +++ b/domain-server/src/main.cpp @@ -27,10 +27,17 @@ int main(int argc, char* argv[]) { setupHifiApplication(BuildInfo::DOMAIN_SERVER_NAME); - DomainServer::parseCommandLine(argc, argv); + QVariantMap settingsToSet; + + DomainServer::parseCommandLine(argc, argv, settingsToSet); Setting::init(); + for(auto i = settingsToSet.begin(); i != settingsToSet.end(); i++) { + Setting::Handle settings(i.key(), i.value()); + settings.set(i.value()); + } + int currentExitCode = 0; // use a do-while to handle domain-server restart diff --git a/libraries/networking/src/DomainHandler.h b/libraries/networking/src/DomainHandler.h index ad17757d804..03e62871e6b 100644 --- a/libraries/networking/src/DomainHandler.h +++ b/libraries/networking/src/DomainHandler.h @@ -296,6 +296,7 @@ private slots: QUuid _uuid; Node::LocalID _localID; QUrl _domainURL; + QUrl _metaverseURL; //TODO: This needs to be changed at some point. QUrl _errorDomainURL; SockAddr _sockAddr; QUuid _assignmentUUID; diff --git a/libraries/networking/src/MetaverseAPI.cpp b/libraries/networking/src/MetaverseAPI.cpp index cca7a6125dd..6bdcc5f63e9 100644 --- a/libraries/networking/src/MetaverseAPI.cpp +++ b/libraries/networking/src/MetaverseAPI.cpp @@ -30,9 +30,11 @@ namespace MetaverseAPI { const QString HIFI_METAVERSE_URL_ENV = "HIFI_METAVERSE_URL"; if (QProcessEnvironment::systemEnvironment().contains(HIFI_METAVERSE_URL_ENV)) { + qDebug() << "[metaverseAPI_DUMP - HIFI_METAVERSE_URL_ENV]" << QUrl(QProcessEnvironment::systemEnvironment().value(HIFI_METAVERSE_URL_ENV));; return QUrl(QProcessEnvironment::systemEnvironment().value(HIFI_METAVERSE_URL_ENV)); } + qDebug() << "[metaverseAPI_DUMP - selectedMetaverseURL]" << selectedMetaverseURL.toString(); return selectedMetaverseURL; }; diff --git a/libraries/networking/src/ThreadedAssignment.cpp b/libraries/networking/src/ThreadedAssignment.cpp index e680b22fdca..79a1707f0af 100644 --- a/libraries/networking/src/ThreadedAssignment.cpp +++ b/libraries/networking/src/ThreadedAssignment.cpp @@ -104,6 +104,37 @@ void ThreadedAssignment::commonInit(const QString& targetName, NodeType_t nodeTy // stop sending stats if we disconnect connect(&nodeList->getDomainHandler(), &DomainHandler::disconnectedFromDomain, &_statsTimer, &QTimer::stop); + + // Parsing extra settings to assignment client to update the directory server + connect(&nodeList->getDomainHandler(), &DomainHandler::settingsReceived, this, &ThreadedAssignment::parseCommonServerSettings); +} + +void ThreadedAssignment::parseCommonServerSettings(){ + + auto nodeList = DependencyManager::get(); + + const QJsonObject& domainSettings = nodeList->getDomainHandler().getSettingsObject(); + + Setting::Handle selectedMetaverseURLSetting("private/selectedMetaverseURL", + NetworkingConstants::METAVERSE_SERVER_URL_STABLE); + + //const QString METAVERSE_SETTINGS_KEY = "metaverse"; + const QString METAVERSE_SETTINGS_KEY = "private"; + QJsonObject metaverseObject = domainSettings[METAVERSE_SETTINGS_KEY].toObject(); + + qDebug() << "[configuration_dump]" << domainSettings; + //QJsonObject metaverseObject = domainSettings.begin()->toObject(); + + qDebug() << "[METAVERSEOBJ_DUMP]" << metaverseObject; + + const QString DIRECTORY_KEY = "selectedMetaverseURL"; + QJsonValue directoryURLValue = metaverseObject.value(DIRECTORY_KEY); + + qDebug() << "[ThreadedAssignment_dump]" << directoryURLValue.toString(); + + if(directoryURLValue.toString() != QString("")) { + selectedMetaverseURLSetting.set(directoryURLValue.toString()); + } } void ThreadedAssignment::addPacketStatsAndSendStatsPacket(QJsonObject statsObject) { diff --git a/libraries/networking/src/ThreadedAssignment.h b/libraries/networking/src/ThreadedAssignment.h index 12096cf23f4..0fa736354a4 100644 --- a/libraries/networking/src/ThreadedAssignment.h +++ b/libraries/networking/src/ThreadedAssignment.h @@ -42,6 +42,7 @@ public slots: protected: void commonInit(const QString& targetName, NodeType_t nodeType); + void parseCommonServerSettings(); void setFinished(bool isFinished); bool _isFinished;