From 38b9cb88c167002576c3aa433994ec8a2f41ec8b Mon Sep 17 00:00:00 2001 From: Alexander Barton Date: Fri, 14 Dec 2001 08:13:43 +0000 Subject: [PATCH] - neues Modul begonnen :-) --- src/ngircd/channel.c | 47 +++++++++++++++++++++ src/ngircd/channel.h | 43 +++++++++++++++++++ src/ngircd/client.c | 99 ++++++++++++++++++++++++++++++++++++++++++++ src/ngircd/client.h | 64 ++++++++++++++++++++++++++++ src/ngircd/irc.c | 43 +++++++++++++++++++ src/ngircd/irc.h | 34 +++++++++++++++ 6 files changed, 330 insertions(+) create mode 100644 src/ngircd/channel.c create mode 100644 src/ngircd/channel.h create mode 100644 src/ngircd/client.c create mode 100644 src/ngircd/client.h create mode 100644 src/ngircd/irc.c create mode 100644 src/ngircd/irc.h diff --git a/src/ngircd/channel.c b/src/ngircd/channel.c new file mode 100644 index 00000000..0c11a729 --- /dev/null +++ b/src/ngircd/channel.c @@ -0,0 +1,47 @@ +/* + * ngIRCd -- The Next Generation IRC Daemon + * Copyright (c)2001 by Alexander Barton (alex@barton.de) + * + * Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen + * der GNU General Public License (GPL), wie von der Free Software Foundation + * herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2 + * der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version. + * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste + * der an comBase beteiligten Autoren finden Sie in der Datei AUTHORS. + * + * $Id: channel.c,v 1.1 2001/12/14 08:13:43 alex Exp $ + * + * channel.c: Management der Channels + * + * $Log: channel.c,v $ + * Revision 1.1 2001/12/14 08:13:43 alex + * - neues Modul begonnen :-) + * + */ + + +#include +#include "global.h" + +#include +#include + +#include +#include "channel.h" + + +LOCAL CHANNEL *My_Channels; + + +GLOBAL VOID Channel_Init( VOID ) +{ + My_Channels = NULL; +} /* Channel_Init */ + + +GLOBAL VOID Channel_Exit( VOID ) +{ +} /* Channel_Exit */ + + +/* -eof- */ diff --git a/src/ngircd/channel.h b/src/ngircd/channel.h new file mode 100644 index 00000000..061cb6af --- /dev/null +++ b/src/ngircd/channel.h @@ -0,0 +1,43 @@ +/* + * ngIRCd -- The Next Generation IRC Daemon + * Copyright (c)2001 by Alexander Barton (alex@barton.de) + * + * Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen + * der GNU General Public License (GPL), wie von der Free Software Foundation + * herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2 + * der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version. + * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste + * der an comBase beteiligten Autoren finden Sie in der Datei AUTHORS. + * + * $Id: channel.h,v 1.1 2001/12/14 08:13:43 alex Exp $ + * + * channel.h: Management der Channels (Header) + * + * $Log: channel.h,v $ + * Revision 1.1 2001/12/14 08:13:43 alex + * - neues Modul begonnen :-) + * + */ + + +#ifndef __channel_h__ +#define __channel_h__ + + +#define NAME_LEN 50 /* vgl. RFC 2812, 1.3 */ + + +typedef struct _CHANNEL +{ + CHAR name[NAME_LEN + 1]; /* Name */ +} CHANNEL; + + +GLOBAL VOID Channel_Init( VOID ); +GLOBAL VOID Channel_Exit( VOID ); + + +#endif + + +/* -eof- */ diff --git a/src/ngircd/client.c b/src/ngircd/client.c new file mode 100644 index 00000000..53170919 --- /dev/null +++ b/src/ngircd/client.c @@ -0,0 +1,99 @@ +/* + * ngIRCd -- The Next Generation IRC Daemon + * Copyright (c)2001 by Alexander Barton (alex@barton.de) + * + * Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen + * der GNU General Public License (GPL), wie von der Free Software Foundation + * herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2 + * der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version. + * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste + * der an comBase beteiligten Autoren finden Sie in der Datei AUTHORS. + * + * $Id: client.c,v 1.1 2001/12/14 08:13:43 alex Exp $ + * + * client.c: Management aller Clients + * + * Der Begriff "Client" ist in diesem Fall evtl. etwas verwirrend: Clients sind + * alle Verbindungen, die im gesamten(!) IRC-Netzwerk bekannt sind. Das sind IRC- + * Clients (User), andere Server und IRC-Services. + * Ueber welchen IRC-Server die Verbindung nun tatsaechlich in das Netzwerk her- + * gestellt wurde, muss der jeweiligen Struktur entnommen werden. Ist es dieser + * Server gewesen, so existiert eine entsprechende CONNECTION-Struktur. + * + * $Log: client.c,v $ + * Revision 1.1 2001/12/14 08:13:43 alex + * - neues Modul begonnen :-) + * + */ + + +#include +#include "global.h" + +#include +#include + +#include "channel.h" +#include "conn.h" +#include "log.h" + +#include +#include "client.h" + + +LOCAL CLIENT *This_Server, *My_Clients; + + +LOCAL CLIENT *New_Client_Struct( VOID ); + + +GLOBAL VOID Client_Init( VOID ) +{ + This_Server = New_Client_Struct( ); + if( ! This_Server ) + { + Log( LOG_EMERG, "Can't allocate client structure for server! Going down." ); + exit( 1 ); + } + + /* Client-Struktur dieses Servers */ + This_Server->next = NULL; + This_Server->type = CLIENT_SERVER; + This_Server->conn_id = NONE; + This_Server->introducer = This_Server; + strcpy( This_Server->nick, "ngircd" ); /* FIXME! */ + + My_Clients = This_Server; +} /* Client_Init */ + + +GLOBAL VOID Client_Exit( VOID ) +{ +} /* Client Exit */ + + +LOCAL CLIENT *New_Client_Struct( VOID ) +{ + CLIENT *c; + INT i; + + c = malloc( sizeof( CLIENT )); + if( ! c ) + { + Log( LOG_EMERG, "Can't allocate memory!" ); + return NULL; + } + + c->next = NULL; + c->type = CLIENT_UNKNOWN; + c->conn_id = NONE; + c->introducer = NULL; + strcpy( c->nick, "" ); + strcpy( c->pass, "" ); + for( i = 0; i < MAX_CHANNELS; c->channels[i++] = NULL ); + + return c; +} /* New_Client */ + + +/* -eof- */ diff --git a/src/ngircd/client.h b/src/ngircd/client.h new file mode 100644 index 00000000..0ef7df46 --- /dev/null +++ b/src/ngircd/client.h @@ -0,0 +1,64 @@ +/* + * ngIRCd -- The Next Generation IRC Daemon + * Copyright (c)2001 by Alexander Barton (alex@barton.de) + * + * Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen + * der GNU General Public License (GPL), wie von der Free Software Foundation + * herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2 + * der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version. + * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste + * der an comBase beteiligten Autoren finden Sie in der Datei AUTHORS. + * + * $Id: client.h,v 1.1 2001/12/14 08:13:43 alex Exp $ + * + * client.h: Konfiguration des ngircd (Header) + * + * $Log: client.h,v $ + * Revision 1.1 2001/12/14 08:13:43 alex + * - neues Modul begonnen :-) + * + */ + + +#ifndef __client_h__ +#define __client_h__ + +#include "conn.h" + + +#define ID_LEN 63 /* max. ID-Laenge; vgl. RFC 2812, 1.1 und 1.2.1 */ +#define NICK_LEN 9 /* max. Nick-Laenge; vgl. RFC 2812, 1.2.1 */ +#define PASS_LEN 9 /* max. Laenge des Passwortes */ + +#define MAX_CHANNELS 32 /* max. Anzahl Channels pro Nick */ + + +typedef enum +{ + CLIENT_UNKNOWN, /* Verbindung mit (noch) unbekanntem Typ */ + CLIENT_USER, /* Client ist ein Benutzer */ + CLIENT_SERVER, /* Client ist ein Server */ + CLIENT_SERVICE /* Client ist ein Service */ +} CLIENT_TYPE; + + +typedef struct _CLIENT +{ + POINTER *next; /* Zeiger auf naechste Client-Struktur */ + CLIENT_TYPE type; /* Typ des Client, vgl. CLIENT_TYPE */ + CONN_ID conn_id; /* ID der Connection (wenn lokal) bzw. NONE (remote) */ + POINTER *introducer; /* ID des Servers, der die Verbindung hat */ + CHAR nick[ID_LEN + 1]; /* Nick (bzw. Server-ID, daher auch IDLEN!) */ + CHAR pass[PASS_LEN + 1]; /* Passwort, welches der Client angegeben hat */ + CHANNEL *channels[MAX_CHANNELS];/* IDs der Channel, bzw. NULL */ +} CLIENT; + + +GLOBAL VOID Client_Init( VOID ); +GLOBAL VOID Client_Exit( VOID ); + + +#endif + + +/* -eof- */ diff --git a/src/ngircd/irc.c b/src/ngircd/irc.c new file mode 100644 index 00000000..44a2e434 --- /dev/null +++ b/src/ngircd/irc.c @@ -0,0 +1,43 @@ +/* + * ngIRCd -- The Next Generation IRC Daemon + * Copyright (c)2001 by Alexander Barton (alex@barton.de) + * + * Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen + * der GNU General Public License (GPL), wie von der Free Software Foundation + * herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2 + * der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version. + * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste + * der an comBase beteiligten Autoren finden Sie in der Datei AUTHORS. + * + * $Id: irc.c,v 1.1 2001/12/14 08:13:43 alex Exp $ + * + * irc.c: IRC-Befehle + * + * $Log: irc.c,v $ + * Revision 1.1 2001/12/14 08:13:43 alex + * - neues Modul begonnen :-) + * + */ + + +#include +#include "global.h" + +#include +#include + +#include +#include "irc.h" + + +GLOBAL VOID IRC_Init( VOID ) +{ +} /* IRC_Init */ + + +GLOBAL VOID IRC_Exit( VOID ) +{ +} /* IRC_Exit */ + + +/* -eof- */ diff --git a/src/ngircd/irc.h b/src/ngircd/irc.h new file mode 100644 index 00000000..b2712485 --- /dev/null +++ b/src/ngircd/irc.h @@ -0,0 +1,34 @@ +/* + * ngIRCd -- The Next Generation IRC Daemon + * Copyright (c)2001 by Alexander Barton (alex@barton.de) + * + * Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen + * der GNU General Public License (GPL), wie von der Free Software Foundation + * herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2 + * der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version. + * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste + * der an comBase beteiligten Autoren finden Sie in der Datei AUTHORS. + * + * $Id: irc.h,v 1.1 2001/12/14 08:13:43 alex Exp $ + * + * irc.h: IRC-Befehle (Header) + * + * $Log: irc.h,v $ + * Revision 1.1 2001/12/14 08:13:43 alex + * - neues Modul begonnen :-) + * + */ + + +#ifndef __irc_h__ +#define __irc_h__ + + +GLOBAL VOID IRC_Init( VOID ); +GLOBAL VOID IRC_Exit( VOID ); + + +#endif + + +/* -eof- */ -- 2.39.2