about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2011-01-09 23:51:30 +0100
committerAlexander Barton <alex@barton.de>2011-01-09 23:51:30 +0100
commit4a6d44dce2436103dafaad199597ada354d9b794 (patch)
tree322334fd54c513f5332633c91c7fa98648ebbb6f /src
parent5ed7a4ea5755954dc6e25349125963cff7a4355c (diff)
downloadngircd-4a6d44dce2436103dafaad199597ada354d9b794.tar.gz
ngircd-4a6d44dce2436103dafaad199597ada354d9b794.zip
Remove support for ZeroConf/Bonjour/Rendezvous service registration
Diffstat (limited to 'src')
-rw-r--r--src/ngircd/Makefile.am4
-rw-r--r--src/ngircd/conf.c15
-rw-r--r--src/ngircd/conf.h3
-rw-r--r--src/ngircd/conn.c49
-rw-r--r--src/ngircd/defines.h5
-rw-r--r--src/ngircd/ngircd.c15
-rw-r--r--src/ngircd/rendezvous.c379
-rw-r--r--src/ngircd/rendezvous.h39
8 files changed, 5 insertions, 504 deletions
diff --git a/src/ngircd/Makefile.am b/src/ngircd/Makefile.am
index 2e8b2e54..c6176659 100644
--- a/src/ngircd/Makefile.am
+++ b/src/ngircd/Makefile.am
@@ -21,7 +21,7 @@ sbin_PROGRAMS = ngircd
 ngircd_SOURCES = ngircd.c array.c channel.c client.c conf.c conn.c conn-func.c \
 	conn-ssl.c conn-zip.c hash.c io.c irc.c irc-channel.c irc-info.c irc-login.c \
 	irc-mode.c irc-op.c irc-oper.c irc-server.c irc-write.c lists.c log.c \
-	match.c op.c numeric.c pam.c parse.c proc.c rendezvous.c resolve.c sighandlers.c
+	match.c op.c numeric.c pam.c parse.c proc.c resolve.c sighandlers.c
 
 ngircd_LDFLAGS = -L../portab -L../tool -L../ipaddr
 
@@ -31,7 +31,7 @@ noinst_HEADERS = ngircd.h array.h channel.h client.h conf.h conf-ssl.h conn.h \
 	conn-func.h conn-ssl.h conn-zip.h hash.h io.h irc.h irc-channel.h \
 	irc-info.h irc-login.h irc-mode.h irc-op.h irc-oper.h irc-server.h \
 	irc-write.h lists.h log.h match.h numeric.h op.h pam.h parse.h proc.h \
-	rendezvous.h resolve.h sighandlers.h defines.h messages.h
+	resolve.h sighandlers.h defines.h messages.h
 
 clean-local:
 	rm -f check-version check-help lint.out
diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c
index 02f5520f..32846faa 100644
--- a/src/ngircd/conf.c
+++ b/src/ngircd/conf.c
@@ -355,7 +355,6 @@ Conf_Test( void )
 	printf("  DNS = %s\n", yesno_to_str(Conf_DNS));
 	printf("  Ident = %s\n", yesno_to_str(Conf_Ident));
 	printf("  PAM = %s\n", yesno_to_str(Conf_PAM));
-	printf("  ZeroConf = %s\n", yesno_to_str(Conf_ZeroConf));
 	puts("");
 
 	opers_puts();
@@ -577,11 +576,6 @@ Set_Defaults_Optional(void)
 #else
 	Conf_PAM = false;
 #endif
-#ifdef ZEROCONF
-	Conf_ZeroConf = true;
-#else
-	Conf_ZeroConf = false;
-#endif
 }
 
 
@@ -937,10 +931,6 @@ CheckLegacyNoOption(const char *Var, const char *Arg)
 		Conf_PAM = !Check_ArgIsTrue(Arg);
 		return true;
 	}
-	if(strcasecmp(Var, "NoZeroConf") == 0) {
-		Conf_ZeroConf = !Check_ArgIsTrue(Arg);
-		return true;
-	}
 	return false;
 }
 
@@ -1278,11 +1268,6 @@ Handle_FEATURES(int Line, char *Var, char *Arg)
 		WarnPAM(Line);
 		return;
 	}
-	if(strcasecmp(Var, "ZeroConf") == 0) {
-		/* register services using ZeroConf */
-		Conf_ZeroConf = Check_ArgIsTrue(Arg);
-		return;
-	}
 }
 
 static void
diff --git a/src/ngircd/conf.h b/src/ngircd/conf.h
index 3cddbb4b..5cb1e6b2 100644
--- a/src/ngircd/conf.h
+++ b/src/ngircd/conf.h
@@ -152,9 +152,6 @@ GLOBAL bool Conf_Ident;
 /* Enable all usage of PAM, even when compiled with support for it */
 GLOBAL bool Conf_PAM;
 
-/* Enable service registration using "ZeroConf" */
-GLOBAL bool Conf_ZeroConf;
-
 /*
  * try to connect to remote systems using the ipv6 protocol,
  * if they have an ipv6 address? (default yes)
diff --git a/src/ngircd/conn.c b/src/ngircd/conn.c
index 6a1c056e..b798e6e7 100644
--- a/src/ngircd/conn.c
+++ b/src/ngircd/conn.c
@@ -71,10 +71,6 @@
 #include "resolve.h"
 #include "tool.h"
 
-#ifdef ZEROCONF
-# include "rendezvous.h"
-#endif
-
 #include "exp.h"
 
 
@@ -516,9 +512,6 @@ Conn_ExitListeners( void )
 	/* Close down all listening sockets */
 	int *fd;
 	size_t arraylen;
-#ifdef ZEROCONF
-	Rendezvous_UnregisterListeners( );
-#endif
 
 	arraylen = array_length(&My_Listeners, sizeof (int));
 	Log(LOG_INFO,
@@ -575,9 +568,7 @@ NewListener(const char *listen_addr, UINT16 Port)
 	/* Create new listening socket on specified port */
 	ng_ipaddr_t addr;
 	int sock, af;
-#ifdef ZEROCONF
-	char name[CLIENT_ID_LEN], *info;
-#endif
+
 	if (!InitSinaddrListenAddr(&addr, listen_addr, Port))
 		return -1;
 
@@ -613,38 +604,8 @@ NewListener(const char *listen_addr, UINT16 Port)
 		return -1;
 	}
 
-	Log(LOG_INFO, "Now listening on [%s]:%d (socket %d).", ng_ipaddr_tostr(&addr), Port, sock);
-
-#ifdef ZEROCONF
-	/* Get best server description text */
-	if( ! Conf_ServerInfo[0] ) info = Conf_ServerName;
-	else
-	{
-		/* Use server info string */
-		info = NULL;
-		if( Conf_ServerInfo[0] == '[' )
-		{
-			/* Cut off leading hostname part in "[]" */
-			info = strchr( Conf_ServerInfo, ']' );
-			if( info )
-			{
-				info++;
-				while( *info == ' ' ) info++;
-			}
-		}
-		if( ! info ) info = Conf_ServerInfo;
-	}
-
-	/* Add port number to description if non-standard */
-	if (Port != 6667)
-		snprintf(name, sizeof name, "%s (port %u)", info,
-		 	 (unsigned int)Port);
-	else
-	 	strlcpy(name, info, sizeof name);
-
-	/* Register service */
-	Rendezvous_Register( name, MDNS_TYPE, Port );
-#endif
+	Log(LOG_INFO, "Now listening on [%s]:%d (socket %d).",
+	    ng_ipaddr_tostr(&addr), Port, sock);
 	return sock;
 } /* NewListener */
 
@@ -709,10 +670,6 @@ Conn_Handler(void)
 	while (!NGIRCd_SignalQuit && !NGIRCd_SignalRestart) {
 		t = time(NULL);
 
-#ifdef ZEROCONF
-		Rendezvous_Handler();
-#endif
-
 		/* Check configured servers and established links */
 		Check_Servers();
 		Check_Connections();
diff --git a/src/ngircd/defines.h b/src/ngircd/defines.h
index 01b60373..ff456a34 100644
--- a/src/ngircd/defines.h
+++ b/src/ngircd/defines.h
@@ -108,11 +108,6 @@
 #define CUT_TXTSUFFIX "[CUT]"		/* Suffix for oversized messages that
 					   have been shortened and cut off. */
 
-#ifdef ZEROCONF
-#define MDNS_TYPE "_ircu._tcp."		/* Service type to register with mDNS */
-#endif
-
-
 #endif
 
 
diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c
index 63fc64bf..ac69a753 100644
--- a/src/ngircd/ngircd.c
+++ b/src/ngircd/ngircd.c
@@ -49,10 +49,6 @@
 #include "io.h"
 #include "irc.h"
 
-#ifdef ZEROCONF
-#include "rendezvous.h"
-#endif
-
 #include "exp.h"
 #include "ngircd.h"
 
@@ -280,9 +276,6 @@ main( int argc, const char *argv[] )
 		 * called with already dropped privileges ... */
 		Channel_Init( );
 		Client_Init( );
-#ifdef ZEROCONF
-		Rendezvous_Init( );
-#endif
 		Conn_Init( );
 
 		if (!io_library_init(CONNECTION_POOL)) {
@@ -330,9 +323,6 @@ main( int argc, const char *argv[] )
 
 		/* Alles abmelden */
 		Conn_Exit( );
-#ifdef ZEROCONF
-		Rendezvous_Exit( );
-#endif
 		Client_Exit( );
 		Channel_Exit( );
 		Log_Exit( );
@@ -371,11 +361,6 @@ Fill_Version( void )
 			strlcat( NGIRCd_VersionAddition, "+", sizeof NGIRCd_VersionAddition );
 	strlcat( NGIRCd_VersionAddition, "TCPWRAP", sizeof NGIRCd_VersionAddition );
 #endif
-#ifdef ZEROCONF
-	if( NGIRCd_VersionAddition[0] )
-		strlcat( NGIRCd_VersionAddition, "+", sizeof NGIRCd_VersionAddition );
-	strlcat( NGIRCd_VersionAddition, "ZEROCONF", sizeof NGIRCd_VersionAddition );
-#endif
 #ifdef IDENTAUTH
 	if( NGIRCd_VersionAddition[0] )
 		strlcat( NGIRCd_VersionAddition, "+", sizeof NGIRCd_VersionAddition );
diff --git a/src/ngircd/rendezvous.c b/src/ngircd/rendezvous.c
deleted file mode 100644
index 67278935..00000000
--- a/src/ngircd/rendezvous.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2010 by 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
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * Please read the file COPYING, README and AUTHORS for more information.
- *
- * Rendezvous service registration.
- *
- * Supported APIs are:
- *  - Apple Mac OS X
- *  - Howl
- */
-
-
-#include "portab.h"
-
-#ifdef ZEROCONF
-
-
-#include "imp.h"
-#include <assert.h>
-
-#include <stdio.h>
-#include <string.h>
-
-#ifdef HAVE_MACH_PORT_H
-#include "mach/port.h"
-#include "mach/message.h"
-#endif
-
-#ifdef HAVE_DNSSERVICEDISCOVERY_DNSSERVICEDISCOVERY_H
-#include <DNSServiceDiscovery/DNSServiceDiscovery.h>
-#endif
-
-#ifdef HAVE_RENDEZVOUS_RENDEZVOUS_H
-#include <rendezvous/rendezvous.h>
-#endif
-
-#include "defines.h"
-#include "conn.h"
-#include "conf.h"
-#include "log.h"
-
-#include "exp.h"
-#include "rendezvous.h"
-
-
-#if defined(HAVE_DNSSERVICEREGISTRATIONCREATE)
-#	define APPLE
-#elif defined(HAVE_SW_DISCOVERY_INIT)
-#	define HOWL
-#else
-#	error "Can't detect Rendezvous API!?"
-#endif
-
-
-#define MAX_RENDEZVOUS 1000
-
-typedef struct _service
-{
-	char Desc[CLIENT_ID_LEN];
-#ifdef APPLE
-	dns_service_discovery_ref Discovery_Ref;
-	mach_port_t Mach_Port;
-#endif
-#ifdef HOWL
-	sw_discovery_oid Id;
-#endif
-} SERVICE;
-
-static SERVICE My_Rendezvous[MAX_RENDEZVOUS];
-
-
-static void Unregister( int Idx );
-
-
-/* -- Apple API -- */
-
-#ifdef APPLE
-
-#define MAX_MACH_MSG_SIZE 512
-
-static void Registration_Reply_Handler( DNSServiceRegistrationReplyErrorType ErrCode, void *Context );
-
-#endif /* Apple */
-
-
-/* -- Howl API -- */
-
-#ifdef HOWL
-
-static sw_discovery My_Discovery_Session = NULL;
-static sw_salt My_Salt;
-
-static sw_result HOWL_API Registration_Reply_Handler( sw_discovery Session, sw_discovery_publish_status Status, sw_discovery_oid Id, sw_opaque Extra );
-
-#endif /* Howl */
-
-
-GLOBAL void Rendezvous_Init( void )
-{
-	/* Initialize structures */
-
-	int i;
-
-	for (i = 0; i < MAX_RENDEZVOUS; i++)
-		My_Rendezvous[i].Desc[0] = '\0';
-
-	if (!Conf_ZeroConf)
-		return;
-
-#ifdef HOWL
-	if( sw_discovery_init( &My_Discovery_Session ) != SW_OKAY )
-	{
-		Log( LOG_EMERG, "Can't initialize Rendezvous (Howl): sw_discovery_init() failed!" );
-		Log( LOG_ALERT, "%s exiting due to fatal errors!", PACKAGE_NAME );
-		exit( 1 );
-	}
-
-	if( sw_discovery_salt( My_Discovery_Session, &My_Salt ) != SW_OKAY )
-	{
-		Log( LOG_EMERG, "Can't initialize Rendezvous (Howl): sw_discovery_salt() failed!" );
-		Log( LOG_ALERT, "%s exiting due to fatal errors!", PACKAGE_NAME );
-		exit( 1 );
-	}
-#endif
-} /* Rendezvous_Init */
-
-
-GLOBAL void Rendezvous_Exit( void )
-{
-	/* Clean up & exit module */
-
-	int i;
-
-	for( i = 0; i < MAX_RENDEZVOUS; i++ )
-	{
-		if( My_Rendezvous[i].Desc[0] ) Unregister( i );
-	}
-
-#ifdef HOWL
-	sw_discovery_fina( My_Discovery_Session );
-#endif
-} /* Rendezvous_Exit */
-
-
-/**
- * Register ZeroConf service
- */
-GLOBAL bool Rendezvous_Register( char *Name, char *Type, UINT16 Port )
-{
-	int i;
-
-	if (!Conf_ZeroConf)
-		return true;
-
-	/* Search free port structure */
-	for( i = 0; i < MAX_RENDEZVOUS; i++ ) if( ! My_Rendezvous[i].Desc[0] ) break;
-	if( i >= MAX_RENDEZVOUS )
-	{
-		Log( LOG_ERR, "Can't register \"%s\" with Rendezvous: limit (%d) reached!", Name, MAX_RENDEZVOUS );
-		return false;
-	}
-	strlcpy( My_Rendezvous[i].Desc, Name, sizeof( My_Rendezvous[i].Desc ));
-	
-#ifdef APPLE
-	/* Register new service */
-	My_Rendezvous[i].Discovery_Ref = DNSServiceRegistrationCreate( Name, Type, "", htonl( Port ), "", Registration_Reply_Handler, &My_Rendezvous[i] );
-	if( ! My_Rendezvous[i].Discovery_Ref )
-	{
-		Log( LOG_ERR, "Can't register \"%s\" with Rendezvous: can't register service!", My_Rendezvous[i].Desc );
-		My_Rendezvous[i].Desc[0] = '\0';
-		return false;
-	}
-	
-	/* Get and save the corresponding Mach Port */
-	My_Rendezvous[i].Mach_Port = DNSServiceDiscoveryMachPort( My_Rendezvous[i].Discovery_Ref );
-	if( ! My_Rendezvous[i].Mach_Port )
-	{
-		Log( LOG_ERR, "Can't register \"%s\" with Rendezvous: got no Mach Port!", My_Rendezvous[i].Desc );
-		/* Here we actually leek a descriptor :-( */
-		My_Rendezvous[i].Discovery_Ref = 0;
-		My_Rendezvous[i].Desc[0] = '\0';
-		return false;
-	}
-#endif /* Apple */
-
-#ifdef HOWL
-	if( sw_discovery_publish( My_Discovery_Session, 0, Name, Type, NULL, NULL, Port, NULL, 0, Registration_Reply_Handler, &My_Rendezvous[i], &My_Rendezvous[i].Id ) != SW_OKAY )
-	{
-		Log( LOG_ERR, "Can't register \"%s\" with Rendezvous: can't register service!", My_Rendezvous[i].Desc );
-		My_Rendezvous[i].Desc[0] = '\0';
-		return false;
-	}
-#endif /* Howl */
-
-	Log( LOG_DEBUG, "Rendezvous: Registering \"%s\" ...", My_Rendezvous[i].Desc );
-	return true;
-} /* Rendezvous_Register */
-
-
-GLOBAL bool Rendezvous_Unregister( char *Name )
-{
-	/* Unregister service from rendezvous */
-
-	int i;
-	bool ok;
-
-	ok = false;
-	for( i = 0; i < MAX_RENDEZVOUS; i++ )
-	{
-		if( strcmp( Name, My_Rendezvous[i].Desc ) == 0 )
-		{
-			Unregister( i );
-			ok = true;
-		}
-	}
-
-	return ok;
-} /* Rendezvous_Unregister */
-
-
-GLOBAL void Rendezvous_UnregisterListeners( void )
-{
-	/* Unregister all our listening sockets from Rendezvous */
-
-	int i;
-
-	for( i = 0; i < MAX_RENDEZVOUS; i++ )
-	{
-		if( My_Rendezvous[i].Desc[0] ) Unregister( i );
-	}
-} /* Rendezvous_UnregisterListeners */
-
-
-GLOBAL void Rendezvous_Handler( void )
-{
-	/* Handle all Rendezvous stuff; this function must be called
-	 * periodically from the run loop of the main program */
-
-	if (!Conf_ZeroConf)
-		return;
-
-#ifdef APPLE
-	int i;
-	char buffer[MAX_MACH_MSG_SIZE];
-	mach_msg_return_t result;
-	mach_msg_header_t *msg;
-
-	for( i = 0; i < MAX_RENDEZVOUS; i++ )
-	{
-		if( ! My_Rendezvous[i].Discovery_Ref ) continue;
-
-		/* Read message from Mach Port */
-		msg = (mach_msg_header_t *)buffer;
-		result = mach_msg( msg, MACH_RCV_MSG|MACH_RCV_TIMEOUT, 0, MAX_MACH_MSG_SIZE, My_Rendezvous[i].Mach_Port, 1, 0 );
-
-		/* Handle message */
-		if( result == MACH_MSG_SUCCESS ) DNSServiceDiscovery_handleReply( msg );
-#ifdef DEBUG
-		else if( result != MACH_RCV_TIMED_OUT ) Log( LOG_DEBUG, "mach_msg(): %ld", (long)result );
-#endif /* Debug */
-	}
-#endif /* Apple */
-
-#ifdef HOWL
-	sw_ulong msecs = 10;
-	sw_salt_step( My_Salt, &msecs );
-#endif
-} /* Rendezvous_Handler */
-
-
-static void Unregister( int Idx )
-{
-	/* Unregister service */
-
-#ifdef APPLE
-	DNSServiceDiscoveryDeallocate( My_Rendezvous[Idx].Discovery_Ref );
-#endif /* Apple */
-
-#ifdef HOWL
-	if( sw_discovery_cancel( My_Discovery_Session, My_Rendezvous[Idx].Id ) != SW_OKAY )
-	{
-		Log( LOG_ERR, "Rendezvous: Failed to unregister \"%s\"!", My_Rendezvous[Idx].Desc );
-		return;
-	}
-#endif /* Howl */
-	
-	Log( LOG_INFO, "Unregistered \"%s\" from Rendezvous.", My_Rendezvous[Idx].Desc );
-	My_Rendezvous[Idx].Desc[0] = '\0';
-} /* Unregister */
-
-
-/* -- Apple API -- */
-
-#ifdef APPLE
-
-
-static void Registration_Reply_Handler( DNSServiceRegistrationReplyErrorType ErrCode, void *Context )
-{
-	SERVICE *s = (SERVICE *)Context;
-	char txt[50];
-
-	if( ErrCode == kDNSServiceDiscoveryNoError )
-	{
-		/* Success! */
-		Log( LOG_INFO, "Successfully registered \"%s\" with Rendezvous.", s->Desc );
-		return;
-	}
-
-	switch( ErrCode )
-	{
-		case kDNSServiceDiscoveryAlreadyRegistered:
-			strcpy( txt, "name already registered!" );
-			break;
-		case kDNSServiceDiscoveryNameConflict:
-			strcpy( txt, "name conflict!" );
-			break;
-		default:
-			snprintf(txt, sizeof txt, "error code %ld!",
-			 	 (long)ErrCode);
-	}
-
-	Log( LOG_INFO, "Can't register \"%s\" with Rendezvous: %s", s->Desc, txt );
-	s->Desc[0] = '\0';
-} /* Registration_Reply_Handler */
-
-
-#endif /* Apple */
-
-
-/* -- Howl API -- */
-
-#ifdef HOWL
-
-
-static sw_result HOWL_API Registration_Reply_Handler( sw_discovery Session, sw_discovery_publish_status Status, UNUSED sw_discovery_oid Id, sw_opaque Extra )
-{
-	SERVICE *s = (SERVICE *)Extra;
-	char txt[50];
-
-	assert( Session == My_Discovery_Session );
-	assert( Extra != NULL );
-
-	if( Status == SW_DISCOVERY_PUBLISH_STARTED || Status == SW_DISCOVERY_PUBLISH_STOPPED )
-	{
-		/* Success! */
-		Log( LOG_INFO, "Successfully registered \"%s\" with Rendezvous.", s->Desc );
-		return SW_OKAY;
-	}
-		
-	switch( Status )
-	{
-		case SW_DISCOVERY_PUBLISH_NAME_COLLISION:
-			strcpy( txt, "name conflict!" );
-			break;
-		default:
-			snprintf(txt, sizeof txt, "error code %ld!",
-			 	 (long)Status);
-	}
-
-	Log( LOG_INFO, "Can't register \"%s\" with Rendezvous: %s", s->Desc, txt );
-	s->Desc[0] = '\0';
-
-	return SW_OKAY;
-} /* Registration_Reply_Handler */
-
-
-#endif /* Howl */
-
-
-#endif	/* ZEROCONF */
-
-
-/* -eof- */
diff --git a/src/ngircd/rendezvous.h b/src/ngircd/rendezvous.h
deleted file mode 100644
index 3e65f8e9..00000000
--- a/src/ngircd/rendezvous.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2003 by 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
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * Please read the file COPYING, README and AUTHORS for more information.
- *
- * $Id: rendezvous.h,v 1.4 2006/05/10 21:24:01 alex Exp $
- *
- * "Rendezvous" functions (Header)
- */
-
-
-#ifdef ZEROCONF
-
-#ifndef __rdezvous_h__
-#define __rdezvous_h__
-
-
-GLOBAL void Rendezvous_Init( void );
-GLOBAL void Rendezvous_Exit( void );
-
-GLOBAL bool Rendezvous_Register( char *Name, char *Type, UINT16 Port );
-
-GLOBAL bool Rendezvous_Unregister( char *Name );
-GLOBAL void Rendezvous_UnregisterListeners( void );
-
-GLOBAL void Rendezvous_Handler( void );
-
-
-#endif	/* __rdezvous_h__ */
-
-#endif	/* ZEROCONF */
-
-
-/* -eof- */