wget-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

wget | Add --resolve=HOST:IP option to override hostname DNS resolution


From: Shamil Gumirov (@shamil.gumirov)
Subject: wget | Add --resolve=HOST:IP option to override hostname DNS resolution (!20)
Date: Fri, 07 May 2021 14:51:04 +0000


Shamil Gumirov created a merge request: 
https://gitlab.com/gnuwget/wget/-/merge_requests/20

Project:Branches: shamil.gumirov/wget:shamil/add-resolve-option/0 to 
gnuwget/wget:master
Author:   Shamil Gumirov




Motivation: to use wget spider mode in CI pipeline with overriding the hostname
DNS resolution without changes to `/etc/hosts`. `--resolve` is inspired with
a similar option in `curl` (which cannot be used for the same purpose due to 
lack
of spider mode).

Example of usage: `wget --resolve=domain.com:127.0.0.1 --spider -r -nd -nv 
domain.com/`

I do appreciate any suggestion on improving this patch.

Note: Due to the possibility to disable IPv6 with a preprocessor flag,
this patch has to support the case with IPv4 only addresses parsing.

Below is a commit message:

```
* src/host.c: add a pair of functions to parse IP v4/6 address to
  address_list, and a function to store mapping hostname to address
  in cache. Due to possibility to compile without IPv6 support there's
  a need to have separate address parsing implementations for IP v4/v6.
  (cache_host_ip): parse address and call cache_store to save mapping
  (parse_ipv6_address_list): validate ip with is_valid_ipv6_address
  and is_valid_ipv4_address, then parse it with inet_pton. Return
  address_list.
  (parse_ipv4_address_list): check if the address is IPv4 and
  parse it with inet_aton. Return address_list.
* src/host.h: Prototype for cache_host_ip.
* src/init.c: Add new commandline option --resolve=HOST:IP.
  (struct host_ip): store a pair host and ip.
  (split_host_ip): split HOST:IP string to host_ip struct.
  (cmd_spec_resolve_host): call cache_host_ip or display error.
  (test_resolve_argument_parse): unit test for parsing --resolve
  arguments.
* src/main.c: add --resolve option with its metainfo in option_data
  and display an error when DNS cache is disabled at the same time
  when --resolve is specified.
  (print_help): add help on --resolve
  (main): display an error and exit when dns cache is disabled and
  --resolve is specified at the same time.
* src/options.h: add resolve flag to check if --resolve is used.
* testenv/Test--resolve.py: test for --resolve.
* tests/Makefile.am: enable Test--resolve.px test.
* tests/Test--resolve.px: add test for --resolve.
* tests/unit-tests.c (all-tests): enable test
  test_resolve_argument_parse
* tests/unit-tests.h: prototype for test_resolve_argument_parse
```

-- 
Reply to this email directly or view it on GitLab: 
https://gitlab.com/gnuwget/wget/-/merge_requests/20
You're receiving this email because of your account on gitlab.com.




reply via email to

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