
fail2ban.server.database module
*******************************

class class fail2ban.server.database.Fail2BanDb(filename, purgeAge=86400)

   Bases: "object"

   Fail2Ban database for storing persistent data.

   This allows after Fail2Ban is restarted to reinstated bans and to
   continue monitoring logs from the same point.

   This will either create a new Fail2Ban database, connect to an
   existing, and if applicable upgrade the schema in the process.

   Parameters:
      **filename** : str

         File name for SQLite3 database, which will be created if
         doesn't already exist.

      **purgeAge** : int

         Purge age in seconds, used to remove old bans from database
         during purge.

   Raises:
      **sqlite3.OperationalError**

         Error connecting/creating a SQLite3 database.

      **RuntimeError**

         If exisiting database fails to update to new schema.

   -[ Attributes ]-

   +------------+--------------------------------------------------------------------------------------------+
   | "filename" | File name of SQLite3 database file.                                                        |
   +------------+--------------------------------------------------------------------------------------------+
   | "purgeage" | Purge age in seconds.                                                                      |
   +------------+--------------------------------------------------------------------------------------------+

   -[ Methods ]-

   +------------+--------------------------------------------------------------------------------------------+
   | "addBan"(  | Add a ban to the database.                                                                 |
   | *args,     |                                                                                            |
   | **kwargs)  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "addJail"  | Adds a jail to the database.                                                               |
   | (*args,    |                                                                                            |
   | **kwargs)  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "addLog"(  | Adds a log to the database.                                                                |
   | *args,     |                                                                                            |
   | **kwargs)  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "createDb  | Creates a new database, called during initialisation.                                      |
   | "(*args,   |                                                                                            |
   | **kwargs)  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "delAllJa  | Deletes all jails from the database.                                                       |
   | ils"(*arg  |                                                                                            |
   | s,         |                                                                                            |
   | **kwargs)  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "delBan"(  | Delete a ban from the database.                                                            |
   | *args,     |                                                                                            |
   | **kwargs)  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "delJail"  | Deletes a jail from the database.                                                          |
   | (*args,    |                                                                                            |
   | **kwargs)  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "getBans"  | Get bans from the database.                                                                |
   | (**kwargs) |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "getBansM  | Get bans from the database, merged into single ticket.                                     |
   | erged"([i  |                                                                                            |
   | p, jail,   |                                                                                            |
   | bantime])  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "getJailN  | Get name of jails in database.                                                             |
   | ames"(*ar  |                                                                                            |
   | gs,        |                                                                                            |
   | **kwargs)  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "getLogPa  | Gets all the log paths from the database.                                                  |
   | ths"(*arg  |                                                                                            |
   | s,         |                                                                                            |
   | **kwargs)  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "purge"(*  | Purge old bans, jails and log files from database.                                         |
   | args,      |                                                                                            |
   | **kwargs)  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "updateDb  | Update an existing database, called during initialisation.                                 |
   | "(*args,   |                                                                                            |
   | **kwargs)  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+
   | "updateLo  | Updates hash and last position in log file.                                                |
   | g"(*args,  |                                                                                            |
   | **kwargs)  |                                                                                            |
   +------------+--------------------------------------------------------------------------------------------+

   addBan(*args, **kwargs)

      Add a ban to the database.

      Parameters:
         **jail** : Jail

            Jail in which the ban has occurred.

         **ticket** : BanTicket

            Ticket of the ban to be added.

   addJail(*args, **kwargs)

      Adds a jail to the database.

      Parameters:
         **jail** : Jail

            Jail to be added to the database.

   addLog(*args, **kwargs)

      Adds a log to the database.

      Parameters:
         **jail** : Jail

            Jail that log is being monitored by.

         **container** : FileContainer

            File container of the log file being added.

      Returns:
         int

            If log was already present in database, value of last
            position in the log file; else *None*

   createDb(*args, **kwargs)

      Creates a new database, called during initialisation.

   delAllJails(*args, **kwargs)

      Deletes all jails from the database.

   delBan(*args, **kwargs)

      Delete a ban from the database.

      Parameters:
         **jail** : Jail

            Jail in which the ban has occurred.

         **ip** : str

            IP to be removed.

   delJail(*args, **kwargs)

      Deletes a jail from the database.

      Parameters:
         **jail** : Jail

            Jail to be removed from the database.

   filename

      File name of SQLite3 database file.

   getBans(**kwargs)

      Get bans from the database.

      Parameters:
         **jail** : Jail

            Jail that the ban belongs to. Default *None*; all jails.

         **bantime** : int

            Ban time in seconds, such that bans returned would still
            be valid now.  Negative values are equivalent to *None*.
            Default *None*; no limit.

         **ip** : str

            IP Address to filter bans by. Default *None*; all IPs.

      Returns:
         list

            List of >>`<<Ticket`s for bans stored in database.

   getBansMerged(ip=None, jail=None, bantime=None)

      Get bans from the database, merged into single ticket.

      This is the same as *getBans*, but bans merged into single
      ticket.

      Parameters:
         **jail** : Jail

            Jail that the ban belongs to. Default *None*; all jails.

         **bantime** : int

            Ban time in seconds, such that bans returned would still
            be valid now. Negative values are equivalent to *None*.
            Default *None*; no limit.

         **ip** : str

            IP Address to filter bans by. Default *None*; all IPs.

      Returns:
         list or Ticket

            Single ticket representing bans stored in database per IP
            in a list. When *ip* argument passed, a single *Ticket* is
            returned.

   getJailNames(*args, **kwargs)

      Get name of jails in database.

      Currently only used for testing purposes.

      Returns:
         set

            Set of jail names.

   getLogPaths(*args, **kwargs)

      Gets all the log paths from the database.

      Currently only for testing purposes.

      Parameters:
         **jail** : Jail

            If specified, will only reutrn logs belonging to the jail.

      Returns:
         set

            Set of log paths.

   purge(*args, **kwargs)

      Purge old bans, jails and log files from database.

   purgeage

      Purge age in seconds.

   updateDb(*args, **kwargs)

      Update an existing database, called during initialisation.

      A timestamped backup is also created prior to attempting the
      update.

   updateLog(*args, **kwargs)

      Updates hash and last position in log file.

      Parameters:
         **jail** : Jail

            Jail of which the log file belongs to.

         **container** : FileContainer

            File container of the log file being updated.

fail2ban.server.database.commitandrollback(f)
