mirror of
https://gitlab.com/openconnect/ocserv.git
synced 2026-10-12 01:26:48 +08:00
dbus: fixed new commands for ban/list
This commit is contained in:
+3
-3
@@ -688,6 +688,7 @@ static int append_ban_info(main_server_st *s,
|
||||
{
|
||||
DBusMessageIter subs;
|
||||
dbus_uint32_t t;
|
||||
char *ip;
|
||||
|
||||
if (dbus_message_iter_open_container
|
||||
(suba, DBUS_TYPE_STRUCT, NULL, &subs) == 0) {
|
||||
@@ -702,7 +703,8 @@ static int append_ban_info(main_server_st *s,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (dbus_message_iter_append_basic(&subs, DBUS_TYPE_STRING, &e->ip) == 0) {
|
||||
ip = e->ip;
|
||||
if (dbus_message_iter_append_basic(&subs, DBUS_TYPE_STRING, &ip) == 0) {
|
||||
mslog(s, NULL, LOG_ERR, "error appending to dbus reply");
|
||||
return -1;
|
||||
}
|
||||
@@ -766,8 +768,6 @@ static void method_list_banned(main_server_st * s, struct dbus_ctx *ctx,
|
||||
e = htable_next(db, &iter);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (dbus_message_iter_close_container(&args, &suba) == 0) {
|
||||
mslog(s, NULL, LOG_ERR,
|
||||
"error closing container in dbus reply");
|
||||
|
||||
+14
-13
@@ -624,14 +624,14 @@ int handle_list_banned_cmd(struct dbus_ctx *ctx, const char *arg, unsigned point
|
||||
{
|
||||
DBusMessage *msg;
|
||||
DBusMessageIter args, suba, subs;
|
||||
dbus_int32_t expires = 0;
|
||||
dbus_uint32_t expires = 0;
|
||||
char *ip = "";
|
||||
dbus_int32_t score = 0;
|
||||
dbus_uint32_t score = 0;
|
||||
time_t t;
|
||||
struct tm *tm;
|
||||
int ret = 1;
|
||||
char str_since[64];
|
||||
unsigned iteration = 0;
|
||||
unsigned i = 0;
|
||||
FILE *out;
|
||||
|
||||
ip_entries_clear();
|
||||
@@ -653,14 +653,14 @@ int handle_list_banned_cmd(struct dbus_ctx *ctx, const char *arg, unsigned point
|
||||
|
||||
dbus_message_iter_recurse(&args, &suba);
|
||||
|
||||
for (;;) {
|
||||
for (i=0;;i++) {
|
||||
if (dbus_message_iter_get_arg_type(&suba) != DBUS_TYPE_STRUCT)
|
||||
goto cleanup;
|
||||
dbus_message_iter_recurse(&suba, &subs);
|
||||
|
||||
if (dbus_message_iter_get_arg_type(&subs) != DBUS_TYPE_INT32)
|
||||
if (dbus_message_iter_get_arg_type(&subs) != DBUS_TYPE_UINT32)
|
||||
goto error_parse;
|
||||
dbus_message_iter_get_basic(&subs, &expires);
|
||||
dbus_message_iter_get_basic(&subs, &score);
|
||||
|
||||
if (!dbus_message_iter_next(&subs))
|
||||
goto error_recv;
|
||||
@@ -672,10 +672,9 @@ int handle_list_banned_cmd(struct dbus_ctx *ctx, const char *arg, unsigned point
|
||||
if (!dbus_message_iter_next(&subs))
|
||||
goto error_recv;
|
||||
|
||||
if (dbus_message_iter_get_arg_type(&subs) != DBUS_TYPE_INT32)
|
||||
if (dbus_message_iter_get_arg_type(&subs) != DBUS_TYPE_UINT32)
|
||||
goto error_parse;
|
||||
dbus_message_iter_get_basic(&subs, &score);
|
||||
|
||||
dbus_message_iter_get_basic(&subs, &expires);
|
||||
|
||||
if (points == 0) {
|
||||
if (expires > 0) {
|
||||
@@ -683,11 +682,11 @@ int handle_list_banned_cmd(struct dbus_ctx *ctx, const char *arg, unsigned point
|
||||
tm = localtime(&t);
|
||||
strftime(str_since, sizeof(str_since), DATE_TIME_FMT, tm);
|
||||
} else {
|
||||
continue;
|
||||
goto cont;
|
||||
}
|
||||
|
||||
/* add header */
|
||||
if (iteration == 0) {
|
||||
if (i == 0) {
|
||||
fprintf(out, "%14s %14s %30s\n",
|
||||
"IP", "score", "expires");
|
||||
}
|
||||
@@ -695,7 +694,7 @@ int handle_list_banned_cmd(struct dbus_ctx *ctx, const char *arg, unsigned point
|
||||
print_time_ival7(t, time(0), out);
|
||||
fputs(")\n", out);
|
||||
} else {
|
||||
if (iteration == 0) {
|
||||
if (i == 0) {
|
||||
fprintf(out, "%14s %14s\n",
|
||||
"IP", "score");
|
||||
}
|
||||
@@ -704,8 +703,10 @@ int handle_list_banned_cmd(struct dbus_ctx *ctx, const char *arg, unsigned point
|
||||
ip, (unsigned)score);
|
||||
}
|
||||
|
||||
iteration++;
|
||||
ip_entries_add(ctx, ip, strlen(ip));
|
||||
cont:
|
||||
if (!dbus_message_iter_next(&suba))
|
||||
break;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
||||
Reference in New Issue
Block a user