ngIRCd 0.0.1, 31.12.2001
- erste oeffentliche Version von ngIRCd als "public preview" :-)
-
-
---
-$Id: ChangeLog,v 1.345 2008/03/18 20:12:47 fw Exp $
automake ("configure") should be no problem.
The normal installation procedure after getting (and expanding) the source
-files (using a distribution archive or CVS) is as following:
+files (using a distribution archive or GIT) is as following:
- 1) ./autogen.sh [only necessary when using CVS]
+ 1) ./autogen.sh [only necessary when using GIT]
2) ./configure
3) make
4) make install
The first step, autogen.sh, is only necessary if the configure-script isn't
already generated. This never happens in official ("stable") releases in
-tar.gz-archives, but when using CVS.
+tar.gz-archives, but when using GIT.
This step is therefore only interesting for developers.
Use "--help" to see a short help text describing all available parameters
the server understands, with "--version" the ngIRCd shows its version
number. In both cases the server exits after the output.
-
-
---
-$Id: INSTALL,v 1.26 2007/04/08 11:39:08 alex Exp $
releases there.
If you are interested in the latest development versions (which are not
-always stable), then please read the section "CVS" on the homepage and
-the file "doc/CVS.txt" which describes the use of CVS, the "Concurrent
-Versioning System".
+always stable), then please read the section about "GIT" on the homepage and
+the file "doc/GIT.txt" which describes the use of GIT, the version control
+system used by ngIRCd (homepage: http://git.or.cz/).
VI. Bugs
If you have critics, patches or something else, please feel free to post a
mail to the ngIRCd mailing list: <ngircd-ml@arthur.ath.cx> (please see
<http://ngircd.barton.de/#ml> for details).
-
-
---
-$Id: README,v 1.25 2007/10/04 15:18:48 alex Exp $
defines.h messages.h
clean-local:
- rm -f check-version check-help lint.out cvs-version.*
+ rm -f check-version check-help lint.out
maintainer-clean-local:
rm -f Makefile Makefile.in
|| echo "Result: no warnings found."; \
echo; [ $$warnings -gt 0 ] && exit 1
-ngircd.c: cvs-version.h
-
-irc-login.c: cvs-version.h
-
-irc-info.c: cvs-version.h
-
-cvs-version.h: cvs-date
-
-cvs-date:
- grep VERSION ../config.h | grep "CVS" \
- && echo "#define CVSDATE \"$$( grep "\$$Id" $(srcdir)/*.c \
- | $(AWK) "{ print \$$9 }" | sort | tail -1 \
- | sed -e "s/\//-/g" )\"" > cvs-version.new \
- || echo "" > cvs-version.new
- diff cvs-version.h cvs-version.new 2>/dev/null \
- || cp cvs-version.new cvs-version.h
-
TESTS = check-version check-help
# -eof-
} /* Channel_Join */
+/**
+ * Remove client from channel.
+ * This function lets a client lead a channel. First, the function checks
+ * if the channel exists and the client is a member of it and sends out
+ * appropriate error messages if not. The real work is done by the function
+ * Remove_Client().
+ */
GLOBAL bool
-Channel_Part( CLIENT *Client, CLIENT *Origin, const char *Name, const char *Reason )
+Channel_Part(CLIENT * Client, CLIENT * Origin, const char *Name, const char *Reason)
{
CHANNEL *chan;
- assert( Client != NULL );
- assert( Name != NULL );
- assert( Reason != NULL );
+ assert(Client != NULL);
+ assert(Name != NULL);
+ assert(Reason != NULL);
- chan = Channel_Search( Name );
- if(( ! chan ) || ( ! Get_Cl2Chan( chan, Client )))
- {
- IRC_WriteStrClient( Client, ERR_NOSUCHCHANNEL_MSG, Client_ID( Client ), Name );
+ chan = Channel_Search(Name);
+ if (!chan) {
+ IRC_WriteStrClient(Client, ERR_NOSUCHCHANNEL_MSG,
+ Client_ID(Client), Name);
+ return false;
+ }
+ if (!Get_Cl2Chan(chan, Client)) {
+ IRC_WriteStrClient(Client, ERR_NOTONCHANNEL_MSG,
+ Client_ID(Client), Name);
return false;
}
- /* User aus Channel entfernen */
- if( ! Remove_Client( REMOVE_PART, chan, Client, Origin, Reason, true)) return false;
- else return true;
+ if (!Remove_Client(REMOVE_PART, chan, Client, Origin, Reason, true))
+ return false;
+ else
+ return true;
} /* Channel_Part */
} /* IRC_JOIN */
+/**
+ * Handler for the IRC "PART" command.
+ */
GLOBAL bool
-IRC_PART( CLIENT *Client, REQUEST *Req )
+IRC_PART(CLIENT * Client, REQUEST * Req)
{
CLIENT *target;
char *chan;
- assert( Client != NULL );
- assert( Req != NULL );
+ assert(Client != NULL);
+ assert(Req != NULL);
if (Req->argc < 1 || Req->argc > 2)
return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
- Client_ID(Client), Req->command);
+ Client_ID(Client), Req->command);
- /* Wer ist der Absender? */
- if( Client_Type( Client ) == CLIENT_SERVER ) target = Client_Search( Req->prefix );
- else target = Client;
- if( ! target ) return IRC_WriteStrClient( Client, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->prefix );
+ /* Get the sender */
+ if (Client_Type(Client) == CLIENT_SERVER)
+ target = Client_Search(Req->prefix);
+ else
+ target = Client;
+ if (!target)
+ return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG,
+ Client_ID(Client), Req->prefix);
- /* Channel-Namen durchgehen */
+ /* Loop over all the given channel names */
chan = strtok(Req->argv[0], ",");
while (chan) {
- Channel_Part(target, Client, chan, Req->argc > 1 ? Req->argv[1] : Client_ID(target));
-
+ Channel_Part(target, Client, chan,
+ Req->argc > 1 ? Req->argv[1] : Client_ID(target));
chan = strtok(NULL, ",");
}
return CONNECTED;
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2005 Alexander Barton (alex@barton.de)
+ * Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
*
* 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
#include "portab.h"
-static char UNUSED id[] = "$Id: irc-info.c,v 1.44 2008/02/17 13:26:42 alex Exp $";
-
#include "imp.h"
#include <assert.h>
#include <errno.h>
#include <strings.h>
#include "ngircd.h"
-#include "cvs-version.h"
#include "conn-func.h"
#include "conn-zip.h"
#include "client.h"
IRC_VERSION( CLIENT *Client, REQUEST *Req )
{
CLIENT *target, *prefix;
-#ifdef CVSDATE
- char ver[12], vertxt[30];
-#endif
assert( Client != NULL );
assert( Req != NULL );
return CONNECTED;
}
- /* mit Versionsinfo antworten */
- IRC_SetPenalty( Client, 1 );
-#ifdef CVSDATE
- strlcpy( ver, CVSDATE, sizeof( ver ));
- strncpy( ver + 4, ver + 5, 2 );
- strncpy( ver + 6, ver + 8, 3 );
- snprintf( vertxt, sizeof( vertxt ), "%s(%s)", PACKAGE_VERSION, ver );
- return IRC_WriteStrClient( Client, RPL_VERSION_MSG, Client_ID( prefix ), PACKAGE_NAME, vertxt, NGIRCd_DebugLevel, Conf_ServerName, NGIRCd_VersionAddition );
-#else
- return IRC_WriteStrClient( Client, RPL_VERSION_MSG, Client_ID( prefix ), PACKAGE_NAME, PACKAGE_VERSION, NGIRCd_DebugLevel, Conf_ServerName, NGIRCd_VersionAddition );
-#endif
+ /* send version information */
+ IRC_SetPenalty(Client, 1);
+ return IRC_WriteStrClient(Client, RPL_VERSION_MSG, Client_ID(prefix),
+ PACKAGE_NAME, PACKAGE_VERSION,
+ NGIRCd_DebugLevel, Conf_ServerName,
+ NGIRCd_VersionAddition);
} /* IRC_VERSION */
-
static bool
write_whoreply(CLIENT *Client, CLIENT *c, const char *channelname, const char *flags)
{
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
+ * Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
*
* 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
#include "portab.h"
-static char UNUSED id[] = "$Id: irc-login.c,v 1.55 2008/02/05 11:46:55 fw Exp $";
-
#include "imp.h"
#include <assert.h>
#include <stdio.h>
#include "irc.h"
#include "irc-info.h"
#include "irc-write.h"
-#include "cvs-version.h"
#include "exp.h"
#include "irc-login.h"
Client_ID(from), Client_ID(Client));
#else
/* Some clients depend on the argument being returned in the PONG
- * reply (not mentioned in any RFC, though) */
+ * reply (not mentioned in any RFC, though) */
return IRC_WriteStrClient(Client, "PONG %s :%s",
Client_ID(from), Req->argv[0]);
#endif
static bool
-Hello_User( CLIENT *Client )
+Hello_User(CLIENT * Client)
{
-#ifdef CVSDATE
- char ver[12], vertxt[30];
-#endif
-
- assert( Client != NULL );
+ assert(Client != NULL);
/* Check password ... */
- if( strcmp( Client_Password( Client ), Conf_ServerPwd ) != 0 )
- {
+ if (strcmp(Client_Password(Client), Conf_ServerPwd) != 0) {
/* Bad password! */
- Log( LOG_ERR, "User \"%s\" rejected (connection %d): Bad password!", Client_Mask( Client ), Client_Conn( Client ));
- Conn_Close( Client_Conn( Client ), NULL, "Bad password", true);
+ Log(LOG_ERR,
+ "User \"%s\" rejected (connection %d): Bad password!",
+ Client_Mask(Client), Client_Conn(Client));
+ Conn_Close(Client_Conn(Client), NULL, "Bad password", true);
return DISCONNECTED;
}
- Log( LOG_NOTICE, "User \"%s\" registered (connection %d).", Client_Mask( Client ), Client_Conn( Client ));
+ Log(LOG_NOTICE, "User \"%s\" registered (connection %d).",
+ Client_Mask(Client), Client_Conn(Client));
/* Inform other servers */
- IRC_WriteStrServers( NULL, "NICK %s 1 %s %s 1 +%s :%s", Client_ID( Client ), Client_User( Client ), Client_Hostname( Client ), Client_Modes( Client ), Client_Info( Client ));
-
- /* Welcome :-) */
- if( ! IRC_WriteStrClient( Client, RPL_WELCOME_MSG, Client_ID( Client ), Client_Mask( Client ))) return false;
-
- /* Version and system type */
-#ifdef CVSDATE
- strlcpy( ver, CVSDATE, sizeof( ver ));
- memmove( ver + 4, ver + 5, 2 );
- memmove( ver + 6, ver + 8, 3 );
- snprintf( vertxt, sizeof( vertxt ), "%s(%s)", PACKAGE_VERSION, ver );
- if( ! IRC_WriteStrClient( Client, RPL_YOURHOST_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), vertxt, TARGET_CPU, TARGET_VENDOR, TARGET_OS )) return false;
-#else
- if( ! IRC_WriteStrClient( Client, RPL_YOURHOST_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), PACKAGE_VERSION, TARGET_CPU, TARGET_VENDOR, TARGET_OS )) return false;
-#endif
-
- if( ! IRC_WriteStrClient( Client, RPL_CREATED_MSG, Client_ID( Client ), NGIRCd_StartStr )) return false;
-#ifdef CVSDATE
- if( ! IRC_WriteStrClient( Client, RPL_MYINFO_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), vertxt, USERMODES, CHANMODES )) return false;
-#else
- if( ! IRC_WriteStrClient( Client, RPL_MYINFO_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), PACKAGE_VERSION, USERMODES, CHANMODES )) return false;
-#endif
+ IRC_WriteStrServers(NULL, "NICK %s 1 %s %s 1 +%s :%s",
+ Client_ID(Client), Client_User(Client),
+ Client_Hostname(Client), Client_Modes(Client),
+ Client_Info(Client));
+
+ if (!IRC_WriteStrClient
+ (Client, RPL_WELCOME_MSG, Client_ID(Client), Client_Mask(Client)))
+ return false;
+ if (!IRC_WriteStrClient
+ (Client, RPL_YOURHOST_MSG, Client_ID(Client),
+ Client_ID(Client_ThisServer()), PACKAGE_VERSION, TARGET_CPU,
+ TARGET_VENDOR, TARGET_OS))
+ return false;
+ if (!IRC_WriteStrClient
+ (Client, RPL_CREATED_MSG, Client_ID(Client), NGIRCd_StartStr))
+ return false;
+ if (!IRC_WriteStrClient
+ (Client, RPL_MYINFO_MSG, Client_ID(Client),
+ Client_ID(Client_ThisServer()), PACKAGE_VERSION, USERMODES,
+ CHANMODES))
+ return false;
/* Features supported by this server (005 numeric, ISUPPORT),
* see <http://www.irc.org/tech_docs/005.html> for details. */
- if (! IRC_Send_ISUPPORT(Client))
+ if (!IRC_Send_ISUPPORT(Client))
return DISCONNECTED;
- Client_SetType( Client, CLIENT_USER );
+ Client_SetType(Client, CLIENT_USER);
- if( ! IRC_Send_LUSERS( Client )) return DISCONNECTED;
- if( ! IRC_Show_MOTD( Client )) return DISCONNECTED;
+ if (!IRC_Send_LUSERS(Client))
+ return DISCONNECTED;
+ if (!IRC_Show_MOTD(Client))
+ return DISCONNECTED;
/* Suspend the client for a second ... */
- IRC_SetPenalty( Client, 1 );
+ IRC_SetPenalty(Client, 1);
return CONNECTED;
} /* Hello_User */
#include "client.h"
#include "channel.h"
#include "conf.h"
-#include "cvs-version.h"
#include "lists.h"
#include "log.h"
#include "parse.h"
strlcat( NGIRCd_VersionAddition, "/", sizeof( NGIRCd_VersionAddition ));
strlcat( NGIRCd_VersionAddition, TARGET_OS, sizeof( NGIRCd_VersionAddition ));
-#ifdef CVSDATE
- snprintf( NGIRCd_Version, sizeof NGIRCd_Version,"%s %s(%s)-%s", PACKAGE_NAME, PACKAGE_VERSION, CVSDATE, NGIRCd_VersionAddition);
-#else
- snprintf( NGIRCd_Version, sizeof NGIRCd_Version, "%s %s-%s", PACKAGE_NAME, PACKAGE_VERSION, NGIRCd_VersionAddition);
-#endif
-} /* Fill_Version */
+ snprintf(NGIRCd_Version, sizeof NGIRCd_Version, "%s %s-%s",
+ PACKAGE_NAME, PACKAGE_VERSION, NGIRCd_VersionAddition);
+ } /* Fill_Version */
/**
MotdFile = ngircd-test.motd
AdminEMail = admin@irc.server
MaxConnectionsIP = 0
- ServerUID = 1
- ServerGID = 1
OperCanUseMode = yes
[Operator]