Compare commits
8 Commits
1.2.0
...
feature/fa
| Author | SHA1 | Date | |
|---|---|---|---|
| 298192111d | |||
| 80ffb3c6c3 | |||
| ebe0ef9ec1 | |||
| 86660cb112 | |||
| 47ab9cc36f | |||
| aaf4695656 | |||
| 664582f01d | |||
| 9f6cfc17f8 |
@ -20,6 +20,8 @@ public:
|
||||
SHRED_SELECTED,
|
||||
SHRED_ACTIVE, // shred iterations active
|
||||
CHECK_ACTIVE, // optional checking active
|
||||
CHECK_SUCCESSFUL,
|
||||
CHECK_FAILED,
|
||||
DELETE_SELECTED,
|
||||
DELETE_ACTIVE,
|
||||
FROZEN
|
||||
|
||||
@ -26,11 +26,11 @@ typedef struct
|
||||
char caDriveShredDuration[STR_BUFFER_SIZE];
|
||||
char caDriveCapacity[STR_BUFFER_SIZE];
|
||||
char caDriveState[STR_BUFFER_SIZE];
|
||||
char caDriveConnectionType[STR_BUFFER_SIZE];
|
||||
char caDriveModelFamily[STR_BUFFER_SIZE];
|
||||
char caDriveModelName[STR_BUFFER_SIZE];
|
||||
char caDriveSerialnumber[STR_BUFFER_SIZE];
|
||||
char caDriveReHddVersion[STR_BUFFER_SIZE];
|
||||
|
||||
} t_driveData;
|
||||
|
||||
typedef struct
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
#ifndef REHDD_H_
|
||||
#define REHDD_H_
|
||||
|
||||
#define REHDD_VERSION "V1.2.0"
|
||||
#define REHDD_VERSION "V1.2.1"
|
||||
|
||||
// Drive handling Settings
|
||||
#define WORSE_HOURS 19200 // mark drive if at this limit or beyond
|
||||
|
||||
@ -51,6 +51,8 @@ public:
|
||||
|
||||
static enum UserInput readUserInput();
|
||||
|
||||
static void terminateTUI();
|
||||
|
||||
private:
|
||||
static string sCpuUsage;
|
||||
static string sRamUsage;
|
||||
|
||||
@ -53,6 +53,23 @@ void Printer::print(Drive *drive)
|
||||
sprintf(msgQueueData.driveData.caDriveErrors, "%i", drive->getErrorCount());
|
||||
sprintf(msgQueueData.driveData.caDriveShredTimestamp, "%li", drive->getActionStartTimestamp());
|
||||
sprintf(msgQueueData.driveData.caDriveShredDuration, "%li", drive->getTaskDuration());
|
||||
|
||||
switch (drive->connectionType)
|
||||
{
|
||||
case Drive::USB:
|
||||
strcpy(msgQueueData.driveData.caDriveConnectionType, "usb");
|
||||
break;
|
||||
case Drive::SATA:
|
||||
strcpy(msgQueueData.driveData.caDriveConnectionType, "sata");
|
||||
break;
|
||||
case Drive::NVME:
|
||||
strcpy(msgQueueData.driveData.caDriveConnectionType, "nvme");
|
||||
break;
|
||||
case Drive::UNKNOWN:
|
||||
default:
|
||||
strcpy(msgQueueData.driveData.caDriveConnectionType, "na");
|
||||
}
|
||||
|
||||
sprintf(msgQueueData.driveData.caDriveReHddVersion, REHDD_VERSION);
|
||||
|
||||
if (-1 == msgsnd(this->msqid, &msgQueueData, sizeof(t_msgQueueData) - sizeof(long), 0))
|
||||
|
||||
@ -198,8 +198,9 @@ void reHDD::ThreadUserInput()
|
||||
ui->updateTUI(&listDrives, u8SelectedEntry);
|
||||
break;
|
||||
case TUI::UserInput::Terminate:
|
||||
cout << "Terminate" << endl;
|
||||
// cout << "Terminate" << endl;
|
||||
stopShredAllDrives(&listDrives);
|
||||
ui->terminateTUI();
|
||||
sleep(5); // sleep 5 sec
|
||||
std::exit(1); // Terminates main, doesn't wait for threads
|
||||
break;
|
||||
@ -408,10 +409,11 @@ void reHDD::filterIgnoredDrives(list<Drive> *plistDrives)
|
||||
|
||||
while ((getline(&cLine, &len, outputfileBlkid)) != -1) // parse UUID from blkid
|
||||
{
|
||||
if (string(cLine).find("PTUUID") != string::npos)
|
||||
size_t ptuuidPos = string(cLine).find("PTUUID");
|
||||
if (ptuuidPos != string::npos)
|
||||
{
|
||||
string sBlkidOut = string(cLine);
|
||||
sBlkidOut.erase(0, 18);
|
||||
sBlkidOut.erase(0, ptuuidPos + 8);
|
||||
sBlkidOut.erase(8, sBlkidOut.length());
|
||||
sUUID = sBlkidOut;
|
||||
// cout << "blkid uuid:" << sUUID << endl;
|
||||
|
||||
@ -36,7 +36,7 @@ int Shred::shredDrive(Drive *drive, int *ipSignalFd)
|
||||
ostringstream address;
|
||||
address << (void const *)&(*drive);
|
||||
Logger::logThis()->info("Shred-Task started - Drive: " + drive->getModelName() + "-" + drive->getSerial() + " @" + address.str());
|
||||
drive->bWasShredStarted = true; //Mark drive as partly shredded
|
||||
drive->bWasShredStarted = true; // Mark drive as partly shredded
|
||||
|
||||
#ifdef DRYRUN
|
||||
for (int i = 0; i <= 500; i++)
|
||||
@ -186,22 +186,23 @@ int Shred::shredDrive(Drive *drive, int *ipSignalFd)
|
||||
drive->state = Drive::CHECK_ACTIVE;
|
||||
Logger::logThis()->info("Check-Task started - Drive: " + drive->getModelName() + "-" + drive->getSerial() + " @" + address.str());
|
||||
drive->u32DriveChecksumAfterShredding = uiCalcChecksum(driveFileDiscr, drive, ipSignalFd);
|
||||
#ifdef LOG_LEVEL_HIGH
|
||||
|
||||
if (drive->u32DriveChecksumAfterShredding != 0)
|
||||
{
|
||||
drive->state = Drive::CHECK_FAILED;
|
||||
Logger::logThis()->info("Shred-Task: Checksum not zero: " + to_string(drive->u32DriveChecksumAfterShredding) + " - Drive: " + drive->getSerial());
|
||||
}
|
||||
else
|
||||
{
|
||||
drive->state = Drive::CHECK_SUCCESSFUL;
|
||||
Logger::logThis()->info("Shred-Task: Checksum zero: " + to_string(drive->u32DriveChecksumAfterShredding) + " - Drive: " + drive->getSerial());
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
cleanup();
|
||||
|
||||
if ((drive->state == Drive::SHRED_ACTIVE) || (drive->state == Drive::CHECK_ACTIVE))
|
||||
if ((drive->state == Drive::SHRED_ACTIVE) || (drive->state == Drive::CHECK_SUCCESSFUL) || (drive->state == Drive::CHECK_FAILED))
|
||||
{
|
||||
drive->state = Drive::NONE;
|
||||
drive->setTaskPercentage(0.0);
|
||||
|
||||
13
src/tui.cpp
13
src/tui.cpp
@ -63,6 +63,11 @@ void TUI::initTUI()
|
||||
|
||||
void TUI::updateTUI(list<Drive> *plistDrives, uint8_t u8SelectedEntry)
|
||||
{
|
||||
if (isendwin())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
mxUIrefresh.lock();
|
||||
uint16_t u16StdscrX, u16StdscrY;
|
||||
getmaxyx(stdscr, u16StdscrY, u16StdscrX);
|
||||
@ -140,6 +145,7 @@ void TUI::updateTUI(list<Drive> *plistDrives, uint8_t u8SelectedEntry)
|
||||
case Drive::NONE:
|
||||
case Drive::SHRED_SELECTED:
|
||||
case Drive::DELETE_SELECTED:
|
||||
case Drive::CHECK_SUCCESSFUL:
|
||||
if (it->bWasDeleted)
|
||||
{
|
||||
sState = "DELETED"; // mark drive as deleted previously
|
||||
@ -160,7 +166,7 @@ void TUI::updateTUI(list<Drive> *plistDrives, uint8_t u8SelectedEntry)
|
||||
}
|
||||
|
||||
#ifdef ZERO_CHECK
|
||||
if (bSelectedEntry && it->bWasChecked && (it->u32DriveChecksumAfterShredding != 0U))
|
||||
if (bSelectedEntry && it->bWasChecked && (it->state == Drive::CHECK_FAILED))
|
||||
{
|
||||
dialog = createZeroChecksumWarning(70, 16, ((u16StdscrX) - (int)(u16StdscrX / 2) - 20), (int)(u16StdscrY / 2) - 8, it->getPath(), it->getModelFamily(), it->getModelName(), it->getSerial(), it->u32DriveChecksumAfterShredding);
|
||||
wrefresh(dialog);
|
||||
@ -250,6 +256,11 @@ enum TUI::UserInput TUI::readUserInput()
|
||||
return TUI::UserInput::Undefined;
|
||||
}
|
||||
|
||||
void TUI::terminateTUI()
|
||||
{
|
||||
endwin();
|
||||
}
|
||||
|
||||
void TUI::centerTitle(WINDOW *pwin, const char *title)
|
||||
{
|
||||
int x, maxX, stringSize;
|
||||
|
||||
Reference in New Issue
Block a user