From a535337276384757feaef763f81b5d8081ace662 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Fri, 24 Dec 2010 13:15:56 -0500 Subject: [PATCH] bitlbee: Add new ebuild with MSN profile name fix. --- net-im/bitlbee/Manifest | 6 + net-im/bitlbee/bitlbee-3.0.1.ebuild | 194 ++++++++++++++++++ .../bitlbee/files/bitlbee-3.0-configure.patch | 17 ++ .../files/bitlbee-3.0.1-msn-unfuck.patch | 186 +++++++++++++++++ net-im/bitlbee/files/bitlbee.confd | 2 + net-im/bitlbee/files/bitlbee.initd | 27 +++ 6 files changed, 432 insertions(+) create mode 100644 net-im/bitlbee/Manifest create mode 100644 net-im/bitlbee/bitlbee-3.0.1.ebuild create mode 100644 net-im/bitlbee/files/bitlbee-3.0-configure.patch create mode 100644 net-im/bitlbee/files/bitlbee-3.0.1-msn-unfuck.patch create mode 100644 net-im/bitlbee/files/bitlbee.confd create mode 100644 net-im/bitlbee/files/bitlbee.initd diff --git a/net-im/bitlbee/Manifest b/net-im/bitlbee/Manifest new file mode 100644 index 0000000..ba96300 --- /dev/null +++ b/net-im/bitlbee/Manifest @@ -0,0 +1,6 @@ +AUX bitlbee-3.0-configure.patch 393 RMD160 eb546e7271549cd56b87168ccf0ccb3ffb80742d SHA1 7762bae624acf765d3905b46b84448762694a25f SHA256 615e0cadb52abea5c133f8588b7d772c787bee725f11a986bed90226e5da4acd +AUX bitlbee-3.0.1-msn-unfuck.patch 6180 RMD160 3b361d79f9f2f883da4de6cc0cc933ed584ba1fa SHA1 4eee87d5837ea8be4862257152904c12a099cb81 SHA256 8031efaf1c8c507eb5d7b3b2acf79293e3d5c5437fe93cbce0d48cdd389df2fa +AUX bitlbee.confd 62 RMD160 f71fff4ab4fe49eebc071d693896f567291bee54 SHA1 80beb974922b2ff6cf9732a7bce1eb03cc10d870 SHA256 105afc0382fc5adc03ed644dba4e78817015a55432349f259a286ac3c1b06628 +AUX bitlbee.initd 605 RMD160 183c4a8117556cb474c01ba4038b357a6716f98e SHA1 3427fa5f558b2957046ef1a6afdd4bc2bb8807e3 SHA256 037091df1746b9a477f07cdac52d99f9310055646ce0e10f859835ba105e3fb4 +DIST bitlbee-3.0.1.tar.gz 668353 RMD160 cc62179e807ef175db0c2351d9363f118e28f394 SHA1 f3a0651d723b71b08f0dad3b5cb2843608d5c265 SHA256 408a737b35db4b9c407e3db09b2d2e7b528836a68e2d783373254b78812bf608 +EBUILD bitlbee-3.0.1.ebuild 5534 RMD160 d25dabb5dc3193fb8000295aab988fa8d9049959 SHA1 22039953994c885f90309ae02b5ab19b55358270 SHA256 2f6ed1bb7c818bdf569da7182975d2478bb4a0b5334f60ce889b2f1fa377c253 diff --git a/net-im/bitlbee/bitlbee-3.0.1.ebuild b/net-im/bitlbee/bitlbee-3.0.1.ebuild new file mode 100644 index 0000000..f726083 --- /dev/null +++ b/net-im/bitlbee/bitlbee-3.0.1.ebuild @@ -0,0 +1,194 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-im/bitlbee/bitlbee-3.0.1.ebuild,v 1.1 2010/11/25 05:08:12 radhermit Exp $ + +EAPI="3" +inherit eutils toolchain-funcs confutils multilib + +DESCRIPTION="irc to IM gateway that support multiple IM protocols" +HOMEPAGE="http://www.bitlbee.org/" +SRC_URI="http://get.bitlbee.org/src/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~sparc ~x86 ~x86-fbsd" +IUSE="debug gnutls ipv6 +jabber libevent msn nss +oscar otr +plugins purple ssl test twitter +yahoo xinetd" # ldap - Bug 195758 + +COMMON_DEPEND="purple? ( net-im/pidgin ) + libevent? ( dev-libs/libevent ) + !libevent? ( >=dev-libs/glib-2.4 ) + otr? ( net-libs/libotr ) + msn? ( gnutls? ( net-libs/gnutls ) + !gnutls? ( nss? ( dev-libs/nss ) ) + !gnutls? ( !nss? ( ssl? ( dev-libs/openssl ) ) ) + ) + jabber? ( gnutls? ( net-libs/gnutls ) + !gnutls? ( nss? ( dev-libs/nss ) ) + !gnutls? ( !nss? ( ssl? ( dev-libs/openssl ) ) ) + )" + # ldap? ( net-nds/openldap )" +DEPEND="${COMMON_DEPEND} + dev-util/pkgconfig + test? ( dev-libs/check )" + +RDEPEND="${COMMON_DEPEND} + virtual/logger + xinetd? ( sys-apps/xinetd )" + +pkg_setup() { + if use purple ; then + elog "You have enabled libpurple support. This disables all the other" + elog " protocol modules, since everything is handled by libpurple." + elog + else + elog "Support for all IM protocols are controlled by use flags." + elog " Make sure you've enabled the flags you want." + elog + fi + + confutils_require_any jabber msn oscar twitter yahoo purple + + # At the request of upstream, die if MSN Messenger support is enabled + # but no SSL support has been enabled + confutils_use_depend_any msn gnutls nss ssl + + if use jabber && ! use gnutls && ! use ssl ; then + if use nss ; then + ewarn "" + ewarn "You have enabled nss and jabber" + ewarn "but nss doesn't work with jabber" + ewarn "Enable ONE of the following use instead" + ewarn "flags: gnutls or ssl" + ewarn "" + die "nss with jabber doesn't work" + fi + elog "" + elog "You have enabled support for Jabber but do not have SSL" + elog "support enabled. This *will* prevent bitlbee from being" + elog "able to connect to SSL enabled Jabber servers. If you need to" + elog "connect to Jabber over SSL, enable ONE of the following use" + elog "flags: gnutls or ssl" + elog "" + fi + + enewgroup bitlbee + enewuser bitlbee -1 -1 /var/lib/bitlbee bitlbee +} + +src_prepare() { + sed -i \ + -e "s@/usr/local/sbin/bitlbee@/usr/sbin/bitlbee@" \ + -e "s/nobody/bitlbee/" \ + -e "s/}/ disable = yes\n}/" \ + doc/bitlbee.xinetd || die "sed failed in xinetd" + + sed -i \ + -e "s@mozilla-nss@nss@g" \ + configure || die "sed failed in configure" + + epatch "${FILESDIR}"/${PN}-3.0-configure.patch + epatch "${FILESDIR}"/${P}-msn-unfuck.patch +} + +src_configure() { + # ldap hard-disabled for now + local myconf="--ldap=0" + + # setup plugins, protocol, ipv6 and debug + for flag in debug ipv6 msn jabber oscar plugins purple twitter yahoo ; do + if use ${flag} ; then + myconf="${myconf} --${flag}=1" + else + myconf="${myconf} --${flag}=0" + fi + done + + # set otr + if use otr && use plugins ; then + myconf="${myconf} --otr=plugin" + else + if use otr ; then + ewarn "OTR support has been disabled automatically because it" + ewarn "requires the plugins USE flag." + fi + myconf="${myconf} --otr=0" + fi + + # setup ssl use flags + if use gnutls ; then + myconf="${myconf} --ssl=gnutls" + einfo "Using gnutls for SSL support" + elif use ssl ; then + myconf="${myconf} --ssl=openssl" + einfo "Using openssl for SSL support" + elif use nss ; then + myconf="${myconf} --ssl=nss" + einfo "Using nss for SSL support" + else + myconf="${myconf} --ssl=bogus" + einfo "You will not have any encryption support enabled." + fi + + # set event handler + if use libevent ; then + myconf="${myconf} --events=libevent" + else + myconf="${myconf} --events=glib" + fi + + # NOTE: bitlbee's configure script is not an autotool creation, + # so that is why we don't use econf. + ./configure --prefix=/usr --datadir=/usr/share/bitlbee \ + --etcdir=/etc/bitlbee --plugindir=/usr/$(get_libdir)/bitlbee \ + --strip=0 ${myconf} || die "econf failed" + + sed -i \ + -e "s/CFLAGS=.*$/CFLAGS=${CFLAGS}/" \ + -e "/^EFLAGS/s:=:&${LDFLAGS} :" \ + Makefile.settings || die "sed failed" +} + +src_install() { + emake install install-etc install-doc install-dev DESTDIR="${D}" || + die "install failed" + + keepdir /var/lib/bitlbee + fperms 700 /var/lib/bitlbee + fowners bitlbee:bitlbee /var/lib/bitlbee + + dodoc doc/{AUTHORS,CHANGES,CREDITS,FAQ,README} + dodoc doc/user-guide/user-guide.txt + dohtml -A xml doc/user-guide/*.xml + dohtml -A xsl doc/user-guide/*.xsl + dohtml doc/user-guide/*.html + + doman doc/bitlbee.8 doc/bitlbee.conf.5 + + if use xinetd ; then + insinto /etc/xinetd.d + newins doc/bitlbee.xinetd bitlbee + fi + + newinitd "${FILESDIR}"/bitlbee.initd bitlbee || die + newconfd "${FILESDIR}"/bitlbee.confd bitlbee || die + + keepdir /var/run/bitlbee + fowners bitlbee:bitlbee /var/run/bitlbee + + dodir /usr/share/bitlbee + insinto /usr/share/bitlbee + cd utils + doins convert_purple.py bitlbee-ctl.pl +} + +pkg_postinst() { + chown -R bitlbee:bitlbee "${ROOT}"/var/lib/bitlbee + chown -R bitlbee:bitlbee "${ROOT}"/var/run/bitlbee + + elog "The utils included in bitlbee are now located in /usr/share/bitlbee" + elog + elog "NOTE: The IRSSI script is no longer provided by BitlBee." + elog + elog "The bitlbeed init script has been replaced by bitlbee." + elog "You must update your configuration." +} diff --git a/net-im/bitlbee/files/bitlbee-3.0-configure.patch b/net-im/bitlbee/files/bitlbee-3.0-configure.patch new file mode 100644 index 0000000..811f9d5 --- /dev/null +++ b/net-im/bitlbee/files/bitlbee-3.0-configure.patch @@ -0,0 +1,17 @@ +--- bitlbee-3.0/configure.orig 2010-10-21 17:51:31.000000000 -0700 ++++ bitlbee-3.0/configure 2010-10-26 22:07:44.620843056 -0700 +@@ -609,14 +609,6 @@ + fi + fi + +-case "$CC" in +-*gcc* ) +- echo CFLAGS+=-MD -MF .depend/\$@.d >> Makefile.settings +- for i in . lib protocols protocols/*/; do +- mkdir -p $i/.depend +- done +-esac +- + if [ "$msn" = 0 ]; then + echo '#undef WITH_MSN' >> config.h + else diff --git a/net-im/bitlbee/files/bitlbee-3.0.1-msn-unfuck.patch b/net-im/bitlbee/files/bitlbee-3.0.1-msn-unfuck.patch new file mode 100644 index 0000000..25eae83 --- /dev/null +++ b/net-im/bitlbee/files/bitlbee-3.0.1-msn-unfuck.patch @@ -0,0 +1,186 @@ +=== modified file 'protocols/msn/msn.c' +--- protocols/msn/msn.c 2010-11-19 21:00:14 +0000 ++++ protocols/msn/msn.c 2010-12-12 00:25:17 +0000 +@@ -107,6 +107,8 @@ + md->groups = g_slist_remove( md->groups, mg ); + } + ++ g_free( md->profile_rid ); ++ + g_tree_destroy( md->domaintree ); + md->domaintree = NULL; + +@@ -321,21 +323,15 @@ + struct im_connection *ic = acc->ic; + struct msn_data *md = ic->proto_data; + +- if( strlen( value ) > 129 ) +- { +- imcb_log( ic, "Maximum name length exceeded" ); +- return NULL; +- } +- +- if( md->flags & MSN_GOT_PROFILE_DN ) +- imcb_log( ic, "Warning: Persistent name changes for this account have to be done " +- "in the profile. BitlBee doesn't currently support this." ); +- + if( md->flags & MSN_EMAIL_UNVERIFIED ) + imcb_log( ic, "Warning: Your e-mail address is unverified. MSN doesn't allow " + "changing your display name until your e-mail address is verified." ); + +- msn_soap_addressbook_set_display_name( ic, value ); ++ if( md->flags & MSN_GOT_PROFILE_DN ) ++ msn_soap_profile_set_dn( ic, value ); ++ else ++ msn_soap_addressbook_set_display_name( ic, value ); ++ + return msn_ns_set_display_name( ic, value ) ? value : NULL; + } + +@@ -362,7 +358,7 @@ + struct prpl *ret = g_new0(struct prpl, 1); + + ret->name = "msn"; +- ret->mms = 1409; /* this guess taken from libotr UPGRADING file */ ++ ret->mms = 1409; /* this guess taken from libotr UPGRADING file */ + ret->login = msn_login; + ret->init = msn_init; + ret->logout = msn_logout; + +=== modified file 'protocols/msn/msn.h' +--- protocols/msn/msn.h 2010-11-13 13:01:40 +0000 ++++ protocols/msn/msn.h 2010-12-12 00:25:17 +0000 +@@ -118,6 +118,7 @@ + + const struct msn_away_state *away_state; + GSList *groups; ++ char *profile_rid; + + /* Mostly used for sending the ADL command; since MSNP13 the client + is responsible for downloading the contact list and then sending + +=== modified file 'protocols/msn/soap.c' +--- protocols/msn/soap.c 2010-11-20 15:39:58 +0000 ++++ protocols/msn/soap.c 2010-12-12 00:25:17 +0000 +@@ -397,7 +397,10 @@ + return MSN_SOAP_RETRY; + + if( md->soapq ) ++ { ++ md->flags &= ~MSN_REAUTHING; + return msn_soapq_flush( ic, TRUE ); ++ } + + if( sd->secret == NULL ) + { +@@ -1071,8 +1074,20 @@ + return XT_HANDLED; + } + ++static xt_status msn_soap_profile_get_rid( struct xt_node *node, gpointer data ) ++{ ++ struct msn_soap_req_data *soap_req = data; ++ struct msn_data *md = soap_req->ic->proto_data; ++ ++ g_free( md->profile_rid ); ++ md->profile_rid = g_strdup( node->text ); ++ ++ return XT_HANDLED; ++} ++ + static const struct xt_handler_entry msn_soap_profile_get_parser[] = { + { "ExpressionProfile", "GetProfileResult", msn_soap_profile_get_result }, ++ { "ResourceID", "GetProfileResult", msn_soap_profile_get_rid }, + { NULL, NULL, NULL } + }; + +@@ -1100,3 +1115,40 @@ + msn_soap_profile_get_handle_response, + msn_soap_profile_get_free_data ); + } ++ ++/* Update profile (display name). */ ++static int msn_soap_profile_set_dn_build_request( struct msn_soap_req_data *soap_req ) ++{ ++ struct msn_data *md = soap_req->ic->proto_data; ++ ++ soap_req->url = g_strdup( SOAP_STORAGE_URL ); ++ soap_req->action = g_strdup( SOAP_PROFILE_SET_DN_ACTION ); ++ soap_req->payload = g_markup_printf_escaped( SOAP_PROFILE_SET_DN_PAYLOAD, ++ md->tokens[3], md->profile_rid, (char*) soap_req->data ); ++ ++ return 1; ++} ++ ++static const struct xt_handler_entry msn_soap_profile_set_dn_parser[] = { ++ { NULL, NULL, NULL } ++}; ++ ++static int msn_soap_profile_set_dn_handle_response( struct msn_soap_req_data *soap_req ) ++{ ++ return MSN_SOAP_OK; ++} ++ ++static int msn_soap_profile_set_dn_free_data( struct msn_soap_req_data *soap_req ) ++{ ++ g_free( soap_req->data ); ++ return 0; ++} ++ ++int msn_soap_profile_set_dn( struct im_connection *ic, const char *dn ) ++{ ++ return msn_soap_start( ic, g_strdup( dn ), ++ msn_soap_profile_set_dn_build_request, ++ msn_soap_profile_set_dn_parser, ++ msn_soap_profile_set_dn_handle_response, ++ msn_soap_profile_set_dn_free_data ); ++} + +=== modified file 'protocols/msn/soap.h' +--- protocols/msn/soap.h 2010-10-02 06:56:33 +0000 ++++ protocols/msn/soap.h 2010-12-12 00:25:17 +0000 +@@ -302,6 +302,7 @@ + + #define SOAP_STORAGE_URL "https://storage.msn.com/storageservice/SchematizedStore.asmx" + #define SOAP_PROFILE_GET_ACTION "http://www.msn.com/webservices/storage/w10/GetProfile" ++#define SOAP_PROFILE_SET_DN_ACTION "http://www.msn.com/webservices/storage/w10/UpdateProfile" + + #define SOAP_PROFILE_GET_PAYLOAD \ + "" \ +@@ -344,7 +345,34 @@ + "" \ + "" + ++#define SOAP_PROFILE_SET_DN_PAYLOAD \ ++"" \ ++"" \ ++ "" \ ++ "" \ ++ "Messenger Client 9.0" \ ++ "Initial" \ ++ "" \ ++ "" \ ++ "0" \ ++ "%s" \ ++ "" \ ++ "" \ ++ "" \ ++ "" \ ++ "" \ ++ "%s" \ ++ "" \ ++ "Update" \ ++ "%s" \ ++ "0" \ ++ "" \ ++ "" \ ++ "" \ ++ "" \ ++"" ++ + int msn_soap_profile_get( struct im_connection *ic, const char *cid ); +- ++int msn_soap_profile_set_dn( struct im_connection *ic, const char *dn ); + + #endif /* __SOAP_H__ */ + diff --git a/net-im/bitlbee/files/bitlbee.confd b/net-im/bitlbee/files/bitlbee.confd new file mode 100644 index 0000000..c4003ce --- /dev/null +++ b/net-im/bitlbee/files/bitlbee.confd @@ -0,0 +1,2 @@ +#Bitlbee options (see /usr/sbin/bitlbee -h) +BITLBEE_OPTS="-F" diff --git a/net-im/bitlbee/files/bitlbee.initd b/net-im/bitlbee/files/bitlbee.initd new file mode 100644 index 0000000..b68a078 --- /dev/null +++ b/net-im/bitlbee/files/bitlbee.initd @@ -0,0 +1,27 @@ +#!/sbin/runscript +# Copyright 1999-2004 Gentoo Foundation +# Distributed under the terms of the GNU General Public License, v2 or +# later +# $Header: /var/cvsroot/gentoo-x86/net-im/bitlbee/files/bitlbee.initd,v 1.2 2010/03/04 17:47:00 cedk Exp $ + +DAEMON=/usr/sbin/bitlbee +PIDFILE=/var/run/bitlbee/bitlbee.pid + +depend() { + need logger net +} + +start () { + ebegin "Starting bitlbee" + start-stop-daemon --start --quiet \ + -c bitlbee:bitlbee --exec ${DAEMON} -- -P ${PIDFILE} \ + ${BITLBEE_OPTS} + eend $? +} + +stop() { + ebegin "Stopping bitlbee" + start-stop-daemon --stop --quiet --pidfile ${PIDFILE} + eend $? +} + -- 2.43.2