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); }
public async Task <List <Acl> > GetAclAsync([NotNull] string path) { ValidateState(); var ackResult = await _zk.getACLAsync(path); return(ConvertToAcl(ackResult.Acls)); }
/// <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. } }); }
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"); } }
public static List <ACL> getACL(this ZooKeeper zk, string path, Stat stat) { return(copyStat(zk.getACLAsync(path).GetAwaiter().GetResult(), stat).Acls); }
public Task <ACLResult> GetAclAsync(string path) { return(_zookeeper.getACLAsync(path)); }