diff --git a/Makefile.am b/Makefile.am index 155b2557e5..8502682ca0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -9,3 +9,13 @@ EXTRA_DIST = INSTALL README AUTHORS LICENSE ChangeLog #install-data-local: # $(INSTALL) -m 755 -d $(LOCALSTATEDIR)/lib/tor + +dist-rpm: dist + rm -rf /tmp/tor-rpm-build + mkdir /tmp/tor-rpm-build + for subdir in BUILD RPMS SOURCES SPECS SRPMS; do \ + mkdir /tmp/tor-rpm-build/$$subdir; \ + done + cp tor-$(VERSION).tar.gz /tmp/tor-rpm-build/SOURCES + rpmbuild -ba --define '_topdir /tmp/tor-rpm-build' contrib/tor.spec + mv /tmp/tor-rpm-build/*RPMS/* . diff --git a/configure.in b/configure.in index e536eced47..27c99736a4 100644 --- a/configure.in +++ b/configure.in @@ -184,5 +184,5 @@ AC_SUBST(LOCALSTATEDIR) echo "confdir: $CONFDIR" -AC_OUTPUT(Makefile contrib/tor.sh contrib/torify contrib/Makefile src/config/torrc doc/tor.1 src/Makefile doc/Makefile src/config/Makefile src/common/Makefile src/or/Makefile) +AC_OUTPUT(Makefile contrib/tor.sh contrib/torify contrib/Makefile contrib/tor.spec src/config/torrc doc/tor.1 src/Makefile doc/Makefile src/config/Makefile src/common/Makefile src/or/Makefile) diff --git a/contrib/Makefile.am b/contrib/Makefile.am index e53f5d7399..d4a7a077a1 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -1,6 +1,6 @@ confdir = $(sysconfdir)/tor -EXTRA_DIST = tor-tsocks.conf torify.1 +EXTRA_DIST = tor-tsocks.conf torify.1 tor.spec conf_DATA = tor-tsocks.conf diff --git a/contrib/tor.spec b/contrib/tor.spec deleted file mode 100644 index d5a9d6ff01..0000000000 --- a/contrib/tor.spec +++ /dev/null @@ -1,148 +0,0 @@ -%define rellevel 1 -%define relbase std.%{rellevel} -%define rhrel %([ -f /etc/redhat-release ] && (sed -e 's/^Red Hat Linux release //' -e 's/ .*$//' -e 's/\\./_/g' -e 's/^.*$/.rh&/' < /etc/redhat-release)) -%define blddate %(date -u +"%Y%m%d%H%M") -%define release %{relbase}%{rhrel}.%{blddate} - -%define initdir /etc/rc.d/init.d - -Summary: tor: anonymizing overlay network for TCP -Name: tor -Version: 0.0.2pre20 -Vendor: R. Dingledine -Release: %{release} -License: BSD-like -Group: Applications/Internet -URL: http://freehaven.net/tor - -Source0: http://freehaven.net/tor/dist/tor-0.0.2pre19.tar.gz - -Requires(pre): shadow-utils, /usr/bin/id, /bin/date, /bin/sh -Requires(pre): %{_sbindir}/useradd, %{_sbindir}/groupadd - -BuildRoot: %{_tmppath}/%{name}-%{version}-%{relbase}-root - -%description -Tor is a connection-based low-latency anonymous communication system which -addresses many flaws in the original onion routing design. - -In brief, Onion Routing is a connection-oriented anonymizing communication -service. Users choose a source-routed path through a set of nodes, and -negotiate a "virtual circuit" through the network, in which each node -knows its predecessor and successor, but no others. Traffic flowing down -the circuit is unwrapped by a symmetric key at each node, which reveals -the downstream node. - -Basically Tor provides a distributed network of servers ("onion -routers"). Users bounce their tcp streams (web traffic, ftp, ssh, etc) -around the routers, and recipients, observers, and even the routers -themselves have difficulty tracking the source of the stream. - -Note that Tor does no protocol cleaning. That means there is a danger that -application protocols and associated programs can be induced to reveal -information about the initiator. Tor depends on Privoxy and similar protocol -cleaners to solve this problem. - -Client applications can use the Tor network by connecting to the local -onion proxy. If the application itself does not come with socks support -you can use a socks client such as tsocks. Some web browsers like mozilla -and web proxies like privoxy come with socks support, so you don't need an -extra socks client if you want to use Tor with them. - -Remember that this is alpha code, and the network is very small -- Tor will -not provide anonymity currently. - -This package provides the "tor" program, which serves as both a client -and a relay node. Scripts will automatically create a "tor" user and -group, set tor up to run as a daemon, and automatically start it at -installation time. - -%prep -%setup -q - -# Patch the startup script to use the right user and group IDs, store -# the PID in a subdirectory of /var/run (so tor doesn't have to start -# as root) and add in a control line for chkconfig. This (BSD? Debian?) -# script will work, but doesn't use all the weird Red Hat macros to make -# the boot sequence look pretty. -ed -s tor.sh.in << '/EOF/' > /dev/null -# Change the PID file location -,s/^TORPID=\(.*\)\/run\/tor.pid/TORPID=\1\/run\/tor\/tor.pid/ -# -# Set user to "tor" before starting tor -,s/^\([ ]*\)\(\$TORBIN.*\)$/\1\/bin\/su -s \/bin\/sh -c "\2" tor/ -# -# Add user and group to command line. Suspenders and belt. -,s/^TORARGS="\(.*\)"/TORARGS="\1 --user tor --group tor"/ -# -# Add control lines for chkconfig -1a -# chkconfig: 2345 90 10 -# description: Onion router -. -# -# Save and exit ed -w -q -/EOF/ - -%build -%configure -%__make - -%install -%makeinstall - -# Install init script. -%__mkdir_p ${RPM_BUILD_ROOT}%{initdir} -%__install -m 755 tor.sh ${RPM_BUILD_ROOT}%{initdir}/tor - -# Directories that don't have any preinstalled files -%__mkdir_p -m 700 ${RPM_BUILD_ROOT}/var/lib/tor -%__mkdir_p -m 755 ${RPM_BUILD_ROOT}/var/run/tor -%__mkdir_p -m 755 ${RPM_BUILD_ROOT}/var/log/tor - -%clean -[ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT} - -%pre -[ -f %{initdir}/tor ] && /sbin/service tor stop -if [ ! -n "`/usr/bin/id -g tor 2>/dev/null`" ]; then - # One would like to default the GID, but doing that properly would - # require thought. - %{_sbindir}/groupadd tor 2> /dev/null -fi -if [ ! -n "`/usr/bin/id -u tor 2>/dev/null`" ]; then - # One would also like to default the UID, but doing that properly would - # also require thought. - if [ -x /sbin/nologin ]; then - %{_sbindir}/useradd -g tor -d / -s /sbin/nologin tor 2> /dev/null - else - %{_sbindir}/useradd -g tor -d / -s /bin/false tor 2> /dev/null - fi -fi - -%post -/sbin/chkconfig --add tor -/sbin/service tor start - -%preun -/sbin/service tor stop -/sbin/chkconfig --del tor - -%files -%defattr(-,root,root) -%doc AUTHORS INSTALL LICENSE README -%{_mandir}/man*/* -%{_bindir}/tor -%{initdir}/tor -%dir %{_sysconfdir}/tor/ -%config(noreplace) %{_sysconfdir}/tor/torrc -%config(noreplace) %{_sysconfdir}/tor/dirservers -%attr(-,tor,tor) %dir /var/lib/tor -%attr(-,tor,tor) %dir /var/run/tor -%attr(-,tor,tor) %dir /var/log/tor - -%changelog -* Sat Jan 17 2004 John Bashinski -- Basic spec file; tested with Red Hat 9. diff --git a/contrib/tor.spec.in b/contrib/tor.spec.in new file mode 100644 index 0000000000..d1a8ff27af --- /dev/null +++ b/contrib/tor.spec.in @@ -0,0 +1,118 @@ +%define rellevel 2 +%define relbase std.%{rellevel} +%define rhrel %([ -f /etc/redhat-release ] && (sed -e 's/^Red Hat Linux release //' -e 's/ .*$//' -e 's/\\./_/g' -e 's/^.*$/.rh&/' < /etc/redhat-release)) +%define blddate %(date -u +"%Y%m%d%H%M") +%define release %{relbase}%{rhrel}.%{blddate} + +%define initdir /etc/rc.d/init.d + +Summary: tor: The Onion Router; patent-free Onion Routing +Name: tor +Version: @VERSION@ +Vendor: R. Dingledine +Release: %{release} +License: BSD-like +Group: Applications/Internet +URL: http://freehaven.net/tor + +Source0: http://freehaven.net/tor/dist/tor-%{version}.tar.gz + +Requires(pre): shadow-utils, /usr/bin/id, /bin/date, /bin/sh +Requires(pre): %{_sbindir}/useradd, %{_sbindir}/groupadd + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{relbase}-root + +%description +Tor is a system that conceals the sources of TCP connections +by relaying those connections through multiple independently administered +forwarding nodes; it is a "cascaded mix" system. Among older systems, +Tor is most similar to Onion Routing. The basic concept of Tor is also +similar to that of the Zero Knowledge Freedom system or the Java Anonymous +Proxy. The "onions" used in Tor are similar in concept to the reply blocks +used with type I "cypherpunks" anonymous remailers. Feeding phrases +from this paragraph into search engines should give you more background +information than you really want. + +This package provides the "tor" program, which serves as both a client +and a relay node. Scripts will automatically create a "tor" user and +group, set tor up to run as a daemon, and automatically start it at +installation time. + +%prep +%setup -q + +# Patch the startup script to use the right user and group IDs. Force +# the use of /bin/sh as the shell for the "tor" account. +ed -s contrib/tor.sh.in << '/EOF/' > /dev/null +,s/^TORUSER=$/TORUSER=tor/ +,s/^TORGROUP=$/TORGROUP=tor/ +,s:/bin/su:/bin/su -s /bin/sh: +# +# Save and exit ed +w +q +/EOF/ + +%build +%configure +%__make + +%install +%makeinstall + +# Install init script. +%__mkdir_p ${RPM_BUILD_ROOT}%{initdir} +%__install -m 755 contrib/tor.sh ${RPM_BUILD_ROOT}%{initdir}/tor + +# Directories that don't have any preinstalled files +%__mkdir_p -m 700 ${RPM_BUILD_ROOT}/var/lib/tor +%__mkdir_p -m 755 ${RPM_BUILD_ROOT}/var/run/tor +%__mkdir_p -m 755 ${RPM_BUILD_ROOT}/var/log/tor + +%clean +[ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT} + +%pre +[ -f %{initdir}/tor ] && /sbin/service tor stop +if [ ! -n "`/usr/bin/id -g tor 2>/dev/null`" ]; then + # One would like to default the GID, but doing that properly would + # require thought. + %{_sbindir}/groupadd tor 2> /dev/null +fi +if [ ! -n "`/usr/bin/id -u tor 2>/dev/null`" ]; then + # One would also like to default the UID, but doing that properly would + # also require thought. + if [ -x /sbin/nologin ]; then + %{_sbindir}/useradd -r -g tor -d / -s /sbin/nologin tor 2> /dev/null + else + %{_sbindir}/useradd -r -g tor -d / -s /bin/false tor 2> /dev/null + fi +fi + +%post +/sbin/chkconfig --add tor +/sbin/chkconfig tor && /sbin/service tor start + +%preun +/sbin/chkconfig tor && /sbin/service tor stop +/sbin/chkconfig --del tor + +%files +%defattr(-,root,root) +%doc AUTHORS INSTALL LICENSE README +%{_mandir}/man*/* +%{_bindir}/tor +%{_bindir}/torify +%{initdir}/tor +%dir %{_sysconfdir}/tor/ +%config(noreplace) %{_sysconfdir}/tor/torrc +%config(noreplace) %{_sysconfdir}/tor/dirservers +%config(noreplace) %{_sysconfdir}/tor/tor-tsocks.conf +%attr(-,tor,tor) %dir /var/lib/tor +%attr(-,tor,tor) %dir /var/run/tor +%attr(-,tor,tor) %dir /var/log/tor + +%changelog +* Sat Jan 17 2004 John Bashinski +- Basic spec file; tested with Red Hat 9. +