36 #include "clientpipe.h" 46 static const char *module_str =
"zone_del_cmd";
53 " --zone <zone> | --all aka -z | -a \n" 62 "Delete one zone or all of them from the enforcer database.\n" 64 "zone|all name of the zone or all zones\n" 65 "xml update zonelist.xml and remove the contents for the deleted zone\n\n" 70 handles(
const char *cmd, ssize_t n)
87 client_printf_err(sockfd,
"Unable to get key data for zone %s from database!\n",
zone_name(zone));
93 client_printf_err(sockfd,
"Unable to get key states for key data %s of zone %s from database!\n",
key_data_role_text(key_data),
zone_name(zone));
108 client_printf_err(sockfd,
"Unable to delete key data %s of zone %s from database!\n",
key_data_role_text(key_data),
zone_name(zone));
114 client_printf_err(sockfd,
"Unable to release HSM key for key data %s of zone %s from database!\n",
key_data_role_text(key_data),
zone_name(zone));
129 const char* argv[17];
131 const char *zone_name2 = NULL;
138 char *signconf_del = NULL;
144 if (!(buf = strdup(cmd))) {
145 client_printf_err(sockfd,
"memory error\n");
149 argc = ods_str_explode(buf, 17, argv);
151 client_printf_err(sockfd,
"too many arguments\n");
156 ods_find_arg_and_param(&argc, argv,
"zone",
"z", &zone_name2);
157 all = ods_find_arg(&argc, argv,
"all",
"a") > -1 ? 1 : 0;
158 write_xml = ods_find_arg(&argc, argv,
"xml",
"u") > -1 ? 1 : 0;
161 client_printf_err(sockfd,
"unknown arguments\n");
166 if (zone_name2 && !all) {
168 client_printf_err(sockfd,
"Unable to delete zone, zone %s not found!\n", zone_name2);
173 if (!delete_key_data(zone, dbconn, sockfd)) {
179 client_printf_err(sockfd,
"Unable to delete zone %s from database!\n", zone_name2);
185 strlen(
".ZONE_DELETED") + 1,
sizeof(char));
193 strncat(signconf_del,
".ZONE_DELETED", strlen(
".ZONE_DELETED"));
198 ods_log_info(
"[%s] zone %s deleted", module_str, zone_name2);
199 client_printf(sockfd,
"Deleted zone %s successfully\n", zone_name2);
200 }
else if (!zone_name2 && all) {
202 client_printf_err(sockfd,
"Unable to get list of zones from database!\n");
207 if (!delete_key_data(zone, dbconn, sockfd)) {
211 client_printf_err(sockfd,
"Unable to delete zone %s from database!\n",
zone_name(zone));
216 strlen(
".ZONE_DELETED") + 1,
sizeof(char));
225 strncat(signconf_del,
".ZONE_DELETED", strlen(
".ZONE_DELETED"));
231 client_printf(sockfd,
"Deleted zone %s successfully\n",
zone_name(zone));
235 client_printf(sockfd,
"All zones deleted successfully\n");
237 client_printf_err(sockfd,
"expected either --zone <zone> or --all\n");
266 if (snprintf(path,
sizeof(path),
"%s/%s", engine->
config->
working_dir, OPENDNSSEC_ENFORCER_ZONELIST) >= (
int)
sizeof(path)
269 ods_log_error(
"[%s] internal zonelist update failed", module_str);
270 client_printf_err(sockfd,
"Unable to update the internal zonelist %s, updates will not reach the Signer!\n", path);
273 ods_log_info(
"[%s] internal zonelist updated successfully", module_str);
276 if (snprintf(path,
sizeof(path),
"%s/%s", engine->
config->
working_dir, OPENDNSSEC_ENFORCER_ZONELIST) >= (
int)
sizeof(path)
279 ods_log_error(
"[%s] internal zonelist update failed", module_str);
280 client_printf_err(sockfd,
"Unable to update the internal zonelist %s, updates will not reach the Signer!\n", path);
283 ods_log_info(
"[%s] internal zonelist updated successfully", module_str);
const char * key_data_role_text(const key_data_t *key_data)
int key_state_delete(key_state_t *key_state)
const char * zone_signconf_path(const zone_t *zone)
void ods_log_debug(const char *format,...)
#define ZONELIST_UPDATE_OK
const char * key_state_type_text(const key_state_t *key_state)
const char * zonelist_filename
key_state_t * key_state_list_get_next(key_state_list_t *key_state_list)
void zone_list_free(zone_list_t *zone_list)
void ods_log_info(const char *format,...)
int(* run)(int sockfd, struct engine_struct *engine, const char *cmd, ssize_t n, db_connection_t *dbconn)
const db_value_t * key_data_id(const key_data_t *key_data)
void ods_log_error(const char *format,...)
key_data_t * key_data_list_get_next(key_data_list_t *key_data_list)
void zone_free(zone_t *zone)
void(* usage)(int sockfd)
#define ZONELIST_EXPORT_OK
engineconfig_type * config
int zonelist_export(int sockfd, db_connection_t *connection, const char *filename, int comment)
void key_state_free(key_state_t *key_state)
zone_t * zone_new_get_by_name(const db_connection_t *connection, const char *name)
const char * zone_name(const zone_t *zone)
void key_state_list_free(key_state_list_t *key_state_list)
zone_t * zone_list_get_next(zone_list_t *zone_list)
void key_data_list_free(key_data_list_t *key_data_list)
struct cmd_func_block * zone_del_funcblock(void)
const db_value_t * key_data_hsm_key_id(const key_data_t *key_data)
void key_data_free(key_data_t *key_data)
const db_value_t * zone_id(const zone_t *zone)
key_data_list_t * key_data_list_new_get_by_zone_id(const db_connection_t *connection, const db_value_t *zone_id)
zone_list_t * zone_list_new_get(const db_connection_t *connection)
int zonelist_update_delete(int sockfd, const char *filename, const zone_t *zone, int comment)
int(* handles)(const char *cmd, ssize_t n)
int key_data_delete(key_data_t *key_data)
int zone_delete(zone_t *zone)
int hsm_key_factory_release_key_id(const db_value_t *hsm_key_id, const db_connection_t *connection)
key_state_list_t * key_state_list_new_get_by_key_data_id(const db_connection_t *connection, const db_value_t *key_data_id)