tinyproxy - a light-weight HTTP/HTTPS proxy daemon for POSIX operating systems
Go to file
rofl0r 7ea9f80d3f fix segfault in socks4 upstream with unresolvable hostname
using a socks4 tor upstream with an .onion url resulted in
gethostbyname() returning NULL and a subsequent segfault.
not only did the code not check the return value of gethostbyname(),
that resolver API itself isn't threadsafe.

as pure SOCKS4 supports only IPv4 addresses, and the main SOCKS4
user to this date is tor, we just use SOCKS4a unconditionally and
pass the hostname to the proxy without trying to do any local name
resolving.

i suspect in 2021 almost all SOCKS4 proxy servers in existence use
SOCKS4a extension, but should i be wrong on this, i prefer issue
reports to show up and implement plain SOCKS4 fallback only when
i see it is actually used in practice.
2021-06-25 02:43:00 +01:00
.github/workflows github actions: don't run "make test" on macos it currenctly fails 2021-05-13 01:02:43 +01:00
data data: Cleanup installation of templates 2009-09-13 04:08:06 +05:30
docs manpage: improve FilterDefaultDeny paragraph 2021-05-10 00:25:50 +01:00
etc simplify codebase by using one thread/conn, instead of preforked procs 2019-12-21 00:43:45 +00:00
m4macros configure: remove checks for standard types 2016-12-21 21:16:06 +00:00
scripts version.sh: relax regex for release tag detection 2020-09-27 15:44:50 +01:00
src fix segfault in socks4 upstream with unresolvable hostname 2021-06-25 02:43:00 +01:00
tests tests: add some AddHeader directives 2020-09-16 02:39:09 +01:00
.gitignore add 'compile' to gitignore 2016-12-24 03:04:50 +01:00
.travis.yml travis: asciidoc is no longer needed 2020-08-20 14:32:16 +01:00
AUTHORS Update AUTHORS 2018-09-01 04:06:59 +02:00
autogen.sh Remove AM_MAINTAINER_MODE 2009-12-08 10:52:17 +05:30
ChangeLog Add placeholder ChangeLog to keep automake happy 2016-12-20 19:22:17 +01:00
configure.ac configure.ac: remove unneeded "defs" linker flag 2021-06-23 16:59:55 +01:00
COPYING [BB#53] Add a GPLv2 COPYING file 2009-08-04 04:21:46 +05:30
Makefile.am build: add new version mechanism based on VERSION file and a version.sh script 2018-09-05 00:56:31 +02:00
NEWS NEWS: just mention to use git log 2018-09-01 04:06:59 +02:00
README README: add README pointing to README.md to make automake happy 2016-12-20 19:22:17 +01:00
README.md README.md: describe how transparent proxying can be used 2020-09-07 18:08:57 +01:00
tinyproxy-indent.sh Add Tinyproxy indent script 2009-09-15 01:00:50 +05:30
TODO Remove suggester (see Banu RT #138) 2014-05-01 13:58:54 +05:30
VERSION Release 1.11.0 2021-04-16 13:47:21 +01:00

Tinyproxy

Tinyproxy is a small, efficient HTTP/SSL proxy daemon released under the GNU General Public License. Tinyproxy is very useful in a small network setting, where a larger proxy would either be too resource intensive, or a security risk. One of the key features of Tinyproxy is the buffering connection concept. In effect, Tinyproxy will buffer a high speed response from a server, and then relay it to a client at the highest speed the client will accept. This feature greatly reduces the problems with sluggishness on the Internet. If you are sharing an Internet connection with a small network, and you only want to allow HTTP requests to be allowed, then Tinyproxy is a great tool for the network administrator.

For more info, please visit the Tinyproxy web site.

Installation

Tinyproxy uses a standard GNU configure script based on the automake system. If compiling from a git checkout, you need to first run

./autogen.sh

from the top level directory to generate the configure script. The release tarball contains the pre-created configure script, so when building from a release, you can skip this step. Then basically all you need to do is

./configure
make
make install

in the top level directory to compile and install Tinyproxy. There are additional command line arguments you can supply to configure. They include:

  • --enable-debug: If you would like to turn on full debugging support.

  • --enable-xtinyproxy: Compile in support for the XTinyproxy header, which is sent to any web server in your domain.

  • --enable-filter: Allows Tinyproxy to filter out certain domains and URLs.

  • --enable-upstream: Enable support for proxying connections through another proxy server.

  • --enable-transparent: Allow Tinyproxy to be used as a transparent proxy daemon. Unlike other work modes, transparent proxying doesn't require explicit configuration and works automatically when traffic is redirected to the proxy using the appropriate firewall rules.

  • --enable-reverse: Enable reverse proxying.

  • --with-stathost=HOST: Set the default name of the stats host.

For more information about the build system, read the INSTALL file that is generated by autogen.sh and comes with the release tar ball.

Support

If you are having problems with Tinyproxy, please raise an issue on github.

Contributing

If you would like to contribute a feature, or a bug fix to the Tinyproxy source, please clone the git repository from github and create a pull request.

Community

You can meet developers and users to discuss development, patches and deployment issues in the #tinyproxy IRC channel on Freenode (irc.freenode.net).