diff options
| -rwxr-xr-x | configure | 34 | ||||
| -rw-r--r-- | doc/bitlbee.schema | 62 | ||||
| -rw-r--r-- | storage_ldap.c | 177 | 
3 files changed, 0 insertions, 273 deletions
| @@ -38,7 +38,6 @@ otr=0  skype=0  events=glib -ldap=0  ssl=auto  arch=`uname -s` @@ -317,23 +316,6 @@ EOF  	fi;  } -detect_ldap() -{ -	TMPFILE=$(mktemp /tmp/bitlbee-configure.XXXXXX) -	if $CC -o $TMPFILE -shared -lldap 2>/dev/null >/dev/null; then -		cat<<EOF>>Makefile.settings -EFLAGS+=-lldap -CFLAGS+= -EOF -		ldap=1 -		rm -f $TMPFILE -		ret=1 -	else -		ldap=0 -		ret=0 -	fi -} -  RESOLV_TESTCODE='  #include <sys/types.h>  #include <netinet/in.h> @@ -469,22 +451,6 @@ fi  STORAGES="xml" -if [ "$ldap" = "auto" ]; then -	detect_ldap -fi - -if [ "$ldap" = 0 ]; then -	echo "#undef WITH_LDAP" >> config.h -elif [ "$ldap" = 1 ]; then -	echo -	echo 'LDAP support is a work in progress and does NOT work AT ALL right now.' -	echo -	exit 1 -	 -	echo "#define WITH_LDAP 1" >> config.h -	STORAGES="$STORAGES ldap" -fi -  for i in $STORAGES; do  	STORAGE_OBJS="$STORAGE_OBJS storage_$i.o"  done diff --git a/doc/bitlbee.schema b/doc/bitlbee.schema deleted file mode 100644 index 3322e057..00000000 --- a/doc/bitlbee.schema +++ /dev/null @@ -1,62 +0,0 @@ -## LDAP Schema file for BitlBee -## Copyright (C) 2006 Jelmer Vernooij <jelmer@samba.org> -## -## We need the following object classes and related attributes: -## -## bitlBeeBuddy: -##  - nick -##  - handle - -## each bitlBeeNick has zero or more bitlBeeAccount subentries -## and bitlBeeAccount entries contain zero or more bitlBeeBuddy entries - -## The admin needs to setup the LDAP server to: -## - allow anonymous users to auth against bitlBeeNick objects on the  -##   password field -## - allow anonymous users to create new objects that start with nick= -## - allow read/write for a user that is authenticated only to his/her own  -##   object and subentries - -##  - userid  -##  - userPassword -##  - setting (multiple values) -##  depends: top, account - -attributetype ( 1.3.6.1.4.1.25873.2.1.1 NAME 'bitlBeeAutoConnect' -	DESC 'Autoconnect setting' -	EQUALITY booleanMatch -	SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) - -attributetype ( 1.3.6.1.4.1.25873.2.1.2 NAME 'bitlBeeAccountNo' -	DESC 'Account number' -	EQUALITY integerMatch -	SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) - -objectclass ( 1.3.6.1.4.1.25873.2.2.3 NAME 'bitlBeeAccount' SUP account STRUCTURAL -	DESC 'BitlBee User Account ' -	MUST ( userid, userPassword ) -	MAY ( ) ) - -## bitlBeeAccount: -##  - accountNo 1.3.6.1.4.1.1466.115.121.1.27 -##  - protocol (msn, oscar, jabber, yahoo, ...) -##  - username -##  - password -##  - server name -##  - autoconnect (true/false) 1.3.6.1.4.1.1466.115.121.1.7 -##  depends: top - -objectclass ( 1.3.6.1.4.1.25873.2.2.1 NAME 'bitlBeeIMAccount' SUP account STRUCTURAL -	DESC 'BitlBee IM Account ' -	MUST ( bitlBeeAccountNo, userid, userPassword ) -	MAY ( host, bitlBeeAutoconnect ) ) - -objectclass ( 1.3.6.1.4.1.25873.2.2.2 NAME 'bitlBeeSetting' SUP top STRUCTURAL -	DESC 'BitlBee Configuration Setting' -	MUST ( bitlBeeSettingName ) -	MAY ( bitlBeeSettingValue ) ) - -objectclass ( 1.3.6.1.4.1.25873.2.2.3 NAME 'bitlBeeBuddy' SUP top STRUCTURAL -	DESC 'BitlBee Nick Mapping' -	MUST ( bitlBeeBuddyHandle ) -	MAY ( ircNick ) ) diff --git a/storage_ldap.c b/storage_ldap.c deleted file mode 100644 index 4bc99de5..00000000 --- a/storage_ldap.c +++ /dev/null @@ -1,177 +0,0 @@ -  /********************************************************************\ -  * BitlBee -- An IRC to other IM-networks gateway                     * -  *                                                                    * -  * Copyright 2002-2004 Wilmer van der Gaast and others                * -  \********************************************************************/ - -/* Storage backend that uses a LDAP database */ - -/* Copyright (C) 2006 Jelmer Vernooij <jelmer@samba.org> */ - -/* -  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. - -  This program is distributed in the hope that it will be useful, -  but WITHOUT ANY WARRANTY; without even the implied warranty of -  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -  GNU General Public License for more details. - -  You should have received a copy of the GNU General Public License with -  the Debian GNU/Linux distribution in /usr/share/common-licenses/GPL; -  if not, write to the Free Software Foundation, Inc., 59 Temple Place, -  Suite 330, Boston, MA  02111-1307  USA -*/ - -#define BITLBEE_CORE -#include "bitlbee.h" -#include <ldap.h> - -#define BB_LDAP_HOST "localhost" -#define BB_LDAP_BASE "" - -static char *nick_dn(const char *nick) -{ -	return g_strdup_printf("bitlBeeNick=%s%s%s", nick, BB_LDAP_BASE?",":"", BB_LDAP_BASE?BB_LDAP_BASE:""); -} - -static storage_status_t nick_connect(const char *nick, const char *password, LDAP **ld) -{ -	char *mydn; -	int ret; -	storage_status_t status; -	*ld = ldap_init(BB_LDAP_HOST, LDAP_PORT); - -	if (!ld) { -		log_message( LOGLVL_WARNING, "Unable to connect to LDAP server at %s", BB_LDAP_HOST ); -		return STORAGE_OTHER_ERROR; -	} - -	mydn = nick_dn(nick); - -	ret = ldap_simple_bind_s(*ld, mydn, password); - -	switch (ret) { -	 case LDAP_SUCCESS: status = STORAGE_OK; break; -	 case LDAP_INVALID_CREDENTIALS: status = STORAGE_INVALID_PASSWORD; break; -	 default:  -		log_message( LOGLVL_WARNING, "Unable to authenticate %s: %s", mydn, ldap_err2string(ret) ); -		status = STORAGE_OTHER_ERROR; -		break; -	} - -	g_free(mydn); - -	return status; -} - -static storage_status_t sldap_load ( const char *my_nick, const char* password, irc_t *irc ) -{ -	LDAPMessage *res, *msg; -	LDAP *ld; -	int ret, i; -	storage_status_t status; -	char *mydn;  - -	status = nick_connect(my_nick, password, &ld); -	if (status != STORAGE_OK) -		return status; - -	mydn = nick_dn(my_nick); - -	ret = ldap_search_s(ld, mydn, LDAP_SCOPE_BASE, "(objectClass=*)", NULL, 0, &res); - -	if (ret != LDAP_SUCCESS) { -		log_message( LOGLVL_WARNING, "Unable to search for %s: %s", mydn, ldap_err2string(ret) ); -		ldap_unbind_s(ld); -		return STORAGE_OTHER_ERROR; -	} - -	g_free(mydn); - -	for (msg = ldap_first_entry(ld, res); msg; msg = ldap_next_entry(ld, msg)) { -	} - -	/* FIXME: Store in irc_t */ - -	ldap_unbind_s(ld); -	 -	return STORAGE_OK; -} - -static storage_status_t sldap_check_pass( const char *nick, const char *password ) -{ -	LDAP *ld; -	storage_status_t status; - -	status = nick_connect(nick, password, &ld); - -	ldap_unbind_s(ld); - -	return status; -} - -static storage_status_t sldap_remove( const char *nick, const char *password ) -{ -	storage_status_t status; -	LDAP *ld; -	char *mydn; -	int ret; -	 -	status = nick_connect(nick, password, &ld); - -	if (status != STORAGE_OK) -		return status; - -	mydn = nick_dn(nick); -	 -	ret = ldap_delete(ld, mydn); - -	if (ret != LDAP_SUCCESS) { -		log_message( LOGLVL_WARNING, "Error removing %s: %s", mydn, ldap_err2string(ret) ); -		ldap_unbind_s(ld); -		return STORAGE_OTHER_ERROR; -	} - -	ldap_unbind_s(ld); - -	g_free(mydn); -	return STORAGE_OK; -} - -static storage_status_t sldap_save( irc_t *irc, int overwrite ) -{ -	LDAP *ld; -	char *mydn; -	storage_status_t status; -	LDAPMessage *msg; - -	status = nick_connect(irc->nick, irc->password, &ld); -	if (status != STORAGE_OK) -		return status; - -	mydn = nick_dn(irc->nick); - -	/* FIXME: Make this a bit more atomic? What if we crash after  -	 * removing the old account but before adding the new one ? */ -	if (overwrite)  -		sldap_remove(irc->nick, irc->password); - -	g_free(mydn); - -	ldap_unbind_s(ld); -	 -	return STORAGE_OK; -} - - - -storage_t storage_ldap = { -	.name = "ldap", -	.check_pass = sldap_check_pass, -	.remove = sldap_remove, -	.load = sldap_load, -	.save = sldap_save -}; | 
