#if !defined(AFX_USERMANAGER_H__80FCDEAE_C56D_4E25_998D_8BE0511F7C10__INCLUDED_) #define AFX_USERMANAGER_H__80FCDEAE_C56D_4E25_998D_8BE0511F7C10__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #define FTP_DOWNLOAD 1 #define FTP_UPLOAD 2 #define FTP_RENAME 3 #define FTP_DELETE 4 #define FTP_CREATE_DIR 5 #define FTP_LIST 6 class CDirectory : public CObject { DECLARE_SERIAL(CDirectory) CDirectory(); virtual ~CDirectory(); public: virtual void Serialize(CArchive&); CDirectory (const CDirectory &dir); // copy-constructor CDirectory &operator=(const CDirectory &dir); // =-operator CString m_strDir; // 目录 CString m_strAlias; BOOL m_bAllowDownload; // 可下载 BOOL m_bAllowUpload; // 可上传 BOOL m_bAllowRename; // 可重命名 BOOL m_bAllowDelete; // 可删除 BOOL m_bAllowCreateDirectory; // 可创建 BOOL m_bIsHomeDir; // 是否为主目录 }; class CUser : public CObject { DECLARE_SERIAL(CUser) CUser(); virtual ~CUser(); public: virtual void Serialize(CArchive&); CUser (const CUser &user); // copy-constructor CUser &operator=(const CUser &user); // =-operator CString m_strName; // 帐户 CString m_strPassword; // 密码 CArray m_DirectoryArray; BOOL m_bAccountDisabled; // 是否帐户禁用 }; class CUserManager { public: CUserManager(); virtual ~CUserManager(); void GetUserList(CArray&array); void UpdateUserList(CArray&array); BOOL Serialize(BOOL bStoring); BOOL GetUser(LPCTSTR lpszUser, CUser &user); BOOL ConvertPathToLocal(LPCTSTR lpszUser, CString &strDirectoryIn, CString &strDirectoryOut); int CheckDirectory(LPCTSTR lpszUser, CString dirname, CString strCurrentdir, int nOption, CString &strResult); int CheckFileName(LPCTSTR lpszUser, CString filename, CString strCurrentdir, int nOption, CString &strResult); int ChangeDirectory(LPCTSTR lpszUser, CString ¤tdir, CString &dir); int GetDirectoryList(LPCTSTR lpszUser, LPCTSTR lpszDirectory, CString &strResult); BOOL FileExists(LPCTSTR lpszFileName, const int bIsDirCheck = 1); protected: BOOL CheckAccessRights(LPCTSTR lpszUser, LPCTSTR lpszDirectory, int nOption); CString GetFileDate(CFileFind &find); public: CArray m_UserArray; protected: CString m_strFilename; CCriticalSection m_CriticalSection; }; #endif // !defined(AFX_USERMANAGER_H__80FCDEAE_C56D_4E25_998D_8BE0511F7C10__INCLUDED_)