bug-wget
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]