summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.gitignore7
-rw-r--r--Makefile48
-rw-r--r--README.729
-rwxr-xr-xconfigure43
4 files changed, 58 insertions, 69 deletions
diff --git a/.gitignore b/.gitignore
index 9d34433..6c8280c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,10 +1,9 @@
+*.1.gz
 *.conf
 *.o
-/calico
-/pounce
+calico
 config.mk
 localhost.crt
 localhost.key
-rc.d/calico
-rc.d/pounce
+pounce
 tags
diff --git a/Makefile b/Makefile
index d992548..0f6a8d8 100644
--- a/Makefile
+++ b/Makefile
@@ -1,15 +1,19 @@
-PREFIX = /usr/local
-MANDIR = ${PREFIX}/share/man
-ETCDIR = ${PREFIX}/etc
-RUNDIR = /var/run
+PREFIX ?= /usr/local
+MANDIR ?= ${PREFIX}/share/man
+ETCDIR ?= ${PREFIX}/etc
+RUNDIR ?= /var/run
+
+CFLAGS += -I${PREFIX}/include
+LDFLAGS += -L${PREFIX}/lib
 
 CFLAGS += -std=c11 -Wall -Wextra -Wpedantic
-LDLIBS = -lcrypt -lcrypto -ltls
+LDLIBS = -lcrypt -ltls
 
 BINS = calico pounce
-MANS = ${BINS:=.1}
+MANS = ${BINS:=.1.gz}
 RCS  = ${BINS:%=rc.d/%}
 DIRS = ${ETCDIR}/pounce ${RUNDIR}/calico
+INSTALLS = install-rcs install-dirs
 
 -include config.mk
 
@@ -35,7 +39,10 @@ ${OBJS}: bounce.h compat.h
 
 dispatch.o: compat.h
 
-.SUFFIXES: .in
+.SUFFIXES: .1 .1.gz .in
+
+.1.1.gz:
+	gzip -cn $< > $@
 
 .in:
 	sed -e 's|%%PREFIX%%|${PREFIX}|g' $< > $@
@@ -44,21 +51,24 @@ tags: *.c *.h
 	ctags -w *.c *.h
 
 clean:
-	rm -f tags ${BINS} ${RCS} ${OBJS} dispatch.o
+	rm -f tags ${BINS} ${MANS} ${RCS} ${OBJS} dispatch.o
+
+install: ${BINS} ${MANS} ${INSTALLS}
+	install -d ${DESTDIR}${PREFIX}/bin ${DESTDIR}${MANDIR}/man1
+	install ${BINS} ${DESTDIR}${PREFIX}/bin
+	install -m 644 ${MANS} ${DESTDIR}${MANDIR}/man1
+
+install-rcs: ${RCS}
+	install -d ${DESTDIR}${ETCDIR}/rc.d
+	install ${RCS} ${DESTDIR}${ETCDIR}/rc.d
 
-install: ${BINS} ${MANS} ${RCS}
-	install -d ${PREFIX}/bin ${MANDIR}/man1
-	install ${BINS} ${PREFIX}/bin
-	install -m 644 ${MANS} ${MANDIR}/man1
-	if [ -n '${RCS}' ]; then install -d ${ETCDIR}/rc.d; fi
-	if [ -n '${RCS}' ]; then install ${RCS} ${ETCDIR}/rc.d; fi
-	if [ -n '${DIRS}' ]; then install -d ${DIRS}; fi
+install-dirs:
+	install -d ${DIRS:%=${DESTDIR}%}
 
 uninstall:
-	rm -f ${BINS:%=${PREFIX}/bin/%}
-	rm -f ${MANS:%=${MANDIR}/man1/%}
-	if [ -n '${RCS}' ]; then rm -f ${RCS:%=${ETCDIR}/%}; fi
-	if [ -n '${DIRS}' ]; then rmdir ${DIRS}; fi
+	rm -f ${BINS:%=${DESTDIR}${PREFIX}/bin/%}
+	rm -f ${MANS:%=${DESTDIR}${MANDIR}/man1/%}
+	rm -f ${RCS:%=${DESTDIR}${ETCDIR}/%}
 
 localhost.crt:
 	printf "[dn]\nCN=localhost\n[req]\ndistinguished_name=dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth" \
diff --git a/README.7 b/README.7
index d14aef2..d15c34a 100644
--- a/README.7
+++ b/README.7
@@ -1,4 +1,4 @@
-.Dd May 18, 2020
+.Dd May 19, 2020
 .Dt README 7
 .Os "Causal Agency"
 .
@@ -46,29 +46,28 @@ requires LibreSSL
 .Pq Fl ltls
 and primarily targets
 .Fx ,
-as well as macOS and Linux.
-On
-.Fx ,
-processes are sandboxed with
+where it is sandboxed with
 .Xr capsicum 4 .
-On other systems,
-who knows what might happen?
-.
 .Bd -literal -offset indent
-\&./configure
 make all
 sudo make install PREFIX=/usr/local
 .Ed
 .
 .Pp
-If your system installs LibreSSL
-in a non-standard path, set
+On other systems,
+such as macOS and Linux,
+the build is configured using
+.Xr pkg-config 1 .
+If LibreSSL is installed
+in a non-standard prefix,
+set
 .Ev PKG_CONFIG_PATH
-for
-.Nm ./configure .
-For example,
+appropriately.
+For example:
 .Bd -literal -offset indent
 PKG_CONFIG_PATH=/opt/libressl/lib/pkgconfig ./configure
+make all
+sudo make install PREFIX=/usr/local
 .Ed
 .
 .Sh FILES
@@ -93,7 +92,7 @@ configuration parsing
 .It Pa dispatch.c
 SNI socket dispatch
 .It Pa compat.h
-compatibility with lesser operating systems
+compatibility with other systems
 .It Pa rc.d/
 .Fx
 .Xr rc 8
diff --git a/configure b/configure
index 2936780..96224d0 100755
--- a/configure
+++ b/configure
@@ -3,43 +3,24 @@ set -eu
 
 base='-lcrypt'
 libs='libcrypto libtls'
+[ "$(uname)" = 'Darwin' ] && base=
 
 exec >config.mk
 
-case "$(uname)" in
-	(Darwin)
-		base=''
-		;;
-	(FreeBSD)
-		if ! pkg info -e libressl; then
-			echo 'LibreSSL required' >&2
-			exit 1
-		fi
-		prefix=$(pkg query '%p' libressl)
-		cat <<-EOF
-		MANDIR = \${PREFIX}/man
-		CFLAGS += -I${prefix}/include
-		CFLAGS += -D'OPENSSL_BIN="${prefix}/bin/openssl"'
-		LDFLAGS += -L${prefix}/lib
-		EOF
-		exit
-		;;
-	(Linux)
-		cat <<-EOF
-		CFLAGS += -D_GNU_SOURCE
-		CFLAGS += -D'CERTBOT_PATH="/etc/letsencrypt"'
-		LDLIBS.calico = \${LDLIBS}
-		RCS =
-		DIRS =
-		EOF
-		;;
-esac
-
 pkg-config --print-errors $libs
 
 cat <<EOF
 CFLAGS += $(pkg-config --cflags $libs)
-CFLAGS += -D'OPENSSL_BIN="$(pkg-config --variable=prefix openssl)/bin/openssl"'
 LDFLAGS += $(pkg-config --libs-only-L $libs)
-LDLIBS = $base $(pkg-config --libs-only-l $libs)
+LDLIBS = ${base} $(pkg-config --libs-only-l $libs)
+CFLAGS += -D'OPENSSL_BIN="$(pkg-config --variable=exec_prefix openssl)/bin/openssl"'
+CFLAGS += -D'CERTBOT_PATH="/etc/letsencrypt"'
+INSTALLS =
 EOF
+
+if [ "$(uname)" = 'Linux' ]; then
+	cat <<-EOF
+	CFLAGS += -D_GNU_SOURCE
+	LDLIBS.calico = \${LDLIBS}
+	EOF
+fi
olve HTML5 validation errorsChris Mayo - Remove ids from anchor elements. They were unusable because they were duplicated between files and versions of files. - Always close span, with html(). - Fix missing / on closing tr element in cgit_ssdiff_header_end(). Signed-off-by: Chris Mayo <aklhfex@gmail.com> 2019-01-03filters: migrate from luacrypto to luaosslJason A. Donenfeld luaossl has no upstream anymore and doesn't support OpenSSL 1.1, whereas luaossl is quite active. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> 2019-01-02ui-shared: fix broken sizeof in title setting and rewriteJason A. Donenfeld The old algorithm was totally incorrect. While we're at it, use « instead of \, since it makes more sense. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> 2018-12-09git: update to v2.20.0Christian Hesse Update to git version v2.20.0. Required changes follow upstream commits: * 00436bf1b1c2a8fe6cf5d2c2457d419d683042f4 (archive: initialize archivers earlier) * 611e42a5980a3a9f8bb3b1b49c1abde63c7a191e (xdiff: provide a separate emit callback for hunks) Signed-off-by: Christian Hesse <mail@eworm.de> 2018-11-25ui-blame: set repo for sbJason A. Donenfeld Otherwise recent git complains and crashes with: "BUG: blame.c:1787: repo is NULL". Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> 2018-11-25auth-filter: pass url with query string attachedJason A. Donenfeld Otherwise redirections come out wrong. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> 2018-11-21git: use xz compressed archive for downloadChristian Hesse Upstream will stop providing gz compressed source tarballs [0], so stop using them. [0] https://lists.zx2c4.com/pipermail/cgit/2018-November/004254.html Signed-off-by: Christian Hesse <mail@eworm.de> 2018-10-12git: update to v2.19.1Christian Hesse Update to git version v2.19.1. Required changes follow upstream commits: * commit: add repository argument to get_cached_commit_buffer (3ce85f7e5a41116145179f0fae2ce6d86558d099) * commit: add repository argument to lookup_commit_reference (2122f6754c93be8f02bfb5704ed96c88fc9837a8) * object: add repository argument to parse_object (109cd76dd3467bd05f8d2145b857006649741d5c) * tag: add repository argument to deref_tag (a74093da5ed601a09fa158e5ba6f6f14c1142a3e) * tag: add repository argument to lookup_tag (ce71efb713f97f476a2d2ab541a0c73f684a5db3) * tree: add repository argument to lookup_tree (f86bcc7b2ce6cad68ba1a48a528e380c6126705e) * archive.c: avoid access to the_index (b612ee202a48f129f81f8f6a5af6cf71d1a9caef) * for_each_*_object: move declarations to object-store.h (0889aae1cd18c1804ba01c1a4229e516dfb9fe9b) Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11ui-ssdiff: ban strcat()Christian Hesse Git upstream bans strcat() with commit: banned.h: mark strcat() as banned 1b11b64b815db62f93a04242e4aed5687a448748 Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11ui-ssdiff: ban strncpy()Christian Hesse Git upstream bans strncpy() with commit: banned.h: mark strncpy() as banned e488b7aba743d23b830d239dcc33d9ca0745a9ad Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11ui-shared: ban strcat()Christian Hesse Git upstream bans strcat() with commit: banned.h: mark strcat() as banned 1b11b64b815db62f93a04242e4aed5687a448748 To avoid compiler warnings from gcc 8.1.x we get the hard way. Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11ui-patch: ban sprintf()Christian Hesse Git upstream bans sprintf() with commit: banned.h: mark sprintf() as banned cc8fdaee1eeaf05d8dd55ff11f111b815f673c58 Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11ui-log: ban strncpy()Christian Hesse Git upstream bans strncpy() with commit: banned.h: mark strncpy() as banned e488b7aba743d23b830d239dcc33d9ca0745a9ad Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11ui-log: ban strcpy()Christian Hesse Git upstream bans strcpy() with commit: automatically ban strcpy() c8af66ab8ad7cd78557f0f9f5ef6a52fd46ee6dd Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11parsing: ban sprintf()Christian Hesse Git upstream bans sprintf() with commit: banned.h: mark sprintf() as banned cc8fdaee1eeaf05d8dd55ff11f111b815f673c58 Signed-off-by: Christian Hesse <mail@eworm.de> 2018-09-11parsing: ban strncpy()Christian Hesse Git upstream bans strncpy() with commit: banned.h: mark strncpy() as banned e488b7aba743d23b830d239dcc33d9ca0745a9ad Signed-off-by: Christian Hesse <mail@eworm.de> 2018-08-28filters: generate anchor links from markdownChristian Hesse This makes the markdown filter generate anchor links for headings. Signed-off-by: Christian Hesse <mail@eworm.de> Tested-by: jean-christophe manciot <actionmystique@gmail.com> 2018-08-03Bump version.Jason A. Donenfeld Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> 2018-08-03clone: fix directory traversalJason A. Donenfeld This was introduced in the initial version of this code, way back when in 2008. $ curl http://127.0.0.1/cgit/repo/objects/?path=../../../../../../../../../etc/passwd root:x:0:0:root:/root:/bin/sh ... Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Reported-by: Jann Horn <jannh@google.com> 2018-08-03config: record repo.snapshot-prefix in the per-repo configKonstantin Ryabitsev