コード例 #1
0
        private void FixAdministrator()
        {
            using (SC.Utility.Lock l = new SC.Utility.Lock(secLock, SC.Utility.Lock.LockType.ForReading))
            {
                if (users.Count == 0)
                {
                    Logger.Warn("No users found, adding Administrator account with default password");

                    l.UpgradeToWriterLock();
                    UserInfo adminInfo = new UserInfo("Administrator", "ServerChecker4");
                    users.Add(adminInfo.Username, adminInfo);
                    l.DowngradeToReaderLock();
                }

                SecuritySubject me = acls[securityGuid];
                System.Collections.Specialized.StringCollection permissions = new System.Collections.Specialized.StringCollection();
                permissions.AddRange(me.GetPermissions());

                if (permissions.Count == 0)
                {
                    Logger.Warn("No permissions found for SecurityManager. Adding permission for Administrator account");

                    l.UpgradeToWriterLock();
                    me.AddPermission("Administrator");
                    l.DowngradeToReaderLock();
                }
            }
        }
コード例 #2
0
 public void UnregisterSubject(Guid guid, bool remove)
 {
     using (SC.Utility.Lock l = new SC.Utility.Lock(secLock, SC.Utility.Lock.LockType.ForReading))
     {
         try
         {
             SecuritySubject subject = acls[guid];
             acls.Remove(guid);
             if (remove)
             {
                 l.UpgradeToWriterLock();
                 subjects.Remove(subject.Name);
                 l.DowngradeToReaderLock();
             }
         }
         catch (KeyNotFoundException)
         {
             Logger.Error("Tried unregistering subject that never registered.");
             throw;
         }
         catch (Exception e)
         {
             Logger.Error("An unexpected error occurred during unregistering of a subject.", e);
             throw;
         }
     }
     SaveSettings();
 }
コード例 #3
0
 private void AddAllowedClientNetwork(Network network)
 {
     using (SC.Utility.Lock l = new SC.Utility.Lock(secLock, SC.Utility.Lock.LockType.ForReading))
     {
         foreach (SC.Security.Network net in clients)
         {
             if (net.IsHostInNet(network.Address) || network.IsHostInNet(net.Address))
             {
                 Logger.Error("Network add failed because network " + network.ToString() + " is contained in " + net.ToString());
                 throw new ArgumentException("Cannot add network because it contains or is contained in another network: " + net.ToString());
             }
         }
         l.UpgradeToWriterLock();
         Logger.Info("Adding network " + network.ToString() + " to the access list.");
         clients.Add(network);
     }
 }
コード例 #4
0
        private void FixAdministrator()
        {
            using (SC.Utility.Lock l = new SC.Utility.Lock(secLock, SC.Utility.Lock.LockType.ForReading))
            {
                if (users.Count == 0)
                {
                    Logger.Warn("No users found, adding Administrator account with default password");

                    l.UpgradeToWriterLock();
                    UserInfo adminInfo = new UserInfo("Administrator", "ServerChecker4");
                    users.Add(adminInfo.Username, adminInfo);
                    l.DowngradeToReaderLock();
                }

                SecuritySubject me = acls[securityGuid];
                System.Collections.Specialized.StringCollection permissions = new System.Collections.Specialized.StringCollection();
                permissions.AddRange(me.GetPermissions());

                if (permissions.Count == 0)
                {
                    Logger.Warn("No permissions found for SecurityManager. Adding permission for Administrator account");

                    l.UpgradeToWriterLock();
                    me.AddPermission("Administrator");
                    l.DowngradeToReaderLock();
                }
            }
        }
コード例 #5
0
 private void AddAllowedClientNetwork(Network network)
 {
     using (SC.Utility.Lock l = new SC.Utility.Lock(secLock, SC.Utility.Lock.LockType.ForReading))
     {
         foreach (SC.Security.Network net in clients)
         {
             if (net.IsHostInNet(network.Address) || network.IsHostInNet(net.Address))
             {
                 Logger.Error("Network add failed because network " + network.ToString() + " is contained in " + net.ToString());
                 throw new ArgumentException("Cannot add network because it contains or is contained in another network: " + net.ToString());
             }
         }
         l.UpgradeToWriterLock();
         Logger.Info("Adding network " + network.ToString() + " to the access list.");
         clients.Add(network);
     }
 }
コード例 #6
0
 public void UnregisterSubject(Guid guid, bool remove)
 {
     using (SC.Utility.Lock l = new SC.Utility.Lock(secLock, SC.Utility.Lock.LockType.ForReading))
     {
         try
         {
             SecuritySubject subject = acls[guid];
             acls.Remove(guid);
             if (remove)
             {
                 l.UpgradeToWriterLock();
                 subjects.Remove(subject.Name);
                 l.DowngradeToReaderLock();
             }
         }
         catch (KeyNotFoundException)
         {
             Logger.Error("Tried unregistering subject that never registered.");
             throw;
         }
         catch (Exception e)
         {
             Logger.Error("An unexpected error occurred during unregistering of a subject.", e);
             throw;
         }
     }
     SaveSettings();
 }