Currently @command{tofuproxy} uses:
GnuTLS'es @url{https://www.gnutls.org/manual/html_node/certtool-Invocation.html, certtool},
-@url{http://cr.yp.to/redo.html, redo} build system,
@url{https://www.tcl.tk/, Tcl/Tk}'s @command{wish} shell for GUI dialogues,
@command{dwebp}, @command{djxl}, @command{avifdec} for images transcoding,
@url{https://vanheusden.com/multitail/, multitail} for logs viewing.
@itemize
-@item Download and build @command{tofuproxy}:
-
-@example
-$ git clone git://git.stargrave.org/tofuproxy.git
-$ cd tofuproxy
-$ redo all
-@end example
+@item @ref{Install, Download} and build it.
@item
-If build fails because of untrusted @code{ca.cypherpunks.ru} certificate, then:
+Create separate @file{state/} directory, generate @command{tofuproxy}'s
+certificate and create necessary FIFOs by executing @command{state-init}
+helper:
@example
-$ [fetch|wget] http://www.ca.cypherpunks.ru/cert.pem
-$ [fetch|wget] http://www.ca.cypherpunks.ru/cert.pem.asc
-$ gpg --auto-key-locate dane --locate-keys stargrave at stargrave dot org
-$ gpg --auto-key-locate wkd --locate-keys stargrave at gnupg dot net
-$ gpg --verify cert.pem.asc
-$ SSL_CERT_FILE=`pwd`/cert.pem GIT_SSL_CAINFO=`pwd`/cert.pem redo all
+$ mkdir state ; cd state
+$ ../state-init
@end example
@item
-Run @command{tofuproxy} itself. By default it will bind to
+Run @command{tofuproxy} itself then. By default it will bind to
@code{[::1]:8080} and use @code{[::1]:53} DNS server for DANE requests
(set to an empty string to disable DANE lookups):
@example
-$ ./tofuproxy.cmd
+$ ../cmd/tofuproxy/tofuproxy [-ai ecdsa] -unzstd ../cmd/zstd/unzstd
main.go:70: listening: [::1]:8080 dns: [::1]:53 certs: ./certs ccerts: ./ccerts
@end example
@item Watch logs:
@example
-$ ( cd fifos ; ./multitail.sh )
+$ ( cd fifos ; ../../fifos/multitail )
@end example
@image{logs,,,Example logs,.webp}