| 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 | Mask |
|---|
| 53 | }; |
|---|
| 54 | |
|---|
| 55 | // schedule IDs |
|---|
| 56 | enum Schedule |
|---|
| 57 | { |
|---|
| 58 | Day, |
|---|
| 59 | Sunday, // 1 |
|---|
| 60 | Monday, |
|---|
| 61 | Tuesday, |
|---|
| 62 | Wednesday, |
|---|
| 63 | Thursday, |
|---|
| 64 | Friday, |
|---|
| 65 | Saturday, // 7 |
|---|
| 66 | Reboot |
|---|
| 67 | }; |
|---|
| 68 | |
|---|
| 69 | // schedule names |
|---|
| 70 | const LPCTSTR szScheduleName[] = |
|---|
| 71 | { |
|---|
| 72 | "Day", |
|---|
| 73 | "Sunday", |
|---|
| 74 | "Monday", |
|---|
| 75 | "Tuesday", |
|---|
| 76 | "Wednesday", |
|---|
| 77 | "Thursday", |
|---|
| 78 | "Friday", |
|---|
| 79 | "Saturday", |
|---|
| 80 | "Reboot" |
|---|
| 81 | }; |
|---|
| 82 | |
|---|
| 83 | // helper for scheduler task statistics |
|---|
| 84 | |
|---|
| 85 | class CTaskStatistics |
|---|
| 86 | { |
|---|
| 87 | public: |
|---|
| 88 | CTaskStatistics() { Reset(); } |
|---|
| 89 | |
|---|
| 90 | void Reset() |
|---|
| 91 | { |
|---|
| 92 | m_dwAveArea = 0; |
|---|
| 93 | m_dwAveWritten = 0; |
|---|
| 94 | m_dwAveTime = 0; |
|---|
| 95 | m_dwTimes = 0; |
|---|
| 96 | m_dwTimesInterrupted = 0; |
|---|
| 97 | m_dwTimesSuccess = 0; |
|---|
| 98 | }; |
|---|
| 99 | |
|---|
| 100 | void Serialize(CArchive&); |
|---|
| 101 | |
|---|
| 102 | DWORD m_dwAveArea; |
|---|
| 103 | DWORD m_dwAveWritten; |
|---|
| 104 | DWORD m_dwAveTime; |
|---|
| 105 | |
|---|
| 106 | DWORD m_dwTimes; |
|---|
| 107 | DWORD m_dwTimesInterrupted; |
|---|
| 108 | DWORD m_dwTimesSuccess; |
|---|
| 109 | |
|---|
| 110 | }; |
|---|
| 111 | |
|---|
| 112 | typedef CTaskStatistics TASKSTATISTICS, *LPTASKSTATISTICS; |
|---|
| 113 | |
|---|
| 114 | // the On-Demand item |
|---|
| 115 | class CItem |
|---|
| 116 | { |
|---|
| 117 | public: |
|---|
| 118 | CItem(); |
|---|
| 119 | CItem(const CItem&); |
|---|
| 120 | virtual ~CItem(); |
|---|
| 121 | |
|---|
| 122 | CItem& operator=(const CItem&); |
|---|
| 123 | |
|---|
| 124 | BOOL SetFolder(const CString& str); |
|---|
| 125 | BOOL SetDrive(const CString&); |
|---|
| 126 | BOOL SetFile(const CString&); |
|---|
| 127 | BOOL SetMask(const CString& str); |
|---|
| 128 | |
|---|
| 129 | CString GetData() const { return m_strData; } |
|---|
| 130 | void GetData(CString& str) const { str = m_strData; } |
|---|
| 131 | Type GetType() const { return m_tType; } |
|---|
| 132 | |
|---|
| 133 | BOOL IsPersistent() { return m_bPersistent; } |
|---|
| 134 | void SetPersistent(BOOL bPersistent) { m_bPersistent = bPersistent; } |
|---|
| 135 | |
|---|
| 136 | BOOL UseWildcards() { return m_bUseWildcards; } |
|---|
| 137 | void UseWildcards(BOOL bUseWildcards) { m_bUseWildcards = bUseWildcards; } |
|---|
| 138 | |
|---|
| 139 | BOOL WildcardsInSubfolders() { return m_bWildCardsInSubfolders; } |
|---|
| 140 | void WildcardsInSubfolders(BOOL bSF) { m_bWildCardsInSubfolders = bSF; } |
|---|
| 141 | |
|---|
| 142 | void RemoveFolder(BOOL bRemove) { m_bRemoveFolder = bRemove; } |
|---|
| 143 | BOOL RemoveFolder() const { return m_bRemoveFolder; } |
|---|
| 144 | void Subfolders(BOOL bSub) { m_bSubfolders = bSub; } |
|---|
| 145 | BOOL Subfolders() const { return m_bSubfolders; } |
|---|
| 146 | void OnlySubfolders(BOOL bOnly) { m_bRemoveOnlySub = bOnly; } |
|---|
| 147 | BOOL OnlySubfolders() const { return m_bRemoveOnlySub; } |
|---|
| 148 | inline int FinishAction() const { return m_iFinishAction; } |
|---|
| 149 | inline void FinishAction(DWORD iAct) {m_iFinishAction = iAct;} |
|---|
| 150 | inline int FinishActionInd() const { return m_iFinishActionInd; } |
|---|
| 151 | inline void FinishActionInd(int iAct) {m_iFinishActionInd = iAct;} |
|---|
| 152 | |
|---|
| 153 | void Serialize(CArchive& ar); |
|---|
| 154 | #ifdef SCHEDULER_IMPORT_COMPATIBLE |
|---|
| 155 | void Serialize30(CArchive& ar); // Eraser 3.0 load support |
|---|
| 156 | void Serialize40(CArchive& ar); // Eraser 3.5 - 4.0 load support |
|---|
| 157 | #endif |
|---|
| 158 | |
|---|
| 159 | protected: |
|---|
| 160 | void Copy(const CItem&); |
|---|
| 161 | |
|---|
| 162 | CString m_strData; |
|---|
| 163 | Type m_tType; |
|---|
| 164 | BOOL m_bPersistent; |
|---|
| 165 | |
|---|
| 166 | BOOL m_bUseWildcards; |
|---|
| 167 | BOOL m_bWildCardsInSubfolders; |
|---|
| 168 | BOOL m_bRemoveFolder; |
|---|
| 169 | BOOL m_bRemoveOnlySub; |
|---|
| 170 | BOOL m_bSubfolders; |
|---|
| 171 | DWORD m_iFinishAction; |
|---|
| 172 | int m_iFinishActionInd; |
|---|
| 173 | }; |
|---|
| 174 | |
|---|
| 175 | // the scheduler item |
|---|
| 176 | class CScheduleItem : public CItem |
|---|
| 177 | { |
|---|
| 178 | public: |
|---|
| 179 | |
|---|
| 180 | CScheduleItem(); |
|---|
| 181 | CScheduleItem(const CScheduleItem&); |
|---|
| 182 | virtual ~CScheduleItem(); |
|---|
| 183 | |
|---|
| 184 | CScheduleItem& operator=(const CScheduleItem&); |
|---|
| 185 | |
|---|
| 186 | // time |
|---|
| 187 | |
|---|
| 188 | BOOL CalcNextTime(); |
|---|
| 189 | BOOL StillValid(); |
|---|
| 190 | BOOL ScheduledNow(); |
|---|
| 191 | UINT GetTimeSpan() const; |
|---|
| 192 | UINT GetTimeSpan(const COleDateTime&) const; |
|---|
| 193 | |
|---|
| 194 | WORD GetHour() const; |
|---|
| 195 | WORD GetMinute() const; |
|---|
| 196 | CString GetId() const; |
|---|
| 197 | void SetSchedule(Schedule sc) { m_scWhen = sc; } |
|---|
| 198 | BOOL SetTime(WORD, WORD); |
|---|
| 199 | BOOL SetTime(DWORD); |
|---|
| 200 | |
|---|
| 201 | DWORD GetTime() const { return m_dwTime; } |
|---|
| 202 | DWORD GetSchedule() const { return (DWORD) m_scWhen; } |
|---|
| 203 | |
|---|
| 204 | BOOL GetNextTime(CString&) const; |
|---|
| 205 | BOOL SetNextTime(CString&); |
|---|
| 206 | COleDateTime GetNextTime() const { return m_odtNext; } |
|---|
| 207 | |
|---|
| 208 | void SetLastTime(COleDateTime& odt) |
|---|
| 209 | { m_odtLast = odt; } |
|---|
| 210 | COleDateTime GetLastTime() const { return m_odtLast; } |
|---|
| 211 | |
|---|
| 212 | void SetStatistics(const TASKSTATISTICS& ts) |
|---|
| 213 | { m_tsStatistics = ts; } |
|---|
| 214 | LPTASKSTATISTICS GetStatistics() { return &m_tsStatistics; } |
|---|
| 215 | void UpdateStatistics(); |
|---|
| 216 | |
|---|
| 217 | void Serialize(CArchive&); |
|---|
| 218 | void Serialize41(CArchive& ar); |
|---|
| 219 | #ifdef SCHEDULER_IMPORT_COMPATIBLE |
|---|
| 220 | void Serialize40(CArchive&); // Eraser 3.5 - 4.0 load support |
|---|
| 221 | void Serialize30(CArchive&); // Eraser 3.0 load support |
|---|
| 222 | void Serialize21(CArchive&); // Eraser Scheduler 2.1 load support |
|---|
| 223 | #endif |
|---|
| 224 | |
|---|
| 225 | // timer |
|---|
| 226 | |
|---|
| 227 | UINT m_uTimerID; |
|---|
| 228 | |
|---|
| 229 | // wiping |
|---|
| 230 | |
|---|
| 231 | void SetQueued(BOOL bOnQueue) { m_bQueued = bOnQueue; } |
|---|
| 232 | BOOL IsQueued() { return m_bQueued; } |
|---|
| 233 | |
|---|
| 234 | BOOL IsRunning(); |
|---|
| 235 | |
|---|
| 236 | ERASER_HANDLE m_ehContext; |
|---|
| 237 | E_UINT8 m_bMethod; |
|---|
| 238 | E_UINT16 m_nRndPass; |
|---|
| 239 | E_UINT8 m_uEraseItems; |
|---|
| 240 | |
|---|
| 241 | |
|---|
| 242 | protected: |
|---|
| 243 | void Copy(const CScheduleItem&); |
|---|
| 244 | |
|---|
| 245 | COleDateTime m_odtNext; |
|---|
| 246 | COleDateTime m_odtLast; |
|---|
| 247 | Schedule m_scWhen; |
|---|
| 248 | DWORD m_dwTime; |
|---|
| 249 | TASKSTATISTICS m_tsStatistics; |
|---|
| 250 | |
|---|
| 251 | BOOL m_bQueued; // not serialized! |
|---|
| 252 | }; |
|---|
| 253 | |
|---|
| 254 | |
|---|
| 255 | #endif // !defined(AFX_ITEM_H__44195821_F0FC_11D2_BBF3_00105AAF62C4__INCLUDED_) |
|---|