Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"--format string" has no leading header delimiters - some output can be difficult to read - and non-printing characters #13

Open
thx1111 opened this issue Jul 19, 2022 · 1 comment

Comments

@thx1111
Copy link

thx1111 commented Jul 19, 2022

This may - or may not - be a "no brainer" issue for sockdump.py users. Nonetheless -

The output from sockdump.py --format string ... has no leading delimiters to set apart the descriptive header from the actual data into and out of the socket. A trailing delimiter is already included with the python3 print() command by default.

The output format is not a problem with, for instance, an http interaction, which is profuse with "CR/LF" line endings. However, when viewing output from interaction with an smtp "milter" socket, many interactions involve short commands with no such "CR/LF" line endings. The result is that a single line displays data from an interaction in front of the header for the following interaction. This can be very confusing, especially the first time it is seen.

Of course, the user can easily modify the sockdump.py script to add leading delimiters to the header output, which then act as effective delimiters to those, in this example, short milter commands which have no "LF" terminators. Still, the question arises, would we like sockdump.py to provide, perhaps, an alternative format option which adds a line separator before the header?

To avoid interfering with the way sockdump.py currently functions, there might be an additional - rather trivial - option, perhaps "--format delimited", which is the same as "--format string" except with a simple "LF" preceding the header, so that the header is always set apart, on a line by itself, regardless of the form of the data being displayed.

Or, maybe sockdump.py should just include a leading "LF" in the header, by default? That's the simple ask.

And then, the user has to keep in mind that this "LF" at the end of the data is also not itself part of that data, but was a "LF" added by sockdump.py. But, I expect that that is easier than trying to read "run together" output on a single line.

In my case, I've added an additional leading "LF LF TAB" to the header, just to leave an empty line between data exchanges, and to set off the header itself from those short milter command lines. But that's just my preference.

And, something related, the display of non-printing characters in "--format string" output is an issue. This is something that may not be immediately apparent to the user, especially the new user, when data containing non-printing characters is displayed on a terminal, where those characters will be "invisible". Interestingly, when using the "--output" option, and viewing the output file with, say, less, then otherwise non-printing characters will be apparent, especially shown with reversed colors. But on a terminal - not so much.

Another question then, would we like a sockdump.py option which automatically displays non-printing characters to a terminal?

Of course, the user can easily use sockdump.py --format string ... | cat -e, but they would have to know to do this. Should this functionality be included, either automatically or as an option, in sockdump.py itself?

Alternatively, there might be a "--format raw" option, in which the invisible "LF" is removed from the header itself - print('...', end='') - some unusual, easily parsed, visible leading and trailing delimiters included with the sockdump.py header, such as "#$#", and the actual data is set between the headers, unmodified, as is.

Again, instead, the user could just customize the sockdump.py header themselves. But the current header format, as displayed on a terminal, with only the trailing "LF" and no leading "LF", can be confusing with some output.

Some things for consideration...

@mechpen
Copy link
Owner

mechpen commented Jul 20, 2022

interesting. I guess you are dumping some mailer sockets. I haven't tried this. Let me try this out and try to make the output better.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants