1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
o get messaging sorted
o try to write up a registry-based exe version checker.,
o Decouple install from check: they are not necessarily related.
o Generate newer, better objects internally.
o Generate new, better formats for existing 'exe' items
o Generate command items properly.
- Missing packaging features:
- Generate multi-item packages properly.
- Transition better for checking on a given item
- Implement remove
- Get RPM actually more tested
- Get install-from-compressed-file working.
- Transaction support where available.
- OSX backend
. Download improvements.
o Back off on download failure.
o Handle full stalled file in download.
- Use if-modified-since on timestamp
o Write client-side code
o 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?
o Look into best packaging practices
o 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
o quiet output.
X Rendezvous-back with Tor when done.
- Better configurability: let users override mirrors, keys, etc.
- 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.
o Bugs Roger keeps noticing
o you can add the same role to a key twice.
o wishlist item: thandy-pk dumpkey-all
o Already there: Run "thandy-pk dumpkey" with no arguments
- 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
[ I maintain that BadPassword _is_ an error message. I'll make it say
"Password Incorrect", though, so it looks less like a bug.]
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'
[ Gives a more descriptive error now. ]
|