summaryrefslogtreecommitdiffstats
path: root/ipapython
diff options
context:
space:
mode:
authorTomas Babej <tbabej@redhat.com>2014-05-27 09:13:59 +0200
committerPetr Viktorin <pviktori@redhat.com>2014-06-16 19:48:18 +0200
commit5f31f2d35f714880230c1a92a322c620e8708eb3 (patch)
tree200f71d434d8403df61d7c08b540e73f34897150 /ipapython
parent6a4cd8a4e33fba68c89d6046a98adb790c401041 (diff)
downloadfreeipa-5f31f2d35f714880230c1a92a322c620e8708eb3.tar.gz
freeipa-5f31f2d35f714880230c1a92a322c620e8708eb3.tar.xz
freeipa-5f31f2d35f714880230c1a92a322c620e8708eb3.zip
ipaplatform: Do not require custom Authconfig implementations from platform modules
https://fedorahosted.org/freeipa/ticket/4052 Reviewed-By: Petr Viktorin <pviktori@redhat.com>
Diffstat (limited to 'ipapython')
-rw-r--r--ipapython/platform/base/__init__.py80
-rw-r--r--ipapython/platform/redhat/auth.py49
2 files changed, 0 insertions, 129 deletions
diff --git a/ipapython/platform/base/__init__.py b/ipapython/platform/base/__init__.py
index f6af75c80..3a6670a87 100644
--- a/ipapython/platform/base/__init__.py
+++ b/ipapython/platform/base/__init__.py
@@ -22,87 +22,7 @@ FIREFOX_INSTALL_DIRS = ["/usr/lib64/firefox", "/usr/lib/firefox"]
# /firefox/install/dir/FIREFOX_PREFERENCES_REL_PATH
FIREFOX_PREFERENCES_REL_PATH = "browser/defaults/preferences"
-class AuthConfig(object):
- """
- AuthConfig class implements system-independent interface to configure
- system authentication resources. In Red Hat systems this is done with
- authconfig(8) utility.
- AuthConfig class is nothing more than a tool to gather configuration
- options and execute their processing. These options then converted by
- an actual implementation to series of a system calls to appropriate
- utilities performing real configuration.
-
- IPA *expects* names of AuthConfig's options to follow authconfig(8)
- naming scheme!
-
- Actual implementation should be done in ipapython/platform/<platform>.py
- by inheriting from platform.AuthConfig and redefining __build_args()
- and execute() methods.
-
- from ipapython.platform import platform
- class PlatformAuthConfig(platform.AuthConfig):
- def __build_args():
- ...
-
- def execute():
- ...
-
- authconfig = PlatformAuthConfig
- ....
-
- See ipapython/platform/redhat.py for a sample implementation that uses
- authconfig(8) as its backend.
-
- From IPA code perspective, the authentication configuration should be
- done with use of ipapython.services.authconfig:
-
- from ipapython import services as ipaservices
- auth_config = ipaservices.authconfig()
- auth_config.disable("ldap").\
- disable("krb5").\
- disable("sssd").\
- disable("sssdauth").\
- disable("mkhomedir").\
- add_option("update").\
- enable("nis").\
- add_parameter("nisdomain","foobar")
- auth_config.execute()
-
- If you need to re-use existing AuthConfig instance for multiple runs,
- make sure to call 'AuthConfig.reset()' between the runs.
- """
-
- def __init__(self):
- self.parameters = {}
-
- def enable(self, option):
- self.parameters[option] = True
- return self
-
- def disable(self, option):
- self.parameters[option] = False
- return self
-
- def add_option(self, option):
- self.parameters[option] = None
- return self
-
- def add_parameter(self, option, value):
- self.parameters[option] = [value]
- return self
-
- def __build_args(self):
- # do nothing
- return None
-
- def execute(self):
- # do nothing
- return None
-
- def reset(self):
- self.parameters = {}
- return self
diff --git a/ipapython/platform/redhat/auth.py b/ipapython/platform/redhat/auth.py
deleted file mode 100644
index 93c3c5e99..000000000
--- a/ipapython/platform/redhat/auth.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Authors: Simo Sorce <ssorce@redhat.com>
-# Alexander Bokovoy <abokovoy@redhat.com>
-#
-# Copyright (C) 2007-2011 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, either version 3 of the License, or
-# (at your option) any later version.
-#
-# 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, see <http://www.gnu.org/licenses/>.
-#
-
-from ipapython import ipautil
-from ipapython.platform import base
-
-class RedHatAuthConfig(base.AuthConfig):
- """
- AuthConfig class implements system-independent interface to configure
- system authentication resources. In Red Hat-produced systems this is done with
- authconfig(8) utility.
- """
- def __build_args(self):
- args = []
- for (option, value) in self.parameters.items():
- if type(value) is bool:
- if value:
- args.append("--enable%s" % (option))
- else:
- args.append("--disable%s" % (option))
- elif type(value) in (tuple, list):
- args.append("--%s" % (option))
- args.append("%s" % (value[0]))
- elif value is None:
- args.append("--%s" % (option))
- else:
- args.append("--%s%s" % (option,value))
- return args
-
- def execute(self):
- args = self.__build_args()
- ipautil.run(["/usr/sbin/authconfig"]+args)