diff options
| author | David Sommerseth <dazo@users.sourceforge.net> | 2009-04-03 00:04:30 +0200 |
|---|---|---|
| committer | David Sommerseth <dazo@users.sourceforge.net> | 2009-04-03 00:04:30 +0200 |
| commit | 88e67c4360aab6ab79412b79bca7bdf2f8d1264d (patch) | |
| tree | 719a23f3030f94b9a4471cf297453de09bc0d14b /database | |
| parent | 525d4ba9f81dcc457e852dff0fef0f9675b3393e (diff) | |
| download | eurephia-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.c | 30 |
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"); |
