termux-packages/packages/tsocks/00_patch_from_1.8beta5-9.2....

115 lines
4.3 KiB
Diff

Description: Debian has carried this patch since 1.8beta5-9.2 release,
I extracted it from upstream's source we distribute and keep it as patch
I claim no ownership
Last-update: 2016-11-07
Origin: vendor
diff --git a/parser.c b/parser.c
index 5b6d123..81245c8 100644
--- a/parser.c
+++ b/parser.c
@@ -6,10 +6,13 @@
#include <netinet/in.h>
#include <sys/socket.h>
+#include <sys/types.h>
#include <arpa/inet.h>
+#include <pwd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
+#include <unistd.h>
#include <errno.h>
#include <config.h>
#include "common.h"
@@ -48,12 +51,11 @@ int read_config (char *filename, struct parsedfile *config) {
/* If a filename wasn't provided, use the default */
if (filename == NULL) {
- strncpy(line, CONF_FILE, sizeof(line) - 1);
- /* Insure null termination */
- line[sizeof(line) - 1] = (char) 0;
- filename = line;
+ filename = find_config(line);
}
+ show_msg(MSGDEBUG, "using %s as configuration file\n", line);
+
/* Read the configuration file */
if ((conf = fopen(filename, "r")) == NULL) {
show_msg(MSGERR, "Could not open socks configuration file "
diff --git a/tsocks.8 b/tsocks.8
index e056460..9e46070 100644
--- a/tsocks.8
+++ b/tsocks.8
@@ -34,13 +34,13 @@ manual page.
.BR tsocks
is a library to allow transparent SOCKS proxying. It wraps the normal
-connect() function. When a connection is attempted, it consults the
-configuration file (which is defined at configure time but defaults to
-/etc/tsocks.conf) and determines if the IP address specified is local. If
-it is not, the library redirects the connection to a SOCKS server
-specified in the configuration file. It then negotiates that connection
-with the SOCKS server and passes the connection back to the calling
-program.
+connect() function. When a connection is attempted, it consults the
+configuration file (which is defined at configure time but defaults to
+~/.tsocks.conf and if that file cannot be accessed, to /etc/tsocks.conf)
+and determines if the IP address specified is local. If it is not, the
+library redirects the connection to a SOCKS server specified in the
+configuration file. It then negotiates that connection with the SOCKS
+server and passes the connection back to the calling program.
.BR tsocks
is designed for use in machines which are firewalled from then
@@ -59,7 +59,7 @@ Some configuration options can be specified at run time using environment
variables as follows:
.TP
-.I TSOCKS_CONFFILE
+.I TSOCKS_CONF_FILE
This environment variable overrides the default location of the tsocks
configuration file. This variable is not honored if the program tsocks
is embedded in is setuid. In addition this environment variable can
diff --git a/tsocks.c b/tsocks.c
index 9cfdfff..0a16712 100644
--- a/tsocks.c
+++ b/tsocks.c
@@ -289,11 +289,13 @@ int connect(CONNECT_SIGNATURE) {
show_msg(MSGDEBUG, "Picked server %s for connection\n",
(path->address ? path->address : "(Not Provided)"));
if (path->address == NULL) {
- if (path == &(config->defaultserver))
+ if (path == &(config->defaultserver)) {
show_msg(MSGERR, "Connection needs to be made "
"via default server but "
"the default server has not "
- "been specified\n");
+ "been specified. Falling back to direct connection.\n");
+ return(realconnect(__fd, __addr, __len));
+ }
else
show_msg(MSGERR, "Connection needs to be made "
"via path specified at line "
diff --git a/tsocks.conf.5 b/tsocks.conf.5
index ea7a3b3..a2a7959 100644
--- a/tsocks.conf.5
+++ b/tsocks.conf.5
@@ -126,6 +126,15 @@ specified in the current path block should be used to access any IPs in the
range 150.0.0.0 to 150.255.255.255 when the connection request is for ports
80-1024.
+.TP
+.I fallback
+This directive allows to fall back to direct connection if no default
+server present in the configuration and fallback = yes.
+If fallback = no or not specified and there is no default server, the
+tsocks gives an error message and aborts.
+This parameter protects the user against accidentally establishing
+unwanted unsockified (ie. direct) connection.
+
.SH UTILITIES
tsocks comes with two utilities that can be useful in creating and verifying
the tsocks configuration file.