gnu: torsocks: Don't use NAME in source URI.
[jackhill/guix/guix.git] / gnu / packages / tor.scm
CommitLineData
7f08437b 1;;; GNU Guix --- Functional package management for GNU
9355498d 2;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
722ec722 3;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
ae608622
EF
4;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
5;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
eac5d425 6;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
b2fb40de 7;;; Copyright © 2017, 2018 Eric Bavier <bavier@member.fsf.org>
7e9e1a36 8;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
90664247 9;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
7f08437b
LC
10;;;
11;;; This file is part of GNU Guix.
12;;;
13;;; GNU Guix is free software; you can redistribute it and/or modify it
14;;; under the terms of the GNU General Public License as published by
15;;; the Free Software Foundation; either version 3 of the License, or (at
16;;; your option) any later version.
17;;;
18;;; GNU Guix is distributed in the hope that it will be useful, but
19;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21;;; GNU General Public License for more details.
22;;;
23;;; You should have received a copy of the GNU General Public License
24;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26(define-module (gnu packages tor)
71794d7b 27 #:use-module ((guix licenses) #:prefix license:)
7f08437b
LC
28 #:use-module (guix packages)
29 #:use-module (guix download)
ba583bd2 30 #:use-module (guix git-download)
7f08437b 31 #:use-module (guix build-system gnu)
c4605e4c 32 #:use-module (guix build-system python)
ba583bd2 33 #:use-module (gnu packages)
f3cf25c3 34 #:use-module (gnu packages base)
7f08437b 35 #:use-module (gnu packages libevent)
f3cf25c3 36 #:use-module (gnu packages linux)
ac257f12 37 #:use-module (gnu packages check)
7f08437b 38 #:use-module (gnu packages compression)
b2e3dd94 39 #:use-module (gnu packages pcre)
6c97f17f 40 #:use-module (gnu packages pkg-config)
8850303e 41 #:use-module (gnu packages python)
1b2f753d 42 #:use-module (gnu packages python-web)
44d10b1f 43 #:use-module (gnu packages python-xyz)
b8ea5204 44 #:use-module (gnu packages qt)
b2e3dd94 45 #:use-module (gnu packages autotools)
cc2b77df 46 #:use-module (gnu packages tls)
b2e3dd94 47 #:use-module (gnu packages w3m))
7f08437b
LC
48
49(define-public tor
50 (package
51 (name "tor")
eac5d425 52 (version "0.3.4.10")
7f08437b
LC
53 (source (origin
54 (method url-fetch)
0ab57b0d 55 (uri (string-append "https://dist.torproject.org/tor-"
7f08437b
LC
56 version ".tar.gz"))
57 (sha256
58 (base32
eac5d425 59 "12i51i6swkdpnbcpa6f1csc00q177sbjnw2x31j53glxshmwpv5d"))))
7f08437b 60 (build-system gnu-build-system)
249eb389 61 (arguments
54727850 62 `(#:configure-flags (list "--enable-gcc-hardening"
249eb389 63 "--enable-linker-hardening")))
8850303e 64 (native-inputs
6c97f17f 65 `(("pkg-config" ,pkg-config)
4105f13b 66 ("python" ,python-2))) ; for tests
7f08437b
LC
67 (inputs
68 `(("zlib" ,zlib)
69 ("openssl" ,openssl)
7e9e1a36 70 ("libevent" ,libevent)
6c97f17f
TGR
71 ("libseccomp" ,libseccomp)
72 ("xz" ,xz)
73 ("zstd" ,zstd)))
0ab57b0d 74 (home-page "https://www.torproject.org/")
9e771e3b 75 (synopsis "Anonymous network router to improve privacy on the Internet")
7f08437b
LC
76 (description
77 "Tor protects you by bouncing your communications around a distributed
78network of relays run by volunteers all around the world: it prevents
79somebody watching your Internet connection from learning what sites you
80visit, and it prevents the sites you visit from learning your physical
35b9e423 81location. Tor works with many of your existing applications, including
7f08437b 82web browsers, instant messaging clients, remote login, and other
fc9286d0 83applications based on the TCP protocol.
55b27569 84
fc9286d0 85To @code{torify} applications (to take measures to ensure that an application,
86which has not been designed for use with Tor such as ssh, will use only Tor for
87internet connectivity, and also ensures that there are no leaks from DNS, UDP or
88the application layer) you need to install @code{torsocks}.")
71794d7b 89 (license license:bsd-3)))
4f7e152b
LC
90
91(define-public torsocks
92 (package
93 (name "torsocks")
91988aee 94 (version "2.2.0")
4f7e152b 95 (source (origin
91988aee 96 (method url-fetch)
97 (uri (string-append "https://people.torproject.org/~dgoulet/"
d77ade87 98 "torsocks/torsocks-" version ".tar.xz"))
ba583bd2
LC
99 (sha256
100 (base32
91988aee 101 "0byr9ga9w79qz4vp0m11sbmspad7fsal9wm67r4znzb7zb7cis19"))))
4f7e152b 102 (build-system gnu-build-system)
f3cf25c3
EB
103 (inputs
104 `(("which" ,which)
105 ("libcap" ,libcap)))
106 (arguments
107 `(#:phases (modify-phases %standard-phases
108 (add-after 'build 'absolutize
109 (lambda* (#:key inputs #:allow-other-keys)
110 (substitute* "src/bin/torsocks"
111 (("getcap=`.*`")
112 (string-append "getcap=" (which "getcap")))
113 (("`which")
114 (string-append "`" (which "which"))))
115 #t)))))
91988aee 116 (home-page "https://www.torproject.org/")
4f7e152b
LC
117 (synopsis "Use socks-friendly applications with Tor")
118 (description
119 "Torsocks allows you to use most socks-friendly applications in a safe
120way with Tor. It ensures that DNS requests are handled safely and explicitly
121rejects UDP traffic from the application you're using.")
ba583bd2
LC
122
123 ;; All the files explicitly say "version 2 only".
71794d7b 124 (license license:gpl2)))
b2e3dd94
LC
125
126(define-public privoxy
127 (package
128 (name "privoxy")
be4f8391 129 (version "3.0.28")
b2e3dd94
LC
130 (source (origin
131 (method url-fetch)
132 (uri (string-append "mirror://sourceforge/ijbswa/Sources/"
133 version "%20%28stable%29/privoxy-"
134 version "-stable-src.tar.gz"))
135 (sha256
136 (base32
be4f8391 137 "0jl2yav1qzqnaqnnx8i6i53ayckkimcrs3l6ryvv7bda6v08rmxm"))))
b2e3dd94
LC
138 (build-system gnu-build-system)
139 (arguments
ae5c6fca
LC
140 '(;; The default 'sysconfdir' is $out/etc; change that to
141 ;; $out/etc/privoxy.
142 #:configure-flags (list (string-append "--sysconfdir="
143 (assoc-ref %outputs "out")
144 "/etc/privoxy"))
b2e3dd94
LC
145 #:tests? #f))
146 (inputs
147 `(("w3m" ,w3m)
148 ("pcre" ,pcre)
149 ("zlib" ,zlib)
150 ("autoconf" ,autoconf)
151 ("automake" ,automake)))
a8f3d492 152 (home-page "https://www.privoxy.org")
b2e3dd94
LC
153 (synopsis "Web proxy with advanced filtering capabilities for enhancing privacy")
154 (description
155 "Privoxy is a non-caching web proxy with advanced filtering capabilities
156for enhancing privacy, modifying web page data and HTTP headers, controlling
157access, and removing ads and other obnoxious Internet junk. Privoxy has a
158flexible configuration and can be customized to suit individual needs and
159tastes. It has application for both stand-alone systems and multi-user
160networks.")
71794d7b 161 (license license:gpl2+)))
b8ea5204
EF
162
163(define-public onionshare
164 (package
165 (name "onionshare")
b2fb40de 166 (version "1.3.1")
b8ea5204
EF
167 (source
168 (origin
d123b094
RW
169 (method git-fetch)
170 (uri (git-reference
171 (url "https://github.com/micahflee/onionshare.git")
172 (commit (string-append "v" version))))
173 (file-name (git-file-name name version))
b8ea5204
EF
174 (sha256
175 (base32
b2fb40de 176 "02zic4cxwrcfdg22dq9c2rzni3l18wynjxd38scc59s37vlw7w2r"))))
b8ea5204
EF
177 (build-system python-build-system)
178 (arguments
179 `(#:phases
180 (modify-phases %standard-phases
181 (add-after 'unpack 'fix-install-path
182 (lambda* (#:key outputs #:allow-other-keys)
183 (let* ((out (assoc-ref outputs "out"))
184 (onionshare (string-append out "/share/onionshare")))
b2fb40de 185 (substitute* '("setup.py" "onionshare/common.py")
e5a12fba
EF
186 (("sys.prefix,") (string-append "'" out "',")))
187 (substitute* "setup.py"
188 ;; for the nautilus plugin
189 (("/usr/share/nautilus") "share/nautilus"))
b2fb40de
EB
190 (substitute* "install/onionshare.desktop"
191 (("/usr") out))
192 #t)))
b8ea5204
EF
193 (delete 'check)
194 (add-before 'strip 'tests
195 ;; After all the patching we run the tests after installing.
196 ;; This is also a known issue:
197 ;; https://github.com/micahflee/onionshare/issues/284
68e7632d 198 (lambda _
b2fb40de 199 (invoke "pytest" "test")
68e7632d 200 #t)))))
b8ea5204 201 (native-inputs
b2fb40de 202 `(("python-pytest" ,python-pytest)))
b8ea5204
EF
203 (inputs
204 `(("python-flask" ,python-flask)
205 ("python-nautilus" ,python-nautilus)
206 ("python-sip" ,python-sip)
207 ("python-stem" ,python-stem)
208 ("python-pyqt" ,python-pyqt)))
209 (home-page "https://onionshare.org/")
210 (synopsis "Securely and anonymously share files")
211 (description "OnionShare lets you securely and anonymously share files of
212any size. It works by starting a web server, making it accessible as a Tor
213hidden service, and generating an unguessable URL to access and download the
214files. It doesn't require setting up a server on the internet somewhere or
215using a third party filesharing service. You host the file on your own computer
216and use a Tor hidden service to make it temporarily accessible over the
217internet. The other user just needs to use Tor Browser to download the file
218from you.")
71794d7b
TGR
219 (license (list license:gpl3+
220 license:bsd-3)))) ; onionshare/socks.py
61ac7544
TGR
221
222(define-public nyx
18ab54d4
TGR
223 (package
224 (name "nyx")
ab1019f1 225 (version "2.1.0")
18ab54d4
TGR
226 (source
227 (origin
228 (method url-fetch)
229 (uri (pypi-uri name version))
230 (sha256
231 (base32
ab1019f1 232 "02rrlllz2ci6i6cs3iddyfns7ang9a54jrlygd2jw1f9s6418ll8"))))
18ab54d4
TGR
233 (build-system python-build-system)
234 (inputs
235 `(("python-stem" ,python-stem)))
236 (arguments
237 `(#:phases
238 (modify-phases %standard-phases
239 (add-after 'install 'install-man-page
240 (lambda* (#:key outputs #:allow-other-keys)
241 (let* ((out (assoc-ref outputs "out"))
242 (man (string-append out "/share/man")))
243 (install-file "nyx.1" (string-append man "/man1"))
244 #t)))
245 (add-after 'install 'install-sample-configuration
246 (lambda* (#:key outputs #:allow-other-keys)
247 (let* ((out (assoc-ref outputs "out"))
248 (doc (string-append out "/share/doc/" ,name "-" ,version)))
249 (install-file "web/nyxrc.sample" doc)
250 #t))))
251 ;; XXX The tests seem to require more of a real terminal than the build
252 ;; environment provides:
253 ;; _curses.error: setupterm: could not find terminal
254 ;; With TERM=linux, the tests try to move the cursor and still fail:
255 ;; _curses.error: cbreak() returned ERR
256 #:tests? #f))
257 (home-page "https://nyx.torproject.org/")
258 (synopsis "Tor relay status monitor")
259 (description
260 "Nyx monitors the performance of relays participating in the
61ac7544
TGR
261@uref{https://www.torproject.org/, Tor anonymity network}. It displays this
262information visually and in real time, using a curses-based terminal interface.
263This makes Nyx well-suited for remote shell connections and servers without a
264graphical display. It's like @command{top} for Tor, providing detailed
265statistics and status reports on:
266
267@enumerate
268@item connections (with IP address, hostname, fingerprint, and consensus data),
269@item bandwidth, processor, and memory usage,
270@item the relay's current configuration,
271@item logged events,
272@item and much more.
273@end enumerate
274
275Potential client and exit connections are scrubbed of sensitive information.")
18ab54d4 276 (license license:gpl3+)))