summaryrefslogtreecommitdiffstats
path: root/database
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2009-04-03 00:04:30 +0200
committerDavid Sommerseth <dazo@users.sourceforge.net>2009-04-03 00:04:30 +0200
commit88e67c4360aab6ab79412b79bca7bdf2f8d1264d (patch)
tree719a23f3030f94b9a4471cf297453de09bc0d14b /database
parent525d4ba9f81dcc457e852dff0fef0f9675b3393e (diff)
downloadeurephia-88e67c4360aab6ab79412b79bca7bdf2f8d1264d.tar.gz
eurephia-88e67c4360aab6ab79412b79bca7bdf2f8d1264d.tar.xz
eurephia-88e67c4360aab6ab79412b79bca7bdf2f8d1264d.zip
When deleting fwprofiles, delete also records from openvpn_usercerts
Diffstat (limited to 'database')
-rw-r--r--database/sqlite/firewalladmin.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/database/sqlite/firewalladmin.c b/database/sqlite/firewalladmin.c
index 920f1af..4824fdd 100644
--- a/database/sqlite/firewalladmin.c
+++ b/database/sqlite/firewalladmin.c
@@ -162,6 +162,36 @@ xmlDoc *fwadmin_delete(eurephiaCTX *ctx, eDBfieldMap *fmap) {
"firewall profile and destination fields");
}
+ // Find the accessprofile ID based on the fieldmap
+ res = sqlite_query_mapped(ctx, SQL_SELECT, "SELECT DISTINCT accessprofile FROM openvpn_accesses",
+ NULL, fmap, NULL);
+ if( res == NULL ) {
+ eurephia_log(ctx, LOG_FATAL, 0, "Could not delete the firewall profile (1)");
+ return eurephiaXML_ResultMsg(ctx, exmlERROR, "Could not delete the firewall profile");
+ }
+
+ // Delete all references to this access profile in openvpn_usercerts
+ if( sqlite_get_numtuples(res) > 0 ) {
+ dbresult *dres = NULL;
+ int i = 0;
+
+ for( i = 0; i < sqlite_get_numtuples(res); i++ ) {
+ dres = sqlite_query(ctx,
+ "DELETE FROM openvpn_usercerts "
+ " WHERE accessprofile = %q",
+ sqlite_get_value(res, i, 0));
+ if( dres == NULL ) {
+ eurephia_log(ctx, LOG_FATAL, 0, "Could not delete the firewall profile (2)");
+ ret = eurephiaXML_ResultMsg(ctx, exmlERROR,
+ "Could not delete the firewall profile");
+ sqlite_free_results(res);
+ return ret;
+ }
+ sqlite_free_results(dres);
+ }
+ }
+
+ // Delete requested access profiles from openvpn_accesses
res = sqlite_query_mapped(ctx, SQL_DELETE, "DELETE FROM openvpn_accesses", NULL, fmap, NULL);
if( res == NULL ) {
eurephia_log(ctx, LOG_FATAL, 0, "Could not delete the firewall profile");