1
0
mirror of https://github.com/anope/anope.git synced 2026-07-05 19:03:12 +02:00

BUILD : 1.7.6 (498) BUGS : N/A NOTES : Updated plexus.c/.h as per patch from ThaPrince

git-svn-id: svn://svn.anope.org/anope/trunk@498 31f1291d-b8d6-0310-a050-a5561fc1590b


git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@352 5417fbe8-f217-4b02-8779-1006273d7864
This commit is contained in:
rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b
2004-12-22 11:42:41 +00:00
parent f02336dc6b
commit 44e6352387
5 changed files with 383 additions and 176 deletions
+1
View File
@@ -74,6 +74,7 @@ Provided by mitch{Xy} <mitch@bondage.com> - 2004.
Provided by ThaPrince <jon@vile.com> - 2004.
12/21 A Support for Hybrid IRCDs QS (Quit Storm). [#256]
12/22 F Updated the plexus support. [ #00]
12/20 A Added plexus ircd support. [ #00]
Anope Version 1.7.6
+1 -1
View File
@@ -223,7 +223,7 @@ echo " 8) PTlink 6.15.0 [experimental]"
echo " 9) RageIRCd 2.0.0 [beta-6 or later]"
echo " 10) Unreal 3.2 [Unreal 3.2 beta19 or later]"
echo " 11) Solid IRCD 3.4.x [Solid IRCD 3.4.6 or later]"
echo " 12) Plexus IRCD [experimental]"
echo " 12) Plexus 2.0 [or later]"
while [ $ok -eq 0 ] ; do
echo2 "[$IRCTYPE] "
+1 -1
View File
@@ -29,7 +29,6 @@
#define UMODE_o 0x00000008
#define UMODE_R 0x00000010
#define UMODE_w 0x00000020
#define UMODE_A 0x00000040
#define CMODE_i 0x00000001
#define CMODE_m 0x00000002
@@ -45,6 +44,7 @@
#define CMODE_c 0x00002000
#define CMODE_O 0x00004000
#define CMODE_R 0x00008000
#define CMODE_N 0x00010000
#define DEFAULT_MLOCK CMODE_n | CMODE_t
+375 -173
View File
@@ -16,36 +16,36 @@
#ifdef IRC_PLEXUS
const char version_protocol[] = "PleXusIRCd 2.0+";
/* Not all ircds use +f for their flood/join throttle system */
const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */
const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */
int UseTSMODE = 0;
const char version_protocol[] = "Plexus";
IRCDVar ircd[] = {
{"Plexus", /* ircd name */
{"PleXusIRCd 2.0+", /* ircd name */
"+oiSR", /* nickserv mode */
"+oiSR", /* chanserv mode */
"+oiSR", /* memoserv mode */
"+oiSR", /* hostserv mode */
"+aoiSR", /* operserv mode */
"+oaiSR", /* operserv mode */
"+oiSR", /* botserv mode */
"+iSR", /* helpserv mode */
"+iSR", /* Dev/Null mode */
"+ioSR", /* Global mode */
"+oiSR", /* helpserv mode */
"+oiSR", /* Dev/Null mode */
"+oiSR", /* Global mode */
"+oiSR", /* nickserv alias mode */
"+oiSR", /* chanserv alias mode */
"+oiSR", /* memoserv alias mode */
"+oiSR", /* hostserv alias mode */
"+aoiSR", /* operserv alias mode */
"+oaiSR", /* operserv alias mode */
"+oiSR", /* botserv alias mode */
"+iSR", /* helpserv alias mode */
"+iSR", /* Dev/Null alias mode */
"+ioSR", /* Global alias mode */
"+oiSR", /* helpserv alias mode */
"+oiSR", /* Dev/Null alias mode */
"+oiSR", /* Global alias mode */
"+iSR", /* Used by BotServ Bots */
3, /* Chan Max Symbols */
"-ciklmnpstMORZ", /* Modes to Remove */
"-acilmnpstMNORZ", /* Modes to Remove */
"+o", /* Channel Umode used by Botserv bots */
1, /* SVSNICK */
1, /* Vhost */
@@ -56,18 +56,18 @@ IRCDVar ircd[] = {
"-R", /* Mode on UnReg */
"-R", /* Mode on Nick Change */
0, /* Supports SGlines */
0, /* Supports SQlines */
1, /* Supports SQlines */
0, /* Supports SZlines */
1, /* Supports Halfop +h */
3, /* Number of server args */
1, /* Join 2 Set */
0, /* Join 2 Set */
0, /* Join 2 Message */
1, /* Has exceptions +e */
0, /* TS Topic Forward */
0, /* TS Topci Backward */
0, /* Protected Umode */
0, /* Has Admin */
0, /* Chan SQlines */
1, /* Chan SQlines */
0, /* Quit on Kill */
0, /* SVSMODE unban */
0, /* Has Protect */
@@ -82,16 +82,25 @@ IRCDVar ircd[] = {
0, /* O:LINE */
1, /* VHOST ON NICK */
0, /* Change RealName */
0, /* ChanServ extra */
0, /* No Knock */
0, /* Admin Only */
DEFAULT_MLOCK, /* Default MLOCK */
UMODE_h, /* Vhost Mode */
0, /* +f */
0, /* +L */
0,
0,
0,
0, /* ChanServ extra */
CMODE_p, /* No Knock */
0, /* Admin Only */
DEFAULT_MLOCK, /* Default MLOCK */
UMODE_h, /* Vhost Mode */
0, /* +f */
0, /* +L */
0, /* +f Mode */
0, /* +L Mode */
0, /* On nick change check if they could be identified */
0, /* No Knock requires +i */
NULL, /* CAPAB Chan Modes */
0, /* We support TOKENS */
1, /* TOKENS are CASE inSensitive */
0, /* TIME STAMPS are BASE64 */
1, /* +I support */
0, /* SJOIN ban char */
0, /* SJOIN except char */
0, /* Can remove User Channel Modes with SVSMODE */
}
,
{NULL}
@@ -126,8 +135,8 @@ IRCDCAPAB ircdcap[] = {
0, /* VL */
0, /* TLKEXT */
0, /* DODKEY */
0 /* DOZIP */
}
0, /* DOZIP */
0, 0}
};
@@ -184,36 +193,65 @@ void anope_set_umode(User * user, int ac, char **av)
}
unsigned long umodes[128] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
0,
UMODE_R,
0, 0, 0, 0, 0, 0, 0,
0,
0, 0, 0, 0, 0,
0, UMODE_a, 0, 0, 0, 0, 0,
0,
UMODE_h, UMODE_i, 0, 0, 0, 0, 0, UMODE_o,
0,
0, 0, 0, 0, 0, 0, UMODE_w,
0,
0,
0,
0, 0, 0, 0, 0
0, 0, 0, /* Unused */
0, 0, 0, /* Unused */
0, 0, 0, /* Unused, Unused, Horzontal Tab */
0, 0, 0, /* Line Feed, Unused, Unused */
0, 0, 0, /* Carriage Return, Unused, Unused */
0, 0, 0, /* Unused */
0, 0, 0, /* Unused */
0, 0, 0, /* Unused */
0, 0, 0, /* Unused */
0, 0, 0, /* Unused */
0, 0, 0, /* Unused, Unused, Space */
0, 0, 0, /* ! " # */
0, 0, 0, /* $ % & */
0, 0, 0, /* ! ( ) */
0, 0, 0, /* * + , */
0, 0, 0, /* - . / */
0, 0, /* 0 1 */
0, 0, /* 2 3 */
0, 0, /* 4 5 */
0, 0, /* 6 7 */
0, 0, /* 8 9 */
0, 0, /* : ; */
0, 0, 0, /* < = > */
0, 0, /* ? @ */
0, 0, 0, /* A B C */
0, 0, 0, /* D E F */
0, 0, 0, /* G H I */
0, 0, 0, /* J K L */
0, 0, 0, /* M N O */
0, 0, UMODE_R, /* P Q R */
0, 0, 0, /* S T U */
0, 0, 0, /* V W X */
0, /* Y */
0, /* Z */
0, 0, 0, /* [ \ ] */
0, 0, 0, /* ^ _ ` */
UMODE_a, 0, 0, /* a b c */
0, 0, 0, /* d e f */
0, UMODE_h, UMODE_i, /* g h i */
0, 0, 0, /* j k l */
0, 0, UMODE_o, /* m n o */
0, 0, 0, /* p q r */
0, 0, 0, /* s t u */
0, UMODE_w, 0, /* v w x */
0, /* y */
0, /* z */
0, 0, 0, /* { | } */
0, 0 /* ~ */
};
char csmodes[128] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
'a', /* (33) ! Channel Admins */
0,
0, 0, 0,
'h', /* (37) % Channel halfops */
'h',
0, 0, 0, 0,
0,
@@ -227,22 +265,44 @@ char csmodes[128] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
CMMode cmmodes[128] = {
{NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL},
{NULL},
{NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL},
{NULL}, {NULL}, {NULL}, /* BCD */
{NULL}, {NULL}, {NULL}, /* EFG */
{NULL}, /* H */
{add_invite, del_invite},
{NULL}, /* J */
{NULL}, {NULL}, {NULL}, /* KLM */
{NULL}, {NULL}, {NULL}, /* NOP */
{NULL}, {NULL}, {NULL}, /* QRS */
{NULL}, {NULL}, {NULL}, /* TUV */
{NULL}, {NULL}, {NULL}, /* WXY */
{NULL}, /* Z */
{NULL}, {NULL}, /* (char 91 - 92) */
{NULL}, {NULL}, {NULL}, /* (char 93 - 95) */
{NULL}, /* ` (char 96) */
{NULL}, /* a (char 97) */
{add_ban, del_ban},
{NULL},
{NULL},
@@ -278,11 +338,11 @@ CBMode cbmodes[128] = {
{0}, /* K */
{0}, /* L */
{CMODE_M, 0, NULL, NULL}, /* M */
{0}, /* N */
{CMODE_N, 0, NULL, NULL}, /* N */
{CMODE_O, CBM_NO_USER_MLOCK, NULL, NULL}, /* O */
{0}, /* P */
{0}, /* Q */
{CMODE_R, 0, NULL, NULL},
{CMODE_R, 0, NULL, NULL}, /* R */
{0}, /* S */
{0}, /* T */
{0}, /* U */
@@ -323,7 +383,6 @@ CBMode cbmodes[128] = {
CBModeInfo cbmodeinfos[] = {
{'a', CMODE_a, 0, NULL, NULL},
{'c', CMODE_c, 0, NULL, NULL},
{'i', CMODE_i, 0, NULL, NULL},
{'k', CMODE_k, 0, get_key, cs_get_key},
{'l', CMODE_l, CBM_MINUS_NO_ARG, get_limit, cs_get_limit},
@@ -333,6 +392,7 @@ CBModeInfo cbmodeinfos[] = {
{'s', CMODE_s, 0, NULL, NULL},
{'t', CMODE_t, 0, NULL, NULL},
{'M', CMODE_M, 0, NULL, NULL},
{'N', CMODE_N, 0, NULL, NULL},
{'O', CMODE_O, 0, NULL, NULL},
{'R', CMODE_R, 0, NULL, NULL},
{'Z', CMODE_Z, 0, NULL, NULL},
@@ -468,6 +528,11 @@ void anope_cmd_global(char *source, const char *fmt, ...)
send_cmd(source ? source : ServerName, "OPERWALL :%s", buf);
}
/* GLOBOPS - to handle old WALLOPS */
void anope_cmd_global_legacy(char *source, char *fmt)
{
send_cmd(source ? source : ServerName, "OPERWALL :%s", fmt);
}
int anope_event_sjoin(char *source, int ac, char **av)
{
@@ -479,10 +544,8 @@ int anope_event_nick(char *source, int ac, char **av)
{
if (ac != 2) {
User *user = do_nick(source, av[0], av[4], av[5], av[7], av[9],
strtoul(av[2], NULL, 10), strtoul(av[8], NULL,
0), 0,
av[6],
NULL);
strtoul(av[2], NULL, 10),
strtoul(av[8], NULL, 0), 0, av[6], NULL);
if (user)
anope_set_umode(user, 1, &av[3]);
} else {
@@ -524,6 +587,18 @@ int anope_event_topic(char *source, int ac, char **av)
return MOD_CONT;
}
int anope_event_tburst(char *source, int ac, char **av)
{
if (ac != 5)
return MOD_CONT;
av[0] = av[1];
av[1] = av[3];
av[3] = av[4];
do_topic(source, 4, av);
return MOD_CONT;
}
int anope_event_436(char *source, int ac, char **av)
{
if (ac < 1)
@@ -538,46 +613,49 @@ int anope_event_436(char *source, int ac, char **av)
void moduleAddIRCDMsgs(void) {
Message *m;
m = createMessage("401", NULL); addCoreMessage(IRCD,m);
m = createMessage("401", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("402", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("436", anope_event_436); addCoreMessage(IRCD,m);
m = createMessage("AWAY", anope_event_away); addCoreMessage(IRCD,m);
m = createMessage("INVITE", NULL); addCoreMessage(IRCD,m);
m = createMessage("INVITE", anope_event_invite); addCoreMessage(IRCD,m);
m = createMessage("JOIN", anope_event_join); addCoreMessage(IRCD,m);
m = createMessage("KICK", anope_event_kick); addCoreMessage(IRCD,m);
m = createMessage("KILL", anope_event_kill); addCoreMessage(IRCD,m);
m = createMessage("MODE", anope_event_mode); addCoreMessage(IRCD,m);
m = createMessage("MOTD", anope_event_motd); addCoreMessage(IRCD,m);
m = createMessage("NICK", anope_event_nick); addCoreMessage(IRCD,m);
m = createMessage("NOTICE", NULL); addCoreMessage(IRCD,m);
m = createMessage("NOTICE", anope_event_notice); addCoreMessage(IRCD,m);
m = createMessage("PART", anope_event_part); addCoreMessage(IRCD,m);
m = createMessage("PASS", NULL); addCoreMessage(IRCD,m);
m = createMessage("PASS", anope_event_pass); addCoreMessage(IRCD,m);
m = createMessage("PING", anope_event_ping); addCoreMessage(IRCD,m);
m = createMessage("PRIVMSG", anope_event_privmsg); addCoreMessage(IRCD,m);
m = createMessage("QUIT", anope_event_quit); addCoreMessage(IRCD,m);
m = createMessage("SERVER", anope_event_server); addCoreMessage(IRCD,m);
m = createMessage("SQUIT", anope_event_squit); addCoreMessage(IRCD,m);
m = createMessage("STATS", m_stats); addCoreMessage(IRCD,m);
m = createMessage("TIME", m_time); addCoreMessage(IRCD,m);
m = createMessage("TOPIC", anope_event_topic); addCoreMessage(IRCD,m);
m = createMessage("USER", NULL); addCoreMessage(IRCD,m);
m = createMessage("WALLOPS", NULL); addCoreMessage(IRCD,m);
m = createMessage("TBURST", anope_event_tburst); addCoreMessage(IRCD,m);
m = createMessage("USER", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("WALLOPS", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("WHOIS", anope_event_whois); addCoreMessage(IRCD,m);
m = createMessage("AKILL", NULL); addCoreMessage(IRCD,m);
m = createMessage("GLOBOPS", NULL); addCoreMessage(IRCD,m);
m = createMessage("GNOTICE", NULL); addCoreMessage(IRCD,m);
m = createMessage("GOPER", NULL); addCoreMessage(IRCD,m);
m = createMessage("RAKILL", NULL); addCoreMessage(IRCD,m);
m = createMessage("SILENCE", NULL); addCoreMessage(IRCD,m);
m = createMessage("SVSKILL", NULL); addCoreMessage(IRCD,m);
m = createMessage("SVSMODE", NULL); addCoreMessage(IRCD,m);
m = createMessage("SVSNICK", NULL); addCoreMessage(IRCD,m);
m = createMessage("SVSNOOP", NULL); addCoreMessage(IRCD,m);
m = createMessage("SQLINE", NULL); addCoreMessage(IRCD,m);
m = createMessage("UNSQLINE", NULL); addCoreMessage(IRCD,m);
m = createMessage("SETHOST", anope_event_sethost); addCoreMessage(IRCD,m);
m = createMessage("AKILL", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("GLOBOPS", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("GNOTICE", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("GOPER", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("RAKILL", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("SILENCE", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("SVSKILL", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("SVSMODE", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("SVSNICK", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("SVSNOOP", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("SQLINE", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("UNSQLINE", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("CAPAB", anope_event_capab); addCoreMessage(IRCD,m);
m = createMessage("SJOIN", anope_event_sjoin); addCoreMessage(IRCD,m);
m = createMessage("SVINFO", NULL); addCoreMessage(IRCD,m);
m = createMessage("SVINFO", anope_event_svinfo); addCoreMessage(IRCD,m);
m = createMessage("EOB", anope_event_eob); addCoreMessage(IRCD,m);
m = createMessage("ADMIN", anope_event_admin); addCoreMessage(IRCD,m);
m = createMessage("ERROR", anope_event_error); addCoreMessage(IRCD,m);
m = createMessage("SETHOST", anope_event_sethost); addCoreMessage(IRCD,m);
}
/* *INDENT-ON* */
@@ -585,11 +663,12 @@ void moduleAddIRCDMsgs(void) {
void anope_cmd_sqline(char *mask, char *reason)
{
send_cmd(NULL, "RESV * %s :%s", mask, reason);
}
void anope_cmd_unsgline(char *mask)
{
/* Does not support */
/* Does not support */
}
void anope_cmd_unszline(char *mask)
@@ -607,6 +686,11 @@ void anope_cmd_svsnoop(char *server, int set)
/* does not support */
}
void anope_cmd_svsadmin(char *server, int set)
{
anope_cmd_svsnoop(server, set);
}
void anope_cmd_sgline(char *mask, char *reason)
{
/* does not support */
@@ -617,11 +701,11 @@ void anope_cmd_remove_akill(char *user, char *host)
send_cmd(s_OperServ, "UNKLINE * %s %s", user, host);
}
void
anope_cmd_topic(char *whosets, char *chan, char *whosetit,
char *topic, time_t when)
void anope_cmd_topic(char *whosets, char *chan, char *whosetit,
char *topic, time_t when)
{
send_cmd(whosets, "TOPIC %s :%s", chan, topic);
send_cmd(whosets, "SVSTOPIC %s %s %lu :%s", chan, whosetit,
(unsigned long int) when, topic);
}
void anope_cmd_vhost_off(User * u)
@@ -640,20 +724,29 @@ void anope_cmd_vhost_on(char *nick, char *vIdent, char *vhost)
void anope_cmd_unsqline(char *user)
{
/* Hybrid does not support SQLINEs */
send_cmd(NULL, "UNRESV * %s", user);
}
void anope_cmd_join(char *user, char *channel, time_t chantime)
{
send_cmd(NULL, "SJOIN %ld %s + :%s", time(NULL), channel, user);
send_cmd(NULL, "SJOIN %ld %s + :%s", (long int) time(NULL), channel,
user);
}
void
anope_cmd_akill(char *user, char *host, char *who, time_t when,
time_t expires, char *reason)
/*
oper: the nick of the oper performing the kline
target.server: the server(s) this kline is destined for
duration: the duration if a tkline, 0 if permanent.
user: the 'user' portion of the kline
host: the 'host' portion of the kline
reason: the reason for the kline.
*/
void anope_cmd_akill(char *user, char *host, char *who, time_t when,
time_t expires, char *reason)
{
send_cmd(s_OperServ, "KLINE * %ld %s %s :%s",
(expires - (long) time(NULL)), user, host, reason);
(long int) (expires - (long) time(NULL)), user, host, reason);
}
void anope_cmd_svskill(char *source, char *user, const char *fmt, ...)
@@ -678,11 +771,9 @@ void anope_cmd_svskill(char *source, char *user, const char *fmt, ...)
send_cmd(source, "KILL %s :%s", user, buf);
}
void anope_cmd_svsmode(User * u, int ac, char **av)
{
send_cmd(ServerName, "SVSMODE %s %s%s%s", u->nick,
av[0], (ac == 2 ? " " : ""), (ac == 2 ? av[1] : ""));
send_cmd(ServerName, "SVSMODE %s %s", u->nick, av[0]);
}
void anope_cmd_connect(int servernum)
@@ -696,19 +787,52 @@ void anope_cmd_connect(int servernum)
anope_cmd_capab();
anope_cmd_server(ServerName, 1, ServerDesc);
anope_cmd_svsinfo();
anope_cmd_svinfo();
}
/* SVSINFO */
void anope_cmd_svsinfo()
{
send_cmd(NULL, "SVSINFO 5 5 0 :%ld", time(NULL));
/* not used */
}
/*
* SVINFO
* parv[0] = sender prefix
* parv[1] = TS_CURRENT for the server
* parv[2] = TS_MIN for the server
* parv[3] = server is standalone or connected to non-TS only
* parv[4] = server's idea of UTC time
*/
void anope_cmd_svinfo()
{
send_cmd(NULL, "SVINFO 5 5 0 :%ld", (long int) time(NULL));
}
/* CAPAB */
/*
QS - Can handle quit storm removal
EX - Can do channel +e exemptions
CHW - Can do channel wall @#
LL - Can do lazy links
IE - Can do invite exceptions
EOB - Can do EOB message
KLN - Can do KLINE message
GLN - Can do GLINE message
HOPS - can do half ops (+h)
HUB - This server is a HUB
AOPS - Can do anon ops (+a)
UID - Can do UIDs
ZIP - Can do ZIPlinks
ENC - Can do ENCrypted links
KNOCK - supports KNOCK
TBURST - supports TBURST
PARA - supports invite broadcasting for +p
ENCAP - ?
*/
void anope_cmd_capab()
{
send_cmd(NULL, "CAPAB TS5 EX IE HOPS HUB AOPS");
send_cmd(NULL,
"CAPAB :QS EX CHW IE EOB KLN GLN HOPS HUB AOPS KNOCK TBURST PARA");
}
/* PASS */
@@ -723,12 +847,14 @@ void anope_cmd_server(char *servname, int hop, char *descript)
send_cmd(NULL, "SERVER %s %d :%s", servname, hop, descript);
}
void
anope_cmd_bot_nick(char *nick, char *user, char *host, char *real,
char *modes)
void anope_cmd_bot_nick(char *nick, char *user, char *host, char *real,
char *modes)
{
send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s %s 0 :%s", nick, time(NULL),
modes, user, host, "*", ServerName, real);
EnforceQlinedNick(nick, NULL);
send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s %s 0 :%s", nick,
(long int) time(NULL), modes, user, host, "*", ServerName,
real);
anope_cmd_sqline(nick, "Reserved for services");
}
@@ -807,6 +933,21 @@ int anope_event_kick(char *source, int ac, char **av)
return MOD_CONT;
}
int anope_event_eob(char *source, int ac, char **av)
{
Server *s;
s = findserver(servlist, source);
if (s) {
s->sync = 1;
}
return MOD_CONT;
}
void anope_cmd_eob()
{
send_cmd(ServerName, "EOB");
}
int anope_event_join(char *source, int ac, char **av)
{
@@ -1114,12 +1255,15 @@ void anope_cmd_mode(char *source, char *dest, const char *fmt, ...)
void anope_cmd_nick(char *nick, char *name, char *mode)
{
send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s %s 0 :%s", nick, time(NULL),
mode, ServiceUser, ServiceHost, "*", ServerName, (name));
EnforceQlinedNick(nick, NULL);
send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s %s 0 :%s", nick,
(long int) time(NULL), mode, ServiceUser, ServiceHost,
"*", ServerName, (name));
anope_cmd_sqline(nick, "Reserved for services");
}
void
anope_cmd_kick(char *source, char *chan, char *user, const char *fmt, ...)
void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt,
...)
{
va_list args;
char buf[BUFSIZE];
@@ -1158,7 +1302,7 @@ void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...)
void anope_cmd_bot_chan_mode(char *nick, char *chan)
{
anope_cmd_mode(nick, chan, "%s %s %s", ircd->botchanumode, nick, nick);
anope_cmd_mode(nick, chan, "%s %s", ircd->botchanumode, nick);
}
/* QUIT */
@@ -1204,7 +1348,7 @@ void anope_cmd_squit(char *servname, char *message)
return;
}
send_cmd(servname, "SQUIT %s :%s", servname, message);
send_cmd(NULL, "SQUIT %s :%s", servname, message);
}
int anope_event_mode(char *source, int ac, char **av)
@@ -1212,10 +1356,17 @@ int anope_event_mode(char *source, int ac, char **av)
if (ac < 2)
return MOD_CONT;
Server *s;
s = findserver(servlist, source);
if (*av[0] == '#' || *av[0] == '&') {
do_cmode(source, ac, av);
} else {
do_umode(source, ac, av);
if (s && *av[0]) {
do_umode(av[0], ac, av);
} else {
do_umode(source, ac, av);
}
}
return MOD_CONT;
}
@@ -1241,7 +1392,7 @@ void anope_cmd_svshold(char *nick)
}
/* SVSHOLD - release */
void anope_cmd_relase_svshold(char *nick)
void anope_cmd_release_svshold(char *nick)
{
/* Not Supported by this IRCD */
}
@@ -1255,12 +1406,12 @@ void anope_cmd_svsnick(char *nick, char *newnick, time_t when)
send_cmd(NULL, "SVSNICK %s %s", nick, newnick);
}
void
anope_cmd_guest_nick(char *nick, char *user, char *host, char *real,
char *modes)
void anope_cmd_guest_nick(char *nick, char *user, char *host, char *real,
char *modes)
{
send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s %s 0 :%s", nick, time(NULL),
modes, user, host, "*", ServerName, real);
send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s %s 0 :%s", nick,
(long int) time(NULL), modes, user, host, "*", ServerName,
real);
}
void anope_cmd_svso(char *source, char *nick, char *flag)
@@ -1273,6 +1424,13 @@ void anope_cmd_unban(char *name, char *nick)
/* Not Supported by this IRCD */
}
/* SVSMODE channel modes */
void anope_cmd_svsmode_chan(char *name, char *mode, char *nick)
{
/* Not Supported by this IRCD */
}
/* SVSMODE +d */
/* sent if svid is something weird */
void anope_cmd_svid_umode(char *nick, time_t ts)
@@ -1301,6 +1459,7 @@ void anope_cmd_svid_umode2(User * u, char *ts)
void anope_cmd_svid_umode3(User * u, char *ts)
{
/* not used */
}
/* NICK <newnick> */
@@ -1313,7 +1472,92 @@ void anope_cmd_chg_nick(char *oldnick, char *newnick)
send_cmd(oldnick, "NICK %s", newnick);
}
/* Below are additions made to this patch by anope-dev, we simply took the hybrid settings and used them. */
/*
* SVINFO
* parv[0] = sender prefix
* parv[1] = TS_CURRENT for the server
* parv[2] = TS_MIN for the server
* parv[3] = server is standalone or connected to non-TS only
* parv[4] = server's idea of UTC time
*/
int anope_event_svinfo(char *source, int ac, char **av)
{
/* currently not used but removes the message : unknown message from server */
return MOD_CONT;
}
int anope_event_pass(char *source, int ac, char **av)
{
/* currently not used but removes the message : unknown message from server */
return MOD_CONT;
}
void anope_cmd_svsjoin(char *source, char *nick, char *chan)
{
/* Not Supported by this IRCD */
}
void anope_cmd_svspart(char *source, char *nick, char *chan)
{
/* Not Supported by this IRCD */
}
void anope_cmd_swhois(char *source, char *who, char *mask)
{
/* not supported */
}
int anope_event_notice(char *source, int ac, char **av)
{
return MOD_CONT;
}
int anope_event_admin(char *source, int ac, char **av)
{
return MOD_CONT;
}
int anope_event_invite(char *source, int ac, char **av)
{
return MOD_CONT;
}
int anope_flood_mode_check(char *value)
{
return 0;
}
int anope_event_error(char *source, int ac, char **av)
{
if (ac >= 1) {
if (debug) {
alog("ERROR: %s", av[0]);
}
}
return MOD_CONT;
}
void anope_cmd_jupe(char *jserver, char *who, char *reason)
{
char rbuf[256];
snprintf(rbuf, sizeof(rbuf), "Juped by %s%s%s", who,
reason ? ": " : "", reason ? reason : "");
anope_cmd_squit(jserver, rbuf);
anope_cmd_server(jserver, 2, rbuf);
new_server(me_server, jserver, rbuf, SERVER_JUPED, NULL);
}
/*
1 = valid nick
0 = nick is in valid
*/
int anope_valid_nick(char *nick)
{
/* no hard coded invalid nicks */
return 1;
}
void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...)
{
@@ -1336,46 +1580,4 @@ void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...)
send_cmd(source, "%s NOTICE :\1%s \1", dest, s);
}
int anope_valid_nick(char *nick)
{
/* no hard coded invalid nicks */
return 1;
}
int anope_flood_mode_check(char *value)
{
return 0;
}
void anope_cmd_eob()
{
send_cmd(ServerName, "EOB");
}
void anope_cmd_release_svshold(char *nick)
{
/* Not Supported by this IRCD */
}
void anope_cmd_svsmode_chan(char *name, char *mode, char *nick)
{
/* Not Supported by this IRCD */
}
void anope_cmd_jupe(char *jserver, char *who, char *reason)
{
char rbuf[256];
snprintf(rbuf, sizeof(rbuf), "Juped by %s%s%s", who,
reason ? ": " : "", reason ? reason : "");
anope_cmd_squit(jserver, rbuf);
anope_cmd_server(jserver, 2, rbuf);
new_server(me_server, jserver, rbuf, SERVER_JUPED, NULL);
}
void anope_cmd_global_legacy(char *source, char *fmt)
{
send_cmd(source ? source : ServerName, "OPERWALL :%s", fmt);
}
#endif
+5 -1
View File
@@ -8,10 +8,14 @@
VERSION_MAJOR="1"
VERSION_MINOR="7"
VERSION_PATCH="6"
VERSION_BUILD="497"
VERSION_BUILD="498"
# $Log$
#
# BUILD : 1.7.6 (498)
# BUGS : N/A
# NOTES : Updated plexus.c/.h as per patch from ThaPrince
#
# BUILD : 1.7.6 (497)
# BUGS : 256, 258
# NOTES : support for QS, and fixed a /away bug