diff options
author | trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-10-03 03:58:43 +0000 |
---|---|---|
committer | trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-10-03 03:58:43 +0000 |
commit | 04afc8548091ab4a5ee405dbe40c5ad1ab9f5d98 (patch) | |
tree | 61d5157b8f6f1cc9bfa202dc13ab155702f652b9 /src | |
parent | 7bc5f4a8ed453f1e6922e71a7066f02c8ffc7484 (diff) |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/bahamut.c | 2 | ||||
-rw-r--r-- | src/config.c | 6 | ||||
-rw-r--r-- | src/dreamforge.c | 2 | ||||
-rw-r--r-- | src/hybrid.c | 2 | ||||
-rw-r--r-- | src/memoserv.c | 76 | ||||
-rw-r--r-- | src/messages.c | 5 | ||||
-rw-r--r-- | src/news.c | 4 | ||||
-rw-r--r-- | src/ptlink.c | 15 | ||||
-rw-r--r-- | src/rageircd.c | 2 | ||||
-rw-r--r-- | src/ultimate2.c | 3 | ||||
-rw-r--r-- | src/ultimate3.c | 2 | ||||
-rw-r--r-- | src/unreal31.c | 4 | ||||
-rw-r--r-- | src/unreal32.c | 87 | ||||
-rw-r--r-- | src/viagra.c | 2 |
14 files changed, 146 insertions, 66 deletions
diff --git a/src/bahamut.c b/src/bahamut.c index e54627faf..03b8f47e1 100644 --- a/src/bahamut.c +++ b/src/bahamut.c @@ -129,7 +129,7 @@ IRCDCAPAB ircdcap[] = { 0, /* TLKEXT */ 0, /* DODKEY */ CAPAB_DOZIP, /* DOZIP */ - 0} + 0, 0} }; diff --git a/src/config.c b/src/config.c index 31dc59fa7..e13a35790 100644 --- a/src/config.c +++ b/src/config.c @@ -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; diff --git a/src/dreamforge.c b/src/dreamforge.c index 7ec4fd081..fd12fdefe 100644 --- a/src/dreamforge.c +++ b/src/dreamforge.c @@ -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) diff --git a/src/hybrid.c b/src/hybrid.c index 1247af6ee..953aac10a 100644 --- a/src/hybrid.c +++ b/src/hybrid.c @@ -128,7 +128,7 @@ IRCDCAPAB ircdcap[] = { 0, /* TLKEXT */ 0, /* DODKEY */ 0, /* DOZIP */ - 0} + 0, 0} }; diff --git a/src/memoserv.c b/src/memoserv.c index 131c48d48..9e9612d8e 100644 --- a/src/memoserv.c +++ b/src/memoserv.c @@ -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; } diff --git a/src/messages.c b/src/messages.c index 571a0ea2b..8b4c4f992 100644 --- a/src/messages.c +++ b/src/messages.c @@ -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) { diff --git a/src/news.c b/src/news.c index 1d8120797..0b5ab796b 100644 --- a/src/news.c +++ b/src/news.c @@ -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++; diff --git a/src/ptlink.c b/src/ptlink.c index 7000988ed..fe625054f 100644 --- a/src/ptlink.c +++ b/src/ptlink.c @@ -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 */ diff --git a/src/rageircd.c b/src/rageircd.c index 3b09a4a35..49472fe5d 100644 --- a/src/rageircd.c +++ b/src/rageircd.c @@ -127,7 +127,7 @@ IRCDCAPAB ircdcap[] = { 0, /* TLKEXT */ 0, /* DODKEY */ 0, /* DOZIP */ - 0} + 0, 0} }; diff --git a/src/ultimate2.c b/src/ultimate2.c index 127e2acd5..e47cf6f24 100644 --- a/src/ultimate2.c +++ b/src/ultimate2.c @@ -129,7 +129,8 @@ IRCDCAPAB ircdcap[] = { 0, /* TLKEXT */ 0, /* DODKEY */ 0, /* DOZIP */ - CAPAB_CHANMODE /* CHANMODE */ + CAPAB_CHANMODE, /* CHANMODE */ + 0, } }; diff --git a/src/ultimate3.c b/src/ultimate3.c index 96197c674..93a6a283f 100644 --- a/src/ultimate3.c +++ b/src/ultimate3.c @@ -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) diff --git a/src/unreal31.c b/src/unreal31.c index 80e5bb62b..9e0ae024a 100644 --- a/src/unreal31.c +++ b/src/unreal31.c @@ -129,7 +129,9 @@ IRCDCAPAB ircdcap[] = { CAPAB_TLKEXT, /* TLKEXT */ 0, /* DODKEY */ 0, /* DOZIP */ - 0} + 0, + 0, + } }; unsigned long umodes[128] = { diff --git a/src/unreal32.c b/src/unreal32.c index a0f933971..5755d58b5 100644 --- a/src/unreal32.c +++ b/src/unreal32.c @@ -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); } diff --git a/src/viagra.c b/src/viagra.c index 9a4cd1393..2c3d21dbd 100644 --- a/src/viagra.c +++ b/src/viagra.c @@ -128,7 +128,7 @@ IRCDCAPAB ircdcap[] = { 0, /* TLKEXT */ CAPAB_DODKEY, /* DODKEY */ CAPAB_DOZIP, /* DOZIP */ - 0} + 0, 0} }; |