Preliminary LUKS create support.
This commit is contained in:
parent
1aff54c047
commit
1b79099760
|
@ -67,6 +67,7 @@ luks::~luks()
|
||||||
|
|
||||||
void luks::init()
|
void luks::init()
|
||||||
{
|
{
|
||||||
|
m_Create = findExternal(QStringLiteral("cryptsetup")) ? cmdSupportFileSystem : cmdSupportNone;
|
||||||
m_UpdateUUID = findExternal(QStringLiteral("cryptsetup")) ? cmdSupportFileSystem : cmdSupportNone;
|
m_UpdateUUID = findExternal(QStringLiteral("cryptsetup")) ? cmdSupportFileSystem : cmdSupportNone;
|
||||||
m_Copy = cmdSupportCore;
|
m_Copy = cmdSupportCore;
|
||||||
m_Move = cmdSupportCore;
|
m_Move = cmdSupportCore;
|
||||||
|
@ -74,13 +75,77 @@ void luks::init()
|
||||||
m_GetUUID = findExternal(QStringLiteral("cryptsetup")) ? cmdSupportFileSystem : cmdSupportNone;
|
m_GetUUID = findExternal(QStringLiteral("cryptsetup")) ? cmdSupportFileSystem : cmdSupportNone;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool luks::create(Report& report, const QString& deviceNode) const
|
||||||
|
{
|
||||||
|
|
||||||
|
QPointer<DecryptLuksDialog> dlg = new DecryptLuksDialog(0, deviceNode); //TODO: parent widget instead of 0
|
||||||
|
|
||||||
|
if (dlg->exec() != QDialog::Accepted)
|
||||||
|
{
|
||||||
|
delete dlg;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<QString> commands;
|
||||||
|
commands.push_back(QStringLiteral("echo"));
|
||||||
|
commands.push_back(QStringLiteral("cryptsetup"));
|
||||||
|
std::vector<QStringList> args;
|
||||||
|
args.push_back({ dlg->luksPassphrase().text() });
|
||||||
|
args.push_back({ QStringLiteral("-s"),
|
||||||
|
QStringLiteral("512"),
|
||||||
|
QStringLiteral("luksFormat"),
|
||||||
|
deviceNode,
|
||||||
|
QStringLiteral("-") });
|
||||||
|
|
||||||
|
ExternalCommand createCmd(commands, args);
|
||||||
|
if (!(createCmd.run(-1) && createCmd.exitCode() == 0))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
commands.clear();
|
||||||
|
commands.push_back(QStringLiteral("echo"));
|
||||||
|
commands.push_back(QStringLiteral("cryptsetup"));
|
||||||
|
args.clear();
|
||||||
|
args.push_back({ dlg->luksPassphrase().text() });
|
||||||
|
args.push_back({ QStringLiteral("luksOpen"),
|
||||||
|
deviceNode,
|
||||||
|
dlg->luksName().text() });
|
||||||
|
delete dlg;
|
||||||
|
|
||||||
|
ExternalCommand openCmd(commands, args);
|
||||||
|
if (!(openCmd.run(-1) && openCmd.exitCode() == 0))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (m_innerFs)
|
||||||
|
{
|
||||||
|
delete m_innerFs;
|
||||||
|
m_innerFs = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString mapperNode = mapperName(deviceNode);
|
||||||
|
if (mapperNode.isEmpty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
|
||||||
|
//FIXME: don't hardcode inner fs type
|
||||||
|
FileSystem::Type innerFsType = FileSystem::Ext4;
|
||||||
|
m_innerFs = FileSystemFactory::cloneWithNewType(innerFsType,
|
||||||
|
*this);
|
||||||
|
|
||||||
|
m_isCryptOpen = (m_innerFs != nullptr);
|
||||||
|
|
||||||
|
if (m_isCryptOpen)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
bool luks::supportToolFound() const
|
bool luks::supportToolFound() const
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
// m_GetUsed != cmdSupportNone &&
|
// m_GetUsed != cmdSupportNone &&
|
||||||
// m_GetLabel != cmdSupportNone &&
|
// m_GetLabel != cmdSupportNone &&
|
||||||
// m_SetLabel != cmdSupportNone &&
|
// m_SetLabel != cmdSupportNone &&
|
||||||
// m_Create != cmdSupportNone &&
|
m_Create != cmdSupportNone &&
|
||||||
// m_Check != cmdSupportNone &&
|
// m_Check != cmdSupportNone &&
|
||||||
m_UpdateUUID != cmdSupportNone &&
|
m_UpdateUUID != cmdSupportNone &&
|
||||||
// m_Grow != cmdSupportNone &&
|
// m_Grow != cmdSupportNone &&
|
||||||
|
|
|
@ -83,6 +83,7 @@ public:
|
||||||
return m_GetUUID;
|
return m_GetUUID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual bool create(Report &report, const QString &deviceNode) const override;
|
||||||
virtual qint64 minCapacity() const;
|
virtual qint64 minCapacity() const;
|
||||||
virtual SupportTool supportToolName() const;
|
virtual SupportTool supportToolName() const;
|
||||||
virtual bool supportToolFound() const;
|
virtual bool supportToolFound() const;
|
||||||
|
@ -133,9 +134,9 @@ public:
|
||||||
static CommandSupportType m_GetUUID;
|
static CommandSupportType m_GetUUID;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
FileSystem* m_innerFs;
|
mutable FileSystem* m_innerFs;
|
||||||
|
|
||||||
bool m_isCryptOpen;
|
mutable bool m_isCryptOpen;
|
||||||
bool m_isMounted;
|
bool m_isMounted;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue