summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrystan 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
committertrystan 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
commit04afc8548091ab4a5ee405dbe40c5ad1ab9f5d98 (patch)
tree61d5157b8f6f1cc9bfa202dc13ab155702f652b9 /src
parent7bc5f4a8ed453f1e6922e71a7066f02c8ffc7484 (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.c2
-rw-r--r--src/config.c6
-rw-r--r--src/dreamforge.c2
-rw-r--r--src/hybrid.c2
-rw-r--r--src/memoserv.c76
-rw-r--r--src/messages.c5
-rw-r--r--src/news.c4
-rw-r--r--src/ptlink.c15
-rw-r--r--src/rageircd.c2
-rw-r--r--src/ultimate2.c3
-rw-r--r--src/ultimate3.c2
-rw-r--r--src/unreal31.c4
-rw-r--r--src/unreal32.c87
-rw-r--r--src/viagra.c2
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}
};