38 #include "clientpipe.h" 42 static const char *module_str =
"rollover_list_cmd";
59 return strdup(
"waiting for ds-submit");
61 return strdup(
"waiting for ds-seen");
63 return strdup(
"waiting for ds-retract");
65 return strdup(
"waiting for ds-gone");
75 if (!t)
return strdup(
"No roll scheduled");
77 localtime_r(&t, &srtm);
78 strftime(ct, 26,
"%Y-%m-%d %H:%M:%S", &srtm);
83 print_zone(
int sockfd,
const char* fmt,
const zone_t* zone)
90 char *tchange = map_keytime(zone, key);
91 client_printf(sockfd, fmt,
zone_name(zone),
107 perform_rollover_list(
int sockfd,
const char *listed_zone,
112 const zone_t *zone_walk = NULL;
113 const char* fmt =
"%-31s %-8s %-30s\n";
121 if (listed_zone && !zone) {
122 ods_log_error(
"[%s] zone '%s' not found", module_str, listed_zone);
123 client_printf(sockfd,
"zone '%s' not found\n", listed_zone);
127 if (!zone && !zonelist) {
129 client_printf(sockfd,
"error enumerating zones\n");
133 client_printf(sockfd,
"Keys:\n");
134 client_printf(sockfd, fmt,
"Zone:",
"Keytype:",
"Rollover expected:");
137 print_zone(sockfd, fmt, zone);
143 print_zone(sockfd, fmt, zone_walk);
152 client_printf(sockfd,
154 " [--zone <zone>] aka -z\n" 161 client_printf(sockfd,
162 "List the expected dates and times of upcoming rollovers. This can be used to get an idea of upcoming works.\n" 164 "zone name of the zone\n\n");
168 handles(
const char *cmd, ssize_t n)
174 run(
int sockfd,
engine_type* engine,
const char *cmd, ssize_t n,
178 char buf[ODS_SE_MAXLINE];
179 const char *argv[
NARGV];
181 const char *zone = NULL;
188 strncpy(buf, cmd,
sizeof(buf));
189 buf[
sizeof(buf)-1] =
'\0';
192 argc = ods_str_explode(buf,
NARGV, argv);
196 client_printf(sockfd,
"too many arguments\n");
200 (void)ods_find_arg_and_param(&argc,argv,
"zone",
"z",&zone);
204 client_printf(sockfd,
"unknown arguments\n");
207 return perform_rollover_list(sockfd, zone, dbconn);
const char * key_data_role_text(const key_data_t *key_data)
const zone_t * zone_list_next(zone_list_t *zone_list)
void ods_log_debug(const char *format,...)
unsigned int zone_next_zsk_roll(const zone_t *zone)
void zone_list_free(zone_list_t *zone_list)
int(* run)(int sockfd, struct engine_struct *engine, const char *cmd, ssize_t n, db_connection_t *dbconn)
key_data_list_t * zone_get_keys(const zone_t *zone)
void ods_log_error(const char *format,...)
void zone_free(zone_t *zone)
void(* usage)(int sockfd)
const key_data_t * key_data_list_next(key_data_list_t *key_data_list)
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_data_list_free(key_data_list_t *key_data_list)
unsigned int zone_next_csk_roll(const zone_t *zone)
unsigned int zone_next_ksk_roll(const zone_t *zone)
zone_list_t * zone_list_new_get(const db_connection_t *connection)
int(* handles)(const char *cmd, ssize_t n)
void ods_log_warning(const char *format,...)
struct cmd_func_block * rollover_list_funcblock(void)