#pragma once /*--------------------------------------------------------------------------------------- * $Id: SysParse.h 30 2009-11-29 23:38:12Z krkim $ $Revision: 30 $ * $HeadURL: http://krkim-laptop/svn/DuruEdit/Src/DEFTP/SysParse.h $ *Duru FTP Engine Class for RFC959 (Pure FTP only) *krkim이 두루에디트 완벽한 FTP 기능을 위해 2010.05.10~2010.05.17 구현한 것 *프로토콜 참고 싸이트 http://ftpguide.com *각목의 UNIX FTP 환경에서 목록오류가 나타나 더이상 MS의 WinINet함수를 *사용하지 못하게 되었다.물론 편법으로 FtpCommand함수를 이용해 끼워넣기 *하면 되지만,방화벽 지원,그리고 다양한 서버타입,완벽한 passive,FTP 통신 *로그등을 보여주고 추후 GNUTLS를 이용한 FTPS나 SSH를 이용한 SFTP등의 확장성 *도 고려해서 RFC959 프로토콜을 직접 구현하는 편이 나았다. *http://www.durumul.com,http://krkim.net *yeamaec@hanafos.com, ns.quasar@gmail.com *Copyrights (c) 2010.05.15 krkim Allrights reserved. *RFC959 FTP Spec with Passive Mode Support *FTPS(Fillezilla)와 SFTP(Putty)는 차후 필요성과 씀씀이 정도를 보아 지원 하기로 미룬다. *좀더,아니 확실히 더 복잡하기 때문이기도 함 ^^ ---------------------------------------------------------------------------------------*/ #include "DEFTP.h" /* * SYST Parse */ class PFAPI SysParse { public: SysParse(); virtual ~SysParse(); protected: DFServerType m_serverType; int findmonth(char *str); BOOL isnumber(char *str); char *findspace(char *str); char *getcolumnstr(char *linebuff, int column,bool includeremain = false); int ParseLine(char *linebuff,int serverType,DFDirEntry &item); int ParseAsUnix(char *str, DFDirEntry *entry); int ParseAsDos(char *linebuff, DFDirEntry *entry); int ParseAsVms(char *linebuff, DFDirEntry *entry); int ParseAsIbm(char *linebuff, DFDirEntry *entry); int ParseAsWfFtp(char *linebuff, DFDirEntry *entry); public: int ParseDir(char *linebuff,char *syst,DFServerType servertype,DFDirEntry *item); DFFileMode CheckFileType(LPSTR filename); };