Skip to main content

A collection of Python 3 utilities and wrappers for services run by Computer Science House at RIT

Project description

cshpy
=====

A collection of Python 3 utilities and wrappers for services run by [Computer Science House](http://csh.rit.edu/) at RIT.

## Installation

$ pip install cshpy3

(or just download the source)

## Basic Usage
```python
#!/usr/bin/python
from csh.cshldap import LDAP

# Creates a connection to CSH's LDAP server as an object with some helper functions
# You can also omit the username and password to bind with a Kerberos ticket
ldap = LDAP('<user>','<password>')

# Returns a list of results, in this case of users whose uid starts with 'duck'.
# All CSH LDAP fields are included in a similar way.
ldap.search(uid='duck*')

# This will return users whose common names (cn) start with 'Chris'
ldap.search(cn='Chris')

# This will return users whose uid starts with 'user', and cn starts with 'Name'
ldap.search(uid='user*', cn='Name*')

# Returns a dict of a user's attributes. Performs a search, and then grabs the first result.
# Are you feelin' lucky?
ldap.member('uidValue')

# Equivalent to search(uid='*')
ldap.members()

# You may optionally include a search string.
# Equivalent to search(uid='username')
ldap.members('test')
```

## Functions

### search()

Search returns a list of tuples containing a string and a dictionary.
The first element of each tuple is the Distinguished Name (dn) of the entry.
This is the path to the entry in ldap. The second element of each tuple is a
dictionary of attributes as keys.

Specific tweaks for CSH include the insertion of two fields, `groups` and `committee`.
If a member is on eboard, `committee` will have the name of their committee. Otherwise,
this field will not be present.
`groups` will contain a list of all the groups a member belongs to.

So to be clear the return looks like this: `[('dn',{attributes})]`

You may optionally specify a different base than the default. `search(base=...)`

####Word of caution: Not all results are guaranteed to have the same attribute fields
in their dictionary. Do not depend on all users having a `twitterName` for example.

### modify(uid, attr1=val1, attr2=val2)

Given a uid, and attribute values, modifies those values in ldap.
You may optionally specify a base other than Users.

### member(uid)

Returns a dict of attributes for the user. Equivalent to `search(uid=uid)[0][1]`.

### members()

Returns a list of users. Shorthand for `search(uid='*')`, or some variant *

### group(cn)
Searches groups by common name, returns a list of users in that group.

### getGroups(dn)
Returns a list of cns for groups the given member is a part of.

### rtps()

Returns a list of rtps. Shorthand for `group('rtp')`

### drinkAdmins()

Returns a list of drink admins. Shorthand for `group('drink')`

### eboard()

Returns a list of eboard members. Shorthand for `group('eboard')`

Project details


Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page