mirror of
https://github.com/anope/anope.git
synced 2026-06-18 07:54:46 +02:00
Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9ab97ae21a | |||
| 246a2c664b | |||
| ad4180e2d6 | |||
| 01906d0b74 | |||
| 005d3f9558 | |||
| a895077b54 | |||
| 7e10fca23b | |||
| b2d258328a | |||
| ef5c945e0b | |||
| 1e0bfbd15a | |||
| cb73ab9d23 | |||
| ac90a6935a | |||
| 766fe138e4 | |||
| dafccc1821 | |||
| ace25983a4 | |||
| bb7b8e27ee | |||
| 72fa53c20e | |||
| eb0c255fad | |||
| 01994c1ba1 | |||
| ec7bc8dd41 | |||
| 6ee50f852e | |||
| 6cd3b56805 | |||
| 27ad395a56 | |||
| c4247b71b2 | |||
| 5a51984db1 | |||
| b75abf9ba3 | |||
| f39c428ac5 | |||
| 60f0b2ff87 | |||
| 6242a60134 | |||
| dd198b89c0 | |||
| 2cfcf3c512 |
@@ -1,3 +1,19 @@
|
||||
Anope Version 1.8.4
|
||||
-------------------
|
||||
3/10 A Added support for tracking permanent channels [ #00]
|
||||
3/24 A Added logging of deleting and clearing XOP access lists [ #00]
|
||||
2/9 F Fixed marking halfops as deopped, stops unsetting modes by them [#1136]
|
||||
2/18 F Fixed listing unconfirmed nicks with suspended nicks to SA+ [ #00]
|
||||
3/2 F Fixed a bug that could cause access entries to disappear [ #00]
|
||||
3/13 F Fixed maximum hostname checking in HS SET and HS REQUEST [#1138]
|
||||
3/13 F Fixed deleting force dropped nicks from the hs_waiting list [#1139]
|
||||
3/13 F Fixed backing up 3rd party module databases more than once a day [#1140]
|
||||
3/16 F Fixed os_info to display syntax errors if no command is entered [ #00]
|
||||
3/29 F Fixed defcon to only apply its mode parameters when it's on [#1146]
|
||||
3/29 F Fixed numbering of memos when saved in SQL [#1149]
|
||||
3/30 F Fixed module demos to work correctly on TS6 IRCDs [ #00]
|
||||
4/3 F Fixed saving databases in readonly mode when using anoperc [ #00]
|
||||
|
||||
Anope Version 1.8.3
|
||||
-------------------
|
||||
Provided by Anope Dev. <team@anope.org> - 2009
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
Anope Version 1.8.4
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** MODIFIED CONFIGURATION DIRECTIVES **
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
|
||||
Anope Version 1.8.3
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
Anope Version 1.8.4
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
*** Mod Strings:
|
||||
NICK_HELP_LIST
|
||||
|
||||
*** Del Strings:
|
||||
|
||||
|
||||
Anope Version 1.8.3
|
||||
-------------------
|
||||
*** New Strings:
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
Anope Version 1.8.4
|
||||
-------------------
|
||||
- NONE
|
||||
|
||||
Anope Version 1.8.3
|
||||
-------------------
|
||||
ALTER TABLE `anope_ns_access` DROP INDEX `display` ;
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ spotless:
|
||||
-@erase include\language.h include\version.h *.manifest *~ anope.exe version.sh.exe *.obj anopesmtp.exe
|
||||
-@echo --
|
||||
-@echo NOTICE:
|
||||
-@echo You will need to run cscript /nologo install.js again
|
||||
-@echo You will need to run config.bat again
|
||||
-@echo --
|
||||
|
||||
mypasql:
|
||||
|
||||
@@ -501,24 +501,13 @@ How To Add IRCd Support
|
||||
to read these lines and set itself up to to handle these events better.
|
||||
When adding support for your ircd, take the following steps.
|
||||
|
||||
1) In the ircd.c find the function anope_cmd_capab(); this function will
|
||||
send the CAPAB/PROTOCTL line (consult your ircd documentation for
|
||||
which to send). In a single line type in the tokens that anope must
|
||||
send. Here is an example of Hybrid's capab line:
|
||||
|
||||
/* CAPAB */
|
||||
void anope_cmd_capab()
|
||||
{
|
||||
send_cmd(NULL, "CAPAB TS5 EX IE HOPS HUB AOPS");
|
||||
}
|
||||
|
||||
2) In the ircd.h file make sure to place the defines (see below) that
|
||||
1) In the ircd.h file make sure to place the defines (see below) that
|
||||
match your IRCd's tokens; only use the ones that matter to your ircd.
|
||||
Should your IRCd add new features not covered in the defined, please
|
||||
contact the Anope Dev team before doing so. See README for information
|
||||
on how to contact the Anope team.
|
||||
|
||||
3) Ensure that the CAPAB/PROTOCTL event his handled correctly.
|
||||
2) Ensure that the CAPAB/PROTOCTL event his handled correctly.
|
||||
|
||||
A) In the function "moduleAddIRCDMsgs" making sure that you have the
|
||||
following two lines:
|
||||
|
||||
@@ -111,6 +111,7 @@ Table of Contents
|
||||
* Janos Kapitany <sarkanyka@cjbchat.hu> (hun.l)
|
||||
* Szymon S'wierkosz <szymek@adres.pl> (pl.l)
|
||||
* Christopher N. <saka@epiknet.org> (fr.l)
|
||||
* Yusuf Kurekci <ysfm.20@gmail.com> (tr.l)
|
||||
|
||||
Anope uses the strlcat() and strlcpy() functions from OpenSSH 2.5.1p2.
|
||||
These functions are copyrighted by Todd C. Miller:
|
||||
|
||||
+1
-1
@@ -64,7 +64,7 @@ Anope for Windows
|
||||
|
||||
e.g.
|
||||
|
||||
cd c:\anope-trunk
|
||||
cd c:\anope-stable
|
||||
|
||||
4) You now need to configure Anope to your requirements. At the prompt type:
|
||||
|
||||
|
||||
+3
-21
@@ -530,7 +530,6 @@ E int rdb_save_ns_alias(NickAlias * na);
|
||||
E int rdb_save_ns_req(NickRequest * nr);
|
||||
E int rdb_save_cs_info(ChannelInfo * ci);
|
||||
E int rdb_save_bs_core(BotInfo * bi);
|
||||
E int rdb_save_bs_rdb_core(BotInfo * bi);
|
||||
E int rdb_save_hs_core(HostCore * hc);
|
||||
E int rdb_save_os_db(unsigned int maxucnt, unsigned int maxutime,
|
||||
SList * ak, SList * sgl, SList * sql, SList * szl);
|
||||
@@ -574,13 +573,9 @@ E char *DefConOffMessage;
|
||||
E long unsigned int UserKey1;
|
||||
E long unsigned int UserKey2;
|
||||
E long unsigned int UserKey3;
|
||||
/**** converter.c ****/
|
||||
|
||||
E int convert_ircservices_44(void);
|
||||
|
||||
/**** encrypt.c ****/
|
||||
E char *EncModule;
|
||||
E void initEncryption();
|
||||
E int enc_encrypt(const char *src, int len, char *dest, int size);
|
||||
E int enc_encrypt_in_place(char *buf, int size);
|
||||
E int enc_encrypt_check_len(int passlen, int bufsize);
|
||||
@@ -696,6 +691,7 @@ E void pmodule_set_umode(void (*func) (User * user, int ac, char **av));
|
||||
E void pmodule_valid_nick(int (*func) (char *nick));
|
||||
E void pmodule_valid_chan(int (*func) (char *chan));
|
||||
E void pmodule_flood_mode_check(int (*func) (char *value));
|
||||
E void pmodule_jointhrottle_mode_check(int (*func) (char *value));
|
||||
E void pmodule_ircd_var(IRCDVar * ircdvar);
|
||||
E void pmodule_ircd_cap(IRCDCAPAB * cap);
|
||||
E void pmodule_ircd_version(char *version);
|
||||
@@ -714,7 +710,7 @@ E void pmodule_secret_cmode(int mode);
|
||||
E void pmodule_private_cmode(int mode);
|
||||
E void pmodule_key_mode(int mode);
|
||||
E void pmodule_limit_mode(int mode);
|
||||
E void pmodule_jointhrottle_mode_check(int (*func) (char *value));
|
||||
E void pmodule_permchan_mode(int mode);
|
||||
|
||||
E int anope_get_secret_mode();
|
||||
E int anope_get_invite_mode();
|
||||
@@ -723,6 +719,7 @@ E int anope_get_limit_mode();
|
||||
E int anope_get_private_mode();
|
||||
E int anope_get_invis_mode();
|
||||
E int anope_get_oper_mode();
|
||||
E int anope_get_permchan_mode();
|
||||
|
||||
/**** language.c ****/
|
||||
|
||||
@@ -1246,23 +1243,17 @@ E void anope_cmd_376(char *source); /* 376 */
|
||||
E void anope_cmd_391(char *source, char *timestr); /* 391 */
|
||||
E void anope_cmd_401(char *source, char *who); /* 401 */
|
||||
E void anope_cmd_akill(char *user, char *host, char *who, time_t when, time_t expires, char *reason); /* AKILL */
|
||||
E void anope_cmd_capab(); /* CAPAB */
|
||||
E void anope_cmd_chghost(char *nick, char *vhost); /* CHGHOST */
|
||||
E void anope_cmd_chgident(char *nick, char *vIdent); /* CHGIDENT */
|
||||
E void anope_cmd_vhost_on(char *nick, char *vIdent, char *vhost); /* CHGHOST + CHGIDENT */
|
||||
E void anope_cmd_vhost_off(User *u);
|
||||
E void anope_cmd_connect(int servernum); /* Connect */
|
||||
E void anope_cmd_bob();
|
||||
E void anope_cmd_ea(); /* EA */
|
||||
E void anope_cmd_global(char *source, const char *fmt, ...); /* GLOBOPS */
|
||||
E void anope_cmd_invite(char *source, char *chan, char *nick); /* INVITE */
|
||||
E void anope_cmd_join(char *user, char *channel, time_t chantime); /* JOIN */
|
||||
E void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt, ...); /* KICK */
|
||||
E void anope_cmd_mode(char *source, char *dest, const char *fmt, ...); /* MODE */
|
||||
E void anope_cmd_tmode(char *source, char *dest, const char *fmt, ...); /* TMODE */
|
||||
E void anope_cmd_unban(char *name, char *nick); /* MODE -b */
|
||||
E void anope_cmd_bot_chan_mode(char *nick, char *chan); /* MODE BotServ */
|
||||
E void anope_cmd_netinfo(int ac, char **av); /* NETINFO */
|
||||
E void anope_cmd_nick(char *nick, char *name, char *mode); /* NICK */
|
||||
E void anope_cmd_chg_nick(char *oldnick, char *newnick); /* NICK */
|
||||
E void anope_cmd_bot_nick(char *nick, char *user,char *host,char *real,char *modes); /* NICK */
|
||||
@@ -1272,25 +1263,19 @@ E void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...);
|
||||
E void anope_cmd_notice2(char *source, char *dest, char *msg); /* NOTICE */
|
||||
E void anope_cmd_serv_notice(char *source, char *dest, char *msg); /* NOTICE */
|
||||
E void anope_cmd_part(char *nick, char *chan, const char *fmt, ...); /* PART */
|
||||
E void anope_cmd_pass(char *pass); /* PASS */
|
||||
E void anope_cmd_pong(char *servname, char *who); /* PONG */
|
||||
E void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...); /* PRIVMSG */
|
||||
E void anope_cmd_action(char *source, char *dest, const char *fmt, ...); /* PRIVMSG */
|
||||
E void anope_cmd_privmsg2(char *source, char *dest, char *msg); /* PRIVMSG */
|
||||
E void anope_cmd_serv_privmsg(char *source, char *dest, char *msg); /* PRIVMSG */
|
||||
E void anope_cmd_protoctl(); /* PROTOCTL */
|
||||
E void anope_cmd_quit(char *source, const char *fmt, ...); /* QUIT */
|
||||
E void anope_cmd_remove_akill(char *user, char *host); /* RAKILL */
|
||||
E void anope_cmd_server(char *servname, int hop, char *descript); /* SERVER */
|
||||
E void anope_cmd_sgline(char *mask, char *reason); /* SGLINE */
|
||||
E void anope_cmd_sqline(char *mask, char *reason); /* SQLINE */
|
||||
E void anope_cmd_szline(char *mask, char *reason, char *whom); /* SZLINE */
|
||||
E void anope_cmd_squit(char *servname, char *message); /* SQUIT */
|
||||
E void anope_cmd_svinfo(); /* SVINFO */
|
||||
E void anope_cmd_svsadmin(char *server, int set); /* SVSADMIN */
|
||||
E void anope_cmd_svshold(char *nick); /* SVSHOLD */
|
||||
E void anope_cmd_release_svshold(char *nick); /* SVSHOLD */
|
||||
E void anope_cmd_svsinfo(); /* SVSINFO */
|
||||
E void anope_cmd_svsjoin(char *source, char *nick,char *chan, char *param); /* SVSJOIN */
|
||||
E void anope_cmd_svskill(char *source,char *user, const char *fmt, ...); /* SVSKILL */
|
||||
E void anope_cmd_svsmode(User * u, int ac, char **av); /* SVSMODE */
|
||||
@@ -1305,8 +1290,6 @@ E void anope_cmd_unsgline(char *mask); /* UNSGLINE */
|
||||
E void anope_cmd_unsqline(char *user); /* UNSQLINE */
|
||||
E void anope_cmd_unszline(char *mask); /* UNSZLINE */
|
||||
E void anope_cmd_eob(); /* EOB - end of burst */
|
||||
E void anope_cmd_burst(); /* BURST - use eob to send burst 0 */
|
||||
E void anope_cmd_svswatch(char *sender, char *nick, char *parm);
|
||||
E void anope_cmd_ctcp(char *source, char *dest, const char *fmt, ...); /* CTCP */
|
||||
|
||||
EI int anope_event_482(char *source, int ac, char **av);
|
||||
@@ -1354,7 +1337,6 @@ EI int anope_event_eob(char *source, int ac, char **av);
|
||||
EI int anope_event_pass(char *source, int ac, char **av);
|
||||
EI int anope_event_netinfo(char *source, int ac, char **av);
|
||||
EI int anope_event_error(char *source, int ac, char **av);
|
||||
EI int anope_event_eb(char *source, int ac, char **av);
|
||||
EI int anope_event_netctrl(char *source, int ac, char **av);
|
||||
EI int anope_event_notice(char *source, int ac, char **av);
|
||||
EI int anope_event_snotice(char *source, int ac, char **av);
|
||||
|
||||
@@ -1231,6 +1231,7 @@ typedef struct ircd_modes_ {
|
||||
int chan_private;
|
||||
int chan_key;
|
||||
int chan_limit;
|
||||
int chan_perm;
|
||||
} IRCDModes;
|
||||
|
||||
|
||||
|
||||
@@ -3900,6 +3900,7 @@ NICK_HELP_LIST
|
||||
Lists all registered nicknames which match the given
|
||||
pattern, in nick!user@host format. Nicks with the
|
||||
PRIVATE option set will not be displayed.
|
||||
Note that a pattern preceding with a '#' specifies a range.
|
||||
|
||||
Examples:
|
||||
|
||||
@@ -3913,6 +3914,9 @@ NICK_HELP_LIST
|
||||
LIST *!*@*.bar.org
|
||||
Lists all nicks owned by users in the bar.org
|
||||
domain.
|
||||
|
||||
LIST #50-100
|
||||
Lists nicks numbers 50-100
|
||||
|
||||
NICK_HELP_ALIST
|
||||
Syntax: ALIST [level]
|
||||
|
||||
+4
-1
@@ -850,7 +850,10 @@ static void check_ban(ChannelInfo * ci, User * u, int ttbtype)
|
||||
return;
|
||||
|
||||
bd->ttb[ttbtype]++;
|
||||
if (bd->ttb[ttbtype] == ci->ttb[ttbtype]) {
|
||||
if (ci->ttb[ttbtype] && bd->ttb[ttbtype] >= ci->ttb[ttbtype]) {
|
||||
/* bd->ttb[ttbtype] can possibly be > ci->ttb[ttbtype] if ci->ttb[ttbtype] was changed after
|
||||
* the user has been kicked - Adam
|
||||
*/
|
||||
char *av[4];
|
||||
int ac;
|
||||
char mask[BUFSIZE];
|
||||
|
||||
+15
-4
@@ -52,6 +52,10 @@ void chan_deluser(User * user, Channel * c)
|
||||
anope_cmd_part(c->ci->bi->nick, c->name, NULL);
|
||||
}
|
||||
|
||||
/* Channel is permament and shouldn't be deleted */
|
||||
if (anope_get_permchan_mode() && c->mode & anope_get_permchan_mode())
|
||||
return;
|
||||
|
||||
if (!c->users)
|
||||
chan_delete(c);
|
||||
}
|
||||
@@ -262,9 +266,9 @@ void chan_set_modes(const char *source, Channel * chan, int ac, char **av,
|
||||
|
||||
if (add) {
|
||||
chan_set_user_status(chan, user, cum->status);
|
||||
/* If this does +o, remove any DEOPPED flag */
|
||||
if (cum->status & CUS_OP)
|
||||
chan_remove_user_status(chan, user, CUS_DEOPPED);
|
||||
/* If this does +o or +h, remove any DEOPPED flag */
|
||||
if (cum->status & CUS_OP || cum->status & CUS_HALFOP)
|
||||
chan_remove_user_status(chan, user, CUS_DEOPPED);
|
||||
} else {
|
||||
chan_remove_user_status(chan, user, cum->status);
|
||||
}
|
||||
@@ -1512,6 +1516,8 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes)
|
||||
strcat(modebuf, "h");
|
||||
strcat(userbuf, " ");
|
||||
strcat(userbuf, GET_USER(user));
|
||||
/* Halfops are ops too, having a halfop with CUS_DEOPPED is not good - Adam */
|
||||
rem_modes |= CUS_DEOPPED;
|
||||
} else {
|
||||
add_modes &= ~CUS_HALFOP;
|
||||
}
|
||||
@@ -1543,12 +1549,17 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes)
|
||||
strcat(modebuf, "o");
|
||||
strcat(userbuf, " ");
|
||||
strcat(userbuf, GET_USER(user));
|
||||
add_modes |= CUS_DEOPPED;
|
||||
/* Do not mark a user as deopped if they are halfopd - Adam */
|
||||
if (!(add_modes & CUS_HALFOP) && !(status & CUS_HALFOP))
|
||||
add_modes |= CUS_DEOPPED;
|
||||
}
|
||||
if (rem_modes & CUS_HALFOP) {
|
||||
strcat(modebuf, "h");
|
||||
strcat(userbuf, " ");
|
||||
strcat(userbuf, GET_USER(user));
|
||||
/* Do not mark a user as deopped if they are opped - Adam */
|
||||
if (!(add_modes & CUS_OP) && !(status & CUS_OP))
|
||||
add_modes |= CUS_DEOPPED;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+8
-8
@@ -1086,6 +1086,7 @@ void check_modes(Channel * c)
|
||||
ChannelInfo *ci;
|
||||
CBModeInfo *cbmi = NULL;
|
||||
CBMode *cbm = NULL;
|
||||
boolean DefConOn = DefConLevel != 5;
|
||||
|
||||
if (!c) {
|
||||
if (debug) {
|
||||
@@ -1131,7 +1132,7 @@ void check_modes(Channel * c)
|
||||
*/
|
||||
if (ci)
|
||||
modes = ~c->mode & ci->mlock_on;
|
||||
if (DefConModesSet)
|
||||
if (DefConOn && DefConModesSet)
|
||||
modes |= (~c->mode & DefConModesOn);
|
||||
|
||||
/* Initialize the buffers */
|
||||
@@ -1147,7 +1148,7 @@ void check_modes(Channel * c)
|
||||
if (cbmi->getvalue && cbmi->csgetvalue) {
|
||||
char *value;
|
||||
/* Check if it's a defcon or mlock mode */
|
||||
if (DefConModesOn & cbmi->flag)
|
||||
if (DefConOn && DefConModesOn & cbmi->flag)
|
||||
value = cbmi->csgetvalue(&DefConModesCI);
|
||||
else if (ci)
|
||||
value = cbmi->csgetvalue(ci);
|
||||
@@ -1168,13 +1169,13 @@ void check_modes(Channel * c)
|
||||
}
|
||||
} else if (cbmi->getvalue && cbmi->csgetvalue
|
||||
&& ((ci && (ci->mlock_on & cbmi->flag))
|
||||
|| (DefConModesOn & cbmi->flag))
|
||||
|| (DefConOn && DefConModesOn & cbmi->flag))
|
||||
&& (c->mode & cbmi->flag)) {
|
||||
char *value = cbmi->getvalue(c);
|
||||
char *csvalue;
|
||||
|
||||
/* Check if it's a defcon or mlock mode */
|
||||
if (DefConModesOn & cbmi->flag)
|
||||
if (DefConOn && DefConModesOn & cbmi->flag)
|
||||
csvalue = cbmi->csgetvalue(&DefConModesCI);
|
||||
else if (ci)
|
||||
csvalue = cbmi->csgetvalue(ci);
|
||||
@@ -1205,10 +1206,10 @@ void check_modes(Channel * c)
|
||||
if (ci) {
|
||||
modes = c->mode & ci->mlock_off;
|
||||
/* Make sure we don't remove a mode just set by defcon.. ~ Viper */
|
||||
if (DefConModesSet)
|
||||
if (DefConOn && DefConModesSet)
|
||||
modes &= ~(modes & DefConModesOn);
|
||||
}
|
||||
if (DefConModesSet)
|
||||
if (DefConOn && DefConModesSet)
|
||||
modes |= c->mode & DefConModesOff;
|
||||
|
||||
if (modes) {
|
||||
@@ -1570,7 +1571,7 @@ int check_kick(User * user, char *chan, time_t chants)
|
||||
if (akick->flags & AK_ISNICK)
|
||||
get_idealban(ci, user, mask, sizeof(mask));
|
||||
else
|
||||
strcpy(mask, akick->u.mask);
|
||||
strscpy(mask, akick->u.mask, sizeof(mask));
|
||||
reason = akick->reason ? akick->reason : CSAutokickReason;
|
||||
goto kick;
|
||||
}
|
||||
@@ -1857,7 +1858,6 @@ void cs_remove_nick(const NickCore * nc)
|
||||
if (ca->in_use && ca->nc == nc) {
|
||||
ca->in_use = 0;
|
||||
ca->nc = NULL;
|
||||
ci->accesscount--;
|
||||
}
|
||||
}
|
||||
CleanAccess(ci);
|
||||
|
||||
+2
-2
@@ -123,8 +123,6 @@ int do_cs_kick(User * u)
|
||||
notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, chan);
|
||||
} else if (is_same ? !(u2 = u) : !(u2 = finduser(params))) {
|
||||
notice_lang(s_ChanServ, u, NICK_X_NOT_IN_USE, params);
|
||||
} else if (!is_on_chan(c, u2)) {
|
||||
notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u2->nick, c->name);
|
||||
} else if (!is_same ? !check_access(u, ci, CA_KICK) :
|
||||
!check_access(u, ci, CA_KICKME)) {
|
||||
notice_lang(s_ChanServ, u, ACCESS_DENIED);
|
||||
@@ -133,6 +131,8 @@ int do_cs_kick(User * u)
|
||||
notice_lang(s_ChanServ, u, PERMISSION_DENIED);
|
||||
} else if (is_protected(u2)) {
|
||||
notice_lang(s_ChanServ, u, PERMISSION_DENIED);
|
||||
} else if (!is_on_chan(c, u2)) {
|
||||
notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u2->nick, c->name);
|
||||
} else {
|
||||
char *av[3];
|
||||
|
||||
|
||||
+6
-6
@@ -243,10 +243,10 @@ int do_owner(User * u)
|
||||
notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, c->name);
|
||||
} else if (ci->flags & CI_VERBOTEN) {
|
||||
notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, ci->name);
|
||||
} else if (!is_on_chan(c, u)) {
|
||||
notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u->nick, c->name);
|
||||
} else if (!is_founder(u, ci)) {
|
||||
notice_lang(s_ChanServ, u, ACCESS_DENIED);
|
||||
} else if (!is_on_chan(c, u)) {
|
||||
notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u->nick, c->name);
|
||||
} else {
|
||||
anope_cmd_mode(whosends(ci), c->name, "%s %s", ircd->ownerset,
|
||||
GET_USER(u));
|
||||
@@ -299,10 +299,10 @@ int do_deowner(User * u)
|
||||
notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, c->name);
|
||||
} else if (ci->flags & CI_VERBOTEN) {
|
||||
notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, ci->name);
|
||||
} else if (!is_on_chan(c, u)) {
|
||||
notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u->nick, c->name);
|
||||
} else if (!is_founder(u, ci)) {
|
||||
notice_lang(s_ChanServ, u, ACCESS_DENIED);
|
||||
} else if (!is_on_chan(c, u)) {
|
||||
notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u->nick, c->name);
|
||||
} else {
|
||||
anope_cmd_mode(whosends(ci), c->name, "%s %s", ircd->ownerunset,
|
||||
GET_USER(u));
|
||||
@@ -366,8 +366,6 @@ int do_util(User * u, CSModeUtil * util)
|
||||
notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, ci->name);
|
||||
} else if (is_same ? !(u2 = u) : !(u2 = finduser(nick))) {
|
||||
notice_lang(s_ChanServ, u, NICK_X_NOT_IN_USE, nick);
|
||||
} else if (!is_on_chan(c, u2)) {
|
||||
notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u2->nick, c->name);
|
||||
} else if (is_same ? !check_access(u, ci, util->levelself) :
|
||||
!check_access(u, ci, util->level)) {
|
||||
notice_lang(s_ChanServ, u, ACCESS_DENIED);
|
||||
@@ -376,6 +374,8 @@ int do_util(User * u, CSModeUtil * util)
|
||||
notice_lang(s_ChanServ, u, PERMISSION_DENIED);
|
||||
} else if (*util->mode == '-' && is_protected(u2) && !is_same) {
|
||||
notice_lang(s_ChanServ, u, PERMISSION_DENIED);
|
||||
} else if (!is_on_chan(c, u2)) {
|
||||
notice_lang(s_ChanServ, u, NICK_X_NOT_ON_CHAN, u2->nick, c->name);
|
||||
} else {
|
||||
anope_cmd_mode(whosends(ci), c->name, "%s %s", util->mode,
|
||||
GET_USER(u2));
|
||||
|
||||
+1
-1
@@ -774,9 +774,9 @@ int do_set_xop(User * u, ChannelInfo * ci, char *param)
|
||||
} else {
|
||||
access->in_use = 0;
|
||||
access->nc = NULL;
|
||||
CleanAccess(ci);
|
||||
}
|
||||
}
|
||||
CleanAccess(ci);
|
||||
|
||||
reset_levels(ci);
|
||||
ci->flags |= CI_XOP;
|
||||
|
||||
@@ -374,8 +374,10 @@ int do_xop(User * u, char *xname, int xlev, int *xmsgs)
|
||||
notice_lang(s_ChanServ, u, xmsgs[7], ci->name);
|
||||
}
|
||||
} else if (deleted == 1) {
|
||||
alog("%s: %s!%s@%s (level %d) deleted access of user %s on %s", s_ChanServ, u->nick, u->username, u->host, get_access(u, ci), nick, ci->name);
|
||||
notice_lang(s_ChanServ, u, xmsgs[9], ci->name);
|
||||
} else {
|
||||
alog("%s: %s!%s@%s (level %d) deleted access of users %s on %s", s_ChanServ, u->nick, u->username, u->host, get_access(u, ci), nick, ci->name);
|
||||
notice_lang(s_ChanServ, u, xmsgs[10], deleted, ci->name);
|
||||
}
|
||||
} else {
|
||||
@@ -400,6 +402,7 @@ int do_xop(User * u, char *xname, int xlev, int *xmsgs)
|
||||
deleted = 0;
|
||||
notice_lang(s_ChanServ, u, PERMISSION_DENIED);
|
||||
} else {
|
||||
alog("%s: %s!%s@%s (level %d) deleted access of %s on %s", s_ChanServ, u->nick, u->username, u->host, get_access(u, ci), access->nc->display, ci->name);
|
||||
notice_lang(s_ChanServ, u, xmsgs[8], access->nc->display,
|
||||
ci->name);
|
||||
access->nc = NULL;
|
||||
@@ -464,6 +467,8 @@ int do_xop(User * u, char *xname, int xlev, int *xmsgs)
|
||||
|
||||
CleanAccess(ci);
|
||||
|
||||
alog("%s: %s!%s@%s cleared the %s list of %s", s_ChanServ, u->nick, u->username, u->host, xname, ci->name);
|
||||
|
||||
send_event(EVENT_ACCESS_CLEAR, 2, ci->name, u->nick);
|
||||
|
||||
notice_lang(s_ChanServ, u, xmsgs[13], ci->name);
|
||||
|
||||
+2
-2
@@ -119,8 +119,8 @@ int myDoSet(User * u)
|
||||
return MOD_CONT;
|
||||
}
|
||||
}
|
||||
if (strlen(rawhostmask) < HOSTMAX - 1)
|
||||
snprintf(hostmask, HOSTMAX - 1, "%s", rawhostmask);
|
||||
if (strlen(rawhostmask) < HOSTMAX)
|
||||
snprintf(hostmask, HOSTMAX, "%s", rawhostmask);
|
||||
else {
|
||||
notice_lang(s_HostServ, u, HOST_SET_TOOLONG, HOSTMAX);
|
||||
if (vIdent) {
|
||||
|
||||
@@ -122,8 +122,8 @@ int do_setall(User * u)
|
||||
}
|
||||
}
|
||||
|
||||
if (strlen(rawhostmask) < HOSTMAX - 1)
|
||||
snprintf(hostmask, HOSTMAX - 1, "%s", rawhostmask);
|
||||
if (strlen(rawhostmask) < HOSTMAX)
|
||||
snprintf(hostmask, HOSTMAX, "%s", rawhostmask);
|
||||
else {
|
||||
notice_lang(s_HostServ, u, HOST_SET_TOOLONG, HOSTMAX);
|
||||
if (vIdent) {
|
||||
|
||||
+1
-1
@@ -221,7 +221,7 @@ int do_list(User * u)
|
||||
}
|
||||
}
|
||||
|
||||
if (nronly == 1 || (is_servadmin && matchflags == 0)) {
|
||||
if (nronly == 1 || (is_servadmin && matchflags == 0 && susp_keyword == 0)) {
|
||||
noexpire_char = ' ';
|
||||
for (i = 0; i < 1024; i++) {
|
||||
for (nr = nrlists[i]; nr; nr = nr->next) {
|
||||
|
||||
@@ -383,6 +383,7 @@ int do_confirm(User * u)
|
||||
}
|
||||
|
||||
} else {
|
||||
free(passcode);
|
||||
notice_lang(s_NickServ, u, NICK_FORCE_REG, nr->nick);
|
||||
}
|
||||
delnickrequest(nr); /* remove the nick request */
|
||||
@@ -391,6 +392,9 @@ int do_confirm(User * u)
|
||||
notice_lang(s_NickServ, u, NICK_REGISTRATION_FAILED);
|
||||
}
|
||||
|
||||
if (email)
|
||||
free(email);
|
||||
|
||||
/* Enable nick tracking if enabled */
|
||||
if (NSNickTracking)
|
||||
nsStartNickTracking(u);
|
||||
|
||||
+7
-18
@@ -732,7 +732,7 @@ void backup_databases(void)
|
||||
|
||||
void ModuleDatabaseBackup(char *dbname)
|
||||
{
|
||||
|
||||
char ext[9];
|
||||
time_t t;
|
||||
struct tm tm;
|
||||
|
||||
@@ -743,23 +743,12 @@ void ModuleDatabaseBackup(char *dbname)
|
||||
time(&t);
|
||||
tm = *localtime(&t);
|
||||
|
||||
if (!curday) {
|
||||
curday = tm.tm_yday;
|
||||
return;
|
||||
}
|
||||
|
||||
if (curday != tm.tm_yday) {
|
||||
|
||||
char ext[9];
|
||||
|
||||
if (debug) {
|
||||
alog("Module Database Backing up %s", dbname);
|
||||
}
|
||||
ModuleRemoveBackups(dbname);
|
||||
curday = tm.tm_yday;
|
||||
strftime(ext, sizeof(ext), "%Y%m%d", &tm);
|
||||
rename_database(dbname, ext);
|
||||
}
|
||||
if (debug)
|
||||
alog("Module Database Backing up %s", dbname);
|
||||
ModuleRemoveBackups(dbname);
|
||||
curday = tm.tm_yday;
|
||||
strftime(ext, sizeof(ext), "%Y%m%d", &tm);
|
||||
rename_database(dbname, ext);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
@@ -362,6 +362,7 @@ static int parse_options(int ac, char **av)
|
||||
fprintf(stdout,
|
||||
"-expire -expire expiretime(secs)\n");
|
||||
fprintf(stdout, "-debug -debug\n");
|
||||
fprintf(stdout, "-protocoldebug -protocoldebug\n");
|
||||
fprintf(stdout, "-nofork -nofork\n");
|
||||
fprintf(stdout, "-logchan -logchan channelname\n");
|
||||
fprintf(stdout, "-skeleton -skeleton\n");
|
||||
|
||||
+11
@@ -1203,6 +1203,11 @@ void pmodule_limit_mode(int mode)
|
||||
void pmodule_invite_cmode(int mode)
|
||||
{
|
||||
ircd_modes.chan_invite = mode;
|
||||
}
|
||||
|
||||
void pmodule_secret_cmode(int mode)
|
||||
{
|
||||
ircd_modes.chan_secret = mode;
|
||||
}
|
||||
|
||||
void pmodule_private_cmode(int mode)
|
||||
@@ -1237,3 +1242,9 @@ int anope_get_limit_mode()
|
||||
|
||||
int anope_get_invite_mode()
|
||||
{
|
||||
return ircd_modes.chan_invite;
|
||||
}
|
||||
|
||||
int anope_get_secret_mode()
|
||||
{
|
||||
return ircd_modes.chan_secret;
|
||||
|
||||
+1
-1
@@ -242,7 +242,7 @@ int MailValidate(const char *email)
|
||||
|
||||
if (!email)
|
||||
return 0;
|
||||
strcpy(copy, email);
|
||||
strscpy(copy, email, sizeof(copy));
|
||||
|
||||
domain = strchr(copy, '@');
|
||||
if (!domain)
|
||||
|
||||
+5
-3
@@ -145,6 +145,8 @@ extern void expire_all(void)
|
||||
|
||||
void save_databases(void)
|
||||
{
|
||||
if (readonly)
|
||||
return;
|
||||
waiting = -19;
|
||||
send_event(EVENT_DB_SAVING, 1, EVENT_START);
|
||||
waiting = -2;
|
||||
@@ -331,7 +333,7 @@ void sighandler(int signum)
|
||||
* always set when we need it. It seems some signals slip through to the
|
||||
* QUIT code without having a valid quitmsg. -GD
|
||||
*/
|
||||
quitmsg = sstrdup("Signal Received");
|
||||
quitmsg = "Signal Received";
|
||||
if (started) {
|
||||
#ifndef _WIN32
|
||||
if (signum == SIGHUP) { /* SIGHUP = save databases and restart */
|
||||
@@ -362,8 +364,8 @@ void sighandler(int signum)
|
||||
save_databases();
|
||||
|
||||
if (!read_config(1)) {
|
||||
sprintf(quitmsg,
|
||||
"Error Reading Configuration File (Received SIGUSR2)");
|
||||
static char *buf = "Error Reading Configuration File (Received SIGUSR2)";
|
||||
quitmsg = buf;
|
||||
quitting = 1;
|
||||
}
|
||||
send_event(EVENT_RELOAD, 1, EVENT_START);
|
||||
|
||||
@@ -274,6 +274,9 @@ void memo_send(User * u, char *name, char *text, int z)
|
||||
m->time = time(NULL);
|
||||
m->text = sstrdup(text);
|
||||
m->flags = MF_UNREAD;
|
||||
#ifdef USE_MYSQL
|
||||
m->id = 0;
|
||||
#endif
|
||||
/* Set notify sent flag - DrStein */
|
||||
if (z == 2) {
|
||||
m->flags |= MF_NOTIFYS;
|
||||
|
||||
@@ -24,15 +24,11 @@ int AnopeInit(int argc, char **argv)
|
||||
{
|
||||
Message *msg = NULL;
|
||||
int status;
|
||||
#ifdef IRC_UNREAL32
|
||||
if (UseTokens) {
|
||||
msg = createMessage("!", my_privmsg);
|
||||
} else {
|
||||
msg = createMessage("PRIVMSG", my_privmsg);
|
||||
}
|
||||
#else
|
||||
msg = createMessage("PRIVMSG", my_privmsg);
|
||||
#endif
|
||||
status = moduleAddMessage(msg, MOD_HEAD);
|
||||
if (status == MOD_ERR_OK) {
|
||||
addClient(s_CatServ, "meow!");
|
||||
@@ -52,12 +48,15 @@ void AnopeFini(void)
|
||||
int my_privmsg(char *source, int ac, char **av)
|
||||
{
|
||||
User *u;
|
||||
Uid *ud = NULL;
|
||||
char *s;
|
||||
|
||||
/* First, some basic checks */
|
||||
if (ac != 2)
|
||||
return MOD_CONT; /* bleh */
|
||||
if (!(u = finduser(source))) {
|
||||
if (ircd->ts6)
|
||||
u = find_byuid(source); // If this is a ts6 ircd, find the user by uid
|
||||
if (!u && !(u = finduser(source))) { // If user isn't found and we cant find them by nick, return
|
||||
return MOD_CONT;
|
||||
} /* non-user source */
|
||||
if (*av[0] == '#') {
|
||||
@@ -71,7 +70,9 @@ int my_privmsg(char *source, int ac, char **av)
|
||||
if (stricmp(s, ServerName) != 0)
|
||||
return MOD_CONT;
|
||||
}
|
||||
if ((stricmp(av[0], s_CatServ)) == 0) { /* its for US! */
|
||||
if (ircd->ts6)
|
||||
ud = find_uid(s_CatServ); // Find CatServs UID
|
||||
if (stricmp(av[0], s_CatServ) == 0 || (ud && strcmp(av[0], ud->uid) == 0)) { /* If the nick or the uid matches its for us */
|
||||
catserv(u, av[1]);
|
||||
return MOD_STOP;
|
||||
} else { /* ok it isnt us, let the old code have it */
|
||||
|
||||
+13
-13
@@ -71,7 +71,7 @@ void my_memo_lang(User * u, char *name, int z, int number, ...);
|
||||
void req_send_memos(User * u, char *vHost);
|
||||
void show_list(User * u);
|
||||
int hs_do_waiting(User * u);
|
||||
int ns_do_drop(User * u);
|
||||
int hsreqevt_nick_dropped(int argc, char **argv);
|
||||
|
||||
void hsreq_save_db(void);
|
||||
void hsreq_load_db(void);
|
||||
@@ -112,8 +112,8 @@ int AnopeInit(int argc, char **argv)
|
||||
-1, -1);
|
||||
moduleAddCommand(HOSTSERV, c, MOD_HEAD);
|
||||
|
||||
c = createCommand("drop", ns_do_drop, NULL, -1, -1, -1, -1, -1);
|
||||
moduleAddCommand(NICKSERV, c, MOD_HEAD);
|
||||
hook = createEventHook(EVENT_NICK_DROPPED, hsreqevt_nick_dropped);
|
||||
moduleAddEventHook(hook);
|
||||
|
||||
hook = createEventHook(EVENT_DB_SAVING, hsreqevt_db_saving);
|
||||
moduleAddEventHook(hook);
|
||||
@@ -204,7 +204,7 @@ int hs_do_request(User * u)
|
||||
return MOD_CONT;
|
||||
}
|
||||
}
|
||||
if (strlen(rawhostmask) < HOSTMAX - 1) {
|
||||
if (strlen(rawhostmask) < HOSTMAX) {
|
||||
snprintf(hostmask, HOSTMAX, "%s", rawhostmask);
|
||||
} else {
|
||||
notice_lang(s_HostServ, u, HOST_SET_TOOLONG, HOSTMAX);
|
||||
@@ -328,19 +328,19 @@ void req_send_memos(User * u, char *vHost)
|
||||
}
|
||||
}
|
||||
|
||||
int ns_do_drop(User * u)
|
||||
int hsreqevt_nick_dropped(int argc, char **argv)
|
||||
{
|
||||
HostCore *tmp;
|
||||
boolean found = false;
|
||||
NickAlias *na;
|
||||
HostCore *tmp;
|
||||
boolean found = false;
|
||||
|
||||
na = findnick(u->nick);
|
||||
tmp = findHostCore(hs_request_head, u->nick, &found);
|
||||
if (!argc)
|
||||
return MOD_CONT;
|
||||
|
||||
if (found && na)
|
||||
hs_request_head = deleteHostCore(hs_request_head, tmp);
|
||||
tmp = findHostCore(hs_request_head, argv[0], &found);
|
||||
if (found)
|
||||
hs_request_head = deleteHostCore(hs_request_head, tmp);
|
||||
|
||||
return MOD_CONT;
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
int hs_do_reject(User * u)
|
||||
|
||||
@@ -198,6 +198,8 @@ int myAddNickInfo(User * u)
|
||||
} else {
|
||||
moduleNoticeLang(s_NickServ, u, OINFO_SYNTAX);
|
||||
}
|
||||
} else {
|
||||
moduleNoticeLang(s_NickServ, u, OINFO_SYNTAX);
|
||||
}
|
||||
return MOD_CONT;
|
||||
}
|
||||
@@ -266,6 +268,8 @@ int myAddChanInfo(User * u)
|
||||
} else {
|
||||
moduleNoticeLang(s_ChanServ, u, OCINFO_SYNTAX);
|
||||
}
|
||||
} else {
|
||||
moduleNoticeLang(s_ChanServ, u, OCINFO_SYNTAX);
|
||||
}
|
||||
return MOD_CONT;
|
||||
}
|
||||
@@ -459,7 +463,8 @@ int mSaveData(int argc, char **argv)
|
||||
**/
|
||||
int mBackupData(int argc, char **argv)
|
||||
{
|
||||
ModuleDatabaseBackup(OSInfoDBName);
|
||||
if (argc >= 1 && !stricmp(argv[0], EVENT_START))
|
||||
ModuleDatabaseBackup(OSInfoDBName);
|
||||
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
+10
-6
@@ -408,15 +408,17 @@ int db_mysql_save_ns_core(NickCore * nc)
|
||||
q_sender = db_mysql_quote(nc->memos.memos[i].sender);
|
||||
q_text = db_mysql_quote(nc->memos.memos[i].text);
|
||||
|
||||
ret = db_mysql_try("UPDATE anope_ms_info "
|
||||
if (nc->memos.memos[i].id != 0)
|
||||
{
|
||||
ret = db_mysql_try("UPDATE anope_ms_info "
|
||||
"SET receiver = '%s', number = %d, flags = %d, time = %d, sender = '%s', text = '%s', active = 1 "
|
||||
"WHERE nm_id = %d AND serv = 'NICK'",
|
||||
q_display, nc->memos.memos[i].number,
|
||||
nc->memos.memos[i].flags,
|
||||
(int) nc->memos.memos[i].time, q_sender, q_text,
|
||||
nc->memos.memos[i].id);
|
||||
|
||||
if (ret && (mysql_affected_rows(mysql) == 0)) {
|
||||
}
|
||||
if (nc->memos.memos[i].id == 0 || (ret && (mysql_affected_rows(mysql) == 0))) {
|
||||
ret = db_mysql_try("INSERT INTO anope_ms_info "
|
||||
"(receiver, number, flags, time, sender, text, serv, active) "
|
||||
"VALUES ('%s', %d, %d, %d, '%s', '%s', 'NICK', 1)",
|
||||
@@ -626,15 +628,17 @@ int db_mysql_save_cs_info(ChannelInfo * ci)
|
||||
q_sender = db_mysql_quote(ci->memos.memos[i].sender);
|
||||
q_text = db_mysql_quote(ci->memos.memos[i].text);
|
||||
|
||||
ret = db_mysql_try("UPDATE anope_ms_info "
|
||||
if (ci->memos.memos[i].id != 0)
|
||||
{
|
||||
ret = db_mysql_try("UPDATE anope_ms_info "
|
||||
"SET receiver = '%s', number = %d, flags = %d, time = %d, sender = '%s', text = '%s', active = 1 "
|
||||
"WHERE nm_id = %d AND serv = 'CHAN'",
|
||||
q_name, ci->memos.memos[i].number,
|
||||
ci->memos.memos[i].flags,
|
||||
(int) ci->memos.memos[i].time, q_sender, q_text,
|
||||
ci->memos.memos[i].id);
|
||||
|
||||
if (ret && (mysql_affected_rows(mysql) == 0)) {
|
||||
}
|
||||
if (ci->memos.memos[i].id == 0 || (ret && (mysql_affected_rows(mysql) == 0))) {
|
||||
ret = db_mysql_try("INSERT INTO anope_ms_info "
|
||||
"(receiver, number,flags, time, sender, text, serv, active) "
|
||||
"VALUES ('%s', %d, %d, %d, '%s', '%s', 'CHAN', 1)",
|
||||
|
||||
@@ -1678,6 +1678,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
@@ -1989,6 +1989,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
@@ -1385,6 +1385,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
@@ -1574,6 +1574,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
@@ -1958,6 +1958,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
@@ -2672,6 +2672,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(CMODE_P);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
@@ -1880,6 +1880,7 @@ AnopeInit (int argc, char **argv)
|
||||
pmodule_private_cmode (CMODE_p);
|
||||
pmodule_key_mode (CMODE_k);
|
||||
pmodule_limit_mode (CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds ();
|
||||
moduleAddIRCDMsgs ();
|
||||
|
||||
@@ -1857,6 +1857,7 @@ AnopeInit (int argc, char **argv)
|
||||
pmodule_private_cmode (CMODE_p);
|
||||
pmodule_key_mode (CMODE_k);
|
||||
pmodule_limit_mode (CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds ();
|
||||
moduleAddIRCDMsgs ();
|
||||
|
||||
@@ -1798,6 +1798,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
@@ -1678,6 +1678,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
@@ -1883,6 +1883,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
@@ -1834,6 +1834,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
@@ -1706,6 +1706,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
@@ -1735,6 +1735,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
@@ -1819,6 +1819,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
@@ -1600,6 +1600,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
@@ -2256,6 +2256,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
@@ -1717,6 +1717,7 @@ int AnopeInit(int argc, char **argv)
|
||||
pmodule_private_cmode(CMODE_p);
|
||||
pmodule_key_mode(CMODE_k);
|
||||
pmodule_limit_mode(CMODE_l);
|
||||
pmodule_permchan_mode(0);
|
||||
|
||||
moduleAddAnopeCmds();
|
||||
moduleAddIRCDMsgs();
|
||||
|
||||
+29
-3
@@ -7,11 +7,37 @@
|
||||
|
||||
VERSION_MAJOR="1"
|
||||
VERSION_MINOR="8"
|
||||
VERSION_PATCH="2"
|
||||
VERSION_PATCH="4"
|
||||
VERSION_EXTRA=""
|
||||
VERSION_BUILD="2771"
|
||||
VERSION_BUILD="2859"
|
||||
|
||||
# $Log$ #
|
||||
# $Log$ # Leading up to 1.8.4 Release
|
||||
|
||||
#Revision 2855 - Don't save databases when rehashed or shutdown from anoperc when in readonly mode
|
||||
#Revision 2854 - Small change to the win32 makefile to use Config.bat rather than install.js after spotless.
|
||||
#Revision 2843 - Fixed catserv module demo to work correctly on TS6 IRCds
|
||||
#Revision 2842 - Fixed bug #1149 - Number memos in MySQL correctly
|
||||
#Revision 2841 - Fixed bugs #1146 and #1147 - Fixed check_modes to only apply defcon settings when defcon is actually on
|
||||
#Revision 2840 - Fixed bug #1144 - replaced some strcpy calls with strscpy to be safer
|
||||
#Revision 2837 - Log deleting and clearing XOP access lists
|
||||
#Revision 2836 - Document usage of the -protocoldebug option in services help
|
||||
#Revision 2834 - Removed some unused functions from extern.h and changed docs/IRCD to not tell lies
|
||||
#Revision 2821 - Fixed bug #1143 - Fixed a blind sprintf in sighandler that would write an error message to unallocated memory
|
||||
#Revision 2819 - Fixed a bug introduced in r2667 that could cause some access entries to not convert to XOP correctly
|
||||
#Revision 2818 - Fixed bug #1141, reordered some access checks in cs_kick and cs_modes to hide who is on the channel
|
||||
#Revision 2816 - Fixed os_info to display syntax errors if you entered no text
|
||||
#Revision 2815 - Fixed os_info to backup its databases properly with the now-working ModuleDatabaseBackup function
|
||||
#Revision 2811 - Fixed bug #1140 - Made ModuleDatabaseBackup() not fail when multiple modules want to back up their databases
|
||||
#Revision 2810 - Fixed bug #1139 - Delete the correct nicks from hs_request database when they are dropped
|
||||
#Revision 2809 - Fixed bug #1138 - Fix maximum hostname length checking in hs_request
|
||||
#Revision 2808 - Fixed check_ban to apply bans even if TTB was changed after the user has been kicked
|
||||
#Revision 2807 - Added support for tracking permanent channels
|
||||
#Revision 2801 - Fixed some memory leaks in ns_register
|
||||
#Revision 2800 - Fixed a bug that would cause users access in channels to seemingly disappear. Introduced in release 1.8.3, revision 2667
|
||||
#Revision 2792 - Documented /nickserv list's ability to accept ranges
|
||||
#Revision 2791 - Don't show unconfirmed nicks when services admins list suspended nicks
|
||||
#Revision 2787 - Fixed it so halfops can not be marked as forcibly deopped, fixes us sometimes undoing all modes by some halfops
|
||||
#Revision 2774 - Bump Changes versions to 1.8-SVN & credit for tr.l
|
||||
|
||||
# Leading up to 1.8.3 Release
|
||||
#Revision 2770 - Updated docs/INSTALL with some more upto date information
|
||||
|
||||
Reference in New Issue
Block a user