summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Bakke <marius@devup.no>2020-05-19 14:51:06 +0200
committerMarius Bakke <mbakke@fastmail.com>2020-05-19 15:28:51 +0200
commit273380fda2889e5ba4e7fba28b5b104306872c69 (patch)
treeee4ef5900d64f808e0b60c9a333625913670b3d9
parentc5a2b70135c9830e9c3051ddf4a096f9a80eb952 (diff)
gnu: Add hitch.
* gnu/packages/web.scm (hitch): New public variable.
-rw-r--r--gnu/packages/web.scm55
1 files changed, 55 insertions, 0 deletions
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 5b18f84ac3..3be0da69f8 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -123,6 +123,7 @@
#:use-module (gnu packages libunwind)
#:use-module (gnu packages linux)
#:use-module (gnu packages lisp-xyz)
+ #:use-module (gnu packages lsof)
#:use-module (gnu packages lua)
#:use-module (gnu packages markup)
#:use-module (gnu packages ncurses)
@@ -5468,6 +5469,60 @@ HTTP statistics for system administrators that require a visual server report
on the fly.")
(license license:x11)))
+(define-public hitch
+ (package
+ (name "hitch")
+ (version "1.5.2")
+ (home-page "https://hitch-tls.org/")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append home-page "source/hitch-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1nnzqqigfw78nqhp81a72x1s8d6v49ayw4w5df0zzm2cb1jgv95i"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (add-before 'check 'pre-check
+ (lambda _
+ ;; Most tests attempts to access hitch-tls.org which is
+ ;; unavailable in the build container. Run them against
+ ;; a dummy local web server instead.
+ (for-each (lambda (test)
+ (substitute* test
+ (("\\[hitch-tls\\.org\\]:80")
+ "[localhost]:8000")))
+ (find-files "src/tests" "\\.sh$"))
+ (system "python3 -m http.server &")
+
+ ;; The build container does not reap zombie processes,
+ ;; causing stop_hitch to hang indefinitely while waiting
+ ;; for the process to terminate because 'kill -0' never
+ ;; succeeds. Use a different test to see whether the
+ ;; process has shut down.
+ (substitute* "src/tests/hitch_test.sh"
+ (("kill -0 \"\\$HITCH_PID\"")
+ "$(ps -p $HITCH_PID -o state= | grep -qv '^Z$')"))
+ #t)))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+
+ ;; For tests.
+ ("curl" ,curl)
+ ("egrep" ,grep)
+ ("lsof" ,lsof)
+ ("python" ,python)))
+ (inputs
+ `(("libev" ,libev)
+ ("openssl" ,openssl)))
+ (synopsis "Scalable TLS proxy")
+ (description
+ "Hitch is a performant TLS proxy based on @code{libev}. It terminates
+SSL/TLS connections and forwards the unencrypted traffic to a backend such
+as a web server. It is designed to handle many thousand connections on
+multicore machines.")
+ (license license:bsd-2)))
+
(define-public httptunnel
(package
(name "httptunnel")