Removed EPWMD_FILE_NOT_FOUND.
[pwmd.git] / NEWS
blobadc64c7ec6e3024276efc9a0f1c1e3ac50e80940
1 PWMD v1.2
2 ----------
3 Added locking of the file/key cache with certain commands. This prevents other
4 clients from modifying the cache until the lock is released. This adds a new
5 pthread compile time dependency.
7 Zlib version 1.2.2.1 or later is now a requirement.
10 PWMD v1.1
11 ----------
12 Added configuration parameter "recursion_depth". This specifies the maximum
13 number of times to follow a "target" attribute for a single element. The
14 default is 20.
16 When creating a "target" attribute, each element in the element path value is
17 no longer modified with the literal '!' character at all. You need to specify
18 the literal instead. This keeps the syntax more consistent with the other
19 commands.
21 Added the COMPRESS and DECOMPRESS status messages. Both show the bytes
22 processed so far, and the total bytes. In order to see the total after
23 upgrading from a previous version you need to save the data file once.
25 Changed the PROGRESS status message to ENCRYPT and DECRYPT.
27 The "disable_mlockall" configuration parameter now defaults to "true". Saves
28 RAM and is overkill for most since each memory deallocation is cleared before
29 being freed. The file cache is still locked in RAM though (if possible).
31 Bugfixes. See ChangeLog for details.
34 PWMD v1.0
35 ----------
36 EPWMD_FILE_NOT_FOUND is no longer used. It is up to the client to determine
37 if the file exists by using the GETCONFIG command along with 'data_directory'.
39 The CLEARCACHE command will always succeed (return 0) even if the file is not
40 found.
42 A few minor bugfixes.
45 PWMD v0.12
46 ----------
47 Added gettext support. Translations welcome.
49 Strip the first '!' of a newly created element. If there's a following one
50 it's an error. This is to avoid syntax errors and confusion with other
51 commands and element paths.
53 Only show the number of iterations so far when showing the PROGRESS status
54 message. The client can get the percentage by calculating the
55 "iteration_progress" with GETCONFIG.
57 Fixed a huge memory leak with (de)compression.
59 The cache status message format has changed to only show the used and
60 available slots and without any text strings to make it easier for clients to
61 parse.
63 SIGUSR1 is caught in the child process. This allows for reloading of the
64 configuration file.
66 Fixed pushing files and xml import with compression.
68 Added --enable-mem-debug to use the standard memory allocators. Valgrind seems
69 to work better this way.
71 Fixed a few memory leaks.
73 Fixed creating invalid XML elements. Elements must not begin with punctuation
74 or digit and not contain any whitespace.
76 The output of the LIST command is no longer sorted. Leave it up to the client.
79 PWMD v0.11
80 ----------
81 Added the GETCONFIG command. This will return a value for a configuration
82 parameter for the opened file or the default value if no file has been opened.
83 The "key" and "key_file" parameters are ignored.
85 Rewrote how element handling is done. No longer uses an xmlTextReader but
86 accesses the xmlDocPtr nodes directly.
88 The STORE command will no longer overwrite the element tree of the last
89 element in the specified element path. Instead it will set the content as
90 usual and keep the child nodes. This affects how GET handles empty elements.
91 GET will return EPWMD_EMPTY instead of EPWMD_TRAILING_ELEMENT. The STORE
92 command can also store content in a root element (account) and remove content
93 or store an empty element by not specifying any content after the last TAB in
94 the element path.
96 Each element in an element path can now be prefixed with the literal '!'
97 character. This allows for following targets of elements other than the root
98 element.
100 The LIST command will now shows all reachable elements including target
101 elements for the specified element path. It also prefixes each element with
102 the literal '!' when needed.
104 Added support for compressing data files before encryption. This adds the
105 "compression_level" configuration parameter. The default is 6 and setting to 0
106 will disable.
108 A couple of bug fixes.
111 PWMD v0.10
112 ----------
113 Fixed libgpg-error descriptions. The errors that pwmd uses for bad syntax and
114 invalid keys etc. used to return an error code that used
115 GPG_ERR_SOURCE_DEFAULT as the source. GPG_ERR_SOURCE_USER_1 is what pwmd uses
116 now. This breaks compatibility with clients that make use of the error codes
117 (i.e., libpwmd). Be sure to update.
119 Non-option arguments on the command line are files to cache upon startup. This
120 acts like the 'cache_push' configuration parameter.
122 The location of the default configuration file is now ~/.pwmd/config and the
123 default data directory is ~/.pwmd/data, and the default log file ~/.pwmd/log.
124 This fixes clients opening these non-data filenames.
126 Fixed default configuration values when an rcfile doesn't have one.
128 The configuration parameters 'key' and 'key_file' now check to make sure the
129 key is valid before adding it to the cache like 'cache_push' does.
131 Clear the file cache and free the memlist on SIGABRT when debugging is not
132 enabled.
134 Added command line option -b to fork pwmd to the background.
136 Added configuration parameter "iteration_progress". pwmd will send the client
137 a status message showing the percent of iterations that are complete while
138 encrypting or decrypting a data file. The default is 0 which disables sending
139 status messages.
141 Sending SIGUSR1 to pwmd will reload the configuration file.
143 New protocol command REALPATH. This will resolve any "target" attribute for
144 all elements in the specified element path and return the result.
146 Some portability (FreeBSD and maybe others) fixes.
148 SIGTERM and SIGABRT are now properly caught in a child process.
150 Bugfixes.
153 PWMD v0.9
154 ---------
155 Now uses the assuan protocol. This requires libassuan and libgpg-error.
157 Clear the shared memory on exit.
159 The CACHE sub-commands ISCACHED, CLEARCACHE and CACHETIMEOUT have been made
160 into their own commands removing the CACHE command itself.
162 The RESETCACHE command and the cache_reset_timeout configuration parameter
163 have been removed. The cached files timeout is reset to it's configured value
164 (or set value with CACHETIMEOUT) after each OPEN or SAVE command.
166 The OPEN command can open another file using the same connection. Beware
167 though that if the OPEN of the new file fails, no file will be open at all.
169 When OPEN'ing a new file with a specified key, cache both the filename and
170 key. Before you had to SAVE to cache the key.
172 All commands will check if the file has been modified before continueing. Not
173 the cache commands though.
175 Don't unlink() a socket filename that wasn't created by pwmd.
177 Fixed allocating more slots than needed.
179 The commands GET, STORE, DELETE and ATTR make use of the "target" attribute
180 unless the element path argument is prefixed with a '!'. The LIST command
181 will support "target" in the next release, hopefully.
183 Accounts names can no longer begin with a '!' character to avoid problems with
184 the "target" attribute.
186 Removed EPWMD_ROOT_TEXT_ELEMENT. The STORE command will return
187 EPWMD_COMMAND_SYNTAX instead.
189 Added command line option -D and configuration parameter
190 "disable_list_and_dump". When specified or enabled, the LIST and DUMP protocol
191 commands will return EPWMD_EMPTY_ELEMENT.
194 PWMD v0.8
195 ---------
196 Use AM_XML2_PATH() for finding libxml2.
198 Split pwmd and libpwmd into their own projects. Both can be found at
199 http://bjk.sourceforge.net/pwmd/.
202 PWMD v0.7
203 ---------
204 cache_push and working directory bugfix.
206 Added two new configuration options "key" and "key_file". Works with
207 cache_push too.
209 Added a boolean "cache_reset_timeout" configuration option to reset the timer
210 for a cached key when the OPEN or SAVE commands are used.
212 Added two new protocol commands CACHE RESET which clears only the key for the
213 specified file and CACHE RESETALL which clears the key for all files.
215 The "name" and "target" attributes are now case-sensitive.
217 The value of an element path that contains a "target" attribute can be
218 obtained by prefixing the account element with a '!'.
221 PWMD v0.6
222 ---------
223 Fix for the LIST command. When an element path was specified and the document
224 had following elements in the tree the following elements would be shown.
226 Added the CACHE TIMEOUT command to specify the lifetime of a cached file in
227 seconds. This adds a new configuration file setting "cache_timeout".
229 Added per-file settings in the configuration file. A file section is declared
230 by placing the filename in braces. Only the "iterations" and "cache_timeout"
231 settings are used in a file section.
233 No longer chdir() to the data directory.
236 PWMD v0.5
237 ---------
238 If a file size is 0 then CACHE ISCACHED will return EPWMD_FILE_NOT_FOUND.
240 Write a structure to the data file which specifies the iterations and IV. This
241 lets you open a file that had a different iteration setting than the current
242 setting. Breaks file compatibility with previous versions for hopefully the
243 last time.
245 cache_push with an invalid password bugfix.
247 Added command line option -I to import an XML file and write the encrypted
248 data to stdout.
251 PWMD v0.4
252 ---------
253 Use AES-256-CBC to store the data file. This breaks file compatibility with
254 older versions. Sorry.
256 The ATTR protocol command has a new GET sub-command to get an attribute value
257 for an element path.
259 The LIST protocol command can now take an element path.
261 The DUMP command will format it's output.
263 Use MAP_ANONYMOUS|MAP_SHARED mmap() flags on Linux 2.4+. This won't create a
264 file in /dev/shm. #define MMAP_ANONYMOUS_SHARED in config.h if your OS
265 supports this.
267 Fixed closing file descriptors.
269 Fixed some memory leaks.
271 The contents of all memory allocated by Glib, libXML and libgcrypt is cleared
272 before free()ing.
274 Added an "iterations" configuration parameter. This specifies the amount of
275 times to encrypt the data to prevent dictionary attacks. Idea borrowed from
276 aespipe.
279 PWMD v0.3
280 ---------
281 The SETATTR protocol command has been renamed to ATTR. This new command
282 includes three new sub-commands: SET, DELETE and LIST, to SET or update an
283 attribute, DELETE to delete an attribute and LIST to list attributes of an
284 element path. Read PROTOCOL for details.
286 Added the TARGET attribute. If an element has this attribute set, it's value
287 is another element path. It's recursive too so the destination element path
288 can be an element with a TARGET attribute. Be careful of loops though.
290 Added the DUMP protocol command. It shows the in-memory document. Useful for
291 cleaning up empty elements that aren't shown with any command.
293 The "name" attribute can be used in any element but cannot be removed for the
294 root "account" element.
296 More strict element name validation for new elements.
298 Code reorganization. Protocol commands have been put in src/commands.c.
300 The LIST command won't show element values anymore unless DEBUG was defined at
301 compile time. You must use the GET command to get a value.
303 The OPEN and SAVE protocol commands no longer expect a base64 encoded key.
304 Plain text is where it's at.
306 The STORE command wont base64 encode the value. We'll leave it up to the
307 client. But it's still recommended to avoid parsing errors.
309 All of the command line options have been moved into a configuration file. By
310 default pwmd will look for it in ~/.pwmdrc. You can use -f to specify an
311 alternate file. If the file doesn't exist, then some defaults will be used.
312 There is one new config option though; "cache_push" will take a list of
313 filenames as an argument. This will prompt for passwords upon startup and add
314 the file to the cache. It's a (temporary?) fix for background processes that
315 don't have an attached tty (see libpwmd/KnownBugs). Just make sure the file
316 the other process needs is added to the cache.
319 PWMD v0.2
320 ---------
321 There is a library included in the archive to make interfacing the pwmd alot
322 easier. See libpwmd/README for more information.
324 A (temporary) fix for 100% CPU usage after a client connects.
326 GnuPG is no longer used for data encryption. Instead, libgcrypt will
327 encrypt/decrypt the data with AES-128 key. The OPEN and SAVE commands will
328 need the base64 encoded key.
330 Renamed host to hostname and added sslfingerprint to the DTD.
332 Added command line option -s to specify the socket path.
334 Added command line option -d to specify where pwmd will open and save the data
335 files.
337 Renamed protocol command SET to SETATTR.
339 Added shared memory file caching. If a file is found in the cache then the
340 cached password associated with the file will be used with the OPEN command.
341 With SAVE, if there is no cached password a key is required, else the cached
342 password will be used unless there is a key argument. This also adds a new
343 protocol command CACHE with 3 subcommands CLEARALL, CLEAR and ISCACHED.
344 Sending the SIGHUP signal to pwmd will clear the file cache.
346 Added command line option -M to disable calling mlockall(). mlock() will still
347 be used for the file cache reguardless of this option.
349 Added command line option -C to specify the file cache size. The cache size
350 must be in multiples of PAGE_SIZE.
352 Added command line option -l to enable logging to the specified file.
354 If there is a protocol command error, ERR is returned along with a protocol
355 error code and description. See src/pwmd_error.h for error codes.
357 Fix for the DELETE command and deleting an entire element tree when an invalid
358 element was in the element path.
360 Fix for the GET command and finding elements of the same name in other
361 accounts.
363 Added a manual page.
366 PWMD v0.1
367 ---------
368 Initial release.