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