summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2008-09-19 14:25:08 +0200
committerDavid Sommerseth <dazo@users.sourceforge.net>2008-09-19 14:25:08 +0200
commitd28d39cabd55b3de3258dabd3fbefe1976dc1bc1 (patch)
treeecb5090a5f3994875fef668d39030ef5ff176095
parent8b2c60cee562ed98596a228750f10f735725ac11 (diff)
downloadeurephia-d28d39cabd55b3de3258dabd3fbefe1976dc1bc1.tar.gz
eurephia-d28d39cabd55b3de3258dabd3fbefe1976dc1bc1.tar.xz
eurephia-d28d39cabd55b3de3258dabd3fbefe1976dc1bc1.zip
Added (untested) logging of time_duration into openvpn_lastlog.session_duration
-rw-r--r--TODO22
-rw-r--r--TODO.done22
-rw-r--r--database/sqlite/eurephiadb-sqlite.c7
-rw-r--r--database/sqlite/sql-schema.sql33
-rw-r--r--eurephia.c3
-rw-r--r--eurephiadb_driver.h2
6 files changed, 46 insertions, 43 deletions
diff --git a/TODO b/TODO
index a7509c4..d997508 100644
--- a/TODO
+++ b/TODO
@@ -1,26 +1,4 @@
-* 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
-
-* Implement logging of env.variable time_duration on disconnect
- - Needs to expand the openvpn_lastlog table with connection_duration
- field.
-
* Write admin program
- Add / Delete / Modify users
- Add / Delete / Modify certificates (by loading the certfile)
diff --git a/TODO.done b/TODO.done
index f0ed3ff..2ef088b 100644
--- a/TODO.done
+++ b/TODO.done
@@ -1,3 +1,25 @@
+* 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 (
diff --git a/database/sqlite/eurephiadb-sqlite.c b/database/sqlite/eurephiadb-sqlite.c
index f566320..67b22f4 100644
--- a/database/sqlite/eurephiadb-sqlite.c
+++ b/database/sqlite/eurephiadb-sqlite.c
@@ -581,7 +581,7 @@ int eDBregister_vpnmacaddr(eurephiaCTX *ctx, eurephiaSESSION *session, const cha
// Register the user as logged out
int eDBregister_logout(eurephiaCTX *ctx, eurephiaSESSION *skey,
- const char *bytes_sent, const char *bytes_received)
+ const char *bytes_sent, const char *bytes_received, const char *duration)
{
dbresult *res = NULL;
@@ -592,9 +592,10 @@ int eDBregister_logout(eurephiaCTX *ctx, eurephiaSESSION *skey,
res = sqlite_query(ctx,
"UPDATE openvpn_lastlog "
" SET sessionstatus = 3, logout = CURRENT_TIMESTAMP, "
- " bytes_sent = '%i', bytes_received = '%i' "
+ " bytes_sent = '%i', bytes_received = '%i', session_duration = '%i' "
" WHERE sessionkey = '%q' AND sessionstatus = 2",
- atoi_nullsafe(bytes_sent), atoi_nullsafe(bytes_received), skey->sessionkey);
+ atoi_nullsafe(bytes_sent), atoi_nullsafe(bytes_received),
+ atoi_nullsafe(duration), skey->sessionkey);
if( res == NULL ) {
eurephia_log(ctx, LOG_CRITICAL, 0, "Could not update lastlog with logout information (%s)",
skey->sessionkey);
diff --git a/database/sqlite/sql-schema.sql b/database/sqlite/sql-schema.sql
index 5cdb77b..490669d 100644
--- a/database/sqlite/sql-schema.sql
+++ b/database/sqlite/sql-schema.sql
@@ -36,22 +36,23 @@ CREATE TABLE openvpn_accesses (
);
CREATE TABLE openvpn_lastlog (
- uid integer ,
- certid integer ,
- protocol varchar(4) NOT NULL,
- remotehost varchar(128) NOT NULL,
- remoteport integer NOT NULL,
- macaddr varchar(20) ,
- vpnipaddr varchar(32) NOT NULL,
- vpnipmask varchar(32) NOT NULL,
- sessionstatus integer NOT NULL DEFAULT 0,
- sessionkey varchar(128) ,
- login timestamp ,
- logout timestamp ,
- session_del timestamp ,
- bytes_sent integer ,
- bytes_received integer ,
- llid integer PRIMARY KEY AUTOINCREMENT
+ uid integer ,
+ certid integer ,
+ protocol varchar(4) NOT NULL,
+ remotehost varchar(128) NOT NULL,
+ remoteport integer NOT NULL,
+ macaddr varchar(20) ,
+ vpnipaddr varchar(32) NOT NULL,
+ vpnipmask varchar(32) NOT NULL,
+ sessionstatus integer NOT NULL DEFAULT 0,
+ sessionkey varchar(128) ,
+ login timestamp ,
+ logout timestamp ,
+ session_del timestamp ,
+ session_duration timestamp,
+ bytes_sent integer ,
+ bytes_received integer ,
+ llid integer PRIMARY KEY AUTOINCREMENT
);
CREATE UNIQUE INDEX openvpn_lastlog_sessionkey ON openvpn_lastlog(sessionkey);
diff --git a/eurephia.c b/eurephia.c
index d478790..d3481e0 100644
--- a/eurephia.c
+++ b/eurephia.c
@@ -356,7 +356,7 @@ int eurephia_connect(eurephiaCTX *ctx, const char **env) {
int eurephia_disconnect(eurephiaCTX *ctx, const char **env) {
eurephiaSESSION *session = NULL;
const char *digest, *cname, *uname, *vpnipaddr, *vpnipmask, *remipaddr, *remport;
- const char *bytes_sent, *bytes_rec;
+ const char *bytes_sent, *bytes_rec, *duration;
int ret = 0;
eurephia_log(ctx, LOG_DEBUG, 21, "** Function call: eurephia_disconnect(...)");
@@ -371,6 +371,7 @@ int eurephia_disconnect(eurephiaCTX *ctx, const char **env) {
remport = get_env(ctx, env, "trusted_port");
bytes_sent= get_env(ctx, env, "bytes_sent");
bytes_rec = get_env(ctx, env, "bytes_received");
+ duration = get_env(ctx, env, "time_duration");
// Get a session ticket
session = eDBopen_session_seed(ctx, digest, cname, uname, vpnipaddr, vpnipmask, remipaddr, remport);
diff --git a/eurephiadb_driver.h b/eurephiadb_driver.h
index a48eb6c..567706b 100644
--- a/eurephiadb_driver.h
+++ b/eurephiadb_driver.h
@@ -62,7 +62,7 @@ int (*eDBregister_login) (eurephiaCTX *ctx, eurephiaSESSION *skey, const int cer
int (*eDBregister_vpnmacaddr) (eurephiaCTX *ctx, eurephiaSESSION *skey, const char *macaddr);
int (*eDBregister_logout) (eurephiaCTX *ctx, eurephiaSESSION *skey,
- const char *bytes_sent, const char *bytes_received);
+ const char *bytes_sent, const char *bytes_received, const char *duration);
/* firewall functions */
char *(*eDBget_firewall_profile) (eurephiaCTX *ctx, eurephiaSESSION *session);