From 4d967e4b6573a0f5108874334a5c2169118cf735 Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Mon, 4 Apr 2011 19:47:46 +0200 Subject: Spectrum --- net-im/spectrum/Manifest | 6 + .../files/spectrum-1.4.7_remoteroster.patch | 32 +++++ net-im/spectrum/files/spectrum.cfg | 151 +++++++++++++++++++++ net-im/spectrum/files/spectrum.initd | 29 ++++ net-im/spectrum/files/spectrum.symlink.cfg | 151 +++++++++++++++++++++ net-im/spectrum/spectrum-1.4.7-r1.ebuild | 134 ++++++++++++++++++ 6 files changed, 503 insertions(+) create mode 100644 net-im/spectrum/Manifest create mode 100644 net-im/spectrum/files/spectrum-1.4.7_remoteroster.patch create mode 100644 net-im/spectrum/files/spectrum.cfg create mode 100644 net-im/spectrum/files/spectrum.initd create mode 100644 net-im/spectrum/files/spectrum.symlink.cfg create mode 100644 net-im/spectrum/spectrum-1.4.7-r1.ebuild (limited to 'net-im/spectrum') diff --git a/net-im/spectrum/Manifest b/net-im/spectrum/Manifest new file mode 100644 index 0000000..f32b435 --- /dev/null +++ b/net-im/spectrum/Manifest @@ -0,0 +1,6 @@ +AUX spectrum-1.4.7_remoteroster.patch 1408 RMD160 fce0906cd001a24df390c7ffa90839a1a325ffd1 SHA1 a4488b46e63ab8f7b8a69c9e4f42bf4e010a6d9a SHA256 de84c845a4f8a4a9c30d2c18d15a55623ddbfde02fbd963b91d09d8b1fc8b652 +AUX spectrum.cfg 4770 RMD160 1dfba51b4c4ee6f991b3082a8cf4f4b0234cf8b0 SHA1 c321c107ac4c5d5dfe239bc6e03e46b405b2a72a SHA256 c29eb5bed5776bdce171eb303e0e6815b60dc3c61f2a311492204337145cbe85 +AUX spectrum.initd 794 RMD160 cd9487532674eb7532559469a07bf99e14d91645 SHA1 6320ba9db02abb5602ccfc9d0626a6acd441d800 SHA256 1a995089b661adddd1f9afeb50e4718174b2cf16140036054e2a4f4c8f1ccd1a +AUX spectrum.symlink.cfg 4855 RMD160 8e4cf7ab0237dfff0f713a32e37d2630af777273 SHA1 22a17ecc225fe6a9237947c35126b32c0f3a9447 SHA256 3dfb88f041ae3a835241ea4c128ce6958a95f944534349aebdb56d9d74efe1f3 +DIST spectrum-1.4.7.tar.gz 235303 RMD160 22db29cdd321a1fc7d77db7eb09c19cb49c963d6 SHA1 d07c198090ee1b0404d7641546d2feb56e912ea7 SHA256 6e8049c7c2370613b94377a4c17c32806032488b194bb26e694f4a4e75bd550d +EBUILD spectrum-1.4.7-r1.ebuild 3656 RMD160 0b7165ade88e0d2d02dc75a6f0dbb7ff4168b020 SHA1 57a1026f1c3f63cc5bee65178c8821e4b7e93669 SHA256 63d1ad0b4275f570fe2f490ff1b8c715a5d0af081dc19555ff21e9a0f744a7e2 diff --git a/net-im/spectrum/files/spectrum-1.4.7_remoteroster.patch b/net-im/spectrum/files/spectrum-1.4.7_remoteroster.patch new file mode 100644 index 0000000..bd35d60 --- /dev/null +++ b/net-im/spectrum/files/spectrum-1.4.7_remoteroster.patch @@ -0,0 +1,32 @@ +diff --git a/src/spectrumbuddy.cpp b/src/spectrumbuddy.cpp +index 74d5194..910266c 100644 +--- a/src/spectrumbuddy.cpp ++++ b/src/spectrumbuddy.cpp +@@ -36,10 +36,10 @@ SpectrumBuddy::~SpectrumBuddy() { + + std::string SpectrumBuddy::getAlias() { + std::string alias; +- if (purple_buddy_get_server_alias(m_buddy)) +- alias = (std::string) purple_buddy_get_server_alias(m_buddy); +- else ++ if (purple_buddy_get_alias(m_buddy)) + alias = (std::string) purple_buddy_get_alias(m_buddy); ++ else ++ alias = (std::string) purple_buddy_get_server_alias(m_buddy); + return alias; + } + +diff --git a/src/sql.cpp b/src/sql.cpp +index 8fbc64a..70bf5db 100644 +--- a/src/sql.cpp ++++ b/src/sql.cpp +@@ -905,7 +905,8 @@ GHashTable *SQLClass::getBuddies(long userId, PurpleAccount *account) { + // create buddy + buddy = purple_buddy_new(account, buddyUins[k].c_str(), buddyNicknames[k].c_str()); + purple_blist_add_buddy(buddy, contact, g, NULL); +- Log("ADDING BUDDY", buddyIds[k] << " " << buddyUins[k] << " subscription: " << subscription << " " << buddy); ++ purple_blist_server_alias_buddy(buddy, buddyNicknames[k].c_str()); ++ Log("ADDING BUDDY", buddyIds[k] << " " << buddyUins[k] << " " << buddyNicknames[k] << " subscription: " << subscription << " " << buddy); + + // add settings + GHashTable *settings = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) purple_value_destroy); diff --git a/net-im/spectrum/files/spectrum.cfg b/net-im/spectrum/files/spectrum.cfg new file mode 100644 index 0000000..c512ef4 --- /dev/null +++ b/net-im/spectrum/files/spectrum.cfg @@ -0,0 +1,151 @@ +[service] +# enable this spectrum instance +enable=1 + +# one of: aim, facebook, gg, icq, irc, msn, myspace, qq, simple, xmpp, yahoo +protocol=S2P + +# component ip +server=127.0.0.1 + +# if use_proxy is 1, the http_proxy env var will be used as the proxy server +# for example export http_proxy="http://user:passwd@your.proxy.server:port/" +use_proxy=0 + +# component JID +jid=S2P.example.com + +# component secret +password=secret + +# component port +port=5347 + +config_interface = /var/run/spectrum/S2P.sock + +# IP:port where filetransfer proxy binds to. This has to be public IP. +#filetransfer_bind_address=192.0.2.1:12345 + +# IP:port which will be sent in filetransfer request as stream host. +#filetransfer_public_address=192.0.2.1:12345 + +# admin JIDs - Jabber IDs of transport administrators who have access to admin adhoc commands +# separated by semicolons +#admins=admin@example.com;foo@bar.cz + +# directory where downloaded files will be saved +filetransfer_cache=/var/lib/spectrum/S2P/filetransfer_cache + +# URL used to acces filestransfer_cache directory from the web. +filetransfer_web=http://example.com/files/ + +# name of transport (this will appear in service discovery) +name=My S2P Transport + +# default language +language=en + +# transport features separated by semicolons +# combination of: avatars, chatstate, filetransfer +# if commented, all features will be used +# This variable is DEPRECATED and will be removed in future versions. Use [features] instead. +#transport_features = avatars;chatstate;filetransfer + +# if vip_mode is 1, users are divided to 2 groups according to 'vip' database field +vip_mode=0 + +# if vip_mode is 1, you can set transport to be availabe only for VIP users by setting only_for_vip to 1. +only_for_vip=0 + +# if vip_mode is 1 and only_for_vip is 1, users can connect from these servers even they are not VIP. +# This feature is useful, if you want to enable transport only for users from your server, but also want +# to give access to VIP users from other servers (for example from GTalk) +# seperated by semicolons +#allowed_servers=localhost + +# transport features separated by semicolons which will be used for VIP users. +# combination of: avatars, chatstate, filetransfer +# if commented, all features will be used +# This variable is DEPRECATED and will be removed in future versions. Use [vip-features] instead. +#vip_features = avatars;chatstate;filetransfer + +# pid file +pid_file=/var/run/spectrum/S2P.pid + +# require_tls to connect legacy network +#require_tls=false + +# Eventloop used by Spectrum. Allows to change default use of poll to epoll, +# which should be faster and handles more connections better. +# WARNING: some 3rd party libpurple protocol plugins are not prepared to be +# used with different eventloop, but protocols included in libpurple by default +# works OK. +#eventloop=glib + +[registration] +# Set to 0 to disable transport registration to everyone except +# people from host from allowed_servers list. +#enable_public_registration=1 + +# You can override username registered by transport user. This is useful +# for example if you want to let users to register only their Facebook name +# and internally connect them to facebook_name@chat.facebook.com. +# $username variable is replaced by username which has been registered +# by particular user. +#username_mask = $username@chat.facebook.com + +# This option allows you to white-list newly created accounts according +# to regexp. for example allowed_usernames=*.\.gmail\.com$ will allow only +# GTalk users to register. If you use username_mask, then username_mask is +# applied before this option. +#allowed_usernames=regexp + +# Label used to described username field in registration form +#username_label = Facebook username + +# This variable overrides default instructions text in registration form. +#instructions = Type your Facebook name here: + +# Transport features, all features are enabled by default. +[features] +#filetransfer=1 +#avatars=1 +#chatstates=1 +#statistics=1 + +# Transport features for VIP users, all features are enabled by default. +[vip-features] +#filetransfer=1 +#avatars=1 +#chatstates=1 + +[logging] +# log file, needs to be unique for each spectrum instance +log_file=/var/log/spectrum/S2P.log + +# log areas +# combination of: xml, purple +log_areas=xml;purple + +[database] +# mysql or sqlite +type=sqlite + +# hostname (not needed for sqlite) +#host=localhost + +# username (not needed for sqlite) +#user=user + +# password (not needed for sqlite) +#password=password +# sqlite: set path to database file here +# mysql: set to name of database +database=/var/lib/spectrum/S2P/database/S2P.sqlite +# table prefix for multiple transport instances sharing the same database +#prefix=S2P_ + +[purple] +# avatar, vcard, roster storage +# needs to be unique for each spectrum instance +userdir=/var/lib/spectrum/S2P/userdir diff --git a/net-im/spectrum/files/spectrum.initd b/net-im/spectrum/files/spectrum.initd new file mode 100644 index 0000000..f3e5eb6 --- /dev/null +++ b/net-im/spectrum/files/spectrum.initd @@ -0,0 +1,29 @@ +#!/sbin/runscript +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +PROTOCOL=${SVCNAME#*.} + +depend() { + need net + use jabber-server +} + +start() { + if [ -z "${PROTOCOL}" ] || [ ${SVCNAME} == "spectrum" ]; then + eerror "Please use /etc/init.d/spectrum.PROTOCOL instead of /etc/init.d/spectrum" + eerror "to start Spectrum for the desired protocol." + return 1 + fi + + ebegin "Starting ${PROTOCOL} Spectrum Transport" + start-stop-daemon --start --pidfile ${PIDFILE} \ + --chuid jabber:jabber --exec /usr/bin/spectrum -- ${CONFFILE} + eend $? +} + +stop() { + ebegin "Stopping ${PROTOCOL} Spectrum Transport" + start-stop-daemon --stop --quiet --pidfile ${PIDFILE} + eend $? +} diff --git a/net-im/spectrum/files/spectrum.symlink.cfg b/net-im/spectrum/files/spectrum.symlink.cfg new file mode 100644 index 0000000..514fcbd --- /dev/null +++ b/net-im/spectrum/files/spectrum.symlink.cfg @@ -0,0 +1,151 @@ +[service] +# enable this spectrum instance +enable=1 + +# one of: aim, facebook, gg, icq, irc, msn, myspace, qq, simple, xmpp, yahoo +protocol=$filename:protocol + +# component ip +server=127.0.0.1 + +# if use_proxy is 1, the http_proxy env var will be used as the proxy server +# for example export http_proxy="http://user:passwd@your.proxy.server:port/" +use_proxy=0 + +# component JID +jid=$protocol.example.com + +# component secret +password=secret + +# component port +port=$filename:port + +config_interface = /var/run/spectrum/$protocol.sock + +# IP:port where filetransfer proxy binds to. This has to be public IP. +#filetransfer_bind_address=192.0.2.1:$port + +# IP:port which will be sent in filetransfer request as stream host. +#filetransfer_public_address=192.0.2.1:$port + +# admin JIDs - Jabber IDs of transport administrators who have access to admin adhoc commands +# separated by semicolons +#admins=admin@example.com;foo@bar.cz + +# directory where downloaded files will be saved +filetransfer_cache=/var/lib/spectrum/$protocol/filetransfer_cache + +# URL used to acces filestransfer_cache directory from the web. +filetransfer_web=http://example.com/files/ + +# name of transport (this will appear in service discovery) +name=My $protocol Transport + +# default language +language=en + +# transport features separated by semicolons +# combination of: avatars, chatstate, filetransfer +# if commented, all features will be used +# This variable is DEPRECATED and will be removed in future versions. Use [features] instead. +#transport_features = avatars;chatstate;filetransfer + +# if vip_mode is 1, users are divided to 2 groups according to 'vip' database field +vip_mode=0 + +# if vip_mode is 1, you can set transport to be availabe only for VIP users by setting only_for_vip to 1. +only_for_vip=0 + +# if vip_mode is 1 and only_for_vip is 1, users can connect from these servers even they are not VIP. +# This feature is useful, if you want to enable transport only for users from your server, but also want +# to give access to VIP users from other servers (for example from GTalk) +# seperated by semicolons +#allowed_servers=localhost + +# transport features separated by semicolons which will be used for VIP users. +# combination of: avatars, chatstate, filetransfer +# if commented, all features will be used +# This variable is DEPRECATED and will be removed in future versions. Use [vip-features] instead. +#vip_features = avatars;chatstate;filetransfer + +# pid file +pid_file=/var/run/spectrum/$protocol.pid + +# require_tls to connect legacy network +#require_tls=false + +# Eventloop used by Spectrum. Allows to change default use of poll to epoll, +# which should be faster and handles more connections better. +# WARNING: some 3rd party libpurple protocol plugins are not prepared to be +# used with different eventloop, but protocols included in libpurple by default +# works OK. +#eventloop=glib + +[registration] +# Set to 0 to disable transport registration to everyone except +# people from host from allowed_servers list. +#enable_public_registration=1 + +# You can override username registered by transport user. This is useful +# for example if you want to let users to register only their Facebook name +# and internally connect them to facebook_name@chat.facebook.com. +# $username variable is replaced by username which has been registered +# by particular user. +#username_mask = $username@chat.facebook.com + +# This option allows you to white-list newly created accounts according +# to regexp. for example allowed_usernames=*.\.gmail\.com$ will allow only +# GTalk users to register. If you use username_mask, then username_mask is +# applied before this option. +#allowed_usernames=regexp + +# Label used to described username field in registration form +#username_label = Facebook username + +# This variable overrides default instructions text in registration form. +#instructions = Type your Facebook name here: + +# Transport features, all features are enabled by default. +[features] +#filetransfer=1 +#avatars=1 +#chatstates=1 +#statistics=1 + +# Transport features for VIP users, all features are enabled by default. +[vip-features] +#filetransfer=1 +#avatars=1 +#chatstates=1 + +[logging] +# log file, needs to be unique for each spectrum instance +log_file=/var/log/spectrum/$protocol.log + +# log areas +# combination of: xml, purple +log_areas=xml;purple + +[database] +# mysql or sqlite +type=sqlite + +# hostname (not needed for sqlite) +#host=localhost + +# username (not needed for sqlite) +#user=user + +# password (not needed for sqlite) +#password=password +# sqlite: set path to database file here +# mysql: set to name of database +database=/var/lib/spectrum/$protocol/database/$protocol.sqlite +# table prefix for multiple transport instances sharing the same database +#prefix=$protocol_ + +[purple] +# avatar, vcard, roster storage +# needs to be unique for each spectrum instance +userdir=/var/lib/spectrum/$protocol/userdir diff --git a/net-im/spectrum/spectrum-1.4.7-r1.ebuild b/net-im/spectrum/spectrum-1.4.7-r1.ebuild new file mode 100644 index 0000000..406e4b2 --- /dev/null +++ b/net-im/spectrum/spectrum-1.4.7-r1.ebuild @@ -0,0 +1,134 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ +EAPI=2 + +inherit cmake-utils + +DESCRIPTION="Spectrum is an XMPP transport/gateway" +HOMEPAGE="http://spectrum.im" + +SRC_URI="http://spectrum.im/attachments/download/37/spectrum-${PV}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +IUSE="mysql sqlite symlinks tools staticport" + +RDEPEND=">=dev-libs/poco-1.3.3[mysql?,sqlite?] + media-gfx/imagemagick[cxx] + >=net-im/pidgin-2.6.0 + >=net-libs/gloox-1.0 + dev-python/xmpppy" +DEPEND="${RDEPEND} + sys-devel/gettext + dev-util/cmake" + +PROTOCOL_LIST="aim facebook gg icq irc msn msn_pecan myspace qq simple sipe twitter xmpp yahoo" + +pkg_setup() { + if ! ( use sqlite || use mysql ); then + ewarn "No database use flag set!" + ewarn "You need to enable the mysql or sqlite use flag!" + die + fi +} + +src_prepare() { + epatch "${FILESDIR}/${P}_remoteroster.patch" +} + +src_install () { + cmake-utils_src_install + + # Install transports with seperate config files (default). + # If USE="symlinks" is set, install one config file with symlinks to all transports. + + port=5347 + + # prepare config for mysql or just copy + cp "${FILESDIR}/spectrum.cfg" "${WORKDIR}/spectrum.cfg" + + if use mysql ; then + sed -e 's,^\(type\)=sqlite$,\1=mysql,' \ + -e 's,^#\(host=localhost\)$,\1,' \ + -e 's,^#\(user=user\)$,\1,' \ + -e 's,^#\(password=password\)$,\1,' \ + -e 's,^\(database=.*\),#\1,' \ + -e 's,^#\(prefix=.*\),\1,' \ + -i "${WORKDIR}/spectrum.cfg" || die + fi + + # install shared-config when using symlinks + if use symlinks; then + insinto /etc/spectrum + newins "${WORKDIR}"/spectrum.cfg spectrum-shared-conf || die + fi + + # install protocol-specific configs or symlinks + insinto /etc/spectrum + for protocol in ${PROTOCOL_LIST}; do + if use symlinks; then + dosym spectrum-shared-conf "/etc/spectrum/${protocol}:${port}.cfg" || die + sed -e 's,PROTOCOL,'${protocol}:${port}',g' \ + "${FILESDIR}"/spectrum.confd > "${WORKDIR}"/spectrum.confd + else + sed -e 's,\$filename:protocol,'${protocol}',g' \ + -e 's,\$filename:port,'${port}',g' \ + "${WORKDIR}"/spectrum.cfg > "${WORKDIR}/${protocol}.cfg" || die + sed -e 's,PROTOCOL,'${protocol}',g' \ + "${FILESDIR}"/spectrum.confd > "${WORKDIR}"/spectrum.confd + doins "${WORKDIR}/${protocol}.cfg" || die + fi + + # install prepared confd + newconfd "${WORKDIR}"/spectrum.confd spectrum.${protocol} || die + + if ! use staticport; then + port=$[${port}+1] + fi + done + + # Install init files + newinitd "${FILESDIR}"/spectrum.initd spectrum || die + for protocol in ${PROTOCOL_LIST}; do + dosym spectrum /etc/init.d/spectrum."${protocol}" + done + + # Directories + dodir "/var/lib/spectrum" || die + dodir "/var/log/spectrum" || die + dodir "/var/run/spectrum" || die + + # Directories for each transport + for protocol in ${PROTOCOL_LIST}; do + dodir "/var/lib/spectrum/$protocol/database" || die + dodir "/var/lib/spectrum/$protocol/userdir" || die + dodir "/var/lib/spectrum/$protocol/filetransfer_cache" || die + done + + # Install mysql schema + if use mysql; then + insinto "/usr/share/spectrum/schemas" + doins schemas/* || die + fi + + # Install misc tools + if use tools; then + insinto "/usr/share/spectrum/tools" + doins tools/* || die + fi +} + +pkg_postinst() { + # Set correct rights + chown jabber:jabber -R "/etc/spectrum" || die + chown jabber:jabber -R "/var/lib/spectrum" || die + chown jabber:jabber -R "/var/log/spectrum" || die + chown jabber:jabber -R "/var/run/spectrum" || die + chmod 750 "/etc/spectrum" || die + chmod 750 "/var/lib/spectrum" || die + chmod 750 "/var/log/spectrum" || die + chmod 750 "/var/run/spectrum" || die +} -- cgit v1.2.3-54-g00ecf