summaryrefslogtreecommitdiff
blob: 44b049e13f22379f26cf4a4f246dae6642367ed9 (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
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-misc/tor/tor-0.1.0.17.ebuild,v 1.2 2006/04/23 15:31:36 exg Exp $

inherit eutils flag-o-matic

DESCRIPTION="The Onion Router - Anonymizing overlay network for TCP"
HOMEPAGE="http://tor.eff.org/"
SRC_URI="http://tor.eff.org/dist/${P}.tar.gz"

LICENSE="BSD"
SLOT="0"
## Arch temas please please dont mark this stable untill you really test the
## chroot stuff
KEYWORDS="~amd64 ~ppc ~ppc64 ~sparc ~x86"
IUSE="static"

DEPEND=">=dev-libs/openssl-0.9.6
		dev-libs/libevent"
RDEPEND="!static? (
			net-proxy/tsocks
			>=dev-libs/openssl-0.9.6
			dev-libs/libevent
		)"

pkg_setup() {
	enewgroup tor
	enewuser tor -1 -1 /var/lib/tor tor
}

src_unpack() {
	unpack ${A}
	cd ${S}
	epatch ${FILESDIR}/torrc.sample-0.1.0.16.patch
}

src_compile() {
	use static && append-ldflags -static
	use static && append-flags -static
	econf || die
	emake || die
}

src_install() {
	exeinto /etc/init.d ; newexe ${FILESDIR}/tor.initd-r1 tor
	insinto /etc/conf.d ; newins ${FILESDIR}/tor.confd tor
	make DESTDIR=${D} install || die

	dodoc README ChangeLog AUTHORS INSTALL \
		doc/{CLIENTS,FAQ,HACKING,TODO} \
		doc/{control-spec.txt,rend-spec.txt,tor-doc.css,tor-doc.html,tor-spec.txt}

	dodir /var/lib/tor
	dodir /var/log/tor
	fperms 750 /var/lib/tor /var/log/tor
	fowners tor:tor /var/lib/tor /var/log/tor
}

pkg_postinst() {
	einfo "You must create /etc/tor/torrc, you can use the sample that is in that directory"
	einfo "To have privoxy and tor working together you must add:"
	einfo "forward-socks4a / localhost:9050 ."
	einfo "to /etc/privoxy/config"
	einfo
	einfo "The Tor ebuild now includes chroot support."
	einfo "If you like to run tor in chroot AND this is a new install OR"
	einfo "your tor doesn't already run in chroot, simply run:"
	einfo "\`ebuild /var/db/pkg/${CATEGORY}/${PF}/${PF}.ebuild config\`"
	einfo "Before running the above command you might want to change the chroot"
	einfo "dir in /etc/conf.d/tor. Otherwise /chroot/tor will be used."
}

pkg_config() {
	CHROOT=`sed -n 's/^[[:blank:]]\?CHROOT="\([^"]\+\)"/\1/p' /etc/conf.d/tor 2>/dev/null`
	EXISTS="no"

	if [ -z "${CHROOT}" -a ! -d "/chroot/tor" ]; then
		CHROOT="/chroot/tor"
	elif [ -d ${CHROOT} ]; then
		eerror; eerror "${CHROOT:-/chroot/tor} already exists. Quitting."; eerror; EXISTS="yes"
	fi

	if [ ! "$EXISTS" = yes ]; then
		USERNAME="tor"
		BINARY="/usr/bin/tor"

		einfo
		einfo "Setting up the chroot directory..."
		mkdir -m 700 -p ${CHROOT}
		mkdir -p ${CHROOT}/etc/tor \
			${CHROOT}/dev ${CHROOT}/var/log/tor ${CHROOT}/var/lib/tor \
			${CHROOT}/usr/bin ${CHROOT}/var/run ${CHROOT}/lib \
			${CHROOT}/usr/lib

		einfo "Creating devices..."
		mknod -m 0444 ${CHROOT}/dev/random c 1 8
		mknod -m 0444 ${CHROOT}/dev/urandom c 1 9
		mknod -m 0666 ${CHROOT}/dev/null c 1 3

		einfo "Adding ${USERNAME} to ${CHROOT}/etc/passwd and group..."
		grep ^${USERNAME}: /etc/passwd > ${CHROOT}/etc/passwd
		grep ^${USERNAME}: /etc/group > ${CHROOT}/etc/group

		einfo "Copying system files..."
		cp -p /etc/{nsswitch.conf,host.conf,resolv.conf,hosts,localtime} ${CHROOT}/etc
		cp -p /lib/{libc.*,libnsl.*,libnss_*.*,libresolv.*,libgcc_*.*,ld-linux.*} ${CHROOT}/lib

		# Static version has no dynamic dependencies
		if useq !static ; then
			einfo "Copying dependencies..."
			for DEP in $(ldd $BINARY | awk '{print $3}'); do
				test -f ${DEP} && cp ${DEP} ${CHROOT}${DEP}
			done
		fi

		einfo "Copying binaries and config files..."
		for i in ${BINARY}; do
			cp ${i} ${CHROOT}${i}
		done

		cp -R /etc/tor ${CHROOT}/etc/
		cp -Rp /var/lib/tor ${CHROOT}/var/lib/

		einfo "Setting permissions..."
		chown ${USERNAME}:${USERNAME} ${CHROOT} ${CHROOT}/var/lib/tor \
			${CHROOT}/var/log/tor ${CHROOT}/var/run
		chmod 0700 ${CHROOT}/var/lib/tor ${CHROOT}/var/run ${CHROOT}/var/log/tor
		chmod 0444 ${CHROOT}/etc/{group,host.conf,hosts,localtime,nsswitch.conf}
		chmod 0444 ${CHROOT}/etc/{passwd,resolv.conf}
		chmod 0644 ${CHROOT}/etc/tor/*

		einfo "Done."
	fi
}