Developer Top of Mind

Each month members of the Lieberman Software product development staff present their favorite subjects about the company’s products in the Developer Top of Mind feature.

Topics may include undocumented features and functionality not previously promoted by the company, providing you with more insight on what’s going on with Lieberman products behind the scenes.

August, 2012 - Options in Enterprise Random Password Manager

Enterprise Random Password Manager (ERPM) has an evolving mechanism for loading and saving various run-time configurable options. Initially, most of these options were set via registry values, with somewhat ad-hoc naming conventions This persists into the current code, but primarily only for legacy reasons.

The new internal options structure supports namespace-qualified options with strongly-typed values, which are settable via various input locations. For example, you can set options via command line, per-module config file, or in a well-defined registry location. This allows configuration data to be easily modified during testing, and/or to support particular customer scenarios. It also lets our developers expose some configuration parameters before we have UI to support them - allowing updates “in the field” as necessary.

Here’s an example - say you want to enable the auto-archiving feature for the text logs. In this case, the [undocumented]option value is ”Options.Logging.BuiltinOutputs. LogToFile.Archiving.Enabled”. You can set this option value from the command line, using the /Option switch (ie: “/Option:Logging.BuiltinOutputs.LogToFile.Archiving.Enabled=1”). Alternatively, you can set it in a configuration file, or a registry value. All of these will be read, and the values seamlessly integrated. Moreover, none of the user-set options will be overwritten by any configuration options; the subsystem tracks the source of settings, and only writes those which the user explicitly sets through the UI.

Some future planned options enhancements include:

Add DB table as an options source

Expose options in a dialog with edit capability (similar to Firefox about:config)