|
|||
|
|||
|
#include <cmd_qline.h>
Inheritance diagram for cmd_qline:


Public Member Functions | |
| cmd_qline (InspIRCd *Instance) | |
| Constructor for qline. | |
| CmdResult | Handle (const char **parameters, int pcnt, userrec *user) |
| Handle command. | |
These command handlers can be reloaded by the core, and handle basic RFC1459 commands. Commands within modules work the same way, however, they can be fully unloaded, where these may not.
Definition at line 27 of file cmd_qline.h.
|
|
Constructor for qline.
Definition at line 32 of file cmd_qline.h. References command_t::syntax.
|
|
||||||||||||||||
|
Handle command.
Implements command_t. Definition at line 28 of file cmd_qline.cpp. References XLineManager::add_qline(), XLineManager::apply_lines(), APPLY_PERM_ONLY, APPLY_QLINES, CMD_FAILURE, CMD_SUCCESS, XLineManager::del_qline(), InspIRCd::Duration(), FOREACH_MOD, I_OnAddQLine, I_OnDelQLine, userrec::nick, InspIRCd::NickMatchesEveryone(), command_t::ServerInstance, InspIRCd::SNO, InspIRCd::Time(), InspIRCd::TimeString(), userrec::WriteServ(), SnomaskManager::WriteToSnoMask(), and InspIRCd::XLines. 00029 { 00030 if (pcnt >= 3) 00031 { 00032 if (ServerInstance->NickMatchesEveryone(parameters[0],user)) 00033 return CMD_FAILURE; 00034 00035 if (strchr(parameters[0],'@') || strchr(parameters[0],'!') || strchr(parameters[0],'.')) 00036 { 00037 user->WriteServ("NOTICE %s :*** A Q-Line only bans a nick pattern, not a nick!user@host pattern.",user->nick); 00038 return CMD_FAILURE; 00039 } 00040 00041 long duration = ServerInstance->Duration(parameters[1]); 00042 if (ServerInstance->XLines->add_qline(duration,user->nick,parameters[2],parameters[0])) 00043 { 00044 int to_apply = APPLY_QLINES; 00045 FOREACH_MOD(I_OnAddQLine,OnAddQLine(duration, user, parameters[2], parameters[0])); 00046 if (!duration) 00047 { 00048 to_apply |= APPLY_PERM_ONLY; 00049 ServerInstance->SNO->WriteToSnoMask('x',"%s added permanent Q-line for %s.",user->nick,parameters[0]); 00050 } 00051 else 00052 { 00053 time_t c_requires_crap = duration + ServerInstance->Time(); 00054 ServerInstance->SNO->WriteToSnoMask('x',"%s added timed Q-line for %s, expires on %s",user->nick,parameters[0], 00055 ServerInstance->TimeString(c_requires_crap).c_str()); 00056 } 00057 ServerInstance->XLines->apply_lines(to_apply); 00058 } 00059 else 00060 { 00061 user->WriteServ("NOTICE %s :*** Q-Line for %s already exists",user->nick,parameters[0]); 00062 } 00063 } 00064 else 00065 { 00066 if (ServerInstance->XLines->del_qline(parameters[0])) 00067 { 00068 FOREACH_MOD(I_OnDelQLine,OnDelQLine(user, parameters[0])); 00069 ServerInstance->SNO->WriteToSnoMask('x',"%s Removed Q-line on %s.",user->nick,parameters[0]); 00070 } 00071 else 00072 { 00073 user->WriteServ("NOTICE %s :*** Q-Line %s not found in list, try /stats q.",user->nick,parameters[0]); 00074 return CMD_FAILURE; 00075 } 00076 } 00077 00078 return CMD_SUCCESS; 00079 }
|