Techniques for presenting and collecting end user license agreement acceptance

Techniques are disclosed for presenting and collecting end user license agreement acceptance for software applications or firmware components executed on a computing appliance. A sentry component allows only certain commands to be executed before the relevant end user license agreements are accepted, e.g., commands to configure a network interface and web server on the appliance executed on a shell over a serial interface. Once configured the web server is used to provide a rich interface for presenting end user license agreements and obtaining acceptance thereof. Once the user accepts the terms of the relevant license agreements, then the appliance is made active and all configuration commands become operational, including commands needed to configure the device and start services which would otherwise be prohibited by the sentry component prior to license acceptance.

BACKGROUND

Embodiments of the invention are generally directed to an approach for presenting contract license agreements to users of computing appliances. More specifically, embodiments of the invention provide a variety of techniques for presenting and collecting information indicating user agreement with the terms of a licensing agreement.

Users are frequently required to indicate acceptance of an End-User License Agreements (EULA) before downloading or installing software on a computing system. Such a user may also be required to supply a license key (or other authorizing information) to activate a software application prior to its use.

Similarly, users installing, configuring, or upgrading a computing appliance may be required to accept the terms of a EULA, as such systems typically include embedded software applications made available under the terms of a EULA. For example, a hardware vendor may install and distribute their own (or third party software) as part of their hardware appliance. Computing appliance vendors would prefer to provide users with a rich interface to present and collect and end user's agreement of license terms and any license key or product activation data. For example, a vendor might wish to present license terms in the user's native language (as selected by a user) and using an easy to operate, rich user-interface that allows for printing and browsing of what are frequently large and hard-to-read agreement files. Similarly, a vendor might want to allow a user to activate and configure services using product activation data obtained via a rich user-interface.

However, computing appliances often lack the ability to provide a rich license verification interface. For example, a computing appliance may allow a user to initially boot and configure the appliance via a shell/terminal console accessed over a serial connection (e.g., a standard RS-232 connection used to send and receive ASCII formatted characters). The serial/terminal console is generally limited to presenting unformatted text in response to commands typed at a command prompt. For example, a serial console may allow a user to dump the text of a EULA to a shell window and respond to a yes/no prompt to indicate their acceptance of that license.

Other computing appliances do not provide even a serial connection. For example, some network routers have EULA terms indicating that merely by powering the equipment on, the user is automatically indicating his agreement with the documented terms (usually available on the Web, via printed material in the box or some other media).

SUMMARY

One embodiment of the invention provides a computer-implemented method for configuring a computing appliance. This method may generally include establishing an initial configuration interface to access the computing appliance, receiving one or more configuration commands via the initial configuration interface, and determining whether each of the one or more configuration commands have been authorized for execution prior to the acceptance of an end user license agreement (EULA). This method may also include executing only configuration commands determined to be authorized for execution prior to acceptance of the EULA.

In a particular embodiment, selectively executing the configuration commands based on the determination my include executing commands to configure a network interface on the computing appliance as well as executing commands to enable a web service on the computing appliance. The web service may provide a second interface for configuring the computing appliance, and wherein the web service is configured to present and collect user acceptance to the EULA.

Another embodiment includes a computer-implemented method for configuring a computing appliance. This method may generally include receiving, via an initial configuration interface, configuration settings for a network interface on the computing appliance. This method may also include establishing a connection on the computing appliance via the network interface and presenting, over the second connection, an end user license agreement (EULA). Upon receiving, over the second connection, an acceptance of the EULA, access is enabled to configuration controls for one or more services provided by the computing appliance. In a particular embodiment, the initial configuration interface provides access to a subset of configuration commands configuration commands that have been authorized for execution prior to the acceptance of the EULA.

Additional embodiments include a computer-readable storage medium storing an application, which, when executed on a processor, performs the above recited method as well as a system having a processor and a memory storing an enterprise information asset management application program, which, when executed on the processor, performs the above recited method.

DETAILED DESCRIPTION

A computing appliance generally refers to computing hardware designed to provide a specific computing resource and which often resides on a dedicated hardware platform. For example, the DataPower® line of computing appliances available from International Business Machines, Inc., provide a set of XML appliances for processing XML messages as well as any-to-any legacy message transformation (flat files, text, etc.). The DataPower appliances provide network devices which use application-specific integrated circuits (ASICs) to accelerate XML processing. Computing appliances are frequently “closed,” in that the appliance is not generally serviceable by the owner and provides limited access for the installation, configuration, and upgrade of software/firmware resources.

Many appliances, such as network routers, firewalls, gateways, application mediation, to name a few, as well as the DataPower appliances mentioned above, include the capabilities needed to present a rich user interface when fully configured and operational. However, such functionally may be available only after the appliance is configured and installed on a user's network. In some cases, once the appliance is configured and services are enabled, it may be too late to ask the user to agree to the terms of an end-user license agreement (EULA), as they have a already started to use the appliance (and could continue to do so without ever formally accepting the EULA terms).

Embodiments of the invention allow a user limited access to a non-configured and non-functional computing appliance. In one embodiment, a sentry component intercepts commands entered by a user to configure and enable the appliance a user (e.g., text commands typed on a shell interface established over a serial connection). The sentry component allows only certain commands to be executed before a EULA is accepted. More specifically, the sentry component ensures that the appliance is operationally disabled until the user agrees to the terms of a EULA and optionally supplies any product activation data (e.g., license keys).

If the customer declines to accept the terms of the EULA, the appliance shuts down and the customer may be requested to return it to a vendor. If the customer accepts the terms of the EULA, then the appliance is made active and all configuration commands become operational, including commands needed to configure the device and start services which would otherwise be prohibited by the sentry component prior to license acceptance.

In one embodiment, when a computing appliance is powered on for the first time, a user may attach a serial control to specify some initial configuration settings. The program servicing the serial console (e.g., a text-based shell interpreter) queries the sentry component to determine whether a given command is allowed at that time. For example, the sentry could allow the user to configure a network interface and start certain network services. Thus, the sentry could allow user to specify an IP address and other network settings for the appliance (or configure the device to use DHCP to obtain network settings) as well as start a web server executing on the appliance.

More generally, in order to establish the computing environment needed to provide a user with a rich user-interface (e.g., a web application), the sentry could allow an end user to configure the network, but prevent the user from enabling other services; namely computing services provided by the appliance and subject to the terms of a EULA. Once the network services are configured (physical and/or logical), the user may be prompted to use a web-browser to continue configuring the appliance. The graphical user-interface provided by the web server may detect the user's natural language preferences and display the EULA text in the appropriate natural language. The user can then submit the ‘I Accept’ request (as well as supply any licensing keys or product authorization data needed to activate the device) to the web service which responds by unlocking all the features and capabilities of the appliance.

Such a web service may be built into the appliance itself (as part of the web server providing the license terms), but the appliance may also provide license keys, or other product activation data, to a network server, which then authorizes the use of computing services provided by the appliance. In these cases, what services or capabilities of the device are enabled could depend on what product activation data is supplied by a user, based on, e.g., what services or service levels a user has purchased. Further, the rich interface allows the user to print, browse and search the EULA, which may itself be formatted using any appropriate markup, e.g., links between sections or links to the definition of a defined term within the EULA.

Note, particular embodiments of the invention described below rely on an example of a computing appliance which provides network services (e.g., the service oriented architecture (SOA) XML processing services provided by the DataPower appliances available from IBM. Of course, one of ordinary skill in the art will recognize that the techniques described herein may be adapted to a broad variety of computing appliances. Accordingly, references to the specific embodiment are included to be illustrative and not limiting.

FIG. 1illustrates an example computing infrastructure100used to provide a rich user interface for presenting and accepting license agreements on a network appliance, according to one embodiment of the invention. As shown, the computing infrastructure100includes a computing appliance105, an activation server130, each connected to a public network120(e.g., the Internet).

Additionally, the network appliance105is connected to a set of one or more managed systems110. For this example, assume the network appliance105provides XML processing services and SOA message mediation for managed systems110. Thus, in this example, each managed system provides a computing server with a set of applications which cooperate to provide a service (or services) to clients. For example, a data center may use a variety of systems to provide a web application to client web browsers (e.g., web servers, application servers and database systems). Or as another example, the network appliance105could be a network routing device used to load balance HTTP requests. In such a case, the managed systems110could be provide HTTP servers configured to respond to client requests for web pages hosted by such servers. Other examples of a computing appliance include network switching and routing appliances, email filtering appliance, document search appliance, network firewall appliances, network intrusion detection and monitoring appliances, network traffic acceleration appliances, hosted storage and storage area network appliances, etc.

However, regardless of the functions or services supplied by a particular computing appliance, in order to provide such services, an end user needs to configure and install the network appliance105. Further, the end user may need to accept the terms of one or more license agreements prior to enabling the services provided by network appliance105. Accordingly, in one embodiment, the network appliance105may include a simple configuration interface accessed using a serial connection. The simple configuration interface may allow a user to enter commands needed to enable the particular services provided by the network appliance105. Further, the network appliance105may include a sentry component used to monitor the commands supplied by a user via the simple configuration interface.

In one embodiment, the sentry component is configured to allow only a specified subset of commands supported by the simple configuration interface to be executed or otherwise accessed until a user has accepted the terms of one or more EULAs. For example, the sentry component may allow commands needed to configure the network settings of the appliance105to be executed, as well as commands which enable certain network services on the appliance, such as a web server. In such a case, once enabled, the user may connect the network appliance105to an Ethernet network and access the rich configuration interface using a web browser. Further, the web server may provide a web application which itself presents an EULA to the user, verifies a user's acceptance of the EULA, and obtains any product authorization data or license keys from the user, as well as allows the user to configure the services provided by the network appliance105.

In one embodiment, the graphical user-interface provided by the web server may detect the user's language preferences and display the EULA text in the appropriate natural language. For example, an HTTP request may include an “HTTP Accept-Language header,” the contents of which may be used to determine a language for a response. Once presented, the user can submit an “I Accept” request to the web service along with any licensing keys or product authorization data needed to activate the network appliance105. If the web service is running on the network appliance105, then web service responds by unlocking the features and capabilities of the network appliance105.

In another embodiment, the network appliance105sends product activation data, license keys, etc., to the activation server130. The activation server130may provide a computing system which receives the license key (or other product activation data) from the network appliance105. In response, the activation server130may send a validation message to the network appliance105used to activate, or otherwise enable, features, functions, software, components, modules services, etc., on the network appliance105(provided the user supplied the correct credentials to the activation server130).

FIG. 2illustrates an example an example computing appliance200configured with a sentry component232, according to one embodiment of the invention. As shown, the computing appliance200includes a network interface205, a serial interface210, a memory220, and a firmware component230. The firmware component230provides the executable logic of the computing appliance, and the memory220stores application data and configuration settings used by the computing appliance200. The firmware may include an application specific integrated circuit, FPGA, or other processing device, e.g., a CPU having one or more processing cores, etc. Memory224may include any combination of volatile and non-volatile memory storage elements, including DRAM, flash memory, SSD storage, or magnetic disk drives.

Illustratively, the firmware component230includes the sentry component232along with one or more service components234and a licensing component236. The service components234generally correspond to the services, features or computing applications used provide the primary functionality of the computing appliance200. For example, in the case of a DataPower appliance, the service components234are used to provide XML processing services. Other examples noted above include network routing services, firewall and intrusion detection services etc.

In addition to such “core” services provided by the computing appliance200, service components234may include components which provide other ancillary services, e.g., a web server used to provide a configuration interface and a web service used to present and collect acceptance to end user license agreements (or to obtain product activation codes from an activation server). Further, the licensing component236may determine what features or service components234have been authorized for use (or for which the user has accepted the corresponding EULA), stored as licensing data224. Depending on the licensing state, the sentry component232may limit what commands the user can execute to configure or enable one or more of the service components234. Such information may be stored in the service configuration settings222.

The serial interface210provides a connection used to access a console or terminal interface supported by the computing appliance200. The serial interface210may provide a user with access to a simple, or initial, configuration interface, such as a command shell used to enter text commands to configure aspects of the appliance200. As noted, the sentry component232may be configured to limit what commands the user may execute over using this simple configuration interface until a user has accepted the terms of one or more EULAs. For example, the sentry component may allow the user to specify network configuration settings226, e.g., an IP address and related data, as well as enable a web service on the computing appliance200, but prohibit the user from activating, configuring or otherwise accessing certain other service components234.

Once the network interface205is configured, the user may access the computing appliance200using a web browser to complete the process of accepting license agreements and specifying the service configuration settings222for the service components234of the computing appliance200. Licensing data224provides the text content of one or more EULA corresponding to one or more service components234(or other features of the computing appliance200). Note, the licensing data225may include copies of each EULA in multiple languages.

However, unlike the simple interface provided by the shell console over the serial interface20, the web server on the computing appliance200may provide the user with a rich, or secondary, configuration interface. The web-based interface may allow the user to view license agreements in a preferred language, as well as print, browse, and search the EULA. Additionally, the EULA may itself be formatted using any appropriate markup, e.g., links between sections or links to the definition of a defined term within the EULA. As with the serial interface210, the sentry component232may be configured to prevent the user from activating, configuring or otherwise accessing certain other service components234using the web-based configuration interface until the user has accepted the terms of one or more EULAs.

FIG. 3illustrates a method300for monitoring the use of configuration commands on a computing appliance in order to limit user access to that appliance until a licensing agreement is accepted, according to one embodiment of the invention. As shown, the method300begins at step305, where a user powers up a computing appliance. Once powered, the computing appliance may determine whether the licensing process has been completed (step310). If so, then the method300terminates, and the computing appliance functions to provide any configured services. Otherwise, if the licensing agreements have not been previously accepted (or if new components have been installed or activated that require the acceptance of an additional EULA), the computing appliance may activate (or otherwise execute) a sentry component. As noted, the sentry component may limit what commands the user may execute until a user has accepted the terms of one or more relevant EULAs.

Accordingly, at step315the sentry component receives or intercepts a configuration command to be executed. For example, the user may have initialized a console connection over a serial interface and enter a command in a shell prompt. In one embodiment, the shell process executed is configured to query the sentry component to determine whether the command may be executed prior to the acceptance of a relevant EULA. At step320, the sentry component determines whether the command is allowed. If so, the command is executed at step325. Otherwise, the command is ignored. Note, the user may be prompted with a message indicating that the command is unavailable until the licensing process has been completed. For example, assume the user is configuring the network interface on a new computing appliance. In one embodiment, the sentry component allows the user to execute the commands needed to specify a network configuration and enable a network interface on the appliance. Doing so allows the user to access the computing appliance over a network connection, as opposed to over the more limited serial interface.

Once configured the user may again access the computing appliance over the network connection to complete the licensing process as well as configure services provided by the computing appliance. For example, the user may browse to the IP address assigned to the computing device and access a web-based configuration interface available at that IP address. Such a web-based interface may present the user with rich markup versions of the license agreements as well as allow the user configure the services provided by the computing device. When the user accesses the web-based interface, the computing appliance again determines whether the license agreements have been accepted. And if such agreements have not been previously accepted (or if new components have been installed or activated that require the acceptance of an additional EULA), the sentry component continues to limit what commands the user may execute using the web-base interface until a user has accepted the terms of one or more relevant EULAs. Once the licensing process has been completed, the method300terminates.

FIG. 4illustrates a method400for configuring a computing appliance to provide a rich user interface, without enabling other computing services until a licensing agreement is accepted, according to one embodiment of the invention. AS shown, the method400begins at step405, where a user establishes a serial connection with a computing appliance. For example, the user may connect a serial cable to a terminal display in order to access a command shell on the computing appliance. At step410, the command shell receives network configuration settings for a network interface on the computing appliance. As noted, a sentry component may intercept (or otherwise evaluate) the configuration commands supplied via shell connection and allow the network configuration settings to be made, while at the same time preventing the user from enabling or accessing other services on the computing appliance. Similarly, the sentry component may allow the user to enable a web server (or other network application) on the computing appliance.

At step415, after configuring the network interface, the user may access the computing appliance over the network connection. For example, the user may connect the computing appliance to an Ethernet network, and using another computing system (e.g., a laptop or desktop PC), access the web server enabled on the computing appliance using the interface of the serial connection. At step420, a web server may generate HTML markup (or retrieve static HTML pages) to be rendered by a web browser. As noted, the web-based interface may present the terms of a license agreement in a preferred language, as well introduce other useful markup elements into the terms of a EULA, including, e.g., bolded section titles, links between a table of contents and sections of the EULA, provide links to definitions, etc. The user may interact with the web-based interface to indicate their acceptance of the EULA (e.g., using button or checkbox controls rendered with the license terms).

In one embodiment, the computing appliance may be configured to request a license key (or other product authorization data) from the user. Once supplied, the computing appliance may evaluate the license data internally to determine whether a legitimate key (other product authorization data) has been provided. Alternatively, the computing appliance may use the network interface configured using the serial interface to communicate with an external licensing server. In either case, the sentry component may prevent the web based interface from being used to access other features or enable services on the computing appliance until the appropriate EULAs have been accepted and any necessary license keys (or other product authorization data) have been supplied. Once this occurs, at step425, the web server may also provide a rich interface for configuring the computing device itself. For example, any HTML presentation or content markup may be used to provide web pages representing a current configuration state of the computing appliance, provide controls for enabling network or data processing services on the computing appliance or otherwise access features or functions of the computing appliance.

Advantageously, embodiments of the invention allow a user limited access to a non-configured and non-functional computing appliance. In one embodiment, a sentry component intercepts commands used to configure and enable the appliance entered by a user (e.g., text commands typed on a shell interface established over a serial connection). The sentry component allows only certain commands to be executed before a EULA is accepted. Once the user accepts the terms of the license agreement, then the appliance is made active and all configuration commands become operational, including commands needed to configure the device and start services which would otherwise be prohibited by the sentry component prior to license acceptance.