[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Bug-wget] [PATCH] Add wrapper for using wget with a socks proxy.
From: |
Darshit Shah |
Subject: |
Re: [Bug-wget] [PATCH] Add wrapper for using wget with a socks proxy. |
Date: |
Wed, 6 Aug 2014 12:12:22 +0530 |
Hi Angel,
I was wondering if the WGET variable should always contain the
absolute path to the executable. That way we do nopt rely on the $PATH
variable to detect wget. My suggestion would be to have the line
replaced as:
WGET=/usr/bin/wget
So that the script always uses the wget executable and not any other
scripts called wget in $PATH
On Wed, Aug 6, 2014 at 5:03 AM, Ángel González <address@hidden> wrote:
> ---
> ChangeLog | 4 +++
> contrib/tsocked-wget | 91
> ++++++++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 95 insertions(+)
> create mode 100755 contrib/tsocked-wget
>
> diff --git a/ChangeLog b/ChangeLog
> index 8b693be..52fd5be 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,7 @@
> +2014-07-28 à ngel González <address@hidden>
> + * contrib: Created contrib folder.
> + * contrib/tsocked-wget: Added wrapper for usage with socks proxy.
> +
> 2014-07-25 Darshit Shah <address@hidden>
> * .gitignore: Add a gitignore file for the project.
> diff --git a/contrib/tsocked-wget b/contrib/tsocked-wget
> new file mode 100755
> index 0000000..a362070
> --- /dev/null
> +++ b/contrib/tsocked-wget
> @@ -0,0 +1,91 @@
> +#!/bin/bash
> +
> +# Script that executes wget using a socks proxy if the environment variable
> +# socks_proxy is set.
> +#
> +# The socks_proxy variable shall have one of the forms:
> +# socks://username:address@hidden:port
> +# socks4://username:address@hidden:port
> +# socks5://username:address@hidden:port
> +# with username, password and port fields being optional
> +#
> +# As socksification applies to the whole process, domains defined in the
> +# no_proxy setting are *not* excluded.
> +#
> +
> +# Requisites: bash (version 3.2.3 or later), tsocks and wget
> +
> +####################################
> +# Copyright (C) 2014 à ngel González
> +# Permission is hereby granted, free of charge, to any person obtaining a
> copy
> +# of this software and associated documentation files (the "Software"), to
> deal
> +# in the Software without restriction, including without limitation the
> rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or
> sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +#
> +# The above copyright notice and this permission notice shall be included
> in
> +# all copies or substantial portions of the Software.
> +#
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
> OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> THE
> +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> FROM,
> +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> IN
> +# THE SOFTWARE.
> +#
> +
> +set -eu
> +
> +# Binary to be executed. Use an absolute path if installing this script as
> 'wget'
> +WGET=wget
> +
> +if [ -z "${socks_proxy:-}" ]; then
> +exec "$WGET" "$@"
> +fi
> +
> +CONFIG=""
> +
> +if [[ "${socks_proxy}" =~ ^socks[45]?:// ]]; then
> + if [[ "${socks_proxy:5:1}" != ":" ]]; then
> + CONFIG+="server_type = ${socks_proxy:5:1}"
> + socks_proxy="${socks_proxy:9}"
> + else
> + socks_proxy="${socks_proxy:8}"
> + fi
> +elif [[ "${socks_proxy}" =~ ^[[:alnum:]]*:// ]]; then
> + echo "Bad value specified for socks_proxy: $socks_proxy" >&2
> + exit 2
> +fi
> +
> +if [[ "${socks_proxy}" =~ ^([^@:]*)(:(address@hidden))?@ ]]; then
> + unset TSOCKS_USERNAME
> + CONFIG+="
> + default_user = ${BASH_REMATCH[1]}"
> +
> + if [ ! -z "${BASH_REMATCH[3]}" ]; then
> + unset TSOCKS_PASSWORD
> + CONFIG+="
> + default_pass = ${BASH_REMATCH[3]}"
> + fi
> + socks_proxy="${socks_proxy:${#BASH_REMATCH[0]}}"
> +fi
> +
> +
> +# Get rid of trailing slashes
> +if [[ "${socks_proxy}" =~ ^([^/]*)/ ]]; then
> + socks_proxy="${socks_proxy:0:${#BASH_REMATCH[1]}}"
> +fi
> +
> +if [[ "${socks_proxy}" =~ :([0-9]+)$ ]]; then
> + CONFIG+="
> + server_port = ${BASH_REMATCH[1]}"
> + socks_proxy=${socks_proxy:0:${#socks_proxy} - ${#BASH_REMATCH[0]}}
> +fi
> +
> +CONFIG+="
> + server = ${socks_proxy}"
> +
> +TSOCKS_CONF_FILE=<(echo "$CONFIG") exec tsocks "$WGET" --no-proxy "$@"
> +
--
Thanking You,
Darshit Shah