1 #ifndef OCCTL_H 2 # define OCCTL_H 3 4 #include <stdlib.h> 5 #include <time.h> 6 #include "common.h" 7 8 #ifdef HAVE_ORIG_READLINE 9 # include <readline/readline.h> 10 # include <readline/history.h> 11 #else 12 # include <readline.h> 13 #endif 14 15 #define DATE_TIME_FMT "%Y-%m-%d %H:%M" 16 #define MAX_TMPSTR_SIZE 64 17 18 #define NO_JSON(params) (!params || !params->json) 19 #define HAVE_JSON(params) (params && params->json) 20 21 typedef struct cmd_params_st { 22 unsigned json; 23 unsigned no_pager; 24 unsigned debug; 25 } cmd_params_st; 26 27 FILE* pager_start(cmd_params_st *params); 28 void pager_stop(FILE* fp); 29 void print_time_ival7(char output[MAX_TMPSTR_SIZE], time_t t1, time_t t2); 30 void print_iface_stats(const char *iface, time_t since, FILE * out, cmd_params_st *params, unsigned have_more); 31 int print_list_entries(FILE* out, cmd_params_st *params, const char* name, char **val, unsigned vsize, unsigned have_more); 32 int print_fwport_entries(FILE* out, cmd_params_st *params, const char* name, FwPortSt **val, unsigned vsize, unsigned have_more); 33 void print_start_block(FILE *out, cmd_params_st *params); 34 void print_end_block(FILE *out, cmd_params_st *params, unsigned have_more); 35 void print_array_block(FILE *out, cmd_params_st *params); 36 void print_end_array_block(FILE *out, cmd_params_st *params); 37 void print_separator(FILE *out, cmd_params_st *params); 38 void print_single_value(FILE *out, cmd_params_st *params, const char *name, const char *value, unsigned have_more); 39 void print_single_value_int(FILE *out, cmd_params_st *params, const char *name, long i, unsigned have_more); 40 void print_single_value_ex(FILE *out, cmd_params_st *params, const char *name, const char *value, const char *ex, unsigned have_more); 41 void print_pair_value(FILE *out, cmd_params_st *params, const char *name1, const char *value1, const char *name2, const char *value2, unsigned have_more); 42 43 44 void 45 bytes2human(unsigned long bytes, char* output, unsigned output_size, const char* suffix); 46 47 void 48 time2human(uint64_t microseconds, char* output, unsigned output_size); 49 50 char* search_for_id(unsigned idx, const char* match, int match_size); 51 char* search_for_user(unsigned idx, const char* match, int match_size); 52 void entries_add(void *pool, const char* user, unsigned user_size, unsigned id); 53 void entries_clear(void); 54 55 void session_entries_add(void *pool, const char* session); 56 void session_entries_clear(void); 57 char* search_for_session(unsigned idx, const char* match, int match_size); 58 59 char* search_for_ip(unsigned idx, const char* match, int match_size); 60 void ip_entries_add(void *pool, const char* ip, unsigned ip_size); 61 void ip_entries_clear(void); 62 63 #define DEFAULT_TIMEOUT (10*1000) 64 #define NO_GROUP "(none)" 65 #define NO_USER "(none)" 66 67 #define ERR_SERVER_UNREACHABLE "could not send message; possibly insufficient permissions or server is offline.\n" 68 69 unsigned need_help(const char *arg); 70 unsigned check_cmd_help(const char *line); 71 72 #ifdef HAVE_DBUS 73 # include <dbus/dbus.h> 74 # define CONN_TYPE struct dbus_ctx 75 #else 76 # define CONN_TYPE struct unix_ctx 77 #endif 78 79 CONN_TYPE *conn_init(void *pool, const char *socket_file); 80 void conn_close(CONN_TYPE*); 81 82 int conn_prehandle(CONN_TYPE *ctx); 83 void conn_posthandle(CONN_TYPE *ctx); 84 85 typedef int (*cmd_func) (CONN_TYPE * conn, const char *arg, cmd_params_st *params); 86 87 int handle_status_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params); 88 int handle_list_users_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params); 89 int handle_list_iroutes_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params); 90 int handle_list_banned_ips_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params); 91 int handle_list_all_sessions_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params); 92 int handle_list_valid_sessions_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params); 93 int handle_show_session_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params); 94 95 int handle_list_banned_points_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params); 96 int handle_show_user_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params); 97 int handle_show_id_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params); 98 int handle_disconnect_user_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params); 99 int handle_unban_ip_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params); 100 int handle_disconnect_id_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params); 101 int handle_reload_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params); 102 int handle_stop_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params); 103 int handle_events_cmd(struct unix_ctx *ctx, const char *arg, cmd_params_st *params); 104 105 #endif 106