From 717fe8fae5002c28bb8838da3230adb93ec193c0 Mon Sep 17 00:00:00 2001 From: Sergey Ponomarev Date: Thu, 11 Apr 2024 00:32:12 +0300 Subject: [PATCH] INSTALL.md: reformat Add ./configure step Fix libpcre-dev to libpcre2-dev --- doc/INSTALL.md | 158 +++++++++++++++++++++++-------------------------- 1 file changed, 75 insertions(+), 83 deletions(-) diff --git a/doc/INSTALL.md b/doc/INSTALL.md index ea8020b..f7d411a 100644 --- a/doc/INSTALL.md +++ b/doc/INSTALL.md @@ -7,6 +7,7 @@ available directly from [Github](https://github.com/yrutschle/sslh/pkgs/containe Windows binaries for Cygwin are graciously produced by nono303 on his [repository](https://github.com/nono303/sslh). + Compile and install =================== @@ -15,139 +16,130 @@ Dependencies `sslh` uses: -* [libconfig](http://www.hyperrealm.com/libconfig/). For - Debian this is contained in package `libconfig-dev`. You -can compile with or without it using USELIBCONFIG in the -Makefile. +* [libconfig](http://www.hyperrealm.com/libconfig/). + For Debian this is contained in package `libconfig-dev`. + You can compile with or without it using USELIBCONFIG in the Makefile. * [libwrap](http://packages.debian.org/source/unstable/tcp-wrappers). - For Debian, this is contained in packages -`libwrap0-dev`. You -can compile with or without it using USELIBWRAP in the -Makefile. + For Debian, this is contained in packages `libwrap0-dev`. + You can compile with or without it using USELIBWRAP in the Makefile. -* [libsystemd](http://packages.debian.org/source/unstable/libsystemd-dev), in package `libsystemd-dev`. You -can compile with or without it using USESYSTEMD in the -Makefile. +* [libsystemd](http://packages.debian.org/source/unstable/libsystemd-dev), in package `libsystemd-dev`. + You can compile with or without it using USESYSTEMD in the Makefile. -* [libcap](http://packages.debian.org/source/unstable/libcap-dev), in package `libcap-dev`. You can compile with or without it using USELIBCAP in the Makefile +* [libcap](http://packages.debian.org/source/unstable/libcap-dev), in package `libcap-dev`. + You can compile with or without it using USELIBCAP in the Makefile -* libbsd, to enable to change the process name (as shown in - `ps`, so each forked process shows what protocol and what - connection it is serving), -which requires `libbsd` at runtime, and `libbsd-dev` at -compile-time. +* libbsd, to enable to change the process name (as shown in `ps`, + so each forked process shows what protocol and what connection it is serving), + which requires `libbsd` at runtime, and `libbsd-dev` at compile-time. -* libpcre2, in package `libpcre-dev`. You can compile - with or without it using ENABLE_REGEX in the Makefile. +* libpcre2, in package `libpcre2-dev`. + You can compile with or without it using ENABLE_REGEX in the Makefile. -* libev-dev, in package `libev-dev`. If you build a binary - specifically and do not build `sslh-ev`, you don't need - this. +* libev-dev, in package `libev-dev`. + If you build a binary specifically and do not build `sslh-ev`, you don't need this. For OpenSUSE, these are contained in packages libconfig9 and libconfig-dev in repository -For Fedora, you'll need packages `libconfig` and -`libconfig-devel`: +For Fedora, you'll need packages `libconfig` and `libconfig-devel`: - yum install libconfig libconfig-devel + yum install libconfig libconfig-devel -If you want to rebuild `sslh-conf.c` (after a `make -distclean` for example), you will also need to add -[conf2struct](https://www.rutschle.net/tech/conf2struct/README.html) +If you want to rebuild `sslh-conf.c` (after a `make distclean` for example), +you will also need to add [conf2struct](https://www.rutschle.net/tech/conf2struct/README.html) (v1.5) to your path. - The test scripts are written in Perl, and will require -IO::Socket::INET6 (libio-socket-inet6-perl in Debian). +`IO::Socket::INET6` (`libio-socket-inet6-perl` in Debian). + Compilation ----------- After this, the Makefile should work: - make install + make install -There are a couple of configuration options at the beginning -of the Makefile: +There are a couple of configuration options at the beginning of the Makefile: -* `USELIBWRAP` compiles support for host access control (see - `hosts_access(3)`), you will need `libwrap` headers and - library to compile (`libwrap0-dev` in Debian). +* `USELIBWRAP` compiles support for host access control (see `hosts_access(3)`), + you will need `libwrap` headers and library to compile (`libwrap0-dev` in Debian). -* `USELIBCONFIG` compiles support for the configuration - file. You will need `libconfig` headers to compile - (`libconfig8-dev` in Debian). +* `USELIBCONFIG` compiles support for the configuration file. + You will need `libconfig` headers to compile (`libconfig8-dev` in Debian). -* `USESYSTEMD` compiles support for using systemd socket activation. - You will need `systemd` headers to compile (`systemd-devel` in Fedora). +* `USESYSTEMD` compiles support for using systemd socket activation. + You will need `systemd` headers to compile (`systemd-devel` in Fedora). + +* `USELIBBSD` compiles support for updating the process name (as shown by `ps`). -* `USELIBBSD` compiles support for updating the process name (as shown - by `ps`). Generating the configuration parser ----------------------------------- -The configuration file and command line parser is generated -by `conf2struct`, from `sslhconf.cfg`, which generates -`sslh-conf.c` and `sslh-conf.h`. The resulting files are -included in the source so `sslh` can be built without -`conf2struct` installed. +The configuration file and command line parser is generated by `conf2struct`, +from `sslhconf.cfg`, which generates `sslh-conf.c` and `sslh-conf.h`. +The resulting files are included in the source +so `sslh` can be built without `conf2struct` installed. + +Further, to prevent build issues, +`sslh-conf.[ch]` has no dependency to `sslhconf.cfg` in the Makefile. +In the event of adding configuration settings, +they need to be regenerated using `make c2s`. -Further, to prevent build issues, `sslh-conf.[ch]` has no -dependency to `sslhconf.cfg` in the Makefile. In the event -of adding configuration settings, they need to be -regenerated using `make c2s`. Binaries -------- -The Makefile produces three different executables: `sslh-fork`, -`sslh-select` and `sslh-ev`: +The Makefile produces three different executables: +`sslh-fork`, `sslh-select` and `sslh-ev`: * `sslh-fork` forks a new process for each incoming connection. -It is well-tested and very reliable, but incurs the overhead -of many processes. -If you are going to use `sslh` for a "small" setup (less than -a dozen ssh connections and a low-traffic https server) then -`sslh-fork` is probably more suited for you. + It is well-tested and very reliable, but incurs the overhead of many processes. + If you are going to use `sslh` for a "small" setup + (less than a dozen ssh connections and a low-traffic https server) + then `sslh-fork` is probably more suited for you. -* `sslh-select` uses only one thread, which monitors all - connections at once. It only incurs a 16 byte overhead per -connection. Also, if it stops, you'll lose all connections, -which means you can't upgrade it remotely. If you are going -to use `sslh` on a "medium" setup (a few hundreds of -connections), or if you are on a system where forking is -expensive (e.g. Windows), `sslh-select` will be better. +* `sslh-select` uses only one thread, which monitors all connections at once. + It only incurs a 16 byte overhead per connection. + Also, if it stops, you'll lose all connections, + which means you can't upgrade it remotely. + If you are going to use `sslh` on a "medium" setup (a few hundreds of connections), + or if you are on a system where forking is expensive (e.g. Windows), + `sslh-select` will be better. + +* `sslh-ev` is similar to `sslh-select`, but uses `libev` as a backend. + This allows using specific kernel APIs that + allow to manage thousands of connections concurrently. -* `sslh-ev` is similar to `sslh-select`, but uses `libev` as - a backend. This allows using specific kernel APIs that -allow to manage thousands of connections concurrently. Installation ------------ * In general: - - make - cp sslh-fork /usr/local/sbin/sslh - cp basic.cfg /etc/sslh.cfg - vi /etc/sslh.cfg - + ```sh + ./configure + make + cp sslh-fork /usr/local/sbin/sslh + cp basic.cfg /etc/sslh.cfg + vi /etc/sslh.cfg + ``` * For Debian: - - cp scripts/etc.init.d.sslh /etc/init.d/sslh - + ```sh + cp scripts/etc.init.d.sslh /etc/init.d/sslh + ``` * For CentOS: - - cp scripts/etc.rc.d.init.d.sslh.centos /etc/rc.d/init.d/sslh - + ```sh + cp scripts/etc.rc.d.init.d.sslh.centos /etc/rc.d/init.d/sslh + ``` You might need to create links in /etc/rc.d so that the server start automatically at boot-up, e.g. under Debian: - - update-rc.d sslh defaults +```sh +update-rc.d sslh defaults +```