* 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)