loading directly into a serverless domain works. user will have edit permissions

This commit is contained in:
Seth Alves 2018-02-21 18:21:45 -08:00
parent f44749387a
commit d27cbac3f8
4 changed files with 43 additions and 26 deletions

View file

@ -1048,7 +1048,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
const DomainHandler& domainHandler = nodeList->getDomainHandler();
connect(&domainHandler, SIGNAL(hostnameChanged(const QString&)), SLOT(domainChanged(const QString&)));
connect(&domainHandler, SIGNAL(serverlessDomainChanged(const QString&)), SLOT(domainChanged(const QString&)));
connect(&domainHandler, SIGNAL(serverlessDomainChanged(QUrl)), SLOT(loadServerlessDomain(QUrl)));
connect(&domainHandler, SIGNAL(resetting()), SLOT(resettingDomain()));
connect(&domainHandler, SIGNAL(connectedToDomain(const QString&, const QUrl&)), SLOT(updateWindowTitle()));
connect(&domainHandler, SIGNAL(disconnectedFromDomain()), SLOT(updateWindowTitle()));
@ -1109,7 +1109,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
connect(this, &QCoreApplication::aboutToQuit, addressManager.data(), &AddressManager::storeCurrentAddress);
connect(addressManager.data(), &AddressManager::setServersEnabled, this, &Application::setServersEnabled);
connect(addressManager.data(), &AddressManager::loadServerlessDomain, this, &Application::loadServerlessDomain);
connect(this, &Application::activeDisplayPluginChanged, this, &Application::updateThreadPoolCount);
connect(this, &Application::activeDisplayPluginChanged, this, [](){
@ -2978,25 +2977,25 @@ void Application::handleSandboxStatus(QNetworkReply* reply) {
QString sentTo;
// If this is a first run we short-circuit the address passed in
if (firstRun.get()) {
showHelp();
if (sandboxIsRunning) {
qCDebug(interfaceapp) << "Home sandbox appears to be running, going to Home.";
DependencyManager::get<AddressManager>()->goToLocalSandbox();
sentTo = SENT_TO_SANDBOX;
} else {
qCDebug(interfaceapp) << "Home sandbox does not appear to be running, going to Entry.";
DependencyManager::get<AddressManager>()->goToEntry();
sentTo = SENT_TO_ENTRY;
}
firstRun.set(false);
// If this is a first run we short-circuit the address passed in
if (firstRun.get()) {
showHelp();
if (sandboxIsRunning) {
qCDebug(interfaceapp) << "Home sandbox appears to be running, going to Home.";
DependencyManager::get<AddressManager>()->goToLocalSandbox();
sentTo = SENT_TO_SANDBOX;
} else {
qCDebug(interfaceapp) << "Not first run... going to" << qPrintable(addressLookupString.isEmpty() ? QString("previous location") : addressLookupString);
DependencyManager::get<AddressManager>()->loadSettings(addressLookupString);
sentTo = SENT_TO_PREVIOUS_LOCATION;
qCDebug(interfaceapp) << "Home sandbox does not appear to be running, going to Entry.";
DependencyManager::get<AddressManager>()->goToEntry();
sentTo = SENT_TO_ENTRY;
}
firstRun.set(false);
} else {
qCDebug(interfaceapp) << "Not first run... going to" << qPrintable(addressLookupString.isEmpty() ? QString("previous location") : addressLookupString);
DependencyManager::get<AddressManager>()->loadSettings(addressLookupString);
sentTo = SENT_TO_PREVIOUS_LOCATION;
}
UserActivityLogger::getInstance().logAction("startup_sent_to", {
{ "sent_to", sentTo },
@ -3053,11 +3052,23 @@ void Application::loadServerlessDomain(QUrl domainURL) {
return;
}
auto addressManager = DependencyManager::get<AddressManager>();
addressManager->handleLookupString(DOMAIN_SPAWNING_POINT);
qDebug() << "QQQQ loadServerlessDomain" << domainURL.toString();
clearDomainOctreeDetails();
_entityClipboard->eraseAllOctreeElements();
if (domainURL.isEmpty()) {
return;
}
auto addressManager = DependencyManager::get<AddressManager>();
addressManager->handleLookupString(DOMAIN_SPAWNING_POINT);
// there is no domain-server to tell us our permissions, so enable all
NodePermissions permissions;
permissions.setAll(true);
DependencyManager::get<NodeList>()->setPermissions(permissions);
getEntities()->getTree()->setIsServerlessMode(true);
getEntities()->getTree()->eraseAllOctreeElements();
if (importEntities(domainURL.toString())) {
@ -5774,6 +5785,7 @@ void Application::clearDomainAvatars() {
}
void Application::domainChanged(const QString& domainHostname) {
qDebug() << "QQQQ Application::domainChanged" << domainHostname;
clearDomainOctreeDetails();
getEntities()->getTree()->setIsServerlessMode(isServerlessMode());
updateWindowTitle();

View file

@ -306,7 +306,6 @@ bool AddressManager::handleUrl(const QUrl& lookupUrl, LookupTrigger trigger) {
emit setServersEnabled(false);
setDomainInfo(domainUrl, QString(), 0, trigger);
DependencyManager::get<NodeList>()->getDomainHandler().setIsConnected(true);
emit loadServerlessDomain(domainUrl);
emit lookupResultsFinished();
return true;
}
@ -405,6 +404,8 @@ void AddressManager::goToAddressFromObject(const QVariantMap& dataObject, const
QString domainIDString = domainObject[DOMAIN_ID_KEY].toString();
QUuid domainID(domainIDString);
qDebug() << "QQQQ AddressManager::goToAddressFromObject";
if (domainObject.contains(DOMAIN_NETWORK_ADDRESS_KEY)) {
QString domainHostname = domainObject[DOMAIN_NETWORK_ADDRESS_KEY].toString();
@ -756,7 +757,7 @@ bool AddressManager::setDomainInfo(const QUrl& serverlessDomainURL,
_serverlessDomainURL = serverlessDomainURL;
if (!serverlessDomainURL.isEmpty()) {
qCDebug(networking) << "Possible domain change required to serverless domain: " << serverlessDomainURL;
qCDebug(networking) << "Possible domain change required to serverless domain: " << serverlessDomainURL.toString();
} else {
qCDebug(networking) << "Possible domain change required to connect to domain at" << hostname << "on" << port;
}

View file

@ -156,6 +156,8 @@ void DomainHandler::setSocketAndID(const QUrl& serverlessDomainURL,
_pendingDomainID = domainID;
qDebug() << "QQQQ DomainHandler::setSocketAndID " << serverlessDomainURL << hostname << port;
if (serverlessDomainURL != _serverlessDomainURL || hostname != _hostname || _sockAddr.getPort() != port) {
// re-set the domain info so that auth information is reloaded
hardReset();
@ -165,7 +167,8 @@ void DomainHandler::setSocketAndID(const QUrl& serverlessDomainURL,
if (_serverlessDomainURL != QUrl()) {
setIsConnected(true);
}
emit serverlessDomainChanged(_serverlessDomainURL.toString());
qDebug() << "QQQQ serverlessDomainChanged";
emit serverlessDomainChanged(_serverlessDomainURL);
}
if (hostname != _hostname) {
@ -184,6 +187,7 @@ void DomainHandler::setSocketAndID(const QUrl& serverlessDomainURL,
UserActivityLogger::getInstance().changedDomain(_hostname);
}
qDebug() << "QQQQ hostnameChanged";
emit hostnameChanged(_hostname);
}
@ -200,7 +204,7 @@ void DomainHandler::setIceServerHostnameAndID(const QString& iceServerHostname,
if (_serverlessDomainURL != QUrl()) {
_serverlessDomainURL = QUrl();
emit serverlessDomainChanged("");
emit serverlessDomainChanged(QUrl());
}
if (_iceServerSockAddr.getAddress().toString() != iceServerHostname || id != _pendingDomainID) {

View file

@ -157,7 +157,7 @@ private slots:
signals:
void hostnameChanged(const QString& hostname);
void serverlessDomainChanged(const QString& hostname);
void serverlessDomainChanged(QUrl serverlessDomainURL);
// NOTE: the emission of completedSocketDiscovery does not mean a connection to DS is established
// It means that, either from DNS lookup or ICE, we think we have a socket we can talk to DS on