/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to mandos

  • Committer: Björn Påhlsson
  • Date: 2011-12-31 22:44:06 UTC
  • Revision ID: belorn@recompile.se-20111231224406-b1w5a1p3639aymxe
fixed bug with bad stored config state for expires and last_checked_ok.

Show diffs side-by-side

added added

removed removed

Lines of Context:
460
460
 
461
461
    @staticmethod
462
462
    def config_parser(config):
463
 
        """ Construct a new dict of client settings of this form:
 
463
        """Construct a new dict of client settings of this form:
464
464
        { client_name: {setting_name: value, ...}, ...}
465
 
        with exceptions for any special settings as defined above"""
 
465
        with exceptions for any special settings as defined above.
 
466
        NOTE: Must be a pure function. Must return the same result
 
467
        value given the same arguments.
 
468
        """
466
469
        settings = {}
467
470
        for client_name in config.sections():
468
471
            section = dict(config.items(client_name))
498
501
            client["last_approval_request"] = None
499
502
            client["last_checked_ok"] = None
500
503
            client["last_checker_status"] = None
501
 
            if client["enabled"]:
502
 
                client["last_enabled"] = datetime.datetime.utcnow()
503
 
                client["expires"] = (datetime.datetime.utcnow()
504
 
                                     + client["timeout"])
505
 
            else:
506
 
                client["last_enabled"] = None
507
 
                client["expires"] = None
508
 
 
 
504
        
509
505
        return settings
510
506
        
511
507
        
518
514
        for setting, value in settings.iteritems():
519
515
            setattr(self, setting, value)
520
516
        
 
517
        if self.enabled:
 
518
            if not hasattr(self, "last_enabled"):
 
519
                self.last_enabled = datetime.datetime.utcnow()
 
520
            if not hasattr(self, "expires"):
 
521
                self.expires = (datetime.datetime.utcnow()
 
522
                                + self.timeout)
 
523
        else:
 
524
            self.last_enabled = None
 
525
            self.expires = None
 
526
       
521
527
        logger.debug("Creating client %r", self.name)
522
528
        # Uppercase and remove spaces from fingerprint for later
523
529
        # comparison purposes with return value from the fingerprint()
2263
2269
                        client["expires"] = (datetime.datetime
2264
2270
                                             .utcnow()
2265
2271
                                             + client["timeout"])
2266
 
                    
 
2272
                        logger.debug("Last checker succeeded,"
 
2273
                                     " keeping {0} enabled"
 
2274
                                     .format(client["name"]))
2267
2275
            try:
2268
2276
                client["secret"] = (
2269
2277
                    pgp.decrypt(client["encrypted_secret"],