03:07 < nickm> ok. tomorrow morning I try to get messaging sorted, and try to write up a registry-based exe version checker. - Download improvements. - Back off on download failure. - Handle full stalled file in download. - Use if-modified-since on timestamp - Write client-side code . Decide early if a python implementation will do for v1. o Adjust httplib, urllib2 to use socks4a. o Check SOCKS package for suitability as basis for socks4a support? - Look into best packageing practices . Write code to run, telling another process about status, eventually coming up with a list of packages to install or an "A-OK" signal. D GUI o DL-via-Tor o Install-when-done o Verbose output - quiet output. X Rendezvous-back with Tor when done. - Better configurability: let users override mirrors, keys, etc. - Backend for "A bunch of files you can unzip someplace." - OSX backend (hard). - Proper exponential back-off on download backend. - Wrapping - More unit tests . Documentation - More comments, more tests o Document EXE and RPM formats in HOWTO. . full pydoc - revise spec - Testing - Much bigger unit tests. - Bugs Roger keeps noticing - you can add the same role to a key twice. - wishlist item: thandy-pk dumpkey-all - Confusing tracebacks that could use a check and error message: If you type the wrong password, Traceback (most recent call last): File "/home/thandy/updater-live/lib/python2.4/site-packages/thandy/SignerCLI.p y", line 313, in ? main() File "/home/thandy/updater-live/lib/python2.4/site-packages/thandy/SignerCLI.p y", line 308, in main globals()[cmd](args) File "/home/thandy/updater-live/lib/python2.4/site-packages/thandy/SignerCLI.p y", line 202, in keygen k.load() File "/home/thandy/updater-live//lib/python2.4/site-packages/thandy/keys.py", line 385, in load contents = decryptSecret(contents, password) File "/home/thandy/updater-live//lib/python2.4/site-packages/thandy/keys.py", line 343, in decryptSecret raise thandy.BadPassword() thandy.BadPassword when your ~/.thandy/timestamp_key didn't get the secret key dumped too, thandy@moria:~$ thandy-server timestamp Traceback (most recent call last): File "/home/thandy/updater-live/lib/python2.4/site-packages/thandy/ServerCLI.p y", line 191, in ? main() File "/home/thandy/updater-live/lib/python2.4/site-packages/thandy/ServerCLI.p y", line 186, in main globals()[cmd](args) File "/home/thandy/updater-live/lib/python2.4/site-packages/thandy/ServerCLI.p y", line 166, in timestamp keylist = thandy.formats.makeKeylistObj(ts_keyfile, True) File "/home/thandy/updater-live//lib/python2.4/site-packages/thandy/formats.py ", line 752, in makeKeylistObj klist.append({'key': k.format(private=includePrivate), 'roles' : k.getRoles( ) }) File "/home/thandy/updater-live//lib/python2.4/site-packages/thandy/keys.py", line 189, in format result['d'] = intToBase64(self.key.d) File "/usr/lib/python2.4/site-packages/Crypto/PublicKey/RSA.py", line 154, in __getattr__ return getattr(self.key, attr) AttributeError: rsaKey instance has no attribute 'd'