/// <summary>
 /// Asynchronously calls the "AddPermission" RemoteMethod on the target client
 /// </summary>
 public Task AddPermissionAsync(Permission p)
 {
     return Task.Factory.StartNew(delegate
     {
         ClientConnection.CallRemoteAction(
             ComponentNamesExtended.FileShare,
             FileShareMethods.AddPermission,
             p);
     });
 }
        public void TestPermissionSerialisation_Valid()
        {
            var permission = new Permission() { Path = "/foo/bar", PermittedClients = new List<string>() { "*****@*****.**", "*****@*****.**" } };

            var xml = permission.Serialize();

            var roundTrip = new Permission();

            Assert.IsTrue(roundTrip.Validate(xml));

            roundTrip.Deserialize(xml);

            Assert.IsNotNull(permission);
            Assert.IsNotNull(roundTrip);

            Assert.AreEqual<string>(permission.Path, roundTrip.Path);
            Assert.AreEqual<int>(permission.PermittedClients.Count, roundTrip.PermittedClients.Count);

            for (int i = 0; i < permission.PermittedClients.Count; i++)
            {
                Assert.AreEqual<string>(permission.PermittedClients[i], roundTrip.PermittedClients[i]);
            }
        }
        public CallResult AddPermission(Permission p)
        {
            logger.Info("Adding Permission {0}", p);

            if (!permissions.ContainsKey(p.Path.ToLower()))
            {
                permissions.Add(p.Path.ToLower(), p);
            }
            else
            {
                permissions[p.Path.ToLower()] = p;
            }
            savePermissions();

            return new VoidResult();
        }
示例#4
0
        protected void fileshareAddPermissionCommand(IEnumerable<string> cmds)
        {
            Permission p = new Permission();
            p.Path = cmds.First();
            p.PermittedClients = cmds.Skip(1).ToList<string>();

            fileShareComponent.AddPermissionAsync(p);
        }