Skip to content

Fixing errors display when using options '--ns' or '--ds'#382

Merged
MichaelTimbert merged 10 commits intozonemaster:developfrom
MichaelTimbert:358
Oct 23, 2024
Merged

Fixing errors display when using options '--ns' or '--ds'#382
MichaelTimbert merged 10 commits intozonemaster:developfrom
MichaelTimbert:358

Conversation

@MichaelTimbert
Copy link
Contributor

Purpose

This separate CLI errors from Engine errors.
Errors on CLI argument are catch before displaying the header.

Context

Fixes #358

Changes

I have split CLI argument verification from Engine settings.

I have also add regex validation for '--ds' arguments

How to test this PR

Stress test zonemaster-cli with various '--ns' and '--ds' arguments.
Errors from command line input validation must be display before any header.
Errors from the Engine must be formatted correctly after the header.

here some example to cmd to run:

zonemaster-cli --show-testcase --no-ipv6 --test basic/basic01 zonemaster.net --ns 'ns1.zonemaster.net'
zonemaster-cli --show-testcase  example.fr --ns 'ns1.zonemaster..fr.'
zonemaster-cli --show-testcase  example.fr --ns 'ns1.zonemaster.fr/542.0.0.1'
zonemaster-cli --show-testcase  example.fr --ns '/215.4.6.1'
zonemaster-cli --show-testcase afnic.fr --ds "32674 13 2 12CCEEFE3ECD007C"
zonemaster-cli --show-testcase afnic.fr --ds "32674,13,2,NOTHEXADECIMAL"

@MichaelTimbert MichaelTimbert linked an issue Aug 12, 2024 that may be closed by this pull request
@MichaelTimbert MichaelTimbert added the V-Minor Versioning: The change gives an update of minor in version. label Aug 19, 2024
@MichaelTimbert MichaelTimbert added this to the v2024.2 milestone Aug 19, 2024
@matsduf
Copy link
Contributor

matsduf commented Aug 21, 2024

This PR is based on develop branch before the last release. I suggest that it is rebased on latest master or develop branch.

Copy link
Contributor

@matsduf matsduf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The changes are fine. When the other review comments are handled I can approve.

@matsduf matsduf dismissed their stale review August 28, 2024 13:31

Looks fine now.

matsduf
matsduf previously approved these changes Aug 28, 2024
@matsduf
Copy link
Contributor

matsduf commented Oct 11, 2024

@MichaelTimbert, can you please handle the conflicts?

MichaelTimbert and others added 8 commits October 21, 2024 08:41
I have extracted CLI argument verification from 'add_fake_delegation' and 'add_fake_ds'
to 'check_fake_ds' and 'check_fake_delegation'.
check_* functions are called before displaying the header and only displays CLI argument errors.
add_* functions are called after the header and throw errors from the Engine.
Code formatting

Co-authored-by: tgreenx <96772376+tgreenx@users.noreply.github.com>
Co-authored-by: Marc van der Wal <103426270+marc-vanderwal@users.noreply.github.com>
Remove unused variables

Co-authored-by: tgreenx <96772376+tgreenx@users.noreply.github.com>
Improve code

Co-authored-by: tgreenx <96772376+tgreenx@users.noreply.github.com>
Move --ns & --ds validation earlier in the code

Co-authored-by: tgreenx <96772376+tgreenx@users.noreply.github.com>
Improve code and regex validation

Co-authored-by: Marc van der Wal <marc.vanderwal@afnic.fr>
Reuse code from Zonemaster::Engine for IP validation

Co-authored-by: Mats Dufberg <mats.dufberg@iis.se>
Better hint for --ds option

Co-authored-by: Mats Dufberg <mats.dufberg@iis.se>
marc-vanderwal
marc-vanderwal previously approved these changes Oct 21, 2024
Copy link
Contributor

@matsduf matsduf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

# zonemaster-cli --show-testcase --no-ipv6 --test Basic zonemaster.net --ns ns1.zonemaster.net --level info
   1.11 ERROR    Unspecified    The fake delegation of domain zonemaster.net includes an in-zone name server ns1.zonemaster.net without mandatory glue (without IP address).
  \ 
Seconds Level    Testcase       Message
======= ======== ============== =======
   0.00 INFO     Unspecified    Using version v6.0.0 of the Zonemaster engine.
   0.00 INFO     Basic01        The zone "zonemaster.net" is found.
   0.00 INFO     Basic01        This is a test of an undelegated domain so finding the parent zone is disregarded.
   0.16 CRITICAL Basic02        There is no working name server for "zonemaster.net" so it is unreachable.
   0.16 ERROR    Basic02        Name server "ns1.zonemaster.net" cannot be resolved into an IP address.

Why is the first message before the header?

@MichaelTimbert
Copy link
Contributor Author

# zonemaster-cli --show-testcase --no-ipv6 --test Basic zonemaster.net --ns ns1.zonemaster.net --level info
   1.11 ERROR    Unspecified    The fake delegation of domain zonemaster.net includes an in-zone name server ns1.zonemaster.net without mandatory glue (without IP address).
  \ 
Seconds Level    Testcase       Message
======= ======== ============== =======
   0.00 INFO     Unspecified    Using version v6.0.0 of the Zonemaster engine.
   0.00 INFO     Basic01        The zone "zonemaster.net" is found.
   0.00 INFO     Basic01        This is a test of an undelegated domain so finding the parent zone is disregarded.
   0.16 CRITICAL Basic02        There is no working name server for "zonemaster.net" so it is unreachable.
   0.16 ERROR    Basic02        Name server "ns1.zonemaster.net" cannot be resolved into an IP address.

Why is the first message before the header?

I mistakenly moved the add_fake_* before displaying the header. it's now fixed.

@MichaelTimbert MichaelTimbert merged commit 7bc5b7e into zonemaster:develop Oct 23, 2024
@marc-vanderwal
Copy link
Contributor

Release testing for 2024.2:

When trying the first command, the output doesn’t report any errors, although it should:

$ zonemaster-cli --show-testcase --no-ipv6 --test basic/basic01 zonemaster.net --ns 'ns1.zonemaster.net'
  \
Seconds Level    Testcase       Message
======= ======== ============== =======

All other command lines listed in the testing procedures show an error, without showing the “seconds, level, testcase, message” header at all, so I assume this works as expected.

I’ve created issue #402 to track this problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

V-Minor Versioning: The change gives an update of minor in version.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect header placement when using options '--ns' or '--ds'

4 participants