Re: Groups are not accessible by filter

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> On 9 May 2019, at 14:52, Anuj Borah <aborah@xxxxxxxxxx> wrote:
> 
> @William Brown
>  
> Its not relevant to this subject line , but its related to lib389 .
> 
> Question : Does get_attrs_vals_utf8 and all get_attrs_vals types should case sensitive ?? 
> 
> Look at bellow result:
> 
> with search_s:
> 
> (Pdb) topo.standalone.search_s(DEFAULT_SUFFIX, ldap.SCOPE_SUBTREE, F4, ['cn', 'Cn', 'CN'])
> [dn: uid=bhall,ou=People,dc=example,dc=com
> cn: Benjamin Hall
> ]
> 
> 
> with filter:
> 
> (Pdb) Accounts(topo.standalone, DEFAULT_SUFFIX).filter(F4)[0].get_attrs_vals_utf8(['cn', 'Cn', 'CN'])
> {'cn': ['Benjamin Hall'], 'Cn': ['Benjamin Hall'], 'CN': ['Benjamin Hall']}

Indeed - this appears to be a bug in the library. It should probably do something like:

attrs = list(set([x.lower() for x in attrs]))

So first you would make everything lower:

lower = [x.lower() for x in attrs]

then you remove the duplicates by converting to set, as sets don't allow dupes:

lower_no_dup = set(lower)

finally convert back to a list for the ldap calls as they only accept list, not iterables:

list(lower_no_dup)

and then, on one-line it would be:

attrs = list(set([x.lower() for x in attrs]))


I'm happy for you to fix this, but it must be a new issue and seperate PR, not part of a test case you are updating. Keep in mind there are a few functions that take attrs as lists, so making this function generic like:

def normalise_attrlist(attrs):
    return ...

Would be best.


> (Pdb) Accounts(topo.standalone, DEFAULT_SUFFIX).filter(F4)[0]._unsafe_raw_entry()
> dn: uid=bhall,ou=People,dc=example,dc=com
> cn: Benjamin Hall
> gidNumber: 2000
> givenName: Benjamin
> homeDirectory: /home/bhall
> l: sunnyvale
> mail: bhall@xxxxxxxx
> manager: uid=trigden,ou=People,dc=example,dc=com
> objectClass: top
> objectClass: account
> objectClass: posixaccount
> objectClass: inetOrgPerson
> objectClass: organizationalPerson
> objectClass: nsMemberOf
> objectClass: nsAccount
> objectClass: person
> ou: Product Development
> ou: People
> roomNumber: 2511
> sn: Hall
> telephoneNumber: +1 408 555 6067
> uid: bhall
> uidNumber: 1000
> userPassword: {PBKDF2_SHA256}AAAIAC03kM8if/x5GVc9teHEpMTOvB67mfH6NZYEmazAev2n6eoN2X+3JKu13ZpIG+WCPGWZH0niBxc7xvvqFsMkNPoRlBvmx23fWM+5VYcTCJs+iWQRxTb0FV/hheEU9a+Tqdj6fa0lL1aJTiOkKKk/mJdAHUiRvh8M6BtZmmc3pD0KNDwHQK/k/tuP1X7+nA+6ioT5WCb2NjjR4jFuNO681Ko6nG/wAWz/T+lYsVHdFV84MfBX81dgRDGmGyAew2YwNDeuEEmFH9EFYS9iczs241/3oA9igvCPuiSc7hoI/EOsRm4c6IhikouebRVCvX9eiZfjPSIBwXJTFHLi93r7xxNC4q3WWZZh2I01A09SOoQZPhXDXMkL6nuAJawG0wkU3JFeJecTSsk3EPgg+xX15X52Ayt7yKMRfTlYRtp45uku
> 
> (Pdb) Accounts(topo.standalone, DEFAULT_SUFFIX).filter(F4)[0].get_attr_val_utf8('CN')
> 'Benjamin Hall'
> (Pdb) Accounts(topo.standalone, DEFAULT_SUFFIX).filter(F4)[0].get_attr_val_utf8('cn')
> 'Benjamin Hall'
> (Pdb) Accounts(topo.standalone, DEFAULT_SUFFIX).filter(F4)[0].get_attr_val_utf8('Cn')
> 'Benjamin Hall'
> 
> 
> Regards
> Anuj Borah
> 
> On Thu, May 9, 2019 at 9:00 AM Anuj Borah <aborah@xxxxxxxxxx> wrote:
> @William Brown 
> 
> Thank you for the clarification. 
> 
> Regards
> Anuj Borah
> 
> On Thu, May 9, 2019 at 8:57 AM William Brown <wbrown@xxxxxxx> wrote:
> 
> 
> > On 9 May 2019, at 12:47, Anuj Borah <aborah@xxxxxxxxxx> wrote:
> > 
> > @William Brown
> > 
> > I am attaching the main script where i am facing the problem .
> > 
> > F4 gives me the following :
> > 
> > With search_s:
> > 
> > (Pdb) topo.standalone.search_s(DEFAULT_SUFFIX, ldap.SCOPE_SUBTREE, F4)
> > [dn: uid=bhall,ou=People,dc=example,dc=com
> > cn: Benjamin Hall
> > gidNumber: 2000
> > givenName: Benjamin
> > homeDirectory: /home/bhall
> > l: sunnyvale
> > mail: bhall@xxxxxxxx
> > manager: uid=trigden,ou=People,dc=example,dc=com
> > objectClass: top
> > objectClass: account
> > objectClass: posixaccount
> > objectClass: inetOrgPerson
> > objectClass: organizationalPerson
> > objectClass: nsMemberOf
> > objectClass: nsAccount
> > objectClass: person
> > ou: Product Development
> > ou: People
> > roomNumber: 2511
> > sn: Hall
> > telephoneNumber: +1 408 555 6067
> > uid: bhall
> > uidNumber: 1000
> > userPassword: {PBKDF2_SHA256}AAAIAAlpB8Yaw03XDVfXkH++eiCaugb3D660gbb6xBE3dkSCXOiCVqvM80dTPhPuSBISkY8IWJZgZXXoDt54brqRweEpqZ4YPrMTtqBAd/2kCsX+ZRM9phJLZFd9k7bIAM3joCnxVPFwyR1ETDSHkes0RSql7Isi+oKb8dloC+m5vzj1NG1M/o0TxdICTMxIBvuln+BdANOS9waGyqJgZfZBnQfw2t3lHOKXFxiduaWSZJvwVV8JtYkHt/ofdmqKItayc00eG6EM44qPS19XZa+3drTADPkL7HNAVhMHg1Y8iIWIXKvlZ7WJ1V/ySrHL6SU6XzcXtMNjBT/qi+GCHpu2Bc+Ka2C0iUZwY5ZiJ7YUANa3UYxh6oIVUgKNVmX+4CkJczJLcEgoI43zFCFnFsjtNHYwflPuIPFtwaXvgeBojItZ
> > 
> > ]
> > 
> > With filter:
> > 
> > (Pdb) Accounts(topo.standalone, DEFAULT_SUFFIX).filter(F4)[0].dn
> > 'uid=bhall,ou=People,dc=example,dc=com'
> > (Pdb) Accounts(topo.standalone, DEFAULT_SUFFIX).filter(F4)[0]._unsafe_raw_entry()
> > dn: uid=bhall,ou=People,dc=example,dc=com
> > cn: Benjamin Hall
> > gidNumber: 2000
> > givenName: Benjamin
> > homeDirectory: /home/bhall
> > l: sunnyvale
> > mail: bhall@xxxxxxxx
> > manager: uid=trigden,ou=People,dc=example,dc=com
> > objectClass: top
> > objectClass: account
> > objectClass: posixaccount
> > objectClass: inetOrgPerson
> > objectClass: organizationalPerson
> > objectClass: nsMemberOf
> > objectClass: nsAccount
> > objectClass: person
> > ou: Product Development
> > ou: People
> > roomNumber: 2511
> > sn: Hall
> > telephoneNumber: +1 408 555 6067
> > uid: bhall
> > uidNumber: 1000
> > userPassword: {PBKDF2_SHA256}AAAIAAlpB8Yaw03XDVfXkH++eiCaugb3D660gbb6xBE3dkSCXOiCVqvM80dTPhPuSBISkY8IWJZgZXXoDt54brqRweEpqZ4YPrMTtqBAd/2kCsX+ZRM9phJLZFd9k7bIAM3joCnxVPFwyR1ETDSHkes0RSql7Isi+oKb8dloC+m5vzj1NG1M/o0TxdICTMxIBvuln+BdANOS9waGyqJgZfZBnQfw2t3lHOKXFxiduaWSZJvwVV8JtYkHt/ofdmqKItayc00eG6EM44qPS19XZa+3drTADPkL7HNAVhMHg1Y8iIWIXKvlZ7WJ1V/ySrHL6SU6XzcXtMNjBT/qi+GCHpu2Bc+Ka2C0iUZwY5ZiJ7YUANa3UYxh6oIVUgKNVmX+4CkJczJLcEgoI43zFCFnFsjtNHYwflPuIPFtwaXvgeBojItZ
> > 
> > Now consider the following condition ,
> > 
> > (Pdb) topo.standalone.search_s(DEFAULT_SUFFIX, ldap.SCOPE_SUBTREE, F4,['modifiersName','modifyTimestamp'])
> > [dn: uid=bhall,ou=People,dc=example,dc=com
> > modifiersName: cn=directory manager
> > modifyTimestamp: 20190509030743Z
> > 
> > ]
> > 
> > Problem is :
> > modifiersName and modifyTimestamp can never get with filter .
> 
> 
> This is not the fault of the filter, but the fault of how you are treating these objects. Filter tells you *what entries to find* not what attributes to get from them. To get specific attributes you have to interact with the results of the filter search. 
> 
> I have formerly mentioned you can assign the results of searches such as:
> 
> bhall_account = Accounts(...).filter(F4)[0]
> 
> bhall_account is now an Instance of the Account object, which itself is DSLdapObject. Now you have the entry, you can access attributes of it.
> 
> values = bhall_account.get_attrs_vals_utf8(['modifiersName','modifyTimestamp'])
> print(values)
> 
> Should be:
> 
> {
>    "modifiersName": '...',
>    "modifyTimestamp": '...',
> }
> 
> I don't know why you still are afraid to assign results from the searches. Fundamentally: DSLdapObjects (and it's subclasses) is the SET of all possible entries, and the gateway to searching. It returns instances of DSLdapObject, that allow direct inspection and manipulation of that
> data from the entry. I am worried that there is a still a deep misunderstanding of the API and how to use it, which is causing these problems (and odd accusations ...) and I don't understand how to explain it or help you to get past this barrier because this topic has been circled and discussed for months. How can I help you to understand how to use this properly and correctly? 
> 
> 
> PS: There is a reason that function has the word "unsafe" in it, so please don't use things marked unsafe in tests or code .... :( 
> 
> 
> —
> Sincerely,
> 
> William Brown
> 
> Senior Software Engineer, 389 Directory Server
> SUSE Labs
> 

—
Sincerely,

William Brown

Senior Software Engineer, 389 Directory Server
SUSE Labs
_______________________________________________
389-devel mailing list -- 389-devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to 389-devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/389-devel@xxxxxxxxxxxxxxxxxxxxxxx




[Index of Archives]     [Fedora Directory Announce]     [Fedora Users]     [Older Fedora Users Mail]     [Fedora Advisory Board]     [Fedora Security]     [Fedora Devel Java]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Mentors]     [Fedora Package Review]     [Fedora Art]     [Fedora Music]     [Fedora Packaging]     [CentOS]     [Fedora SELinux]     [Big List of Linux Books]     [KDE Users]     [Fedora Art]     [Fedora Docs]

  Powered by Linux