blob: c4ac78fe804952dfee789c46804e60e6ec906104 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-irc/ircd-hybrid/ircd-hybrid-7.2.1.ebuild,v 1.2 2006/06/30 14:54:22 jokey Exp $
inherit eutils toolchain-funcs
# Additional configuration options
MAX_NICK_LENGTH=30
MAX_CLIENTS=512
MAX_TOPIC_LENGTH=390
ENABLE_SMALL_NETWORK=0
ENABLE_EFNET=0
IUSE="debug ssl static zlib contrib"
DESCRIPTION="IRCD-Hybrid - High Performance Internet Relay Chat"
HOMEPAGE="http://ircd-hybrid.com/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tgz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~x86 ~alpha ~amd64"
RDEPEND="
zlib? ( >=sys-libs/zlib-1.1.4-r2 )
ssl? ( >=dev-libs/openssl-0.9.7d )"
DEPEND="${RDEPEND}
>=sys-devel/flex-2.5.4a-r5
>=sys-devel/bison-1.875
>=sys-devel/gettext-0.12.1"
pkg_setup() {
enewgroup hybrid
enewuser hybrid -1 -1 -1 hybrid
}
src_unpack() {
unpack ${A}
epatch "${FILESDIR}"/7.2.1-default-config.patch
epatch "${FILESDIR}"/7.2.1-amd64-multilib.patch
}
src_compile() {
local myconf=""
ewarn
ewarn "Server administrators are encouraged to customize some variables in"
ewarn "the ebuild if actually deploying hybrid in an IRC network."
ewarn "The values below reflect a usable configuration but may not be"
ewarn "suitable for large networks in production environments."
ewarn
ewarn "To change the default settings below you must edit the ebuild."
ewarn
ewarn "Maximum nick length = ${MAX_NICK_LENGTH}"
ewarn " topic length = ${MAX_TOPIC_LENGTH}"
ewarn " number of clients = ${MAX_CLIENTS}"
ewarn
if [ ${ENABLE_SMALL_NETWORK} -eq 1 ]
then
einfo "Configuring for small networks."
myconf="${myconf} --enable-small-net"
else
myconf="${myconf} --disable-small-net"
fi
if [ ${ENABLE_EFNET} -eq 1 ]
then
einfo "Configuring for Efnet."
myconf="${myconf} --enable-efnet"
else
myconf="${myconf} --disable-efnet"
fi
epause 5
econf \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sysconfdir=/etc/ircd \
--includedir=/usr/include \
--with-nicklen=${MAX_NICK_LENGTH} \
--with-topiclen=${MAX_TOPIC_LENGTH} \
--with-maxconn=${MAX_CLIENTS} \
$(use_enable zlib) \
$(use_enable ssl openssl) \
$(use_enable !static shared-modules) \
$(use_enable debug assert) \
${myconf} \
|| die "econf failed"
emake || die "emake failed"
# Build respond binary for using rsa keys instead of plain text oper passwords.
use ssl && $(tc-getCC) ${CFLAGS} -o respond tools/rsa_respond/respond.c -lcrypto
# Build contrib Modules if requested by useflag contrib
if use contrib; then
cd ${S}/contrib
make || dir "make in contrib failed"
fi
}
src_install() {
dodir /usr/lib/ircd-hybrid-7
keepdir /var/run/ircd /var/log/ircd
make DESTDIR="${D}" install || die "make install failed"
insinto /usr/share/ircd-hybrid-7/messages
doins messages/*.lang || die "doins failed"
mv "${D}"/usr/{modules,lib/ircd-hybrid-7}
mv "${D}"/usr/bin/{,ircd-}mkpasswd
mv "${D}"/etc/ircd/{example,ircd}.conf
sed -i \
-e s:/usr/local/ircd/modules:/usr/lib/ircd-hybrid-7/modules: \
"${D}"/etc/ircd/ircd.conf
use ssl && dosbin "${S}"/respond
dodoc BUGS ChangeLog Hybrid-team RELNOTES TODO
docinto doc
dodoc doc/*.txt doc/server-version-info
docinto doc/technical
dodoc doc/technical/*
newinitd "${FILESDIR}"/init.d_ircd-7.2.1 ircd
# Install contrib Modules if requested by useflag contrib
if use contrib; then
cd ${S}/contrib
make DESTDIR="${D}" install || die "make install contrib failed"
fi
}
pkg_postinst() {
chown -R hybrid:hybrid "${ROOT}"/etc/ircd "${ROOT}"/var/{log,run}/ircd
chmod 700 "${ROOT}"/etc/ircd "${ROOT}"/var/log/ircd
if use ssl
then
einfo "To create an RSA keypair for crypted links execute:"
einfo "emerge --config =${CATEGORY}/${PF}"
fi
}
pkg_config() {
einfo "Generating 2048 bit RSA keypair /etc/ircd/ircd.rsa."
einfo "The public key is stored in /etc/ircd/ircd.pub."
openssl genrsa -rand "${ROOT}"/var/run/random-seed -out "${ROOT}"/etc/ircd/ircd.rsa 2048
openssl rsa -in "${ROOT}"/etc/ircd/ircd.rsa -pubout -out "${ROOT}"/etc/ircd/ircd.pub
chown hybrid:hybrid "${ROOT}"/etc/ircd/ircd.rsa "${ROOT}"/etc/ircd/ircd.pub
chmod 600 "${ROOT}"/etc/ircd/ircd.rsa
chmod 644 "${ROOT}"/etc/ircd/ircd.pub
einfo "Update the RSA keypair in /etc/ircd/ircd.conf and /REHASH."
}
|