gnu: qemu: Remove dependency on Samba.
[jackhill/guix/guix.git] / gnu / packages / web.scm
CommitLineData
29a2ccd3 1;;; GNU Guix --- Functional package management for GNU
c9ea41ff 2;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
29a2ccd3 3;;; Copyright © 2013 Aljosha Papsch <misc@rpapsch.de>
833efa0d 4;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
29a2ccd3
AP
5;;;
6;;; This file is part of GNU Guix.
7;;;
8;;; GNU Guix is free software; you can redistribute it and/or modify it
9;;; under the terms of the GNU General Public License as published by
10;;; the Free Software Foundation; either version 3 of the License, or (at
11;;; your option) any later version.
12;;;
13;;; GNU Guix is distributed in the hope that it will be useful, but
14;;; WITHOUT ANY WARRANTY; without even the implied warranty of
15;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16;;; GNU General Public License for more details.
17;;;
18;;; You should have received a copy of the GNU General Public License
19;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
20
21(define-module (gnu packages web)
22 #:use-module ((guix licenses)
23 #:renamer (symbol-prefix-proc 'l:))
24 #:use-module (guix packages)
25 #:use-module (guix download)
833efa0d 26 #:use-module (guix git-download)
c9ea41ff 27 #:use-module (guix build-system perl)
29a2ccd3
AP
28 #:use-module (guix build-system gnu)
29 #:use-module (gnu packages apr)
b777d784
JD
30 #:use-module (gnu packages asciidoc)
31 #:use-module (gnu packages docbook)
833efa0d
LC
32 #:use-module (gnu packages autotools)
33 #:use-module ((gnu packages compression) #:select (zlib))
29a2ccd3 34 #:use-module (gnu packages openssl)
c9ea41ff 35 #:use-module (gnu packages pcre)
b777d784 36 #:use-module (gnu packages xml)
c9ea41ff 37 #:use-module (gnu packages perl))
29a2ccd3
AP
38
39(define-public httpd
40 (package
41 (name "httpd")
42 (version "2.4.6")
43 (source (origin
44 (method url-fetch)
45 (uri (string-append "mirror://apache/httpd/httpd-"
46 version ".tar.bz2"))
47 (sha256
48 (base32
49 "1sig08xxq1kqxr2a42ndwr9g4mm6zdqnxldhxraym2y0xcjkd7yw"))))
50 (build-system gnu-build-system)
51 (inputs `(("apr" ,apr)
52 ("apr-util" ,apr-util)
53 ("openssl" ,openssl)
54 ("pcre" ,pcre)))
55 (arguments
56 `(#:test-target "test"
57 #:configure-flags (list "--enable-rewrite"
58 "--enable-userdir"
59 "--enable-vhost-alias"
60 "--enable-ssl"
61 "--enable-mime-magic"
62 (string-append "--sysconfdir="
63 (assoc-ref %outputs "out")
64 "/etc/httpd"))))
65 (synopsis "Featureful HTTP server")
66 (description
67 "The Apache HTTP Server Project is a collaborative software development
68effort aimed at creating a robust, commercial-grade, featureful, and
69freely-available source code implementation of an HTTP (Web) server. The project
70is jointly managed by a group of volunteers located around the world, using the
71Internet and the Web to communicate, plan, and develop the server and its
72related documentation.")
73 (license l:asl2.0)
74 (home-page "https://httpd.apache.org/")))
c9ea41ff 75
833efa0d
LC
76(define-public libwebsockets
77 (package
78 (name "libwebsockets")
79 (version "1.2")
80 (source (origin
81 ;; The project does not publish tarballs, so we have to take
82 ;; things from Git.
83 (method git-fetch)
84 (uri (git-reference
85 (url "git://git.libwebsockets.org/libwebsockets")
86 (commit (string-append "v" version
87 "-chrome26-firefox18"))))
88 (sha256
89 (base32
90 "1293hbz8qj4p27m1qjf8dn97r10xjyiwdpq491m87zi025s558cl"))
91 (file-name (string-append name "-" version))))
92
93 ;; The package has both CMake and GNU build systems, but the latter is
94 ;; apparently better supported (CMake-generated makefiles lack an
95 ;; 'install' target, for instance.)
96 (build-system gnu-build-system)
97
98 (arguments
829ecd00
LC
99 '(#:phases (alist-cons-before
100 'configure 'bootstrap
101 (lambda _
102 (chmod "libwebsockets-api-doc.html" #o666)
103 (zero? (system* "./autogen.sh")))
104 %standard-phases)))
833efa0d
LC
105
106 (native-inputs `(("autoconf" ,autoconf)
107 ("automake" ,automake)
108 ("libtool" ,libtool "bin")
109 ("perl" ,perl))) ; to build the HTML doc
110 (inputs `(("zlib" ,zlib)
111 ("openssl" ,openssl)))
112 (synopsis "WebSockets library written in C")
113 (description
114 "libwebsockets is a library that allows C programs to establish client
115and server WebSockets connections---a protocol layered above HTTP that allows
116for efficient socket-like bidirectional reliable communication channels.")
117 (home-page "http://libwebsockets.org/")
118
119 ;; This is LGPLv2.1-only with extra exceptions specified in 'LICENSE'.
120 (license l:lgpl2.1)))
121
c9ea41ff
AE
122(define-public perl-html-tagset
123 (package
124 (name "perl-html-tagset")
125 (version "3.20")
126 (source (origin
127 (method url-fetch)
128 (uri (string-append
129 "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tagset-"
130 version ".tar.gz"))
131 (sha256
132 (base32
133 "1qh8249wgr4v9vgghq77zh1d2zs176bir223a8gh3k9nksn7vcdd"))))
134 (build-system perl-build-system)
135 (license (package-license perl))
136 (synopsis "Perl data tables useful in parsing HTML")
137 (description
138 "The HTML::Tagset module contains several data tables useful in various
139kinds of HTML parsing operations.")
140 (home-page "http://search.cpan.org/dist/HTML-Tagset/")))
141
8ec0d3fb
AE
142(define-public perl-html-parser
143 (package
144 (name "perl-html-parser")
145 (version "3.71")
146 (source (origin
147 (method url-fetch)
148 (uri (string-append
149 "mirror://cpan/authors/id/G/GA/GAAS/HTML-Parser-"
150 version ".tar.gz"))
151 (sha256
152 (base32
153 "00nqzdgl7c3jilx7mil19k5jwcw3as14pvkjgxi97zyk94vqp4dy"))))
154 (build-system perl-build-system)
155 (inputs
156 `(("perl-html-tagset" ,perl-html-tagset)))
157 (license (package-license perl))
158 (synopsis "Perl HTML parser class")
159 (description
160 "Objects of the HTML::Parser class will recognize markup and separate
161it from plain text (alias data content) in HTML documents. As different
162kinds of markup and text are recognized, the corresponding event handlers
163are invoked.")
164 (home-page "http://search.cpan.org/~gaas/HTML-Parser/")))
ae2aa18d
AE
165
166(define-public perl-http-date
167 (package
168 (name "perl-http-date")
169 (version "6.02")
170 (source (origin
171 (method url-fetch)
172 (uri (string-append
173 "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Date-"
174 version ".tar.gz"))
175 (sha256
176 (base32
177 "0cz357kafhhzw7w59iyi0wvhw7rlh5g1lh38230ckw7rl0fr9fg8"))))
178 (build-system perl-build-system)
179 (license (package-license perl))
180 (synopsis "Perl date conversion routines")
181 (description
182 "The HTTP::Date module provides functions that deal with date formats
183used by the HTTP protocol (and then some more).")
184 (home-page "http://search.cpan.org/~gaas/HTTP-Date/")))
fea5ebb1
AE
185
186(define-public perl-uri
187 (package
188 (name "perl-uri")
189 (version "1.60")
190 (source (origin
191 (method url-fetch)
192 (uri (string-append
193 "mirror://cpan/authors/id/G/GA/GAAS/URI-"
194 version ".tar.gz"))
195 (sha256
196 (base32
197 "0xr31mf7lfrwhyvlx4pzp6p7alls5gi4bj8pk5g89f5cckfd74hz"))))
198 (build-system perl-build-system)
199 (license (package-license perl))
200 (synopsis "Perl Uniform Resource Identifiers (absolute and relative)")
201 (description
202 "The URI module implements the URI class. Objects of this class
203represent \"Uniform Resource Identifier references\" as specified in RFC 2396
204(and updated by RFC 2732).")
205 (home-page "http://search.cpan.org/~gaas/URI/")))
24b3c053
AE
206
207(define-public perl-lwp-mediatypes
208 (package
209 (name "perl-lwp-mediatypes")
210 (version "6.02")
211 (source (origin
212 (method url-fetch)
213 (uri (string-append
214 "mirror://cpan/authors/id/G/GA/GAAS/LWP-MediaTypes-"
215 version ".tar.gz"))
216 (sha256
217 (base32
218 "0xmnblp962qy02akah30sji8bxrqcyqlff2w95l199ghql60ny8q"))))
219 (build-system perl-build-system)
220 (license (package-license perl))
221 (synopsis "Perl module to guess the media type for a file or a URL")
222 (description
223 "The LWP::MediaTypes module provides functions for handling media (also
224known as MIME) types and encodings. The mapping from file extensions to
225media types is defined by the media.types file. If the ~/.media.types file
226exists it is used instead.")
227 (home-page "http://search.cpan.org/~gaas/LWP-MediaTypes/")))
e426106b
AE
228
229(define-public perl-io-html
230 (package
231 (name "perl-io-html")
232 (version "1.00")
233 (source (origin
234 (method url-fetch)
235 (uri (string-append
236 "mirror://cpan/authors/id/C/CJ/CJM/IO-HTML-"
237 version ".tar.gz"))
238 (sha256
239 (base32
240 "06nj3a0xgp5jxwxx6ayglfk2v7npf5a7gwkqsjlkapjkybarzqh4"))))
241 (build-system perl-build-system)
242 (license (package-license perl))
243 (synopsis "Perl module to open an HTML file with automatic charset detection")
244 (description
245 "IO::HTML provides an easy way to open a file containing HTML while
246automatically determining its encoding. It uses the HTML5 encoding sniffing
247algorithm specified in section 8.2.2.1 of the draft standard.")
248 (home-page "http://search.cpan.org/~cjm/IO-HTML/")))
91318a9e
AE
249
250(define-public perl-http-message
251 (package
252 (name "perl-http-message")
253 (version "6.06")
254 (source (origin
255 (method url-fetch)
256 (uri (string-append
257 "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Message-"
258 version ".tar.gz"))
259 (sha256
260 (base32
261 "0qxdrcak97azjvqyx1anpb2ky6vp6vc37x0wcfjdqfajkh09fzh8"))))
262 (build-system perl-build-system)
daee66fc 263 (propagated-inputs
91318a9e 264 `(("perl-http-date" ,perl-http-date)
f852114e
AE
265 ("perl-uri" ,perl-uri)))
266 (inputs
267 `(("perl-io-html" ,perl-io-html)
daee66fc 268 ("perl-lwp-mediatypes" ,perl-lwp-mediatypes)))
91318a9e
AE
269 (license (package-license perl))
270 (synopsis "Perl HTTP style message")
271 (description
272 "An HTTP::Message object contains some headers and a content body.")
273 (home-page "http://search.cpan.org/~gaas/HTTP-Message/")))
b3d18aff
AE
274
275(define-public perl-http-cookies
276 (package
277 (name "perl-http-cookies")
278 (version "6.01")
279 (source (origin
280 (method url-fetch)
281 (uri (string-append
282 "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Cookies-"
283 version ".tar.gz"))
284 (sha256
285 (base32
286 "087bqmg22dg3vj7gssh3pcsh9y1scimkbl5h1kc8jqyfhgisvlzm"))))
287 (build-system perl-build-system)
800de8da 288 (propagated-inputs
f852114e 289 `(("perl-http-message" ,perl-http-message)))
b3d18aff
AE
290 (license (package-license perl))
291 (synopsis "Perl HTTP cookie jars")
292 (description
293 "The HTTP::Cookies class is for objects that represent a cookie jar,
294that is, a database of all the HTTP cookies that a given LWP::UserAgent
295object knows about.")
296 (home-page "http://search.cpan.org/~gaas/HTTP-Cookies/")))
3f41e6b3
AE
297
298(define-public perl-http-daemon
299 (package
300 (name "perl-http-daemon")
301 (version "6.01")
302 (source (origin
303 (method url-fetch)
304 (uri (string-append
305 "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Daemon-"
306 version ".tar.gz"))
307 (sha256
308 (base32
309 "1hmd2isrkilf0q0nkxms1q64kikjmcw9imbvrjgky6kh89vqdza3"))))
310 (build-system perl-build-system)
6e8cf5c9 311 (propagated-inputs
f852114e 312 `(("perl-http-message" ,perl-http-message)
6e8cf5c9 313 ("perl-lwp-mediatypes" ,perl-lwp-mediatypes)))
3f41e6b3
AE
314 (license (package-license perl))
315 (synopsis "Perl simple http server class")
316 (description
317 "Instances of the HTTP::Daemon class are HTTP/1.1 servers that listen
318on a socket for incoming requests. The HTTP::Daemon is a subclass of
319IO::Socket::INET, so you can perform socket operations directly on it too.")
320 (home-page "http://search.cpan.org/~gaas/HTTP-Daemon/")))
e7444ee2
AE
321
322(define-public perl-http-negotiate
323 (package
324 (name "perl-http-negotiate")
325 (version "6.01")
326 (source (origin
327 (method url-fetch)
328 (uri (string-append
329 "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Negotiate-"
330 version ".tar.gz"))
331 (sha256
332 (base32
333 "05p053vjs5g91v5cmjnny7a3xzddz5k7vnjw81wfh01ilqg9qwhw"))))
334 (build-system perl-build-system)
d0bb5f77
AE
335 (propagated-inputs
336 `(("perl-http-message" ,perl-http-message)))
e7444ee2
AE
337 (license (package-license perl))
338 (synopsis "Perl http content negotiation")
339 (description
340 "The HTTP::Negotiate module provides a complete implementation of the
341HTTP content negotiation algorithm specified in
342draft-ietf-http-v11-spec-00.ps chapter 12. Content negotiation allows for
343the selection of a preferred content representation based upon attributes
344of the negotiable variants and the value of the various Accept* header
345fields in the request.")
346 (home-page "http://search.cpan.org/~gaas/HTTP-Negotiate/")))
a3eb919f
AE
347
348(define-public perl-www-robotrules
349 (package
350 (name "perl-www-robotrules")
351 (version "6.02")
352 (source (origin
353 (method url-fetch)
354 (uri (string-append
355 "mirror://cpan/authors/id/G/GA/GAAS/WWW-RobotRules-"
356 version ".tar.gz"))
357 (sha256
358 (base32
359 "07m50dp5n5jxv3m93i55qvnd67a6g7cvbvlik115kmc8lbkh5da6"))))
360 (build-system perl-build-system)
3adf5888 361 (propagated-inputs
a3eb919f
AE
362 `(("perl-uri" ,perl-uri)))
363 (license (package-license perl))
364 (synopsis "Perl database of robots.txt-derived permissions")
365 (description
366 "The WWW::RobotRules module parses /robots.txt files as specified in
367\"A Standard for Robot Exclusion\", at
368<http://www.robotstxt.org/wc/norobots.html>. Webmasters can use the
369/robots.txt file to forbid conforming robots from accessing parts of
370their web site.")
371 (home-page "http://search.cpan.org/~gaas/WWW-RobotRules/")))
677078b4
AE
372
373(define-public perl-net-http
374 (package
375 (name "perl-net-http")
376 (version "6.06")
377 (source (origin
378 (method url-fetch)
379 (uri (string-append
380 "mirror://cpan/authors/id/G/GA/GAAS/Net-HTTP-"
381 version ".tar.gz"))
382 (sha256
383 (base32
384 "1m1rvniffadq99gsy25298ia3lixwymr6kan64jd3ylyi7nkqkhx"))))
385 (build-system perl-build-system)
386 (license (package-license perl))
387 (synopsis "Perl low-level HTTP connection (client)")
388 (description
389 "The Net::HTTP class is a low-level HTTP client. An instance of the
390Net::HTTP class represents a connection to an HTTP server. The HTTP protocol
391is described in RFC 2616. The Net::HTTP class supports HTTP/1.0 and
392HTTP/1.1.")
393 (home-page "http://search.cpan.org/~gaas/Net-HTTP/")))
56aa03b0
AE
394
395(define-public perl-file-listing
396 (package
397 (name "perl-file-listing")
398 (version "6.04")
399 (source (origin
400 (method url-fetch)
401 (uri (string-append
402 "mirror://cpan/authors/id/G/GA/GAAS/File-Listing-"
403 version ".tar.gz"))
404 (sha256
405 (base32
406 "1xcwjlnxaiwwpn41a5yi6nz95ywh3szq5chdxiwj36kqsvy5000y"))))
407 (build-system perl-build-system)
846972eb 408 (propagated-inputs
56aa03b0
AE
409 `(("perl-http-date" ,perl-http-date)))
410 (license (package-license perl))
411 (synopsis "Perl directory listing parser")
412 (description
413 "The File::Listing module exports a single function called parse_dir(),
414which can be used to parse directory listings.")
415 (home-page "http://search.cpan.org/~gaas/File-Listing/")))
09a8778f
AE
416
417(define-public perl-encode-locale
418 (package
419 (name "perl-encode-locale")
420 (version "1.03")
421 (source (origin
422 (method url-fetch)
423 (uri (string-append
424 "mirror://cpan/authors/id/G/GA/GAAS/Encode-Locale-"
425 version ".tar.gz"))
426 (sha256
427 (base32
428 "0m9d1vdphlyzybgmdanipwd9ndfvyjgk3hzw250r299jjgh3fqzp"))))
429 (build-system perl-build-system)
430 (license (package-license perl))
431 (synopsis "Perl locale encoding determination")
432 (description
433 "The POSIX locale system is used to specify both the language
434conventions requested by the user and the preferred character set to consume
435and output. The Encode::Locale module looks up the charset and encoding
436(called a CODESET in the locale jargon) and arranges for the Encode module
437to know this encoding under the name \"locale\". It means bytes obtained
438from the environment can be converted to Unicode strings by calling
439Encode::encode(locale => $bytes) and converted back again with
440Encode::decode(locale => $string).")
441 (home-page "http://search.cpan.org/~gaas/Encode-Locale/")))
374a9a85
AE
442
443(define-public perl-libwww
444 (package
445 (name "perl-libwww")
446 (version "6.05")
447 (source (origin
448 (method url-fetch)
449 (uri (string-append
450 "mirror://cpan/authors/id/G/GA/GAAS/libwww-perl-"
451 version ".tar.gz"))
452 (sha256
453 (base32
454 "08wgwyz7748pv5cyngxia0xl6nragfnhrp4p9s78xhgfyygpj9bv"))))
455 (build-system perl-build-system)
d42daec0 456 (propagated-inputs
374a9a85
AE
457 `(("perl-encode-locale" ,perl-encode-locale)
458 ("perl-file-listing" ,perl-file-listing)
459 ("perl-html-parser" ,perl-html-parser)
460 ("perl-http-cookies" ,perl-http-cookies)
374a9a85 461 ("perl-http-daemon" ,perl-http-daemon)
374a9a85 462 ("perl-http-negotiate" ,perl-http-negotiate)
374a9a85 463 ("perl-net-http" ,perl-net-http)
374a9a85
AE
464 ("perl-www-robotrules" ,perl-www-robotrules)))
465 (license (package-license perl))
466 (synopsis "Perl modules for the WWW")
467 (description
468 "The libwww-perl collection is a set of Perl modules which provides a
469simple and consistent application programming interface to the
470World-Wide Web. The main focus of the library is to provide classes
471and functions that allow you to write WWW clients. The library also
472contain modules that are of more general use and even classes that
473help you implement simple HTTP servers.")
474 (home-page "http://search.cpan.org/~gaas/libwww-perl/")))
b777d784
JD
475
476(define-public tinyproxy
477 (package
478 (name "tinyproxy")
479 (version "1.8.3")
480 (source (origin
481 (method url-fetch)
482 (uri (string-append
483 "http://www.samba.org/~obnox/" name "/download/" name "-" version ".tar.bz2"))
484 (sha256
485 (base32
486 "0vl9igw7vm924rs6d6bkib7zfclxnlf9s8rmml1sfwj7xda9nmdy"))))
487 (build-system gnu-build-system)
488 (arguments
489 `(#:configure-flags
490 (list
491 ;; For the log file, etc.
492 "--localstatedir=/var")
493 #:phases
494 (alist-cons-before
495 'build 'pre-build
496 (lambda* (#:key inputs #:allow-other-keys #:rest args)
497 ;; This stuff is needed, because without it, xmlint etc tries
498 ;; to download docbookx.dtd and docbook.xsl from the net
499 (let ((build (assoc-ref %standard-phases 'build))
500 (docbook-xml (assoc-ref inputs "docbook-xml"))
501 (docbook-xsl (assoc-ref inputs "docbook-xsl"))
502 (our-catalog "/tmp/docbook-xml.xml"))
503 (setenv "XML_CATALOG_FILES" our-catalog)
504 (with-output-to-file our-catalog
505 (lambda ()
506 (display (string-append
507 "<?xml version=\"1.0\"?>
508<!DOCTYPE catalog PUBLIC \"-//OASIS//DTD XML Catalogs V1.0//EN\"
509\"file:///usr/share/xml/schema/xml-core/catalog.dtd\">
510<catalog xmlns=\"urn:oasis:names:tc:entity:xmlns:xml:catalog\">
511<system systemId=\"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd\"
512uri=\"file://" docbook-xml "/xml/dtd/docbook/docbookx.dtd\"/>
513<system systemId=\"http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl\"
514uri=\"file://" docbook-xsl "/xml/xsl/docbook-xsl-1.72.0/manpages/docbook.xsl\"/>
515</catalog>\n"))))))
516 %standard-phases)))
517 ;; All of the below are used to generate the documentation
518 ;; (Should they be propagated inputs of asciidoc ??)
519 (native-inputs `(("asciidoc" ,asciidoc)
520 ("libxml2" ,libxml2)
521 ("docbook-xml" ,docbook-xml)
522 ("docbook-xsl" ,docbook-xsl)
523 ("libxslt" ,libxslt)))
524 (home-page "https://banu.com/tinyproxy/")
525 (synopsis "Light-weight HTTP/HTTPS proxy daemon")
526 (description "Tinyproxy is a light-weight HTTP/HTTPS proxy
527daemon. Designed from the ground up to be fast and yet small, it is an ideal
528solution for use cases such as embedded deployments where a full featured HTTP
529proxy is required, but the system resources for a larger proxy are
530unavailable.")
531 (license l:gpl2+)))