summaryrefslogtreecommitdiffstats
path: root/ipaserver/conn.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2009-01-04 18:44:16 -0700
committerJason Gerard DeRose <jderose@redhat.com>2009-01-04 18:44:16 -0700
commit7442ad2e27afa7719bfd7de16ac8b0b44cb418de (patch)
tree20c4ae7a83676464df3c17d6c10274a48fd5d9e6 /ipaserver/conn.py
parent6fe78a4944f11d430b724103f7d8d49c92af9b63 (diff)
downloadfreeipa-7442ad2e27afa7719bfd7de16ac8b0b44cb418de.tar.gz
freeipa-7442ad2e27afa7719bfd7de16ac8b0b44cb418de.tar.xz
freeipa-7442ad2e27afa7719bfd7de16ac8b0b44cb418de.zip
Renamed ipa_server/ to ipaserver/ and tests/test_ipa_server/ to tests/test_ipaserver
Diffstat (limited to 'ipaserver/conn.py')
-rw-r--r--ipaserver/conn.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/ipaserver/conn.py b/ipaserver/conn.py
new file mode 100644
index 000000000..fb00ad998
--- /dev/null
+++ b/ipaserver/conn.py
@@ -0,0 +1,69 @@
+# Authors: Rob Crittenden <rcritten@redhat.com>
+#
+# Copyright (C) 2008 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; version 2 only
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+
+import krbV
+import ldap
+import ldap.dn
+import ipaldap
+
+class IPAConn:
+ def __init__(self, host, port, krbccache, debug=None):
+ self._conn = None
+
+ # Save the arguments
+ self._host = host
+ self._port = port
+ self._krbccache = krbccache
+ self._debug = debug
+
+ self._ctx = krbV.default_context()
+
+ ccache = krbV.CCache(name=krbccache, context=self._ctx)
+ cprinc = ccache.principal()
+
+ self._conn = ipaldap.IPAdmin(host,port,None,None,None,debug)
+
+ # This will bind the connection
+ try:
+ self._conn.set_krbccache(krbccache, cprinc.name)
+ except ldap.UNWILLING_TO_PERFORM, e:
+ raise e
+ except Exception, e:
+ raise e
+
+ def __del__(self):
+ # take no chances on unreleased connections
+ self.releaseConn()
+
+ def getConn(self):
+ return self._conn
+
+ def releaseConn(self):
+ if self._conn is None:
+ return
+
+ self._conn.unbind_s()
+ self._conn = None
+
+ return
+
+if __name__ == "__main__":
+ ipaconn = IPAConn("localhost", 389, "FILE:/tmp/krb5cc_500")
+ x = ipaconn.getConn().getEntry("dc=example,dc=com", ldap.SCOPE_SUBTREE, "uid=admin", ["cn"])
+ print "%s" % x