X-Git-Url: http://git.cascardo.info/?a=blobdiff_plain;f=ipsilon%2Finstall%2Fipsilon-server-install;h=3e9ca1089b4c10b03c8e065d669d9549afe1ad24;hb=d5226ac4c37b38c51a1e0de1835488432723995f;hp=d9e4585ff2b1151301330e0598d22f05b63fbba9;hpb=c6e97e93a61b02602f14606a60b6154880308123;p=cascardo%2Fipsilon.git diff --git a/ipsilon/install/ipsilon-server-install b/ipsilon/install/ipsilon-server-install index d9e4585..3e9ca10 100755 --- a/ipsilon/install/ipsilon-server-install +++ b/ipsilon/install/ipsilon-server-install @@ -19,8 +19,10 @@ from ipsilon.login.common import LoginMgrsInstall from ipsilon.providers.common import ProvidersInstall +from ipsilon.helpers.common import EnvHelpersInstall from ipsilon.util.data import Store from ipsilon.tools import files +import ConfigParser import argparse import cherrypy import logging @@ -125,6 +127,11 @@ def install(plugins, args): db = Store() db.save_user_preferences(args['admin_user'], {'is_admin': 1}) + logger.info('Configuring environment helpers') + for plugin_name in plugins['Environment Helpers']: + plugin = plugins['Environment Helpers'][plugin_name] + plugin.configure_server(args) + logger.info('Configuring login managers') for plugin_name in args['lm_order']: plugin = plugins['Login Managers'][plugin_name] @@ -136,7 +143,7 @@ def install(plugins, args): plugin.configure(args) # Fixup permissions so only the ipsilon user can read these files - files.fix_user_dirs(instance_conf, opts['system_user'], mode=0500) + files.fix_user_dirs(instance_conf, opts['system_user']) files.fix_user_dirs(args['data_dir'], opts['system_user']) try: subprocess.call(['/usr/sbin/restorecon', '-R', args['data_dir']]) @@ -150,12 +157,40 @@ def uninstall(plugins, args): def find_plugins(): plugins = { + 'Environment Helpers': EnvHelpersInstall().plugins, 'Login Managers': LoginMgrsInstall().plugins, 'Auth Providers': ProvidersInstall().plugins } return plugins +def parse_config_profile(args): + config = ConfigParser.ConfigParser() + files = config.read(args['config_profile']) + if len(files) == 0: + raise ConfigurationError('Config Profile file %s not found!' % + args['config_profile']) + + if 'globals' in config.sections(): + G = config.options('globals') + for g in G: + val = config.get('globals', g) + if g in globals(): + globals()[g] = val + else: + for k in globals().keys(): + if k.lower() == g.lower(): + globals()[k] = val + break + + if 'arguments' in config.sections(): + A = config.options('arguments') + for a in A: + args[a] = config.get('arguments', a) + + return args + + def parse_args(plugins): parser = argparse.ArgumentParser(description='Ipsilon Install Options') parser.add_argument('--version', @@ -170,8 +205,8 @@ def parse_args(plugins): help="User account used to run the server") parser.add_argument('--admin-user', default='admin', help="User account that is assigned admin privileges") - parser.add_argument('--ipa', choices=['yes', 'no'], default='yes', - help='Detect and use an IPA server for authentication') + parser.add_argument('--config-profile', default=None, + help="File containing install options") parser.add_argument('--uninstall', action='store_true', help="Uninstall the server and all data") @@ -187,6 +222,9 @@ def parse_args(plugins): args = vars(parser.parse_args()) + if args['config_profile']: + args = parse_config_profile(args) + if not args['hostname']: args['hostname'] = socket.getfqdn() @@ -250,4 +288,5 @@ if __name__ == '__main__': print 'Uninstallation complete.' else: print 'Installation complete.' + print 'Please restart HTTPD to enable the IdP instance.' sys.exit(out)