ソースを参照

INTLMAuthenticationProvider: Removed ListUsers from the API

Tal Aloni 8 年 前
コミット
457d978f70
2 ファイル変更11 行追加12 行削除
  1. 0 2
      SMBLibrary/Server/INTLMAuthenticationProvider.cs
  2. 11 10
      SMBServer/ServerUI.cs

+ 0 - 2
SMBLibrary/Server/INTLMAuthenticationProvider.cs

@@ -29,7 +29,5 @@ namespace SMBLibrary.Server
         ///    The password is correct but 'limitblankpassworduse' is set to 1 (logon over a network is disabled for accounts without a password).
         ///    The password is correct but 'limitblankpassworduse' is set to 1 (logon over a network is disabled for accounts without a password).
         /// </remarks>
         /// </remarks>
         bool FallbackToGuest(string userName);
         bool FallbackToGuest(string userName);
-
-        List<string> ListUsers();
     }
     }
 }
 }

+ 11 - 10
SMBServer/ServerUI.cs

@@ -84,11 +84,10 @@ namespace SMBServer
             }
             }
 
 
 
 
-            List<string> allUsers = provider.ListUsers();
             ShareCollection shares;
             ShareCollection shares;
             try
             try
             {
             {
-                shares = ReadShareSettings(allUsers);
+                shares = ReadShareSettings();
             }
             }
             catch (Exception)
             catch (Exception)
             {
             {
@@ -150,7 +149,7 @@ namespace SMBServer
             return users;
             return users;
         }
         }
 
 
-        private ShareCollection ReadShareSettings(List<string> allUsers)
+        private ShareCollection ReadShareSettings()
         {
         {
             ShareCollection shares = new ShareCollection();
             ShareCollection shares = new ShareCollection();
             XmlDocument document = GetSettingsXML();
             XmlDocument document = GetSettingsXML();
@@ -162,23 +161,25 @@ namespace SMBServer
                 string sharePath = shareNode.Attributes["Path"].Value;
                 string sharePath = shareNode.Attributes["Path"].Value;
 
 
                 XmlNode readAccessNode = shareNode.SelectSingleNode("ReadAccess");
                 XmlNode readAccessNode = shareNode.SelectSingleNode("ReadAccess");
-                List<string> readAccess = ReadAccessList(readAccessNode, allUsers);
+                List<string> readAccess = ReadAccessList(readAccessNode);
                 XmlNode writeAccessNode = shareNode.SelectSingleNode("WriteAccess");
                 XmlNode writeAccessNode = shareNode.SelectSingleNode("WriteAccess");
-                List<string> writeAccess = ReadAccessList(writeAccessNode, allUsers);
+                List<string> writeAccess = ReadAccessList(writeAccessNode);
                 FileSystemShare share = new FileSystemShare(shareName, new DirectoryFileSystem(sharePath));
                 FileSystemShare share = new FileSystemShare(shareName, new DirectoryFileSystem(sharePath));
                 share.OnAccessRequest += delegate(object sender, AccessRequestArgs args)
                 share.OnAccessRequest += delegate(object sender, AccessRequestArgs args)
                 {
                 {
+                    bool hasReadAccess = Contains(readAccess, "Users") || Contains(readAccess, args.UserName);
+                    bool hasWriteAccess = Contains(writeAccess, "Users") || Contains(writeAccess, args.UserName);
                     if (args.RequestedAccess == FileAccess.Read)
                     if (args.RequestedAccess == FileAccess.Read)
                     {
                     {
-                        args.Allow = Contains(readAccess, args.UserName);
+                        args.Allow = hasReadAccess;
                     }
                     }
                     else if (args.RequestedAccess == FileAccess.Write)
                     else if (args.RequestedAccess == FileAccess.Write)
                     {
                     {
-                        args.Allow = Contains(writeAccess, args.UserName);
+                        args.Allow = hasWriteAccess;
                     }
                     }
                     else // FileAccess.ReadWrite
                     else // FileAccess.ReadWrite
                     {
                     {
-                        args.Allow = Contains(readAccess, args.UserName) && Contains(writeAccess, args.UserName);
+                        args.Allow = hasReadAccess && hasWriteAccess;
                     }
                     }
                 };
                 };
                 shares.Add(share);
                 shares.Add(share);
@@ -186,7 +187,7 @@ namespace SMBServer
             return shares;
             return shares;
         }
         }
 
 
-        private List<string> ReadAccessList(XmlNode node, List<string> allUsers)
+        private List<string> ReadAccessList(XmlNode node)
         {
         {
             List<string> result = new List<string>();
             List<string> result = new List<string>();
             if (node != null)
             if (node != null)
@@ -194,7 +195,7 @@ namespace SMBServer
                 string accounts = node.Attributes["Accounts"].Value;
                 string accounts = node.Attributes["Accounts"].Value;
                 if (accounts == "*")
                 if (accounts == "*")
                 {
                 {
-                    result.AddRange(allUsers);
+                    result.Add("Users");
                 }
                 }
                 else
                 else
                 {
                 {