Example #1
0
    def __load(self):
        try:
            with open(self.passwd_filename, 'r') as f:
                self.passwd = load(f)
        except (IOError, ValueError) as err:
            logger.warn('Cannot read {0}: {1}'.format(self.passwd_filename, str(err)))

        try:
            with open(self.group_filename, 'r') as f:
                self.group = load(f)
        except (IOError, ValueError) as err:
            logger.warn('Cannot read {0}: {1}'.format(self.group_filename, str(err)))
Example #2
0
    def run(self, fd):
        try:
            with os.fdopen(fd.fd, 'r', closefd=False) as f:
                dump = load(f)
        except IOError as err:
            raise TaskException(errno.ENOENT, "Cannot open input file: {0}".format(str(err)))
        except ValueError as err:
            raise TaskException(errno.EINVAL, "Cannot parse input file: {0}".format(str(err)))

        def progress(name):
            self.set_progress(50, 'Restored collection {0}'.format(name))

        try:
            restore_db(self.datastore, dump, progress_callback=progress)
        except DatastoreException as err:
            raise TaskException(errno.EFAULT, 'Cannot restore factory database: {0}'.format(str(err)))

        self.join_subtasks(self.run_subtask('system.reboot', 1))
Example #3
0
    def run(self, fd):
        try:
            with os.fdopen(fd.fd, 'r', closefd=False) as f:
                dump = load(f)
        except IOError as err:
            raise TaskException(errno.ENOENT, "Cannot open input file: {0}".format(str(err)))
        except ValueError as err:
            raise TaskException(errno.EINVAL, "Cannot parse input file: {0}".format(str(err)))

        def progress(name):
            self.set_progress(50, 'Restored collection {0}'.format(name))

        try:
            restore_db(self.datastore, dump, progress_callback=progress)
        except DatastoreException as err:
            raise TaskException(errno.EFAULT, 'Cannot restore factory database: {0}'.format(str(err)))

        self.run_subtask_sync('system.reboot', 1)
Example #4
0
    def change_password(self, username, password):
        try:
            with open(self.passwd_filename, 'r') as f:
                passwd = load(f)

            user = first_or_default(lambda u: u['username'] == username, passwd)
            if not user:
                raise OSError(errno.ENOENT, os.strerror(errno.ENOENT))

            user.update({
                'unixhash': crypted_password(password),
                'smbhash': nt_password(password),
                'password_changed_at': datetime.datetime.utcnow()
            })

            with open(self.passwd_filename + '.tmp', 'w') as f:
                dump(passwd, f, indent=4)

            os.rename(self.passwd_filename + '.tmp', self.passwd_filename)
            shutil.copy(self.passwd_filename, os.path.join('/conf/base', self.passwd_filename[1:]))
            self.__load()
        except (IOError, ValueError) as err:
            logger.warn('Cannot change password: {0}'.format(str(err)))
            raise