

Contribute
There are several ways to contribute to the Sabayon project.
Testing, go here if you want to install sabayon and try it out.
Developing, get the code and try to fix errors and send patches to the maintainers.
Helping out on the mailing list and IRC for people having problems, letting them know where to go and what to do.
Contact
You can contact developers sending a mail to the Sabayon mailing list. You do not need to be subscribed.
We are also often available to chat on IRC.
Server: irc.gnome.org
Channel: #sabayon
Sabayon supports using LDAP to get profiles in a very flexible way. By defining server settings and queries in the /etc/desktop-profiles/users.xml file it can do the mapping from user to profile file using LDAP queries. An example setup can look like:
<profiles> <ldap server="ldap.example.com"> <profilemap search_base="ou=People,dc=example,dc=com" scope="one" query_filter="(uid=%u)" result_attribute="sabayonProfileURL"/> </ldap> <default profile="default"/> </profiles>
LDAP server configuration
The toplevel ldap tag sets up the server connection. Availible attributes are:
- server (default: localhost): The address of the ldap server
- port (default: 389): The port of the ldap server
- version (default: 3): The ldap version to use
- timeout (default: 10): Timeout to use for ldap operations, 0 to disable
- bind_dn: dn to bind as, or leave out to run queries without binding
- bind_pw: password used when binding
LDAP queries
Inside the ldap tag you can define the two queries used by sabayon. The first is the profilemap query, which maps from the username to the profile name to use for the user. The profile name is just a string, and it can be either an absolute URI, a URI relative to the config file, or just a name. If it is a name it will be looked up in the locationmap LDAP query (if specified) and if that didn't match, it will be converted to a filename in /etc/desktop-profiles by appending ".zip".
The locationmap query specifies the mapping from profile name to profile URI. This can optinally be used instead of storing the profile URI directly in the LDAP user object, to allow more flexibility in changing the URI.
Both queries support these attributes:
- search_base: The search base of the query
- query_filter: the LDAP filter to use
- result_attribute: The name of the attribute to look at in the query result
- scope (default "sub"): The search scope. Can be sub, base or one.
- multiple_result (default "first"): How to handle multiple values in the resulting attribute. Can be "first", use the first attribute or "random", pick a random one (for e.g. load balancing).
Both search_base and query_filter are expanded. In profilemap %u expands to the username and in locationmap %p expands to the profile name. In both maps %h expands to the full hostname of the client, and %% expands to %.
Examples
There are many way to set up the sabayon LDAP integration. Here are some examples, all using the sabayon LDAP schema that comes in the sabayon package.
Store profile URL in the user
This is the simplest setup. Add a sabayonProfileURLObject to your user objects and set the sabayonProfileURL property for each user to a URI of the profile.
... <ldap server="..."> <profilemap search_base="ou=People,dc=example,dc=com" scope="one" query_filter="(uid=%u)" result_attribute="sabayonProfileURL"/> </ldap> ...
Store profile as a separate entity in ldap
Store the name of the profile for each user (using a sabayonProfileNameObject object), and store the actual URI in a sabayonProfile object. This gives a lot of flexibility to change the URI of the profile, without having to update each user.
... <ldap server="..."> <profilemap search_base="ou=People,dc=example,dc=com" scope="one" query_filter="(uid=%u)" result_attribute="sabayonProfileName"/> <locationmap search_base="ou=Profiles,dc=example,dc=com" scope="one" query_filter="(cn=%p)" result_attribute="sabayonProfileURL"/> </ldap> ...
Pick profile based on group membership
This lets you pick a profile based on what group the user is part of by adding the sabayonProfileURL attribute to the group object.
... <ldap server="..."> <profilemap search_base="ou=Group,dc=example,dc=com" scope="one" query_filter="(memberUid=%u)" result_attribute="sabayonProfileURL"/> </ldap> ...
others
There are countless other ways, for example you could combine the group example and the separate profile object example. If you come up with an interesting way, please tell us on the mailing list.