mirror of
				https://github.com/rofl0r/proxychains-ng.git
				synced 2025-11-04 00:56:03 +00:00 
			
		
		
		
	Add my multiple config file fixes to proxychain.
This commit is contained in:
		@@ -136,16 +136,20 @@ static void init_lib()
 | 
			
		||||
	init_l = 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * XXX. Same thing is defined in proxychains main.c it
 | 
			
		||||
 * needs to be changed, too.
 | 
			
		||||
 */
 | 
			
		||||
#define PROXYCHAINS_CONF_FILE "PROXYCHAINS_CONF_FILE"
 | 
			
		||||
 | 
			
		||||
static inline void get_chain_data(
 | 
			
		||||
			proxy_data *pd,
 | 
			
		||||
			unsigned int *proxy_count,
 | 
			
		||||
			chain_type *ct)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	int count=0,port_n=0,list=0;
 | 
			
		||||
	char buff[1024],type[1024],host[1024],user[1024];
 | 
			
		||||
	char *env;
 | 
			
		||||
	FILE* file;
 | 
			
		||||
 | 
			
		||||
	if(proxychains_got_chain_data)
 | 
			
		||||
@@ -156,8 +160,17 @@ static inline void get_chain_data(
 | 
			
		||||
	tcp_connect_time_out=10*1000;
 | 
			
		||||
	*ct=DYNAMIC_TYPE;
 | 
			
		||||
 | 
			
		||||
	env = NULL;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Get path to configuration file from env this file has priority
 | 
			
		||||
	 * if it's defined.
 | 
			
		||||
	 */
 | 
			
		||||
	env = getenv(PROXYCHAINS_CONF_FILE);
 | 
			
		||||
 | 
			
		||||
	snprintf(buff,256,"%s/.proxychains/proxychains.conf",getenv("HOME"));
 | 
			
		||||
 | 
			
		||||
	if(!(file=fopen(env,"r")))
 | 
			
		||||
	if(!(file=fopen("./proxychains.conf","r")))
 | 
			
		||||
	if(!(file=fopen(buff,"r")))
 | 
			
		||||
	if(!(file=fopen("/etc/proxychains.conf","r")))
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
/***************************************************************************
 | 
			
		||||
                          main.c  -  description
 | 
			
		||||
                             -------------------
 | 
			
		||||
   q							 -------------------
 | 
			
		||||
    begin                : Tue May 14 2002
 | 
			
		||||
    copyright          :  netcreature (C) 2002
 | 
			
		||||
    email                 : netcreature@users.sourceforge.net
 | 
			
		||||
@@ -32,17 +32,54 @@
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/wait.h>
 | 
			
		||||
 | 
			
		||||
extern char *optarg;
 | 
			
		||||
extern int optind, opterr, optopt
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * XXX. Same thing is defined in proxychains main.c it
 | 
			
		||||
 * needs to be changed, too.
 | 
			
		||||
 */
 | 
			
		||||
#define PROXYCHAINS_CONF_FILE "PROXYCHAINS_CONF_FILE"
 | 
			
		||||
 | 
			
		||||
static usage(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
		printf("\nUsage:	 %s [h] [f] config_file program_name [arguments]\n"
 | 
			
		||||
       	   "\t for example : proxychains telnet somehost.com\n"
 | 
			
		||||
										"More help in README file\n", argv[0], );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main(int argc, char *argv[])
 | 
			
		||||
{
 | 
			
		||||
  if(argc<2)
 | 
			
		||||
  {
 | 
			
		||||
        printf("\nUsage:   proxychains program_name [arguments]\n"
 | 
			
		||||
       	   "\t for example : proxychains telnet somehost.com\n"
 | 
			
		||||
                 "More help in README file\n");
 | 
			
		||||
        return 0 ;
 | 
			
		||||
		char *path;
 | 
			
		||||
 | 
			
		||||
		path = NULL;
 | 
			
		||||
 | 
			
		||||
		while ((opt = getopt(argc, argv, "fh:")) != -1) {
 | 
			
		||||
				switch (opt) {
 | 
			
		||||
						case 'h':
 | 
			
		||||
								usage();
 | 
			
		||||
								break;
 | 
			
		||||
						case 'f':
 | 
			
		||||
								path = (char *)optarg;
 | 
			
		||||
								break;
 | 
			
		||||
						default: /* '?' */
 | 
			
		||||
								usage();
 | 
			
		||||
								exit(EXIT_FAILURE);
 | 
			
		||||
				}
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
		printf("Proxychains are going to use %s as config file.\n", path);
 | 
			
		||||
		printf("argv = %s\n", argv[1]);
 | 
			
		||||
 | 
			
		||||
		/* Set PROXYCHAINS_CONF_FILE to get proxychains lib to
 | 
			
		||||
			 use new config file. */
 | 
			
		||||
		setenv(PROXYCHAINS_CONF_FILE, path, 1);
 | 
			
		||||
 | 
			
		||||
		/*XXX. proxychains might be installed in some different location */
 | 
			
		||||
  putenv("LD_PRELOAD=/usr/lib/libproxychains.so");
 | 
			
		||||
  execvp(argv[1],&argv[1]);
 | 
			
		||||
  perror("proxychains can't load process....");
 | 
			
		||||
 | 
			
		||||
  return EXIT_SUCCESS;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,26 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
echo "ProxyChains-3.1 (http://proxychains.sf.net)"
 | 
			
		||||
if [ $# = 0 ] ; then
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
 | 
			
		||||
	echo "	usage:"
 | 
			
		||||
	echo "		proxychains <prog> [args]"
 | 
			
		||||
	echo "		$0 [h] [f config-file] <prog> [args]"
 | 
			
		||||
	exit
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if [ $# = 0 ] ; then
 | 
			
		||||
	usage
 | 
			
		||||
fi
 | 
			
		||||
export LD_PRELOAD=libproxychains.so
 | 
			
		||||
 | 
			
		||||
if [ $1 = "-h" ]; then
 | 
			
		||||
	usage
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ "$1" = "-f" ]; then
 | 
			
		||||
	export PROXYCHAINS_CONF_FILE=$2;
 | 
			
		||||
	shift;
 | 
			
		||||
	shift;
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
export LD_PRELOAD=libproxychains.so.3
 | 
			
		||||
exec "$@"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user