From 2c1d9fedab21d8f0a37869c697ef0d89c7ade9c6 Mon Sep 17 00:00:00 2001 From: Philippe Pittoli Date: Thu, 20 Nov 2025 02:56:22 +0100 Subject: [PATCH] Enable to delete user data with CLI. --- src/client/lib/dnsmanager-client.cr | 7 +++++++ src/client/main.cr | 16 +++++++++++++++- src/client/parser.cr | 8 ++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/client/lib/dnsmanager-client.cr b/src/client/lib/dnsmanager-client.cr index 71ba8e9..46c6e1c 100644 --- a/src/client/lib/dnsmanager-client.cr +++ b/src/client/lib/dnsmanager-client.cr @@ -186,6 +186,13 @@ class DNSManager::Client < IPC send_now request end + def admin_delete_user_data(user : UInt32) + request = Request::DeleteUser.new user + send_now request + parse_message [ Response::Success ], read + end + + # # Utils # diff --git a/src/client/main.cr b/src/client/main.cr index 1e58c6b..dec67b8 100644 --- a/src/client/main.cr +++ b/src/client/main.cr @@ -34,6 +34,8 @@ class Actions @the_call["admin-provide-domain"] = ->admin_provide_domain @the_call["admin-exit"] = ->admin_exit + @the_call["admin-delete-user-data"] = ->admin_delete_user_data + # Domain operations. @the_call["user-domain-add"] = ->user_domain_add @the_call["user-domain-del"] = ->user_domain_del @@ -159,9 +161,21 @@ class Actions def admin_exit @dnsmanagerd.admin_exit rescue e - puts "error for provide_domain: #{e.message}" + puts "error for admin_exit: #{e.message}" end + # To purge hackers, mostly. + def admin_delete_user_data + users = Context.args.not_nil! + users.each do |user| + puts "purging #{user}" + @dnsmanagerd.admin_delete_user_data user.to_u32 + end + rescue e + puts "error for admin_delete_user_data: #{e.message}" + end + + def user_domain_add domains = Context.args.not_nil! domains.each do |domain| diff --git a/src/client/parser.cr b/src/client/parser.cr index ca034e7..4fcee67 100644 --- a/src/client/parser.cr +++ b/src/client/parser.cr @@ -139,6 +139,14 @@ def parsing_cli(authd_config : Baguette::Configuration::Auth) parser.banner = "COMMAND: exit" unrecognized_args_to_context_args.call parser, nil, 0 end + + # Purge an account. + parser.on("delete-user-data", "Delete user data.") do + Baguette::Log.info "purge user data." + Context.command = "admin-delete-user-data" + parser.banner = "COMMAND: delete-user-data uid [uid ...]" + unrecognized_args_to_context_args.call parser, nil, 1 + end end # User section.