140 lines
4.7 KiB
Diff
140 lines
4.7 KiB
Diff
From 876def8ebe56d483921cf645371d277b615373e5 Mon Sep 17 00:00:00 2001
|
|
From: Tomas Hozza <thozza@redhat.com>
|
|
Date: Fri, 12 May 2017 19:17:32 +0200
|
|
Subject: [PATCH 3/4] Add command line option to disable use of .netrc
|
|
|
|
Although internally code uses option for (not) reading .netrc for
|
|
credentials, it was not possible to turn this behavior off on command
|
|
line. Note that it was possible to turn it off using wgetrc.
|
|
|
|
Idea for this change came from Bruce Jerrick (bmj001@gmail.com).
|
|
Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1425097
|
|
|
|
Signed-off-by: Tomas Hozza <thozza@redhat.com>
|
|
---
|
|
doc/wget.texi | 6 ++++
|
|
src/main.c | 3 ++
|
|
testenv/Makefile.am | 1 +
|
|
testenv/Test-auth-basic-no-netrc-fail.py | 59 ++++++++++++++++++++++++++++++++
|
|
4 files changed, 69 insertions(+)
|
|
create mode 100755 testenv/Test-auth-basic-no-netrc-fail.py
|
|
|
|
diff --git a/doc/wget.texi b/doc/wget.texi
|
|
index a2bf9dc..e4e0bf6 100644
|
|
--- a/doc/wget.texi
|
|
+++ b/doc/wget.texi
|
|
@@ -703,6 +703,12 @@ Before (over)writing a file, back up an existing file by adding a
|
|
files are rotated to @samp{.2}, @samp{.3}, and so on, up to
|
|
@var{backups} (and lost beyond that).
|
|
|
|
+@cindex authentication credentials
|
|
+@item --no-netrc
|
|
+Do not try to obtain credentials from @file{.netrc} file. By default
|
|
+@file{.netrc} file is searched for credentials in case none have been
|
|
+passed on command line and authentication is required.
|
|
+
|
|
@cindex continue retrieval
|
|
@cindex incomplete downloads
|
|
@cindex resume download
|
|
diff --git a/src/main.c b/src/main.c
|
|
index 8e9d6e9..297499e 100644
|
|
--- a/src/main.c
|
|
+++ b/src/main.c
|
|
@@ -359,6 +359,7 @@ static struct cmdline_option option_data[] =
|
|
#endif
|
|
{ "method", 0, OPT_VALUE, "method", -1 },
|
|
{ "mirror", 'm', OPT_BOOLEAN, "mirror", -1 },
|
|
+ { "netrc", 0, OPT_BOOLEAN, "netrc", -1 },
|
|
{ "no", 'n', OPT__NO, NULL, required_argument },
|
|
{ "no-clobber", 0, OPT_BOOLEAN, "noclobber", -1 },
|
|
{ "no-config", 0, OPT_BOOLEAN, "noconfig", -1},
|
|
@@ -629,6 +630,8 @@ Download:\n"),
|
|
-nc, --no-clobber skip downloads that would download to\n\
|
|
existing files (overwriting them)\n"),
|
|
N_("\
|
|
+ --no-netrc don't try to obtain credentials from .netrc\n"),
|
|
+ N_("\
|
|
-c, --continue resume getting a partially-downloaded file\n"),
|
|
N_("\
|
|
--start-pos=OFFSET start downloading from zero-based position OFFSET\n"),
|
|
diff --git a/testenv/Makefile.am b/testenv/Makefile.am
|
|
index 7104314..ef4158a 100644
|
|
--- a/testenv/Makefile.am
|
|
+++ b/testenv/Makefile.am
|
|
@@ -78,6 +78,7 @@ if HAVE_PYTHON3
|
|
Test-auth-basic-netrc.py \
|
|
Test-auth-basic-netrc-user-given.py \
|
|
Test-auth-basic-netrc-pass-given.py \
|
|
+ Test-auth-basic-no-netrc-fail.py \
|
|
Test-auth-both.py \
|
|
Test-auth-digest.py \
|
|
Test-auth-no-challenge.py \
|
|
diff --git a/testenv/Test-auth-basic-no-netrc-fail.py b/testenv/Test-auth-basic-no-netrc-fail.py
|
|
new file mode 100755
|
|
index 0000000..fad15e9
|
|
--- /dev/null
|
|
+++ b/testenv/Test-auth-basic-no-netrc-fail.py
|
|
@@ -0,0 +1,59 @@
|
|
+#!/usr/bin/env python3
|
|
+from sys import exit
|
|
+from test.http_test import HTTPTest
|
|
+from misc.wget_file import WgetFile
|
|
+
|
|
+"""
|
|
+ This test ensures that Wget will not use credentials from .netrc
|
|
+ when --no-netrc option is specified and Basic authentication is required
|
|
+ and fails.
|
|
+"""
|
|
+############# File Definitions ###############################################
|
|
+File1 = "I am an invisble man."
|
|
+
|
|
+User = "Sauron"
|
|
+Password = "TheEye"
|
|
+
|
|
+File1_rules = {
|
|
+ "Authentication" : {
|
|
+ "Type" : "Basic",
|
|
+ "User" : User,
|
|
+ "Pass" : Password
|
|
+ }
|
|
+}
|
|
+
|
|
+Netrc = "machine 127.0.0.1\n\tlogin {0}\n\tpassword {1}".format(User, Password)
|
|
+
|
|
+A_File = WgetFile ("File1", File1, rules=File1_rules)
|
|
+Netrc_File = WgetFile (".netrc", Netrc)
|
|
+
|
|
+WGET_OPTIONS = "--no-netrc"
|
|
+WGET_URLS = [["File1"]]
|
|
+
|
|
+Files = [[A_File]]
|
|
+LocalFiles = [Netrc_File]
|
|
+
|
|
+ExpectedReturnCode = 6
|
|
+ExpectedDownloadedFiles = [Netrc_File]
|
|
+
|
|
+################ Pre and Post Test Hooks #####################################
|
|
+pre_test = {
|
|
+ "ServerFiles" : Files,
|
|
+ "LocalFiles" : LocalFiles
|
|
+}
|
|
+test_options = {
|
|
+ "WgetCommands" : WGET_OPTIONS,
|
|
+ "Urls" : WGET_URLS
|
|
+}
|
|
+post_test = {
|
|
+ "ExpectedFiles" : ExpectedDownloadedFiles,
|
|
+ "ExpectedRetcode" : ExpectedReturnCode
|
|
+}
|
|
+
|
|
+err = HTTPTest (
|
|
+ pre_hook=pre_test,
|
|
+ test_params=test_options,
|
|
+ post_hook=post_test
|
|
+).begin ()
|
|
+
|
|
+exit (err)
|
|
--
|
|
2.7.5
|
|
|