The subject matter herein generally relates to providing a method of automatically providing license keys to a system running licensed software.
Implementations of the present technology will now be described, by way of example only, with reference to the attached figures, wherein:
For simplicity and clarity of illustration, where appropriate, reference numerals have been repeated among the different figures to indicate corresponding or analogous elements. In addition, numerous specific details are set forth in order to provide a thorough understanding of the implementations described herein. However, the implementations described herein can be practiced without these specific details. In other instances, methods, procedures and components have not been described in detail so as not to obscure the related relevant feature being described. Also, the description is not to be considered as limiting the scope of the implementations described herein.
Several definitions that apply throughout this disclosure will now be presented. The term coupled is defined as directly or indirectly connected to one or more components. The term server can include a hardware server, a virtual machine, and a software server.
In at least one embodiment, the present technology can be implemented as a software module or a hardware module, or both. In at least one embodiment, the present technology causes a processor to execute instructions. The software module can be stored within a memory device or a drive. Hypertext Transfer Protocol Secure (HTTPS) is a communications protocol for secure communication over a computer network, with especially wide deployment on the Internet. Technically, it is not a protocol in and of itself; rather, it is the result of simply layering the Hypertext Transfer Protocol (HTTP) on top of the SSL/TLS protocol, thus adding the security capabilities of SSL/TLS to standard HTTP communications.
The present technology can be implemented with a variety of different drive configurations including Network File System (NFS), internet Small Computer System Interface (iSCSi), and Common Internet File System (CIFS). Additionally, the present technology can be configured to run on VMware ESXi (which is an operating system-independent hypervisor based on the VMkernel operating system interfacing with agents that run on top of it. Additionally, the present technology can be configured to run on Amazon® Web Service in VPC.
One embodiment within this disclosure is a method of automatically renewing a software license. The method can include providing a license (often for a fee) and a license key having a first predetermined term for an article of software, with the software configured to cease operation when a valid license key is no longer present on a system running the software. The method can also include receiving the license key and owner information corresponding to the owner of the license and thereafter installing the software and the license key to a system. The method can also include recording the license key in a license table which is remote from the system running the software—in usual operation this license table would be under the exclusive control of the owner of software granting the license. The method can also include determining that the term of the license will expire within a predetermined time—in other words that the software license is about to expire, and thereafter automatically consulting an e-commerce table to determine whether an auto-renewal payment was successfully received (from the licensee). If the auto-renewal payment was successfully received, the method can then automatically download and install a renewal license key having a second predetermined term to the system running the software. The license can thereby be extended, enabling the system to continue to run the software beyond the first predetermined term. The process of determining that a pending license is soon to expire and automatically checking for renewal payment and reinstallation can be done on an iterative basis.
The present disclosure also includes a method 300 as illustrated with respect to
The method 300 comprises retrieving (302) a license auto-renewal request. After step 302 is completed, the method 300 proceeds to step 304 where a determination is made as to whether a current key is registered to a registered account name. If not, the method stops. If registration is verified, the method 300 proceeds to step 306, where a determination is made as to whether the current key is properly activated. If it is not properly activated, the method 300 stops. If the current key is properly activated, the method 300 proceeds to step 308 to whether a hardware lock code has been send by a requestor. The method 300 then proceeds to step 308 where a determination is made as to whether a renewal payment for the license in question has been received. If it has not, the method 300 stops. If such payment is verified, the method 300 proceeds to step 310, where a determination is made as to whether a license key invoice matches an invoice identifier in a payment record. If there is no match, the method 300 stops. If there is a match, the method 300 proceeds to step 312, wherein a new license key is generated. The method 300 then proceeds to step 313, in which new license key information is recording in a license server database. The method 300 then proceeds to step 314, in which an auto-renewal license key is returned to the calling party, thereby enabling the licensed software to continue to run.
Examples within the scope of the present disclosure may also include tangible and/or non-transitory computer-readable storage media for carrying or having computer-executable instructions or data structures stored thereon. Such non-transitory computer-readable storage media can be any available media that can be accessed by a general purpose or special purpose computer, including the functional design of any special purpose processor as discussed above. By way of example, and not limitation, such non-transitory computer-readable media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions, data structures, or processor chip design. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or combination thereof) to a computer, the computer properly views the connection as a computer-readable medium. Thus, any such connection is properly termed a computer-readable medium. Combinations of the above should also be included within the scope of the computer-readable media.
Computer-executable instructions include, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Computer-executable instructions also include program modules that are executed by computers in stand-alone or network environments. Generally, program modules include routines, programs, components, data structures, objects, and the functions inherent in the design of special-purpose processors, etc. that perform particular tasks or implement particular abstract data types. Computer-executable instructions, associated data structures, and program modules represent examples of the program code means for executing steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represents examples of corresponding acts for implementing the functions described in such steps.
Other examples of the disclosure may be practiced in network computing environments with many types of computer system configurations, including personal computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. Examples may also be practiced in distributed computing environments where tasks are performed by local and remote processing devices that are linked (either by hardwired links, wireless links, or by a combination thereof) through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
The various embodiments described above are provided by way of illustration only and should not be construed to limit the scope of the disclosure. Various modifications and changes may be made to the principles described herein without following the example embodiments and applications illustrated and described herein, without departing from the scope of the disclosure.
This application claims priority to U.S. Provisional Application No. 61/913,237, filed Dec. 6, 2013, the contents of which are entirely incorporated by reference herein.
Number | Date | Country | |
---|---|---|---|
61913237 | Dec 2013 | US |