#!/usr/bin/python
-# Copyright 2011 Lars Wirzenius
+# Copyright 2011, 2012 Lars Wirzenius
+# Copyright 2012 Codethink Limited
#
# 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
self.settings.boolean(['enable-dhcp'], 'enable DHCP on eth0')
self.settings.string(['root-password'], 'set root password',
metavar='PASSWORD')
+ self.settings.boolean(['lock-root-password'],
+ 'lock root account so they cannot login?')
self.settings.string(['customize'],
'run SCRIPT after setting up system',
metavar='SCRIPT')
self.customize(rootdir)
except BaseException, e:
self.message('EEEK! Something bad happened...')
- self.cleanup()
+ self.cleanup_system()
raise
else:
- self.cleanup()
+ self.cleanup_system()
def message(self, msg):
if self.settings['verbose']:
if self.settings['root-password']:
self.message('Setting root password')
self.set_password(rootdir, 'root', self.settings['root-password'])
- else:
+ elif self.settings['lock-root-password']:
self.message('Locking root password')
self.runcmd(['chroot', rootdir, 'passwd', '-l', 'root'])
+ else:
+ self.message('Give root an empty password')
+ self.delete_password(rootdir, 'root')
def create_users(self, rootdir):
def create_user(user):
self.set_password(rootdir, user, password)
else:
create_user(userpass)
+ self.delete_password(rootdir, userpass)
def set_password(self, rootdir, user, password):
encrypted = crypt.crypt(password, '..')
self.runcmd(['chroot', rootdir, 'usermod', '-p', encrypted, user])
+ def delete_password(self, rootdir, user):
+ self.runcmd(['chroot', rootdir, 'passwd', '-d', user])
+
def remove_udev_persistent_rules(self, rootdir):
self.message('Removing udev persistent cd and net rules')
for x in ['70-persistent-cd.rules', '70-persistent-net.rules']:
self.runcmd(['sync'])
import time; time.sleep(2)
- def cleanup(self):
+ def cleanup_system(self):
# Clean up after any errors.
self.message('Cleaning up')
script = self.settings['customize']
if script:
self.message('Running customize script %s' % script)
- self.runcmd([script, rootdir])
+ with open('/dev/tty', 'w') as tty:
+ cliapp.runcmd([script, rootdir], stdout=tty, stderr=tty)
if __name__ == '__main__':