From: <ps...@us...> - 2009-02-16 17:26:49
|
Revision: 1379 http://znc.svn.sourceforge.net/znc/?rev=1379&view=rev Author: psychon Date: 2009-02-16 17:26:46 +0000 (Mon, 16 Feb 2009) Log Message: ----------- Import the admin module This module basically does the same things webadmin does, but via an IRC query interface. Thanks to sebastinas for writing the original version of this module. Thanks to kroimon for making this suite ZNC's coding style better and porting it to newer ZNC versions. Finally, I added a DelUser command and ported it again to laters versions. Added Paths: ----------- trunk/modules/admin.cpp Added: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp (rev 0) +++ trunk/modules/admin.cpp 2009-02-16 17:26:46 UTC (rev 1379) @@ -0,0 +1,381 @@ +/* + * Copyright (C) 2008 by Stefan Rado + * based on admin.cpp by Sebastian Ramacher + * based on admin.cpp in crox branch + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + */ + +#include "znc.h" +#include "User.h" +#include "Modules.h" + +template<std::size_t N> +struct array_size_helper { + char __place_holder[N]; +}; + +template<class T, std::size_t N> +array_size_helper<N> array_size(T (&)[N]) { + return array_size_helper<N>(); +} + +#define ARRAY_SIZE(array) sizeof(array_size((array))) + +class CAdminMod : public CGlobalModule { + using CGlobalModule::PutModule; + + void PrintHelp(const CString&) { + CTable CmdTable; + CmdTable.AddColumn("Command"); + CmdTable.AddColumn("Arguments"); + CmdTable.AddColumn("Description"); + static const char* help[][3] = { + {"Get", "variable [username]", "Prints the variable's value for the given or current user"}, + {"Set", "variable [username] value", "Sets the variable's value for the given or current user"}, + {"ListUsers", "", "Lists users"}, + {"AddUser", "username password [ircserver]", "Adds a new user"}, + {"DelUser", "username", "Deletes a user"}, + {"AddServer", "[username] server", "Adds a new IRC server for the given or current user"} + }; + for (unsigned int i = 0; i != ARRAY_SIZE(help); ++i) { + CmdTable.AddRow(); + CmdTable.SetCell("Command", help[i][0]); + CmdTable.SetCell("Arguments", help[i][1]); + CmdTable.SetCell("Description", help[i][2]); + } + PutModule(CmdTable); + + PutModule("The following variables are available when using the Set/Get commands:"); + + CTable VarTable; + VarTable.AddColumn("Variable"); + VarTable.AddColumn("Type"); + static const char* vars[][2] = { + {"Ident", "String"}, + {"RealName", "String"}, + {"VHost", "String"}, + {"MultiClients", "Boolean (true/false)"}, + {"BounceDCCs", "Boolean (true/false)"}, + {"UseClientIP", "Boolean (true/false)"}, + {"DenyLoadMod", "Boolean (true/false)"}, + {"DefaultChanModes", "String"}, + {"QuitMsg", "String"}, + {"BufferCount", "Integer"}, + {"KeepBuffer", "Boolean (true/false)"}, + }; + for (unsigned int i = 0; i != ARRAY_SIZE(vars); ++i) { + VarTable.AddRow(); + VarTable.SetCell("Variable", vars[i][0]); + VarTable.SetCell("Type", vars[i][1]); + } + PutModule(VarTable); + } + + CUser* GetUser(const CString& username) { + if (username.size() && username != "$me") + return CZNC::Get().FindUser(username); + else + return m_pUser; + } + + void Get(const CString& sLine) { + const CString var = sLine.Token(1).AsLower(); + const CString username = sLine.Token(2, true); + + if (var.empty()) { + PutModule("Usage: get <variable> [username]"); + return; + } + + CUser* user = GetUser(username); + if (!user) { + PutModule("Error: User not found: " + username); + return; + } + if (user != m_pUser && !m_pUser->IsAdmin()) { + PutModule("Error: You need to have admin rights to modify other users!"); + return; + } + + if (var == "nick") + PutModule("Nick = " + user->GetNick()); + else if (var == "altnick") + PutModule("AltNick = " + user->GetAltNick()); + else if (var == "ident") + PutModule("Ident = " + user->GetIdent()); + else if (var == "realname") + PutModule("RealName = " + user->GetRealName()); + else if (var == "vhost") + PutModule("VHost = " + user->GetVHost()); + else if (var == "multiclients") + PutModule("MultiClients = " + CString(user->MultiClients() ? "true" : "false")); + else if (var == "bouncedccs") + PutModule("BounceDCCs = " + CString(user->BounceDCCs() ? "true" : "false")); + else if (var == "useclientip") + PutModule("UseClientIP = " + CString(user->UseClientIP() ? "true" : "false")); + else if (var == "denyloadmod") + PutModule("DenyLoadMod = " + CString(user->DenyLoadMod() ? "true" : "false")); + else if (var == "defaultchanmodes") + PutModule("DefaultChanModes = " + user->GetDefaultChanModes()); + else if (var == "quitmsg") + PutModule("QuitMsg = " + user->GetQuitMsg()); + else if (var == "buffercount") + PutModule("BufferCount = " + CString(user->GetBufferCount())); + else if (var == "keepbuffer") + PutModule("KeepBuffer = " + CString(user->KeepBuffer() ? "true" : "false")); + else + PutModule("Error: Unknown variable"); + } + + void Set(const CString& sLine) { + const CString var = sLine.Token(1).AsLower(); + CString username = sLine.Token(2); + CString value = sLine.Token(3, true); + + if (value.empty()) { + if (!username.empty()) { + value = username; + username = ""; + } else { + PutModule("Usage: set <variable> [username] <value>"); + return; + } + } + + CUser* user = GetUser(username); + if (!user) { + PutModule("Error: User not found: " + username); + return; + } + if (user != m_pUser && !m_pUser->IsAdmin()) { + PutModule("Error: You need to have admin rights to modify other users!"); + return; + } + + if (var == "nick") { + user->SetNick(value); + PutModule("Nick = " + value); + } + else if (var == "altnick") { + user->SetAltNick(value); + PutModule("AltNick = " + value); + } + else if (var == "ident") { + user->SetIdent(value); + PutModule("Ident = " + value); + } + else if (var == "realname") { + user->SetRealName(value); + PutModule("RealName = " + value); + } + else if (var == "vhost") { + user->SetVHost(value); + PutModule("VHost = " + value); + } + else if (var == "multiclients") { + bool b = value.ToBool(); + user->SetMultiClients(b); + PutModule("MultiClients = " + CString(b ? "true" : "false")); + } + else if (var == "bouncedccs") { + bool b = value.ToBool(); + user->SetBounceDCCs(b); + PutModule("BounceDCCs = " + CString(b ? "true" : "false")); + } + else if (var == "useclientip") { + bool b = value.ToBool(); + user->SetUseClientIP(b); + PutModule("UseClientIP = " + CString(b ? "true" : "false")); + } + else if (var == "denyloadmod") { + bool b = value.ToBool(); + user->SetDenyLoadMod(b); + PutModule("DenyLoadMod = " + CString(b ? "true" : "false")); + } + else if (var == "defaultchanmodes") { + user->SetDefaultChanModes(value); + PutModule("DefaultChanModes = " + value); + } + else if (var == "quitmsg") { + user->SetQuitMsg(value); + PutModule("QuitMsg = " + value); + } + else if (var == "buffercount") { + unsigned int i = value.ToInt(); + user->SetBufferCount(i); + PutModule("BufferCount = " + value); + } + else if (var == "keepbuffer") { + bool b = value.AsLower() == "true"; + user->SetKeepBuffer(b); + PutModule("KeepBuffer = " + CString(b ? "true" : "false")); + } + else + PutModule("Error: Unknown variable"); + } + + void ListUsers(const CString&) { + if (!m_pUser->IsAdmin()) + return; + + const map<CString, CUser*>& msUsers = CZNC::Get().GetUserMap(); + CTable Table; + Table.AddColumn("Username"); + Table.AddColumn("Realname"); + Table.AddColumn("IsAdmin"); + Table.AddColumn("Nick"); + Table.AddColumn("AltNick"); + Table.AddColumn("Ident"); + Table.AddColumn("VHost"); + + for (map<CString, CUser*>::const_iterator it = msUsers.begin(); it != msUsers.end(); it++) { + Table.AddRow(); + Table.SetCell("Username", it->first); + Table.SetCell("Realname", it->second->GetRealName()); + if (!it->second->IsAdmin()) + Table.SetCell("IsAdmin", "No"); + else + Table.SetCell("IsAdmin", "Yes"); + Table.SetCell("Nick", it->second->GetNick()); + Table.SetCell("AltNick", it->second->GetAltNick()); + Table.SetCell("Ident", it->second->GetIdent()); + Table.SetCell("VHost", it->second->GetVHost()); + } + + PutModule(Table); + } + + void AddUser(const CString& sLine) { + if (!m_pUser->IsAdmin()) { + PutModule("Error: You need to have admin rights to add new users!"); + return; + } + + const CString + sUsername = sLine.Token(1), + sPassword = sLine.Token(2), + sIRCServer = sLine.Token(3, true); + if (sUsername.empty() || sPassword.empty()) { + PutModule("Usage: adduser <username> <password> [ircserver]"); + return; + } + + if (CZNC::Get().FindUser(sUsername)) { + PutModule("Error: User " + sUsername + " already exists!"); + return; + } + + CUser* pNewUser = new CUser(sUsername); + CString sSalt = CUtils::GetSalt(); + pNewUser->SetPass(CString(sPassword + sSalt).MD5(), true, sSalt); + if (sIRCServer.size()) + pNewUser->AddServer(sIRCServer); + + CString sErr; + if (!CZNC::Get().AddUser(pNewUser, sErr)) { + delete pNewUser; + PutModule("Error: User not added! [" + sErr + "]"); + return; + } + + PutModule("User " + sUsername + " added!"); + return; + } + + void DelUser(const CString& sLine) { + if (!m_pUser->IsAdmin()) { + PutModule("Error: You need to have admin rights to delete users!"); + return; + } + + const CString sUsername = sLine.Token(1); + if (sUsername.empty()) { + PutModule("Usage: deluser <username>"); + return; + } + + CUser *pUser = CZNC::Get().FindUser(sUsername); + + if (!pUser) { + PutModule("Error: User " + sUsername + " does not exist!"); + return; + } + + if (pUser == m_pUser) { + PutModule("Error: You can't delete yourself!"); + return; + } + + if (!CZNC::Get().DeleteUser(pUser->GetUserName())) { + // This can't happen, because we got the user from FindUser() + PutModule("Error: Internal error!"); + return; + } + + PutModule("User " + sUsername + " deleted!"); + return; + } + + void AddServer(const CString& sLine) { + CString username = sLine.Token(1); + CString server = sLine.Token(2, true); + + if (server.empty()) { + if (!username.empty()) { + server = username; + username = ""; + } else { + PutModule("Usage: addserver [username] <server>"); + return; + } + } + + CUser* user = GetUser(username); + if (!user) { + PutModule("Error: User not found: " + username); + return; + } + if (user != m_pUser && !m_pUser->IsAdmin()) { + PutModule("Error: You need to have admin rights to modify other users!"); + return; + } + + user->AddServer(server); + PutModule("Added IRC Server: " + server); + } + + + typedef void (CAdminMod::* fn)(const CString&); + typedef std::map<CString, fn> function_map; + function_map fnmap_; + +public: + GLOBALMODCONSTRUCTOR(CAdminMod) { + fnmap_["help"] = &CAdminMod::PrintHelp; + fnmap_["get"] = &CAdminMod::Get; + fnmap_["set"] = &CAdminMod::Set; + fnmap_["listusers"] = &CAdminMod::ListUsers; + fnmap_["adduser"] = &CAdminMod::AddUser; + fnmap_["deluser"] = &CAdminMod::DelUser; + fnmap_["addserver"] = &CAdminMod::AddServer; + } + + virtual ~CAdminMod() {} + + virtual void OnModCommand(const CString& sLine) { + if (!m_pUser) + return; + + const CString cmd = sLine.Token(0).AsLower(); + function_map::iterator it = fnmap_.find(cmd); + if (it != fnmap_.end()) + (this->*it->second)(sLine); + else + PutModule("Unknown command"); + } +}; + +GLOBALMODULEDEFS(CAdminMod, "Dynamic configuration of users/settings through irc") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-02-19 16:40:29
|
Revision: 1386 http://znc.svn.sourceforge.net/znc/?rev=1386&view=rev Author: psychon Date: 2009-02-19 16:40:21 +0000 (Thu, 19 Feb 2009) Log Message: ----------- Some stuff for the admin module - No longer a global module, why was it ever one? - Fix '/msg *admin set ident a' to error out instead of modifying my own user. - Document '$me'. - Other, minor stuff. Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-02-18 16:10:32 UTC (rev 1385) +++ trunk/modules/admin.cpp 2009-02-19 16:40:21 UTC (rev 1386) @@ -1,4 +1,5 @@ /* + * Copyright (C) 2004-2009 See the AUTHORS file for details. * Copyright (C) 2008 by Stefan Rado * based on admin.cpp by Sebastian Ramacher * based on admin.cpp in crox branch @@ -24,8 +25,8 @@ #define ARRAY_SIZE(array) sizeof(array_size((array))) -class CAdminMod : public CGlobalModule { - using CGlobalModule::PutModule; +class CAdminMod : public CModule { + using CModule::PutModule; void PrintHelp(const CString&) { CTable CmdTable; @@ -53,18 +54,21 @@ CTable VarTable; VarTable.AddColumn("Variable"); VarTable.AddColumn("Type"); + const char* string = "String"; + const char* boolean = "Boolean (true/false)"; + const char* integer = "Integer"; static const char* vars[][2] = { - {"Ident", "String"}, - {"RealName", "String"}, - {"VHost", "String"}, - {"MultiClients", "Boolean (true/false)"}, - {"BounceDCCs", "Boolean (true/false)"}, - {"UseClientIP", "Boolean (true/false)"}, - {"DenyLoadMod", "Boolean (true/false)"}, - {"DefaultChanModes", "String"}, - {"QuitMsg", "String"}, - {"BufferCount", "Integer"}, - {"KeepBuffer", "Boolean (true/false)"}, + {"Ident", string}, + {"RealName", string}, + {"VHost", string}, + {"MultiClients", boolean}, + {"BounceDCCs", boolean}, + {"UseClientIP", boolean}, + {"DenyLoadMod", boolean}, + {"DefaultChanModes", string}, + {"QuitMsg", string}, + {"BufferCount", integer}, + {"KeepBuffer", boolean}, }; for (unsigned int i = 0; i != ARRAY_SIZE(vars); ++i) { VarTable.AddRow(); @@ -72,13 +76,14 @@ VarTable.SetCell("Type", vars[i][1]); } PutModule(VarTable); + + PutModule("You can use $me as the user name for modifying your own user."); } CUser* GetUser(const CString& username) { - if (username.size() && username != "$me") - return CZNC::Get().FindUser(username); - else + if (username.Equals("$me")) return m_pUser; + return CZNC::Get().FindUser(username); } void Get(const CString& sLine) { @@ -353,7 +358,7 @@ function_map fnmap_; public: - GLOBALMODCONSTRUCTOR(CAdminMod) { + MODCONSTRUCTOR(CAdminMod) { fnmap_["help"] = &CAdminMod::PrintHelp; fnmap_["get"] = &CAdminMod::Get; fnmap_["set"] = &CAdminMod::Set; @@ -378,4 +383,4 @@ } }; -GLOBALMODULEDEFS(CAdminMod, "Dynamic configuration of users/settings through irc") +MODULEDEFS(CAdminMod, "Dynamic configuration of users/settings through irc") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <seb...@us...> - 2009-03-11 19:24:40
|
Revision: 1423 http://znc.svn.sourceforge.net/znc/?rev=1423&view=rev Author: sebastinas Date: 2009-03-11 19:24:30 +0000 (Wed, 11 Mar 2009) Log Message: ----------- Admin module: added 'Set Password' The admin module is now able to set a user's password. Furthermore fixed a bug if now username was specified for the 'Get' or 'Set' command. Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-03-11 14:32:12 UTC (rev 1422) +++ trunk/modules/admin.cpp 2009-03-11 19:24:30 UTC (rev 1423) @@ -69,6 +69,7 @@ {"QuitMsg", string}, {"BufferCount", integer}, {"KeepBuffer", boolean}, + {"Password", string} }; for (unsigned int i = 0; i != ARRAY_SIZE(vars); ++i) { VarTable.AddRow(); @@ -94,6 +95,9 @@ PutModule("Usage: get <variable> [username]"); return; } + if (username.empty()) { + username = m_pUser->GetUserName(); + } CUser* user = GetUser(username); if (!user) { @@ -143,7 +147,7 @@ if (value.empty()) { if (!username.empty()) { value = username; - username = ""; + username = m_pUser->GetUserName();; } else { PutModule("Usage: set <variable> [username] <value>"); return; @@ -218,6 +222,12 @@ user->SetKeepBuffer(b); PutModule("KeepBuffer = " + CString(b ? "true" : "false")); } + else if (var == "password") { + const CString sSalt = CUtils::GetSalt(); + const CString sHash = CUtils::SaltedHash(value, sSalt); + user->SetPass(sHash, true, sSalt); + PutModule("Password has been changed!!"); + } else PutModule("Error: Unknown variable"); } @@ -275,7 +285,7 @@ CUser* pNewUser = new CUser(sUsername); CString sSalt = CUtils::GetSalt(); - pNewUser->SetPass(CString(sPassword + sSalt).MD5(), true, sSalt); + pNewUser->SetPass(CUtils::SaltedHash(sPassword, sSalt), true, sSalt); if (sIRCServer.size()) pNewUser->AddServer(sIRCServer); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <seb...@us...> - 2009-03-11 21:12:15
|
Revision: 1424 http://znc.svn.sourceforge.net/znc/?rev=1424&view=rev Author: sebastinas Date: 2009-03-11 21:11:58 +0000 (Wed, 11 Mar 2009) Log Message: ----------- My bad. Fixed the build error. Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-03-11 19:24:30 UTC (rev 1423) +++ trunk/modules/admin.cpp 2009-03-11 21:11:58 UTC (rev 1424) @@ -89,7 +89,7 @@ void Get(const CString& sLine) { const CString var = sLine.Token(1).AsLower(); - const CString username = sLine.Token(2, true); + CString username = sLine.Token(2, true); if (var.empty()) { PutModule("Usage: get <variable> [username]"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <seb...@us...> - 2009-03-23 20:43:24
|
Revision: 1440 http://znc.svn.sourceforge.net/znc/?rev=1440&view=rev Author: sebastinas Date: 2009-03-23 20:43:11 +0000 (Mon, 23 Mar 2009) Log Message: ----------- Admin module: some cosmetic fixes Use ToUInt to convert the string, since we're actually using an unsigned integer. And use ToBool for consistency. Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-03-23 15:26:26 UTC (rev 1439) +++ trunk/modules/admin.cpp 2009-03-23 20:43:11 UTC (rev 1440) @@ -213,12 +213,12 @@ PutModule("QuitMsg = " + value); } else if (var == "buffercount") { - unsigned int i = value.ToInt(); + unsigned int i = value.ToUInt(); user->SetBufferCount(i); PutModule("BufferCount = " + value); } else if (var == "keepbuffer") { - bool b = value.AsLower() == "true"; + bool b = value.ToBool(); user->SetKeepBuffer(b); PutModule("KeepBuffer = " + CString(b ? "true" : "false")); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-04-04 18:41:23
|
Revision: 1477 http://znc.svn.sourceforge.net/znc/?rev=1477&view=rev Author: psychon Date: 2009-04-04 18:41:14 +0000 (Sat, 04 Apr 2009) Log Message: ----------- admin: Add a CloneUser command Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-04-04 11:49:15 UTC (rev 1476) +++ trunk/modules/admin.cpp 2009-04-04 18:41:14 UTC (rev 1477) @@ -39,6 +39,7 @@ {"ListUsers", "", "Lists users"}, {"AddUser", "username password [ircserver]", "Adds a new user"}, {"DelUser", "username", "Deletes a user"}, + {"CloneUser", "oldusername newusername", "Clones a user"}, {"AddServer", "[username] server", "Adds a new IRC server for the given or current user"} }; for (unsigned int i = 0; i != ARRAY_SIZE(help); ++i) { @@ -334,6 +335,47 @@ return; } + void CloneUser(const CString& sLine) { + if (!m_pUser->IsAdmin()) { + PutModule("Error: You need to have admin rights to add new users!"); + return; + } + + const CString + sOldUsername = sLine.Token(1), + sNewUsername = sLine.Token(2, true); + + if (sOldUsername.empty() || sNewUsername.empty()) { + PutModule("Usage: cloneuser <oldusername> <newusername>"); + return; + } + + CUser *pOldUser = CZNC::Get().FindUser(sOldUsername); + + if (!pOldUser) { + PutModule("Error: User [" + sOldUsername + "] not found!"); + return; + } + + CUser* pNewUser = new CUser(sOldUsername); + CString sError; + if (!pNewUser->Clone(*pOldUser, sError)) { + delete pNewUser; + PutModule("Error: Cloning failed! [" + sError + "]"); + return; + } + pNewUser->SetUserName(sNewUsername); + + if (!CZNC::Get().AddUser(pNewUser, sError)) { + delete pNewUser; + PutModule("Error: User not added! [" + sError + "]"); + return; + } + + PutModule("User [" + sNewUsername + "] added!"); + return; + } + void AddServer(const CString& sLine) { CString username = sLine.Token(1); CString server = sLine.Token(2, true); @@ -375,6 +417,7 @@ fnmap_["listusers"] = &CAdminMod::ListUsers; fnmap_["adduser"] = &CAdminMod::AddUser; fnmap_["deluser"] = &CAdminMod::DelUser; + fnmap_["cloneuser"] = &CAdminMod::CloneUser; fnmap_["addserver"] = &CAdminMod::AddServer; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-04-04 18:43:26
|
Revision: 1478 http://znc.svn.sourceforge.net/znc/?rev=1478&view=rev Author: psychon Date: 2009-04-04 18:43:24 +0000 (Sat, 04 Apr 2009) Log Message: ----------- admin: DelUser can now handle spaces in user names The new CloneUser command allows one to create a user with a space in its name and the code for reading znc.conf allows spaces too. So now one can even get rid of this users again... Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-04-04 18:41:14 UTC (rev 1477) +++ trunk/modules/admin.cpp 2009-04-04 18:43:24 UTC (rev 1478) @@ -307,7 +307,7 @@ return; } - const CString sUsername = sLine.Token(1); + const CString sUsername = sLine.Token(1, true); if (sUsername.empty()) { PutModule("Usage: deluser <username>"); return; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-04-06 06:45:35
|
Revision: 1480 http://znc.svn.sourceforge.net/znc/?rev=1480&view=rev Author: psychon Date: 2009-04-06 06:45:19 +0000 (Mon, 06 Apr 2009) Log Message: ----------- Admin: Use CString's constructor instead of reinventing the wheel Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-04-05 19:09:03 UTC (rev 1479) +++ trunk/modules/admin.cpp 2009-04-06 06:45:19 UTC (rev 1480) @@ -121,13 +121,13 @@ else if (var == "vhost") PutModule("VHost = " + user->GetVHost()); else if (var == "multiclients") - PutModule("MultiClients = " + CString(user->MultiClients() ? "true" : "false")); + PutModule("MultiClients = " + CString(user->MultiClients())); else if (var == "bouncedccs") - PutModule("BounceDCCs = " + CString(user->BounceDCCs() ? "true" : "false")); + PutModule("BounceDCCs = " + CString(user->BounceDCCs())); else if (var == "useclientip") - PutModule("UseClientIP = " + CString(user->UseClientIP() ? "true" : "false")); + PutModule("UseClientIP = " + CString(user->UseClientIP())); else if (var == "denyloadmod") - PutModule("DenyLoadMod = " + CString(user->DenyLoadMod() ? "true" : "false")); + PutModule("DenyLoadMod = " + CString(user->DenyLoadMod())); else if (var == "defaultchanmodes") PutModule("DefaultChanModes = " + user->GetDefaultChanModes()); else if (var == "quitmsg") @@ -135,7 +135,7 @@ else if (var == "buffercount") PutModule("BufferCount = " + CString(user->GetBufferCount())); else if (var == "keepbuffer") - PutModule("KeepBuffer = " + CString(user->KeepBuffer() ? "true" : "false")); + PutModule("KeepBuffer = " + CString(user->KeepBuffer())); else PutModule("Error: Unknown variable"); } @@ -188,22 +188,22 @@ else if (var == "multiclients") { bool b = value.ToBool(); user->SetMultiClients(b); - PutModule("MultiClients = " + CString(b ? "true" : "false")); + PutModule("MultiClients = " + CString(b)); } else if (var == "bouncedccs") { bool b = value.ToBool(); user->SetBounceDCCs(b); - PutModule("BounceDCCs = " + CString(b ? "true" : "false")); + PutModule("BounceDCCs = " + CString(b)); } else if (var == "useclientip") { bool b = value.ToBool(); user->SetUseClientIP(b); - PutModule("UseClientIP = " + CString(b ? "true" : "false")); + PutModule("UseClientIP = " + CString(b)); } else if (var == "denyloadmod") { bool b = value.ToBool(); user->SetDenyLoadMod(b); - PutModule("DenyLoadMod = " + CString(b ? "true" : "false")); + PutModule("DenyLoadMod = " + CString(b)); } else if (var == "defaultchanmodes") { user->SetDefaultChanModes(value); @@ -221,7 +221,7 @@ else if (var == "keepbuffer") { bool b = value.ToBool(); user->SetKeepBuffer(b); - PutModule("KeepBuffer = " + CString(b ? "true" : "false")); + PutModule("KeepBuffer = " + CString(b)); } else if (var == "password") { const CString sSalt = CUtils::GetSalt(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-04-07 11:38:31
|
Revision: 1484 http://znc.svn.sourceforge.net/znc/?rev=1484&view=rev Author: psychon Date: 2009-04-07 11:38:17 +0000 (Tue, 07 Apr 2009) Log Message: ----------- Add support for per-channel settings to admin Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-04-07 06:48:51 UTC (rev 1483) +++ trunk/modules/admin.cpp 2009-04-07 11:38:17 UTC (rev 1484) @@ -12,6 +12,7 @@ #include "znc.h" #include "User.h" #include "Modules.h" +#include "Chan.h" template<std::size_t N> struct array_size_helper { @@ -36,6 +37,8 @@ static const char* help[][3] = { {"Get", "variable [username]", "Prints the variable's value for the given or current user"}, {"Set", "variable [username] value", "Sets the variable's value for the given or current user"}, + {"GetChan", "variable [username] chan", "Prints the variable's value for the given channel"}, + {"SetChan", "variable [username] chan value", "Sets the variable's value for the given channel"}, {"ListUsers", "", "Lists users"}, {"AddUser", "username password [ircserver]", "Adds a new user"}, {"DelUser", "username", "Deletes a user"}, @@ -79,6 +82,24 @@ } PutModule(VarTable); + PutModule("The following variables are available when using the SetChan/GetChan commands:"); + CTable CVarTable; + CVarTable.AddColumn("Variable"); + CVarTable.AddColumn("Type"); + static const char* cvars[][2] = { + {"DefModes", string}, + {"Buffer", integer}, + {"InConfig", boolean}, + {"KeepBuffer", boolean}, + {"Detached", boolean}, + }; + for (unsigned int i = 0; i != ARRAY_SIZE(cvars); ++i) { + CVarTable.AddRow(); + CVarTable.SetCell("Variable", cvars[i][0]); + CVarTable.SetCell("Type", cvars[i][1]); + } + PutModule(CVarTable); + PutModule("You can use $me as the user name for modifying your own user."); } @@ -233,6 +254,114 @@ PutModule("Error: Unknown variable"); } + void GetChan(const CString& sLine) { + const CString var = sLine.Token(1).AsLower(); + CString username = sLine.Token(2); + CString chan = sLine.Token(3, true); + + if (var.empty()) { + PutModule("Usage: getchan <variable> [username] [chan]"); + return; + } + if (chan.empty()) { + chan = username; + username = ""; + } + if (username.empty()) { + username = m_pUser->GetUserName(); + } + + CUser* user = GetUser(username); + if (!user) { + PutModule("Error: User not found: " + username); + return; + } + if (user != m_pUser && !m_pUser->IsAdmin()) { + PutModule("Error: You need to have admin rights to modify other users!"); + return; + } + + CChan* pChan = user->FindChan(chan); + if (!pChan) { + PutModule("Error: Channel not found: " + chan); + return; + } + + if (var == "defmodes") + PutModule("DefModes = " + pChan->GetDefaultModes()); + else if (var == "buffer") + PutModule("Buffer = " + CString(pChan->GetBufferCount())); + else if (var == "inconfig") + PutModule("InConfig = " + pChan->InConfig()); + else if (var == "keepbuffer") + PutModule("KeepBuffer = " + pChan->KeepBuffer()); + else if (var == "detached") + PutModule("Detached = " + pChan->IsDetached()); + else + PutModule("Error: Unknown variable"); + } + + void SetChan(const CString& sLine) { + const CString var = sLine.Token(1).AsLower(); + CString username = sLine.Token(2); + CString chan = sLine.Token(3); + CString value = sLine.Token(4, true); + + if (value.empty()) { + if (!username.empty() && !chan.empty()) { + value = chan; + chan = username; + username = m_pUser->GetUserName();; + } else { + PutModule("Usage: set <variable> [username] <value>"); + return; + } + } + + CUser* user = GetUser(username); + if (!user) { + PutModule("Error: User not found: " + username); + return; + } + if (user != m_pUser && !m_pUser->IsAdmin()) { + PutModule("Error: You need to have admin rights to modify other users!"); + return; + } + + CChan* pChan = user->FindChan(chan); + if (!pChan) { + PutModule("Error: Channel not found: " + chan); + return; + } + + if (var == "defmodes") { + pChan->SetDefaultModes(value); + PutModule("DefModes = " + value); + } else if (var == "buffer") { + unsigned int i = value.ToUInt(); + pChan->SetBufferCount(i); + PutModule("Buffer = " + CString(i)); + } else if (var == "inconfig") { + bool b = value.ToBool(); + pChan->SetInConfig(b); + PutModule("InConfig = " + CString(b)); + } else if (var == "keepbuffer") { + bool b = value.ToBool(); + pChan->SetKeepBuffer(b); + PutModule("KeepBuffer = " + CString(b)); + } else if (var == "detached") { + bool b = value.ToBool(); + if (pChan->IsDetached() != b) { + if (b) + pChan->DetachUser(); + else + pChan->AttachUser(); + } + PutModule("Detached = " + CString(b)); + } else + PutModule("Error: Unknown variable"); + } + void ListUsers(const CString&) { if (!m_pUser->IsAdmin()) return; @@ -414,6 +543,8 @@ fnmap_["help"] = &CAdminMod::PrintHelp; fnmap_["get"] = &CAdminMod::Get; fnmap_["set"] = &CAdminMod::Set; + fnmap_["getchan"] = &CAdminMod::GetChan; + fnmap_["setchan"] = &CAdminMod::SetChan; fnmap_["listusers"] = &CAdminMod::ListUsers; fnmap_["adduser"] = &CAdminMod::AddUser; fnmap_["deluser"] = &CAdminMod::DelUser; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-06-06 18:09:09
|
Revision: 1535 http://znc.svn.sourceforge.net/znc/?rev=1535&view=rev Author: psychon Date: 2009-06-06 18:09:07 +0000 (Sat, 06 Jun 2009) Log Message: ----------- admin: Add set/get Nick/Altnick to help Dunno why these commands weren't documented before... Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-06-05 19:56:23 UTC (rev 1534) +++ trunk/modules/admin.cpp 2009-06-06 18:09:07 UTC (rev 1535) @@ -62,6 +62,8 @@ const char* boolean = "Boolean (true/false)"; const char* integer = "Integer"; static const char* vars[][2] = { + {"Nick", string}, + {"Altnick", string}, {"Ident", string}, {"RealName", string}, {"VHost", string}, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-06-10 11:40:18
|
Revision: 1539 http://znc.svn.sourceforge.net/znc/?rev=1539&view=rev Author: psychon Date: 2009-06-10 11:40:14 +0000 (Wed, 10 Jun 2009) Log Message: ----------- Admin: Some minor cleanup Move some code from GetUser()'s callers into GetUser() itself. Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-06-10 05:56:31 UTC (rev 1538) +++ trunk/modules/admin.cpp 2009-06-10 11:40:14 UTC (rev 1539) @@ -108,7 +108,16 @@ CUser* GetUser(const CString& username) { if (username.Equals("$me")) return m_pUser; - return CZNC::Get().FindUser(username); + CUser *pUser = CZNC::Get().FindUser(username); + if (!pUser) { + PutModule("Error: User not found: " + username); + return NULL; + } + if (user != m_pUser && !m_pUser->IsAdmin()) { + PutModule("Error: You need to have admin rights to modify other users!"); + return NULL; + } + return pUser; } void Get(const CString& sLine) { @@ -124,14 +133,8 @@ } CUser* user = GetUser(username); - if (!user) { - PutModule("Error: User not found: " + username); + if (!user) return; - } - if (user != m_pUser && !m_pUser->IsAdmin()) { - PutModule("Error: You need to have admin rights to modify other users!"); - return; - } if (var == "nick") PutModule("Nick = " + user->GetNick()); @@ -179,14 +182,8 @@ } CUser* user = GetUser(username); - if (!user) { - PutModule("Error: User not found: " + username); + if (!user) return; - } - if (user != m_pUser && !m_pUser->IsAdmin()) { - PutModule("Error: You need to have admin rights to modify other users!"); - return; - } if (var == "nick") { user->SetNick(value); @@ -274,14 +271,8 @@ } CUser* user = GetUser(username); - if (!user) { - PutModule("Error: User not found: " + username); + if (!user) return; - } - if (user != m_pUser && !m_pUser->IsAdmin()) { - PutModule("Error: You need to have admin rights to modify other users!"); - return; - } CChan* pChan = user->FindChan(chan); if (!pChan) { @@ -321,14 +312,8 @@ } CUser* user = GetUser(username); - if (!user) { - PutModule("Error: User not found: " + username); + if (!user) return; - } - if (user != m_pUser && !m_pUser->IsAdmin()) { - PutModule("Error: You need to have admin rights to modify other users!"); - return; - } CChan* pChan = user->FindChan(chan); if (!pChan) { @@ -522,14 +507,8 @@ } CUser* user = GetUser(username); - if (!user) { - PutModule("Error: User not found: " + username); + if (!user) return; - } - if (user != m_pUser && !m_pUser->IsAdmin()) { - PutModule("Error: You need to have admin rights to modify other users!"); - return; - } user->AddServer(server); PutModule("Added IRC Server: " + server); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-06-10 12:57:41
|
Revision: 1540 http://znc.svn.sourceforge.net/znc/?rev=1540&view=rev Author: psychon Date: 2009-06-10 12:21:37 +0000 (Wed, 10 Jun 2009) Log Message: ----------- I fail (fix the admin module) Thanks SilverLeo :( Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-06-10 11:40:14 UTC (rev 1539) +++ trunk/modules/admin.cpp 2009-06-10 12:21:37 UTC (rev 1540) @@ -113,7 +113,7 @@ PutModule("Error: User not found: " + username); return NULL; } - if (user != m_pUser && !m_pUser->IsAdmin()) { + if (pUser != m_pUser && !m_pUser->IsAdmin()) { PutModule("Error: You need to have admin rights to modify other users!"); return NULL; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-06-10 14:41:52
|
Revision: 1541 http://znc.svn.sourceforge.net/znc/?rev=1541&view=rev Author: psychon Date: 2009-06-10 14:41:50 +0000 (Wed, 10 Jun 2009) Log Message: ----------- admin: Require a username argument This patch makes set, setchan and addserver require a username argument. (One can just use $me) Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-06-10 12:21:37 UTC (rev 1540) +++ trunk/modules/admin.cpp 2009-06-10 14:41:50 UTC (rev 1541) @@ -172,13 +172,8 @@ CString value = sLine.Token(3, true); if (value.empty()) { - if (!username.empty()) { - value = username; - username = m_pUser->GetUserName();; - } else { - PutModule("Usage: set <variable> [username] <value>"); - return; - } + PutModule("Usage: set <variable> <username> <value>"); + return; } CUser* user = GetUser(username); @@ -259,7 +254,7 @@ CString chan = sLine.Token(3, true); if (var.empty()) { - PutModule("Usage: getchan <variable> [username] [chan]"); + PutModule("Usage: getchan <variable> [username] <chan>"); return; } if (chan.empty()) { @@ -301,14 +296,8 @@ CString value = sLine.Token(4, true); if (value.empty()) { - if (!username.empty() && !chan.empty()) { - value = chan; - chan = username; - username = m_pUser->GetUserName();; - } else { - PutModule("Usage: set <variable> [username] <value>"); - return; - } + PutModule("Usage: set <variable> <username> <value>"); + return; } CUser* user = GetUser(username); @@ -497,13 +486,8 @@ CString server = sLine.Token(2, true); if (server.empty()) { - if (!username.empty()) { - server = username; - username = ""; - } else { - PutModule("Usage: addserver [username] <server>"); - return; - } + PutModule("Usage: addserver <username> <server>"); + return; } CUser* user = GetUser(username); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <seb...@us...> - 2009-06-10 19:16:27
|
Revision: 1542 http://znc.svn.sourceforge.net/znc/?rev=1542&view=rev Author: sebastinas Date: 2009-06-10 19:16:20 +0000 (Wed, 10 Jun 2009) Log Message: ----------- made string, boolean and integer static Made string, boolean and integer in PrintHelp static sinve vars is static too. Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-06-10 14:41:50 UTC (rev 1541) +++ trunk/modules/admin.cpp 2009-06-10 19:16:20 UTC (rev 1542) @@ -58,9 +58,9 @@ CTable VarTable; VarTable.AddColumn("Variable"); VarTable.AddColumn("Type"); - const char* string = "String"; - const char* boolean = "Boolean (true/false)"; - const char* integer = "Integer"; + static const char* string = "String"; + static const char* boolean = "Boolean (true/false)"; + static const char* integer = "Integer"; static const char* vars[][2] = { {"Nick", string}, {"Altnick", string}, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-09-24 10:20:35
|
Revision: 1632 http://znc.svn.sourceforge.net/znc/?rev=1632&view=rev Author: psychon Date: 2009-09-24 10:20:23 +0000 (Thu, 24 Sep 2009) Log Message: ----------- admin: Fix the help for "setchan" Thanks to flakes. Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-09-18 18:26:20 UTC (rev 1631) +++ trunk/modules/admin.cpp 2009-09-24 10:20:23 UTC (rev 1632) @@ -296,7 +296,7 @@ CString value = sLine.Token(4, true); if (value.empty()) { - PutModule("Usage: set <variable> <username> <value>"); + PutModule("Usage: setchan <variable> <username> <chan> <value>"); return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <seb...@us...> - 2009-09-24 10:24:29
|
Revision: 1633 http://znc.svn.sourceforge.net/znc/?rev=1633&view=rev Author: sebastinas Date: 2009-09-24 10:24:17 +0000 (Thu, 24 Sep 2009) Log Message: ----------- admin: Fix the output of "help". Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-09-24 10:20:23 UTC (rev 1632) +++ trunk/modules/admin.cpp 2009-09-24 10:24:17 UTC (rev 1633) @@ -36,9 +36,9 @@ CmdTable.AddColumn("Description"); static const char* help[][3] = { {"Get", "variable [username]", "Prints the variable's value for the given or current user"}, - {"Set", "variable [username] value", "Sets the variable's value for the given or current user"}, + {"Set", "variable username value", "Sets the variable's value for the given user (use $me for the current user)"}, {"GetChan", "variable [username] chan", "Prints the variable's value for the given channel"}, - {"SetChan", "variable [username] chan value", "Sets the variable's value for the given channel"}, + {"SetChan", "variable username chan value", "Sets the variable's value for the given channel"}, {"ListUsers", "", "Lists users"}, {"AddUser", "username password [ircserver]", "Adds a new user"}, {"DelUser", "username", "Deletes a user"}, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-10-20 16:59:51
|
Revision: 1653 http://znc.svn.sourceforge.net/znc/?rev=1653&view=rev Author: psychon Date: 2009-10-20 16:59:40 +0000 (Tue, 20 Oct 2009) Log Message: ----------- admin: Disable ConnectEnabled() for cloned users If you know clone a user through admin's clone command, that user won't connect to irc. When the new user first logs in he will be told to use '/msg *status connect'. Thanks to BLG and KiNgMaR for the idea and the 'patch'. Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2009-10-20 16:53:22 UTC (rev 1652) +++ trunk/modules/admin.cpp 2009-10-20 16:59:40 UTC (rev 1653) @@ -470,6 +470,7 @@ return; } pNewUser->SetUserName(sNewUsername); + pNewUser->SetIRCConnectEnabled(false); if (!CZNC::Get().AddUser(pNewUser, sError)) { delete pNewUser; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cf...@us...> - 2010-02-07 17:45:26
|
Revision: 1743 http://znc.svn.sourceforge.net/znc/?rev=1743&view=rev Author: cflakes Date: 2010-02-07 17:45:20 +0000 (Sun, 07 Feb 2010) Log Message: ----------- Added missing IsAdmin checks to the admin module. DenyLoadMod and DenySetVHost are now properly adhered to. Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2010-02-07 05:06:40 UTC (rev 1742) +++ trunk/modules/admin.cpp 2010-02-07 17:45:20 UTC (rev 1743) @@ -197,8 +197,12 @@ PutModule("RealName = " + value); } else if (var == "vhost") { - user->SetVHost(value); - PutModule("VHost = " + value); + if(!user->DenySetVHost() || m_pUser->IsAdmin()) { + user->SetVHost(value); + PutModule("VHost = " + value); + } else { + PutModule("Access denied!"); + } } else if (var == "multiclients") { bool b = value.ToBool(); @@ -216,9 +220,13 @@ PutModule("UseClientIP = " + CString(b)); } else if (var == "denyloadmod") { - bool b = value.ToBool(); - user->SetDenyLoadMod(b); - PutModule("DenyLoadMod = " + CString(b)); + if(m_pUser->IsAdmin()) { + bool b = value.ToBool(); + user->SetDenyLoadMod(b); + PutModule("DenyLoadMod = " + CString(b)); + } else { + PutModule("Access denied!"); + } } else if (var == "defaultchanmodes") { user->SetDefaultChanModes(value); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cf...@us...> - 2010-02-07 17:52:49
|
Revision: 1744 http://znc.svn.sourceforge.net/znc/?rev=1744&view=rev Author: cflakes Date: 2010-02-07 17:52:42 +0000 (Sun, 07 Feb 2010) Log Message: ----------- Added support for the MaxJoins and JoinTries variables to the admin module. Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2010-02-07 17:45:20 UTC (rev 1743) +++ trunk/modules/admin.cpp 2010-02-07 17:52:42 UTC (rev 1744) @@ -75,7 +75,9 @@ {"QuitMsg", string}, {"BufferCount", integer}, {"KeepBuffer", boolean}, - {"Password", string} + {"Password", string}, + {"JoinTries", integer}, + {"MaxJoins", integer} }; for (unsigned int i = 0; i != ARRAY_SIZE(vars); ++i) { VarTable.AddRow(); @@ -162,6 +164,10 @@ PutModule("BufferCount = " + CString(user->GetBufferCount())); else if (var == "keepbuffer") PutModule("KeepBuffer = " + CString(user->KeepBuffer())); + else if (var == "maxjoins") + PutModule("MaxJoins = " + CString(user->MaxJoins())); + else if (var == "jointries") + PutModule("JoinTries = " + CString(user->JoinTries())); else PutModule("Error: Unknown variable"); } @@ -252,6 +258,16 @@ user->SetPass(sHash, CUser::HASH_DEFAULT, sSalt); PutModule("Password has been changed!!"); } + else if (var == "maxjoins") { + unsigned int i = value.ToUInt(); + user->SetMaxJoins(i); + PutModule("MaxJoins = " + CString(user->MaxJoins())); + } + else if (var == "jointries") { + unsigned int i = value.ToUInt(); + user->SetJoinTries(i); + PutModule("JoinTries = " + CString(user->JoinTries())); + } else PutModule("Error: Unknown variable"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cf...@us...> - 2010-02-07 18:01:48
|
Revision: 1745 http://znc.svn.sourceforge.net/znc/?rev=1745&view=rev Author: cflakes Date: 2010-02-07 18:01:42 +0000 (Sun, 07 Feb 2010) Log Message: ----------- Added support for changing the "IsAdmin" flag to the admin module. Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2010-02-07 17:52:42 UTC (rev 1744) +++ trunk/modules/admin.cpp 2010-02-07 18:01:42 UTC (rev 1745) @@ -77,7 +77,8 @@ {"KeepBuffer", boolean}, {"Password", string}, {"JoinTries", integer}, - {"MaxJoins", integer} + {"MaxJoins", integer}, + {"Admin", boolean} }; for (unsigned int i = 0; i != ARRAY_SIZE(vars); ++i) { VarTable.AddRow(); @@ -168,6 +169,8 @@ PutModule("MaxJoins = " + CString(user->MaxJoins())); else if (var == "jointries") PutModule("JoinTries = " + CString(user->JoinTries())); + else if (var == "admin") + PutModule("Admin = " + CString(user->IsAdmin())); else PutModule("Error: Unknown variable"); } @@ -268,6 +271,15 @@ user->SetJoinTries(i); PutModule("JoinTries = " + CString(user->JoinTries())); } + else if (var == "admin") { + if(m_pUser->IsAdmin() && user != m_pUser) { + bool b = value.ToBool(); + user->SetAdmin(b); + PutModule("Admin = " + CString(user->IsAdmin())); + } else { + PutModule("Access denied!"); + } + } else PutModule("Error: Unknown variable"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cf...@us...> - 2010-02-07 18:02:40
|
Revision: 1746 http://znc.svn.sourceforge.net/znc/?rev=1746&view=rev Author: cflakes Date: 2010-02-07 18:02:32 +0000 (Sun, 07 Feb 2010) Log Message: ----------- Removed an unnecessary exclamation mark from the admin module. Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2010-02-07 18:01:42 UTC (rev 1745) +++ trunk/modules/admin.cpp 2010-02-07 18:02:32 UTC (rev 1746) @@ -259,7 +259,7 @@ const CString sSalt = CUtils::GetSalt(); const CString sHash = CUser::SaltedHash(value, sSalt); user->SetPass(sHash, CUser::HASH_DEFAULT, sSalt); - PutModule("Password has been changed!!"); + PutModule("Password has been changed!"); } else if (var == "maxjoins") { unsigned int i = value.ToUInt(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cf...@us...> - 2010-02-07 18:21:54
|
Revision: 1747 http://znc.svn.sourceforge.net/znc/?rev=1747&view=rev Author: cflakes Date: 2010-02-07 18:21:48 +0000 (Sun, 07 Feb 2010) Log Message: ----------- AppendTimestamp, PreprendTimestamp, DCCVHost and DenySetVHost (also affects DCCVHost) are now also changable via the admin module. Basic patch by psychon! Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2010-02-07 18:02:32 UTC (rev 1746) +++ trunk/modules/admin.cpp 2010-02-07 18:21:48 UTC (rev 1747) @@ -71,6 +71,7 @@ {"BounceDCCs", boolean}, {"UseClientIP", boolean}, {"DenyLoadMod", boolean}, + {"DenySetVHost", boolean}, {"DefaultChanModes", string}, {"QuitMsg", string}, {"BufferCount", integer}, @@ -78,7 +79,10 @@ {"Password", string}, {"JoinTries", integer}, {"MaxJoins", integer}, - {"Admin", boolean} + {"Admin", boolean}, + {"AppendTimestamp", boolean}, + {"PrependTimestamp", boolean}, + {"DCCVHost", boolean} }; for (unsigned int i = 0; i != ARRAY_SIZE(vars); ++i) { VarTable.AddRow(); @@ -93,10 +97,11 @@ CVarTable.AddColumn("Type"); static const char* cvars[][2] = { {"DefModes", string}, + {"Key", string}, {"Buffer", integer}, {"InConfig", boolean}, {"KeepBuffer", boolean}, - {"Detached", boolean}, + {"Detached", boolean} }; for (unsigned int i = 0; i != ARRAY_SIZE(cvars); ++i) { CVarTable.AddRow(); @@ -157,6 +162,8 @@ PutModule("UseClientIP = " + CString(user->UseClientIP())); else if (var == "denyloadmod") PutModule("DenyLoadMod = " + CString(user->DenyLoadMod())); + else if (var == "denysetvhost") + PutModule("DenySetVHost = " + CString(user->DenySetVHost())); else if (var == "defaultchanmodes") PutModule("DefaultChanModes = " + user->GetDefaultChanModes()); else if (var == "quitmsg") @@ -169,6 +176,12 @@ PutModule("MaxJoins = " + CString(user->MaxJoins())); else if (var == "jointries") PutModule("JoinTries = " + CString(user->JoinTries())); + else if (var == "appendtimestamp") + PutModule("AppendTimestamp = " + CString(user->GetTimestampAppend())); + else if (var == "preprendtimestamp") + PutModule("PreprendTimestamp = " + CString(user->GetTimestampPrepend())); + else if (var == "dccvhost") + PutModule("DCCVHost = " + CString(user->GetDCCVHost())); else if (var == "admin") PutModule("Admin = " + CString(user->IsAdmin())); else @@ -237,6 +250,15 @@ PutModule("Access denied!"); } } + else if (var == "denysetvhost") { + if(m_pUser->IsAdmin()) { + bool b = value.ToBool(); + user->SetDenySetVHost(b); + PutModule("DenySetVHost = " + CString(b)); + } else { + PutModule("Access denied!"); + } + } else if (var == "defaultchanmodes") { user->SetDefaultChanModes(value); PutModule("DefaultChanModes = " + value); @@ -280,6 +302,24 @@ PutModule("Access denied!"); } } + else if (var == "prependtimestamp") { + bool b = value.ToBool(); + user->SetTimestampPrepend(b); + PutModule("PrependTimestamp = " + CString(b)); + } + else if (var == "appendtimestamp") { + bool b = value.ToBool(); + user->SetTimestampAppend(b); + PutModule("AppendTimestamp = " + CString(b)); + } + else if (var == "dccvhost") { + if(!user->DenySetVHost() || m_pUser->IsAdmin()) { + user->SetDCCVHost(value); + PutModule("DCCVHost = " + value); + } else { + PutModule("Access denied!"); + } + } else PutModule("Error: Unknown variable"); } @@ -321,6 +361,8 @@ PutModule("KeepBuffer = " + pChan->KeepBuffer()); else if (var == "detached") PutModule("Detached = " + pChan->IsDetached()); + else if (var == "key") + PutModule("Key = " + pChan->GetKey()); else PutModule("Error: Unknown variable"); } @@ -370,6 +412,9 @@ pChan->AttachUser(); } PutModule("Detached = " + CString(b)); + } else if (var == "key") { + pChan->SetKey(value); + PutModule("Key = " + value); } else PutModule("Error: Unknown variable"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cf...@us...> - 2010-03-28 21:04:32
|
Revision: 1846 http://znc.svn.sourceforge.net/znc/?rev=1846&view=rev Author: cflakes Date: 2010-03-28 21:04:25 +0000 (Sun, 28 Mar 2010) Log Message: ----------- Fix whitespace and general cleanup for admin.cpp. Let's hope this doesn't break anything. :P Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2010-03-28 20:37:48 UTC (rev 1845) +++ trunk/modules/admin.cpp 2010-03-28 21:04:25 UTC (rev 1846) @@ -38,7 +38,7 @@ {"Get", "variable [username]", "Prints the variable's value for the given or current user"}, {"Set", "variable username value", "Sets the variable's value for the given user (use $me for the current user)"}, {"GetChan", "variable [username] chan", "Prints the variable's value for the given channel"}, - {"SetChan", "variable username chan value", "Sets the variable's value for the given channel"}, + {"SetChan", "variable username chan value", "Sets the variable's value for the given channel"}, {"ListUsers", "", "Lists users"}, {"AddUser", "username password [ircserver]", "Adds a new user"}, {"DelUser", "username", "Deletes a user"}, @@ -116,12 +116,12 @@ PutModule("You can use $me as the user name for modifying your own user."); } - CUser* GetUser(const CString& username) { - if (username.Equals("$me")) + CUser* GetUser(const CString& sUsername) { + if (sUsername.Equals("$me")) return m_pUser; - CUser *pUser = CZNC::Get().FindUser(username); + CUser *pUser = CZNC::Get().FindUser(sUsername); if (!pUser) { - PutModule("Error: User not found: " + username); + PutModule("Error: User not found: " + sUsername); return NULL; } if (pUser != m_pUser && !m_pUser->IsAdmin()) { @@ -132,193 +132,196 @@ } void Get(const CString& sLine) { - const CString var = sLine.Token(1).AsLower(); - CString username = sLine.Token(2, true); + const CString sVar = sLine.Token(1).AsLower(); + CString sUsername = sLine.Token(2, true); + CUser* pUser; - if (var.empty()) { + if (sVar.empty()) { PutModule("Usage: get <variable> [username]"); return; } - if (username.empty()) { - username = m_pUser->GetUserName(); + + if (sUsername.empty()) { + pUser = m_pUser; + } else { + pUser = GetUser(sUsername); } - CUser* user = GetUser(username); - if (!user) + if (!pUser) return; - if (var == "nick") - PutModule("Nick = " + user->GetNick()); - else if (var == "altnick") - PutModule("AltNick = " + user->GetAltNick()); - else if (var == "ident") - PutModule("Ident = " + user->GetIdent()); - else if (var == "realname") - PutModule("RealName = " + user->GetRealName()); - else if (var == "vhost") - PutModule("VHost = " + user->GetVHost()); - else if (var == "multiclients") - PutModule("MultiClients = " + CString(user->MultiClients())); - else if (var == "bouncedccs") - PutModule("BounceDCCs = " + CString(user->BounceDCCs())); - else if (var == "useclientip") - PutModule("UseClientIP = " + CString(user->UseClientIP())); - else if (var == "denyloadmod") - PutModule("DenyLoadMod = " + CString(user->DenyLoadMod())); - else if (var == "denysetvhost") - PutModule("DenySetVHost = " + CString(user->DenySetVHost())); - else if (var == "defaultchanmodes") - PutModule("DefaultChanModes = " + user->GetDefaultChanModes()); - else if (var == "quitmsg") - PutModule("QuitMsg = " + user->GetQuitMsg()); - else if (var == "buffercount") - PutModule("BufferCount = " + CString(user->GetBufferCount())); - else if (var == "keepbuffer") - PutModule("KeepBuffer = " + CString(user->KeepBuffer())); - else if (var == "maxjoins") - PutModule("MaxJoins = " + CString(user->MaxJoins())); - else if (var == "jointries") - PutModule("JoinTries = " + CString(user->JoinTries())); - else if (var == "appendtimestamp") - PutModule("AppendTimestamp = " + CString(user->GetTimestampAppend())); - else if (var == "preprendtimestamp") - PutModule("PreprendTimestamp = " + CString(user->GetTimestampPrepend())); - else if (var == "dccvhost") - PutModule("DCCVHost = " + CString(user->GetDCCVHost())); - else if (var == "admin") - PutModule("Admin = " + CString(user->IsAdmin())); + if (sVar == "nick") + PutModule("Nick = " + pUser->GetNick()); + else if (sVar == "altnick") + PutModule("AltNick = " + pUser->GetAltNick()); + else if (sVar == "ident") + PutModule("Ident = " + pUser->GetIdent()); + else if (sVar == "realname") + PutModule("RealName = " + pUser->GetRealName()); + else if (sVar == "vhost") + PutModule("VHost = " + pUser->GetVHost()); + else if (sVar == "multiclients") + PutModule("MultiClients = " + CString(pUser->MultiClients())); + else if (sVar == "bouncedccs") + PutModule("BounceDCCs = " + CString(pUser->BounceDCCs())); + else if (sVar == "useclientip") + PutModule("UseClientIP = " + CString(pUser->UseClientIP())); + else if (sVar == "denyloadmod") + PutModule("DenyLoadMod = " + CString(pUser->DenyLoadMod())); + else if (sVar == "denysetvhost") + PutModule("DenySetVHost = " + CString(pUser->DenySetVHost())); + else if (sVar == "defaultchanmodes") + PutModule("DefaultChanModes = " + pUser->GetDefaultChanModes()); + else if (sVar == "quitmsg") + PutModule("QuitMsg = " + pUser->GetQuitMsg()); + else if (sVar == "buffercount") + PutModule("BufferCount = " + CString(pUser->GetBufferCount())); + else if (sVar == "keepbuffer") + PutModule("KeepBuffer = " + CString(pUser->KeepBuffer())); + else if (sVar == "maxjoins") + PutModule("MaxJoins = " + CString(pUser->MaxJoins())); + else if (sVar == "jointries") + PutModule("JoinTries = " + CString(pUser->JoinTries())); + else if (sVar == "appendtimestamp") + PutModule("AppendTimestamp = " + CString(pUser->GetTimestampAppend())); + else if (sVar == "preprendtimestamp") + PutModule("PreprendTimestamp = " + CString(pUser->GetTimestampPrepend())); + else if (sVar == "dccvhost") + PutModule("DCCVHost = " + CString(pUser->GetDCCVHost())); + else if (sVar == "admin") + PutModule("Admin = " + CString(pUser->IsAdmin())); else PutModule("Error: Unknown variable"); } void Set(const CString& sLine) { - const CString var = sLine.Token(1).AsLower(); - CString username = sLine.Token(2); - CString value = sLine.Token(3, true); + const CString sVar = sLine.Token(1).AsLower(); + CString sUserName = sLine.Token(2); + CString sValue = sLine.Token(3, true); - if (value.empty()) { + if (sValue.empty()) { PutModule("Usage: set <variable> <username> <value>"); return; } - CUser* user = GetUser(username); - if (!user) + CUser* pUser = GetUser(sUserName); + if (!pUser) return; - if (var == "nick") { - user->SetNick(value); - PutModule("Nick = " + value); + if (sVar == "nick") { + pUser->SetNick(sValue); + PutModule("Nick = " + sValue); } - else if (var == "altnick") { - user->SetAltNick(value); - PutModule("AltNick = " + value); + else if (sVar == "altnick") { + pUser->SetAltNick(sValue); + PutModule("AltNick = " + sValue); } - else if (var == "ident") { - user->SetIdent(value); - PutModule("Ident = " + value); + else if (sVar == "ident") { + pUser->SetIdent(sValue); + PutModule("Ident = " + sValue); } - else if (var == "realname") { - user->SetRealName(value); - PutModule("RealName = " + value); + else if (sVar == "realname") { + pUser->SetRealName(sValue); + PutModule("RealName = " + sValue); } - else if (var == "vhost") { - if(!user->DenySetVHost() || m_pUser->IsAdmin()) { - user->SetVHost(value); - PutModule("VHost = " + value); + else if (sVar == "vhost") { + if(!pUser->DenySetVHost() || m_pUser->IsAdmin()) { + pUser->SetVHost(sValue); + PutModule("VHost = " + sValue); } else { PutModule("Access denied!"); } } - else if (var == "multiclients") { - bool b = value.ToBool(); - user->SetMultiClients(b); + else if (sVar == "multiclients") { + bool b = sValue.ToBool(); + pUser->SetMultiClients(b); PutModule("MultiClients = " + CString(b)); } - else if (var == "bouncedccs") { - bool b = value.ToBool(); - user->SetBounceDCCs(b); + else if (sVar == "bouncedccs") { + bool b = sValue.ToBool(); + pUser->SetBounceDCCs(b); PutModule("BounceDCCs = " + CString(b)); } - else if (var == "useclientip") { - bool b = value.ToBool(); - user->SetUseClientIP(b); + else if (sVar == "useclientip") { + bool b = sValue.ToBool(); + pUser->SetUseClientIP(b); PutModule("UseClientIP = " + CString(b)); } - else if (var == "denyloadmod") { + else if (sVar == "denyloadmod") { if(m_pUser->IsAdmin()) { - bool b = value.ToBool(); - user->SetDenyLoadMod(b); + bool b = sValue.ToBool(); + pUser->SetDenyLoadMod(b); PutModule("DenyLoadMod = " + CString(b)); } else { PutModule("Access denied!"); } } - else if (var == "denysetvhost") { + else if (sVar == "denysetvhost") { if(m_pUser->IsAdmin()) { - bool b = value.ToBool(); - user->SetDenySetVHost(b); + bool b = sValue.ToBool(); + pUser->SetDenySetVHost(b); PutModule("DenySetVHost = " + CString(b)); } else { PutModule("Access denied!"); } } - else if (var == "defaultchanmodes") { - user->SetDefaultChanModes(value); - PutModule("DefaultChanModes = " + value); + else if (sVar == "defaultchanmodes") { + pUser->SetDefaultChanModes(sValue); + PutModule("DefaultChanModes = " + sValue); } - else if (var == "quitmsg") { - user->SetQuitMsg(value); - PutModule("QuitMsg = " + value); + else if (sVar == "quitmsg") { + pUser->SetQuitMsg(sValue); + PutModule("QuitMsg = " + sValue); } - else if (var == "buffercount") { - unsigned int i = value.ToUInt(); - user->SetBufferCount(i); - PutModule("BufferCount = " + value); + else if (sVar == "buffercount") { + unsigned int i = sValue.ToUInt(); + pUser->SetBufferCount(i); + PutModule("BufferCount = " + sValue); } - else if (var == "keepbuffer") { - bool b = value.ToBool(); - user->SetKeepBuffer(b); + else if (sVar == "keepbuffer") { + bool b = sValue.ToBool(); + pUser->SetKeepBuffer(b); PutModule("KeepBuffer = " + CString(b)); } - else if (var == "password") { + else if (sVar == "password") { const CString sSalt = CUtils::GetSalt(); - const CString sHash = CUser::SaltedHash(value, sSalt); - user->SetPass(sHash, CUser::HASH_DEFAULT, sSalt); + const CString sHash = CUser::SaltedHash(sValue, sSalt); + pUser->SetPass(sHash, CUser::HASH_DEFAULT, sSalt); PutModule("Password has been changed!"); } - else if (var == "maxjoins") { - unsigned int i = value.ToUInt(); - user->SetMaxJoins(i); - PutModule("MaxJoins = " + CString(user->MaxJoins())); + else if (sVar == "maxjoins") { + unsigned int i = sValue.ToUInt(); + pUser->SetMaxJoins(i); + PutModule("MaxJoins = " + CString(pUser->MaxJoins())); } - else if (var == "jointries") { - unsigned int i = value.ToUInt(); - user->SetJoinTries(i); - PutModule("JoinTries = " + CString(user->JoinTries())); + else if (sVar == "jointries") { + unsigned int i = sValue.ToUInt(); + pUser->SetJoinTries(i); + PutModule("JoinTries = " + CString(pUser->JoinTries())); } - else if (var == "admin") { - if(m_pUser->IsAdmin() && user != m_pUser) { - bool b = value.ToBool(); - user->SetAdmin(b); - PutModule("Admin = " + CString(user->IsAdmin())); + else if (sVar == "admin") { + if(m_pUser->IsAdmin() && pUser != m_pUser) { + bool b = sValue.ToBool(); + pUser->SetAdmin(b); + PutModule("Admin = " + CString(pUser->IsAdmin())); } else { PutModule("Access denied!"); } } - else if (var == "prependtimestamp") { - bool b = value.ToBool(); - user->SetTimestampPrepend(b); + else if (sVar == "prependtimestamp") { + bool b = sValue.ToBool(); + pUser->SetTimestampPrepend(b); PutModule("PrependTimestamp = " + CString(b)); } - else if (var == "appendtimestamp") { - bool b = value.ToBool(); - user->SetTimestampAppend(b); + else if (sVar == "appendtimestamp") { + bool b = sValue.ToBool(); + pUser->SetTimestampAppend(b); PutModule("AppendTimestamp = " + CString(b)); } - else if (var == "dccvhost") { - if(!user->DenySetVHost() || m_pUser->IsAdmin()) { - user->SetDCCVHost(value); - PutModule("DCCVHost = " + value); + else if (sVar == "dccvhost") { + if(!pUser->DenySetVHost() || m_pUser->IsAdmin()) { + pUser->SetDCCVHost(sValue); + PutModule("DCCVHost = " + sValue); } else { PutModule("Access denied!"); } @@ -328,86 +331,86 @@ } void GetChan(const CString& sLine) { - const CString var = sLine.Token(1).AsLower(); - CString username = sLine.Token(2); - CString chan = sLine.Token(3, true); + const CString sVar = sLine.Token(1).AsLower(); + CString sUsername = sLine.Token(2); + CString sChan = sLine.Token(3, true); - if (var.empty()) { + if (sVar.empty()) { PutModule("Usage: getchan <variable> [username] <chan>"); return; } - if (chan.empty()) { - chan = username; - username = ""; + if (sChan.empty()) { + sChan = sUsername; + sUsername = ""; } - if (username.empty()) { - username = m_pUser->GetUserName(); + if (sUsername.empty()) { + sUsername = m_pUser->GetUserName(); } - CUser* user = GetUser(username); - if (!user) + CUser* pUser = GetUser(sUsername); + if (!pUser) return; - CChan* pChan = user->FindChan(chan); + CChan* pChan = pUser->FindChan(sChan); if (!pChan) { - PutModule("Error: Channel not found: " + chan); + PutModule("Error: Channel not found: " + sChan); return; } - if (var == "defmodes") + if (sVar == "defmodes") PutModule("DefModes = " + pChan->GetDefaultModes()); - else if (var == "buffer") + else if (sVar == "buffer") PutModule("Buffer = " + CString(pChan->GetBufferCount())); - else if (var == "inconfig") + else if (sVar == "inconfig") PutModule("InConfig = " + pChan->InConfig()); - else if (var == "keepbuffer") + else if (sVar == "keepbuffer") PutModule("KeepBuffer = " + pChan->KeepBuffer()); - else if (var == "detached") + else if (sVar == "detached") PutModule("Detached = " + pChan->IsDetached()); - else if (var == "key") + else if (sVar == "key") PutModule("Key = " + pChan->GetKey()); else PutModule("Error: Unknown variable"); } void SetChan(const CString& sLine) { - const CString var = sLine.Token(1).AsLower(); - CString username = sLine.Token(2); - CString chan = sLine.Token(3); - CString value = sLine.Token(4, true); + const CString sVar = sLine.Token(1).AsLower(); + CString sUsername = sLine.Token(2); + CString sChan = sLine.Token(3); + CString sValue = sLine.Token(4, true); if (value.empty()) { PutModule("Usage: setchan <variable> <username> <chan> <value>"); return; } - CUser* user = GetUser(username); - if (!user) + CUser* user = GetUser(sUsername); + if (!pUser) return; - CChan* pChan = user->FindChan(chan); + CChan* pChan = pUser->FindChan(sChan); if (!pChan) { - PutModule("Error: Channel not found: " + chan); + PutModule("Error: Channel not found: " + sChan); return; } - if (var == "defmodes") { - pChan->SetDefaultModes(value); - PutModule("DefModes = " + value); - } else if (var == "buffer") { - unsigned int i = value.ToUInt(); + if (sVar == "defmodes") { + pChan->SetDefaultModes(sValue); + PutModule("DefModes = " + sValue); + } else if (sVar == "buffer") { + unsigned int i = sValue.ToUInt(); pChan->SetBufferCount(i); PutModule("Buffer = " + CString(i)); - } else if (var == "inconfig") { - bool b = value.ToBool(); + } else if (sVar == "inconfig") { + bool b = sValue.ToBool(); pChan->SetInConfig(b); PutModule("InConfig = " + CString(b)); - } else if (var == "keepbuffer") { - bool b = value.ToBool(); + } else if (sVar == "keepbuffer") { + bool b = sValue.ToBool(); pChan->SetKeepBuffer(b); PutModule("KeepBuffer = " + CString(b)); - } else if (var == "detached") { - bool b = value.ToBool(); + } else if (sVar == "detached") { + bool b = sValue.ToBool(); if (pChan->IsDetached() != b) { if (b) pChan->DetachUser(); @@ -415,9 +418,9 @@ pChan->AttachUser(); } PutModule("Detached = " + CString(b)); - } else if (var == "key") { - pChan->SetKey(value); - PutModule("Key = " + value); + } else if (sVar == "key") { + pChan->SetKey(sValue); + PutModule("Key = " + sValue); } else PutModule("Error: Unknown variable"); } @@ -567,33 +570,28 @@ } void AddServer(const CString& sLine) { - CString username = sLine.Token(1); - CString server = sLine.Token(2, true); + CString sUsername = sLine.Token(1); + const CString sServer = sLine.Token(2, true); - if (server.empty()) { + if (sServer.empty()) { PutModule("Usage: addserver <username> <server>"); return; } - CUser* user = GetUser(username); - if (!user) + CUser* pUser = GetUser(sUsername); + if (!pUser) return; - user->AddServer(server); - PutModule("Added IRC Server: " + server); + pUser->AddServer(sServer); + PutModule("Added IRC Server: " + sServer); } - + void LoadModuleForUser(const CString& sLine) { CString sUsername = sLine.Token(1); CString sModName = sLine.Token(2); - CString sArgs = sLine.Token(3, true); + CString sArgs = sLine.Token(3, true); CString sModRet; - if (!m_pUser->IsAdmin()) { - PutModule("Error: You need to have admin rights to modify users!"); - return; - } - if (sModName.empty()) { PutModule("Usage: loadmodule <username> <modulename>"); return; @@ -618,19 +616,14 @@ } } else { PutModule("Unable to load module [" + sModName + "] because it is already loaded"); - } + } } void UnLoadModuleForUser(const CString& sLine) { CString sUsername = sLine.Token(1); CString sModName = sLine.Token(2); - CString sArgs = sLine.Token(3, true); + CString sArgs = sLine.Token(3, true); CString sModRet; - - if (!m_pUser->IsAdmin()) { - PutModule("Error: You need to have admin rights to modify users!"); - return; - } if (sModName.empty()) { PutModule("Usage: loadmodule <username> <modulename>"); @@ -645,9 +638,9 @@ PutModule("Unable to unload module [" + sModName + "] [" + sModRet + "]"); } else { PutModule("Unloaded module [" + sModName + "] [" + sModRet + "]"); - } + } } - + void ListModuleForUser(const CString& sLine) { CString sUsername = sLine.Token(1, true); @@ -656,7 +649,7 @@ PutModule("Usage: listmods <username of other user>"); return; } - + CModules& Modules = pUser->GetModules(); if (!Modules.size()) { @@ -675,9 +668,9 @@ PutModule(Table); } - - } + } + typedef void (CAdminMod::* fn)(const CString&); typedef std::map<CString, fn> function_map; function_map fnmap_; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cf...@us...> - 2010-03-28 21:06:46
|
Revision: 1847 http://znc.svn.sourceforge.net/znc/?rev=1847&view=rev Author: cflakes Date: 2010-03-28 21:06:40 +0000 (Sun, 28 Mar 2010) Log Message: ----------- Fix admin.cpp. Search and replace isn't what it used to be. Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2010-03-28 21:04:25 UTC (rev 1846) +++ trunk/modules/admin.cpp 2010-03-28 21:06:40 UTC (rev 1847) @@ -379,12 +379,12 @@ CString sChan = sLine.Token(3); CString sValue = sLine.Token(4, true); - if (value.empty()) { + if (sValue.empty()) { PutModule("Usage: setchan <variable> <username> <chan> <value>"); return; } - CUser* user = GetUser(sUsername); + CUser* pUser = GetUser(sUsername); if (!pUser) return; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cf...@us...> - 2010-03-31 21:41:40
|
Revision: 1864 http://znc.svn.sourceforge.net/znc/?rev=1864&view=rev Author: cflakes Date: 2010-03-31 21:41:30 +0000 (Wed, 31 Mar 2010) Log Message: ----------- Add missing DenyLoadMod check in admin.cpp, following up revision 1845. Patch by Nirjen, thanks again! Revision Links: -------------- http://znc.svn.sourceforge.net/znc/?rev=1845&view=rev Modified Paths: -------------- trunk/modules/admin.cpp Modified: trunk/modules/admin.cpp =================================================================== --- trunk/modules/admin.cpp 2010-03-31 18:48:48 UTC (rev 1863) +++ trunk/modules/admin.cpp 2010-03-31 21:41:30 UTC (rev 1864) @@ -601,6 +601,11 @@ if (!pUser) return; + if (pUser->DenyLoadMod() && !m_pUser->IsAdmin()) { + PutModule("Loading modules has been denied"); + return; + } + CModule *pMod = (pUser)->GetModules().FindModule(sModName); if (!pMod) { if (!(pUser)->GetModules().LoadModule(sModName, sArgs, pUser, sModRet, false)) { @@ -633,6 +638,11 @@ CUser* pUser = GetUser(sUsername); if (!pUser) return; + + if (pUser->DenyLoadMod() && !m_pUser->IsAdmin()) { + PutModule("Loading modules has been denied"); + return; + } if (!(pUser)->GetModules().UnloadModule(sModName, sModRet)) { PutModule("Unable to unload module [" + sModName + "] [" + sModRet + "]"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |