#
# ChangeLog for ircu2.10.11
#
-# $Id: ChangeLog,v 1.16 2000-03-21 00:33:29 bleep Exp $
+# $Id: ChangeLog,v 1.17 2000-03-21 01:05:16 bleep Exp $
#
# Insert new changes at beginning of the change list.
#
#-----------------------------------------------------------------------------
+* Add Kev's jupe patch --Bleep
* Add Maniacs squit patch --Bleep
* Merge in u2_10_10_beta07 changes --Bleep
* Merge in u2_10_10_beta06 changes --Bleep
if [ "$CONFIG_LOG_GLINES" = "y" ]; then
string ' Give the path and(or) filename of this log file' GPATH 'gline.log'
fi
+ bool 'Do you want to log JUPEs to a separate file' CONFIG_LOG_JUPES y
+ if [ "$CONFIG_LOG_JUPES" = "y" ]; then
+ string ' Give the path and(or) filename of this log file' JPATH 'jupe.log'
+ fi
bool 'Do you want to log connecting users to a separate file' CONFIG_LOG_USERS
if [ "$CONFIG_LOG_USERS" = "y" ]; then
string ' Give the path and(or) filename of this log file' FNAME_USERLOG $DPATH/users
log file where the G-lines will be stored, mostly called "gline.log".
Note that you should not include quotes here.
+Do you want to log JUPEs to a separate file
+CONFIG_LOG_JUPES
+ Specify 'y' here if you want to log JUPEs (Jupiters) to a local file.
+
+Give the path and(or) filename of this log file
+JPATH
+ JPATH is the filename, relative to DPATH, or the full path, of the
+ log file where the logs of JUPEs will be stored; it is usually called
+ "jupe.log". Note that you should not include quotes here.
+
Do you want to log connecting users to a separate file
CONFIG_LOG_USERS
Specify 'y' here if you want to log who is connecting to your server.
<TD><FONT SIZE=-1>PROTO</FONT></TD>
</TR>
+
+<TR>
+<TD><FONT SIZE=-1>JUPE</FONT></TD>
+
+<TD><FONT SIZE=-1>JU</FONT></TD>
+</TR>
</TABLE></CENTER>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B>[</B><A HREF="#top">Back</A><B>]</B></FONT></FONT>
<BR>
</BLOCKQUOTE>
<BLOCKQUOTE>Which adds two more opped members and a ban to the channel.</BLOCKQUOTE>
+
+<BLOCKQUOTE><B>3.2.4 - JUPE Messages</B></BLOCKQUOTE>
+
+<BLOCKQUOTE>Any currently unexpired JUPEs are transmitted via "JUPE"
+messages with the following format:</BLOCKQUOTE>
+
+<BLOCKQUOTE>
+<BLOCKQUOTE><TT><FONT COLOR="#00007F">[NUMERIC PREFIX] JU * (+|-)[SERVER NAME]
+[LIFETIME] [LAST MOD] :[REASON]</FONT></TT></BLOCKQUOTE>
+</BLOCKQUOTE>
+<BLOCKQUOTE><I>Notes:</I></BLOCKQUOTE>
+
+<OL>
+<LI>
+The numeric of the server sending this message.</LI>
+
+<LI>
+The "JUPE" token.</LI>
+
+<LI>
+The target that should apply this JUPE (always "*" during bursts).</LI>
+
+<LI>
+The name of the server to JUPE, prefixed with a "+" if the JUPE is active,
+or with a "-" if it is not.</LI>
+
+<LI>
+The remaining absolute lifetime of the JUPE, expressed in seconds.</LI>
+
+<LI>
+The last time the JUPE was modified.</LI>
+
+<LI>
+The reason the JUPE was applied.</LI>
+
+</OL>
+
<A NAME="chap3.3"></A><B><FONT SIZE=+1>3.3 Summary</FONT></B>
<P>The following table summarises the sequence of events that occur when
a server connects to another server. S1 is our server, and S2 is a HUB
<BR>S1: Sends all the clients it is aware of as a stream of NICK messages.
<BR>S1: Sends the database of channel states on the network, as a stream
of BURST messages.
+<BR>S1: Sends all the jupes it is aware of as a stream of JUPE messages.
<BR>S1: Sends a END_OF_BURST token (EB) to indicate it has finished sending.
<P>S2: Sends all the servers it is aware of as a stream of SERVER messages.
<BR>S2: Sends all the clients it is aware of as a stream of NICK messages.
<BR>S2: Sends the database of channel states on the network, as a stream
of BURST messages.
+<BR>S2: Sends all the jupes it is aware of as a stream of JUPE messages.
<BR>S2: Sends a END_OF_BURST token (EB) to indicate it has finished sending.
<P>S2: Sends an EOB_ACK token (EA) to indicate it has succesfully recieved
the END_OF_BURST from S1
[ READ]: AF B #foobar 947957734 +tink akey AIAAB,AIAAA:v,AZAAA:o :%*!*another@*.ban.com *!*foo@bar.net
[ READ]: AF B #coder-com 947957727 AIAAB,AZAAA:o
[ READ]: AF B #another 946101321 AFAAA
+[ READ]: AF JU * +juped.undernet.org 3600 947958100 :Broken, please fix
[ READ]: AF EB
[WRITE]: AB EA
[ READ]: AF EA</FONT></PRE>
<BR>[26/02/2000]: Continued chapter 5, few example fixes, added token table
from msg.h. --Gte.
<BR>[02/03/2000]: Added NICK spec. --Gte.
+<BR>[18/03/2000]: Added JUPE spec. -Kev
<P><A NAME="chap8.1"></A><B><FONT SIZE=+1>8.1 TODO</FONT></B>
<UL>
<LI>
<LI>
Add FAQ Section.</LI>
+
+<LI>
+Any chance we could switch to ISO dates (2000-3-18)? ;) -Kev.</LI>
</UL>
<FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B>[</B><A HREF="#top">Back</A><B>]</B></FONT></FONT>
</BODY>
extern int m_invite(struct Client*, struct Client*, int, char*[]);
extern int m_ison(struct Client*, struct Client*, int, char*[]);
extern int m_join(struct Client*, struct Client*, int, char*[]);
+extern int m_jupe(struct Client*, struct Client*, int, char*[]);
extern int m_kick(struct Client*, struct Client*, int, char*[]);
extern int m_links(struct Client*, struct Client*, int, char*[]);
extern int m_list(struct Client*, struct Client*, int, char*[]);
extern int mo_die(struct Client*, struct Client*, int, char*[]);
extern int mo_gline(struct Client*, struct Client*, int, char*[]);
extern int mo_info(struct Client*, struct Client*, int, char*[]);
+extern int mo_jupe(struct Client*, struct Client*, int, char*[]);
extern int mo_kill(struct Client*, struct Client*, int, char*[]);
extern int mo_notice(struct Client*, struct Client*, int, char*[]);
extern int mo_oper(struct Client*, struct Client*, int, char*[]);
extern int ms_info(struct Client*, struct Client*, int, char*[]);
extern int ms_invite(struct Client*, struct Client*, int, char*[]);
extern int ms_join(struct Client*, struct Client*, int, char*[]);
+extern int ms_jupe(struct Client*, struct Client*, int, char*[]);
extern int ms_kick(struct Client*, struct Client*, int, char*[]);
extern int ms_kill(struct Client*, struct Client*, int, char*[]);
extern int ms_links(struct Client*, struct Client*, int, char*[]);
#define MSG_PROTO "PROTO" /* PROTO */
#define TOK_PROTO "PROTO" /* PROTO */
+#define MSG_JUPE "JUPE" /* JUPE */
+#define TOK_JUPE "JU"
+
/*
* Constants
/* RPL_STATSSLINE 245 Reserved */
#define RPL_STATSTLINE 246 /* Undernet extension */
#define RPL_STATSGLINE 247 /* Undernet extension */
-/* RPL_STATSXLINE 247 hybrid extension */
+/* RPL_STATSXLINE 247 hybrid extension */
#define RPL_STATSULINE 248 /* Undernet extension */
#define RPL_STATSDEBUG 249 /* Extension to RFC1459 */
#define RPL_STATSCONN 250 /* Undernet extension */
#define RPL_GLIST 280 /* Undernet extension */
#define RPL_ENDOFGLIST 281 /* Undernet extension */
+#define RPL_JUPELIST 282 /* Undernet extension - jupe -Kev */
+#define RPL_ENDOFJUPELIST 283 /* Undernet extension - jupe -Kev */
/* RPL_CHANINFO_HANDLE 285 aircd */
/* RPL_CHANINFO_USERS 286 aircd */
/* ERR_NOTIFYFULL 512 aircd */
#define ERR_NOSUCHGLINE 512 /* Undernet extension */
#define ERR_BADPING 513 /* Undernet extension */
-#define ERR_INVALID_ERROR 514
+#define ERR_NOSUCHJUPE 514 /* Undernet extension - jupe -Kev */
+#define ERR_BADEXPIRE 515 /* Undernet extension - jupe -Kev */
+#define ERR_INVALID_ERROR 516
#endif /* INCLUDED_numeric_h */
ircd_signal.c \
ircd_string.c \
ircd_xopen.c \
+ jupe.c \
list.c \
listener.c \
m_admin.c \
m_invite.c \
m_ison.c \
m_join.c \
+ m_jupe.c \
m_kick.c \
m_kill.c \
m_links.c \
../config/config.h ../config/setup.h ../include/ircd_chattr.h \
../include/ircd_defs.h chattr.tab.c
ircd_xopen.o: ircd_xopen.c ../include/ircd_xopen.h
+jupe.o: jupe.c ../include/jupe.h ../config/config.h ../config/setup.h \
+ ../include/client.h ../include/dbuf.h ../include/ircd_defs.h \
+ ../include/ircd_handler.h ../include/hash.h ../include/ircd.h \
+ ../include/struct.h ../include/ircd_alloc.h ../include/fda.h \
+ ../include/ircd_string.h ../include/ircd_chattr.h ../include/match.h \
+ ../include/msg.h ../include/numeric.h ../include/numnicks.h \
+ ../include/s_bsd.h ../include/s_misc.h ../include/send.h \
+ ../include/support.h ../include/sys.h
list.o: list.c ../include/list.h ../include/class.h \
../include/client.h ../include/dbuf.h ../include/ircd_defs.h \
../include/ircd_handler.h ../include/ircd.h ../config/config.h \
../config/setup.h ../include/struct.h ../include/ircd_alloc.h \
../include/fda.h ../include/ircd_string.h ../include/ircd_chattr.h \
- ../include/match.h ../include/numeric.h ../include/res.h \
- ../include/s_bsd.h ../include/s_conf.h ../include/s_debug.h \
- ../include/s_misc.h ../include/s_user.h ../include/send.h \
- ../include/support.h ../include/whowas.h
+ ../include/listener.h ../include/match.h ../include/numeric.h \
+ ../include/res.h ../include/s_bsd.h ../include/s_conf.h \
+ ../include/s_debug.h ../include/s_misc.h ../include/s_user.h \
+ ../include/send.h ../include/support.h ../include/whowas.h
listener.o: listener.c ../include/listener.h ../include/ircd_defs.h \
../include/client.h ../include/dbuf.h ../include/ircd_handler.h \
../include/ircd.h ../config/config.h ../config/setup.h \
../include/hash.h ../include/ircd.h ../config/config.h \
../config/setup.h ../include/struct.h ../include/ircd_log.h \
../include/ircd_reply.h ../include/ircd_string.h \
- ../include/ircd_chattr.h ../include/match.h ../include/msg.h \
- ../include/numeric.h ../include/numnicks.h ../include/s_bsd.h \
- ../include/s_conf.h ../include/s_user.h ../include/send.h
+ ../include/ircd_chattr.h ../include/jupe.h ../include/match.h \
+ ../include/msg.h ../include/numeric.h ../include/numnicks.h \
+ ../include/s_bsd.h ../include/s_conf.h ../include/s_user.h \
+ ../include/send.h
m_cprivmsg.o: m_cprivmsg.c ../include/client.h ../include/dbuf.h \
../include/ircd_defs.h ../include/ircd_handler.h \
../include/ircd_reply.h ../include/ircd_string.h ../config/config.h \
../include/ircd_string.h ../include/msg.h ../include/numeric.h \
../include/numnicks.h ../include/s_user.h ../include/send.h \
../include/handlers.h
+m_jupe.o: m_jupe.c ../include/client.h ../include/dbuf.h \
+ ../include/ircd_defs.h ../include/ircd_handler.h ../include/jupe.h \
+ ../config/config.h ../config/setup.h ../include/hash.h \
+ ../include/ircd.h ../include/struct.h ../include/ircd_reply.h \
+ ../include/ircd_string.h ../include/ircd_chattr.h ../include/match.h \
+ ../include/msg.h ../include/numeric.h ../include/numnicks.h \
+ ../include/s_conf.h ../include/s_misc.h ../include/send.h \
+ ../include/support.h
m_kick.o: m_kick.c ../include/channel.h ../config/config.h \
../config/setup.h ../include/ircd_defs.h ../include/client.h \
../include/dbuf.h ../include/ircd_handler.h ../include/hash.h \
m_server.o: m_server.c ../include/client.h ../include/dbuf.h \
../include/ircd_defs.h ../include/ircd_handler.h ../include/crule.h \
../include/hash.h ../include/ircd.h ../config/config.h \
- ../config/setup.h ../include/struct.h ../include/ircd_reply.h \
- ../include/ircd_string.h ../include/ircd_chattr.h ../include/list.h \
+ ../config/setup.h ../include/struct.h ../include/ircd_log.h \
+ ../include/ircd_reply.h ../include/ircd_string.h \
+ ../include/ircd_chattr.h ../include/jupe.h ../include/list.h \
../include/match.h ../include/msg.h ../include/numeric.h \
../include/numnicks.h ../include/querycmds.h ../include/s_bsd.h \
../include/s_conf.h ../include/s_debug.h ../include/s_misc.h \
../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \
../include/fda.h ../include/ircd_chattr.h ../include/ircd_log.h \
../include/ircd_osdep.h ../include/ircd_string.h ../include/list.h \
- ../include/numeric.h ../include/res.h ../include/s_bsd.h \
- ../include/s_debug.h ../include/s_misc.h ../include/send.h \
- ../include/sprintf_irc.h ../include/sys.h
+ ../include/numeric.h ../include/querycmds.h ../include/res.h \
+ ../include/s_bsd.h ../include/s_debug.h ../include/s_misc.h \
+ ../include/send.h ../include/sprintf_irc.h ../include/sys.h
s_bsd.o: s_bsd.c ../include/s_bsd.h ../config/config.h \
../config/setup.h ../include/client.h ../include/dbuf.h \
../include/ircd_defs.h ../include/ircd_handler.h ../include/IPcheck.h \
../include/ircd_handler.h ../include/crule.h ../include/hash.h \
../include/ircd.h ../include/struct.h ../include/ircd_alloc.h \
../include/fda.h ../include/ircd_reply.h ../include/ircd_string.h \
- ../include/ircd_chattr.h ../include/ircd_xopen.h ../include/list.h \
- ../include/msg.h ../include/match.h ../include/numeric.h \
- ../include/numnicks.h ../include/parse.h ../include/querycmds.h \
- ../include/s_bsd.h ../include/s_conf.h ../include/s_debug.h \
- ../include/s_misc.h ../include/s_user.h ../include/send.h \
- ../include/sprintf_irc.h ../include/sys.h ../include/userload.h
+ ../include/ircd_chattr.h ../include/ircd_xopen.h ../include/jupe.h \
+ ../include/list.h ../include/msg.h ../include/match.h \
+ ../include/numeric.h ../include/numnicks.h ../include/parse.h \
+ ../include/querycmds.h ../include/s_bsd.h ../include/s_conf.h \
+ ../include/s_debug.h ../include/s_misc.h ../include/s_user.h \
+ ../include/send.h ../include/sprintf_irc.h ../include/sys.h \
+ ../include/userload.h
s_user.o: s_user.c ../include/s_user.h ../include/IPcheck.h \
../include/channel.h ../config/config.h ../config/setup.h \
../include/ircd_defs.h ../include/class.h ../include/client.h \
#include "ircd_log.h"
#include "ircd_reply.h"
#include "ircd_string.h"
+#include "jupe.h"
#include "match.h"
#include "msg.h"
#include "numeric.h"
const char* crule_name;
struct ConfItem* aconf;
struct Client* acptr;
-
+ struct Jupe* ajupe;
+
assert(0 != cptr);
assert(0 != sptr);
NumServ(&me), NumNick(sptr), crule_name);
return 0;
}
+ /*
+ * Check to see if the server is juped; if it is, disallow the connect
+ */
+ if ((ajupe = jupe_find(aconf->name)) && JupeIsActive(ajupe)) {
+ sendto_one(sptr, "%s NOTICE %s%s :Connect: Server %s is juped: %s",
+ NumServ(&me), NumNick(sptr), JupeServer(ajupe),
+ JupeReason(ajupe));
+ return 0;
+ }
/*
* Get port number from params, port must be non-zero if it comes from a
* server.
const char* crule_name;
struct ConfItem* aconf;
struct Client* acptr;
+ struct Jupe* ajupe;
assert(0 != cptr);
assert(cptr == sptr);
me.name, parv[0], crule_name);
return 0;
}
+ /*
+ * Check to see if the server is juped; if it is, disallow the connect
+ */
+ if ((ajupe = jupe_find(aconf->name)) && JupeIsActive(ajupe)) {
+ sendto_one(sptr, "%s NOTICE %s%s :Connect: Server %s is juped: %s",
+ me.name, NumNick(sptr), JupeServer(ajupe), JupeReason(ajupe));
+ return 0;
+ }
/*
* Get port number from user, if given. If not specified,
* use the default from configuration structure. If missing
struct ConfItem* aconf;
struct ConfItem* cconf;
struct Client* acptr;
+ struct Jupe* ajupe;
if (!IsPrivileged(sptr)) {
sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
}
}
}
+ /*
+ * Check to see if the server is juped; if it is, disallow the connect
+ */
+ if ((ajupe = jupe_find(aconf->name)) && JupeIsActive(ajupe)) {
+ sendto_one(sptr, "%s NOTICE %s%s :Connect: Server %s is juped: %s",
+ NumServ(&me), NumNick(sptr), JupeServer(ajupe),
+ JupeReason(ajupe));
+ return 0;
+ }
/*
* Notify all operators about remote connect requests
#include "ircd_log.h"
#include "ircd_reply.h"
#include "ircd_string.h"
+#include "jupe.h"
#include "list.h"
#include "match.h"
#include "msg.h"
struct ConfItem* aconf = 0;
struct ConfItem* cconf;
struct ConfItem* lhconf = 0;
+ struct Jupe* ajupe = 0;
int hop;
int ret;
int active_lh_line = 0;
return need_more_params(sptr, "SERVER");
return exit_client(cptr, cptr, &me, "Need more parameters");
}
- ircd_log(L_NOTICE, "SERVER: %s %s[%s]", parv[1], cptr->sockhost, cptr->sock_ip);
host = parv[1];
+
+ if ((ajupe = jupe_find(host)) && JupeIsActive(ajupe))
+ return exit_client_msg(cptr, sptr, &me, "Juped: %s", JupeReason(ajupe));
+
+ ircd_log(L_NOTICE, "SERVER: %s %s[%s]", parv[1], cptr->sockhost, cptr->sock_ip);
+
/*
* Detect protocol
*/
struct ConfItem* aconf = 0;
struct ConfItem* cconf;
struct ConfItem* lhconf = 0;
+ struct Jupe* ajupe = 0;
int hop;
int ret;
int active_lh_line = 0;
return exit_client(cptr, cptr, &me, "Need more parameters");
}
host = parv[1];
+
+ if ((ajupe = jupe_find(host)) && JupeIsActive(ajupe))
+ jupe_resend(cptr, ajupe);
+
/*
* Detect protocol
*/
struct ConfItem* aconf = 0;
struct ConfItem* cconf;
struct ConfItem* lhconf = 0;
+ struct Jupe* ajupe = 0;
int hop;
int ret;
int active_lh_line = 0;
/* UNREG, CLIENT, SERVER, OPER, SERVICE */
{ m_unregistered, m_not_oper, ms_gline, mo_gline, m_ignore }
},
+ {
+ MSG_JUPE,
+ TOK_JUPE,
+ 0, MAXPARA, MFLG_SLOW, 0,
+ /* UNREG, CLIENT, SERVER, OPER, SERVICE */
+ { m_unregistered, m_jupe, ms_jupe, mo_jupe, m_ignore }
+ },
{
MSG_END_OF_BURST,
TOK_END_OF_BURST,
/* 512 */
{ ERR_NOSUCHGLINE, "%s@%s :No such gline", "512" },
/* 513 */
- { ERR_BADPING, "", "513" }
+ { ERR_BADPING, "", "513" },
+/* 514 */
+ { ERR_NOSUCHJUPE, "%s :No such jupe", "514" },
+/* 515 */
+ { ERR_BADEXPIRE, TIME_T_FMT " :Bad expire time", "515" }
};
static Numeric numeric_replies[] = {
{ RPL_GLIST, "%s@%s " TIME_T_FMT " %s%s", "280" },
/* 281 */
{ RPL_ENDOFGLIST, ":End of G-line List", "281" },
+/* 282 */
+ { RPL_JUPELIST, "%s " TIME_T_FMT " %s %c :%s", "282" },
/* 283 */
- { 0 },
+ { RPL_ENDOFJUPELIST, ":End of Jupe List", "283" },
/* 284 */
{ 0 }
};
#include "ircd_reply.h"
#include "ircd_string.h"
#include "ircd_xopen.h"
+#include "jupe.h"
#include "list.h"
#include "msg.h"
#include "match.h"
for (chptr = GlobalChannelList; chptr; chptr = chptr->next)
send_channel_modes(cptr, chptr);
}
+ jupe_burst(cptr);
sendto_one(cptr, "%s EB", NumServ(&me));
return 0;
}