author | Michael Krelin <hacker@klever.net> | 2006-07-02 22:16:25 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2006-07-02 22:16:25 (UTC) |
commit | 577427e68ef10a4d2b75d28e42b22952ae3bcf23 (patch) (unidiff) | |
tree | 24c8fc94ea6524059cab7927ef76639bb1a1a98d /PumpKINDlg.h | |
parent | 24e693797daef020ece3fa19bb5acce000e37165 (diff) | |
download | pumpkin-577427e68ef10a4d2b75d28e42b22952ae3bcf23.zip pumpkin-577427e68ef10a4d2b75d28e42b22952ae3bcf23.tar.gz pumpkin-577427e68ef10a4d2b75d28e42b22952ae3bcf23.tar.bz2 |
Do not close RRQ socket until the last ACK is received.
git-svn-id: http://svn.klever.net/kin/pumpkin/trunk@152 fe716a7a-6dde-0310-88d9-d003556173a8
-rw-r--r-- | PumpKINDlg.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/PumpKINDlg.h b/PumpKINDlg.h index c5469f1..23c2657 100644 --- a/PumpKINDlg.h +++ b/PumpKINDlg.h | |||
@@ -123,378 +123,379 @@ struct acl_rule { | |||
123 | rrqGrant=0, rrqPrompt, rrqDeny, | 123 | rrqGrant=0, rrqPrompt, rrqDeny, |
124 | rrqRules, | 124 | rrqRules, |
125 | rrqNone=-1 | 125 | rrqNone=-1 |
126 | }; | 126 | }; |
127 | enum { | 127 | enum { |
128 | wrqGrant=0, wrqPromptIfExists, wrqPrompt, wrqDeny, | 128 | wrqGrant=0, wrqPromptIfExists, wrqPrompt, wrqDeny, |
129 | wrqRules, | 129 | wrqRules, |
130 | wrqNone=-1 | 130 | wrqNone=-1 |
131 | }; | 131 | }; |
132 | int target; | 132 | int target; |
133 | 133 | ||
134 | acl_rule() | 134 | acl_rule() |
135 | : op(-1), addr(0), mask(0), target(-1) { } | 135 | : op(-1), addr(0), mask(0), target(-1) { } |
136 | acl_rule(int o,DWORD a,DWORD m,int t) | 136 | acl_rule(int o,DWORD a,DWORD m,int t) |
137 | : op(o), addr(a), mask(m), target(t) { } | 137 | : op(o), addr(a), mask(m), target(t) { } |
138 | acl_rule(const acl_rule& s) | 138 | acl_rule(const acl_rule& s) |
139 | : op(s.op), addr(s.addr), mask(s.mask), target(s.target) { } | 139 | : op(s.op), addr(s.addr), mask(s.mask), target(s.target) { } |
140 | 140 | ||
141 | BOOL IsValid() { | 141 | BOOL IsValid() { |
142 | if(op==opRRQ) { | 142 | if(op==opRRQ) { |
143 | if(target<rrqNone || target>=rrqRules) | 143 | if(target<rrqNone || target>=rrqRules) |
144 | return FALSE; | 144 | return FALSE; |
145 | }else if(op==opWRQ) { | 145 | }else if(op==opWRQ) { |
146 | if(target<wrqNone || target>=wrqRules) | 146 | if(target<wrqNone || target>=wrqRules) |
147 | return FALSE; | 147 | return FALSE; |
148 | }else | 148 | }else |
149 | return FALSE; | 149 | return FALSE; |
150 | return TRUE; | 150 | return TRUE; |
151 | } | 151 | } |
152 | 152 | ||
153 | BOOL IsMatch(int o,DWORD a) { | 153 | BOOL IsMatch(int o,DWORD a) { |
154 | if(o!=op) return FALSE; | 154 | if(o!=op) return FALSE; |
155 | if( (a&mask) != (addr&mask)) return FALSE; | 155 | if( (a&mask) != (addr&mask)) return FALSE; |
156 | return TRUE; | 156 | return TRUE; |
157 | } | 157 | } |
158 | 158 | ||
159 | CString str_addr() { | 159 | CString str_addr() { |
160 | return inet_ntoa(*(struct in_addr*)&addr); | 160 | return inet_ntoa(*(struct in_addr*)&addr); |
161 | } | 161 | } |
162 | CString str_mask() { | 162 | CString str_mask() { |
163 | return inet_ntoa(*(struct in_addr*)&mask); | 163 | return inet_ntoa(*(struct in_addr*)&mask); |
164 | } | 164 | } |
165 | CString str_target() { | 165 | CString str_target() { |
166 | if(op==opRRQ) { | 166 | if(op==opRRQ) { |
167 | switch(target) { | 167 | switch(target) { |
168 | case rrqNone: return "fallback"; | 168 | case rrqNone: return "fallback"; |
169 | case rrqGrant: return "grant"; | 169 | case rrqGrant: return "grant"; |
170 | case rrqPrompt: return "prompt"; | 170 | case rrqPrompt: return "prompt"; |
171 | case rrqDeny: return "deny"; | 171 | case rrqDeny: return "deny"; |
172 | default: return "?"; | 172 | default: return "?"; |
173 | } | 173 | } |
174 | }else if(op==opWRQ) { | 174 | }else if(op==opWRQ) { |
175 | switch(target) { | 175 | switch(target) { |
176 | case wrqNone: return "fallback"; | 176 | case wrqNone: return "fallback"; |
177 | case wrqGrant: return "grant"; | 177 | case wrqGrant: return "grant"; |
178 | case wrqPromptIfExists: return "prompt if exists"; | 178 | case wrqPromptIfExists: return "prompt if exists"; |
179 | case wrqPrompt: return "prompt"; | 179 | case wrqPrompt: return "prompt"; |
180 | case wrqDeny: return "deny"; | 180 | case wrqDeny: return "deny"; |
181 | default: return "?"; | 181 | default: return "?"; |
182 | } | 182 | } |
183 | }else | 183 | }else |
184 | return "?"; | 184 | return "?"; |
185 | } | 185 | } |
186 | 186 | ||
187 | void SaveProfile(CWinApp* app,int i) { | 187 | void SaveProfile(CWinApp* app,int i) { |
188 | CString n; n.Format("%d",i); | 188 | CString n; n.Format("%d",i); |
189 | app->WriteProfileInt("ACL","op_"+n,op); | 189 | app->WriteProfileInt("ACL","op_"+n,op); |
190 | app->WriteProfileString("ACL","addr_"+n,str_addr()); | 190 | app->WriteProfileString("ACL","addr_"+n,str_addr()); |
191 | app->WriteProfileString("ACL","mask_"+n,str_mask()); | 191 | app->WriteProfileString("ACL","mask_"+n,str_mask()); |
192 | app->WriteProfileInt("ACL","target_"+n,target); | 192 | app->WriteProfileInt("ACL","target_"+n,target); |
193 | } | 193 | } |
194 | 194 | ||
195 | void LoadProfile(CWinApp* app,int i) { | 195 | void LoadProfile(CWinApp* app,int i) { |
196 | CString n; n.Format("%d",i); | 196 | CString n; n.Format("%d",i); |
197 | op=app->GetProfileInt("ACL","op_"+n,-1); | 197 | op=app->GetProfileInt("ACL","op_"+n,-1); |
198 | addr=inet_addr(app->GetProfileString("ACL","addr_"+n)); | 198 | addr=inet_addr(app->GetProfileString("ACL","addr_"+n)); |
199 | mask=inet_addr(app->GetProfileString("ACL","mask_"+n)); | 199 | mask=inet_addr(app->GetProfileString("ACL","mask_"+n)); |
200 | target=app->GetProfileInt("ACL","target_"+n,-1); | 200 | target=app->GetProfileInt("ACL","target_"+n,-1); |
201 | } | 201 | } |
202 | 202 | ||
203 | }; | 203 | }; |
204 | 204 | ||
205 | class acl_rules_t : public CArray<acl_rule,acl_rule&> { | 205 | class acl_rules_t : public CArray<acl_rule,acl_rule&> { |
206 | public: | 206 | public: |
207 | 207 | ||
208 | acl_rules_t& operator=(const acl_rules_t& s) { | 208 | acl_rules_t& operator=(const acl_rules_t& s) { |
209 | // Copy(s); XXX: unsuprisingly, there's a bug in MFC Copy, *pDst++=*pSrc (no ++ for Src) | 209 | // Copy(s); XXX: unsuprisingly, there's a bug in MFC Copy, *pDst++=*pSrc (no ++ for Src) |
210 | RemoveAll(); | 210 | RemoveAll(); |
211 | int ns = s.GetSize(); | 211 | int ns = s.GetSize(); |
212 | SetSize(ns); | 212 | SetSize(ns); |
213 | for(int i=0;i<ns;++i) | 213 | for(int i=0;i<ns;++i) |
214 | m_pData[i]=s.m_pData[i]; | 214 | m_pData[i]=s.m_pData[i]; |
215 | return *this; | 215 | return *this; |
216 | } | 216 | } |
217 | 217 | ||
218 | int AppendRule(acl_rule& r) { | 218 | int AppendRule(acl_rule& r) { |
219 | return Add(r); | 219 | return Add(r); |
220 | } | 220 | } |
221 | 221 | ||
222 | void DeleteRule(int r) { | 222 | void DeleteRule(int r) { |
223 | RemoveAt(r); | 223 | RemoveAt(r); |
224 | } | 224 | } |
225 | 225 | ||
226 | int FindRule(int op,DWORD ip) { | 226 | int FindRule(int op,DWORD ip) { |
227 | for(int i=0;i<GetSize();++i) | 227 | for(int i=0;i<GetSize();++i) |
228 | if(m_pData[i].IsMatch(op,ip)) | 228 | if(m_pData[i].IsMatch(op,ip)) |
229 | return i; | 229 | return i; |
230 | return -1; | 230 | return -1; |
231 | } | 231 | } |
232 | 232 | ||
233 | int FindTarget(int op,DWORD ip) { | 233 | int FindTarget(int op,DWORD ip) { |
234 | int r=FindRule(op,ip); | 234 | int r=FindRule(op,ip); |
235 | if(r<0) return -1; | 235 | if(r<0) return -1; |
236 | return m_pData[r].target; | 236 | return m_pData[r].target; |
237 | } | 237 | } |
238 | 238 | ||
239 | void SaveProfile(CWinApp* app) { | 239 | void SaveProfile(CWinApp* app) { |
240 | int s=GetSize(); | 240 | int s=GetSize(); |
241 | for(int i=0;i<s;++i) | 241 | for(int i=0;i<s;++i) |
242 | m_pData[i].SaveProfile(app,i); | 242 | m_pData[i].SaveProfile(app,i); |
243 | app->WriteProfileInt("ACL","rules",s); | 243 | app->WriteProfileInt("ACL","rules",s); |
244 | } | 244 | } |
245 | void LoadProfile(CWinApp* app) { | 245 | void LoadProfile(CWinApp* app) { |
246 | RemoveAll(); | 246 | RemoveAll(); |
247 | int s=app->GetProfileInt("ACL","rules",0); | 247 | int s=app->GetProfileInt("ACL","rules",0); |
248 | for(int i=0;i<s;++i) { | 248 | for(int i=0;i<s;++i) { |
249 | acl_rule r; | 249 | acl_rule r; |
250 | r.LoadProfile(app,i); | 250 | r.LoadProfile(app,i); |
251 | if(r.IsValid()) | 251 | if(r.IsValid()) |
252 | Add(r); | 252 | Add(r); |
253 | } | 253 | } |
254 | } | 254 | } |
255 | }; | 255 | }; |
256 | 256 | ||
257 | class CPumpKINDlg; | 257 | class CPumpKINDlg; |
258 | class CListenSocket : public CAsyncSocket{ | 258 | class CListenSocket : public CAsyncSocket{ |
259 | public: | 259 | public: |
260 | CPumpKINDlg* m_Daddy; | 260 | CPumpKINDlg* m_Daddy; |
261 | BOOL m_bListen; | 261 | BOOL m_bListen; |
262 | 262 | ||
263 | CListenSocket() | 263 | CListenSocket() |
264 | : m_bListen(FALSE), m_Daddy(0) { } | 264 | : m_bListen(FALSE), m_Daddy(0) { } |
265 | 265 | ||
266 | BOOL SetListen(BOOL b); | 266 | BOOL SetListen(BOOL b); |
267 | virtual void OnReceive(int nErrorCode); | 267 | virtual void OnReceive(int nErrorCode); |
268 | }; | 268 | }; |
269 | 269 | ||
270 | typedef CList<tftp*,tftp*>CTFTPList; | 270 | typedef CList<tftp*,tftp*>CTFTPList; |
271 | class CResolver; | 271 | class CResolver; |
272 | class CXferSocket : public CAsyncSocket{ | 272 | class CXferSocket : public CAsyncSocket{ |
273 | public: | 273 | public: |
274 | UINT m__timeOut; | 274 | UINT m__timeOut; |
275 | UINT m__blkSize; | 275 | UINT m__blkSize; |
276 | tftp::tftpOptions m_Options; | 276 | tftp::tftpOptions m_Options; |
277 | LONG m_xferSize; | 277 | LONG m_xferSize; |
278 | UINT m_timeOut; | 278 | UINT m_timeOut; |
279 | UINT m_blkSize; | 279 | UINT m_blkSize; |
280 | BOOL m_bRetry; | 280 | BOOL m_bRetry; |
281 | void SetTry(tftp *p=NULL); | 281 | void SetTry(tftp *p=NULL); |
282 | tftp* m_Retry; | 282 | tftp* m_Retry; |
283 | void OnRetry(); | 283 | void OnRetry(); |
284 | BOOL CheckBadRelativeness(LPCTSTR file); | 284 | BOOL CheckBadRelativeness(LPCTSTR file); |
285 | CString ApplyRootGently(LPCTSTR fn); | 285 | CString ApplyRootGently(LPCTSTR fn); |
286 | CString m_HostName; | 286 | CString m_HostName; |
287 | virtual void OnResolved(); | 287 | virtual void OnResolved(); |
288 | virtual void OnFailedToResolve(); | 288 | virtual void OnFailedToResolve(); |
289 | CResolver *m_wndResolver; | 289 | CResolver *m_wndResolver; |
290 | BYTE m_ResolveBuff[MAXGETHOSTSTRUCT]; | 290 | BYTE m_ResolveBuff[MAXGETHOSTSTRUCT]; |
291 | virtual void Abort(); | 291 | virtual void Abort(); |
292 | void ResetTimeout(); | 292 | void ResetTimeout(); |
293 | enum{ | 293 | enum{ |
294 | stateNone, stateDeny, stateInit, stateOACK, stateXfer, stateFinish, stateClosing | 294 | stateNone, stateDeny, stateInit, stateOACK, stateXfer, stateFinish, stateClosing |
295 | }; | 295 | }; |
296 | int state; | 296 | int state; |
297 | void Deny(UINT errCode,UINT errID); | 297 | void Deny(UINT errCode,UINT errID); |
298 | void Deny(CFileException* e); | 298 | void Deny(CFileException* e); |
299 | CString ApplyRoot(LPCTSTR fileName); | 299 | CString ApplyRoot(LPCTSTR fileName); |
300 | void TurnSlashes(CString& fn,BOOL bBack=TRUE); | 300 | void TurnSlashes(CString& fn,BOOL bBack=TRUE); |
301 | virtual void Destroy(BOOL success=TRUE); | 301 | virtual void Destroy(BOOL success=TRUE); |
302 | void PostError(CFileException* e); | 302 | void PostError(CFileException* e); |
303 | void PostError(UINT errCode,UINT errID); | 303 | void PostError(UINT errCode,UINT errID); |
304 | void PostTFTP(tftp* p,BOOL retryable=FALSE); | 304 | void PostTFTP(tftp* p,BOOL retryable=FALSE); |
305 | CXferSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN* sin); | 305 | CXferSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN* sin); |
306 | CFile m_File; | 306 | CFile m_File; |
307 | virtual ULONG GetACK(); | 307 | virtual ULONG GetACK(); |
308 | CString m_Type; | 308 | CString m_Type; |
309 | CString m_FileName; | 309 | CString m_FileName; |
310 | CXferSocket(); | 310 | CXferSocket(); |
311 | void UpdateList(); | 311 | void UpdateList(); |
312 | void SetPeer(SOCKADDR_IN *sin); | 312 | void SetPeer(SOCKADDR_IN *sin); |
313 | virtual BOOL OnTFTP(tftp* p) = 0; | 313 | virtual BOOL OnTFTP(tftp* p) = 0; |
314 | virtual void OnReceive(int nErrorCode); | 314 | virtual void OnReceive(int nErrorCode); |
315 | void DoSelect(); | 315 | void DoSelect(BOOL do_select=FALSE); |
316 | SOCKADDR_IN m_Peer; | 316 | SOCKADDR_IN m_Peer; |
317 | virtual void OnSend(int nErrorCode); | 317 | virtual void OnSend(int nErrorCode); |
318 | CPumpKINDlg* m_Daddy; | 318 | CPumpKINDlg* m_Daddy; |
319 | CTFTPList m_Queue; | 319 | CTFTPList m_Queue; |
320 | 320 | ||
321 | DECLARE_DYNAMIC(CXferSocket) | 321 | DECLARE_DYNAMIC(CXferSocket) |
322 | }; | 322 | }; |
323 | class CWRQSocket : public CXferSocket { | 323 | class CWRQSocket : public CXferSocket { |
324 | public: | 324 | public: |
325 | BOOL m_bResume; | 325 | BOOL m_bResume; |
326 | void OnHostKnown(); | 326 | void OnHostKnown(); |
327 | virtual void OnResolved(); | 327 | virtual void OnResolved(); |
328 | UINT m_LastSlack; | 328 | UINT m_LastSlack; |
329 | ULONG GetACK(); | 329 | ULONG GetACK(); |
330 | void DoXfer(); | 330 | void DoXfer(); |
331 | UINT m_ACK; | 331 | UINT m_ACK; |
332 | BOOL SaveAs(CString& fn); | 332 | BOOL SaveAs(CString& fn); |
333 | BOOL RenameFile(CString& fn); | 333 | BOOL RenameFile(CString& fn); |
334 | BOOL m_Rename; | 334 | BOOL m_Rename; |
335 | BOOL ConfirmRequest(); | 335 | BOOL ConfirmRequest(); |
336 | BOOL Create(LPCTSTR localFile=NULL,LPCTSTR hostName=NULL); | 336 | BOOL Create(LPCTSTR localFile=NULL,LPCTSTR hostName=NULL); |
337 | CWRQSocket(CPumpKINDlg* daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin); | 337 | CWRQSocket(CPumpKINDlg* daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin); |
338 | BOOL OnTFTP(tftp* p); | 338 | BOOL OnTFTP(tftp* p); |
339 | 339 | ||
340 | DECLARE_DYNAMIC(CWRQSocket) | 340 | DECLARE_DYNAMIC(CWRQSocket) |
341 | }; | 341 | }; |
342 | class CRRQSocket : public CXferSocket { | 342 | class CRRQSocket : public CXferSocket { |
343 | public: | 343 | public: |
344 | UINT m_ACKtoClose; | ||
344 | void OnHostKnown(); | 345 | void OnHostKnown(); |
345 | virtual void OnResolved(); | 346 | virtual void OnResolved(); |
346 | BOOL ConfirmRequest(); | 347 | BOOL ConfirmRequest(); |
347 | WORD m_LastSlack; | 348 | WORD m_LastSlack; |
348 | UINT m_ACK; | 349 | UINT m_ACK; |
349 | BOOL OnTFTP(tftp* p); | 350 | BOOL OnTFTP(tftp* p); |
350 | ULONG GetACK(void); | 351 | ULONG GetACK(void); |
351 | void DoXfer(); | 352 | void DoXfer(); |
352 | CRRQSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin); | 353 | CRRQSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin); |
353 | BOOL Create(LPCTSTR localFile=NULL,LPCTSTR hostName=NULL); | 354 | BOOL Create(LPCTSTR localFile=NULL,LPCTSTR hostName=NULL); |
354 | 355 | ||
355 | DECLARE_DYNAMIC(CRRQSocket) | 356 | DECLARE_DYNAMIC(CRRQSocket) |
356 | }; | 357 | }; |
357 | 358 | ||
358 | typedef CMap<SOCKET,SOCKET,CXferSocket*,CXferSocket*>CTIDMap; | 359 | typedef CMap<SOCKET,SOCKET,CXferSocket*,CXferSocket*>CTIDMap; |
359 | typedef CMap<CTime*,CTime*,CTime*,CTime*> CTimeMap; | 360 | typedef CMap<CTime*,CTime*,CTime*,CTime*> CTimeMap; |
360 | 361 | ||
361 | ///////////////////////////////////////////////////////////////////////////// | 362 | ///////////////////////////////////////////////////////////////////////////// |
362 | // CPumpKINDlg dialog | 363 | // CPumpKINDlg dialog |
363 | 364 | ||
364 | class CTrayer; | 365 | class CTrayer; |
365 | class CRetrier; | 366 | class CRetrier; |
366 | class CPumpKINDlg : public CDialog | 367 | class CPumpKINDlg : public CDialog |
367 | { | 368 | { |
368 | // Construction | 369 | // Construction |
369 | public: | 370 | public: |
370 | void AdjustButton(CWnd& w,CRect& wrc); | 371 | void AdjustButton(CWnd& w,CRect& wrc); |
371 | void RecalcLayout(int,int); | 372 | void RecalcLayout(int,int); |
372 | CSize m_MinSize; | 373 | CSize m_MinSize; |
373 | UINT m_bottomGapLog; | 374 | UINT m_bottomGapLog; |
374 | UINT m_bottomGapListen; | 375 | UINT m_bottomGapListen; |
375 | UINT m_rightGapList; | 376 | UINT m_rightGapList; |
376 | UINT m_rightGapButtons; | 377 | UINT m_rightGapButtons; |
377 | CString m_lastlogerr; | 378 | CString m_lastlogerr; |
378 | void LogLine(LPCTSTR str); | 379 | void LogLine(LPCTSTR str); |
379 | CString m_LogFile; | 380 | CString m_LogFile; |
380 | BOOL m_bListen; | 381 | BOOL m_bListen; |
381 | acl_rules_t m_aclRules; | 382 | acl_rules_t m_aclRules; |
382 | CString m_bnwRequest; | 383 | CString m_bnwRequest; |
383 | CString m_bnwSuccess; | 384 | CString m_bnwSuccess; |
384 | CString m_bnwAbort; | 385 | CString m_bnwAbort; |
385 | CBellsNWhistles m_bnw; | 386 | CBellsNWhistles m_bnw; |
386 | CTrayer *m_Trayer; | 387 | CTrayer *m_Trayer; |
387 | CTimeSpan m_RetryTimeOut; | 388 | CTimeSpan m_RetryTimeOut; |
388 | virtual ~CPumpKINDlg(); | 389 | virtual ~CPumpKINDlg(); |
389 | CRetrier* m_Retrier; | 390 | CRetrier* m_Retrier; |
390 | virtual BOOL PreTranslateMessage(MSG* pMsg); | 391 | virtual BOOL PreTranslateMessage(MSG* pMsg); |
391 | BOOL m_bShown; | 392 | BOOL m_bShown; |
392 | BOOL m_bExiting; | 393 | BOOL m_bExiting; |
393 | void SaveSettings(); | 394 | void SaveSettings(); |
394 | void LoadSettings(); | 395 | void LoadSettings(); |
395 | void SetupButtons(); | 396 | void SetupButtons(); |
396 | BITMAP m_bitmapBack; | 397 | BITMAP m_bitmapBack; |
397 | CBitmap m_bmpBack; | 398 | CBitmap m_bmpBack; |
398 | UINT m_PromptTimeOut; | 399 | UINT m_PromptTimeOut; |
399 | UINT m_SpeakPort; | 400 | UINT m_SpeakPort; |
400 | void LogLine(UINT msgID); | 401 | void LogLine(UINT msgID); |
401 | CTimeMap m_LogTimes; | 402 | CTimeMap m_LogTimes; |
402 | void LogLineToFile(LPCTSTR str); | 403 | void LogLineToFile(LPCTSTR str); |
403 | void LogLineToScreen(LPCTSTR str); | 404 | void LogLineToScreen(LPCTSTR str); |
404 | int m_LogLength; | 405 | int m_LogLength; |
405 | enum{ | 406 | enum{ |
406 | subitemFile=0, subitemType, subitemPeer, subitemBytes, subitemTSize | 407 | subitemFile=0, subitemType, subitemPeer, subitemBytes, subitemTSize |
407 | }; | 408 | }; |
408 | int m_iWRQ; | 409 | int m_iWRQ; |
409 | int m_iRRQ; | 410 | int m_iRRQ; |
410 | CImageList m_Images; | 411 | CImageList m_Images; |
411 | CTIDMap m_Xfers; | 412 | CTIDMap m_Xfers; |
412 | CTimeSpan m_TFTPTimeOut; | 413 | CTimeSpan m_TFTPTimeOut; |
413 | enum{ | 414 | enum{ |
414 | rrqGiveAll=acl_rule::rrqGrant, | 415 | rrqGiveAll=acl_rule::rrqGrant, |
415 | rrqAlwaysConfirm=acl_rule::rrqPrompt, | 416 | rrqAlwaysConfirm=acl_rule::rrqPrompt, |
416 | rrqDenyAll=acl_rule::rrqDeny, | 417 | rrqDenyAll=acl_rule::rrqDeny, |
417 | rrqFallback=acl_rule::rrqNone, | 418 | rrqFallback=acl_rule::rrqNone, |
418 | rrqGrant=rrqGiveAll, rrqDeny=rrqDenyAll, rrqPrompt=rrqAlwaysConfirm | 419 | rrqGrant=rrqGiveAll, rrqDeny=rrqDenyAll, rrqPrompt=rrqAlwaysConfirm |
419 | }; | 420 | }; |
420 | enum{ | 421 | enum{ |
421 | wrqTakeAll=acl_rule::wrqGrant, | 422 | wrqTakeAll=acl_rule::wrqGrant, |
422 | wrqConfirmIfExists=acl_rule::wrqPromptIfExists, | 423 | wrqConfirmIfExists=acl_rule::wrqPromptIfExists, |
423 | wrqAlwaysConfirm=acl_rule::wrqPrompt, | 424 | wrqAlwaysConfirm=acl_rule::wrqPrompt, |
424 | wrqDenyAll=acl_rule::wrqDeny, | 425 | wrqDenyAll=acl_rule::wrqDeny, |
425 | wrqFallback=acl_rule::wrqNone, | 426 | wrqFallback=acl_rule::wrqNone, |
426 | wrqGrant=wrqTakeAll,wrqDeny=wrqDenyAll, wrqPrompt=wrqAlwaysConfirm | 427 | wrqGrant=wrqTakeAll,wrqDeny=wrqDenyAll, wrqPrompt=wrqAlwaysConfirm |
427 | }; | 428 | }; |
428 | UINT m_RRQMode; | 429 | UINT m_RRQMode; |
429 | UINT m_WRQMode; | 430 | UINT m_WRQMode; |
430 | BOOL m_bTFTPSubdirs; | 431 | BOOL m_bTFTPSubdirs; |
431 | CString m_TFTPRoot; | 432 | CString m_TFTPRoot; |
432 | UINT m_ListenPort; | 433 | UINT m_ListenPort; |
433 | UINT m_BlockSize; | 434 | UINT m_BlockSize; |
434 | CListenSocket m_Listener; | 435 | CListenSocket m_Listener; |
435 | CPumpKINDlg(CWnd* pParent = NULL);// standard constructor | 436 | CPumpKINDlg(CWnd* pParent = NULL);// standard constructor |
436 | 437 | ||
437 | // Dialog Data | 438 | // Dialog Data |
438 | //{{AFX_DATA(CPumpKINDlg) | 439 | //{{AFX_DATA(CPumpKINDlg) |
439 | enum { IDD = IDD_PUMPKIN_DIALOG }; | 440 | enum { IDD = IDD_PUMPKIN_DIALOG }; |
440 | CButtonm_HelpCtl; | 441 | CButtonm_HelpCtl; |
441 | CButtonm_PutCtl; | 442 | CButtonm_PutCtl; |
442 | CButtonm_GetCtl; | 443 | CButtonm_GetCtl; |
443 | CButtonm_ExitCtl; | 444 | CButtonm_ExitCtl; |
444 | CButtonm_ListenCtl; | 445 | CButtonm_ListenCtl; |
445 | CButtonm_AbortCtl; | 446 | CButtonm_AbortCtl; |
446 | CButtonm_OptionsCtl; | 447 | CButtonm_OptionsCtl; |
447 | CListBoxm_Log; | 448 | CListBoxm_Log; |
448 | CListCtrlm_List; | 449 | CListCtrlm_List; |
449 | //}}AFX_DATA | 450 | //}}AFX_DATA |
450 | 451 | ||
451 | // ClassWizard generated virtual function overrides | 452 | // ClassWizard generated virtual function overrides |
452 | //{{AFX_VIRTUAL(CPumpKINDlg) | 453 | //{{AFX_VIRTUAL(CPumpKINDlg) |
453 | protected: | 454 | protected: |
454 | virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support | 455 | virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support |
455 | //}}AFX_VIRTUAL | 456 | //}}AFX_VIRTUAL |
456 | 457 | ||
457 | // Implementation | 458 | // Implementation |
458 | protected: | 459 | protected: |
459 | CToolTipCtrl m_tooltip; | 460 | CToolTipCtrl m_tooltip; |
460 | HICON m_hIcon; | 461 | HICON m_hIcon; |
461 | 462 | ||
462 | // Generated message map functions | 463 | // Generated message map functions |
463 | //{{AFX_MSG(CPumpKINDlg) | 464 | //{{AFX_MSG(CPumpKINDlg) |
464 | virtual BOOL OnInitDialog(); | 465 | virtual BOOL OnInitDialog(); |
465 | afx_msg void OnSysCommand(UINT nID, LPARAM lParam); | 466 | afx_msg void OnSysCommand(UINT nID, LPARAM lParam); |
466 | afx_msg void OnDestroy(); | 467 | afx_msg void OnDestroy(); |
467 | afx_msg void OnPaint(); | 468 | afx_msg void OnPaint(); |
468 | afx_msg HCURSOR OnQueryDragIcon(); | 469 | afx_msg HCURSOR OnQueryDragIcon(); |
469 | afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); | 470 | afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); |
470 | afx_msg void OnOptions(); | 471 | afx_msg void OnOptions(); |
471 | afx_msg void OnTimer(UINT nIDEvent); | 472 | afx_msg void OnTimer(UINT nIDEvent); |
472 | afx_msg void OnExit(); | 473 | afx_msg void OnExit(); |
473 | afx_msg void OnPut(); | 474 | afx_msg void OnPut(); |
474 | afx_msg void OnGet(); | 475 | afx_msg void OnGet(); |
475 | afx_msg void OnDeleteallitemsConnections(NMHDR* pNMHDR, LRESULT* pResult); | 476 | afx_msg void OnDeleteallitemsConnections(NMHDR* pNMHDR, LRESULT* pResult); |
476 | afx_msg void OnDeleteitemConnections(NMHDR* pNMHDR, LRESULT* pResult); | 477 | afx_msg void OnDeleteitemConnections(NMHDR* pNMHDR, LRESULT* pResult); |
477 | afx_msg void OnInsertitemConnections(NMHDR* pNMHDR, LRESULT* pResult); | 478 | afx_msg void OnInsertitemConnections(NMHDR* pNMHDR, LRESULT* pResult); |
478 | afx_msg void OnItemchangedConnections(NMHDR* pNMHDR, LRESULT* pResult); | 479 | afx_msg void OnItemchangedConnections(NMHDR* pNMHDR, LRESULT* pResult); |
479 | afx_msg void OnAbort(); | 480 | afx_msg void OnAbort(); |
480 | afx_msg void OnClose(); | 481 | afx_msg void OnClose(); |
481 | afx_msg void OnTrayShowpumpkinwindow(); | 482 | afx_msg void OnTrayShowpumpkinwindow(); |
482 | afx_msg void OnTrayListen(); | 483 | afx_msg void OnTrayListen(); |
483 | afx_msg void OnTrayExit(); | 484 | afx_msg void OnTrayExit(); |
484 | afx_msg void OnTrayAboutpumpkin(); | 485 | afx_msg void OnTrayAboutpumpkin(); |
485 | afx_msg void OnTrayFetchfile(); | 486 | afx_msg void OnTrayFetchfile(); |
486 | afx_msg void OnTrayHelp(); | 487 | afx_msg void OnTrayHelp(); |
487 | afx_msg void OnTrayOptions(); | 488 | afx_msg void OnTrayOptions(); |
488 | afx_msg void OnTraySendfile(); | 489 | afx_msg void OnTraySendfile(); |
489 | afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos); | 490 | afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos); |
490 | afx_msg void OnSelchangeLog(); | 491 | afx_msg void OnSelchangeLog(); |
491 | afx_msg void OnTrayOpenfilesfolder(); | 492 | afx_msg void OnTrayOpenfilesfolder(); |
492 | afx_msg void OnDropFiles(HDROP hDropInfo); | 493 | afx_msg void OnDropFiles(HDROP hDropInfo); |
493 | virtual void OnCancel(); | 494 | virtual void OnCancel(); |
494 | afx_msg void OnHelp(); | 495 | afx_msg void OnHelp(); |
495 | afx_msg void OnListening(); | 496 | afx_msg void OnListening(); |
496 | afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI); | 497 | afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI); |
497 | afx_msg void OnSize(UINT nType, int cx, int cy); | 498 | afx_msg void OnSize(UINT nType, int cx, int cy); |
498 | //}}AFX_MSG | 499 | //}}AFX_MSG |
499 | DECLARE_MESSAGE_MAP() | 500 | DECLARE_MESSAGE_MAP() |
500 | }; | 501 | }; |