summaryrefslogtreecommitdiffhomepage
path: root/src/conf.c
AgeCommit message (Collapse)Author
2020-01-15conf: fix loading of default valuesrofl0r
previously, default values were stored once into a static struct, then on each reload item by item copied manually into a "new" config struct. this has proven to be errorprone, as additions in one of the 2 locations were not propagated to the second one, apart from being simply a lot of gratuitous code. we now simply load the default values directly into the config struct to be used on each reload. closes #283
2020-01-15remove config file name item from conf structrofl0r
since this is set via command line, we can deal with it easily from where it is actually needed.
2020-01-15remove godaemon member from config structurerofl0r
since this option can't be set via config file, it makes sense to factor it out and use it only where strictly needed, e.g. in startup code.
2020-01-15move initialize_config_defaults to conf.crofl0r
2019-12-21conf.c: merely warn on encountering recently obsoleted config itemsrofl0r
if we don't handle these gracefully, pretty much every existing config file will fail with an error, which is probably not very friendly. the obsoleted config items can be made hard errors after the next release.
2019-12-21conf.c: pass lineno to handler funcsrofl0r
2019-12-21simplify codebase by using one thread/conn, instead of preforked procsrofl0r
the existing codebase used an elaborate and complex approach for its parallelism: 5 different config file options, namely - MaxClients - MinSpareServers - MaxSpareServers - StartServers - MaxRequestsPerChild were used to steer how (and how many) parallel processes tinyproxy would spin up at start, how many processes at each point needed to be idle, etc. it seems all preforked processes would listen on the server port and compete with each other about who would get assigned the new incoming connections. since some data needs to be shared across those processes, a half- baked "shared memory" implementation was provided for this purpose. that implementation used to use files in the filesystem, and since it had a big FIXME comment, the author was well aware of how hackish that approach was. this entire complexity is now removed. the main thread enters a loop which polls on the listening fds, then spins up a new thread per connection, until the maximum number of connections (MaxClients) is hit. this is the only of the 5 config options left after this cleanup. since threads share the same address space, the code necessary for shared memory access has been removed. this means that the other 4 mentioned config option will now produce a parse error, when encountered. currently each thread uses a hardcoded default of 256KB per thread for the thread stack size, which is quite lavish and should be sufficient for even the worst C libraries, but people may want to tweak this value to the bare minimum, thus we may provide a new config option for this purpose in the future. i suspect that on heavily optimized C libraries such a musl, a stack size of 8-16 KB per thread could be sufficient. since the existing list implementation in vector.c did not provide a way to remove a single item from an existing list, i added my own list implementation from my libulz library which offers this functionality, rather than trying to add an ad-hoc, and perhaps buggy implementation to the vector_t list code. the sblist code is contained in an 80 line C file and as simple as it can get, while offering good performance and is proven bugfree due to years of use in other projects.
2018-11-23Basic Auth: allow almost all possible characters for user/passVasily
previously was restricted to alphanumeric chars only.
2018-02-27make bind option usable with transparent proxy toorofl0r
closes #15 for real. the previous patch that was merged[0] was halfbaked and only removed the warning part of the original patch from openwrt[1], but didn't actually activate bind support. further it invoked UB by removing the return value from the function, if transparent proxy support was compiled in. [0]: d97d486d53ce214ae952378308292f333b8c7a36 [1]: https://gitlab.labs.nic.cz/turris/openwrt-packages/commit/7c01da4a72e6f0b7613a86529547659ea4007eba
2018-02-25config: unify upstream syntax for http,socks4,socks5 and nonerofl0r
closes #50
2018-02-25rename members of proxy_type enum to have a common prefixrofl0r
and add a NONE member.
2018-02-25implement HTTP basic auth for upstream proxiesrofl0r
loosely based on @valenbg1's code from PR #38 closes #38 closes #96
2018-02-23Remove #ifdef for HAVE_SYSLOG_HJohn Weldon
- syslog.h is a standard posix header, this #ifdef is an artifact accidentally left in.
2018-02-06add support for basic HTTP authenticationrofl0r
using the "BasicAuth" keyword in tinyproxy.conf. base64 code was written by myself and taken from my own library "libulz". for this purpose it is relicensed under the usual terms of the tinyproxy license.
2018-02-06add SOCKS upstream proxy support (socks4/socks5)Gonzalo Tornaria
original patch submitted in 2006 to debian mailing list: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=392848%29#12 this version was rebased to git and updated by Russ Dill <russ.dill@gmail.com> in 2015 (the original patch used a different config file format). as discussed in #40. commit message by @rofl0r.
2017-11-16Issue 15 fix. PRPablo Panero
2013-11-22conf: Fix CID 1130973 - resource leak.Michael Adam
Found by coverity. Signed-off-by: Michael Adam <obnox@samba.org>
2013-11-09[BB#63] conf: Allow multiple Listen statements in the config.Michael Adam
This introduces a list (vector) of addresses instead of having just one address string. Signed-off-by: Michael Adam <obnox@samba.org>
2011-03-04Validate port number specified in Port directiveMukund Sivaraman
This was asked in bug #90 comment #8.
2010-08-24[BB#91] Fix upstream proxy support.Michael Adam
Patch by Jordi Mallach.
2010-06-01[BB#89] Don't recompile regular expressionsJohn van der Kamp
This is a modification of a patch originally written by John van der Kamp <john@kirika.demon.nl> at <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=579427#12> The modification was done by the committer.
2010-01-25Fix compiler warning about dereferencing type-punned pointersMukund Sivaraman
2010-01-16conf: reduce indentation in load_config_file()Michael Adam
This replaces a do { ... } while (0) with break statements ba gotos. Imho, this is much clearer. Michael
2010-01-16Fix leak of file handle in load_config_file()Mukund Sivaraman
2010-01-08[BB#17] Add custom HTTP request headers to outgoing HTTP requestsMukund Sivaraman
2010-01-06Fix case in log messageMukund Sivaraman
2009-12-23conf: confess - add my (C) after substantial changes.Michael Adam
Michael
2009-12-22conf: add a log messate ("reloading config file")Michael Adam
Michael
2009-12-22conf: adapt a log message (add quotes to string value)Michael Adam
Michael
2009-12-22conf: elaborate a commentMichael Adam
Michael
2009-12-22conf: change a log message (to be more reasonable?)Michael Adam
Michael
2009-12-22conf: make free_config staticMichael Adam
Michael
2009-12-22conf: make load_config_file static.Michael Adam
Michael
2009-12-22conf: rename reload_config --> reload_config_fileMichael Adam
Michael
2009-12-07Move definition of "struct config_s" from main.h to conf.hMichael Adam
Michael
2009-12-07conf: remove direct use of config from reload_config()Michael Adam
The "conf" argument has to be used. Michael
2009-12-07conf: remove direct reference to config from load_config_file()Michael Adam
This has to use the parameter "conf". Michael
2009-12-07Add reload_config() - (re-)load the config file, keeping defaults.Michael Adam
This allows for later reloading the config at SIGHUP (e.g.). First the old config data is freed, then the defaults that are given as a parameter are copied over in a rather clumsy manual fashion (maybe something more clever can be done here) and finally, the actual config file is loaded. Michael
2009-12-07Add free_config() - free all config data.Michael Adam
Michael
2009-12-07Add connect_ports list to config struct instead of keeping extra global var.Michael Adam
Michael
2009-12-07Move handling of connect_ports list to its own source module.Michael Adam
Michael
2009-12-07Add access_list to the config struct instead of a global variable in acl.c.Michael Adam
Change insert_acl, check_acl and flush_access_list to take a corresponding argument. Michael
2009-12-07Add reversepath_list parameter to reversepath_add.Michael Adam
Michael
2009-12-07upstream: add upstream list parameter to upstream_add()Michael Adam
to abstract it from the concrete list in the config struct. Michael
2009-12-06move handling of upstream list to new module upstream.{c,h}Michael Adam
Michael
2009-12-06conf: fix tab->spacesMichael Adam
Michael
2009-12-06conf: allow set_string_arg to overwrite previous values (i.e. don't leak)Michael Adam
Michael
2009-11-16set_string_arg: Remove unneccesary check for determining the return code.Michael Adam
2009-11-17Remove excessive copyingMukund Sivaraman
2009-11-14Fix typo in log stringMukund Sivaraman