[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Uncollideble Nick Patch



2.11 in 10 lines ?;))

Gael

On Wed, Feb 23, 2000 at 07:51:20AM -0800, zudden wrote:
> Hi,
> 
> I have written a small patch for preventing collides
> in advance.
> 
> Ircd +2.10.2 allows servers to send out a nick
> starting with a digit, but disallows a user to choose
> such a nick. So by letting users safely getting access
> to a unique nick beginning with a digit, we can create
> a (almost) uncollideble nick.
> 
> In order to perform the above, every server in the
> network using this patch, needs to define a 2 bytes
> unique SERVERID = [digit][A-Z], ex 0C. That means a
> user wanting to use the nick foobar, will get the nick
> 0Cfoobar set for him/her. Either by use of /nick
> 00foobar (as my patch use) or by adding a new command
> like /snick foobar.
> 
> I know this is not the perfect solution for dealing
> with collides. It's far from perfect. But at least it
> gets less trouble when people trying to collide chans.
> 
> Accourding to http://irc.tu-ilmenau.de/all_servers/
> there are currently 7 servers with 2.10.2 and less.
> Before it is even possible to run this patch, thoose
> servers must be upgraded.
> 
> Sincerely,
> 
> Zudden
> 
> 
> (I also sent the patch as an attachment)
> 
> CUT HERE
> 
> --- irc2.10.3/support/config.h.dist     Mon Jul 12
> 00:11:17 1999
> +++ irc2.10.3.anticollide/support/config.h.dist Wed
> Feb 23 15:35:57 2000
> @@ -17,6 +17,12 @@
>   *   Foundation, Inc., 675 Mass Ave, Cambridge, MA
> 02139, USA.
>   */
>  
> +/* Settings for the 'ugly but working uncollideble
> nick' patch by Zudden
> +   Ex: SERVERID = 2W. Client types /nick 00foobar -->
> gets nick 2Wfoobar (uncollideble nick).
> +
> +   The 2 bytes unique SERVERID = [0-9][A-Z] of your
> server on the irc-network. /Zudden */
> +#define SERVERID "0A"
> +
>  /*
>   *  ircdwatch configuration options.
>   */
> --- irc2.10.3/ircd/s_user.c     Sat Jul 17 13:47:49
> 1999
> +++ irc2.10.3.anticollide/ircd/s_user.c Wed Feb 23
> 15:06:13 2000
> @@ -247,8 +247,15 @@
>         if (*nick == '-') /* first character '-' */
>                 return 0;
>  
> -       if (isdigit(*nick) && !server) /* first
> character in [0..9] */
> -               return 0;
> +       if (!(nick[0] == '0' && nick[1] == '0' &&
> !server)) {
> +               if (isdigit(*nick) && !server) /*
> first character in [0..9] */
> +                       return 0;
> +       }
> +       else
> +       {
> +               nick[0] = SERVERID[0]; /* Replace
> leading 00 with SERVERID /Zudden */
> +               nick[1] = SERVERID[1]; 
> +       }
>  
>         if (!strcasecmp(nick, "anonymous"))
>                 return 0;
> 
> CUT HERE
> __________________________________________________
> Do You Yahoo!?
> Talk to your friends online with Yahoo! Messenger.
> http://im.yahoo.com
Content-Description: anticollide.diff
> --- irc2.10.3/support/config.h.dist	Mon Jul 12 00:11:17 1999
> +++ irc2.10.3.anticollide/support/config.h.dist	Wed Feb 23 15:35:57 2000
> @@ -17,6 +17,12 @@
>   *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
>   */
>  
> +/* Settings for the 'ugly but working uncollideble nick' patch by Zudden
> +   Ex: SERVERID = 2W. Client types /nick 00foobar --> gets nick 2Wfoobar (uncollideble nick).
> +
> +   The 2 bytes unique SERVERID = [0-9][A-Z] of your server on the irc-network. /Zudden */
> +#define SERVERID "0A"
> +
>  /*
>   *  ircdwatch configuration options.
>   */
> --- irc2.10.3/ircd/s_user.c	Sat Jul 17 13:47:49 1999
> +++ irc2.10.3.anticollide/ircd/s_user.c	Wed Feb 23 15:06:13 2000
> @@ -247,8 +247,15 @@
>  	if (*nick == '-') /* first character '-' */
>  		return 0;
>  
> -	if (isdigit(*nick) && !server) /* first character in [0..9] */
> -		return 0;
> +	if (!(nick[0] == '0' && nick[1] == '0' && !server)) {
> +		if (isdigit(*nick) && !server) /* first character in [0..9] */
> +			return 0;
> +	}
> +	else
> +	{
> +		nick[0] = SERVERID[0]; /* Replace leading 00 with SERVERID /Zudden */
> +		nick[1] = SERVERID[1]; 
> +	}
>  
>  	if (!strcasecmp(nick, "anonymous"))
>  		return 0;