Solderpunk
854369afad
Add a 'user' command, analogous to 'root' but jumps to a pubnix user's capsule if the URL starts with ~username.
2023-11-26 12:36:49 +01:00
Solderpunk
0e9953882c
Don't treat filename collisions as fatal.
2023-11-26 12:17:42 +01:00
Solderpunk
e96d373eec
Fix bug with default response to Y/N prompts.
2023-11-26 12:12:19 +01:00
Solderpunk
0e91b4f894
Rename the gus command to search, and the old search to filter. Add option to set search endpoint.
2023-11-25 16:16:54 +01:00
Solderpunk
0268cd426b
Further splitting up and renaming of files.
...
Now that everything lives in src/av98/ as per the latest Python
fashion, it's a problem to have a file named av98.py. So split
it out into main.py (which just implements the argument parsing)
and client.py. The old clientcerts.py has become certmanager.py
so that tab completion for client.py is quick and easy.
2023-11-25 16:12:46 +01:00
Solderpunk
4b759aec70
Add --output command line option for use with --download.
2023-11-25 13:08:36 +01:00
Solderpunk
48c8fd9543
Get on board with modern Python packaging conventions.
...
Remember when we used to make fun of Java people for sticking
everything in a `src/` directory?
2023-11-22 11:20:05 +01:00
Solderpunk
188cacca1f
Restore coloured debug output, like we had before the logging module was adopted.
2023-11-19 16:49:07 +01:00
Solderpunk
b46b15905b
Prepare to cut 1.1.0.
2023-11-19 16:26:48 +01:00
Solderpunk
3abf44d18c
Make the new --download option play nicely with --tls_cert and --tls_key.
2023-11-19 16:23:36 +01:00
Solderpunk
203ffaea90
Replace VF-1's flight-themed sign off with AV-98 policing-themed sign off.
2023-11-19 15:25:29 +01:00
Solderpunk
cbbc410976
Add curl/wget style --download option.
2023-11-19 15:24:26 +01:00
Solderpunk
305f7f9f2c
Make do_quit() silent, move the farewell message to main().
2023-11-19 14:40:26 +01:00
Solderpunk
4df88896a8
Ensure we drive a useable filename for saving items whose URL does not provide one.
2023-11-19 14:38:55 +01:00
Solderpunk
c8c12cab86
Don't trigger a traceback in debug mode for 4x or 5x status codes.
2023-11-19 14:35:13 +01:00
Solderpunk
a0eedac532
Include temporary buffer file name in debug output.
2023-11-19 14:34:29 +01:00
Solderpunk
a459e49fa0
Extract titles from gemtext and use them as GeminiItem.name if that's missing.
2023-11-19 14:27:47 +01:00
Solderpunk
0a9846b342
Correctly report downloaded file size in debug messages.
...
Previously, the return value of fp.write() was used, however for
text files this counts the number of characters written, not the
number of bytes, and for non-ASCII content these differ.
2023-11-19 12:29:48 +01:00
Solderpunk
9970f21e47
Move a little more clutter from av98.py into util.py.
2023-11-19 10:41:08 +01:00
Solderpunk
73ce79310d
Reuse a consistent function for getting Y/N type user input.
2023-11-19 10:20:54 +01:00
Solderpunk
03b90fcd5e
Put config dir discovery/creation in own method, store computed filename of bookmarks.
2023-11-18 19:28:15 +01:00
Solderpunk
62972c0228
Restore cert prompt functionality.
2023-11-18 19:27:42 +01:00
Solderpunk
0393ae3ea3
Correctly track domains which a client cert has been sent to.
2023-11-18 17:15:17 +01:00
Solderpunk
2a70985176
General tidy-up of entire av98.py file.
...
Most a matter of rearranging the order of methods to flow
sensibly, as well writing or updating docstrings, getting rid of
old unused return values, and fixing a few very minor defects.
2023-11-18 15:59:36 +01:00
Solderpunk
247f01e3e7
Update bookmarks to reflect permanent redirects upon exiting.
2023-11-18 14:23:56 +01:00
Solderpunk
de7e5dc254
Factor out client certificate management into its own class/file.
2023-11-18 14:22:32 +01:00
Solderpunk
607223c25a
Get real persnickety about nice option/blackbox alignment.
2023-11-17 20:08:48 +01:00
Solderpunk
a9b34278a8
Don't hardcode black box spacing values.
2023-11-17 19:59:12 +01:00
Solderpunk
4f354ab291
Nicely align setting names and values.
2023-11-17 19:56:47 +01:00
Solderpunk
bd7c5c2110
Log network errors a little more carefully.
2023-11-17 19:44:06 +01:00
Solderpunk
71f8a3dc86
Gracefully handle requests for file:// URLs which point at a directory.
2023-11-16 19:18:30 +01:00
Solderpunk
0ce09f37a6
Gracefully handle requests for file:// URLs where the file does not exist.
2023-11-16 19:14:22 +01:00
Solderpunk
681b11b8a4
Include local file and cached resource handling inside nice try/except error printing.
2023-11-16 19:13:20 +01:00
Solderpunk
91ff51a0ef
Fix subtle breakage on some certs, when ssl_dnsname_match throws a non-CertificateError exception.
2023-11-15 19:47:17 +01:00
Solderpunk
50c43c75b4
Provider progress animation when downloading files > 100 KiB.
2023-11-15 19:46:01 +01:00
Solderpunk
f78b6ff780
Move handling of permanent redirects inside of _fetch_over_network().
2023-11-15 19:45:36 +01:00
Solderpunk
9e2cce7ce0
Print full tracebacks from exceptions when debugging is enabled.
2023-11-15 19:38:45 +01:00
Solderpunk
23b0597b6d
Update email address and copyright years.
2023-11-15 19:38:13 +01:00
Solderpunk
67729fb711
Count redirects in black box recorder.
2023-11-15 18:40:48 +01:00
Solderpunk
480f2cc15f
Rejig how do_bookmark() handles an argument to simplify go_to_gi().
2023-11-15 18:29:52 +01:00
Solderpunk
d2fe381c3e
Change Cache to use a TemporaryDirectory for its storage to
...
ensure and simplify thorough cleanups upon shutdown.
Thanks to Ghost for making me aware of this possibility!
2023-11-15 18:21:11 +01:00
Solderpunk
048b04bed2
Extensively refactor the way temporary files are used.
...
Instead of littering /tmp with one file per download plus one per
rendered gemtext file, just reuse the same two files over and
over. If enabled, caching creates separate copies.
Pretty sure this solves Issue #35 , but I'll test and close that
after also improving the use of cache files...
2023-11-15 18:06:33 +01:00
Solderpunk
713616d556
Refactor of networking logic.
...
1. Move client certificate handling stuff inside of _send_request().
2. Change _fetch_over_network() to not be recursive, by just looping
through calls to _send_request(). This facilitates moving the
redirect-tracking state inside _fetch_over_network(), instead of
keeping it in GeminiClient.
3. Also allow _fetch_over_network() to save response to a provided
filename, and use this to implement do_save(), rather than
_go_to_gi(). This avoids the need for awkward gymnastics with
the internal state.
2023-11-14 19:40:40 +01:00
Solderpunk
01da844141
Pull response parsing inside of _send_request().
2023-11-14 08:56:39 +01:00
Solderpunk
7f1aa5cbf3
Remove unused imports.
2023-11-14 00:38:00 +01:00
Solderpunk
33e66b439b
Test for saveability against a fetched GI, not a tempfile.
2023-11-14 00:36:43 +01:00
Solderpunk
d689cbd04f
Fix _get_active_tmpfile to handle local file GIs.
2023-11-14 00:35:47 +01:00
Solderpunk
3aedd549e5
Remove unecessary duplication of handling code between _handle_gemtext() and _go_to_gi().
2023-11-14 00:33:48 +01:00
Solderpunk
e4a44679dc
Fix saving of local files.
2023-11-14 00:29:59 +01:00
Solderpunk
588d599cb4
Add actual support for reading local files, use it for bookmarks.
2023-11-14 00:15:32 +01:00