@@ -1633,6 +1633,10 @@ func (c *Client) grpcMDResponseToFileInfo(ctx context.Context, st *erpc.MDRespon
1633
1633
fi .Attrs [strings .TrimPrefix (k , "user." )] = string (v )
1634
1634
}
1635
1635
1636
+ if fi .Attrs ["sys.acl" ] != "" {
1637
+ fi .SysACL = aclAttrToAclStruct (fi .Attrs ["sys.acl" ])
1638
+ }
1639
+
1636
1640
fi .TreeSize = uint64 (st .Cmd .TreeSize )
1637
1641
fi .Size = fi .TreeSize
1638
1642
// TODO(lopresti) this info is missing in the EOS Protobuf, cf. EOS-5974
@@ -1653,6 +1657,10 @@ func (c *Client) grpcMDResponseToFileInfo(ctx context.Context, st *erpc.MDRespon
1653
1657
fi .Attrs [strings .TrimPrefix (k , "user." )] = string (v )
1654
1658
}
1655
1659
1660
+ if fi .Attrs ["sys.acl" ] != "" {
1661
+ fi .SysACL = aclAttrToAclStruct (fi .Attrs ["sys.acl" ])
1662
+ }
1663
+
1656
1664
fi .Size = st .Fmd .Size
1657
1665
1658
1666
if st .Fmd .Checksum != nil {
@@ -1667,3 +1675,23 @@ func (c *Client) grpcMDResponseToFileInfo(ctx context.Context, st *erpc.MDRespon
1667
1675
}
1668
1676
return fi , nil
1669
1677
}
1678
+
1679
+ func aclAttrToAclStruct (aclAttr string ) * acl.ACLs {
1680
+ entries := strings .Split (aclAttr , "," )
1681
+
1682
+ acl := & acl.ACLs {}
1683
+
1684
+ for _ , entry := range entries {
1685
+ parts := strings .Split (entry , ":" )
1686
+ if len (parts ) != 3 {
1687
+ continue
1688
+ }
1689
+ aclType := parts [0 ]
1690
+ qualifier := parts [1 ]
1691
+ permissions := parts [2 ]
1692
+
1693
+ acl .SetEntry (aclType , qualifier , permissions )
1694
+ }
1695
+
1696
+ return acl
1697
+ }
0 commit comments