Пример #1
0
        public async Task testACLs()
        {
            ZooKeeper zk = await createClient();

            try {
                await zk.createAsync("/acltest", new byte[0], ZooDefs.Ids.CREATOR_ALL_ACL, CreateMode.PERSISTENT);

                Assert.fail("Should have received an invalid acl error");
            }
            catch (KeeperException.InvalidACLException e) {
                LOG.info("Test successful, invalid acl received : " + e.Message);
            }
            try {
                List <ACL> testACL = new List <ACL>();
                testACL.Add(new ACL((int)(ZooDefs.Perms.ALL | ZooDefs.Perms.ADMIN), ZooDefs.Ids.AUTH_IDS));
                testACL.Add(new ACL((int)(ZooDefs.Perms.ALL | ZooDefs.Perms.ADMIN), new Id("ip", "127.0.0.1/8")));
                await zk.createAsync("/acltest", new byte[0], testACL, CreateMode.PERSISTENT);

                Assert.fail("Should have received an invalid acl error");
            }
            catch (KeeperException.InvalidACLException e) {
                LOG.info("Test successful, invalid acl received : " + e.Message);
            }
            zk.addAuthInfo("digest", "ben:passwd".UTF8getBytes());
            await zk.createAsync("/acltest", new byte[0], ZooDefs.Ids.CREATOR_ALL_ACL, CreateMode.PERSISTENT);

            await zk.closeAsync();

            zk = await createClient();

            zk.addAuthInfo("digest", "ben:passwd2".UTF8getBytes());
            try {
                await zk.getDataAsync("/acltest", false);

                Assert.fail("Should have received a permission error");
            }
            catch (KeeperException e) {
                Assert.assertEquals(KeeperException.Code.NOAUTH, e.getCode());
            }
            zk.addAuthInfo("digest", "ben:passwd".UTF8getBytes());
            await zk.getDataAsync("/acltest", false);

            await zk.setACLAsync("/acltest", ZooDefs.Ids.OPEN_ACL_UNSAFE, -1);

            await zk.closeAsync();

            zk = await createClient();

            await zk.getDataAsync("/acltest", false);

            IList <ACL> acls = (await zk.getACLAsync("/acltest")).Acls;

            Assert.assertEquals(1, acls.Count);
            Assert.assertEquals(ZooDefs.Ids.OPEN_ACL_UNSAFE, acls);

            // The stat parameter should be optional.
            acls = (await zk.getACLAsync("/acltest")).Acls;
            Assert.assertEquals(1, acls.Count);
            Assert.assertEquals(ZooDefs.Ids.OPEN_ACL_UNSAFE, acls);
        }
Пример #2
0
        public async Task <List <Acl> > GetAclAsync([NotNull] string path)
        {
            ValidateState();
            var ackResult = await _zk.getACLAsync(path);

            return(ConvertToAcl(ackResult.Acls));
        }
Пример #3
0
 /// <summary>
 /// Update all ACLs for a zk tree based on our configured ZkACLProvider
 /// </summary>
 /// <param name="root">The root node to recursively update</param>
 public async Task updateACLs(string root)
 {
     await ZkMaintenanceUtils.traverseZkTree(this, root, VISIT_ORDER.VISIT_POST, async path =>
     {
         try
         {
             await setACL(path, (await keeper.getACLAsync(path)).Acls, true);
         }
         catch (KeeperException.NoNodeException)
         {
             // If a node was deleted, don't bother trying to set ACLs on it.
         }
     });
 }
Пример #4
0
        private async Task ShowNodeInfo()
        {
            var selectedNode = treeViewNodes.SelectedNode;

            if (selectedNode != null)
            {
                try
                {
                    var dataResult = await m_zooKeeperClient.getDataAsync(selectedNode.Name);

                    var aCLResult = await m_zooKeeperClient.getACLAsync(selectedNode.Name);

                    NodeInfoForm nodeInfoForm = new NodeInfoForm();
                    nodeInfoForm.NodeName = selectedNode.Text;
                    nodeInfoForm.Text     = selectedNode.Name;
                    nodeInfoForm.Data     = dataResult.Data ?? (new byte[0]);
                    nodeInfoForm.ACLs     = aCLResult.Acls;
                    nodeInfoForm.Stat     = aCLResult.Stat;
                    nodeInfoForm.ShowDialog();

                    bool dataChanged = true;
                    bool aclsChanged = true;
                    var  data        = nodeInfoForm.Data;
                    if (Convert.ToBase64String(dataResult.Data ?? (new byte[0])) == Convert.ToBase64String(data))
                    {
                        dataChanged = false;
                    }

                    var acls = nodeInfoForm.ACLs;
                    if (aCLResult.Acls.Count == acls.Count && aCLResult.Acls.All(acl => acls.Exists(i => i.getPerms() == acl.getPerms() && i.getId().getScheme() == acl.getId().getScheme() && i.getId().getId() == acl.getId().getId())))
                    {
                        aclsChanged = false;
                    }

                    if (dataChanged || aclsChanged)
                    {
                        if (MessageBox.Show("Do You Want To Update The Modification", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                        {
                            if (dataChanged)
                            {
                                await m_zooKeeperClient.setDataAsync(selectedNode.Name, data);

                                Log($"Data seted {selectedNode.Name}.");
                            }

                            if (aclsChanged)
                            {
                                await m_zooKeeperClient.setACLAsync(selectedNode.Name, acls);

                                Log($"ACL seted {selectedNode.Name}.");
                            }
                        }
                    }
                }
                catch (KeeperException ex)
                {
                    Log($"{ex.Message} {selectedNode.Name}");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error");
                }
            }
            else
            {
                MessageBox.Show("No Node Selected.", "Info");
            }
        }
Пример #5
0
 public static List <ACL> getACL(this ZooKeeper zk, string path, Stat stat)
 {
     return(copyStat(zk.getACLAsync(path).GetAwaiter().GetResult(), stat).Acls);
 }
Пример #6
0
 public Task <ACLResult> GetAclAsync(string path)
 {
     return(_zookeeper.getACLAsync(path));
 }