Added SHUTDOWN user command by way of an exception

git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@154 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
prozacx
2005-04-19 18:26:18 +00:00
parent fb2888d007
commit 3fe14f6ed2
3 changed files with 35 additions and 1 deletions
+3
View File
@@ -453,6 +453,8 @@ void CUserSock::UserCommand(const string& sLine) {
PutStatus("Detaching you from [" + sChan + "]");
pChan->DetachUser();
}
} else if (strcasecmp(sCommand.c_str(), "SHUTDOWN") == 0) {
throw CException(CException::EX_Shutdown);
} else if (strcasecmp(sCommand.c_str(), "JUMP") == 0) {
if (m_pUser) {
if (m_pIRCSock) {
@@ -788,6 +790,7 @@ void CUserSock::HelpUser() {
Table.AddRow(); Table.SetCell("Command", "ListNicks"); Table.SetCell("Arguments", "<#chan>"); Table.SetCell("Description", "List all nicks on a channel");
Table.AddRow(); Table.SetCell("Command", "Topics"); Table.SetCell("Arguments", ""); Table.SetCell("Description", "Show topics in all channels");
Table.AddRow(); Table.SetCell("Command", "SetBuffer"); Table.SetCell("Arguments", "<#chan> [linecount]"); Table.SetCell("Description", "Set the buffer count for a channel");
Table.AddRow(); Table.SetCell("Command", "Shutdown"); Table.SetCell("Arguments", ""); Table.SetCell("Description", "Shutdown znc completely");
Table.AddRow(); Table.SetCell("Command", "Jump"); Table.SetCell("Arguments", ""); Table.SetCell("Description", "Jump to the next server in the list");
Table.AddRow(); Table.SetCell("Command", "Send"); Table.SetCell("Arguments", "<nick> <file>"); Table.SetCell("Description", "Send a shell file to a nick on IRC");
Table.AddRow(); Table.SetCell("Command", "Get"); Table.SetCell("Arguments", "<file>"); Table.SetCell("Description", "Send a shell file to yourself");
+18
View File
@@ -65,6 +65,24 @@ protected:
};
class CException {
public:
typedef enum {
EX_Shutdown,
} EType;
CException(EType e) {
m_eType = e;
}
virtual ~CException() {}
EType GetType() const { return m_eType; }
private:
protected:
EType m_eType;
};
class CTable : public vector<map<string, string>* > {
public:
CTable();
+14 -1
View File
@@ -198,7 +198,20 @@ int main(int argc, char** argv) {
sigaction(SIGSEGV, &sa, (struct sigaction *)NULL);
sigaction(SIGTERM, &sa, (struct sigaction *)NULL);
int iRet = pZNC->Loop();
int iRet = 0;
try {
iRet = pZNC->Loop();
} catch (CException e) {
// EX_Shutdown is thrown to exit
switch (e.GetType()) {
case CException::EX_Shutdown:
iRet = 0;
default:
iRet = 1;
}
}
delete pZNC;
return iRet;