| 1 | // Item.h |
|---|
| 2 | // $Id$ |
|---|
| 3 | // |
|---|
| 4 | // Eraser. Secure data removal. For Windows. |
|---|
| 5 | // Copyright © 1997-2001 Sami Tolvanen (sami@tolvanen.com). |
|---|
| 6 | // |
|---|
| 7 | // This program is free software; you can redistribute it and/or |
|---|
| 8 | // modify it under the terms of the GNU General Public License |
|---|
| 9 | // as published by the Free Software Foundation; either version 2 |
|---|
| 10 | // of the License, or (at your option) any later version. |
|---|
| 11 | // |
|---|
| 12 | // This program is distributed in the hope that it will be useful, |
|---|
| 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of |
|---|
| 14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|---|
| 15 | // GNU General Public License for more details. |
|---|
| 16 | // |
|---|
| 17 | // You should have received a copy of the GNU General Public License |
|---|
| 18 | // along with this program; if not, write to the Free Software |
|---|
| 19 | // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
|---|
| 20 | // 02111-1307, USA. |
|---|
| 21 | |
|---|
| 22 | #if !defined(AFX_ITEM_H__44195821_F0FC_11D2_BBF3_00105AAF62C4__INCLUDED_) |
|---|
| 23 | #define AFX_ITEM_H__44195821_F0FC_11D2_BBF3_00105AAF62C4__INCLUDED_ |
|---|
| 24 | |
|---|
| 25 | #if _MSC_VER > 1000 |
|---|
| 26 | #pragma once |
|---|
| 27 | #endif // _MSC_VER > 1000 |
|---|
| 28 | |
|---|
| 29 | #include "EraserDll\EraserDll.h" |
|---|
| 30 | |
|---|
| 31 | |
|---|
| 32 | // should older file formats be supported? |
|---|
| 33 | #define SCHEDULER_IMPORT_COMPATIBLE |
|---|
| 34 | |
|---|
| 35 | // task version information |
|---|
| 36 | #define ITEMVERSION 7 // Eraser 7.1 - |
|---|
| 37 | #define ITEMVERSION_41 6 // Eraser 4.1 - |
|---|
| 38 | #define ITEMVERSION_40 5 // Eraser 3.5 - 4.0 |
|---|
| 39 | #define ITEMVERSION_30 4 // Eraser 3.0 |
|---|
| 40 | #define ITEMVERSION_21 3 // Eraser Scheduler 2.1 |
|---|
| 41 | |
|---|
| 42 | // ítem IDs (Eraser 3.0 -) |
|---|
| 43 | #define ITEM_ID 0 // On-Demand |
|---|
| 44 | #define SCHEDULE_ID 1 // Scheduler |
|---|
| 45 | |
|---|
| 46 | // data type |
|---|
| 47 | enum Type |
|---|
| 48 | { |
|---|
| 49 | Drive, |
|---|
| 50 | Folder, |
|---|
| 51 | File |
|---|
| 52 | }; |
|---|
| 53 | |
|---|
| 54 | // schedule IDs |
|---|
| 55 | enum Schedule |
|---|
| 56 | { |
|---|
| 57 | Day, |
|---|
| 58 | Sunday, // 1 |
|---|
| 59 | Monday, |
|---|
| 60 | Tuesday, |
|---|
| 61 | Wednesday, |
|---|
| 62 | Thursday, |
|---|
| 63 | Friday, |
|---|
| 64 | Saturday, // 7 |
|---|
| 65 | Reboot |
|---|
| 66 | }; |
|---|
| 67 | |
|---|
| 68 | // schedule names |
|---|
| 69 | const LPCTSTR szScheduleName[] = |
|---|
| 70 | { |
|---|
| 71 | "Day", |
|---|
| 72 | "Sunday", |
|---|
| 73 | "Monday", |
|---|
| 74 | "Tuesday", |
|---|
| 75 | "Wednesday", |
|---|
| 76 | "Thursday", |
|---|
| 77 | "Friday", |
|---|
| 78 | "Saturday", |
|---|
| 79 | "Reboot" |
|---|
| 80 | }; |
|---|
| 81 | |
|---|
| 82 | // helper for scheduler task statistics |
|---|
| 83 | |
|---|
| 84 | class CTaskStatistics |
|---|
| 85 | { |
|---|
| 86 | public: |
|---|
| 87 | CTaskStatistics() { Reset(); } |
|---|
| 88 | |
|---|
| 89 | void Reset() |
|---|
| 90 | { |
|---|
| 91 | m_dwAveArea = 0; |
|---|
| 92 | m_dwAveWritten = 0; |
|---|
| 93 | m_dwAveTime = 0; |
|---|
| 94 | m_dwTimes = 0; |
|---|
| 95 | m_dwTimesInterrupted = 0; |
|---|
| 96 | m_dwTimesSuccess = 0; |
|---|
| 97 | }; |
|---|
| 98 | |
|---|
| 99 | void Serialize(CArchive&); |
|---|
| 100 | |
|---|
| 101 | DWORD m_dwAveArea; |
|---|
| 102 | DWORD m_dwAveWritten; |
|---|
| 103 | DWORD m_dwAveTime; |
|---|
| 104 | |
|---|
| 105 | DWORD m_dwTimes; |
|---|
| 106 | DWORD m_dwTimesInterrupted; |
|---|
| 107 | DWORD m_dwTimesSuccess; |
|---|
| 108 | |
|---|
| 109 | }; |
|---|
| 110 | |
|---|
| 111 | typedef CTaskStatistics TASKSTATISTICS, *LPTASKSTATISTICS; |
|---|
| 112 | |
|---|
| 113 | // the On-Demand item |
|---|
| 114 | class CItem |
|---|
| 115 | { |
|---|
| 116 | public: |
|---|
| 117 | CItem(); |
|---|
| 118 | CItem(const CItem&); |
|---|
| 119 | virtual ~CItem(); |
|---|
| 120 | |
|---|
| 121 | CItem& operator=(const CItem&); |
|---|
| 122 | |
|---|
| 123 | BOOL SetFolder(const CString& str); |
|---|
| 124 | BOOL SetDrive(const CString&); |
|---|
| 125 | BOOL SetFile(const CString&); |
|---|
| 126 | |
|---|
| 127 | CString GetData() const { return m_strData; } |
|---|
| 128 | void GetData(CString& str) const { str = m_strData; } |
|---|
| 129 | Type GetType() const { return m_tType; } |
|---|
| 130 | |
|---|
| 131 | BOOL IsPersistent() { return m_bPersistent; } |
|---|
| 132 | void SetPersistent(BOOL bPersistent) { m_bPersistent = bPersistent; } |
|---|
| 133 | |
|---|
| 134 | BOOL UseWildcards() { return m_bUseWildcards; } |
|---|
| 135 | void UseWildcards(BOOL bUseWildcards) { m_bUseWildcards = bUseWildcards; } |
|---|
| 136 | |
|---|
| 137 | BOOL WildcardsInSubfolders() { return m_bWildCardsInSubfolders; } |
|---|
| 138 | void WildcardsInSubfolders(BOOL bSF) { m_bWildCardsInSubfolders = bSF; } |
|---|
| 139 | |
|---|
| 140 | void RemoveFolder(BOOL bRemove) { m_bRemoveFolder = bRemove; } |
|---|
| 141 | BOOL RemoveFolder() const { return m_bRemoveFolder; } |
|---|
| 142 | void Subfolders(BOOL bSub) { m_bSubfolders = bSub; } |
|---|
| 143 | BOOL Subfolders() const { return m_bSubfolders; } |
|---|
| 144 | void OnlySubfolders(BOOL bOnly) { m_bRemoveOnlySub = bOnly; } |
|---|
| 145 | BOOL OnlySubfolders() const { return m_bRemoveOnlySub; } |
|---|
| 146 | inline int FinishAction() const { return m_iFinishAction; } |
|---|
| 147 | inline void FinishAction(DWORD iAct) {m_iFinishAction = iAct;} |
|---|
| 148 | inline int FinishActionInd() const { return m_iFinishActionInd; } |
|---|
| 149 | inline void FinishActionInd(int iAct) {m_iFinishActionInd = iAct;} |
|---|
| 150 | |
|---|
| 151 | void Serialize(CArchive& ar); |
|---|
| 152 | #ifdef SCHEDULER_IMPORT_COMPATIBLE |
|---|
| 153 | void Serialize30(CArchive& ar); // Eraser 3.0 load support |
|---|
| 154 | void Serialize40(CArchive& ar); // Eraser 3.5 - 4.0 load support |
|---|
| 155 | #endif |
|---|
| 156 | |
|---|
| 157 | protected: |
|---|
| 158 | void Copy(const CItem&); |
|---|
| 159 | |
|---|
| 160 | CString m_strData; |
|---|
| 161 | Type m_tType; |
|---|
| 162 | BOOL m_bPersistent; |
|---|
| 163 | |
|---|
| 164 | BOOL m_bUseWildcards; |
|---|
| 165 | BOOL m_bWildCardsInSubfolders; |
|---|
| 166 | BOOL m_bRemoveFolder; |
|---|
| 167 | BOOL m_bRemoveOnlySub; |
|---|
| 168 | BOOL m_bSubfolders; |
|---|
| 169 | DWORD m_iFinishAction; |
|---|
| 170 | int m_iFinishActionInd; |
|---|
| 171 | }; |
|---|
| 172 | |
|---|
| 173 | // the scheduler item |
|---|
| 174 | class CScheduleItem : public CItem |
|---|
| 175 | { |
|---|
| 176 | public: |
|---|
| 177 | |
|---|
| 178 | CScheduleItem(); |
|---|
| 179 | CScheduleItem(const CScheduleItem&); |
|---|
| 180 | virtual ~CScheduleItem(); |
|---|
| 181 | |
|---|
| 182 | CScheduleItem& operator=(const CScheduleItem&); |
|---|
| 183 | |
|---|
| 184 | // time |
|---|
| 185 | |
|---|
| 186 | BOOL CalcNextTime(); |
|---|
| 187 | BOOL StillValid(); |
|---|
| 188 | BOOL ScheduledNow(); |
|---|
| 189 | UINT GetTimeSpan() const; |
|---|
| 190 | UINT GetTimeSpan(const COleDateTime&) const; |
|---|
| 191 | |
|---|
| 192 | WORD GetHour() const; |
|---|
| 193 | WORD GetMinute() const; |
|---|
| 194 | CString GetId() const; |
|---|
| 195 | void SetSchedule(Schedule sc) { m_scWhen = sc; } |
|---|
| 196 | BOOL SetTime(WORD, WORD); |
|---|
| 197 | BOOL SetTime(DWORD); |
|---|
| 198 | |
|---|
| 199 | DWORD GetTime() const { return m_dwTime; } |
|---|
| 200 | DWORD GetSchedule() const { return (DWORD) m_scWhen; } |
|---|
| 201 | |
|---|
| 202 | BOOL GetNextTime(CString&) const; |
|---|
| 203 | BOOL SetNextTime(CString&); |
|---|
| 204 | COleDateTime GetNextTime() const { return m_odtNext; } |
|---|
| 205 | |
|---|
| 206 | void SetLastTime(COleDateTime& odt) |
|---|
| 207 | { m_odtLast = odt; } |
|---|
| 208 | COleDateTime GetLastTime() const { return m_odtLast; } |
|---|
| 209 | |
|---|
| 210 | void SetStatistics(const TASKSTATISTICS& ts) |
|---|
| 211 | { m_tsStatistics = ts; } |
|---|
| 212 | LPTASKSTATISTICS GetStatistics() { return &m_tsStatistics; } |
|---|
| 213 | void UpdateStatistics(); |
|---|
| 214 | |
|---|
| 215 | void Serialize(CArchive&); |
|---|
| 216 | void Serialize41(CArchive& ar); |
|---|
| 217 | #ifdef SCHEDULER_IMPORT_COMPATIBLE |
|---|
| 218 | void Serialize40(CArchive&); // Eraser 3.5 - 4.0 load support |
|---|
| 219 | void Serialize30(CArchive&); // Eraser 3.0 load support |
|---|
| 220 | void Serialize21(CArchive&); // Eraser Scheduler 2.1 load support |
|---|
| 221 | #endif |
|---|
| 222 | |
|---|
| 223 | // timer |
|---|
| 224 | |
|---|
| 225 | UINT m_uTimerID; |
|---|
| 226 | |
|---|
| 227 | // wiping |
|---|
| 228 | |
|---|
| 229 | void SetQueued(BOOL bOnQueue) { m_bQueued = bOnQueue; } |
|---|
| 230 | BOOL IsQueued() { return m_bQueued; } |
|---|
| 231 | |
|---|
| 232 | BOOL IsRunning(); |
|---|
| 233 | |
|---|
| 234 | ERASER_HANDLE m_ehContext; |
|---|
| 235 | E_UINT8 m_bMethod; |
|---|
| 236 | E_UINT16 m_nRndPass; |
|---|
| 237 | E_UINT8 m_uEraseItems; |
|---|
| 238 | |
|---|
| 239 | |
|---|
| 240 | protected: |
|---|
| 241 | void Copy(const CScheduleItem&); |
|---|
| 242 | |
|---|
| 243 | COleDateTime m_odtNext; |
|---|
| 244 | COleDateTime m_odtLast; |
|---|
| 245 | Schedule m_scWhen; |
|---|
| 246 | DWORD m_dwTime; |
|---|
| 247 | TASKSTATISTICS m_tsStatistics; |
|---|
| 248 | |
|---|
| 249 | BOOL m_bQueued; // not serialized! |
|---|
| 250 | }; |
|---|
| 251 | |
|---|
| 252 | |
|---|
| 253 | #endif // !defined(AFX_ITEM_H__44195821_F0FC_11D2_BBF3_00105AAF62C4__INCLUDED_) |
|---|