Projects
This page lists most of the Free Software projects I ever worked on. Some of them where created by me, in others I am just one of the many people who develop them. Some are being actively developed, others have reached a state where further modifications are seldom or not at all required, yet others were discontinued.
To facilitate navigating in this list, projects are categorized by their purpose, authorship, and current state. Each project entry lists the categories it pertains to. Clicking on a category name will bring a listing of all projects in that category.
Additionally, a list of related projects is provided where applicable. Each element in that list is a link to the corresponding project entry.
Clicking on a project's name will bring this project's entry as a separate page (a permalink).
Hovering your mouse over the version information of a project shows the list of changes introduced by that version.
Sort controls below allow you to order the list either lexicographically or by the most recent release date, in both directions.
Using the Search control, you can select projects by name. Shell-style globbing patterns (wildcards) are accepted.
apout
It is a modification of the PDP-11 emulator originally written by Warren Toomey, that allows to run binaries from the earliest UNIX distributions.
haproxy-bulkredirect
Lua library for handling big amounts of redirect rules in HAProxy.
mansrv
Formats and returns the requested manpage as HTML. This CGI is specifically designed to help display on-line the documentation in manpage formats for multiple software projects without the need to install these manpages somewhere in the system MANPATH. This is necessary for software forge sites that host a number of projects, such as Puszcza.
runasimi
A web page offering various resources for learning Quechua, a language spoken in the Andes.
varnishsnmp
A MIB for monitoring and remote management of Varnish Cache.
webtools
A collection of various web-related programs, mostly proof-of-concept ones.
paxutils
Paxutils is intended to provide a set of archiver programs. It will include tar
and cpio
utilities and will provide POSIX pax
program.
gamma
GAMMA stands for a Guile Archive of Multiple Modules with an A just for the ‘A’ of it. It contains a set of useful Guile modules. In particular, it is used by runasimi.org and ellinika.gnu.org.ua.
mangemanche
A modular remote management system for Ping903. Allows the user to inspect configuration of the running server, add or remove IP addresses, synchronize the monitored IP list with the Nagios configuration or an SQL database etc.
xmltools
A set of Guile primitives for parsing and processing XML files.
imprimatur
Imprimatur provides Texinfo macros for various editing tasks such as adding editor notes and annotations, as well as Makeinfo rules for verifying Texinfo document structure, format, and (to a certain extent) content coverage.
mockmta
A simplistic implementation of the SMTP mail transport agent, designed for testing purposes. It behaves almost identically to any real MTA, except that it listens on localhost only and delivers all messages to the given UNIX mailbox file.
grecs
Grecs is a library for parsing structured configuration files from C programs. A structured configuration file has hierarchical structure, with block statements enclosing lower-level statements. Such configurations files are used by many programs, such as, e.g. Bind or Dico.
wit
A wiki translator, a package that supplies Python classes for translating Wiki Markup into another kind of markup, such as, e.g. plain text and HTML. It has been superseded by wikitrans
.
extrans
This is a modified versions of Romuald Texier’s eXtrans. It was used as the underlying mechanism for Ellinika and Runasimi at early stages of their development, before switching to xmltools.
slackdesc
Formats a slack-desc file for Slackware package.
m4kwargs
Macro package that implements keyword arguments for m4 macros. A keyword argument consists of keyword name and value, separated with a single equals sign. Example of a macro call with single positional and two keyword arguments:
INCR(10, delta=4, sign=neg)
acvmod
A framework for creating loadable modules for Varnish Cache (vmods). It provides a set of macros and templates for configuring the module using GNU autotools and includes several auxiliary tools for creating GNU-style ChangeLog, testsuite, etc.
gnulib
Gnulib is a central location for common GNU code, which is shared among many GNU (and non-GNU) packages.
gcide
GNU Collaborative International Dictionary of English, a free dictionary based on Webster’s Revised Unabridged Dictionary Version (published 1913) with additions from WordNet, proof-read and supplemented by volunteers from around the world.
slowo
SÅ‚owo (the Polish for a word) is a lexical and grammatical analyzer for Polish language.
lua-idna
Lua library that provides support for punicode (RFC 3492) and IDNA (RFC 3490).
slogin
A replacement for /bin/login
, intended to be used in system start-up script wherever the root maintenance is needed. It does not update utmp/wtmp and hence is safe to be called when the partition containig these files is not mounted.
wordsplit
This package provides a set of C functions for parsing input strings. Default parsing rules are are similar to those used in Bourne shell. This includes tilde expansion, variable expansion, quote removal, word splitting, command substitution, and path expansion. Parsing is controlled by a number of settings which allow the caller to alter processing at each of these phases or even to disable any of them. Thus, wordsplit can be used for parsing inputs in different formats, from simple character-delimited entries, as in /etc/passwd
, and up to complex shell statements.
gint
GINT provides a framework for easy integration of Guile into arbitrary software projects. It includes Autoconf macros for detecting the presence of Guile on the system, detecting its version number and location of its components, a set of Makefile and Automake rules for snarfing C sources, i.e. generating auxiliary files (.x
files, containing symbol information for Guile interpreter, and .doc
files, containing information about Guile primitives, their arguments and docstrings), and a C lexer program for extracting docstrings from a C file.
gsc
This project is decommissioned. It’s repository is retained as a historic reference only.
runcap
A C module providing an API for running external command and capturing its output.
The function runcap
runs an external command and waits for its termination, capturing its stdout and/or stderr and optionally piping the supplied data to its stdin.
mix
* Licensed under GPLv3 or later. * mixal ** Location of listing file By default, mixal creates listing file in the current working directory. * mixsim ** The .mixsim file When started in terminal mode, the utility searches for file `.mixsim' in the current working directory and reads it, if present. The file may contain any mixsim commands. ** The set of terminal commands is improved to make it compatible with GDB. ** New command, PASSCOUNT Set the number of crossings after whcih to clear the breakpoint. ** Removed optional second argument to BREAK. The functionality of `BREAK <ADDR> <COUNT>' is now obtained by two commands: BREAK <ADDR> PASSCOUNT <N> <COUNT> ** New command DELETE. An alias to CLEAR. ** New command IGNORE Sets the number of hits to ignore before enabling the breakpoint. ** New commands ENABLE and DISABLE Enable or disable the breakpoint with the given number. ** New command RUN It is an alias for GO. ** New command SOURCE Execute a file of mixsim commands. ** New command ADDRESS. This command takes as its argument a breakpoint manipulation command (DELETE, IGNORE, ENABLE, DISABLE, PASSCOUNT) with arguments appropriate for the associated command. However, the first argument of the corresponding command is treated as MIX address, instead of a breakpoint number. ** New command INFO. An alias to LIST. ** New command SHELL. Executes a subordinate shell or a shell command. Abbreviated to !. ** NEXT and STEP take optional argument. The argument, if given, specifies number of instructions to execute. Default is 1. ** INFO BREAK takes an optional argument specifying breakpoint number to list. If prefixed with ADDRESS, it treats the argument as a MIX location and lists all breakpoints set on that location.
MIX is a set of tools for assembling, running and debugging programs, written in MIXAL, an assembly language for an imaginary computer, MIX, used in The Art of Computer Programming of D. Knuth.
radius
* Configuration file raddb/config The syslog statement takes an optional 4th argument specifying syslog tag to use, e.g.: channel default { syslog local1.info radiusd; }; * New attributes ** GNU-Server-Address Holds IP address of the RADIUS server that recieved the request. Notice, that the value of this attribute is "0.0.0.0" if there are no `listen' statement in your `raddb/config'. ** GNU-Server-Port Holds UDP port number of the RADIUS server that recieved the request. * Automake function AM_GNU_RADIUS is provided, for checking if GNU Radius is installed from configure.ac scripts. * Guile support requires Gule version 1.8 or later. * Bugfixes ** Pass NAS-IP-Address to mlc_stop_query
GNU Radius is an extensible and scalable authentication and accounting server.
grot
Initial release.
Grot rotates MySQL binary log files on replication master server. It works by first determining what slaves are connected to the server. Then it connects to each slave and determines what master log file it currently uses. Finally, it removes those logs on master that are older than the oldest of logs used by slaves.
joh
* Use IPv6 URLs as proposed by RFC 2732 The address part of an IPv6 URL must be either an IPv6 address in numeric notation *enclosed in square brackets* or a host name, e.g.: inet6://[::1]:1100
A Jabber Over HTTP tunnel. It enables access to Jabber servers from behind firewalls which do not allow outgoing sockets on port 5222.
nssync
First actual release.
The nssync utility converts DNS records kept in SQL tables of arbitrary format to BIND zone files.
slb
* Support SNMPv3 * Default SNMP version is 2c * Use newer Grecs * Drop unneeded dependencies * Variable assignments in expressions * Detection of SNMP counter overflows * Comma operator * Support for indexed MIBs This feature allows you to use symbolic names instead of the fixed MIBs for MIBs that are part of SNMP subtrees. For example, to get number of packets sent over eth0 into variable "out", you would do the following: table iftable IF-MIB::ifDescr; variable out "IF-MIB::ifOutUcastPkts.$iftable[eth1]"; The first statement converts the subtree into a "table" named "iftable". The second statement references an entry in this table that has the value "eth1". For example, if the SNMP tree has the following MIB IF-MIB::ifDescr.10: eth0 then the expression "$iftable[eth]" yields "10" * Assertion syntax changed. The assertion statement takes a single argument, which must be a string consisting of the following three parts: <oid: string> [!]<opcode>[/i] <value: string> The <opcode> part can be either an arithmetical operator (=, <, <=, >, >=), or any of the following string operators: eq string equality ne string inequality prefix oid value must begin with <value> suffix oid value must end with <value> glob <value> is a glob(7) pattern that oid value must match Each of these can be suffixed with "/i" to request case-insensitive comparison. A "!" in front of opcode reverts its meaning. The <value> part must not include the type prefix.
A simple load balancer. The utility monitors a set of remote servers, obtaining a set of numeric values via SNMP. These values are used to compute a single floating-point number, called a relative load for that server. The servers are then sorted in order of increasing loads and the resulting table is output (using a configurable format string) to a file or pipe.
kbdlock
* The program is installed in /usr/bin Prior versions went to /usr/sbin, you will need to remove them manually. * Print /etc/issue before the prompt * Sleep after incorrect password is input * New options: -i (--issue), -s (--sleep), -c (--clear) * Add a manpage * Improve error checking and reporting
A simple console locker program for GNU/Linux systems.
beam
* Fix threshold calculation in the cleaner module. * Refuse to start if another copy is already running.
A suite of backup programs written in a reasonably portable shell language with the purpose of making backup process as easy as possible. The name is an acronym for “Backup Easy And Manageable”.
inetutils
* ftp An old inability to allow other names than the canonical name has been corrected. This means that a machine entry in the .netrc file will now be used as expected. Previously any alias name was replaced by the corresponding canonical name, before reading the .netrc file. The internal command `hash' accepts a suffixed letter to the size argument, like `12k', instead of 12288. Made a minor change to the syntax of the command itself, allowing size changes independently of activation of hash markings. After a transfer the summary gives the speed as `Mbytes/s', `kbytes/s', or `bytes/s'. The .netrc file can be overridden by the environment variable NETRC. Of even higher precedence is the new option `-N/--netrc'. The access to the resulting file, whatever method, is now denied unless it is a regular file. * ifconfig Better command line parsing on BSD and Solaris systems. Touch only changeable flags on all systems. * logger The ability to use numerical facilities is restored to full range. * ping, ping6 The ability to specify a pattern as payload is corrected. * syslogd A new switch `-T/--local-time' makes the service ignore a time stamp passed on by the remote host, recording instead the local time at the moment the message was received. As a short form of `--pidfile', the switch `-P' is new. In common with other syslogd implementations, rsyslogd and sysklogd, there has for a long time existed an attack vector based on large facility numbers, made public in CVE-2014-3684. This is now mended in our code base. * telnetd The ability to autologin a client, without using authentication, is now functional in the expected manner, i.e., the prompt for a user name is suppressed in favour of an immediate password prompt. In a setting where the client is using a UTF-8 encoding, it was common to observe strange characters in most responses. This was caused by the server daemon, due to incomplete purging of internal protocol data. The issue should now be resolved. * whois Improved cooperation with servers like `whois.arin.net', `whois.eu', and `whois.ripe.net'.
Inetutils, or GNU Internet Utilities, are the basic internet utilities of the GNU Operating System.
idest
* Convert textual frames to/from the currently used character set The character set is deduced from the locale settings. It can also be set explicitly using the --charset option. * New option --broken-8bit-encoding Use this option for files where textual frames are stored as ISO-8859-1, but are actually using another 8-bit encoding. The argument to this option is the name of the enchoding actually used. In query mode, this option helps display such frames properly. Use it with the --fixup option to fix such frames in the file. * New option --encoding Specifies encoding to store textual frames in ID3 tags. * New option --fixup Modifies the ID3 v2 tag so that it can be understood by most devices. * The --convert option can be used to remove unnecessary ID3 formats. For example, if the file input.mp3 contains both version 1 and 2 tags, the following will remove version 1 tags: idest --convert=2 input.mp3 * Fix processing of unknown frames. * Fix operation of setpic and pic modules with Guile 2.x. * Improve documentation
Idest is an ID3 Edit and Scripting Tool, a command line utility for manipulating ID3 tags. The utility allows to create new tags, to view, modify or delete the existing ones. It also provides a flexible scripting capability.
jumper
* Implement heartbeat event * Add auxiliary program: ifactive * Fix file descriptor leak
Jumper monitors network interfaces for certain kinds of traffic and starts preconfigured external programs when such traffic is detected. It is designed mainly to bring up network links (such as VPN and the like) on demand.
releaselogparser
Convert byte-like objects to UTF-8 strings.
Software packages usually include textual files describing noteworthy changes in each subsequent release. There exist several formats of such files. This package provides Python framework for parsing the most often used formats of such release log files. Support for any new format can be easily added.
sargon
A Docker authorization plugin that controls container creation. It enables the administrator to excercise control over the containers that users are allowed to create and decide whether to permit creation of privileged containers, what parts of the host file system can be visible to containers via bind or volume mechanism, what memory limits to apply, etc.
varnish-mib
Rewrite as a stand-alone snmpd agent.
Dynamically loadable object module for net-snmp snmpd that provides access to Varnish Cache statistics.
swu
Initial release.
Displays the amount of swap space used by each running program. The utility is Linux-specific.
addts
Initial release.
UNIX filter for marking each line of input with the timestamp (useful with Apache ForensicLog).
mbar
Initial release.
A flexible mailbox archiver program based on GNU mailutils.
mbar scans the given mailbox folder for mailboxes matching a supplied pattern. For each mailbox found, a set of criteria is applied to its messages. All messages that matched the criteria are then picked and moved to the mailbox of the same name, located in the backup folder. If the destination mailbox doesn’t exist, it is created with the necessary intermediate directories.
certmon
Initial release.
A tool for monitoring the expiration times of remote SSL certificates via HTTPS. Can be used either as a Nagios plugin or as a standalone tool.
mysqlstat
* Minor fixes in mysqlstat-setup * Provide default values for NULL columns
NetSNMP module that provides access to process list statistics and replication status of the mysqld server.
vmod-dict
* Drop support for Varnish versions prior to 6.0.0
This module for Varnish Cache adds to it the ability to look up values in a textual dictionary. A dictionary is a disk file containing on each line a keyword-value pair, separated by arbitrary amount of whitespace. Leading and trailing whitespace is ignored. Empty lines and comments (beginning with ‘#’ as the first non-whitespace character) are allowed. Two functions are provided: dict.load loads the dictionary from a disk file into hash table, and dict.lookup retrieves value for a given key.
wydawca
Fix handling of archivation requests.
An automatic release submission daemon. It implements the GNU automatic upload procedure, and supports upload directive files of version 1.2.
cfpeek
* New command line option --done (-d) This option is a counterpart of --init and supplies a cleanup expression, i.e. an expression that will be evaluated when the main loop has iterated over all nodes in the tree. * New parser: DHCPD A parser for dhcpd.conf file. * Drop support for Guile versions prior to 2.2.0
Parses a structured configuration file and retrieves values specified by keyword pathnames or globbing patterns.
Apache::Config::Preproc
* Change bugtracker address.
This Perl module reads and parses Apache configuration file, expanding constructs like Include
, IncludeOptional
, IfModule
, IfDefine
, Use
, etc.
Apache::Defaults
- Change bugtracker address.
This Perl module provides a mechanism for detecting version, default settings, and the preloaded modules of the Apache httpd server. It does so by locating the server binary, invoking it with appropriate options and analyzing the output it produces.
wyslij-po
* Fix parsing of po header fields * Use the Language header instead of Language-Team. Support for Language-Team and language tables is retained for backward compatibility. * Organizational change: repository moved to git The repository along with links for cloning can be viewed online at http://git.gnu.org.ua/cgit/wyslij-po.git. See https://puszcza.gnu.org.ua/git/?group=wyslij-po for instructions.
Wyslij-po runs basic checking on PO files given in the command line and submits them to the Translation Project robot.
Config::AST
- Change bugtracker address.
This perl module aims to provide a generalized implementation of parse tree for various configuration files. It does not implement parser for any existing configuration file format. Instead, it provides an API that can be used by parser implementors to build internal representation for the particular configuration file format.
Config::Parser
- Change bugtracker address.
Config::Parser
provides a framework for writing configuration file parsers. It is an intermediate layer between the abstract syntax tree (Config::AST) and implementation of a parser for a particular configuration file format. The package provides also Config::Parser::Ini
– a configuration file parser for ini-style files.
Mojo::Log::Syslog
- Change bugtracker address.
Syslog logging for Mojo applications
File::BackupCopy
- Change bugtracker address.
Perl extension for creating backup file copies. Three backup naming schemes are supported: simple backup creates backup file name by appending single tilde character to the original file name, numbered backup creates backup name by suffixing the original file name with .~N~
, where N is a decimal number. Finally, automatic backup selects numbered scheme if at least one numbered backup file already exists and falls back to the simple backup otherwise.
Config::Parser::ldap
- Change bugtracker address
A Perl module for parsing the ldap.conf
configuration file.
Text::Locus
- Change bugtracker address
A Perl class for representing locations in text files. A location in its simplest form consists of file name and line number. In more complex forms, location represents a text fragment spanning several (perhaps not contiguous) lines, or even files.
vcsync
* New configuration statement: sentinel The "sentinel" statement declares the name of a file which, when present in the destination directory, informs vcsync that this directory is exempt from the normal synchronization process. The presense of the sentinel file is an indication that the destination directory is updated by other means. * Full documentation added
Vcsync synchronizes files on the file system with the corresponding repository after each commit. It is normally configured as a hook, using the mechanism provided by the version control system of choice (loginfo
in CVS, post-commit
in SVN, or post-receive
in GIT).
glacier
* Use explicit DESTROY with AUTOLOADs
Command line tool for managing AWS Glacier
dico
* Bugfixes in the gcide module * Fix searches in the gcider utility * Support for Python 2 has been withdrawn
GNU Dico provides a flexible modular implementation of dictionary server, a number of modules for it, and a console based dictionary lookup utility. A Web interface is also available.
rpipe
* Syslog support New option '-S FACILITY' switches diagnostic output to the given syslog facility.
A simple tool for forwarding content of a local file to the stdin of a program running on a remote host via TCP. The tool was created when I needed to run GNU Mailman in a docker container without MTA in it. It implements a slightly modified version of TCPMUX protocol. The same binary (rpipe
) serves both as a server (on the remote end) and as a client (on the local end).
smap
* Support for Guile 2.2 * Bugfixes * Improved testsuite
An extendable socket map server with a set of modules and framework for writing new socket maps and testing them.
tpnotify
- Fix operation without -d option
Notifies the Translation Project about new POT files
cflow
* Multiple start functions are allowed The '--main' option can be given multiple times. A separate graph will be drawn for each function given as its argument. * New option --target=FUNCTION If this option is given, the produced graph will contain only paths leading from start function (or functions) to the given FUNCTION. Multiple '--target' options are allowed. * New output format: dot The '-f dot' (or '--format=dot') option instructs cflow to output graph as a description in DOT language, suitable as input to graphviz programs. * cflow-mode: new commands for navigating in the graph: c go to the calling function n go to the next function at the same nesting level p go to the previous function at the same nesting level * Bugfixes: ** CVE-2019-16165 ** CVE-2019-16166 ** Fix parsing of K&R style function declarations ** Improve parsing of typecasts ** Fix recursive call detection
This tool analyzes a collection of C source files and prints a graph charting control flow within the program.
rex
* Hostgroup stack Rex now maintains a stack of hostgroups. Once you push a hostgroup name on stack, that hostgroup will be used by any subsequent rex command, unless it is given the -g option. The new command "group" (see below) provides ways to pop items off the stack, swap arbitrary element with the top of stack, select new hostgroups on the fly, etc. * New command: rex group The "rex group" command has the following forms: rex group push GROUP Push GROUP on stack. rex group pop Pop the topmost group off the stack. rex group swap N Exchange top of the stack with the Nth element (0-based). rex group drop N Remove Nth element from the stack. rex group select COMMAND ARGS... Create on top of the stack a temporary group that contains those hosts from the current hostgroup where the supplied shell command returns success, i.e. exits with code 0. rex group show List the contents of the hostgroup stack. * Add configuration function for overriding PTR records from rc files
Rex is a remote execution utility that runs a supplied command on a set of remote hosts. Arbitrary data can be supplied to the command in the form of local files, which will be transferred to each remote host prior to running the command and removed afterwards. Both parallel and sequential execution is supported.
Special mode exists to distribute a file or files to several hosts.
Rex is written in TCL and has extensive scripting facilities. It provides a convenient way to administrate multiple servers.
The program is designed to operate in a minimalistic environment. It is self-contained and does not need any external libraries.
slackupgrade
* Support for Slackware 15.0
Upgrades the Slackware installation to a new release. Two upgrade types are supported. In normal upgrade only packages already installed on the system are upgraded. In full upgrade, all packages from the new release are installed. A combination of the two can be achieved by supplying a list of additional Slackware series when running the normal upgrade.
pam-modules
* pam_fshadow: skip-password option Based on the proposal of Mirsad Goran Todorovac, the new option skip-password instructs pam_fshadow to check whether the user being authenticated is present in the passwd and/or shadow files, without verifying his password. This way pam_fshadow can be used as an auxiliary module in the stack, actual authentication being performed by one of the modules before it.
A collection of useful PAM modules plus a command line utility for checking PAM authentication and other management groups.
Config::HAProxy
- Handle the 'resolvers' section. - New class methods for declaring (and undeclaring) sections. - Fix changing the argv of a Node.
A perl module supplying a parser that converts the HAProxy configuration file to a parse tree and provides methods for various operations on this tree, such as: searching, modifying and saving it to a file.
vmod-basicauth
* Support for Varnish 7.1
This Varnish Cache module implements basic HTTP authentication against password files created with the Apache htpasswd utility.
pies
* New configuration keywords ** sigterm SIG Available for use in "component" sections. This statement defines signal which pies should send to the running component instance in order to terminate it. Defaults to SIGTERM. * Fix the component shutdown sequence The shutdown sequence is determined taking into account dependencies between components, so that all dependent components are stopped before their prerequisite components. * Fallback log file Fallback log file is a place where pies writes out of band log messages, i.e. messages about not being able to open syslog socket or send logs to it. Regular log messages are diverted to this file if syslog was requested, but cannot be used because of a permanent error. * Bugfixes ** Fix piesctl config reload ** Fix configuration preprocessing. ** Varios fixes in REST API server.
GNU pies (pronounced p-yes) is a program invocation and execution supervisor. This utility allows to execute usual foreground-mode applications in detached mode, as if they were daemons. It combines the fucntionality of init
and inetd
programs. It can be used to control complex multi-component software.
vmod-variable
* Support for Varnish 7.1
Extended variable support for VCL
vmod-tbf
* Support for Varnish 7.1
This module implements token bucket filtering for Varnish Cache.
vmod-geoip
* Support for Varnish 7.1 * Drop support for Varnish versions prior to 6.0.0
A module for Varnish Cache that provides API for using geolocation functions in VCL scripts.
vmod-dbrw
* Support for Varnish 7.1
A Varnish Cache module implementing database-driven rewrite rules. Intended for use with web sites that need an exceedingly big number of redirect and/or rewrite rules, Vmod-dbrw allows the administrator to keep all rules in an SQL database of arbitrary structure, thereby considerably speeding up their handling. Another advantage of this approach is that rewrite rules stored in a database are easier to maintain.
vmod-binlog
* Support for Varnish 7.1
This module provides API for writing binary log files from Varnish VCL scripts and the utilities for listing and searching in such files.
vmod-sql
* Support for Varnish 7.1 * Drop support for Varnish versions prior to 6.0.0.
This module provides SQL interface for Varnish Cache. Both MySQL and PostgreSQL are supported.
vmod-remoteip
* Support for Varnish 7.1
This module is for Varnish Cache what mod_remoteip is for Apache. It determines the actual client IP address for the connection, using the useragent IP address list presented by a proxy or load balancer via the request headers and a preconfigred list of trusted IP addresses.
podiff
* Fix https://puszcza.gnu.org.ua/bugs/?562
This tool finds differences in translatable strings and translations between two PO files or between two revisions of the same file. It ignores any differences in comments, entry ordering and spacing.
hostproc
Fix deadlock.
Hostproc provides detailed information about processes running on a host over SNMP. The information is grouped in a way similar to the ps(1) output. Additional aggregating features allow the administrator to provide summary statistics for processes matching some criteria and to exclude such processes from the detailed output. The latter feature can be used, in particular, to separate statistics for processes running on the host from those that are run within docker containers. The program is built as a sub-agent for Net-SNMP snmpd and is Linux-specific.
ping903
* Fix handing of the Connection: HTTP handler (both server and client)
Ping903 is designed to periodically monitor a very large number of remote hosts using ICMP ECHO packets. The package is built using the client-server architecture. The main component (ping903) is a daemon that sits in memory and wakes up periodically to send certain number of ICMP echo packets to a preconfigured number of hosts and to collect replies. The resulting round-trip statistics is made available via REST API.
xenv
* Diagnostic directives: $$warning and $$error The $$warning directive emits warning message. It does not alter exit status in any way. The $$error directive reports a fatal error and sets exit status to 65 (or any other, if supplied as argument). After both directives, processing is resumed at the next line. * $$exit New directive $$exit causes immediate termination of the program. Decimal exit code may be supplied as argument. * New directive: $$eval The text between $$eval and $$end is expanded and the resulting expansion is scanned again, producing the actual output. This makes it possible to create variable names on the fly and obtain their values. Useful in loops, e.g.: $$loop I 0 1 2 3 4 5 6 7 $$ eval \$\$ ifset VAR_$I Expand \$VAR_$I; \$\$ endif $$ end $$end * Bugfixes ** Fix closing the $$range loop.
Xenv is a text preprocessor. It reads input from files (or the standard input, if none are supplied) and prints it on the standard output, replacing references to environment variables with their actual values. Variables are referenced using POSIX-compatible shell syntax: $NAME
, ${NAME}
, ${NAME:-word}
, ${NAME+=word}
, ${NAME:=word}
, ${NAME:?word}
. A special ternary construct is provided: ${NAME:|word1|word2}
, which substitutes the expansion of word1 if NAME is set and the expansion of word2 otherwise. Preprocessor directives provide support for inclusion of external files, conditional text expansion (depending on the value of an environment variable or exit code of an external command), diversions, for and foreach loops etc.
mfmod_openmetrics
Bootstrapped with mailfromd 8.16.93. This fixes configure failure on FreeBSD.
Openmetrics support for mailfromd.
mfmod_pcre
Bootstrapped with mailfromd 8.16.93. This fixes configure failure on FreeBSD.
Perl-compatible regular expressions for mailfromd
tar
* Fail when building GNU tar, if the platform supports 64-bit time_t but the build uses only 32-bit time_t. * Leave the devmajor and devminor fields empty (rather than zero) for non-special files, as this is more compatible with traditional tar. * Bug fixes ** Fix interaction of --update with --wildcards. ** When extracting archives into an empty directory, do not create hard links to files outside that directory. ** Handle partial reads from regular files. ** Warn "file changed as we read it" less often. Formerly, tar warned if the file's size or ctime changed. However, this generated a false positive if tar read a file while another process hard-linked to it, changing its ctime. Now, tar warns if the file's size, mtime, user ID, group ID, or mode changes. Although neither heuristic is perfect, the new one should work better in practice. ** Fix --ignore-failed-read to ignore file-changed read errors as far as exit status is concerned. You can now suppress file-changed issues entirely with --ignore-failed-read --warning=no-file-changed. ** Fix --remove-files to not remove a file that changed while we read it. ** Fix --atime-preserve=replace to not fail if there was no need to replace, either because we did not read the file, or the atime did not change. ** Fix race when creating a parent directory while another process is also doing so. ** Fix handling of prefix keywords not followed by "." in pax headers. ** Fix handling of out-of-range sparse entries in pax headers. ** Fix handling of --transform='s/s/@/2'. ** Fix treatment of options ending in / in files-from list. ** Fix crash on 'tar --checkpoint-action exec=\"'. ** Fix low-memory crash when reading incremental dumps. ** Fix --exclude-vcs-ignores memory allocation misuse.
GNU tar is an archiver program. It is used to create and manipulate files that are actually collections of many other files; the program provides users with an organized and systematic method of controlling a large amount of data.
eclat
* Fix compilation with gcc 12.2.0
Eclat stands for EC2 Command Line Administrator Tool. It allows you to manage Amazon EC2 services from the command line, fast and easy. Eclat does not require any resource-consuming libraries. It is written in plain C, depends only on libraries which are always installed on any decent system, and has a tiny memory footprint.
NetSNMP::Sendmail
* Don't bail out if mailq or mailstats fails.
A perl plugin for NetSNMP that provides access to Sendmail statistics information obtained by mailq
and mailstats
.
syslogrelay
* Fix check for hostname presence in the message
This program provides system log forwarding facility for confined environments, such as docker containers. It listens for incoming system log messages on the UNIX socket file /dev/log
and forwards them to the specified remote server.
Relayed messages are normalized to make sure they comply with the RFC 3164. In particular, hostname is added if necessary. This is important in docker environments, since otherwise the collector would insert the IP address of the container or gateway in place of the missing hostname, and neither IP is informative enough to identify the container where the message originated.
mailfromd
* Compatibility .mf suffix not supported any more * Begin and end handlers must be defined using prog keyword * Module and include search paths Since version 8.15, if a module was not found in module search path, the search was retried using include search path. This is no longer the case: the two paths serve different purposes and don't interact in any way. MFL modules are searched in module search path only. * Use of Sendmail macros in run mode Sendmail macros can be defined in run mode by placing assignments macro=value before the script file name, e.g.: mailfromd --run i=123 client_addr=::1 test.mfl foo bar baz This example defines Sendmail macro "i" to "123" and "client_addr" to "::1". The words "foo", "bar", and "baz" will be passed to the main function as positional parameters. * Full IPv6 support This causes changes in the following MFL functions (see also "New functions", below): ** dns_query number dns_query (number TYPE, string DOMAIN; number SORT, number RESOLVE) The semantics and possible values of the RESOLVE argument have changed. It used to be a boolean value. Now its allowed values (as defined in status.mfl module) are: 'RESOLVE_NONE' Don't resolve hostnames to IP addresses. This is the default. 'RESOLVE_DFL' Resolve hostnames to IP addresses according to the address family of the SMTP session. That is, use 'A' records if the client connected using the INET family (i.e. connected to the IPv4 address), and use 'AAAA' records if the client connected to the IPv6 address. 'RESOLVE_IP4' Resolve hostnames to IPv4 addresses ('A' records). 'RESOLVE_IP6' Resolve hostnames to IPv6 addresses ('AAAA' records). Values of these constants has been selected so that any existing code using 0/1 as the value of this argument will work without changes. ** primitive_resolve and resolve functions string primitive_resolve (string HOST; string DOMAIN, number FAMILY) string resolve (string HOST; string DOMAIN, number FAMILY) The use of DOMAIN argument is deprecated. By default the function selects the type of RR set to search for using the address family of the SMTP connection: A is used for INET (IPv4 addresses) and AAAA is used for INET6 (IPv6 addresses). New argument FAMILY can be used to request particular RR type. Its possible values are: 'RESOLVE_DFL' Look for 'A' or 'AAAA', depending on the connection type. This is the default. 'RESOLVE_IP4' Resolve to IPv4 addresses ('A' records). 'RESOLVE_IP6' Resolve to IPv6 addresses ('AAAA' records). * New functions ** string is_ipstr(string S) Returns 1 if S is a string representation of an IP address (IPv4 or IPv6). ** string is_ip4str(string S) Returns 1 if S is a string representation of an IPv4 address. ** string is_ip6str(string S) Returns 1 if S is a string representation of an IPv6 address. ** string reverse_ipstr(string IP) Returns a reversed representation of the IP address, suitable for use in DNS labels. ** string tr(string SUBJ, string SET1, string SET2) Transliterates characters in SUBJ by replacing all occurrences of the characters found in SET1 with the positionally corresponding characters in SET2. Character ranges ('a-z') are allowed in both sets. A character range in SET1 translates to a corresponding character from the range in SET2, e.g. tr(x, 'a-z', 'A-Z') translates string x to uppercase. Character classes ([a-z], [[:alpha:]], etc) are allowed in SET1 and translate to the corresponding single character from SET2, e.g. tr(x, '[[:digit:]]', '_') replaces all decimal digits in string x with underscores. ** string dc(string SUBJ, string SET) Deletes from SUBJ characters that appear in SET. The syntax of SET is as described for SET1 above. ** string sq(string SUBJ, string SET) "Squeeze repeats". Replaces each sequence of a repeated character that is listed in SET, with a single occurrence of that character. * Changes in match_cidr function. The match_cidr function is re-implemented as a built-in. The module match_cidr.mfl is deprecated. * Deprecated MFL modules The following MFL modules are deprecated. They are retained for backward compatibility. Existing code using any of these will compile and work as in previous releases, except that a warning will be printed to draw your attention to the fact. You are advised to remove any uses of these modules, as they will be removed in future versions: ** match_cidr.mfl This module is not needed any more. ** is_ip.mfl This module defines function is_ip() which is superseded by is_ipstr() built-in (see above). ** revip.mfl This module defines function revip() which is superseded by reverse_ipstr() built-in.
Mailfromd is a general-purpose mail filtering daemon for Sendmail, Postfix and MeTA1. It is able to filter both incoming and outgoing messages using criteria of arbitrary complexity, supplied by the administrator in the form of a script file. The daemon interfaces with the MTA using Milter or PMilter protocols.
anubis
** Fix compilation with GDBM 1.18.1 ** Support for Guile version 2.2.0 and later Support for prior versions has been withdrawn. ** anubisusr requires GnuTLS ** New configuration statement: use-pam Used in CONTROL section, this boolean statement enables or disables the use of the Pluggable Authentication Module interface for accounting and session management. ** New configuration statement: identd-keyfile Sets the name of the file with shared keys used for decryting replies from the auth service. It is used in traditional mode if anubis receives an encrypted response from the client's identd server (e.g. if they are running pidentd with encryption). ** Bugfixes
An SMTP message submission daemon. It represents an intermediate layer between mail user agent (MUA) and mail transport agent (MTA), receiving messages from the MUA, applying to them a set of predefined changes and finally inserting modified messages into an MTA routing network. The set of changes applied to a message is configurable on a system-wide and per-user basis.
mailutils
* Use of TLS in pop3d and imap4d If not explicitly specified, the TLS mode to use (ondemand, connect, etc.) is derived from the configured port. E.g., for imap4d, port 143 implies ondemand mode, and port 993 implies connection mode. The global tls-mode setting is used only when the mode cannot be detemined otherwise, i.e. neither per-server tls-mode is given nor the port gives any clues as to the TLS mode to use. * Bugfixes ** movemail: fix handling of -P option. ** pop3d, imap4d: fix global timeout and transcript configuration statements ** pop3d, imap4d: global tls-mode is used only when the mode to use cannot be determined otherwise. ** pop3d, imap4d: if not set explicitly, derive tls mode from the port used. ** Improve file safety checking routine. ** Fix compilation with new gcc versions.
GNU Mailutils is a swiss army knife of electronic mail handling. It contains a rich set of mail-related utilities and daemons, including pop3d
, imap4d
, sieve
and several domain-specific mail delivery agents.
micron
* Micron is a part of GNU project * Take into account DST changes when computing job startup time * Minor fix in crontab parser
An enhanced implementation of UNIX cron daemon.
grayupload
* Automatic release type Release type can be determined automatically, from version numbers of the files to be uploaded. To do so, version number semantics must be declared in the configuration file using the "version_semantics" statements: version_semantics gnu Assumes GNU version semantics: two-part version numbers (e.g. 1.0) or three-part numbers whose third value (patchlevel) is numerically less than 90 mean "stable" releases. Three-part numbers with patchlevel greater than or equal to 90 mean "alpha" releases. version_semantics kernel Even major numbers correspond to "stable" releases. Odd major numbers correspond to "alpha" releases.
Grayupload uploads software tarballs to ftp.gnu.org, alpha.gnu.org, download.gnu.org.ua, or any other site that uses the automatic ftp upload protocol. Its main audience are GNU developers and developers hosting their software on gnu.org.ua.
cpio
* Fix operation of --no-absolute-filenames --make-directories * Restore access and modification times of symlinks in copy-in and copy-pass modes.
GNU cpio copies files into or out of a cpio or tar archive. The archive can be another file on the disk, a magnetic tape, or a pipe. GNU cpio supports a wide variety of archive formats.
purgedir
Initial version.
Recursively removes contents of a given directory. Designed for fast removal of a very large number of files. A range of allowable load average (LA) can be given, in which case the program will pause when LA reaches the maximum allowed value and resume operation when it falls below the given minimum.
POSIX::Run::Capture
- New constructor argument 'env' allows you to supply environment to the command to be run. - Fix packaging
A Perl module for running external commands and capturing their output. It prefers performance and effectiveness over portability. As its name suggests, it can be used only on POSIX systems.
mfmod_ldap
Fix build with mailutils 3.17
LDAP searches for mailfromd
acmeman
- Catch fatal errors from the Net::ACME2 module. - Improve pound configuration parser. - New options to the pound source: "--comment". "--type", and "--listener". The "--comment" option instructs the program to issue certificates for hostnames marked by a specific pragmatic comment. The "--type" option instructs it to process hostnames defined within listeners of a particular type ("http" or "https"). Finally, "--listener" selects listener by its tag.
A tool for automatic creation and renewal of ACME (LetsEncrypt) SSL certificates. The list of domains to handle can be obtained from acmeman or apache configuration files, or from both. If the default acmeman configuration file doesn’t exist, the program scans apache configuration files for a list of domains.
ion
Initial release.
Ion runs the supplied program with its three standard streams connected to a tty, which means that the program’s stdin, stdout, and stderr become line-buffered.
aspell-gcide
* New options gcide-include-tags and gcide-exclude-tags These options control which tags will be eligible for spell-checking.
A filter for spell-checking GCIDE dictionary files with GNU Aspell.
direvent
* Simultaneous execution limits It is possible to limit number of command instances that are allowed to run simultaneosly for a particular watcher. This is done using the 'max-instances' statement in 'watcher' section. * Restore the nowait default Unless given the 'nowait' option explicitly, watchers waited for the handler to terminate. It is now fixed and 'nowait' is the default, as described in the documentation. * Fix bug in generic to system event translation * Fix sentinel code In some cases setting the sentinel effectively removed the original watcher. That happened if the full file name of the original watcher and its directory part produced the same hash.
GNU Direvent monitors a set of directories on the file system and reacts when their content changes. When a change is detected, the program invokes an external command configured for that kind of change.
gdbm
* New gdbm_load option: --update The --update (-U) option instructs gdbm_load to update an existing database. * Fix semantics of gdbm_load -r The --replace (-r) is valid only when used together with --update. * Use getline in gdbmtool shell. * New function: gdbm_load_from_file_ext In contrast to gdbm_load and gdbm_load_from_file, which derive the value of the flag parameter for gdbm_open from the value of their "replace" argument, this function allows the caller to specify it explicitly. The prototype is: int gdbm_load_from_file_ext (GDBM_FILE *pdbf, FILE *fp, int flags, int replace, int meta_mask, unsigned long *line); * Bugfixes ** Fix binary dump format for key and/or data of zero size. (see https://puszcza.gnu.org.ua/bugs/?565) ** Fix location tracking and recover command in gdbtool. (see https://puszcza.gnu.org.ua/bugs/?566) ** Fix possible buffer underflow in gdbmload. ** Ensure any padding bytes in avail_elem structure are filled with 0. (fixes https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031276) ** Improve the documentation.
GNU dbm is a library of database functions that use extendible hashing and works similar to the standard UNIX dbm functions. These routines are provided to a programmer needing to create and manipulate a hashed database.
fileserv
* Fix EOF check with flex >= 2.6.1 * Fix multiple definitions of mimetypes_error_format * Avoid runtime errors with recent versions of libmicrohttpd
Simple HTTP server for static files.
wikitrans
Drop python 2 support
Provides Python framework for translating WikiMedia articles to various formats. The present version supports conversions to plain text, HTML, and Texinfo. A command line translator utility is included.
genrc
* New command verb: wait Instructs genrc to wait for the program to finish. This implies that the program is terminated by some third-party means. The command exits with code 0 if the program has finished and with code 1 if stop timeout has been reached.
Generic helper program for writing system initialization scripts. Depending on the operation mode, it starts, stops, reconfigures or displays the status of a specific program. Primary audience is Slackware system administrators. However, the tool is generic enough to be used on any other Linux (and not only) distribution. In the contrast to another similar programs (e.g. start-stop-daemon
), it is designed so that the entire rc
file can consist of only one line, invoking (or exec’ing) genrc
with the right set of arguments.
rush
* Use getgrouplist call, if available * Fix in rush-po script * Bugfixes
GNU Rush is a Restricted User Shell. It is intended for use with ssh, rsh and similar remote access programs. Using a sophisticated configuration file, Rush gives you complete control over the command lines users can execute, system resources they can use, etc. In particular, it allows to run remote programs in a chrooted environment.
tallyman
* Identify service instances by container ID * Fix regexp for hostproc docker exclusion group
Monitors state of running docker containers via SNMP. The package provides two utilities:
tallyman
A health state collector to be run inside the container.
stevedore
A container state collector and SNMP agent daemon.
Each container is supposed to run the tallyman
command as part of its HEALTHCHECK configuration. This tool takes as its argument the command line that does the actual checking, collects its return and sends it over to the stevedore
daemon that acts as a collector and simultaneously as a SNMP subagent, delivering the collected information to the snmpd
daemon.
texinfo
This is a bug-fix release with minimal changes. * texi2any . fix potential crash when @include is used inside a table . do not complain about presence of @anchor inside @item in a table . C source files that are generated from *.xs files are no no longer distributed, so xsubpp from Perl is needed to build XS modules. . fix bug that led to memory alignment error on SPARC . performance improvement and fixes for MinGW . test failures due to floating point rounding error fixed (observed on IBM POWER9 processor) * info . crash when setting style to invalid value fixed . potential call of memcpy with null argument fixed
Texinfo is the official documentation format of the GNU project. It uses a single source file to produce output in a number of formats, both online and printed (dvi, html, info, pdf, xml, etc.).
List::Regexp
* Bugfix: escape single characters not occurring within a class.
Perl module that, given a list of strings, produces a regular expression that matches any of the input strings
pound
* Dynamic backends Dynamic backends are created and updated on the fly based on the information from DNS. To declare backend as dynamic, use a symbolic host name in its "Address" statement and add the "Resolve" statement with one of the following values: first Resolve the symbolic host name and use first IP from the DNS response as the address of the created dynamic backend. Thus, at most one dynamic backend will be created. all Resolve the symbolic host name and create one backend for each address from the DNS response. This enables load balancing between created backends. Each backend will be assigned the same priority. srv Obtain SRV records for the host name and use them to generate regular backends. Each record produces new dynamic backend of "Resolve all" type, which creates regular backends as described above. The weight field of the SRV record is mapped to the priority field of each generated backend. The SRV priority field determines the balancing group (see below) where the backend will be hosted. By default, both IPv4 and IPv6 addresses are looked for. You can select the specific address family using the "Family" statement. Its allowed values are: any Use all address families available. This is the default. inet Use only IPv4 addresses. inet6 Use only IPv6 addresses. For example: Backend Address "be0.example.net" Port 8080 Resolve first Family inet End Dynamic backends will be updated periodically, when the TTL of the corresponding DNS records expires. If the hostname cannot be resolved or a DNS failure occurs, next update will be scheduled in 600 seconds after the failure. This interval can be configured using the "RetryInterval" statement in the "Backend" section, or globally, in the "Resolver" section. The "Resolver" section allows you to control how DNS lookups are performed. It can contain the following directives: CNAMEChain (integer) Maximum allowed length of a "CNAME chain". CNAME chains are formed by DNS CNAME records pointing to another CNAME. Although prohibited by the RFC, such usage occurs sometimes in the wild. By default, pound does not accept CNAME chains. If you work with a nameserver that uses them, set this statement to a small integer value, defining maximum number of CNAMEs in the chain that pound will accept. The value of 2 or 3 should suffice in most cases. ConfigFile (string) Name of the resolver configuration file. Default is "/etc/resolv.conf". ConfigText ... End The material within this section is read verbatim and used as the content of the resolver configuration file. If both ConfigFile and ConfigText are used, the last statement used wins. Debug (boolean) Whether to enable DNS debugging info. RetryInterval (integer) Interval in seconds, after which to retry failed DNS queries or queries that returned no RRs. This value is used unless the backend defines its own retry interval value. Dynamic backends can be controlled using poundctl. For example, consider the following output from "poundctl list": 1. Listener http://192.0.2.1:80 enabled 0. Service active (5) 0. matrix "be0.example.com" 2 0 active 1. backend http 198.51.100.15:8081 5 alive active 2. backend http 203.0.113.121:8081 5 alive active 3. backend http 192.0.2.203:8081 5 alive active The backend 0 ("matrix") refers to the "Backend" statement in the configuration file that produced the other three dynamic backends. Disabling it (poundctl disable /1/0/0) causes the dynamic ones to be removed. Enabling it will create them again. In a pinch, this can be used to force backend re-creation prior to TTL expiration. ** Compiling To enable dynamic backend support, you will need the adns library. On debian-based systems, it is installed by the following command apt-get install libadns1-dev If all preconditions necessary for enabling dynamic backends are met, the output from configure will end with the following status line: Dynamic backends .............................. yes ******************************************************************* When compiled with the dynamic backend support, output of "pound -V" will contain the following line in the "Built-in defaults" section: Dynamic backends: enabled * Backend groups Backend groups are a new pound feature, that extends the idea of regular and emergency backends used in previous versions. Any number of backend groups can be associated with a service. Each group is assigned an integer number (weight). The groups are ordered by weight (in ascending order) and are tried in that order when looking for a backend to serve the request. The look up starts with the first group. The balancing algorithm configured for the service is applied. If no backend can be selected, next group will be tried, and so on. In the static configuration, regular backends are hosted in backend group of weight 0 and emergency (high availability) backends are stored in group of weight 65535. One consequence of this is that any number of Emergency backend declarations are now allowed in a service. More backend groups can be allocated when using dynamic backends of "srv" resolve type (see above). * Emergency backends Any number of emergency backends can be defined. Usual request balancing algorightm applies when selecting an emergency backend. All statements valid within a "Backend" section are also valid within an emergency backend declaration. * Listener address configuration Both "Address" and "Port" statements are now optional. If "Address" is omitted, pound will listen on all available interfaces. If "Port" is omitted (and not listening on a UNIX socket), default port number for this kind of listener will be used: 80, for "ListenHTTP", and 443, for "ListenHTTPS". * New request matching conditional: ClientCert The syntax is: ClientCert "FILENAME" The conditional evaluates to true if the client presented the certificate matching that from the given file (PEM format). It cannot be used in standalone services (i.e. services that are defined in global scope). It also cannot be used if the "ListenHTTPS" section that hosts the service has the "ClientCert" statement on its own. * Remote access to the management interface A new backend type "Control" is introduced to make it possible to access the management interface remotely. The example below shows how to configure pound to expose the management interface on http://192.0.2.1:3434: ListenHTTP Address 192.0.2.1 Port 3434 Service ACL "secure" Control End End * poundctl Changes in poundctl functionality reflect those in the management interface. First of all, the -s option accepts URL as its argument: -s https://user:password@hostname:8080/path Additionally, the following new options are implemented: -C FILE Load CA certificates from FILE. If FILE is a directory, all PEM files will be loaded from it. -K FILE Load client certificate and key from FILE. During TLS handshake, send them to the peer for authentication. -k Insecure mode: disable peer verification. -S NAME Take settings for server NAME from the poundctl configuration file (see below). ** .poundctl The file ".poundctl" in user home directory provides configuration settings for the poundctl command. Syntactically, it is similar to pound.cfg. Upon startup, poundctl first checks if "~/.poundctl" exists and reads it if so. If the program cannot determine the URL of the control socket from it (possibly using the argument to the -S option, if given), it scans the pound configuration file (if it exists), looking for Control statement. Finally, if neither method determines the URL, poundctl requires the user to supply the -s option. The default name and location of the poundctl configuration file can be changed using the environment variable POUNDCTL_CONF. Setting it to empty string disables the configuration mechanism altogether. * configure Removed historic "--with-owner" and "--with-group" options.
Pound is a reverse proxy, load balancer and HTTPS front-end for Web servers. It was developed to enable distributing load among several Web-servers and to allow for a convenient SSL wrapper for those Web servers that do not offer it natively.
Pound was originally developed by Robert Segall at Apsis GmbH. I took over its development when Robert announced that he abandons it.