]> jfr.im git - irc/quakenet/snircd-patchqueue.git/commitdiff
Add webirc.patch
authorPaul <redacted>
Sat, 20 Jul 2013 14:41:54 +0000 (15:41 +0100)
committerPaul <redacted>
Sat, 20 Jul 2013 14:41:54 +0000 (15:41 +0100)
series
webirc.patch [new file with mode: 0644]
welcome.patch

diff --git a/series b/series
index a2730681de1ef72ef1d3f5044b4c44ec56240155..08858d3316df6b938642483a02a5f44ef92e89b1 100644 (file)
--- a/series
+++ b/series
@@ -1,3 +1,4 @@
+webirc.patch
 accountwhois.patch
 defaultvalues.patch
 opersendq.patch
@@ -105,5 +106,4 @@ burstwhotopic.patch
 opernowildbadchan.patch
 operglinenick.patch
 welcome.patch
-match.patch
 hginfo.patch
diff --git a/webirc.patch b/webirc.patch
new file mode 100644 (file)
index 0000000..9ca5b25
--- /dev/null
@@ -0,0 +1,244 @@
+# HG changeset patch
+# Parent e1de3d14c9df051e11288e8de6181e4989e3b138
+
+diff -r e1de3d14c9df doc/readme.iauth
+--- a/doc/readme.iauth Sat Jul 20 09:18:24 2013 +0200
++++ b/doc/readme.iauth Sat Jul 20 09:23:57 2013 +0200
+@@ -235,6 +235,12 @@
+ Compatibility: ircd does not include the <capacity> information.
+   The <id> should be ignored: ircd sends 0 and ircu sends -1.
++W - WEBIRC
++Syntax: <id> W <password> <username> <hostname> <ip>
++Comments: Indicates the client's webirc information. This is an
++  Undernet extension and ircd does not send it.  It is enabled by the
++  iauth instance requesting the U policy.
++
+ X - Extension Query Reply
+ Syntax: <id> X <servername> <routing> :<reply>
+ Example: -1 X channels.undernet.org 5/127.0.0.1/6667 :OK kev Logged in
+diff -r e1de3d14c9df include/handlers.h
+--- a/include/handlers.h       Sat Jul 20 09:18:24 2013 +0200
++++ b/include/handlers.h       Sat Jul 20 09:23:57 2013 +0200
+@@ -146,6 +146,7 @@
+ extern int m_unregistered(struct Client*, struct Client*, int, char*[]);
+ extern int m_unsupported(struct Client*, struct Client*, int, char*[]);
+ extern int m_user(struct Client*, struct Client*, int, char*[]);
++extern int m_webirc(struct Client*, struct Client*, int, char*[]);
+ extern int m_userhost(struct Client*, struct Client*, int, char*[]);
+ extern int m_userip(struct Client*, struct Client*, int, char*[]);
+ extern int m_version(struct Client*, struct Client*, int, char*[]);
+diff -r e1de3d14c9df include/msg.h
+--- a/include/msg.h    Sat Jul 20 09:18:24 2013 +0200
++++ b/include/msg.h    Sat Jul 20 09:23:57 2013 +0200
+@@ -68,6 +68,11 @@
+ #define TOK_USER                "USER"
+ #define CMD_USER              MSG_USER, TOK_USER
++#define MSG_WEBIRC              "WEBIRC"        /* WEBI */
++#define TOK_WEBIRC              "WEBIRC"
++#define CMD_WEBIRC              MSG_WEBIRC, TOK_WEBIRC
++
++
+ #define MSG_NICK                "NICK"          /* NICK */
+ #define TOK_NICK                "N"
+ #define CMD_NICK              MSG_NICK, TOK_NICK
+diff -r e1de3d14c9df include/s_auth.h
+--- a/include/s_auth.h Sat Jul 20 09:18:24 2013 +0200
++++ b/include/s_auth.h Sat Jul 20 09:23:57 2013 +0200
+@@ -32,9 +32,11 @@
+ struct Client;
+ struct AuthRequest;
+ struct StatDesc;
++struct irc_in_addr;
+ extern void start_auth(struct Client *);
+ extern int auth_ping_timeout(struct Client *);
++extern int auth_set_webirc(struct AuthRequest *auth, const char *password, const char *username, const char *hostname, struct irc_in_addr *ip);
+ extern int auth_set_pong(struct AuthRequest *auth, unsigned int cookie);
+ extern int auth_set_user(struct AuthRequest *auth, const char *username, const char *hostname, const char *servername, const char *userinfo);
+ extern int auth_set_nick(struct AuthRequest *auth, const char *nickname);
+diff -r e1de3d14c9df ircd/Makefile.in
+--- a/ircd/Makefile.in Sat Jul 20 09:18:24 2013 +0200
++++ b/ircd/Makefile.in Sat Jul 20 09:23:57 2013 +0200
+@@ -188,6 +188,7 @@
+       m_wallops.c \
+       m_wallusers.c \
+       m_wallvoices.c \
++      m_webirc.c \
+       m_who.c \
+       m_whois.c \
+       m_whowas.c \
+diff -r e1de3d14c9df ircd/m_webirc.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/ircd/m_webirc.c  Sat Jul 20 09:23:57 2013 +0200
+@@ -0,0 +1,125 @@
++/*
++ * IRC - Internet Relay Chat, ircd/m_webirc.c
++ * Copyright (C) 1990 Jarkko Oikarinen and
++ *                    University of Oulu, Computing Center
++ *
++ * See file AUTHORS in IRC package for additional names of
++ * the programmers.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 1, or (at your option)
++ * any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ *
++ * $Id: m_webirc.c,v 1.25 2005/09/13 15:17:46 entrope Exp $
++ */
++
++/*
++ * m_functions execute protocol messages on this server:
++ *
++ *    cptr    is always NON-NULL, pointing to a *LOCAL* client
++ *            structure (with an open socket connected!). This
++ *            identifies the physical socket where the message
++ *            originated (or which caused the m_function to be
++ *            executed--some m_functions may call others...).
++ *
++ *    sptr    is the source of the message, defined by the
++ *            prefix part of the message if present. If not
++ *            or prefix not found, then sptr==cptr.
++ *
++ *            (!IsServer(cptr)) => (cptr == sptr), because
++ *            prefixes are taken *only* from servers...
++ *
++ *            (IsServer(cptr))
++ *                    (sptr == cptr) => the message didn't
++ *                    have the prefix.
++ *
++ *                    (sptr != cptr && IsServer(sptr) means
++ *                    the prefix specified servername. (?)
++ *
++ *                    (sptr != cptr && !IsServer(sptr) means
++ *                    that message originated from a remote
++ *                    user (not local).
++ *
++ *            combining
++ *
++ *            (!IsServer(sptr)) means that, sptr can safely
++ *            taken as defining the target structure of the
++ *            message in this server.
++ *
++ *    *Always* true (if 'parse' and others are working correct):
++ *
++ *    1)      sptr->from == cptr  (note: cptr->from == cptr)
++ *
++ *    2)      MyConnect(sptr) <=> sptr == cptr (e.g. sptr
++ *            *cannot* be a local connection, unless it's
++ *            actually cptr!). [MyConnect(x) should probably
++ *            be defined as (x == x->from) --msa ]
++ *
++ *    parc    number of variable parameter strings (if zero,
++ *            parv is allowed to be NULL)
++ *
++ *    parv    a NULL terminated list of parameter pointers,
++ *
++ *                    parv[0], sender (prefix string), if not present
++ *                            this points to an empty string.
++ *                    parv[1]...parv[parc-1]
++ *                            pointers to additional parameters
++ *                    parv[parc] == NULL, *always*
++ *
++ *            note:   it is guaranteed that parv[0]..parv[parc-1] are all
++ *                    non-NULL pointers.
++ */
++#include "config.h"
++
++#include "channel.h"
++#include "client.h"
++#include "hash.h"
++#include "ircd.h"
++#include "ircd_features.h"
++#include "ircd_log.h"
++#include "ircd_reply.h"
++#include "ircd_string.h"
++#include "list.h"
++#include "msg.h"
++#include "numeric.h"
++#include "numnicks.h"
++#include "s_user.h"
++#include "s_auth.h"
++#include "s_misc.h"
++#include "send.h"
++#include "struct.h"
++
++/* #include <assert.h> -- Now using assert in ircd_log.h */
++
++/*
++ * ms_webirc - server message handler
++ *
++ *   parv[0] - sender prefix
++ *   parv[1] - password
++ *   parv[2] - fake username
++ *   parv[3] - fake hostname
++ *   parv[4] - fake ip address
++ *
++ */
++int m_webirc(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
++{
++  struct irc_in_addr ip;
++  
++  if (parc < 5 || EmptyString(parv[4]))
++    return need_more_params(sptr,"WEBIRC");
++
++  if (!ircd_aton(&ip, parv[4]))
++    return exit_client(cptr, cptr, &me, "Invalid IP address specified for WEBIRC");
++
++  return auth_set_webirc(cli_auth(cptr), parv[1], parv[2], parv[3], &ip);
++}
+diff -r e1de3d14c9df ircd/parse.c
+--- a/ircd/parse.c     Sat Jul 20 09:18:24 2013 +0200
++++ b/ircd/parse.c     Sat Jul 20 09:23:57 2013 +0200
+@@ -282,6 +282,13 @@
+     { m_user, m_registered, m_ignore, m_registered, m_ignore }
+   },
+   {
++    MSG_WEBIRC,
++    TOK_WEBIRC,
++    0, MAXPARA, MFLG_SLOW, 0, NULL,
++    /* UNREG, CLIENT, SERVER, OPER, SERVICE */
++    { m_webirc, m_registered, m_ignore, m_registered, m_ignore }
++  },
++  {
+     MSG_AWAY,
+     TOK_AWAY,
+     0, MAXPARA, MFLG_SLOW, 0, NULL,
+diff -r e1de3d14c9df ircd/s_auth.c
+--- a/ircd/s_auth.c    Sat Jul 20 09:18:24 2013 +0200
++++ b/ircd/s_auth.c    Sat Jul 20 09:23:57 2013 +0200
+@@ -1041,6 +1041,23 @@
+   return check_auth_finished(auth);
+ }
++int auth_set_webirc(struct AuthRequest *auth, const char *password, const char *username, const char *hostname, struct irc_in_addr *ip)
++{
++  struct Client *cptr;
++
++  assert(auth != NULL);
++
++  cptr = auth->client;
++
++  if (!FlagHas(&auth->flags, AR_NEEDS_NICK) || !FlagHas(&auth->flags, AR_NEEDS_USER))
++    return exit_client(cptr, cptr, &me, "WEBIRC must not be used after USER or NICK");
++
++  if (IAuthHas(iauth, IAUTH_UNDERNET))
++    sendto_iauth(cptr, "W %s %s %s %s", password, username, hostname, ircd_ntoa(ip));
++
++  return 0;
++}
++
+ /** Record a user's claimed username and userinfo.
+  * @param[in] auth Authorization request for client.
+  * @param[in] username Client's asserted username.
index 7115379f1a1b2553d2ef96c65ed468208ae59ab9..f665b4d4575c98e1cfb2e9cba11f3a685b805b2e 100644 (file)
@@ -140,9 +140,9 @@ ircd/ircd_lexer.l
 ircd/ircd_parser.y
 add PRIV_LOCAL_WELCOME PRIV_WELCOME
 
-diff -r 9096546c6212 include/client.h
---- a/include/client.h Sat Jul 20 12:00:51 2013 +0100
-+++ b/include/client.h Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 include/client.h
+--- a/include/client.h Sat Jul 20 15:39:54 2013 +0100
++++ b/include/client.h Sat Jul 20 15:40:27 2013 +0100
 @@ -142,6 +142,8 @@
      PRIV_USER_PRIVACY,  /* oper can bypass user privacy +x etc gives i.e. see real ip's */
      PRIV_CHANNEL_PRIVACY, /* oper can bypass channel privacy i.e. can see modes on channels they are not on and channel keys */
@@ -152,10 +152,10 @@ diff -r 9096546c6212 include/client.h
      PRIV_LAST_PRIV /**< number of privileges */
    };
  
-diff -r 9096546c6212 include/handlers.h
---- a/include/handlers.h       Sat Jul 20 12:00:51 2013 +0100
-+++ b/include/handlers.h       Sat Jul 20 12:00:55 2013 +0100
-@@ -138,6 +138,7 @@
+diff -r 530975e1fd87 include/handlers.h
+--- a/include/handlers.h       Sat Jul 20 15:39:54 2013 +0100
++++ b/include/handlers.h       Sat Jul 20 15:40:27 2013 +0100
+@@ -139,6 +139,7 @@
  extern int m_version(struct Client*, struct Client*, int, char*[]);
  extern int m_wallchops(struct Client*, struct Client*, int, char*[]);
  extern int m_wallvoices(struct Client*, struct Client*, int, char*[]);
@@ -163,7 +163,7 @@ diff -r 9096546c6212 include/handlers.h
  extern int m_who(struct Client*, struct Client*, int, char*[]);
  extern int m_whois(struct Client*, struct Client*, int, char*[]);
  extern int m_whowas(struct Client*, struct Client*, int, char*[]);
-@@ -172,6 +173,7 @@
+@@ -173,6 +174,7 @@
  extern int mo_version(struct Client*, struct Client*, int, char*[]);
  extern int mo_wallops(struct Client*, struct Client*, int, char*[]);
  extern int mo_wallusers(struct Client*, struct Client*, int, char*[]);
@@ -171,7 +171,7 @@ diff -r 9096546c6212 include/handlers.h
  extern int mo_xquery(struct Client*, struct Client*, int, char*[]);
  extern int mr_error(struct Client*, struct Client*, int, char*[]);
  extern int mr_error(struct Client*, struct Client*, int, char*[]);
-@@ -231,6 +233,7 @@
+@@ -232,6 +234,7 @@
  extern int ms_wallops(struct Client*, struct Client*, int, char*[]);
  extern int ms_wallusers(struct Client*, struct Client*, int, char*[]);
  extern int ms_wallvoices(struct Client*, struct Client*, int, char*[]);
@@ -179,9 +179,9 @@ diff -r 9096546c6212 include/handlers.h
  extern int ms_whois(struct Client*, struct Client*, int, char*[]);
  extern int ms_xquery(struct Client*, struct Client*, int, char*[]);
  extern int ms_xreply(struct Client*, struct Client*, int, char*[]);
-diff -r 9096546c6212 include/ircd_features.h
---- a/include/ircd_features.h  Sat Jul 20 12:00:51 2013 +0100
-+++ b/include/ircd_features.h  Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 include/ircd_features.h
+--- a/include/ircd_features.h  Sat Jul 20 15:39:54 2013 +0100
++++ b/include/ircd_features.h  Sat Jul 20 15:40:27 2013 +0100
 @@ -101,6 +101,7 @@
    FEAT_IRCD_RES_TIMEOUT,
    FEAT_AUTH_TIMEOUT,
@@ -198,10 +198,10 @@ diff -r 9096546c6212 include/ircd_features.h
    FEAT_HIS_STATS_w,
    FEAT_HIS_STATS_x,
    FEAT_HIS_STATS_y,
-diff -r 9096546c6212 include/msg.h
---- a/include/msg.h    Sat Jul 20 12:00:51 2013 +0100
-+++ b/include/msg.h    Sat Jul 20 12:00:55 2013 +0100
-@@ -196,6 +196,10 @@
+diff -r 530975e1fd87 include/msg.h
+--- a/include/msg.h    Sat Jul 20 15:39:54 2013 +0100
++++ b/include/msg.h    Sat Jul 20 15:40:27 2013 +0100
+@@ -201,6 +201,10 @@
  #define TOK_NOTICE              "O"
  #define CMD_NOTICE            MSG_NOTICE, TOK_NOTICE
  
@@ -212,9 +212,9 @@ diff -r 9096546c6212 include/msg.h
  #define MSG_WALLCHOPS           "WALLCHOPS"     /* WC */
  #define TOK_WALLCHOPS           "WC"
  #define CMD_WALLCHOPS         MSG_WALLCHOPS, TOK_WALLCHOPS
-diff -r 9096546c6212 include/numeric.h
---- a/include/numeric.h        Sat Jul 20 12:00:51 2013 +0100
-+++ b/include/numeric.h        Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 include/numeric.h
+--- a/include/numeric.h        Sat Jul 20 15:39:54 2013 +0100
++++ b/include/numeric.h        Sat Jul 20 15:40:27 2013 +0100
 @@ -116,6 +116,7 @@
        RPL_STATSGLINE       227           Dalnet 
        RPL_STATSVLINE       227           unreal */
@@ -232,9 +232,9 @@ diff -r 9096546c6212 include/numeric.h
  #define ERR_SILELISTFULL     511        /* Undernet extension */
  /*      ERR_NOTIFYFULL       512           aircd */
  /*    ERR_TOOMANYWATCH     512           Numeric List: Dalnet */
-diff -r 9096546c6212 include/welcome.h
+diff -r 530975e1fd87 include/welcome.h
 --- /dev/null  Thu Jan 01 00:00:00 1970 +0000
-+++ b/include/welcome.h        Sat Jul 20 12:00:55 2013 +0100
++++ b/include/welcome.h        Sat Jul 20 15:40:27 2013 +0100
 @@ -0,0 +1,86 @@
 +#ifndef INCLUDED_welcome_h
 +#define INCLUDED_welcome_h
@@ -322,18 +322,18 @@ diff -r 9096546c6212 include/welcome.h
 +extern int welcome_memory_count(size_t *we_size);
 +
 +#endif /* INCLUDED_welcome_h */
-diff -r 9096546c6212 ircd/Makefile.in
---- a/ircd/Makefile.in Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/Makefile.in Sat Jul 20 12:00:55 2013 +0100
-@@ -187,6 +187,7 @@
-       m_wallops.c \
+diff -r 530975e1fd87 ircd/Makefile.in
+--- a/ircd/Makefile.in Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/Makefile.in Sat Jul 20 15:40:27 2013 +0100
+@@ -188,6 +188,7 @@
        m_wallusers.c \
        m_wallvoices.c \
-+      m_welcome.c \
+       m_webirc.c \
++        m_welcome.c \
        m_who.c \
        m_whois.c \
        m_whowas.c \
-@@ -216,6 +217,7 @@
+@@ -217,6 +218,7 @@
        send.c \
        uping.c \
        userload.c \
@@ -341,7 +341,7 @@ diff -r 9096546c6212 ircd/Makefile.in
        whocmds.c \
        whowas.c \
        y.tab.c
-@@ -1162,6 +1164,11 @@
+@@ -1163,6 +1165,11 @@
    ../include/ircd_reply.h ../include/ircd_string.h \
    ../include/ircd_chattr.h ../include/msg.h ../include/numeric.h \
    ../include/numnicks.h ../include/s_user.h ../include/send.h
@@ -353,7 +353,7 @@ diff -r 9096546c6212 ircd/Makefile.in
  m_who.o: m_who.c ../config.h ../include/channel.h ../include/ircd_defs.h \
    ../include/res.h ../config.h ../include/client.h ../include/dbuf.h \
    ../include/msgq.h ../include/ircd_events.h ../include/ircd_handler.h \
-@@ -1423,6 +1430,13 @@
+@@ -1424,6 +1431,13 @@
    ../include/numnicks.h ../include/querycmds.h ../include/ircd_features.h \
    ../include/s_misc.h ../include/s_stats.h ../include/send.h \
    ../include/struct.h ../include/sys.h
@@ -367,9 +367,9 @@ diff -r 9096546c6212 ircd/Makefile.in
  whocmds.o: whocmds.c ../config.h ../include/whocmds.h \
    ../include/channel.h ../include/ircd_defs.h ../include/res.h \
    ../config.h ../include/client.h ../include/dbuf.h ../include/msgq.h \
-diff -r 9096546c6212 ircd/client.c
---- a/ircd/client.c    Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/client.c    Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/client.c
+--- a/ircd/client.c    Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/client.c    Sat Jul 20 15:40:27 2013 +0100
 @@ -177,6 +177,7 @@
      FlagSet(&privs_local, PRIV_WHOX);
      FlagSet(&privs_local, PRIV_DISPLAY);
@@ -395,9 +395,9 @@ diff -r 9096546c6212 ircd/client.c
  #undef P
    { 0, 0 }
  };
-diff -r 9096546c6212 ircd/ircd_features.c
---- a/ircd/ircd_features.c     Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/ircd_features.c     Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/ircd_features.c
+--- a/ircd/ircd_features.c     Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/ircd_features.c     Sat Jul 20 15:40:27 2013 +0100
 @@ -366,6 +366,7 @@
    F_I(IRCD_RES_TIMEOUT, 0, 4, 0),
    F_I(AUTH_TIMEOUT, 0, 9, 0),
@@ -414,9 +414,9 @@ diff -r 9096546c6212 ircd/ircd_features.c
    F_B(HIS_STATS_w, 0, 1, 0),
    F_B(HIS_STATS_x, 0, 1, 0),
    F_B(HIS_STATS_y, 0, 1, 0),
-diff -r 9096546c6212 ircd/ircd_lexer.l
---- a/ircd/ircd_lexer.l        Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/ircd_lexer.l        Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/ircd_lexer.l
+--- a/ircd/ircd_lexer.l        Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/ircd_lexer.l        Sat Jul 20 15:40:27 2013 +0100
 @@ -166,6 +166,8 @@
    { "serverinfo", TPRIV_SERVERINFO },
    { "user_privacy", TPRIV_USER_PRIVACY },
@@ -426,9 +426,9 @@ diff -r 9096546c6212 ircd/ircd_lexer.l
    { NULL, 0 }
  };
  static int ntokens;
-diff -r 9096546c6212 ircd/ircd_parser.y
---- a/ircd/ircd_parser.y       Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/ircd_parser.y       Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/ircd_parser.y
+--- a/ircd/ircd_parser.y       Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/ircd_parser.y       Sat Jul 20 15:40:27 2013 +0100
 @@ -189,6 +189,7 @@
  %token TPRIV_CHANSERV TPRIV_XTRA_OPER TPRIV_NOIDLE TPRIV_FREEFORM TPRIV_PARANOID
  %token TPRIV_CHECK TPRIV_WALL TPRIV_CLOSE TPRIV_ROUTE TPRIV_ROUTEINFO TPRIV_SERVERINFO
@@ -446,9 +446,9 @@ diff -r 9096546c6212 ircd/ircd_parser.y
            TPRIV_PARANOID { $$ = PRIV_PARANOID; } ;
  
  yesorno: YES { $$ = 1; } | NO { $$ = 0; };
-diff -r 9096546c6212 ircd/m_welcome.c
+diff -r 530975e1fd87 ircd/m_welcome.c
 --- /dev/null  Thu Jan 01 00:00:00 1970 +0000
-+++ b/ircd/m_welcome.c Sat Jul 20 12:00:55 2013 +0100
++++ b/ircd/m_welcome.c Sat Jul 20 15:40:27 2013 +0100
 @@ -0,0 +1,360 @@
 +/*
 + * IRC - Internet Relay Chat, ircd/m_welcome.c
@@ -810,10 +810,10 @@ diff -r 9096546c6212 ircd/m_welcome.c
 +  /* and do it */
 +  return welcome_do(cptr, sptr, name, create, lastmod, who, text, flags);
 +}
-diff -r 9096546c6212 ircd/parse.c
---- a/ircd/parse.c     Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/parse.c     Sat Jul 20 12:00:55 2013 +0100
-@@ -668,6 +668,15 @@
+diff -r 530975e1fd87 ircd/parse.c
+--- a/ircd/parse.c     Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/parse.c     Sat Jul 20 15:40:27 2013 +0100
+@@ -675,6 +675,15 @@
      /* UNREG, CLIENT, SERVER, OPER, SERVICE */
      { m_unregistered, m_not_oper, ms_check, mo_check, m_ignore }
    },
@@ -829,9 +829,9 @@ diff -r 9096546c6212 ircd/parse.c
  
    /* This command is an alias for QUIT during the unregistered part of
     * of the server.  This is because someone jumping via a broken web
-diff -r 9096546c6212 ircd/s_debug.c
---- a/ircd/s_debug.c   Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/s_debug.c   Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/s_debug.c
+--- a/ircd/s_debug.c   Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/s_debug.c   Sat Jul 20 15:40:27 2013 +0100
 @@ -50,6 +50,7 @@
  #include "send.h"
  #include "struct.h"
@@ -869,9 +869,9 @@ diff -r 9096546c6212 ircd/s_debug.c
    send_reply(cptr, SND_EXPLICIT | RPL_STATSDEBUG,
             ":Hash: client %d(%zu), chan is the same", HASHSIZE,
             sizeof(void *) * HASHSIZE);
-diff -r 9096546c6212 ircd/s_err.c
---- a/ircd/s_err.c     Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/s_err.c     Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/s_err.c
+--- a/ircd/s_err.c     Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/s_err.c     Sat Jul 20 15:40:27 2013 +0100
 @@ -486,7 +486,7 @@
  /* 226 */
    { RPL_STATSALINE, "%s", "226" },
@@ -890,9 +890,9 @@ diff -r 9096546c6212 ircd/s_err.c
  /* 510 */
    { 0 },
  /* 511 */
-diff -r 9096546c6212 ircd/s_serv.c
---- a/ircd/s_serv.c    Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/s_serv.c    Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/s_serv.c
+--- a/ircd/s_serv.c    Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/s_serv.c    Sat Jul 20 15:40:27 2013 +0100
 @@ -57,6 +57,7 @@
  #include "struct.h"
  #include "sys.h"
@@ -909,9 +909,9 @@ diff -r 9096546c6212 ircd/s_serv.c
  
    /*
     * Pass on my client information to the new server
-diff -r 9096546c6212 ircd/s_stats.c
---- a/ircd/s_stats.c   Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/s_stats.c   Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/s_stats.c
+--- a/ircd/s_stats.c   Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/s_stats.c   Sat Jul 20 15:40:27 2013 +0100
 @@ -54,6 +54,7 @@
  #include "send.h"
  #include "struct.h"
@@ -934,9 +934,9 @@ diff -r 9096546c6212 ircd/s_stats.c
    { 'x', "memusage", STAT_FLAG_OPERFEAT, FEAT_HIS_STATS_x,
      stats_meminfo, 0,
      "List usage information." },
-diff -r 9096546c6212 ircd/s_user.c
---- a/ircd/s_user.c    Sat Jul 20 12:00:51 2013 +0100
-+++ b/ircd/s_user.c    Sat Jul 20 12:00:55 2013 +0100
+diff -r 530975e1fd87 ircd/s_user.c
+--- a/ircd/s_user.c    Sat Jul 20 15:39:54 2013 +0100
++++ b/ircd/s_user.c    Sat Jul 20 15:40:27 2013 +0100
 @@ -63,6 +63,7 @@
  #include "userload.h"
  #include "version.h"
@@ -956,9 +956,9 @@ diff -r 9096546c6212 ircd/s_user.c
      /* TODO: */
      /* apply auto sethost if needed */
      apply_spoofblock(sptr);
-diff -r 9096546c6212 ircd/welcome.c
+diff -r 530975e1fd87 ircd/welcome.c
 --- /dev/null  Thu Jan 01 00:00:00 1970 +0000
-+++ b/ircd/welcome.c   Sat Jul 20 12:00:55 2013 +0100
++++ b/ircd/welcome.c   Sat Jul 20 15:40:27 2013 +0100
 @@ -0,0 +1,877 @@
 +/*
 + * IRC - Internet Relay Chat, ircd/welcome.c