1
0
mirror of https://github.com/anope/anope.git synced 2026-06-12 19:34:48 +02:00

BUILD : 1.7.5 (365) BUGS : 172 NOTES : - New directive NewsCount - fr.l updated - do_memocheck() globalized the time display - getmemoinfo() improved to return info about being forbidden - fixes svsnick on Unreal - anope_event_null to allow ircd devs to point events that go to no where some where - fixed SQUIT

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


git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@236 5417fbe8-f217-4b02-8779-1006273d7864
This commit is contained in:
trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b
2004-10-03 03:58:43 +00:00
parent 7bc5f4a8ed
commit 04afc85480
20 changed files with 172 additions and 69 deletions
+1
View File
@@ -17,6 +17,7 @@ Provided by Anope Dev. <dev@anope.org> - 2004
08/24 F Compile error with gcc2. [ #00]
Provided by Trystan <trystan@nomadirc.net> - 2004
10/02 A Added NewsCount as new feature in services.conf [ #00]
08/28 A CSupport for +I channel mode. [ #00]
08/28 A Complete support for Unreal3.2 [ #00]
08/28 A New BASE64 general library. [ #00]
+5
View File
@@ -31,6 +31,11 @@ Anope Version S V N
# show services changing user modes.
#UseSVS2MODE
# NewsCount [OPTIONAL]
# The number of LOGON/OPER News item to display when a user logins
# on. The default value is 3
#NewsCount
** MODIFIED CONFIGURATION DIRECTIVES **
** DELETED CONFIGURATION DIRECTIVES **
+5
View File
@@ -476,6 +476,11 @@ GlobalOnCycleUP "Services are now back online - have a nice day"
# show services changing user modes.
#UseSVS2MODE
# NewsCount [OPTIONAL]
# The number of LOGON/OPER News item to display when a user logins
# on. The default value is 3
#NewsCount
###########################################################################
#
# Mail-related options
+2
View File
@@ -295,6 +295,7 @@ E int UseSVSHOLD;
E int UseSVS2MODE;
E int RestrictOperNicks;
E int UseTokens;
E int NewsCount;
E char **HostSetters;
E int HostNumber;
@@ -1074,6 +1075,7 @@ extern int anope_event_rehash(char *source, int ac, char **av);
extern int anope_event_sdesc(char *source, int ac, char **av);
extern int anope_event_netglobal(char *source, int ac, char **av);
extern int anope_event_invite(char *source, int ac, char **av);
extern int anope_event_null(char *source, int ac, char **av);
extern void anope_set_umode(User * user, int ac, char **av);
extern void anope_cmd_svid_umode(char *nick, time_t ts);
+2 -2
View File
@@ -1791,9 +1791,9 @@ MEMO_RSEND_USER_NOTIFICATION
MEMO_CHECK_SYNTAX
CHECK nickname
MEMO_CHECK_NOT_READ
The last memo you sent to %s (sent on %s) has not yet been read.
Le dernier mémo que vous avez envoyé à %s (le %s) n'a pas encore été lu.
MEMO_CHECK_READ
The last memo you sent to %s (sent on %s) has been read.
Le dernier mémo que vous avez envoyé à %s (le %s) a été lu.
MEMO_CHECK_NO_MEMO
Nick %s doesn't have a memo from you.
+1 -1
View File
@@ -129,7 +129,7 @@ IRCDCAPAB ircdcap[] = {
0, /* TLKEXT */
0, /* DODKEY */
CAPAB_DOZIP, /* DOZIP */
0}
0, 0}
};
+6
View File
@@ -119,6 +119,7 @@ int NickRegDelay;
int UseSVSHOLD;
int UseTokens;
int UseSVS2MODE;
int NewsCount;
int UseMail;
char *SendMailPath;
@@ -510,6 +511,7 @@ Directive directives[] = {
{"MSMemoReceipt", {{PARAM_POSINT, PARAM_RELOAD, &MSMemoReceipt}}},
{"NetworkDomain", {{PARAM_STRING, PARAM_RELOAD, &NetworkDomain}}},
{"NetworkName", {{PARAM_STRING, PARAM_RELOAD, &NetworkName}}},
{"NewsCount", {{PARAM_POSINT, PARAM_RELOAD, &NewsCount}}},
{"NewsDB", {{PARAM_STRING, PARAM_RELOAD, &NewsDBName}}},
{"NickservDB", {{PARAM_STRING, PARAM_RELOAD, &NickDBName}}},
{"PreNickServDB", {{PARAM_STRING, PARAM_RELOAD, &PreNickDBName}}},
@@ -1087,6 +1089,10 @@ int read_config(int reload)
}
}
if (!NewsCount) {
NewsCount = 3;
}
if (reload) {
if ((NSDefLanguage = langlist[NSDefLanguage]) < 0)
NSDefLanguage = DEF_LANGUAGE;
+1 -1
View File
@@ -128,7 +128,7 @@ IRCDCAPAB ircdcap[] = {
0, /* TLKEXT */
0, /* DODKEY */
0, /* DOZIP */
0}
0, 0}
};
void anope_set_umode(User * user, int ac, char **av)
+1 -1
View File
@@ -128,7 +128,7 @@ IRCDCAPAB ircdcap[] = {
0, /* TLKEXT */
0, /* DODKEY */
0, /* DOZIP */
0}
0, 0}
};
+53 -23
View File
@@ -154,28 +154,45 @@ void check_memos(User * u)
/* Return the MemoInfo corresponding to the given nick or channel name.
* Return in `ischan' 1 if the name was a channel name, else 0.
* Return in `isforbid' 1 if the name is forbidden, else 0.
*/
static MemoInfo *getmemoinfo(const char *name, int *ischan)
static MemoInfo *getmemoinfo(const char *name, int *ischan, int *isforbid)
{
if (*name == '#') {
ChannelInfo *ci;
if (ischan)
*ischan = 1;
ci = cs_findchan(name);
if (ci && !(ci->flags & CI_VERBOTEN))
return &ci->memos;
else
if (ci) {
if (!(ci->flags & CI_VERBOTEN)) {
*isforbid = 0;
return &ci->memos;
} else {
*isforbid = 1;
return NULL;
}
} else {
*isforbid = 0;
return NULL;
}
} else {
NickAlias *na;
if (ischan)
*ischan = 0;
na = findnick(name);
if (na && !(na->status & NS_VERBOTEN))
return &na->nc->memos;
else
if (na) {
if (!(na->status & NS_VERBOTEN)) {
*isforbid = 0;
return &na->nc->memos;
} else {
*isforbid = 1;
return NULL;
}
} else {
*isforbid = 0;
return NULL;
}
}
}
@@ -261,6 +278,7 @@ static int do_send(User * u)
void memo_send(User * u, char *name, char *text, int z)
{
int ischan;
int isforbid;
Memo *m;
MemoInfo *mi;
time_t now = time(NULL);
@@ -284,11 +302,17 @@ void memo_send(User * u, char *name, char *text, int z)
if (z == 0 || z == 3)
notice_lang(s_MemoServ, u, NICK_IDENTIFY_REQUIRED, s_NickServ);
} else if (!(mi = getmemoinfo(name, &ischan))) {
} else if (!(mi = getmemoinfo(name, &ischan, &isforbid))) {
if (z == 0 || z == 3)
notice_lang(s_MemoServ, u,
ischan ? CHAN_X_NOT_REGISTERED :
NICK_X_NOT_REGISTERED, name);
if (isforbid) {
notice_lang(s_MemoServ, u,
ischan ? CHAN_X_FORBIDDEN :
NICK_X_FORBIDDEN, name);
} else {
notice_lang(s_MemoServ, u,
ischan ? CHAN_X_NOT_REGISTERED :
NICK_X_NOT_REGISTERED, name);
}
} else if (z != 2 && MSSendDelay > 0 &&
u && u->lastmemosend + MSSendDelay > now && !is_servoper) {
@@ -390,6 +414,7 @@ void memo_send(User * u, char *name, char *text, int z)
static int do_cancel(User * u)
{
int ischan;
int isforbid;
char *name = strtok(NULL, " ");
MemoInfo *mi;
@@ -399,10 +424,16 @@ static int do_cancel(User * u)
} else if (!nick_recognized(u)) {
notice_lang(s_MemoServ, u, NICK_IDENTIFY_REQUIRED, s_NickServ);
} else if (!(mi = getmemoinfo(name, &ischan))) {
notice_lang(s_MemoServ, u,
ischan ? CHAN_X_NOT_REGISTERED : NICK_X_NOT_REGISTERED,
name);
} else if (!(mi = getmemoinfo(name, &ischan, &isforbid))) {
if (isforbid) {
notice_lang(s_MemoServ, u,
ischan ? CHAN_X_FORBIDDEN :
NICK_X_FORBIDDEN, name);
} else {
notice_lang(s_MemoServ, u,
ischan ? CHAN_X_NOT_REGISTERED :
NICK_X_NOT_REGISTERED, name);
}
} else {
int i;
@@ -1335,8 +1366,9 @@ static int do_memocheck(User * u)
NickAlias *na = NULL;
MemoInfo *mi = NULL;
int i, found = 0;
char *stime = NULL;
char *recipient = strtok(NULL, "");
struct tm *tm;
char timebuf[64];
if (!recipient) {
syntax_error(s_MemoServ, u, "CHECK", MEMO_CHECK_SYNTAX);
@@ -1358,15 +1390,16 @@ static int do_memocheck(User * u)
if (!stricmp(mi->memos[i].sender, u->nick)) {
found = 1; /* Yes, we've found the memo */
stime = strdup(ctime(&mi->memos[i].time));
*(stime + strlen(stime) - 1) = ' '; /* cut the f*cking \0 terminator and replace it with a single space */
tm = localtime(&mi->memos[i].time);
strftime_lang(timebuf, sizeof(timebuf), u,
STRFTIME_DATE_TIME_FORMAT, tm);
if (mi->memos[i].flags & MF_UNREAD)
notice_lang(s_MemoServ, u, MEMO_CHECK_NOT_READ, na->nick,
stime);
timebuf);
else
notice_lang(s_MemoServ, u, MEMO_CHECK_READ, na->nick,
stime);
timebuf);
break;
}
}
@@ -1374,9 +1407,6 @@ static int do_memocheck(User * u)
if (!found)
notice_lang(s_MemoServ, u, MEMO_CHECK_NO_MEMO, na->nick);
if (stime)
free(stime);
return MOD_CONT;
}
+5
View File
@@ -362,6 +362,11 @@ int m_whois(char *source, char *who)
return MOD_CONT;
}
/* NULL route messages */
int anope_event_null(char *source, int ac, char **av)
{
return MOD_CONT;
}
/* *INDENT-OFF* */
void moduleAddMsgs(void) {
+2 -2
View File
@@ -298,10 +298,10 @@ void display_news(User * u, int16 type)
}
}
} else {
int i, count = 0; /* Number we're going to show--not more than 3 */
int i, count = 0;
for (i = nnews - 1; i >= 0; i--) {
if (count >= 3)
if (count >= NewsCount)
break;
if (news[i].type == type)
count++;
+12 -3
View File
@@ -128,7 +128,7 @@ IRCDCAPAB ircdcap[] = {
0, /* TLKEXT */
0, /* DODKEY */
0, /* DOZIP */
0}
0, 0}
};
@@ -544,7 +544,7 @@ void moduleAddIRCDMsgs(void) {
m = createMessage("REHASH", anope_event_rehash); addCoreMessage(IRCD,m);
m = createMessage("ADMIN", anope_event_admin); addCoreMessage(IRCD,m);
m = createMessage("CREDITS", anope_event_credits); addCoreMessage(IRCD,m);
m = createMessage("ERROR", anope_event_error); addCoreMessage(IRCD,m);
}
/* *INDENT-ON* */
@@ -684,10 +684,19 @@ void anope_cmd_svsmode(User * u, int ac, char **av)
(ac == 2 ? " " : ""), (ac == 2 ? av[1] : ""));
}
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_squit(char *servname, char *message)
{
send_cmd(servname, "SQUIT %s :%s", servname, message);
send_cmd(NULL, "SQUIT %s :%s", servname, message);
}
/* PONG */
+1 -1
View File
@@ -127,7 +127,7 @@ IRCDCAPAB ircdcap[] = {
0, /* TLKEXT */
0, /* DODKEY */
0, /* DOZIP */
0}
0, 0}
};
+2 -1
View File
@@ -129,7 +129,8 @@ IRCDCAPAB ircdcap[] = {
0, /* TLKEXT */
0, /* DODKEY */
0, /* DOZIP */
CAPAB_CHANMODE /* CHANMODE */
CAPAB_CHANMODE, /* CHANMODE */
0,
}
};
+1 -1
View File
@@ -126,7 +126,7 @@ IRCDCAPAB ircdcap[] = {
0, /* TLKEXT */
CAPAB_DODKEY, /* DODKEY */
CAPAB_DOZIP, /* DOZIP */
0}
0, 0}
};
void anope_set_umode(User * user, int ac, char **av)
+3 -1
View File
@@ -129,7 +129,9 @@ IRCDCAPAB ircdcap[] = {
CAPAB_TLKEXT, /* TLKEXT */
0, /* DODKEY */
0, /* DOZIP */
0}
0,
0,
}
};
unsigned long umodes[128] = {
+57 -30
View File
@@ -130,6 +130,7 @@ IRCDCAPAB ircdcap[] = {
0, /* DODKEY */
0, /* DOZIP */
CAPAB_CHANMODE, /* CHANMODE */
CAPAB_SJB64,
}
};
@@ -458,7 +459,7 @@ void moduleAddIRCDMsgs(void) {
if (UseTokens) {
m = createMessage("6", anope_event_away); addCoreMessage(IRCD,m);
}
m = createMessage("INVITE", NULL); addCoreMessage(IRCD,m);
m = createMessage("INVITE", anope_event_null); addCoreMessage(IRCD,m);
m = createMessage("JOIN", anope_event_join); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("C", anope_event_join); addCoreMessage(IRCD,m);
@@ -515,69 +516,69 @@ void moduleAddIRCDMsgs(void) {
if (UseTokens) {
m = createMessage(")", anope_event_topic); addCoreMessage(IRCD,m);
}
m = createMessage("USER", NULL); addCoreMessage(IRCD,m);
m = createMessage("USER", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("%", NULL); addCoreMessage(IRCD,m);
m = createMessage("%", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("WALLOPS", NULL); addCoreMessage(IRCD,m);
m = createMessage("WALLOPS", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("=", NULL); addCoreMessage(IRCD,m);
m = createMessage("=", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("WHOIS", anope_event_whois); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("#", anope_event_whois); addCoreMessage(IRCD,m);
}
m = createMessage("AKILL", NULL); addCoreMessage(IRCD,m);
m = createMessage("AKILL", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("V", NULL); addCoreMessage(IRCD,m);
m = createMessage("V", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("GLOBOPS", anope_event_globops); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("]", anope_event_globops); addCoreMessage(IRCD,m);
}
m = createMessage("GNOTICE", NULL); addCoreMessage(IRCD,m);
m = createMessage("GNOTICE", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("Z", NULL); addCoreMessage(IRCD,m);
m = createMessage("Z", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("GOPER", NULL); addCoreMessage(IRCD,m);
m = createMessage("GOPER", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("[", NULL); addCoreMessage(IRCD,m);
m = createMessage("[", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("RAKILL", NULL); addCoreMessage(IRCD,m);
m = createMessage("RAKILL", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("Y", NULL); addCoreMessage(IRCD,m);
m = createMessage("Y", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("SILENCE", NULL); addCoreMessage(IRCD,m);
m = createMessage("SILENCE", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("U", NULL); addCoreMessage(IRCD,m);
m = createMessage("U", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("SVSKILL", NULL); addCoreMessage(IRCD,m);
m = createMessage("SVSKILL", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("h", NULL); addCoreMessage(IRCD,m);
m = createMessage("h", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("SVSMODE", NULL); addCoreMessage(IRCD,m);
m = createMessage("SVSMODE", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("n", NULL); addCoreMessage(IRCD,m);
m = createMessage("n", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("SVS2MODE", NULL); addCoreMessage(IRCD,m);
m = createMessage("SVS2MODE", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("v", NULL); addCoreMessage(IRCD,m);
m = createMessage("v", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("SVSNICK", NULL); addCoreMessage(IRCD,m);
m = createMessage("SVSNICK", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("e", NULL); addCoreMessage(IRCD,m);
m = createMessage("e", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("SVSNOOP", NULL); addCoreMessage(IRCD,m);
m = createMessage("SVSNOOP", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("f", NULL); addCoreMessage(IRCD,m);
m = createMessage("f", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("SQLINE", NULL); addCoreMessage(IRCD,m);
m = createMessage("SQLINE", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("c", NULL); addCoreMessage(IRCD,m);
m = createMessage("c", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("UNSQLINE", NULL); addCoreMessage(IRCD,m);
m = createMessage("UNSQLINE", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("d", NULL); addCoreMessage(IRCD,m);
m = createMessage("d", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("PROTOCTL", anope_event_capab); addCoreMessage(IRCD,m);
if (UseTokens) {
@@ -657,6 +658,32 @@ void moduleAddIRCDMsgs(void) {
if (UseTokens) {
m = createMessage("AG", anope_event_sdesc); addCoreMessage(IRCD,m);
}
m = createMessage("HTM", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("BH", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("HELP", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("4", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("TRACE", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("b", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("LAG", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("AF", anope_event_null); addCoreMessage(IRCD,m);
}
m = createMessage("RPING", anope_event_null); addCoreMessage(IRCD,m);
if (UseTokens) {
m = createMessage("AM", anope_event_null); addCoreMessage(IRCD,m);
}
/* The none token version of these is in messages.c */
if (UseTokens) {
m = createMessage("2", m_stats); addCoreMessage(IRCD,m);
@@ -1371,7 +1398,7 @@ void anope_cmd_svsnick(char *source, char *guest, time_t when)
if (!source || !guest) {
return;
}
send_cmd(NULL, "%S %s %s :%ld", send_token("SVSNICK", "e"), source,
send_cmd(NULL, "%s %s %s :%ld", send_token("SVSNICK", "e"), source,
guest, when);
}
+1 -1
View File
@@ -128,7 +128,7 @@ IRCDCAPAB ircdcap[] = {
0, /* TLKEXT */
CAPAB_DODKEY, /* DODKEY */
CAPAB_DOZIP, /* DOZIP */
0}
0, 0}
};
+11 -1
View File
@@ -8,10 +8,20 @@
VERSION_MAJOR="1"
VERSION_MINOR="7"
VERSION_PATCH="5"
VERSION_BUILD="364"
VERSION_BUILD="365"
# $Log$
#
# BUILD : 1.7.5 (365)
# BUGS : 172
# NOTES : - New directive NewsCount
# - fr.l updated
# - do_memocheck() globalized the time display
# - getmemoinfo() improved to return info about being forbidden
# - fixes svsnick on Unreal
# - anope_event_null to allow ircd devs to point events that go to no where some where
# - fixed SQUIT
#
# BUILD : 1.7.5 (364)
# NOTES : Added nullfix patch from Trystan.
#