From 7d95cd612c1b340add692038c835e7cd8d8ad18b Mon Sep 17 00:00:00 2001 From: Karl MacMillan Date: Tue, 31 Jul 2007 12:09:38 -0400 Subject: Final reorginzation to reflect packaging. --- ipa-python/Makefile | 11 ++++++ ipa-python/README | 0 ipa-python/rpcclient.py | 102 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 113 insertions(+) create mode 100644 ipa-python/Makefile create mode 100644 ipa-python/README create mode 100644 ipa-python/rpcclient.py (limited to 'ipa-python') diff --git a/ipa-python/Makefile b/ipa-python/Makefile new file mode 100644 index 00000000..bc6554be --- /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 00000000..e69de29b diff --git a/ipa-python/rpcclient.py b/ipa-python/rpcclient.py new file mode 100644 index 00000000..41602662 --- /dev/null +++ b/ipa-python/rpcclient.py @@ -0,0 +1,102 @@ +#! /usr/bin/python -E +# Authors: Rob Crittenden +# +# 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 -- cgit From 8cf45633fe3e2f114c418304bb949eefabc97485 Mon Sep 17 00:00:00 2001 From: Karl MacMillan Date: Tue, 31 Jul 2007 15:52:02 -0400 Subject: Fixed broken patches and server spec. --- ipa-python/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ipa-python/__init__.py (limited to 'ipa-python') diff --git a/ipa-python/__init__.py b/ipa-python/__init__.py new file mode 100644 index 00000000..e69de29b -- cgit From 66ee656155aa2cd8e1ae7445e94cdd918e5cb976 Mon Sep 17 00:00:00 2001 From: Karl MacMillan Date: Tue, 31 Jul 2007 16:35:59 -0400 Subject: Added spec files for python and admintools. --- ipa-python/freeipa-python.spec | 45 +++++++++++++++++++++++++++++++++++++++ ipa-python/freeipa-python.spec.in | 45 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100755 ipa-python/freeipa-python.spec create mode 100755 ipa-python/freeipa-python.spec.in (limited to 'ipa-python') diff --git a/ipa-python/freeipa-python.spec b/ipa-python/freeipa-python.spec new file mode 100755 index 00000000..61be3a5d --- /dev/null +++ b/ipa-python/freeipa-python.spec @@ -0,0 +1,45 @@ +Name: freeipa-python +Version: 0.1.0 +Release: 1%{?dist} +Summary: FreeIPA authentication server + +Group: System Environment/Base +License: GPL +URL: http://www.freeipa.org +Source0: %{name}-%{version}.tgz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildArch: noarch + +Requires: python + +%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} + +%define pkgpythondir %{python_sitelib}/ipa + +%description +FreeIPA is a server for identity, policy, and audit. + +%prep +%setup -q + +%install +rm -rf %{buildroot} +mkdir -p %{buildroot}%{pkgpythondir} + +make install DESTDIR=%{buildroot} + + +%clean +rm -rf %{buildroot} + + +%files +%defattr(-,root,root,-) +%{pkgpythondir}/* + + +%changelog +* Fri Jul 27 2007 Karl MacMillan - 0.1.0-1 +- Initial rpm version + + diff --git a/ipa-python/freeipa-python.spec.in b/ipa-python/freeipa-python.spec.in new file mode 100755 index 00000000..90a135b4 --- /dev/null +++ b/ipa-python/freeipa-python.spec.in @@ -0,0 +1,45 @@ +Name: freeipa-python +Version: VERSION +Release: 1%{?dist} +Summary: FreeIPA authentication server + +Group: System Environment/Base +License: GPL +URL: http://www.freeipa.org +Source0: %{name}-%{version}.tgz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildArch: noarch + +Requires: python + +%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} + +%define pkgpythondir %{python_sitelib}/ipa + +%description +FreeIPA is a server for identity, policy, and audit. + +%prep +%setup -q + +%install +rm -rf %{buildroot} +mkdir -p %{buildroot}%{pkgpythondir} + +make install DESTDIR=%{buildroot} + + +%clean +rm -rf %{buildroot} + + +%files +%defattr(-,root,root,-) +%{pkgpythondir}/* + + +%changelog +* Fri Jul 27 2007 Karl MacMillan - 0.1.0-1 +- Initial rpm version + + -- cgit