Prefix each log message with PTH_ATTR_NAME. This is set to the pointer
[pwmd.git] / NEWS
blobbb12ce69641a6765038f317facbc7735a7f5d51b
1 PWMD v1.4
2 ----------
3 Ported to libPth2. This fixes key cache locking portability and removes the
4 --disable-locking 'configure' option.
6 Added configuration parameter "syslog" to enable logging to the syslog daemon
7 with facility LOG_DAEMON and priority LOG_INFO.
9 When the key cache changes, send the CACHE status message to each connected
10 client.
12 Reuse libgpg-error error codes more often. If your using libpwmd, please
13 update to the latest version of libpwmd otherwise error codes will be wrong.
15 Fixed creating illegal account names.
17 Added configuration option "keepalive" to specify the interval, in seconds, to
18 send the new KEEPALIVE status message.
20 Added pinentry(1) support. This adds a new configuration parameter
21 "enable_pinentry" (the default is enabled), and few new options that can be
22 set with the new OPTION command: PATH, TTYNAME, TTYTYPE, DISPLAY, TITLE,
23 PROMPT, DESC, TIMEOUT and PINENTRY. Read COMMANDS for details.
25 Also added a new OPTION: CLIENT NAME=VALUE to let clients set a string that is
26 associated with the connections thread ID.
28 The "iterations" configuration parameter can be set to -1 to disable
29 encryption. Setting to 0, the default, will still encrypt with 1 iteration.
31 A few bugfixes. See ChangeLog for details.
34 PWMD v1.3
35 ----------
36 More safety checks when writing the data file after a SAVE command.
38 Added configuration parameter "socket_perms" to set the permissions of the
39 created socked overriding any umask setting. May be useful if a client
40 other than the user who invoked pwmd needs to connect (i.e., ACL's).
42 Added 'configure' option --disable-locking to disable key cache mutex locking.
43 Some systems don't have a complete pthread_mutex_t data type which is needed
44 rather than a pointer (FreeBSD and others probably). Note that using this
45 option increases the risk of key cache and data file corruption when more than
46 one client is using pwmd at the same time and save to the same file. If
47 possible, upgrade your OS and see if this fixes things.
49 A few bugfixes. See ChangeLog for details.
52 PWMD v1.2
53 ----------
54 Added locking of the file/key cache with certain commands. This prevents other
55 clients from modifying the cache until the lock is released. This adds a new
56 pthread compile time dependency.
58 Zlib version 1.2.2.1 or later is now a requirement.
61 PWMD v1.1
62 ----------
63 Added configuration parameter "recursion_depth". This specifies the maximum
64 number of times to follow a "target" attribute for a single element. The
65 default is 20.
67 When creating a "target" attribute, each element in the element path value is
68 no longer modified with the literal '!' character at all. You need to specify
69 the literal instead. This keeps the syntax more consistent with the other
70 commands.
72 Added the COMPRESS and DECOMPRESS status messages. Both show the bytes
73 processed so far, and the total bytes. In order to see the total after
74 upgrading from a previous version you need to save the data file once.
76 Changed the PROGRESS status message to ENCRYPT and DECRYPT.
78 The "disable_mlockall" configuration parameter now defaults to "true". Saves
79 RAM and is overkill for most since each memory deallocation is cleared before
80 being freed. The file cache is still locked in RAM though (if possible).
82 Bugfixes. See ChangeLog for details.
85 PWMD v1.0
86 ----------
87 EPWMD_FILE_NOT_FOUND is no longer used. It is up to the client to determine
88 if the file exists by using the GETCONFIG command along with 'data_directory'.
90 The CLEARCACHE command will always succeed (return 0) even if the file is not
91 found.
93 A few minor bugfixes.
96 PWMD v0.12
97 ----------
98 Added gettext support. Translations welcome.
100 Strip the first '!' of a newly created element. If there's a following one
101 it's an error. This is to avoid syntax errors and confusion with other
102 commands and element paths.
104 Only show the number of iterations so far when showing the PROGRESS status
105 message. The client can get the percentage by calculating the
106 "iteration_progress" with GETCONFIG.
108 Fixed a huge memory leak with (de)compression.
110 The cache status message format has changed to only show the used and
111 available slots and without any text strings to make it easier for clients to
112 parse.
114 SIGUSR1 is caught in the child process. This allows for reloading of the
115 configuration file.
117 Fixed pushing files and xml import with compression.
119 Added --enable-mem-debug to use the standard memory allocators. Valgrind seems
120 to work better this way.
122 Fixed a few memory leaks.
124 Fixed creating invalid XML elements. Elements must not begin with punctuation
125 or digit and not contain any whitespace.
127 The output of the LIST command is no longer sorted. Leave it up to the client.
130 PWMD v0.11
131 ----------
132 Added the GETCONFIG command. This will return a value for a configuration
133 parameter for the opened file or the default value if no file has been opened.
134 The "key" and "key_file" parameters are ignored.
136 Rewrote how element handling is done. No longer uses an xmlTextReader but
137 accesses the xmlDocPtr nodes directly.
139 The STORE command will no longer overwrite the element tree of the last
140 element in the specified element path. Instead it will set the content as
141 usual and keep the child nodes. This affects how GET handles empty elements.
142 GET will return EPWMD_EMPTY instead of EPWMD_TRAILING_ELEMENT. The STORE
143 command can also store content in a root element (account) and remove content
144 or store an empty element by not specifying any content after the last TAB in
145 the element path.
147 Each element in an element path can now be prefixed with the literal '!'
148 character. This allows for following targets of elements other than the root
149 element.
151 The LIST command will now shows all reachable elements including target
152 elements for the specified element path. It also prefixes each element with
153 the literal '!' when needed.
155 Added support for compressing data files before encryption. This adds the
156 "compression_level" configuration parameter. The default is 6 and setting to 0
157 will disable.
159 A couple of bug fixes.
162 PWMD v0.10
163 ----------
164 Fixed libgpg-error descriptions. The errors that pwmd uses for bad syntax and
165 invalid keys etc. used to return an error code that used
166 GPG_ERR_SOURCE_DEFAULT as the source. GPG_ERR_SOURCE_USER_1 is what pwmd uses
167 now. This breaks compatibility with clients that make use of the error codes
168 (i.e., libpwmd). Be sure to update.
170 Non-option arguments on the command line are files to cache upon startup. This
171 acts like the 'cache_push' configuration parameter.
173 The location of the default configuration file is now ~/.pwmd/config and the
174 default data directory is ~/.pwmd/data, and the default log file ~/.pwmd/log.
175 This fixes clients opening these non-data filenames.
177 Fixed default configuration values when an rcfile doesn't have one.
179 The configuration parameters 'key' and 'key_file' now check to make sure the
180 key is valid before adding it to the cache like 'cache_push' does.
182 Clear the file cache and free the memlist on SIGABRT when debugging is not
183 enabled.
185 Added command line option -b to fork pwmd to the background.
187 Added configuration parameter "iteration_progress". pwmd will send the client
188 a status message showing the percent of iterations that are complete while
189 encrypting or decrypting a data file. The default is 0 which disables sending
190 status messages.
192 Sending SIGUSR1 to pwmd will reload the configuration file.
194 New protocol command REALPATH. This will resolve any "target" attribute for
195 all elements in the specified element path and return the result.
197 Some portability (FreeBSD and maybe others) fixes.
199 SIGTERM and SIGABRT are now properly caught in a child process.
201 Bugfixes.
204 PWMD v0.9
205 ---------
206 Now uses the assuan protocol. This requires libassuan and libgpg-error.
208 Clear the shared memory on exit.
210 The CACHE sub-commands ISCACHED, CLEARCACHE and CACHETIMEOUT have been made
211 into their own commands removing the CACHE command itself.
213 The RESETCACHE command and the cache_reset_timeout configuration parameter
214 have been removed. The cached files timeout is reset to it's configured value
215 (or set value with CACHETIMEOUT) after each OPEN or SAVE command.
217 The OPEN command can open another file using the same connection. Beware
218 though that if the OPEN of the new file fails, no file will be open at all.
220 When OPEN'ing a new file with a specified key, cache both the filename and
221 key. Before you had to SAVE to cache the key.
223 All commands will check if the file has been modified before continueing. Not
224 the cache commands though.
226 Don't unlink() a socket filename that wasn't created by pwmd.
228 Fixed allocating more slots than needed.
230 The commands GET, STORE, DELETE and ATTR make use of the "target" attribute
231 unless the element path argument is prefixed with a '!'. The LIST command
232 will support "target" in the next release, hopefully.
234 Accounts names can no longer begin with a '!' character to avoid problems with
235 the "target" attribute.
237 Removed EPWMD_ROOT_TEXT_ELEMENT. The STORE command will return
238 EPWMD_COMMAND_SYNTAX instead.
240 Added command line option -D and configuration parameter
241 "disable_list_and_dump". When specified or enabled, the LIST and DUMP protocol
242 commands will return EPWMD_EMPTY_ELEMENT.
245 PWMD v0.8
246 ---------
247 Use AM_XML2_PATH() for finding libxml2.
249 Split pwmd and libpwmd into their own projects. Both can be found at
250 http://bjk.sourceforge.net/pwmd/.
253 PWMD v0.7
254 ---------
255 cache_push and working directory bugfix.
257 Added two new configuration options "key" and "key_file". Works with
258 cache_push too.
260 Added a boolean "cache_reset_timeout" configuration option to reset the timer
261 for a cached key when the OPEN or SAVE commands are used.
263 Added two new protocol commands CACHE RESET which clears only the key for the
264 specified file and CACHE RESETALL which clears the key for all files.
266 The "name" and "target" attributes are now case-sensitive.
268 The value of an element path that contains a "target" attribute can be
269 obtained by prefixing the account element with a '!'.
272 PWMD v0.6
273 ---------
274 Fix for the LIST command. When an element path was specified and the document
275 had following elements in the tree the following elements would be shown.
277 Added the CACHE TIMEOUT command to specify the lifetime of a cached file in
278 seconds. This adds a new configuration file setting "cache_timeout".
280 Added per-file settings in the configuration file. A file section is declared
281 by placing the filename in braces. Only the "iterations" and "cache_timeout"
282 settings are used in a file section.
284 No longer chdir() to the data directory.
287 PWMD v0.5
288 ---------
289 If a file size is 0 then CACHE ISCACHED will return EPWMD_FILE_NOT_FOUND.
291 Write a structure to the data file which specifies the iterations and IV. This
292 lets you open a file that had a different iteration setting than the current
293 setting. Breaks file compatibility with previous versions for hopefully the
294 last time.
296 cache_push with an invalid password bugfix.
298 Added command line option -I to import an XML file and write the encrypted
299 data to stdout.
302 PWMD v0.4
303 ---------
304 Use AES-256-CBC to store the data file. This breaks file compatibility with
305 older versions. Sorry.
307 The ATTR protocol command has a new GET sub-command to get an attribute value
308 for an element path.
310 The LIST protocol command can now take an element path.
312 The DUMP command will format it's output.
314 Use MAP_ANONYMOUS|MAP_SHARED mmap() flags on Linux 2.4+. This won't create a
315 file in /dev/shm. #define MMAP_ANONYMOUS_SHARED in config.h if your OS
316 supports this.
318 Fixed closing file descriptors.
320 Fixed some memory leaks.
322 The contents of all memory allocated by Glib, libXML and libgcrypt is cleared
323 before free()ing.
325 Added an "iterations" configuration parameter. This specifies the amount of
326 times to encrypt the data to prevent dictionary attacks. Idea borrowed from
327 aespipe.
330 PWMD v0.3
331 ---------
332 The SETATTR protocol command has been renamed to ATTR. This new command
333 includes three new sub-commands: SET, DELETE and LIST, to SET or update an
334 attribute, DELETE to delete an attribute and LIST to list attributes of an
335 element path. Read PROTOCOL for details.
337 Added the TARGET attribute. If an element has this attribute set, it's value
338 is another element path. It's recursive too so the destination element path
339 can be an element with a TARGET attribute. Be careful of loops though.
341 Added the DUMP protocol command. It shows the in-memory document. Useful for
342 cleaning up empty elements that aren't shown with any command.
344 The "name" attribute can be used in any element but cannot be removed for the
345 root "account" element.
347 More strict element name validation for new elements.
349 Code reorganization. Protocol commands have been put in src/commands.c.
351 The LIST command won't show element values anymore unless DEBUG was defined at
352 compile time. You must use the GET command to get a value.
354 The OPEN and SAVE protocol commands no longer expect a base64 encoded key.
355 Plain text is where it's at.
357 The STORE command wont base64 encode the value. We'll leave it up to the
358 client. But it's still recommended to avoid parsing errors.
360 All of the command line options have been moved into a configuration file. By
361 default pwmd will look for it in ~/.pwmdrc. You can use -f to specify an
362 alternate file. If the file doesn't exist, then some defaults will be used.
363 There is one new config option though; "cache_push" will take a list of
364 filenames as an argument. This will prompt for passwords upon startup and add
365 the file to the cache. It's a (temporary?) fix for background processes that
366 don't have an attached tty (see libpwmd/KnownBugs). Just make sure the file
367 the other process needs is added to the cache.
370 PWMD v0.2
371 ---------
372 There is a library included in the archive to make interfacing the pwmd alot
373 easier. See libpwmd/README for more information.
375 A (temporary) fix for 100% CPU usage after a client connects.
377 GnuPG is no longer used for data encryption. Instead, libgcrypt will
378 encrypt/decrypt the data with AES-128 key. The OPEN and SAVE commands will
379 need the base64 encoded key.
381 Renamed host to hostname and added sslfingerprint to the DTD.
383 Added command line option -s to specify the socket path.
385 Added command line option -d to specify where pwmd will open and save the data
386 files.
388 Renamed protocol command SET to SETATTR.
390 Added shared memory file caching. If a file is found in the cache then the
391 cached password associated with the file will be used with the OPEN command.
392 With SAVE, if there is no cached password a key is required, else the cached
393 password will be used unless there is a key argument. This also adds a new
394 protocol command CACHE with 3 subcommands CLEARALL, CLEAR and ISCACHED.
395 Sending the SIGHUP signal to pwmd will clear the file cache.
397 Added command line option -M to disable calling mlockall(). mlock() will still
398 be used for the file cache reguardless of this option.
400 Added command line option -C to specify the file cache size. The cache size
401 must be in multiples of PAGE_SIZE.
403 Added command line option -l to enable logging to the specified file.
405 If there is a protocol command error, ERR is returned along with a protocol
406 error code and description. See src/pwmd_error.h for error codes.
408 Fix for the DELETE command and deleting an entire element tree when an invalid
409 element was in the element path.
411 Fix for the GET command and finding elements of the same name in other
412 accounts.
414 Added a manual page.
417 PWMD v0.1
418 ---------
419 Initial release.