PageYou.cpp
上传用户:geanq888
上传日期:2007-01-03
资源大小:316k
文件大小:10k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. // PageYou.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "NetManager.h"
  5. #include "PageYou.h"
  6. #include "GlobalsExtern.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. UINT g_FileUpload(LPVOID);
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CPageYou property page
  15. IMPLEMENT_DYNCREATE(CPageYou, CPropertyPage)
  16. CPageYou::CPageYou() : CPropertyPage(CPageYou::IDD)
  17. {
  18. //{{AFX_DATA_INIT(CPageYou)
  19. m_sServerName = _T("");
  20. m_sDestination = _T("");
  21. m_sDestinationDir = _T("");
  22. m_sPassword = _T("");
  23. m_sUserName = _T("");
  24. m_sSourceFile1 = _T("");
  25. m_sSourceFile2 = _T("");
  26. m_sIP = _T("");
  27. m_sIPName = _T("");
  28. m_sDate = _T("");
  29. m_sTagDate = _T("");
  30. m_sTagMachine = _T("");
  31. m_bWithAddress = FALSE;
  32. m_bWithDate = FALSE;
  33. m_bOfflineOnEnd = FALSE;
  34. m_bOnlineOnStart = FALSE;
  35. //}}AFX_DATA_INIT
  36. }
  37. CPageYou::~CPageYou()
  38. {
  39. }
  40. void CPageYou::DoDataExchange(CDataExchange* pDX)
  41. {
  42. CPropertyPage::DoDataExchange(pDX);
  43. //{{AFX_DATA_MAP(CPageYou)
  44. DDX_Control(pDX, IDC_IPNAME, m_IPName);
  45. DDX_Control(pDX, IDC_IP, m_IP);
  46. DDX_Control(pDX, IDC_DATE, m_Date);
  47. DDX_Control(pDX, IDC_SOURCEFILE2, m_SourceFile2);
  48. DDX_Control(pDX, IDC_SOURCEFILE1, m_SourceFile1);
  49. DDX_Text(pDX, IDC_FTPSERVER, m_sServerName);
  50. DDX_Text(pDX, IDC_DESTINATION, m_sDestination);
  51. DDX_Text(pDX, IDC_DESTINATIONDIR, m_sDestinationDir);
  52. DDX_Text(pDX, IDC_FTPPASSWORD, m_sPassword);
  53. DDX_Text(pDX, IDC_FTPUSERNAME, m_sUserName);
  54. DDX_Text(pDX, IDC_SOURCEFILE1, m_sSourceFile1);
  55. DDX_Text(pDX, IDC_SOURCEFILE2, m_sSourceFile2);
  56. DDX_Text(pDX, IDC_IP, m_sIP);
  57. DDX_Text(pDX, IDC_IPNAME, m_sIPName);
  58. DDX_Text(pDX, IDC_DATE, m_sDate);
  59. DDX_Text(pDX, IDC_TAG_DATE, m_sTagDate);
  60. DDX_Text(pDX, IDC_TAG_MACHINE, m_sTagMachine);
  61. DDX_Check(pDX, IDC_WITH_ADDRESS, m_bWithAddress);
  62. DDX_Check(pDX, IDC_WITH_DATE, m_bWithDate);
  63. DDX_Check(pDX, IDC_OFFLINE_ONEND, m_bOfflineOnEnd);
  64. DDX_Check(pDX, IDC_ONLINE_ONSTART, m_bOnlineOnStart);
  65. //}}AFX_DATA_MAP
  66. }
  67. BEGIN_MESSAGE_MAP(CPageYou, CPropertyPage)
  68. //{{AFX_MSG_MAP(CPageYou)
  69. ON_BN_CLICKED(IDB_ONLINE, OnOnline)
  70. ON_BN_CLICKED(IDB_OFFLINE, OnOffline)
  71. ON_BN_CLICKED(IDB_BROWSE_OFF, OnBrowseOff)
  72. ON_BN_CLICKED(IDB_BROWSE_ON, OnBrowseOn)
  73. //}}AFX_MSG_MAP
  74. END_MESSAGE_MAP()
  75. /////////////////////////////////////////////////////////////////////////////
  76. // CPageYou message handlers
  77. BOOL CPageYou::OnInitDialog() 
  78. {
  79. CPropertyPage::OnInitDialog();
  80.   m_ToolTip.Create(this);
  81.   m_ToolTip.Activate(TRUE);
  82.   CWnd* pWnd = GetWindow(GW_CHILD);
  83.   while(pWnd)
  84.   {
  85.     int nID = pWnd->GetDlgCtrlID();
  86.     if (nID != -1)
  87.       m_ToolTip.AddTool(pWnd, pWnd->GetDlgCtrlID());
  88.     pWnd = pWnd->GetWindow(GW_HWNDNEXT);
  89.   }
  90.   CTime LoginTime = CTime::GetCurrentTime();
  91.   CString sLoginTime = LoginTime.Format("%A, %B %d, %Y, %H:%M:%S");
  92.   m_Date.SetWindowText(sLoginTime);
  93. return TRUE;  // return TRUE unless you set the focus to a control
  94.               // EXCEPTION: OCX Property Pages should return FALSE
  95. }
  96. /////////////////////////////////////////////////////////////////////////////
  97. void CPageYou::OnBrowseOn() 
  98. {
  99.   UpdateData();
  100.   CFileDialog BrowseDialog(TRUE);
  101.   if(BrowseDialog.DoModal() == IDOK)
  102.   {
  103.     m_sSourceFile1 = BrowseDialog.GetPathName();
  104.     m_SourceFile1.SetWindowText(m_sSourceFile1);
  105.   }
  106. }
  107. /////////////////////////////////////////////////////////////////////////////
  108. void CPageYou::OnBrowseOff() 
  109. {
  110.   UpdateData();
  111.   CFileDialog BrowseDialog(TRUE);
  112.   if(BrowseDialog.DoModal() == IDOK)
  113.   {
  114.     m_sSourceFile2 = BrowseDialog.GetPathName();
  115.     m_SourceFile2.SetWindowText(m_sSourceFile2);
  116.   }
  117. }
  118. /////////////////////////////////////////////////////////////////////////////
  119. void CPageYou::OnOnline() 
  120. {
  121.   UpdateData();
  122.   CStringArray* pasUpload = new CStringArray;
  123.   CString sWithDate = "";
  124.   CString sWithAddress = "";
  125.   if(m_bWithDate)
  126.     sWithDate = "YES";
  127.   if(m_bWithAddress)
  128.     sWithAddress = "YES";
  129.   pasUpload->Add(m_sSourceFile1);
  130.   pasUpload->Add("[You]: Now you are On-line");
  131.   pasUpload->Add(m_sServerName);
  132.   pasUpload->Add(m_sUserName);
  133.   pasUpload->Add(m_sPassword);
  134.   pasUpload->Add(m_sDestinationDir);
  135.   pasUpload->Add(m_sDestination);
  136.   pasUpload->Add(m_sIPName);
  137.   pasUpload->Add(m_sIP);
  138.   pasUpload->Add(m_sTagDate);
  139.   pasUpload->Add(m_sTagMachine);
  140.   pasUpload->Add(sWithDate);
  141.   pasUpload->Add(sWithAddress);
  142.   AfxBeginThread(g_FileUpload, pasUpload);
  143. }
  144. /////////////////////////////////////////////////////////////////////////////
  145. void CPageYou::OnOffline()
  146. {
  147.   UpdateData();
  148.   CStringArray* pasUpload = new CStringArray;
  149.   CString sWithDate = "";
  150.   CString sWithAddress = "";
  151.   if(m_bWithDate)
  152.     sWithDate = "YES";
  153.   if(m_bWithAddress)
  154.     sWithAddress = "YES";
  155.   pasUpload->Add(m_sSourceFile2);
  156.   pasUpload->Add("[You]: Now you are Off-line");
  157.   pasUpload->Add(m_sServerName);
  158.   pasUpload->Add(m_sUserName);
  159.   pasUpload->Add(m_sPassword);
  160.   pasUpload->Add(m_sDestinationDir);
  161.   pasUpload->Add(m_sDestination);
  162.   pasUpload->Add(m_sIPName);
  163.   pasUpload->Add(m_sIP);
  164.   pasUpload->Add(m_sTagDate);
  165.   pasUpload->Add(m_sTagMachine);
  166.   pasUpload->Add(sWithDate);
  167.   pasUpload->Add(sWithAddress);
  168.   AfxBeginThread(g_FileUpload, pasUpload);
  169. }
  170. /////////////////////////////////////////////////////////////////////////////
  171. UINT g_FileUpload(LPVOID pParam)
  172. {
  173.   CStringArray* pasUpload = ((CStringArray*)pParam);
  174.   CString sFilePath = pasUpload->GetAt(0);
  175.   CString sOutputText = pasUpload->GetAt(1);
  176.   CString sServerName = pasUpload->GetAt(2);
  177.   CString sUserName = pasUpload->GetAt(3);
  178.   CString sPassword = pasUpload->GetAt(4);
  179.   CString sDestinationDir = pasUpload->GetAt(5);
  180.   CString sDestination = pasUpload->GetAt(6);
  181.   CString sIPName = pasUpload->GetAt(7);
  182.   CString sIP = pasUpload->GetAt(8);
  183.   CString sTagDate = pasUpload->GetAt(9);
  184.   CString sTagMachine = pasUpload->GetAt(10);
  185.   CString sWithDate = pasUpload->GetAt(11);
  186.   CString sWithAddress = pasUpload->GetAt(12);
  187.   pasUpload->RemoveAll();
  188.   delete pasUpload;
  189.   g_AnimateWait->Play(0, -1, -1);
  190.   CInternetSession INetSect(AfxGetAppName(), 0, INTERNET_OPEN_TYPE_DIRECT);
  191.   CFtpConnection* pFtpConn;
  192.   TRY
  193.   {
  194.     if(pFtpConn = INetSect.GetFtpConnection(sServerName, sUserName, sPassword))
  195.     {
  196.       if(sDestinationDir != "")
  197.       {  
  198.         if(!pFtpConn->SetCurrentDirectory(sDestinationDir))
  199.           g_WriteToHistory(TRUE, "[You]: Error - Change FTP Directory");
  200.       }
  201.       CInternetFile* pFtpFile;
  202.       pFtpFile = pFtpConn->OpenFile(sDestination, GENERIC_WRITE);
  203.       if(pFtpFile)
  204.       {
  205.         CTime LoginTime = CTime::GetCurrentTime();
  206.         CString sLoginTime = "";
  207.         if(sWithDate == "YES")
  208.           sLoginTime = LoginTime.Format("%A, %B %d, %Y, %H:%M:%S");
  209.         CString sMachine = "";
  210.         if(sWithAddress == "YES")
  211.           sMachine = sIPName + " - " + sIP;
  212.         CString sBuffer;
  213.         CStdioFile CInputFile;
  214.         CInputFile.Open(sFilePath, CFile::modeRead);
  215.         int nTimePos;
  216.         bool bTagDateFound = FALSE;
  217.         bool bTagMachineFound = FALSE;
  218.         while(CInputFile.ReadString(sBuffer))
  219.         {
  220.           if((nTimePos = sBuffer.Find(sTagDate)) != -1)
  221.           {
  222.             sBuffer = sBuffer.Left(nTimePos) + sLoginTime + sBuffer.Right(sBuffer.GetLength() - nTimePos - 6);
  223.             bTagDateFound = TRUE;
  224.           }
  225.           if((nTimePos = sBuffer.Find(sTagMachine)) != -1)
  226.           {
  227.             sBuffer = sBuffer.Left(nTimePos) + sMachine + sBuffer.Right(sBuffer.GetLength() - nTimePos - 9);
  228.             bTagMachineFound = TRUE;
  229.           }
  230.           sBuffer += (char)0xa;
  231.           pFtpFile->WriteString(sBuffer);
  232.         }
  233.         pFtpFile->Close();
  234.         if(!bTagDateFound)
  235.           AfxMessageBox("[You]: The tag " + sTagDate + " not found in " + sFilePath);
  236.         if(!bTagMachineFound)
  237.           AfxMessageBox("[You]: The tag " + sTagMachine + " not found in " + sFilePath);
  238.         g_WriteToHistory(TRUE, sOutputText);
  239.       }
  240.       else
  241.         g_WriteToHistory(TRUE, "[You]: Error - Upload File");
  242.     }
  243.     else
  244.       g_WriteToHistory(TRUE, "[You]: Error - Opening FTP");
  245.   }
  246.   CATCH(CInternetException, pe)
  247.   {
  248.     TCHAR szCause[255];
  249.     pe->GetErrorMessage(szCause, 255);
  250.     CString sError = "[You]: Error - ";
  251.     sError += szCause;
  252.     g_WriteToOutput(FALSE, sError);
  253.   }
  254.   CATCH(CFileException, pe)
  255.   {
  256.     TCHAR szCause[255];
  257.     pe->GetErrorMessage(szCause, 255);
  258.     CString sError = "[You]: Error - ";
  259.     sError += szCause;
  260.     g_WriteToOutput(FALSE, sError);
  261.   }
  262.   END_CATCH;
  263.   INetSect.Close();
  264.   return 0;
  265. }
  266. /////////////////////////////////////////////////////////////////////////////
  267. BOOL CPageYou::PreTranslateMessage(MSG* pMsg) 
  268. {
  269.   // transate the message based on TTM_WINDOWFROMPOINT
  270.   MSG msg = *pMsg;
  271.   msg.hwnd = (HWND)m_ToolTip.SendMessage(TTM_WINDOWFROMPOINT, 0, (LPARAM)&msg.pt);
  272.   CPoint pt = pMsg->pt;
  273.   if (msg.message >= WM_MOUSEFIRST && msg.message <= WM_MOUSELAST)
  274.           ::ScreenToClient(msg.hwnd, &pt);
  275.   msg.lParam = MAKELONG(pt.x, pt.y);
  276.   // Let the ToolTip process this message.
  277.   m_ToolTip.RelayEvent(&msg);
  278.   if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
  279.     NextDlgCtrl();
  280. return CPropertyPage::PreTranslateMessage(pMsg);
  281. }
  282. /////////////////////////////////////////////////////////////////////////////
  283. void CPageYou::Serialize(CArchive& ar) 
  284. {
  285. if (ar.IsStoring())
  286. { // storing code
  287.   ar << m_sServerName;
  288.   ar << m_sDestination;
  289.   ar << m_sDestinationDir;
  290.   ar << m_sPassword;
  291.   ar << m_sUserName;
  292.   ar << m_sSourceFile1;
  293.   ar << m_sSourceFile2;
  294.   ar << m_sTagDate;
  295.   ar << m_sTagMachine;
  296.   ar << m_bOnlineOnStart;
  297.   ar << m_bOfflineOnEnd;
  298.   ar << m_bWithAddress;
  299.   ar << m_bWithDate;
  300. }
  301. else
  302. { // loading code
  303.   ar >> m_sServerName;
  304.   ar >> m_sDestination;
  305.   ar >> m_sDestinationDir;
  306.   ar >> m_sPassword;
  307.   ar >> m_sUserName;
  308.   ar >> m_sSourceFile1;
  309.   ar >> m_sSourceFile2;
  310.   ar >> m_sTagDate;
  311.   ar >> m_sTagMachine;
  312.     ar >> m_bOnlineOnStart;
  313.     ar >> m_bOfflineOnEnd;
  314.     ar >> m_bWithAddress;
  315.     ar >> m_bWithDate;
  316. }
  317. }
  318. /////////////////////////////////////////////////////////////////////////////