summaryrefslogtreecommitdiffstats
path: root/ipa-python
diff options
context:
space:
mode:
authorKarl MacMillan <kmacmillan@mentalrootkit.com>2007-07-31 12:09:38 -0400
committerKarl MacMillan <kmacmillan@mentalrootkit.com>2007-07-31 12:09:38 -0400
commit7d95cd612c1b340add692038c835e7cd8d8ad18b (patch)
tree144813760c6ff19d85285496293270385af74fde /ipa-python
parent1d8d4222ab05ee7cf84203d4917174f7fbca1200 (diff)
downloadfreeipa-7d95cd612c1b340add692038c835e7cd8d8ad18b.tar.gz
freeipa-7d95cd612c1b340add692038c835e7cd8d8ad18b.tar.xz
freeipa-7d95cd612c1b340add692038c835e7cd8d8ad18b.zip
Final reorginzation to reflect packaging.
Diffstat (limited to 'ipa-python')
-rw-r--r--ipa-python/Makefile11
-rw-r--r--ipa-python/README0
-rw-r--r--ipa-python/rpcclient.py102
3 files changed, 113 insertions, 0 deletions
diff --git a/ipa-python/Makefile b/ipa-python/Makefile
new file mode 100644
index 000000000..bc6554be4
--- /dev/null
+++ b/ipa-python/Makefile
@@ -0,0 +1,11 @@
+PYTHONLIBDIR ?= $(shell python -c "from distutils.sysconfig import *; print get_python_lib(1)")
+PACKAGEDIR ?= $(DESTDIR)/$(PYTHONLIBDIR)/ipa
+
+all: ;
+
+install:
+ -mkdir -p $(PACKAGEDIR)
+ install -m 644 *.py $(PACKAGEDIR)
+
+clean:
+ rm -f *~ *.pyc \ No newline at end of file
diff --git a/ipa-python/README b/ipa-python/README
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/ipa-python/README
diff --git a/ipa-python/rpcclient.py b/ipa-python/rpcclient.py
new file mode 100644
index 000000000..416026628
--- /dev/null
+++ b/ipa-python/rpcclient.py
@@ -0,0 +1,102 @@
+#! /usr/bin/python -E
+# Authors: Rob Crittenden <rcritten@redhat.com>
+#
+# Copyright (C) 2007 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 or later
+#
+# 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
+#
+
+#!/usr/bin/python
+
+try:
+ import krbV
+except ImportError:
+ pass
+import xmlrpclib
+import socket
+import os
+import base64
+
+# Some errors to catch
+# http://cvs.fedora.redhat.com/viewcvs/ldapserver/ldap/servers/plugins/pam_passthru/README?root=dirsec&rev=1.6&view=auto
+
+# FIXME: do we want this set somewhere else?
+server = xmlrpclib.ServerProxy("http://localhost:80/ipa")
+
+def get_user(username):
+ """Get a specific user"""
+
+ try:
+ result = server.get_user(username)
+ myuser = result
+ except xmlrpclib.Fault, fault:
+ raise xmlrpclib.Fault(fault.faultCode, fault.faultString)
+ return None
+ except socket.error, (value, msg):
+ raise xmlrpclib.Fault(value, msg)
+ return None
+
+ return myuser
+
+def add_user(user):
+ """Add a new user"""
+
+ # FIXME: Get the realm from somewhere
+ realm="GREYOAK.COM"
+
+ # FIXME: This should be dynamic and can include just about anything
+ # Let us add in some missing attributes
+ if user.get('homeDirectory') is None:
+ user['homeDirectory'] ='/home/%s' % user['uid']
+ if user.get('gecos') is None:
+ user['gecos'] = user['uid']
+
+ # FIXME: This can be removed once the DS plugin is installed
+ user['uidNumber'] ='501'
+
+ # FIXME: What is the default group for users?
+ user['gidNumber'] ='501'
+ user['krbPrincipalName'] = "%s@%s" % (user['uid'], realm)
+ user['cn'] = "%s %s" % (user['gn'], user['sn'])
+ if user.get('gn'):
+ del user['gn']
+
+ try:
+ result = server.add_user(user)
+ return result
+ except xmlrpclib.Fault, fault:
+ raise xmlrpclib.Fault(fault.faultCode, fault.faultString)
+ return None
+ except socket.error, (value, msg):
+ raise xmlrpclib.Fault(value, msg)
+ return None
+
+def get_add_schema():
+ """Get the list of attributes we need to ask when adding a new
+ user.
+ """
+
+ # FIXME: Hardcoded and designed for the TurboGears GUI. Do we want
+ # this for the CLI as well?
+ try:
+ result = server.get_add_schema()
+ except xmlrpclib.Fault, fault:
+ raise xmlrpclib.Fault(fault,faultCode, fault.faultString)
+ return None
+ except socket.error, (value, msg):
+ raise xmlrpclib.Fault(value, msg)
+ return None
+
+ return result