* Add possibility to block blacklisted IPs also in firewall (done)
   - Implemented and tested
   - Add registration of blacklisted IP's on startup as well,
     ability to disable via config
   - Flush chain on startup/shutdown, ability to disable via config

* BUGFIX:  Improve shutdown of firewall update thread (done)
   - At present, waitpid() fails, because the process looses its
     relation to the parent process when openvpn is run as a daemon

     Possible solution: Let master process wait for a confirmation
     sent via Posix Semaphore as confirmation that the process is
     shutting down.

* Go through all log statements, make sure log type and log level is sane

* Add pthread mutex locking in eurephia_log(...) [beta_0.9 req]

* Make new eurephiadb-driver_template.c - template for creating db driver (DONE)
   - add new parameter to eDBregister_attempt(...) -- attempt_mode

* Implement logging of env.variable time_duration on disconnect (DONE)
   - Needs to expand the openvpn_lastlog table with connection_duration
     field.

* Write firewall (iptables) implementation
   - Add function declarations in eurephia_firewall.h (DONE)
   - Enable firewall functionality by checking if firewall_interface
     config variable is set. (DONE)
   - Add eDBget_firewall_profile(ctx, session) in eurephiadb (DONE)
   - Add eurephia_firewall(ctx, mode{ADD|DELETE},   {profilename|macaddr},
                          (eurephiaCTX *, const int mode, char *) (DONE)
      - This function is located in eurephia_fw_iptables.c (DONE)
      - iptables -I {INSERT place} is taken from config:
        firewall_destination (DONE)
      - iptables -j {vpnuser_profile} is taken from VPN users
        accessprofile (DONE)

   - Needs probably to be an own thread with root permission and a
     socket to send ADD/DELETE commands (DONE)

   - Flush iptables chain on startup (DONE)

* Log MACaddresses per session into openvpn_macaddr_history (DONE)
   - Can change during a session
      CREATE TABLE openvpn_macaddr_history (
             sessionkey varchar(64)  NOT NULL,
             macaddr    varchar(20)  NOT NULL,
             registered timestamp    DEFAULT CURRENT_TIMESTAMP,
             semaid     integer      PRIMARY KEY AUTOINCREMENT,
             KEY(sessionkey),
             KEY(macaddr)
      );
    - Add insert in database/sqlite/eurphia-sqlite.c -- eDBregister_vpnaddr(...)

* BUGFIX: Core dumps when log file cannot be created (DONE)

* Fix core dump when openvpn process closes eDBdriver (DONE)

* Write eurephia main module - phase 1 (DONE)
   - replaces sqlite-auth.so (DONE)
   - utilising eurephiaDB database driver (DONE)
   - Add openvpn_plugin_close_v1 (DONE)

* Rename eDBfree_sessionkey -> eDBfree_session (DONE)

* Move get_config from eurephiadb-sqlite.c to ../../eurephia_values.c (DONE)
   - Make it more general  (DONE)
   - make use of eurephiaVALUES instead of its own dblconfig struct (DONE)
   = Now it is also used by eurephiadb_session.c too.

* Rename eDBgenerate_sessionkey(...) -> eDBopen_session(...) (DONE)

* certinfo.c (DONE)
   - cname -> common_name failure (DONE)

* rename dblink to eurephiaDB (DONE)
   - DBL -> eDB (DONE)
   - Find better names than eDBsessionvalues, eDBsessionkey (eDB -> eurephia) (DONE)
      - DBLsessionkey -> eueurephiaSESSION (DONE)
      - DBLsessionvalues -> eurephiaVALUES (DONE)
   - Find better names than DBLattempt_* (DONE)
   - Rename DBLconnection -> eDBconn (DONE)
   - plugin_context -> eurephiaCTX  (DONE)

* Go through code, check comments (DONE)

* Improve drivers/sqlite/sqlite.c (DONE)
   - remove headers from all record tuples, put result headers in an own data struct
   - put a pointer in record pointers to the corresponding header column
   - make dbresult record chain a circular chain, with pointers in both directions
   - write an algorithm which finds the shortest way to loop to a specific record ID

* Implement eDB_DriverVersion() and eDB_DriverAPIversion() (DONE)
