示例#1
0
 def __init__(self, config=None):
     super(Audit, self).__init__(config)
     self.name = "sqlaudit"
     self.sign_data = not self.config.get("PI_AUDIT_NO_SIGN")
     self.sign_object = None
     self.verify_old_sig = self.config.get('PI_CHECK_OLD_SIGNATURES')
     if self.sign_data:
         self.read_keys(self.config.get("PI_AUDIT_KEY_PUBLIC"),
                        self.config.get("PI_AUDIT_KEY_PRIVATE"))
         self.sign_object = Sign(self.private, self.public)
     # Read column_length from the config file
     config_column_length = self.config.get("PI_AUDIT_SQL_COLUMN_LENGTH",
                                            {})
     # fill the missing parts with the default from the models
     self.custom_column_length = {
         k:
         (v if k not in config_column_length else config_column_length[k])
         for k, v in column_length.items()
     }
     # We can use "sqlaudit" as the key because the SQLAudit connection
     # string is fixed for a running privacyIDEA instance.
     # In other words, we will not run into any problems with changing connect strings.
     self.engine = get_engine(self.name, self._create_engine)
     # create a configured "Session" class. ``scoped_session`` is not
     # necessary because we do not share session objects among threads.
     # We use it anyway as a safety measure.
     Session = scoped_session(sessionmaker(bind=self.engine))
     self.session = Session()
     # Ensure that the connection gets returned to the pool when the request has
     # been handled. This may close an already-closed session, but this is not a problem.
     register_finalizer(self.session.close)
     self.session._model_changes = {}
示例#2
0
 def _truncate_data(self):
     """
     Truncate self.audit_data according to the column_length.
     :return: None
     """
     for column, l in column_length.items():
         if column in self.audit_data:
             data = self.audit_data[column]
             if isinstance(data, string_types):
                 if column == "policies":
                     # The policies column is shortend per comma entry
                     data = truncate_comma_list(data, l)
                 else:
                     data = data[:l]
             self.audit_data[column] = data
示例#3
0
 def _truncate_data(self):
     """
     Truncate self.audit_data according to the column_length.
     :return: None
     """
     for column, l in column_length.items():
         if column in self.audit_data:
             data = self.audit_data[column]
             if isinstance(data, string_types):
                 if column == "policies":
                     # The policies column is shortend per comma entry
                     data = truncate_comma_list(data, l)
                 else:
                     data = data[:l]
             self.audit_data[column] = data