Print more info about LUKS partitions in the infopane.
svn path=/trunk/extragear/sysadmin/partitionmanager/; revision=1325759
This commit is contained in:
parent
f4e7603a41
commit
39dc9c5c46
|
@ -20,6 +20,7 @@
|
||||||
#include "fs/luks.h"
|
#include "fs/luks.h"
|
||||||
|
|
||||||
#include "util/capacity.h"
|
#include "util/capacity.h"
|
||||||
|
#include "util/externalcommand.h"
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
|
@ -51,4 +52,64 @@ namespace FS
|
||||||
{
|
{
|
||||||
return Capacity::unitFactor(Capacity::Byte, Capacity::EiB);
|
return Capacity::unitFactor(Capacity::Byte, Capacity::EiB);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString luks::getCipherName(const QString& deviceNode)
|
||||||
|
{
|
||||||
|
ExternalCommand cmd("cryptsetup", QStringList() << "luksDump" << deviceNode);
|
||||||
|
if (cmd.run())
|
||||||
|
{
|
||||||
|
QRegExp rxCipherName("(?:Cipher name:\\s+)([A-Za-z0-9-]+)");
|
||||||
|
if (rxCipherName.indexIn(cmd.output()) > -1)
|
||||||
|
return rxCipherName.cap(1);
|
||||||
|
}
|
||||||
|
return "---";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString luks::getCipherMode(const QString& deviceNode)
|
||||||
|
{
|
||||||
|
ExternalCommand cmd("cryptsetup", QStringList() << "luksDump" << deviceNode);
|
||||||
|
if (cmd.run())
|
||||||
|
{
|
||||||
|
QRegExp rxCipherMode("(?:Cipher mode:\\s+)([A-Za-z0-9-]+)");
|
||||||
|
if (rxCipherMode.indexIn(cmd.output()) > -1)
|
||||||
|
return rxCipherMode.cap(1);
|
||||||
|
}
|
||||||
|
return "---";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString luks::getHashName(const QString& deviceNode)
|
||||||
|
{
|
||||||
|
ExternalCommand cmd("cryptsetup", QStringList() << "luksDump" << deviceNode);
|
||||||
|
if (cmd.run())
|
||||||
|
{
|
||||||
|
QRegExp rxHash("(?:Hash spec:\\s+)([A-Za-z0-9-]+)");
|
||||||
|
if (rxHash.indexIn(cmd.output()) > -1)
|
||||||
|
return rxHash.cap(1);
|
||||||
|
}
|
||||||
|
return "---";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString luks::getKeySize(const QString& deviceNode)
|
||||||
|
{
|
||||||
|
ExternalCommand cmd("cryptsetup", QStringList() << "luksDump" << deviceNode);
|
||||||
|
if (cmd.run())
|
||||||
|
{
|
||||||
|
QRegExp rxKeySize("(?:MK bits:\\s+)(\\d+)");
|
||||||
|
if (rxKeySize.indexIn(cmd.output()) > -1)
|
||||||
|
return rxKeySize.cap(1);
|
||||||
|
}
|
||||||
|
return "---";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString luks::getPayloadOffset(const QString& deviceNode)
|
||||||
|
{
|
||||||
|
ExternalCommand cmd("cryptsetup", QStringList() << "luksDump" << deviceNode);
|
||||||
|
if (cmd.run())
|
||||||
|
{
|
||||||
|
QRegExp rxPayloadOffset("(?:Payload offset:\\s+)(\\d+)");
|
||||||
|
if (rxPayloadOffset.indexIn(cmd.output()) > -1)
|
||||||
|
return rxPayloadOffset.cap(1);
|
||||||
|
}
|
||||||
|
return "---";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,6 +60,12 @@ namespace FS
|
||||||
virtual qint64 maxCapacity() const;
|
virtual qint64 maxCapacity() const;
|
||||||
virtual bool supportToolFound() const { return true; }
|
virtual bool supportToolFound() const { return true; }
|
||||||
|
|
||||||
|
static QString getCipherName (const QString& deviceNode);
|
||||||
|
static QString getCipherMode (const QString& deviceNode);
|
||||||
|
static QString getHashName (const QString& deviceNode);
|
||||||
|
static QString getKeySize (const QString& deviceNode);
|
||||||
|
static QString getPayloadOffset (const QString& deviceNode);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static CommandSupportType m_GetUsed;
|
static CommandSupportType m_GetUsed;
|
||||||
static CommandSupportType m_GetLabel;
|
static CommandSupportType m_GetLabel;
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include "core/partition.h"
|
#include "core/partition.h"
|
||||||
|
|
||||||
#include "fs/filesystem.h"
|
#include "fs/filesystem.h"
|
||||||
|
#include "fs/luks.h"
|
||||||
|
|
||||||
#include "util/capacity.h"
|
#include "util/capacity.h"
|
||||||
|
|
||||||
|
@ -113,6 +114,22 @@ void InfoPane::showPartition(Qt::DockWidgetArea area, const Partition& p)
|
||||||
|
|
||||||
int x = 0;
|
int x = 0;
|
||||||
int y = createHeader(p.deviceNode(), cols(area));
|
int y = createHeader(p.deviceNode(), cols(area));
|
||||||
|
if (p.fileSystem().name() == "luks")
|
||||||
|
{
|
||||||
|
QString deviceNode = p.devicePath() + QString::number(p.number());
|
||||||
|
createLabels(i18nc("@label partition", "File system:"), p.fileSystem().name(), cols(area), x, y);
|
||||||
|
createLabels(i18nc("@label partition", "Capacity:"), Capacity::formatByteSize(p.capacity()), cols(area), x, y);
|
||||||
|
createLabels(i18nc("@label partition", "Cipher name:"), FS::luks::getCipherName(deviceNode), cols(area), x, y);
|
||||||
|
createLabels(i18nc("@label partition", "Cipher mode:"), FS::luks::getCipherMode(deviceNode), cols(area), x, y);
|
||||||
|
createLabels(i18nc("@label partition", "Hash:"), FS::luks::getHashName(deviceNode), cols(area), x, y);
|
||||||
|
createLabels(i18nc("@label partition", "Key size:"), FS::luks::getKeySize(deviceNode), cols(area), x, y);
|
||||||
|
createLabels(i18nc("@label partition", "Payload offset:"), FS::luks::getPayloadOffset(deviceNode), cols(area), x, y);
|
||||||
|
createLabels(i18nc("@label partition", "First sector:"), KGlobal::locale()->formatNumber(p.firstSector(), 0), cols(area), x, y);
|
||||||
|
createLabels(i18nc("@label partition", "Last sector:"), KGlobal::locale()->formatNumber(p.lastSector(), 0), cols(area), x, y);
|
||||||
|
createLabels(i18nc("@label partition", "Number of sectors:"), KGlobal::locale()->formatNumber(p.length(), 0), cols(area), x, y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
createLabels(i18nc("@label partition", "File system:"), p.fileSystem().name(), cols(area), x, y);
|
createLabels(i18nc("@label partition", "File system:"), p.fileSystem().name(), cols(area), x, y);
|
||||||
createLabels(i18nc("@label partition", "Capacity:"), Capacity::formatByteSize(p.capacity()), cols(area), x, y);
|
createLabels(i18nc("@label partition", "Capacity:"), Capacity::formatByteSize(p.capacity()), cols(area), x, y);
|
||||||
createLabels(i18nc("@label partition", "Available:"), Capacity::formatByteSize(p.available()), cols(area), x, y);
|
createLabels(i18nc("@label partition", "Available:"), Capacity::formatByteSize(p.available()), cols(area), x, y);
|
||||||
|
@ -120,6 +137,7 @@ void InfoPane::showPartition(Qt::DockWidgetArea area, const Partition& p)
|
||||||
createLabels(i18nc("@label partition", "First sector:"), KGlobal::locale()->formatNumber(p.firstSector(), 0), cols(area), x, y);
|
createLabels(i18nc("@label partition", "First sector:"), KGlobal::locale()->formatNumber(p.firstSector(), 0), cols(area), x, y);
|
||||||
createLabels(i18nc("@label partition", "Last sector:"), KGlobal::locale()->formatNumber(p.lastSector(), 0), cols(area), x, y);
|
createLabels(i18nc("@label partition", "Last sector:"), KGlobal::locale()->formatNumber(p.lastSector(), 0), cols(area), x, y);
|
||||||
createLabels(i18nc("@label partition", "Number of sectors:"), KGlobal::locale()->formatNumber(p.length(), 0), cols(area), x, y);
|
createLabels(i18nc("@label partition", "Number of sectors:"), KGlobal::locale()->formatNumber(p.length(), 0), cols(area), x, y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Shows information about a Device in the InfoPane
|
/** Shows information about a Device in the InfoPane
|
||||||
|
|
Loading…
Reference in New Issue