summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-nntp/hellanzb')
-rw-r--r--net-nntp/hellanzb/Manifest1
-rw-r--r--net-nntp/hellanzb/files/hellanzb-0.13-Choose_interface_to_bind_on.patch52
-rw-r--r--net-nntp/hellanzb/files/hellanzb-0.13-Fix_conf_file_search_path.patch31
-rw-r--r--net-nntp/hellanzb/files/hellanzb-0.13-datafiles.patch13
-rw-r--r--net-nntp/hellanzb/files/hellanzb-0.13-fix_multiples_hosts.diff107
-rw-r--r--net-nntp/hellanzb/files/hellanzb-0.13-gettinggroup.patch14
-rw-r--r--net-nntp/hellanzb/files/hellanzb-0.13-python_26_fixes.patch90
-rw-r--r--net-nntp/hellanzb/files/hellanzb-0.13-twisted-10.0.0.patch36
-rw-r--r--net-nntp/hellanzb/files/hellanzb.conf19
-rw-r--r--net-nntp/hellanzb/files/hellanzb.init41
-rw-r--r--net-nntp/hellanzb/hellanzb-0.13-r8.ebuild74
-rw-r--r--net-nntp/hellanzb/metadata.xml18
12 files changed, 496 insertions, 0 deletions
diff --git a/net-nntp/hellanzb/Manifest b/net-nntp/hellanzb/Manifest
new file mode 100644
index 000000000000..1f70809ac417
--- /dev/null
+++ b/net-nntp/hellanzb/Manifest
@@ -0,0 +1 @@
+DIST hellanzb-0.13.tar.gz 163698 SHA256 565b08725eb92ac1e278fa7df2c7b27b21588c4e24c140fddbec4a5625159127
diff --git a/net-nntp/hellanzb/files/hellanzb-0.13-Choose_interface_to_bind_on.patch b/net-nntp/hellanzb/files/hellanzb-0.13-Choose_interface_to_bind_on.patch
new file mode 100644
index 000000000000..a254a9d23c9a
--- /dev/null
+++ b/net-nntp/hellanzb/files/hellanzb-0.13-Choose_interface_to_bind_on.patch
@@ -0,0 +1,52 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 001-Choose_interface_to_bind_on
+## by Adam Cécile (Le_Vert) <gandalf@le-vert.net>
+##
+## DP: Add a Hellanzb.XMLRPC_SERVER option which allowusers to set on which
+## DP: IP address XMLRPC server will be binded.
+
+@DPATCH@
+diff -u hellanzb-0.11/Hellanzb/HellaXMLRPC/__init__.py hellanzb-0.11/Hellanzb/HellaXMLRPC/__init__.py.new
+--- hellanzb-0.11/Hellanzb/HellaXMLRPC/__init__.py 2007-01-30 03:51:05.000000000 +0100
++++ hellanzb-0.11/Hellanzb/HellaXMLRPC/__init__.py.new 2007-02-10 15:19:14.000000000 +0100
+@@ -597,9 +597,9 @@
+ try:
+ if SECURE:
+ secure = HtPasswdWrapper(hxmlrpcs, 'hellanzb', Hellanzb.XMLRPC_PASSWORD, 'hellanzb XML RPC')
+- reactor.listenTCP(Hellanzb.XMLRPC_PORT, Site(secure))
++ reactor.listenTCP(Hellanzb.XMLRPC_PORT, Site(secure), 50, Hellanzb.XMLRPC_SERVER_BIND)
+ else:
+- reactor.listenTCP(Hellanzb.XMLRPC_PORT, Site(hxmlrpcs))
++ reactor.listenTCP(Hellanzb.XMLRPC_PORT, Site(hxmlrpcs), 50, Hellanzb.XMLRPC_SERVER_BIND)
+ except CannotListenError, cle:
+ error(str(cle))
+ raise FatalError('Cannot bind to XML RPC port, is another hellanzb queue daemon already running?')
+
+diff -u hellanzb-0.11/etc/hellanzb.conf.sample hellanzb-0.11/etc/hellanzb.conf.sample.new
+--- hellanzb-0.11/etc/hellanzb.conf.sample 2007-01-30 03:51:05.000000000 +0100
++++ hellanzb-0.11/etc/hellanzb.conf.sample.new 2007-02-10 15:18:10.000000000 +0100
+@@ -151,6 +151,10 @@
+ # Hostname for the XMLRPC client to connect to. By default, localhost
+ Hellanzb.XMLRPC_SERVER = 'localhost'
+
++# IP address on which the XMLRPC Server will be binded to.
++# Type '0.0.0.0' for any interfaces, '127.0.0.1' will disable remote access
++Hellanzb.XMLRPC_SERVER_BIND = '127.0.0.1'
++
+ # Port number the XML RPC server will listen on, and the client will connect to.
+ # Set to 'None' (without the quotes!) for no XML RPC server
+ Hellanzb.XMLRPC_PORT = 8760
+diff -u hellanzb-0.11/Hellanzb/Core.py hellanzb-0.11/Hellanzb/Core.py.new
+--- hellanzb-0.11/Hellanzb/Core.py 2007-01-30 03:51:05.000000000 +0100
++++ hellanzb-0.11/Hellanzb/Core.py.new 2007-02-10 15:18:10.000000000 +0100
+@@ -113,7 +106,9 @@
+
+ if not hasattr(Hellanzb, 'SKIP_UNRAR') or Hellanzb.SKIP_UNRAR is None:
+ Hellanzb.SKIP_UNRAR = False
+-
++ if not hasattr(Hellanzb, 'XMLRPC_SERVER_BIND') or Hellanzb.XMLRPC_SERVER_BIND is None:
++ print 'Warning: Hellanzb.XMLRPC_SERVER_BIND is not set, bind to 127.0.0.1'
++ Hellanzb.XMLRPC_SERVER_BIND = '127.0.0.1'
+
+ if not hasattr(Hellanzb, 'SMART_PAR'):
+ Hellanzb.SMART_PAR = True
diff --git a/net-nntp/hellanzb/files/hellanzb-0.13-Fix_conf_file_search_path.patch b/net-nntp/hellanzb/files/hellanzb-0.13-Fix_conf_file_search_path.patch
new file mode 100644
index 000000000000..ee22dd20c1ed
--- /dev/null
+++ b/net-nntp/hellanzb/files/hellanzb-0.13-Fix_conf_file_search_path.patch
@@ -0,0 +1,31 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 000-Fix_conf_file_search_path by
+## Adam Cécile (Le_Vert) <gandalf@le-vert.net>
+##
+## DP: Search for configuration file in $HOME/.hellanzb/ or /etc/
+
+@DPATCH@
+
+diff -u hellanzb-0.11/Hellanzb/Core.py hellanzb-0.11/Hellanzb/Core.py.new
+--- hellanzb-0.11/Hellanzb/Core.py 2007-02-10 15:01:50.000000000 +0100
++++ hellanzb-0.11/Hellanzb/Core.py.new 2007-02-10 15:05:48.000000000 +0100
+@@ -33,16 +33,9 @@
+ else:
+ error('Unable to load specified config file: ' + optionalConfigFile)
+ sys.exit(1)
+-
+- # look for conf in this order: sys.prefix, ./, or ./etc/
+- confDirs = [os.path.join(sys.prefix, 'etc')]
+- try:
+- confDirs.append(os.path.join(os.getcwd(), 'etc'))
+- confDirs.append(os.getcwd())
+- except OSError, ose:
+- if ose.errno != 2:
+- raise
+- # OSError: [Errno 2] No such file or directory. cwd doesn't exist
++
++ # Look for conf file in /etc or $HOME/.hellanzb
++ confDirs = [ os.path.expanduser('~') + '/.hellanzb', '/etc' ]
+
+ # hard coding preferred Darwin config file location, kind of lame. but I'd rather do
+ # this then make an etc dir in os x's Python.framework directory
diff --git a/net-nntp/hellanzb/files/hellanzb-0.13-datafiles.patch b/net-nntp/hellanzb/files/hellanzb-0.13-datafiles.patch
new file mode 100644
index 000000000000..88c5899c5b8e
--- /dev/null
+++ b/net-nntp/hellanzb/files/hellanzb-0.13-datafiles.patch
@@ -0,0 +1,13 @@
+Index: hellanzb-0.13/setup.py
+===================================================================
+--- hellanzb-0.13.orig/setup.py
++++ hellanzb-0.13/setup.py
+@@ -38,8 +38,6 @@ def runSetup():
+ packages = [ 'Hellanzb', 'Hellanzb.NZBLeecher', 'Hellanzb.HellaXMLRPC',
+ 'Hellanzb.external', 'Hellanzb.external.elementtree' ],
+ scripts = [ 'hellanzb.py' ],
+- data_files = [ ( 'etc', [ 'etc/hellanzb.conf.sample' ] ),
+- ( 'share/doc/hellanzb', [ 'CHANGELOG', 'CREDITS', 'README', 'LICENSE' ] ) ],
+ )
+ py2app_options = dict(
+ app = [ 'hellanzb.py' ],
diff --git a/net-nntp/hellanzb/files/hellanzb-0.13-fix_multiples_hosts.diff b/net-nntp/hellanzb/files/hellanzb-0.13-fix_multiples_hosts.diff
new file mode 100644
index 000000000000..5cf39c311a82
--- /dev/null
+++ b/net-nntp/hellanzb/files/hellanzb-0.13-fix_multiples_hosts.diff
@@ -0,0 +1,107 @@
+diff -r bdbcba80e0fa Hellanzb/NZBLeecher/Protocol.py
+--- a/Hellanzb/NZBLeecher/Protocol.py Wed Nov 14 10:00:29 2007 +0100
++++ b/Hellanzb/NZBLeecher/Protocol.py Thu Nov 22 22:32:04 2007 +0100
+@@ -27,18 +27,14 @@ PHI = 1.6180339887498948 # (1 + math.sqr
+ PHI = 1.6180339887498948 # (1 + math.sqrt(5)) / 2
+ class NZBLeecherFactory(ReconnectingClientFactory):
+
+- def __init__(self, username, password, activeTimeout, antiIdleTimeout, hostname,
++ def __init__(self, username, password, activeTimeout, antiIdleTimeout,
+ serverPoolName, skipGroupCmd, fillServerPriority = 0, color = None):
+ self.username = username
+ self.password = password
+ self.antiIdleTimeout = antiIdleTimeout
+ self.activeTimeout = activeTimeout
+- self.hostname = hostname
+ self.serverPoolName = serverPoolName
+ self.fillServerPriority = fillServerPriority
+-
+- self.host = None
+- self.port = None
+
+ # statistics for the current session (sessions end when downloading stops on all
+ # clients). sessionReadBytes and sessionStartime are used to calculate the average
+@@ -88,6 +84,7 @@ class NZBLeecherFactory(ReconnectingClie
+ p.factory = self
+ p.id = self.clientIds[0]
+ self.clientIds.remove(p.id)
++ p.host, p.port = addr.host, addr.port
+
+ # All clients inherit the factory's anti idle timeout setting
+ # FIXME: I don't think there's any reason to copy these values to the
+@@ -323,7 +320,7 @@ class NZBLeecher(NNTPClient, TimeoutMixi
+ "Override for notification when authInfoFailed() action fails"
+ debug(str(self) + ' AUTHINFO failed: ' + str(err))
+ # FIXME: This gives us too much scroll. Need to only do it selectively
+- #error(self.factory.hostname + '[' + str(self.id).zfill(2) + '] Authorization failed: ' + str(err))
++ #error(self.host + '[' + str(self.id).zfill(2) + '] Authorization failed: ' + str(err))
+ self.transport.loseConnection()
+
+ def connectionMade(self):
+@@ -428,7 +425,7 @@ class NZBLeecher(NNTPClient, TimeoutMixi
+ login """
+ if self.username == None and self.password == None:
+ warn('Could not MODE READER on no auth server (%s:%i), returned: %s' % \
+- (self.factory.host, self.factory.port, str(err)))
++ (self.host, self.port, str(err)))
+ reactor.callLater(0, self.fetchNextNZBSegment)
+ elif not self.isLoggedIn:
+ self.setReaderAfterLogin = True
+diff -r bdbcba80e0fa Hellanzb/NZBLeecher/__init__.py
+--- a/Hellanzb/NZBLeecher/__init__.py Wed Nov 14 10:00:29 2007 +0100
++++ b/Hellanzb/NZBLeecher/__init__.py Thu Nov 22 22:32:04 2007 +0100
+@@ -122,30 +122,28 @@ def connectServer(serverName, serverDict
+ connectionCount = 0
+ hosts = serverDict['hosts']
+ connections = int(serverDict['connections'])
++ antiIdle = int(setWithDefault(serverDict, 'antiIdle', defaultAntiIdle))
++ idleTimeout = int(setWithDefault(serverDict, 'idleTimeout', defaultIdleTimeout))
++ skipGroupCmd = setWithDefault(serverDict, 'skipGroupCmd', False)
++ fillServer = setWithDefault(serverDict, 'fillserver', 0)
++ useSSL = setWithDefault(serverDict, 'ssl', False)
++
++ nsf = NZBLeecherFactory(serverDict['username'], serverDict['password'],
++ idleTimeout, antiIdle, serverName, skipGroupCmd,
++ fillServer)
++ color = nsf.color
++ Hellanzb.nsfs.append(nsf)
++
++ preWrappedNsf = nsf
++ nsf = HellaThrottlingFactory(nsf)
+
+ for host in hosts:
+- antiIdle = int(setWithDefault(serverDict, 'antiIdle', defaultAntiIdle))
+- idleTimeout = int(setWithDefault(serverDict, 'idleTimeout', defaultIdleTimeout))
+- skipGroupCmd = setWithDefault(serverDict, 'skipGroupCmd', False)
+- fillServer = setWithDefault(serverDict, 'fillserver', 0)
+- useSSL = setWithDefault(serverDict, 'ssl', False)
+-
+- nsf = NZBLeecherFactory(serverDict['username'], serverDict['password'],
+- idleTimeout, antiIdle, host, serverName, skipGroupCmd,
+- fillServer)
+- color = nsf.color
+- Hellanzb.nsfs.append(nsf)
+-
+ split = host.split(':')
+ host = split[0]
+ if len(split) == 2:
+ port = int(split[1])
+ else:
+ port = 119
+- nsf.host, nsf.port = host, port
+-
+- preWrappedNsf = nsf
+- nsf = HellaThrottlingFactory(nsf)
+
+ ctxf = None
+ if useSSL:
+@@ -195,7 +193,8 @@ def connectServer(serverName, serverDict
+ if antiIdle == 0:
+ preWrappedNsf.leecherConnectors.append(connector)
+ connectionCount += 1
+- preWrappedNsf.setConnectionCount(connectionCount)
++
++ preWrappedNsf.setConnectionCount(connectionCount)
+
+ if antiIdle == 0:
+ action = ''
diff --git a/net-nntp/hellanzb/files/hellanzb-0.13-gettinggroup.patch b/net-nntp/hellanzb/files/hellanzb-0.13-gettinggroup.patch
new file mode 100644
index 000000000000..2f7af1ad1a96
--- /dev/null
+++ b/net-nntp/hellanzb/files/hellanzb-0.13-gettinggroup.patch
@@ -0,0 +1,14 @@
+diff -r 92936345c3f5 Hellanzb/NZBLeecher/Protocol.py
+--- a/Hellanzb/NZBLeecher/Protocol.py Mon Aug 18 10:38:55 2008 +0200
++++ b/Hellanzb/NZBLeecher/Protocol.py Mon Aug 18 11:34:20 2008 +0200
+@@ -655,7 +655,7 @@
+ reactor.callInThread(decode, segment)
+
+ def gotGroup(self, group):
+- group = group[3]
++ group = self.gettingGroup
+ self.activeGroups.append(group)
+ self.gettingGroup = None
+ debug(str(self) + ' got GROUP: ' + group)
+
+
diff --git a/net-nntp/hellanzb/files/hellanzb-0.13-python_26_fixes.patch b/net-nntp/hellanzb/files/hellanzb-0.13-python_26_fixes.patch
new file mode 100644
index 000000000000..4f981adedbb3
--- /dev/null
+++ b/net-nntp/hellanzb/files/hellanzb-0.13-python_26_fixes.patch
@@ -0,0 +1,90 @@
+https://bugs.gentoo.org/show_bug.cgi?id=262881
+
+Index: Hellanzb/Growl.py
+===================================================================
+--- Hellanzb/Growl.py (Revision 1094)
++++ Hellanzb/Growl.py (Arbeitskopie)
+@@ -7,7 +7,13 @@
+ __contributors__ = "Ingmar J Stein (Growl Team)"
+
+ import struct
+-import md5
++
++# The md5 module has been deprecated as of Python 2.6.
++try:
++ from hashlib import md5
++except ImportError:
++ from md5 import md5
++
+ from socket import AF_INET, SOCK_DGRAM, socket
+
+ GROWL_UDP_PORT=9887
+@@ -51,7 +57,7 @@
+ self.data += encoded
+ for default in self.defaults:
+ self.data += struct.pack("B", default)
+- self.checksum = md5.new()
++ self.checksum = md5()
+ self.checksum.update(self.data)
+ if self.password:
+ self.checksum.update(self.password)
+@@ -89,7 +95,7 @@
+ self.data += self.title
+ self.data += self.description
+ self.data += self.application
+- self.checksum = md5.new()
++ self.checksum = md5()
+ self.checksum.update(self.data)
+ if password:
+ self.checksum.update(password)
+Index: Hellanzb/Util.py
+===================================================================
+--- Hellanzb/Util.py (Revision 1094)
++++ Hellanzb/Util.py (Arbeitskopie)
+@@ -28,9 +28,6 @@
+
+ class FatalError(Exception):
+ """ An error that will cause the program to exit """
+- def __init__(self, message):
+- self.args = [message]
+- self.message = message
+
+ class EmptyForThisPool(Empty):
+ """ The queue is empty in terms of our current serverPool, but there are still segments to
+Index: Hellanzb/HellaXMLRPC/HtPasswdAuth.py
+===================================================================
+--- Hellanzb/HellaXMLRPC/HtPasswdAuth.py (Revision 1094)
++++ Hellanzb/HellaXMLRPC/HtPasswdAuth.py (Arbeitskopie)
+@@ -8,7 +8,13 @@
+ (c) Copyright 2005 Philip Jenvey
+ [See end of file]
+ """
+-import md5
++
++# The md5 module has been deprecated as of Python 2.6.
++try:
++ from hashlib import md5
++except ImportError:
++ from md5 import md5
++
+ from twisted.web import static
+ from twisted.web.resource import Resource
+
+@@ -70,7 +76,7 @@
+
+ self.user = user
+
+- m = md5.new()
++ m = md5()
+ m.update(password)
+ del password
+ self.passwordDigest = m.digest()
+@@ -90,7 +96,7 @@
+ def authenticateUser(self, request):
+ username, password = request.getUser(), request.getPassword()
+
+- m = md5.new()
++ m = md5()
+ m.update(password)
+
+ authenticated = username == self.user and self.passwordDigest == m.digest()
diff --git a/net-nntp/hellanzb/files/hellanzb-0.13-twisted-10.0.0.patch b/net-nntp/hellanzb/files/hellanzb-0.13-twisted-10.0.0.patch
new file mode 100644
index 000000000000..e1a57892ceef
--- /dev/null
+++ b/net-nntp/hellanzb/files/hellanzb-0.13-twisted-10.0.0.patch
@@ -0,0 +1,36 @@
+https://bugs.gentoo.org/show_bug.cgi?id=316725
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=573221
+
+--- xmlrpc.py 2010-03-10 18:29:19.000000000 -0600
++++ /usr/share/pyshared/Hellanzb/HellaXMLRPC/xmlrpc.py 2010-03-10 18:30:03.000000000 -0600
+@@ -31,7 +31,7 @@
+ from twisted.python import log, reflect
+
+ import twisted.copyright
+-if twisted.copyright.version >= '2.0.0':
++if twisted.copyright.version >= '2.0.0' or twisted.copyright.version >= '10.0.0':
+ from twisted.web import http
+ else:
+ from twisted.protocols import http
+--- HtPasswdAuth.py 2010-03-10 18:30:29.000000000 -0600
++++ /usr/share/pyshared/Hellanzb/HellaXMLRPC/HtPasswdAuth.py 2010-03-10 18:30:49.000000000 -0600
+@@ -19,7 +19,7 @@
+ from twisted.web.resource import Resource
+
+ import twisted.copyright
+-if twisted.copyright.version >= '2.0.0':
++if twisted.copyright.version >= '2.0.0' or twisted.copyright.version >= '10.0.0':
+ from twisted.web import http
+ else:
+ from twisted.protocols import http
+--- HellaReactor.py 2010-03-10 18:22:34.000000000 -0600
++++ /usr/share/pyshared/Hellanzb/HellaReactor.py 2010-03-10 18:30:07.000000000 -0600
+@@ -9,7 +9,7 @@
+ import Hellanzb, sys, time
+
+ import twisted.copyright
+-if twisted.copyright.version >= '2.0.0':
++if twisted.copyright.version >= '2.0.0' or twisted.copyright.version >= '10.0.0':
+ from twisted.internet.selectreactor import SelectReactor
+ from twisted.internet.selectreactor import _NO_FILENO
+ from twisted.internet.selectreactor import _NO_FILEDESC
diff --git a/net-nntp/hellanzb/files/hellanzb.conf b/net-nntp/hellanzb/files/hellanzb.conf
new file mode 100644
index 000000000000..e6553f89a76b
--- /dev/null
+++ b/net-nntp/hellanzb/files/hellanzb.conf
@@ -0,0 +1,19 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+# /etc/conf.d/hellanzb
+# Config file for hellanzb init script
+
+# Which user to run hellanzb as, you should change this.
+HELLA_USER="root"
+HELLA_GROUP="root"
+
+# Location of config file, create a copy from /etc/hellanzb.conf for this.
+# Make sure the user specified above can read this file.
+HELLA_CONFIGFILE="/etc/hellanzb.conf"
+
+# Specify some other cli-options to hellanzb.py if you want.
+HELLA_OPTS=""
+
+# All the other options to hellanzb can be configured in ${CONFIG_FILE}.
diff --git a/net-nntp/hellanzb/files/hellanzb.init b/net-nntp/hellanzb/files/hellanzb.init
new file mode 100644
index 000000000000..be318d56c49d
--- /dev/null
+++ b/net-nntp/hellanzb/files/hellanzb.init
@@ -0,0 +1,41 @@
+#!/sbin/runscript
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+opts="start stop"
+
+depend() {
+ need net
+}
+
+start() {
+ ebegin "Starting hellanzb"
+ if ! check_config ; then
+ eend 1
+ return 1
+ fi
+ if [ "${RC_CMD}" = "restart" ] ; then
+ sleep 1 # wait for socket to be released
+ fi
+
+ start-stop-daemon --start -c ${HELLA_USER} \
+ -g ${HELLA_GROUP} --name hellanzb.py \
+ --exec /usr/bin/hellanzb.py -- \
+ -D -c ${HELLA_CONFIGFILE} ${HELLA_OPTS} &> /dev/null
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping hellanzb"
+ /usr/bin/hellanzb.py shutdown &> /dev/null
+ eend $?
+}
+
+check_config() {
+ if [ ! -e ${HELLA_CONFIGFILE} ] ; then
+ eerror "ERROR: can't find ${HELLA_CONFIGFILE}."
+ return 1
+ else
+ return 0
+ fi
+}
diff --git a/net-nntp/hellanzb/hellanzb-0.13-r8.ebuild b/net-nntp/hellanzb/hellanzb-0.13-r8.ebuild
new file mode 100644
index 000000000000..4e7159c3cd1e
--- /dev/null
+++ b/net-nntp/hellanzb/hellanzb-0.13-r8.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="3"
+PYTHON_DEPEND="2"
+
+inherit distutils eutils
+
+DESCRIPTION="Retrieves and processes .nzb files"
+HOMEPAGE="http://www.hellanzb.com/"
+SRC_URI="http://www.hellanzb.com/distfiles/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x86-solaris"
+IUSE="libnotify ssl"
+
+RDEPEND=">=dev-python/twisted-core-2.0
+ dev-python/twisted-web
+ || ( app-arch/unrar
+ app-arch/rar )
+ app-arch/par2cmdline
+ ssl? ( dev-python/pyopenssl )
+ libnotify? ( dev-python/notify-python )"
+
+DEPEND=""
+
+DOCS="CHANGELOG CREDITS PKG-INFO README"
+PYTHON_MODNAME="Hellanzb"
+
+pkg_setup() {
+ python_set_active_version 2
+ python_pkg_setup
+}
+
+src_prepare() {
+ distutils_src_prepare
+
+ epatch "${FILESDIR}/${P}-datafiles.patch"
+ epatch "${FILESDIR}/${P}-Fix_conf_file_search_path.patch"
+ epatch "${FILESDIR}/${P}-Choose_interface_to_bind_on.patch"
+ epatch "${FILESDIR}/${P}-fix_multiples_hosts.diff"
+ epatch "${FILESDIR}/${P}-gettinggroup.patch"
+ epatch "${FILESDIR}/${P}-python_26_fixes.patch"
+ epatch "${FILESDIR}/${P}-twisted-10.0.0.patch"
+}
+
+src_install() {
+ distutils_src_install
+
+ newconfd "${FILESDIR}/hellanzb.conf" hellanzb
+ newinitd "${FILESDIR}/hellanzb.init" hellanzb
+
+ insinto etc
+ doins etc/hellanzb.conf.sample
+}
+
+pkg_postinst() {
+ distutils_pkg_postinst
+
+ elog "You can start hellanzb in the background automatically by using"
+ elog "the init-script. To do this, add it to your default runlevel:"
+ elog ""
+ elog " rc-update add hellanzb default"
+ elog ""
+ elog "Use this command to start the daemon now:"
+ elog ""
+ elog " /etc/init.d/hellanzb start"
+ elog ""
+ elog "You will have to config /etc/conf.d/hellanzb before the init-script"
+ elog "will work. It is recommended that you change the user under which"
+ elog "the daemon will run."
+}
diff --git a/net-nntp/hellanzb/metadata.xml b/net-nntp/hellanzb/metadata.xml
new file mode 100644
index 000000000000..12beccf5f895
--- /dev/null
+++ b/net-nntp/hellanzb/metadata.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>net-news</herd>
+ <maintainer>
+ <email>aballier@gentoo.org</email>
+ <name>Alexis Ballier</name>
+ </maintainer>
+ <longdescription lang="en">
+ hellanzb is a Python application designed for *nix environments that
+ retrieves nzb files and fully processes them. The goal being to make
+ getting files from Usenet (e.g.: Giganews Newsgroups) as hands-free as
+ possible. Once fully installed, all thats required is moving an nzb file
+ to the queue directory. The rest; fetching, par-checking, un-raring,
+ etc. is taken care of by hellanzb.
+ </longdescription>
+</pkgmetadata>
+