// testAppDlg.cpp : Implementierungsdatei // #include "stdafx.h" #include "testApp.h" #include "testAppDlg.h" #include "DlgEnterFilename.h" /* * Call Back */ int FtpTransfer(char * curFilename, int totalbytes, int totalfiles, int percentcomplete, void *userPtr ) { DebugOutLn("FTP Transfer: %s, %d %%percent complete", curFilename, percentcomplete); // llirq_Sleep(100); return 0; } int CFTPThread::Main() { int size = 0; DebugOutLn("CFTPThread::Main"); llfile_current_stream = m_ftp_stream; void * ftpfile = llfile_LoadToMem(m_file,&size); if( ftpfile && size != 0 ){ CString savefilename; char * P = strrchr(m_file,'/'); if( P == 0 ){ P = strrchr(m_file,'\\'); } if( P != 0 ) savefilename = P+1; else savefilename = m_file; CStdioFile logfile( savefilename, CFile::modeCreate|CFile::modeWrite|CFile::typeBinary ); logfile.Write(ftpfile,size); logfile.Close(); DebugOutLn("Written %d bytes to file %s",size,savefilename); } ftpfile = llfile_LoadToMem(m_file,&size); DebugOutLn("file 2 %x",ftpfile); if( ftpfile && size != 0 ){ CString savefilename; char * P = strrchr(m_file,'/'); if( P == 0 ){ P = strrchr(m_file,'\\'); } if( P != 0 ) savefilename = P+1; else savefilename = m_file; CStdioFile logfile( savefilename, CFile::modeCreate|CFile::modeWrite|CFile::typeBinary ); logfile.Write(ftpfile,size); logfile.Close(); DebugOutLn("Written %d bytes to file %s",size,savefilename); } //Close FTP llfile_CloseStream(m_ftp_stream); return 0; } ///////////////////////////////////////////////////////////////////////////// // CTestAppDlg Dialogfeld CTestAppDlg::CTestAppDlg(CWnd* pParent /*=NULL*/) : CDialog(CTestAppDlg::IDD, pParent) { m_filepos = 0; m_inifile.LoadVars("ftpdat.ini"); DebugOutLn("ftpdat.ini loaded"); //{{AFX_DATA_INIT(CTestAppDlg) m_ftp_passwd = m_inifile.GetVarS("ftppasswd",""); m_ftp_server = m_inifile.GetVarS("ftpserver",""); m_ftp_user = m_inifile.GetVarS("ftpuser",""); m_getfile = _T(""); //}}AFX_DATA_INIT m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } CTestAppDlg::~CTestAppDlg() { } void CTestAppDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTestAppDlg) DDX_Control(pDX, IDC_LIST1, m_list); DDX_Text(pDX, IDC_EDIT_FTPPASSWD, m_ftp_passwd); DDX_Text(pDX, IDC_EDIT_FTPSERVER, m_ftp_server); DDX_Text(pDX, IDC_EDIT_FTPUSER, m_ftp_user); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CTestAppDlg, CDialog) //{{AFX_MSG_MAP(CTestAppDlg) ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_WM_TIMER() ON_BN_CLICKED(IDC_BUTTON1, OnConnect) ON_BN_CLICKED(IDC_BUTTON3, OnOK) ON_BN_CLICKED(IDC_BUTTON2, OnGetFile) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CTestAppDlg Nachrichten-Handler BOOL CTestAppDlg::OnInitDialog() { CDialog::OnInitDialog(); unlink( CDebug::m_filename ); SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE); SetTimer(0, 50, 0 ); return TRUE; } void CTestAppDlg::OnPaint() { CDialog::OnPaint(); } HCURSOR CTestAppDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CTestAppDlg::OnOK() { m_inifile.SetVarS("ftppasswd",m_ftp_passwd); m_inifile.SetVarS("ftpuser",m_ftp_user); m_inifile.SetVarS("ftpserver",m_ftp_server); m_inifile.SaveVars("ftpdat.ini"); CDialog::OnOK(); } void CTestAppDlg::OnCancel() { UpdateData(); CDialog::OnCancel(); } void CTestAppDlg::OnTimer(UINT nIDEvent) { try { CStdioFile logfile( CDebug::m_filename, CFile::modeRead ); DWORD currentfilepos = (DWORD)logfile.GetLength(); // Anything changed? if( currentfilepos != m_filepos ) { logfile.Seek( m_filepos, CFile::begin ); CString logfile_line; while( NULL != logfile.ReadString(logfile_line) ) { logfile_line.Replace("\r"," "); m_list.AddString(logfile_line); } m_filepos = (DWORD)logfile.GetLength(); m_list.SetCurSel(m_list.GetCount()-1); } logfile.Close(); } catch (CFileException* e) { } CDialog::OnTimer(nIDEvent); } /* * Connect, Open a Stream */ void CTestAppDlg::OnConnect() { UpdateData(); // Open FTP Stream CString connectstring; connectstring = m_ftp_server + ":" + m_ftp_user + ":" + m_ftp_passwd; llfile_eSTREAM ftpstream = llfile_OpenStream( LLFILE_STREAM_FTP, // Stream Type connectstring // ip:user:pw ); DebugOutLn("llfile_OpenStream(LLFILE_STREAM_FTP,%s)",connectstring); if( ftpstream == (llfile_eSTREAM)0 ){ DebugOutLn("Connect Test failed"); } else { DebugOutLn("Connection success"); llfile_PushModule(ftpstream, new CReadHookModule(81920,FtpTransfer,0), HEAD); char listbuf[2048]; memset(listbuf,0,sizeof(listbuf)); strcpy(listbuf,"/"); // directory list llfile_IoCtlStream(ftpstream,"LIST",listbuf); DebugOutLn("%s",listbuf); llfile_CloseStream(ftpstream); } } void CTestAppDlg::OnGetFile() { DlgEnterFilename dlg; dlg.m_filename = m_inifile.GetVarS("getfile",""); if( IDOK == dlg.DoModal() ){ m_inifile.SetVarS("getfile",dlg.m_filename); // Open FTP Stream CString connectstring; connectstring = m_ftp_server + ":" + m_ftp_user + ":" + m_ftp_passwd; llfile_eSTREAM ftpstream = llfile_OpenStream( LLFILE_STREAM_FTP, // Stream Type connectstring // ip:user:pw ); DebugOutLn("llfile_OpenStream(LLFILE_STREAM_FTP,%s)",connectstring); if( ftpstream == (llfile_eSTREAM)0 ){ DebugOutLn("Connect failed"); } else { DebugOutLn("Connection success"); llfile_PushModule(ftpstream, new CReadHookModule(8192,FtpTransfer,0), HEAD); CFTPThread *ftpt = new CFTPThread(); ftpt->m_ftp_stream = ftpstream; ftpt->m_file = dlg.m_filename; ftpt->Resume(); DebugOutLn("FTP Thread started"); } }// }