commit - c5342fb4670387fb7f7335e36ac3260c1e8ab514
commit + 02d76230743a63d29800afc4d2f1f2473e624793
blob - a60a10e7a250586ce6b51e21f8b9ddb8004bba56
blob + 97ecb10ff0176edf525a99b05e87eb1661942dcc
--- src/ngircd/conf.c
+++ src/ngircd/conf.c
#include "client.h"
#include "defines.h"
#include "log.h"
+#include "match.h"
#include "resolve.h"
#include "tool.h"
#endif
printf( " MyPassword = %s\n", Conf_Server[i].pwd_in );
printf( " PeerPassword = %s\n", Conf_Server[i].pwd_out );
+ printf( " ServiceMask = %s\n", Conf_Server[i].svs_mask);
printf( " Group = %d\n", Conf_Server[i].group );
printf( " Passive = %s\n\n", Conf_Server[i].flags & CONF_SFLAG_DISABLED ? "yes" : "no");
}
} /* Conf_AddServer */
+/**
+ * Check if the given nick name is an service
+ */
+GLOBAL bool
+Conf_IsService(int ConfServer, char *Nick)
+{
+ return MatchCaseInsensitive(Conf_Server[ConfServer].svs_mask, Nick);
+} /* Conf_IsService */
+
+
static void
Set_Defaults( bool InitServers )
{
New_Server.flags |= CONF_SFLAG_DISABLED;
return;
}
+ if (strcasecmp(Var, "ServiceMask") == 0) {
+ len = strlcpy(New_Server.svs_mask, ngt_LowerStr(Arg),
+ sizeof(New_Server.svs_mask));
+ if (len >= sizeof(New_Server.svs_mask))
+ Config_Error_TooLong(Line, Var);
+ return;
+ }
Config_Error( LOG_ERR, "%s, line %d (section \"Server\"): Unknown variable \"%s\"!",
NGIRCd_ConfFile, Line, Var );
blob - 0e5b2abd96565dbd4434620e8ced5338d284c594
blob + af489edfc02b64fc484fd7b31a2e0b1f3c2255ff
--- src/ngircd/conf.h
+++ src/ngircd/conf.h
/*
* 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
* (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information.
*
- * $Id: conf.h,v 1.49 2008/03/18 20:12:47 fw Exp $
- *
* Configuration management (header)
*/
RES_STAT res_stat; /* Status of the resolver */
int flags; /* Flags */
CONN_ID conn_id; /* ID of server connection or NONE */
- ng_ipaddr_t bind_addr; /* source address to use for outgoing connections */
+ ng_ipaddr_t bind_addr; /* source address to use for outgoing
+ connections */
ng_ipaddr_t dst_addr[2]; /* list of addresses to connect to */
#ifdef SSL_SUPPORT
bool SSLConnect; /* connect() using SSL? */
#endif
+ char svs_mask[CLIENT_ID_LEN]; /* Mask of nick names that are
+ services */
} CONF_SERVER;
GLOBAL bool Conf_DisableServer PARAMS(( char *Name ));
GLOBAL bool Conf_AddServer PARAMS(( char *Name, UINT16 Port, char *Host, char *MyPwd, char *PeerPwd ));
+GLOBAL bool Conf_IsService PARAMS((int ConfServer, char *Nick));
+
#endif
blob - 85d95022c74ed1f85ea5f6ec874af1ef919a0b48
blob + 3cf6ab91e39c0ccd28633a45509b79f4882433ab
--- src/ngircd/irc-login.c
+++ src/ngircd/irc-login.c
* RFC 1459: announce the new client only after receiving the
* USER command, first we need more information! */
if (Req->argc < 7) {
- LogDebug("User \"%s\" is beeing registered (RFC 1459) ...",
+ LogDebug("Client \"%s\" is beeing registered (RFC 1459) ...",
Client_Mask(c));
Client_SetType(c, CLIENT_GOTNICK);
} else
static void
Introduce_Client(CLIENT *From, CLIENT *Client)
{
+ char *type;
+
Client_SetType(Client, CLIENT_USER);
if (From) {
- LogDebug("User \"%s\" (+%s) registered (via %s, on %s, %d hop%s).",
- Client_Mask(Client), Client_Modes(Client),
+ if (Conf_IsService(Conf_GetServer(Client_Conn(From)), Client_ID(Client))) {
+ type = "Service";
+ } else
+ type = "User";
+ LogDebug("%s \"%s\" (+%s) registered (via %s, on %s, %d hop%s).",
+ type, Client_Mask(Client), Client_Modes(Client),
Client_ID(From), Client_ID(Client_Introducer(Client)),
Client_Hops(Client), Client_Hops(Client) > 1 ? "s": "");
} else