X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=ipsilon%2Finstall%2Fipsilon-server-install;h=5f95d7e9b45bcf2bea68064121c7066320262442;hp=307f1e40b7fa6b8b00ee043e33342f86ab7ea86e;hb=eaaffe854977912f9a4c0cc477197bd8ba96230f;hpb=7ad204c13898245cdea5acfa90be83e767276994 diff --git a/ipsilon/install/ipsilon-server-install b/ipsilon/install/ipsilon-server-install index 307f1e4..5f95d7e 100755 --- a/ipsilon/install/ipsilon-server-install +++ b/ipsilon/install/ipsilon-server-install @@ -40,7 +40,7 @@ TEMPLATES = '/usr/share/ipsilon/templates/install' CONFDIR = '/etc/ipsilon' DATADIR = '/var/lib/ipsilon' HTTPDCONFD = '/etc/httpd/conf.d' -BINDIR = '/usr/sbin' +BINDIR = '/usr/libexec' STATICDIR = '/usr/share/ipsilon' WSGI_SOCKET_PREFIX = None @@ -109,12 +109,12 @@ def install(plugins, args): 'sysuser': args['system_user'], 'ipsilondir': BINDIR, 'staticdir': STATICDIR, - 'admindb': args['database_url'] % { + 'admindb': args['admin_dburi'] or args['database_url'] % { 'datadir': args['data_dir'], 'dbname': 'adminconfig'}, - 'usersdb': args['database_url'] % { + 'usersdb': args['users_dburi'] or args['database_url'] % { 'datadir': args['data_dir'], 'dbname': 'userprefs'}, - 'transdb': args['database_url'] % { - 'datadir': args['data_dir'], 'dbname': 'transactions'}, + 'transdb': args['transaction_dburi'] or args['database_url'] % + {'datadir': args['data_dir'], 'dbname': 'transactions'}, 'secure': "False" if args['secure'] == "no" else "True", 'debugging': "True" if args['server_debugging'] else "False"} # Testing database sessions @@ -128,7 +128,7 @@ def install(plugins, args): else: confopts['sessopt'] = 'path' confopts['sessval'] = os.path.join(args['data_dir'], 'sessions') - # Whetehr to disable security (for testing) + # Whether to disable security (for testing) if args['secure'] == 'no': confopts['secure'] = "False" confopts['sslrequiressl'] = "" @@ -182,7 +182,10 @@ def install(plugins, args): logger.info('Configuring login managers') for plugin_name in args['lm_order']: - plugin = plugins['Login Managers'][plugin_name] + try: + plugin = plugins['Login Managers'][plugin_name] + except KeyError: + sys.exit('Login provider %s not installed' % plugin_name) if plugin.configure(args) == False: print 'Configuration of login manager %s failed' % plugin_name @@ -235,7 +238,7 @@ def uninstall(plugins, args): print 'Removal of environment helper %s failed' % plugin_name logger.info('Removing login managers') - for plugin_name in args['lm_order']: + for plugin_name in plugins['Login Managers']: plugin = plugins['Login Managers'][plugin_name] if plugin.unconfigure(args) == False: print 'Removal of login manager %s failed' % plugin_name @@ -318,13 +321,20 @@ def parse_args(plugins): parser.add_argument('--secure', choices=['yes', 'no'], default='yes', help="Turn on all security checks") parser.add_argument('--config-profile', default=None, - help="File containing install options") + help=argparse.SUPPRESS) parser.add_argument('--server-debugging', action='store_true', help="Enable debugging") parser.add_argument('--uninstall', action='store_true', help="Uninstall the server and all data") parser.add_argument('--yes', action='store_true', help="Always answer yes") + parser.add_argument('--admin-dburi', + help='Configuration database URI (override template)') + parser.add_argument('--users-dburi', + help='User configuration database URI (override ' + 'template)') + parser.add_argument('--transaction-dburi', + help='Transaction database URI (override template)') lms = [] @@ -344,9 +354,17 @@ def parse_args(plugins): if not args['hostname']: args['hostname'] = socket.getfqdn() + if args['uninstall']: + return args + if len(args['hostname'].split('.')) < 2: raise ConfigurationError('Hostname: %s is not a FQDN') + for plugin_group in plugins: + for plugin_name in plugins[plugin_group]: + plugin = plugins[plugin_group][plugin_name] + plugin.validate_args(args) + try: pwd.getpwnam(args['system_user']) except KeyError: @@ -361,12 +379,7 @@ def parse_args(plugins): args['lm_order'] = args['lm_order'].split(',') if len(args['lm_order']) == 0: - #force the basic pam provider if nothing else is selected - if 'pam' not in args: - parser.print_help() - sys.exit(-1) - args['lm_order'] = ['pam'] - args['pam'] = 'yes' + sys.exit('No login plugins are enabled.') #FIXME: check instance is only alphanums @@ -401,6 +414,9 @@ if __name__ == '__main__': print 'Installation aborted.' print 'See log file %s for details' % LOGFILE out = 1 + except SystemExit: + out = 1 + raise finally: if out == 0: if 'uninstall' in opts and opts['uninstall'] is True: