From 7bc1fa68e03eea74d63de55d0b8705ce16c5b665 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Mon, 3 Nov 2014 21:45:08 +0100 Subject: [PATCH] blockuser: use CModCommand --- modules/blockuser.cpp | 90 +++++++++++++++++++++++++------------------ 1 file changed, 53 insertions(+), 37 deletions(-) diff --git a/modules/blockuser.cpp b/modules/blockuser.cpp index 945a93e2..b28fa4d1 100644 --- a/modules/blockuser.cpp +++ b/modules/blockuser.cpp @@ -23,7 +23,12 @@ using std::vector; class CBlockUser : public CModule { public: - MODCONSTRUCTOR(CBlockUser) {} + MODCONSTRUCTOR(CBlockUser) { + AddHelpCommand(); + AddCommand("List", static_cast(&CBlockUser::OnListCommand), "", "List blocked users"); + AddCommand("Block", static_cast(&CBlockUser::OnBlockCommand), "", "Block a user"); + AddCommand("Unblock", static_cast(&CBlockUser::OnUnblockCommand), "", "Unblock a user"); + } virtual ~CBlockUser() {} @@ -61,48 +66,59 @@ public: } void OnModCommand(const CString& sCommand) { - CString sCmd = sCommand.Token(0); - if (!GetUser()->IsAdmin()) { PutModule("Access denied"); + } else { + HandleCommand(sCommand); + } + } + + void OnListCommand(const CString& sCommand) { + CTable Table; + MCString::iterator it; + + Table.AddColumn("Blocked user"); + + for (it = BeginNV(); it != EndNV(); ++it) { + Table.AddRow(); + Table.SetCell("Blocked user", it->first); + } + + if (PutModule(Table) == 0) + PutModule("No users blocked"); + } + + void OnBlockCommand(const CString& sCommand) { + CString sUser = sCommand.Token(1, true); + + if (sUser.empty()) { + PutModule("Usage: Block "); return; } - if (sCmd.Equals("list")) { - CTable Table; - MCString::iterator it; - - Table.AddColumn("Blocked user"); - - for (it = BeginNV(); it != EndNV(); ++it) { - Table.AddRow(); - Table.SetCell("Blocked user", it->first); - } - - if (PutModule(Table) == 0) - PutModule("No users blocked"); - } else if (sCmd.Equals("block")) { - CString sUser = sCommand.Token(1, true); - - if (GetUser()->GetUserName().Equals(sUser)) { - PutModule("You can't block yourself"); - return; - } - - if (Block(sUser)) - PutModule("Blocked [" + sUser + "]"); - else - PutModule("Could not block [" + sUser + "] (misspelled?)"); - } else if (sCmd.Equals("unblock")) { - CString sUser = sCommand.Token(1, true); - - if (DelNV(sUser)) - PutModule("Unblocked [" + sUser + "]"); - else - PutModule("This user is not blocked"); - } else { - PutModule("Commands: list, block [user], unblock [user]"); + if (GetUser()->GetUserName().Equals(sUser)) { + PutModule("You can't block yourself"); + return; } + + if (Block(sUser)) + PutModule("Blocked [" + sUser + "]"); + else + PutModule("Could not block [" + sUser + "] (misspelled?)"); + } + + void OnUnblockCommand(const CString& sCommand) { + CString sUser = sCommand.Token(1, true); + + if (sUser.empty()) { + PutModule("Usage: Unblock "); + return; + } + + if (DelNV(sUser)) + PutModule("Unblocked [" + sUser + "]"); + else + PutModule("This user is not blocked"); } bool OnEmbeddedWebRequest(CWebSock& WebSock, const CString& sPageName, CTemplate& Tmpl) {