fail2ban.server.datetemplate module
***********************************

class fail2ban.server.datetemplate.DateEpoch(lineBeginOnly=False, pattern=None, longFrm=False)

   Bases: "DateTemplate"

   A date template which searches for Unix timestamps.

   This includes Unix timestamps which appear at start of a line,
   optionally within square braces (nsd), or on SELinux audit log
   lines.

   Attributes:
      **name**
      "regex"
         Regex used to search for date.

   -[ Methods ]-

   +------------+--------------------------------------------------------------------------------------------+
   | "getDate"( | Method to return the date for a log line.                                                  |
   | line[,     |                                                                                            |
   | dateMatch, |                                                                                            |
   | default_tz |                                                                                            |
   | ])         |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "matchDate | Check if regex for date matches on a log line.                                             |
   | "(line,    |                                                                                            |
   | *args)     |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "setRegex" | Sets regex to use for searching for date in log line.                                      |
   | (regex[,   |                                                                                            |
   | wordBegin, |                                                                                            |
   | wordEnd])  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+

   +--------------------+------------+
   | **getRegex**       |            |
   +--------------------+------------+
   | **unboundPattern** |            |
   +--------------------+------------+

   getDate(line, dateMatch=None, default_tz=None)

      Method to return the date for a log line.

      Parameters:
         **line** : str
            Log line, of which the date should be extracted from.

         **default_tz: ignored, Unix timestamps are time zone
         independent**
      Returns:
         (float, str)
            Tuple containing a Unix timestamp, and the string of the
            date which was matched and in turned used to calculated
            the timestamp.

class fail2ban.server.datetemplate.DatePatternRegex(pattern=None, **kwargs)

   Bases: "DateTemplate"

   Date template, with regex/pattern

   Parameters:
      **pattern** : str
         Sets the date templates pattern.

   Attributes:
      **name**
      "regex"
         Regex used to search for date.

      "pattern"
         The pattern used for regex with strptime "%" time fields.

   -[ Methods ]-

   +------------+--------------------------------------------------------------------------------------------+
   | "getDate"( | Method to return the date for a log line.                                                  |
   | line[,     |                                                                                            |
   | dateMatch, |                                                                                            |
   | default_tz |                                                                                            |
   | ])         |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "matchDate | Check if regex for date matches on a log line.                                             |
   | "(line,    |                                                                                            |
   | *args)     |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "setRegex" | Sets regex to use for searching for date in log line.                                      |
   | (pattern[, |                                                                                            |
   | wordBegin, |                                                                                            |
   | wordEnd])  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+

   +--------------------+------------+
   | **getRegex**       |            |
   +--------------------+------------+
   | **unboundPattern** |            |
   +--------------------+------------+

   getDate(line, dateMatch=None, default_tz=None)

      Method to return the date for a log line.

      This uses a custom version of strptime, using the named groups
      from the instances *pattern* property.

      Parameters:
         **line** : str
            Log line, of which the date should be extracted from.

         **default_tz: optionally used to correct timezone**
      Returns:
         (float, str)
            Tuple containing a Unix timestamp, and the string of the
            date which was matched and in turned used to calculated
            the timestamp.

   property pattern

      The pattern used for regex with strptime "%" time fields.

      This should be a valid regular expression, of which matching
      string will be extracted from the log line. strptime style "%"
      fields will be replaced by appropriate regular expressions, or
      custom regex groups with names as per the strptime fields can
      also be used instead.

   setRegex(pattern, wordBegin=True, wordEnd=True)

      Sets regex to use for searching for date in log line.

      Parameters:
         **regex** : str
            The regex the template will use for searching for a date.

         **wordBegin** : bool
            Defines whether the regex should be modified to search at
            beginning of a word, by adding special boundary
            r'(?=^|b|W)' to start of regex. Can be disabled with
            specifying of ** at front of regex. Default True.

         **wordEnd** : bool
            Defines whether the regex should be modified to search at
            end of a word, by adding special boundary r'(?=b|W|$)' to
            end of regex. Can be disabled with specifying of ** at end
            of regex. Default True.

      Raises:
         re.error
            If regular expression fails to compile

class fail2ban.server.datetemplate.DateTai64n(wordBegin=False)

   Bases: "DateTemplate"

   A date template which matches TAI64N formate timestamps.

   Attributes:
      **name**
      "regex"
         Regex used to search for date.

   -[ Methods ]-

   +------------+--------------------------------------------------------------------------------------------+
   | "getDate"( | Method to return the date for a log line.                                                  |
   | line[,     |                                                                                            |
   | dateMatch, |                                                                                            |
   | default_tz |                                                                                            |
   | ])         |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "matchDate | Check if regex for date matches on a log line.                                             |
   | "(line,    |                                                                                            |
   | *args)     |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "setRegex" | Sets regex to use for searching for date in log line.                                      |
   | (regex[,   |                                                                                            |
   | wordBegin, |                                                                                            |
   | wordEnd])  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+

   +--------------------+------------+
   | **getRegex**       |            |
   +--------------------+------------+
   | **unboundPattern** |            |
   +--------------------+------------+

   getDate(line, dateMatch=None, default_tz=None)

      Method to return the date for a log line.

      Parameters:
         **line** : str
            Log line, of which the date should be extracted from.

         **default_tz: ignored, since TAI is time zone independent**
      Returns:
         (float, str)
            Tuple containing a Unix timestamp, and the string of the
            date which was matched and in turned used to calculated
            the timestamp.

class fail2ban.server.datetemplate.DateTemplate

   Bases: "object"

   A template which searches for and returns a date from a log line.

   This is an not functional abstract class which other templates
   should inherit from.

   Attributes:
      **name**
      "regex"
         Regex used to search for date.

   -[ Methods ]-

   +------------+--------------------------------------------------------------------------------------------+
   | "getDate"( | Abstract method, which should return the date for a log line                               |
   | line[,     |                                                                                            |
   | dateMatch, |                                                                                            |
   | default_tz |                                                                                            |
   | ])         |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "matchDate | Check if regex for date matches on a log line.                                             |
   | "(line,    |                                                                                            |
   | *args)     |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "setRegex" | Sets regex to use for searching for date in log line.                                      |
   | (regex[,   |                                                                                            |
   | wordBegin, |                                                                                            |
   | wordEnd])  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+

   +--------------------+------------+
   | **getRegex**       |            |
   +--------------------+------------+
   | **unboundPattern** |            |
   +--------------------+------------+

   LINE_BEGIN = 8

   LINE_END = 4

   WORD_BEGIN = 2

   WORD_END = 1

   abstractmethod getDate(line, dateMatch=None, default_tz=None)

      Abstract method, which should return the date for a log line

      This should return the date for a log line, typically taking the
      date from the part of the line which matched the templates
      regex. This requires abstraction, therefore just raises
      exception.

      Parameters:
         **line** : str
            Log line, of which the date should be extracted from.

         **default_tz: if no explicit time zone is present in the
         line**
            passing this will interpret it as in that time zone.

      Raises:
         NotImplementedError
            Abstract method, therefore always returns this.

   getRegex()

   matchDate(line, *args)

      Check if regex for date matches on a log line.

   property regex

      Regex used to search for date.

   setRegex(regex, wordBegin=True, wordEnd=True)

      Sets regex to use for searching for date in log line.

      Parameters:
         **regex** : str
            The regex the template will use for searching for a date.

         **wordBegin** : bool
            Defines whether the regex should be modified to search at
            beginning of a word, by adding special boundary
            r'(?=^|b|W)' to start of regex. Can be disabled with
            specifying of ** at front of regex. Default True.

         **wordEnd** : bool
            Defines whether the regex should be modified to search at
            end of a word, by adding special boundary r'(?=b|W|$)' to
            end of regex. Can be disabled with specifying of ** at end
            of regex. Default True.

      Raises:
         re.error
            If regular expression fails to compile

   static unboundPattern(pattern)
