FsysSecurity.h
上传用户:surprise9
上传日期:2007-01-04
资源大小:426k
文件大小:3k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. // This is part of the WAR SOFTWARE SERIES initiated by Jarle Aase
  2. // Copyright 1996 by Jarle Aase. All rights reserved.
  3. // See the "War Software Series Licende Agreement" for details concerning 
  4. // use and distribution.
  5. // ---
  6. // This source code, executables and programs containing source code or
  7. // binaries or proprietetary technology from the War Software Series are
  8. // NOT alloed used, viewed or tested by any governmental agencies in
  9. // any countries. This includes the government, departments, police, 
  10. // military etc.
  11. // ---
  12. // This file is intended for use with Tab space = 2
  13. // Created and maintained in MSVC Developer Studio
  14. // ---
  15. // NAME : FsysSecurity.h
  16. // PURPOSE : File System security
  17. // PROGRAM : 
  18. // DATE : Oct. 9 1996
  19. // AUTHOR : Jarle Aase
  20. // ---
  21. // REVISION HISTORY
  22. // 
  23. #ifndef _FSYSSECURITYH
  24. #define _FSYSSECURITYH
  25. #define SECFILE ".WarFsysPerms"
  26. struct SFsysSecurityExtra
  27. {
  28. int User; // User number this applies for
  29. int Perms; // NODE_AREAD NODE_AWRITE NODE_AEXEC
  30. };
  31. class DLL_WAR_SOFTWARE_ CFsysSecurityNode
  32. {
  33. public:
  34. DWORD Perms; // Basic file permissions
  35. USER Owner; // Owner user #
  36. USER Class; // Class user # (UNIX group)
  37. DWORD DlCnt; // Download counter
  38. CString Comment; 
  39. CString FileName;
  40. DWORD SpecialNewFilePerms;
  41. public:
  42. ~CFsysSecurityNode();
  43. };
  44. class DLL_WAR_SOFTWARE_ CFsysSecurityGrp
  45. {
  46. public:
  47. CFsysSecurityGrp();
  48. DWORD DefaultPermFiles;
  49. DWORD DefaultPermDirs;
  50. CLinkedList m_Nodes;
  51. CString m_Path;
  52. FILE *m_fp; // Only used to update a directory
  53. public:
  54. ~CFsysSecurityGrp();
  55. void DeleteAllNodes();
  56. };
  57. class DLL_WAR_SOFTWARE_ CFsysSecurity
  58. {
  59. public:
  60. public:
  61. static BOOL GetFsysSecurityProperties(HANDLE hGrp, CFileInfo& FileInfo);
  62. static void LogMsg(int flag, LPCSTR Format, ...);
  63. static HANDLE LoadSecurityGroup(LPCSTR Path, BOOL DoScanNodes = TRUE);
  64. static HANDLE GetSecurityDescriptor(HANDLE pGrp, LPCSTR FileName);
  65. static HANDLE GetSecurityGroupFromPath(int User, int Class, LPCSTR Path);
  66. static BOOL CloseSecurityGroup(HANDLE pGrp);
  67. static int GetPermissions(int User, int Class, 
  68. HANDLE pGrp, LPCSTR FileName, BOOL IsDir, int *Mask = NULL,
  69. CFsysSecurityNode **pFsn = NULL, BOOL ShowRealPerms = TRUE);
  70. static HANDLE CreateNode(int User, HANDLE pGrp, 
  71. BOOL IsDir, LPCSTR FileName);
  72. static BOOL FlushGroup(HANDLE pGrp);
  73. static HANDLE OpenSecurityGroupForUpdate(
  74. LPCSTR Path, 
  75. DWORD DefaultPermFiles = 0xffffffff,
  76. DWORD DefaultPermDirs = 0xffffffff);
  77. static void CFsysSecurity::FlushNode(
  78. HANDLE hSecGrp,
  79. LPCSTR FileName,
  80. DWORD Perms,
  81. int Owner,
  82. int Class,
  83. int DlCnt,
  84. LPCSTR Comment,
  85. DWORD SpecialNewFilePerms);
  86. protected:
  87. static FILE *OpenSecurityGroupFile(LPCSTR Path, LPCSTR Mode);
  88. static FILE *fopen(LPCSTR DosPath, LPCSTR Mode);
  89. };
  90. #endif _FSYSSECURITYH