bool luks::mount(Report& report, const QString& deviceNode, const QString& mountPoint) { if (!m_isCryptOpen) { qWarning() << "Cannot mount device" << deviceNode << "before decrypting it first."; return false; } if (m_isMounted) { qWarning() << "Cannot mount device" << deviceNode << "because it's already mounted."; return false; } Q_ASSERT(m_innerFs); if (mapperName().isEmpty()) return false; if (m_innerFs->canMount(mapperName(), mountPoint)) { if (m_innerFs->mount(report, mapperName(), mountPoint)) { m_isMounted = true; const KDiskFreeSpaceInfo freeSpaceInfo = KDiskFreeSpaceInfo::freeSpaceInfo(mountPoint); if (freeSpaceInfo.isValid() && mountPoint != QString()) setSectorsUsed((freeSpaceInfo.used() + payloadOffset()) / m_logicalSectorSize); return true; } } else { ExternalCommand mountCmd( report, QStringLiteral("mount"), { QStringLiteral("--verbose"), mapperName(), mountPoint }); if (mountCmd.run() && mountCmd.exitCode() == 0) { m_isMounted = true; return true; } } return false; }
bool PCloudApp::userLogged(binresult *userinfo, QByteArray &err, bool remember){ if (isMounted()){ setUser(userinfo, remember); return true; } else{ #ifdef Q_OS_WIN if (find_res(userinfo, "auth")){ if (!settings->isSet("path") || !settings->get("path").toUtf8()[0]){ QString path("a:"); path[0] = getFirstFreeDevice(); settings->set("path", path); } QString auth(find_res(userinfo, "auth")->str); if (remember){ settings->set("auth", auth); this->authentication = auth; } else settings->set("auth", ""); if (mountCmd(atol(settings->get("cachesize").toUtf8()), auth.toUtf8(), settings->geti("usessl"), settings->get("path").toUtf8()[0], err)){ Sleep(5*1000); setUser(userinfo, remember); return true; } return false; } else { err = "Invalid E-mail and Password combination."; return false; } #else QProcess process; QStringList params; #ifdef Q_OS_MAC params.append("-o"); params.append("volname=pCloud"); // Adding -o local may or may not be a good idea params.append("-o"); params.append("local"); #endif params.append("--auth"); params.append(find_res(userinfo, "auth")->str); if (settings->geti("usessl")) params.append("--ssl"); params.append("--cache"); params.append(settings->get("cachesize")); params.append(settings->get("path")); #ifdef Q_OS_MAC process.start("/usr/local/bin/mount.pfs", params); #else process.start("mount.pfs", params); #endif if (!process.waitForFinished()){ err="Error mounting filesystem."; return false; } if (process.exitCode()==0){ setUser(userinfo, remember); return true; } else { err=process.readAllStandardError(); return false; } #endif } }