mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-07-08 03:23:12 +02:00
- Added SVSWATCH: allows U-lined server to modify the watch list of a user.
- Added SVSSILENCE: allows U-lined server to modify the silence list of a user.
This commit is contained in:
@@ -1948,3 +1948,5 @@ seen. gmtime warning still there
|
||||
- Made set::allow-userhost-change force-rejoin work.
|
||||
- Fixed chmode +u bug when chanop was parting but wasn't sent to normal users.
|
||||
- Added allow-userhost-change checks to /vhost.
|
||||
- Added SVSWATCH: allows U-lined server to modify the watch list of a user.
|
||||
- Added SVSSILENCE: allows U-lined server to modify the silence list of a user.
|
||||
|
||||
@@ -69,8 +69,8 @@ help Svscmds {
|
||||
" a specific command.";
|
||||
" -";
|
||||
" ==-----------oOo-----------==";
|
||||
" SVSNICK SVSMODE SVSKILL";
|
||||
" SVSNOOP SVSJOIN SVSPART";
|
||||
" SVSNICK SVSMODE SVSKILL SVSWATCH";
|
||||
" SVSNOOP SVSJOIN SVSPART SVSSILENCE";
|
||||
" SVSO SWHOIS SQLINE SVSNLINE";
|
||||
" UNSQLINE SVS2MODE SVSFLINE";
|
||||
" SVSMOTD SVSTIME SVSLUSERS";
|
||||
@@ -1117,3 +1117,18 @@ help Svslusers {
|
||||
" Example: SVSLUSERS irc.test.com -1 200";
|
||||
};
|
||||
|
||||
help Svswatch {
|
||||
" Changes the WATCH list of a user.";
|
||||
" Must be sent trough an U:Lined server.";
|
||||
" Syntax: SVSWATCH <nick> :<watch parameters>";
|
||||
" Example: SVSWATCH Blah :+Blih!*@* +Bluh!*@* +Bleh!*@*.com";
|
||||
};
|
||||
|
||||
help Svssilence {
|
||||
" Changes the SILENCE list of a user.";
|
||||
" Must be sent trough an U:Lined server.";
|
||||
" In contrast to the SILENCE command, you can add/remove";
|
||||
" multiple entries in one line.";
|
||||
" Syntax: SVSSILENCE <nick> :<silence parameters>";
|
||||
" Example: SILENCE Blah :+*!*@*.com +*!*@*.bla.co.uk";
|
||||
};
|
||||
|
||||
@@ -180,6 +180,7 @@ extern void set_snomask(aClient *sptr, char *snomask);
|
||||
extern char *get_sno_str(aClient *sptr);
|
||||
/* for services */
|
||||
extern void del_invite(aClient *, aChannel *);
|
||||
extern int add_silence(aClient *, char *, int);
|
||||
extern int del_silence(aClient *, char *);
|
||||
extern void send_user_joins(aClient *, aClient *);
|
||||
extern void clean_channelname(char *);
|
||||
|
||||
+8
-1
@@ -47,7 +47,8 @@ MOD_FILES=SRC/L_COMMANDS.OBJ SRC/M_CHGHOST.OBJ SRC/M_SDESC.OBJ SRC/M_SETIDENT.OB
|
||||
SRC/M_SQLINE.OBJ SRC/M_KILL.OBJ SRC/M_TSCTL.OBJ SRC/M_UNKLINE.OBJ \
|
||||
SRC/M_UNSQLINE.OBJ SRC/M_UNZLINE.OBJ SRC/M_WHOIS.OBJ \
|
||||
SRC/SCAN.OBJ SRC/SCAN_SOCKS.OBJ SRC/SCAN_HTTP.OBJ SRC/M_TKL.OBJ SRC/M_VHOST.OBJ \
|
||||
SRC/M_CYCLE.OBJ SRC/M_SVSJOIN.OBJ SRC/M_SVSPART.OBJ SRC/M_SVSLUSERS.OBJ
|
||||
SRC/M_CYCLE.OBJ SRC/M_SVSJOIN.OBJ SRC/M_SVSPART.OBJ SRC/M_SVSLUSERS.OBJ \
|
||||
SRC/M_SVSWATCH.OBJ SRC/M_SVSSILENCE.OBJ
|
||||
|
||||
ALL: CONF UNREAL.EXE WIRCD.EXE
|
||||
|
||||
@@ -365,6 +366,12 @@ src/m_svspart.obj: src/modules/m_svspart.c $(INCLUDES)
|
||||
src/m_svslusers.obj: src/modules/m_svslusers.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/m_svslusers.c
|
||||
|
||||
src/m_svswatch.obj: src/modules/m_svswatch.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/m_svswatch.c
|
||||
|
||||
src/m_svssilence.obj: src/modules/m_svssilence.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/m_svssilence.c
|
||||
|
||||
src/scan.obj: src/modules/scan.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/scan.c
|
||||
|
||||
|
||||
+8
-1
@@ -50,7 +50,8 @@ MOD_FILES=SRC/L_COMMANDS.OBJ SRC/M_CHGHOST.OBJ SRC/M_SDESC.OBJ SRC/M_SETIDENT.OB
|
||||
SRC/M_SQLINE.OBJ SRC/M_KILL.OBJ SRC/M_TSCTL.OBJ SRC/M_UNKLINE.OBJ \
|
||||
SRC/M_UNSQLINE.OBJ SRC/M_UNZLINE.OBJ SRC/M_WHOIS.OBJ \
|
||||
SRC/SCAN.OBJ SRC/SCAN_SOCKS.OBJ SRC/SCAN_HTTP.OBJ SRC/M_TKL.OBJ SRC/M_VHOST.OBJ \
|
||||
SRC/M_CYCLE.OBJ SRC/M_SVSJOIN.OBJ SRC/M_SVSPART.OBJ SRC/M_SVSLUSERS.OBJ
|
||||
SRC/M_CYCLE.OBJ SRC/M_SVSJOIN.OBJ SRC/M_SVSPART.OBJ SRC/M_SVSLUSERS.OBJ \
|
||||
SRC/M_SVSWATCH.OBJ SRC/M_SVSSILENCE.OBJ
|
||||
|
||||
ALL: CONF UNREAL.EXE WIRCD.EXE
|
||||
|
||||
@@ -368,6 +369,12 @@ src/m_svspart.obj: src/modules/m_svspart.c $(INCLUDES)
|
||||
src/m_svslusers.obj: src/modules/m_svslusers.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/m_svslusers.c
|
||||
|
||||
src/m_svswatch.obj: src/modules/m_svswatch.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/m_svswatch.c
|
||||
|
||||
src/m_svssilence.obj: src/modules/m_svssilence.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/m_svssilence.c
|
||||
|
||||
src/scan.obj: src/modules/scan.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/scan.c
|
||||
|
||||
|
||||
@@ -57,7 +57,8 @@ MOD_FILES=SRC/L_COMMANDS.OBJ SRC/M_CHGHOST.OBJ SRC/M_SDESC.OBJ SRC/M_SETIDENT.OB
|
||||
SRC/M_SQLINE.OBJ SRC/M_KILL.OBJ SRC/M_TSCTL.OBJ SRC/M_UNKLINE.OBJ \
|
||||
SRC/M_UNSQLINE.OBJ SRC/M_UNZLINE.OBJ SRC/M_WHOIS.OBJ \
|
||||
SRC/SCAN.OBJ SRC/SCAN_SOCKS.OBJ SRC/SCAN_HTTP.OBJ SRC/M_TKL.OBJ SRC/M_VHOST.OBJ \
|
||||
SRC/M_CYCLE.OBJ SRC/M_SVSJOIN.OBJ SRC/M_SVSPART.OBJ SRC/M_SVSLUSERS.OBJ
|
||||
SRC/M_CYCLE.OBJ SRC/M_SVSJOIN.OBJ SRC/M_SVSPART.OBJ SRC/M_SVSLUSERS.OBJ \
|
||||
SRC/M_SVSWATCH.OBJ SRC/M_SVSSILENCE.OBJ
|
||||
|
||||
ALL: CONF UNREAL.EXE WIRCD.EXE
|
||||
|
||||
@@ -378,6 +379,12 @@ src/m_svspart.obj: src/modules/m_svspart.c $(INCLUDES)
|
||||
src/m_svslusers.obj: src/modules/m_svslusers.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/m_svslusers.c
|
||||
|
||||
src/m_svswatch.obj: src/modules/m_svswatch.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/m_svswatch.c
|
||||
|
||||
src/m_svssilence.obj: src/modules/m_svssilence.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/m_svssilence.c
|
||||
|
||||
src/scan.obj: src/modules/scan.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/scan.c
|
||||
|
||||
|
||||
@@ -52,7 +52,8 @@ MOD_FILES=SRC/L_COMMANDS.OBJ SRC/M_CHGHOST.OBJ SRC/M_SDESC.OBJ SRC/M_SETIDENT.OB
|
||||
SRC/M_SQLINE.OBJ SRC/M_KILL.OBJ SRC/M_TSCTL.OBJ SRC/M_UNKLINE.OBJ \
|
||||
SRC/M_UNSQLINE.OBJ SRC/M_UNZLINE.OBJ SRC/M_WHOIS.OBJ \
|
||||
SRC/SCAN.OBJ SRC/SCAN_SOCKS.OBJ SRC/SCAN_HTTP.OBJ SRC/M_TKL.OBJ SRC/M_VHOST.OBJ \
|
||||
SRC/M_CYCLE.OBJ SRC/M_SVSJOIN.OBJ SRC/M_SVSPART.OBJ SRC/M_SVSLUSERS.OBJ
|
||||
SRC/M_CYCLE.OBJ SRC/M_SVSJOIN.OBJ SRC/M_SVSPART.OBJ SRC/M_SVSLUSERS.OBJ \
|
||||
SRC/M_SVSWATCH.OBJ SRC/M_SVSSILENCE.OBJ
|
||||
|
||||
ALL: CONF UNREAL.EXE WIRCD.EXE
|
||||
|
||||
@@ -373,6 +374,12 @@ src/m_svspart.obj: src/modules/m_svspart.c $(INCLUDES)
|
||||
src/m_svslusers.obj: src/modules/m_svslusers.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/m_svslusers.c
|
||||
|
||||
src/m_svswatch.obj: src/modules/m_svswatch.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/m_svswatch.c
|
||||
|
||||
src/m_svssilence.obj: src/modules/m_svssilence.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/m_svssilence.c
|
||||
|
||||
src/scan.obj: src/modules/scan.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) src/modules/scan.c
|
||||
|
||||
|
||||
+10
-2
@@ -33,7 +33,7 @@ R_MODULES=m_sethost.so m_chghost.so m_chgident.so m_setname.so \
|
||||
m_quit.so m_rakill.so m_rping.so m_sendumode.so m_sqline.so \
|
||||
m_tsctl.so m_unkline.so m_unsqline.so m_unzline.so m_whois.so \
|
||||
m_tkl.so m_vhost.so m_cycle.so m_svsjoin.so m_svspart.so \
|
||||
scan.so scan_socks.so scan_http.so web/httpd.so
|
||||
m_svswatch.so m_svssilence.so scan.so scan_socks.so scan_http.so web/httpd.so
|
||||
|
||||
COMMANDS=m_sethost.c m_chghost.c m_chgident.c m_setname.c m_setident.c \
|
||||
m_sdesc.c m_svsmode.c m_swhois.c m_svsmotd.c m_svsnline.c \
|
||||
@@ -43,7 +43,7 @@ COMMANDS=m_sethost.c m_chghost.c m_chgident.c m_setname.c m_setident.c \
|
||||
m_quit.c m_rakill.c m_rping.c m_sendumode.c m_sqline.c \
|
||||
m_tsctl.c m_unkline.c m_unsqline.c m_unzline.c m_whois.c \
|
||||
m_tkl.c m_vhost.c m_cycle.c m_svsjoin.c m_svspart.c \
|
||||
m_svslusers.c
|
||||
m_svslusers.c m_svswatch.c m_svssilence.c
|
||||
|
||||
|
||||
MODULES=commands.so $(R_MODULES)
|
||||
@@ -233,6 +233,14 @@ m_svslusers.so: m_svslusers.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) $(MODULEFLAGS) -DDYNAMIC_LINKING \
|
||||
-o m_svslusers.so m_svslusers.c
|
||||
|
||||
m_svswatch.so: m_svswatch.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) $(MODULEFLAGS) -DDYNAMIC_LINKING \
|
||||
-o m_svswatch.so m_svswatch.c
|
||||
|
||||
m_svssilence.so: m_svssilence.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) $(MODULEFLAGS) -DDYNAMIC_LINKING \
|
||||
-o m_svssilence.so m_svssilence.c
|
||||
|
||||
scan.so: scan.c $(INCLUDES)
|
||||
$(CC) $(CFLAGS) $(MODULEFLAGS) -DDYNAMIC_LINKING \
|
||||
-o scan.so scan.c
|
||||
|
||||
@@ -93,6 +93,7 @@ extern int m_unzline_Init(ModuleInfo *modinfo), m_unkline_Init(ModuleInfo *modin
|
||||
extern int m_sqline_Init(ModuleInfo *modinfo), m_unsqline_Init(ModuleInfo *modinfo), m_tkl_Init(ModuleInfo *modinfo);
|
||||
extern int m_vhost_Init(ModuleInfo *modinfo), m_cycle_Init(ModuleInfo *modinfo), m_svsjoin_Init(ModuleInfo *modinfo);
|
||||
extern int m_svspart_Init(ModuleInfo *modinfo), m_svslusers_Init(ModuleInfo *modinfo);
|
||||
extern int m_svswatch_Init(ModuleInfo *modinfo), m_svssilence_Init(ModuleInfo *modinfo);
|
||||
#ifdef GUEST
|
||||
extern int m_guest_Init(ModuleInfo *modinfo);
|
||||
#endif
|
||||
@@ -115,6 +116,7 @@ extern int m_unzline_Load(int module_load), m_unkline_Load(int module_load);
|
||||
extern int m_sqline_Load(int module_load), m_unsqline_Load(int module_load), m_tkl_Load(int module_load);
|
||||
extern int m_vhost_Load(int module_load), m_cycle_Load(int module_load), m_svsjoin_Load(int module_load);
|
||||
extern int m_svspart_Load(int module_load), m_svslusers_Load(int module_load);
|
||||
extern int m_svswatch_Load(int module_load), m_svssilence_Load(int module_load);
|
||||
#ifdef GUEST
|
||||
extern int m_guest_Load(int module_load);
|
||||
#endif
|
||||
@@ -133,6 +135,7 @@ extern int m_pingpong_Unload(), m_oper_Unload(), m_akill_Unload(), m_rakill_Unlo
|
||||
extern int m_unzline_Unload(), m_unkline_Unload();
|
||||
extern int m_sqline_Unload(), m_unsqline_Unload(), m_tkl_Unload(), m_vhost_Unload();
|
||||
extern int m_cycle_Unload(), m_svsjoin_Unload(), m_svspart_Unload(), m_svslusers_Unload();
|
||||
extern int m_svswatch_Unload(), m_svssilence_Unload();
|
||||
#ifdef GUEST
|
||||
extern int m_guest_Unload();
|
||||
#endif
|
||||
@@ -218,6 +221,8 @@ int l_commands_Init(ModuleInfo *modinfo)
|
||||
m_cycle_Init(&ModCmdsInfo);
|
||||
m_svsjoin_Init(&ModCmdsInfo);
|
||||
m_svspart_Init(&ModCmdsInfo);
|
||||
m_svswatch_Init(&ModCmdsInfo);
|
||||
m_svssilence_Init(&ModCmdsInfo);
|
||||
m_svslusers_Init(&ModCmdsInfo);
|
||||
#ifdef GUEST
|
||||
m_guest_Init(&ModCmdsInfo);
|
||||
@@ -276,6 +281,8 @@ int l_commands_Load(int module_load)
|
||||
m_cycle_Load(module_load);
|
||||
m_svsjoin_Load(module_load);
|
||||
m_svspart_Load(module_load);
|
||||
m_svswatch_Load(module_load);
|
||||
m_svssilence_Load(module_load);
|
||||
m_svslusers_Load(module_load);
|
||||
#ifdef GUEST
|
||||
m_guest_Load(module_load);
|
||||
@@ -335,6 +342,8 @@ int l_commands_Unload(int module_unload)
|
||||
m_cycle_Unload();
|
||||
m_svsjoin_Unload();
|
||||
m_svspart_Unload();
|
||||
m_svswatch_Unload();
|
||||
m_svssilence_Unload();
|
||||
m_svslusers_Unload();
|
||||
#ifdef GUEST
|
||||
m_guest_Unload();
|
||||
|
||||
@@ -0,0 +1,161 @@
|
||||
/*
|
||||
* Unreal Internet Relay Chat Daemon, src/modules/m_svssilence.c
|
||||
* (C) 2003 Bram Matthys (Syzop) and the UnrealIRCd Team
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "struct.h"
|
||||
#include "common.h"
|
||||
#include "sys.h"
|
||||
#include "numeric.h"
|
||||
#include "msg.h"
|
||||
#include "channel.h"
|
||||
#include <time.h>
|
||||
#include <sys/stat.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#ifdef _WIN32
|
||||
#include <io.h>
|
||||
#endif
|
||||
#include <sys/timeb.h>
|
||||
#include <fcntl.h>
|
||||
#include "h.h"
|
||||
#include "proto.h"
|
||||
#ifdef STRIPBADWORDS
|
||||
#include "badwords.h"
|
||||
#endif
|
||||
#ifdef _WIN32
|
||||
#include "version.h"
|
||||
#endif
|
||||
|
||||
DLLFUNC int m_svssilence(aClient *cptr, aClient *sptr, int parc, char *parv[]);
|
||||
|
||||
/* Place includes here */
|
||||
#define MSG_SVSSILENCE "SVSSILENCE"
|
||||
#define TOK_SVSSILENCE "Bs"
|
||||
|
||||
#ifndef DYNAMIC_LINKING
|
||||
ModuleHeader m_svssilence_Header
|
||||
#else
|
||||
#define m_svssilence_Header Mod_Header
|
||||
ModuleHeader Mod_Header
|
||||
#endif
|
||||
= {
|
||||
"svssilence", /* Name of module */
|
||||
"$Id$", /* Version */
|
||||
"command /svssilence", /* Short description of module */
|
||||
"3.2-b8-1",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
/* The purpose of these ifdefs, are that we can "static" link the ircd if we
|
||||
* want to
|
||||
*/
|
||||
|
||||
/* This is called on module init, before Server Ready */
|
||||
#ifdef DYNAMIC_LINKING
|
||||
DLLFUNC int Mod_Init(ModuleInfo *modinfo)
|
||||
#else
|
||||
int m_svssilence_Init(ModuleInfo *modinfo)
|
||||
#endif
|
||||
{
|
||||
/*
|
||||
* We call our add_Command crap here
|
||||
*/
|
||||
add_Command(MSG_SVSSILENCE, TOK_SVSSILENCE, m_svssilence, MAXPARA);
|
||||
return MOD_SUCCESS;
|
||||
|
||||
}
|
||||
|
||||
/* Is first run when server is 100% ready */
|
||||
#ifdef DYNAMIC_LINKING
|
||||
DLLFUNC int Mod_Load(int module_load)
|
||||
#else
|
||||
int m_svssilence_Load(int module_load)
|
||||
#endif
|
||||
{
|
||||
return MOD_SUCCESS;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* Called when module is unloaded */
|
||||
#ifdef DYNAMIC_LINKING
|
||||
DLLFUNC int Mod_Unload(int module_unload)
|
||||
#else
|
||||
int m_svssilence_Unload(int module_unload)
|
||||
#endif
|
||||
{
|
||||
if (del_Command(MSG_SVSSILENCE, TOK_SVSSILENCE, m_svssilence) < 0)
|
||||
{
|
||||
sendto_realops("Failed to delete commands when unloading %s",
|
||||
m_svssilence_Header.name);
|
||||
}
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
/* m_svssilence()
|
||||
* written by Syzop (copied a lot from m_silence),
|
||||
* suggested by <??>.
|
||||
* parv[0] - sender
|
||||
* parv[1] - target nick
|
||||
* parv[2] - space delimited silence list (+Blah +Blih -Bluh etc)
|
||||
* SERVER DISTRIBUTION:
|
||||
* In contrast to the normal SILENCE command, this is sent to all servers
|
||||
* because it can/will add&remove multiple silence entries at once.
|
||||
*/
|
||||
CMD_FUNC(m_svssilence)
|
||||
{
|
||||
aClient *acptr;
|
||||
int mine;
|
||||
char *p, *cp, c;
|
||||
|
||||
if (!IsULine(sptr))
|
||||
return 0;
|
||||
|
||||
if (parc < 3 || BadPtr(parv[2]) || !(acptr = find_person(parv[1], NULL)))
|
||||
return 0;
|
||||
|
||||
sendto_serv_butone_token(sptr, parv[0], MSG_SVSSILENCE, TOK_SVSSILENCE, "%s :%s", parv[1], parv[2]);
|
||||
|
||||
mine = MyClient(acptr) ? 1 : 0;
|
||||
|
||||
for (p = strtok(parv[2], " "); p; p = strtok(NULL, " "))
|
||||
{
|
||||
c = *p;
|
||||
if ((c == '-') || (c == '+'))
|
||||
p++;
|
||||
else if (!(index(p, '@') || index(p, '.') ||
|
||||
index(p, '!') || index(p, '*')))
|
||||
{
|
||||
/* "no such nick" */
|
||||
continue;
|
||||
}
|
||||
else
|
||||
c = '+';
|
||||
cp = pretty_mask(p);
|
||||
if ((c == '-' && !del_silence(acptr, cp)) ||
|
||||
(c != '-' && !add_silence(acptr, cp, 0)))
|
||||
{
|
||||
if (mine)
|
||||
sendto_prefix_one(acptr, acptr, ":%s SILENCE %c%s", parv[0], c, cp);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
/*
|
||||
* Unreal Internet Relay Chat Daemon, src/modules/m_svswatch.c
|
||||
* (C) 2003 Bram Matthys (Syzop) and the UnrealIRCd Team
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "struct.h"
|
||||
#include "common.h"
|
||||
#include "sys.h"
|
||||
#include "numeric.h"
|
||||
#include "msg.h"
|
||||
#include "channel.h"
|
||||
#include <time.h>
|
||||
#include <sys/stat.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#ifdef _WIN32
|
||||
#include <io.h>
|
||||
#endif
|
||||
#include <sys/timeb.h>
|
||||
#include <fcntl.h>
|
||||
#include "h.h"
|
||||
#include "proto.h"
|
||||
#ifdef STRIPBADWORDS
|
||||
#include "badwords.h"
|
||||
#endif
|
||||
#ifdef _WIN32
|
||||
#include "version.h"
|
||||
#endif
|
||||
|
||||
DLLFUNC int m_svswatch(aClient *cptr, aClient *sptr, int parc, char *parv[]);
|
||||
|
||||
/* Place includes here */
|
||||
#define MSG_SVSWATCH "SVSWATCH"
|
||||
#define TOK_SVSWATCH "BW"
|
||||
|
||||
#ifndef DYNAMIC_LINKING
|
||||
ModuleHeader m_svswatch_Header
|
||||
#else
|
||||
#define m_svswatch_Header Mod_Header
|
||||
ModuleHeader Mod_Header
|
||||
#endif
|
||||
= {
|
||||
"svswatch", /* Name of module */
|
||||
"$Id$", /* Version */
|
||||
"command /svswatch", /* Short description of module */
|
||||
"3.2-b8-1",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
/* The purpose of these ifdefs, are that we can "static" link the ircd if we
|
||||
* want to
|
||||
*/
|
||||
|
||||
/* This is called on module init, before Server Ready */
|
||||
#ifdef DYNAMIC_LINKING
|
||||
DLLFUNC int Mod_Init(ModuleInfo *modinfo)
|
||||
#else
|
||||
int m_svswatch_Init(ModuleInfo *modinfo)
|
||||
#endif
|
||||
{
|
||||
/*
|
||||
* We call our add_Command crap here
|
||||
*/
|
||||
add_Command(MSG_SVSWATCH, TOK_SVSWATCH, m_svswatch, MAXPARA);
|
||||
return MOD_SUCCESS;
|
||||
|
||||
}
|
||||
|
||||
/* Is first run when server is 100% ready */
|
||||
#ifdef DYNAMIC_LINKING
|
||||
DLLFUNC int Mod_Load(int module_load)
|
||||
#else
|
||||
int m_svswatch_Load(int module_load)
|
||||
#endif
|
||||
{
|
||||
return MOD_SUCCESS;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* Called when module is unloaded */
|
||||
#ifdef DYNAMIC_LINKING
|
||||
DLLFUNC int Mod_Unload(int module_unload)
|
||||
#else
|
||||
int m_svswatch_Unload(int module_unload)
|
||||
#endif
|
||||
{
|
||||
if (del_Command(MSG_SVSWATCH, TOK_SVSWATCH, m_svswatch) < 0)
|
||||
{
|
||||
sendto_realops("Failed to delete commands when unloading %s",
|
||||
m_svswatch_Header.name);
|
||||
}
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
/* m_svswatch() - written by Syzop, suggested by Griever.
|
||||
* parv[0] - sender
|
||||
* parv[1] - target nick
|
||||
* parv[2] - parameters
|
||||
*/
|
||||
CMD_FUNC(m_svswatch)
|
||||
{
|
||||
aClient *acptr;
|
||||
if (!IsULine(sptr))
|
||||
return 0;
|
||||
|
||||
if (parc < 3 || BadPtr(parv[2]) || !(acptr = find_person(parv[1], NULL)))
|
||||
return 0;
|
||||
|
||||
if (MyClient(acptr))
|
||||
{
|
||||
parv[0] = parv[1];
|
||||
parv[1] = parv[2];
|
||||
(void)m_watch(acptr, acptr, 2, parv);
|
||||
}
|
||||
else
|
||||
sendto_one(acptr, ":%s SVSWATCH %s :%s", parv[0], parv[1], parv[2]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
+5
-5
@@ -2705,7 +2705,7 @@ int del_silence(aClient *sptr, char *mask)
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int add_silence(aClient *sptr, char *mask)
|
||||
int add_silence(aClient *sptr, char *mask, int senderr)
|
||||
{
|
||||
Link *lp;
|
||||
int cnt = 0, len = 0;
|
||||
@@ -2716,8 +2716,8 @@ static int add_silence(aClient *sptr, char *mask)
|
||||
if (MyClient(sptr))
|
||||
if ((len > MAXSILELENGTH) || (++cnt >= MAXSILES))
|
||||
{
|
||||
sendto_one(sptr, err_str(ERR_SILELISTFULL),
|
||||
me.name, sptr->name, mask);
|
||||
if (senderr)
|
||||
sendto_one(sptr, err_str(ERR_SILELISTFULL), me.name, sptr->name, mask);
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
@@ -2784,7 +2784,7 @@ CMD_FUNC(m_silence)
|
||||
c = '+';
|
||||
cp = pretty_mask(cp);
|
||||
if ((c == '-' && !del_silence(sptr, cp)) ||
|
||||
(c != '-' && !add_silence(sptr, cp)))
|
||||
(c != '-' && !add_silence(sptr, cp, 1)))
|
||||
{
|
||||
sendto_prefix_one(sptr, sptr, ":%s SILENCE %c%s",
|
||||
parv[0], c, cp);
|
||||
@@ -2809,7 +2809,7 @@ CMD_FUNC(m_silence)
|
||||
}
|
||||
else
|
||||
{
|
||||
(void)add_silence(sptr, parv[2]);
|
||||
(void)add_silence(sptr, parv[2], 1);
|
||||
if (!MyClient(acptr))
|
||||
sendto_one(acptr, ":%s SILENCE %s :%s",
|
||||
parv[0], parv[1], parv[2]);
|
||||
|
||||
Reference in New Issue
Block a user