LdapAgent Class Reference

An interface class between YaST2 and Ldap Agent. More...

#include <LdapAgent.h>

Inheritance diagram for LdapAgent:

SCRAgent

List of all members.

Public Member Functions

 LdapAgent ()
virtual ~LdapAgent ()
virtual YCPValue Read (const YCPPath &path, const YCPValue &arg=YCPNull(), const YCPValue &opt=YCPNull())
virtual YCPBoolean Write (const YCPPath &path, const YCPValue &arg, const YCPValue &arg2=YCPNull())
virtual YCPValue Execute (const YCPPath &path, const YCPValue &arg=YCPNull(), const YCPValue &arg2=YCPNull())
virtual YCPList Dir (const YCPPath &path)
virtual YCPValue otherCommand (const YCPTerm &term)

Private Member Functions

string getValue (const YCPMap map, const string key)
int getIntValue (const YCPMap map, const string key, int deflt)
bool getBoolValue (const YCPMap map, const string key)
YCPList getListValue (const YCPMap map, const string key)
StringList ycplist2stringlist (YCPList l)
YCPList stringlist2ycplist (StringList sl)
YCPList stringlist2ycplist_low (StringList sl)
YCPMap getGroupEntry (LDAPEntry *entry, string member_attribute)
YCPMap getUserEntry (LDAPEntry *entry)
YCPMap getSearchedEntry (LDAPEntry *entry, bool sinlge_value)
YCPMap getObjectAttributes (string dn)
YCPBoolean deleteSubTree (string dn)
YCPBoolean moveWithSubtree (string dn, string new_dn, string parent_dn)
YCPBoolean copyOneEntry (string dn, string new_dn)
void debug_exception (LDAPException e, string action)
void debug_referral (LDAPReferralException e, string action)
void generate_attr_list (LDAPAttributeList *attrs, YCPMap map)
void generate_mod_list (LDAPModList *modlist, YCPMap map, YCPValue attrs)

Private Attributes

int port
string hostname
string bind_dn
string bind_pw
string ldap_error
string server_error
bool tls_error
int ldap_error_code
bool ldap_initialized
string userpw_hash
LDAPConnection * ldap
LDAPConstraints * cons
LDAPSchema * schema
YCPMap users
YCPMap users_by_name
YCPMap users_by_uidnumber
YCPMap usernames
YCPMap userdns
YCPMap uids
YCPMap homes
YCPMap user_items
YCPMap groups
YCPMap groups_by_name
YCPMap groups_by_gidnumber
YCPMap groupnames
YCPMap gids
YCPMap group_items


Detailed Description

An interface class between YaST2 and Ldap Agent.

Constructor & Destructor Documentation

LdapAgent::LdapAgent (  ) 

Default constructor.

Constructor

LdapAgent::~LdapAgent (  )  [virtual]

Destructor.

Destructor


Member Function Documentation

string LdapAgent::getValue ( const YCPMap  map,
const string  key 
) [private]

search the map for value of given key; both key and value have to be strings when key is not present, empty string is returned

int LdapAgent::getIntValue ( const YCPMap  map,
const string  key,
int  deflt 
) [private]

Search the map for value of given key

Parameters:
map YCP Map to look in
key key we are looking for
deflt the default value to be returned if key is not found

bool LdapAgent::getBoolValue ( const YCPMap  map,
const string  key 
) [private]

YCPList LdapAgent::getListValue ( const YCPMap  map,
const string  key 
) [private]

StringList LdapAgent::ycplist2stringlist ( YCPList  l  )  [private]

converts YCPList to StringList object

YCPList LdapAgent::stringlist2ycplist ( StringList  sl  )  [private]

converts StringList object to YCPList value

YCPList LdapAgent::stringlist2ycplist_low ( StringList  sl  )  [private]

converts StringList object to YCPList value + each item is lowercased

YCPMap LdapAgent::getGroupEntry ( LDAPEntry *  entry,
string  member_attribute 
) [private]

Return YCP of group, given as LDAP object

Parameters:
entry LDAP object of the group [item of search result]
member_attribute name of attribute with members ("member"/"uniquemember")

YCPMap LdapAgent::getUserEntry ( LDAPEntry *  entry  )  [private]

Return YCP of user, given as LDAP object

Parameters:
entry LDAP object of the user [item of search result]

YCPMap LdapAgent::getSearchedEntry ( LDAPEntry *  entry,
bool  single_values 
) [private]

creates YCPMap describing object returned as a part of LDAP search call

Parameters:
single_values if true, return string when argument has only one value (otherwise return always list)
creates YCPMap describing object returned as a part of LDAP search command
Parameters:
single_values if true, return string when argument has only one value

YCPMap LdapAgent::getObjectAttributes ( string  dn  )  [private]

searches for one object and gets all his non-empty attributes

Parameters:
dn object's dn
Returns:
map of type $[ attr_name: [] ]

YCPBoolean LdapAgent::deleteSubTree ( string  dn  )  [private]

deletes all children of given entry

delete children of LDAP entry (code from rhafer)

YCPBoolean LdapAgent::moveWithSubtree ( string  dn,
string  new_dn,
string  parent_dn 
) [private]

move the entry in LDAP tree with all its children

Parameters:
dn DN of original entry
new_dn new DN (= new place)
parent_dn DN of the new parent of the entry

YCPBoolean LdapAgent::copyOneEntry ( string  dn,
string  new_dn 
) [private]

copy the LDAP entry to new place (+ changes DN-constructing attribute, like cn,uid,ou etc.)

Parameters:
dn DN of original entry
new_dn new DN (= new place)

void LdapAgent::debug_exception ( LDAPException  e,
string  action 
) [private]

log the output of an exception and set the return value from agent's call

void LdapAgent::debug_referral ( LDAPReferralException  e,
string  action 
) [private]

log the output of Referral Exception

void LdapAgent::generate_attr_list ( LDAPAttributeList *  attrs,
YCPMap  map 
) [private]

creates attributes for new LDAP object and fills their values

void LdapAgent::generate_mod_list ( LDAPModList *  modlist,
YCPMap  map,
YCPValue  attrs 
) [private]

creates list of modifications for LDAP object for removing attribute, use give it empty value

creates list of modifications for LDAP object for removing attribute, give it empty value

YCPValue LdapAgent::Read ( const YCPPath path,
const YCPValue arg = YCPNull(),
const YCPValue opt = YCPNull() 
) [virtual]

Provides SCR Read ().

Parameters:
path Path that should be read.
arg Additional parameter.
Read

error: Read(.ldap.error) -> returns last error message

generic LDAP search command Read(.ldap.search, <search_map>) -> result list/map of objects (return value depends on value of "return_map" parameter

get the users map (previously searched by users.search) Read(.ldap.users) -> map

get the groups map (previously searched by users.search) Read(.ldap.groups) -> map

get the map of object class with given name Read(.ldap.schema.oc, $[ "name": name]) -> map

get the map of attribute type with given name Read(.ldap.schema.at, $[ "name": name]) -> map

get the mapping of usernames to uid's (used for users module) DEPRECATED, users_by_name is empty now Read(.ldap.users.by_name) -> map

get the mapping of uid numbers to user names (used for users module) Read(.ldap.users.by_uidnumber) -> map

get the list of home directories (used for users module) Read(.ldap.users.homes) -> list of homes

get the list of UID's (used for users module) Read(.ldap.users.uids) -> list

get the list of user names (used for users module) Read(.ldap.users.usernames) -> list

get the list of user DN's (used for users module) Read(.ldap.users.userdns) -> list

get the items for user table (used for users module) Read(.ldap.users.itemlist) -> list of items

get the map of gid's indexed by group names (used for users module) DEPRECATED, groups_by_name is empty now Read(.ldap.groups.by_name) -> map

get the mapping of gid numbers to group names (used for users module) Read(.ldap.groups.by_uidnumber) -> map

get the list of GID's (used for users module) Read(.ldap.groups.gids) -> list

get the list of group names (used for users module) Read(.ldap.groups.groupnames) -> list

get the items for group table (used for users module) Read(.ldap.groups.itemlist) -> list of items

check if given object class exists in schema Read(.ldap.schema.oc.check, $[ "name": name]) -> boolean

Implements SCRAgent.

YCPBoolean LdapAgent::Write ( const YCPPath path,
const YCPValue arg,
const YCPValue arg2 = YCPNull() 
) [virtual]

Provides SCR Write ().

Write

generic LDAP add command Write(.ldap.add, $[ "dn": dn ], <add_map>) -> boolean

generic LDAP modify command Write(.ldap.modify, <arg_map>, <modify_map>) -> boolean

generic LDAP delete command Write(.ldap.delete, $[ "dn" : dn ]) -> boolean

Implements SCRAgent.

YCPValue LdapAgent::Execute ( const YCPPath path,
const YCPValue arg = YCPNull(),
const YCPValue arg2 = YCPNull() 
) [virtual]

Provides SCR Execute ().

Execute

initialization: Execute (.ldap,$[ "hostname": <host>, "port": <port>, "use_tls": "no"|"yes"|"try" ] )

ping: Execute (.ldap.ping, $[ "hostname": <host>, "port": <port> ] ) returns true if server is running

ppolicy: Execute (.ldap.ppolicy, $["hostname": <host>, "port": <port>, "bind_dn": <dn>] ) returns true if server suports Password Policy (feature 301179):

rhafer: 'To detect if the server does support LDAP Password Policies you can send it a LDAP Bind Request with the Password Policy Control attached and marked as "critical". The bind-dn should ether be set to the base-dn of the LDAP Database or a child of it (the entry itself does not need to exist in the Database). The bind-pw most not be empty (just some random string is fine) If the server supports Password Policies you'll get back Error Code 49: "Invalid credentials". if it does not support Password Policies you'll get Error Code 53: "Server is unwilling to perform" with the additional message: "critical control unavailable in context"'

bind: Execute(.ldap.bind, $[ "bind_dn": binddn, "bindpw": bindpw] ) for anonymous acess, call bind with empty map

unbind: Execute(.ldap.unbind)

Initialize schema: read and parse it

LDAP users search command Read(.ldap.users.search, <search_map>) -> result list (more special work is done than in generic search)

Reimplemented from SCRAgent.

YCPList LdapAgent::Dir ( const YCPPath path  )  [virtual]

Provides SCR Dir ().

Dir

Implements SCRAgent.

YCPValue LdapAgent::otherCommand ( const YCPTerm term  )  [virtual]

Used for mounting the agent.

otherCommand

Reimplemented from SCRAgent.


Member Data Documentation

int LdapAgent::port [private]

Agent private variables

string LdapAgent::hostname [private]

string LdapAgent::bind_dn [private]

string LdapAgent::bind_pw [private]

string LdapAgent::ldap_error [private]

string LdapAgent::server_error [private]

bool LdapAgent::tls_error [private]

int LdapAgent::ldap_error_code [private]

bool LdapAgent::ldap_initialized [private]

string LdapAgent::userpw_hash [private]

LDAPConnection* LdapAgent::ldap [private]

LDAPConstraints* LdapAgent::cons [private]

LDAPSchema* LdapAgent::schema [private]

YCPMap LdapAgent::users [private]

YCPMap LdapAgent::users_by_name [private]

YCPMap LdapAgent::users_by_uidnumber [private]

YCPMap LdapAgent::usernames [private]

YCPMap LdapAgent::userdns [private]

YCPMap LdapAgent::uids [private]

YCPMap LdapAgent::homes [private]

YCPMap LdapAgent::user_items [private]

YCPMap LdapAgent::groups [private]

YCPMap LdapAgent::groups_by_name [private]

YCPMap LdapAgent::groups_by_gidnumber [private]

YCPMap LdapAgent::groupnames [private]

YCPMap LdapAgent::gids [private]

YCPMap LdapAgent::group_items [private]


The documentation for this class was generated from the following files:
Generated on Tue Sep 25 20:29:10 2007 for yast2-ldap by  doxygen 1.5.3