Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
playground:servers [2025-05-13 19:07] – [Oracle Free VPS] geek | playground:servers [2025-05-22 19:51] (current) – geek | ||
---|---|---|---|
Line 2: | Line 2: | ||
If you are building commercial software with AutoHotkey, you may need to build some license management infrastructure in order to avoid software cracks, source code leaks, password sharing, etc. | If you are building commercial software with AutoHotkey, you may need to build some license management infrastructure in order to avoid software cracks, source code leaks, password sharing, etc. | ||
+ | |||
+ | ===== AutoHotkey Interpreter Licensing Issues ===== | ||
+ | |||
+ | This does not constitute legal advice. | ||
+ | |||
+ | The AutoHotkey interpreter software is released under the GPL v2.0 license. This license gives users broad rights to freely access and use the software and its source code, as well as any " | ||
+ | |||
+ | Scripts written to be run by AutoHotkey are not inherently constrained under that GPL v2.0 license, but by bundling your script with a copy of the AutoHotkey interpreter with a tool like ahk2exe, in order to form a " | ||
+ | |||
+ | Distributing your scripts alongside a standalone copy of AutoHotkey does not avoid the implicit transfer of the GPL v2.0 license to your script file. When distributed alongside a standalone copy of AutoHotkey, your script forms what is effectively a kind of plug-in for the AutoHotkey interpreter software. When the AutoHotkey interpreter loads your script into its own process space, and the script' | ||
+ | |||
+ | Building an installer that first downloads and installs AutoHotkey before installing your own non-GPL-licensed AutoHotkey-based software is also not clearly legal, although to my knowledge this has not yet been tried in a court of law. | ||
+ | |||
+ | The primary developers of AutoHotkey have expressed in the past that they have no intent of prosecuting developers who build software that bundles the AutoHotkey interpreter in this way. However, these statements of intent do not actually waive their legal rights if they were to change their minds. In addition to the primary developers, there are a couple dozen known contributors, | ||
+ | |||
+ | It is also possible that in some jurisdictions, | ||
+ | |||
+ | Keeping all of this in mind, the only clearly acceptable way to distribute closed-source software written using the official AutoHotkey interpreter appears to be to distribute it separately from the AutoHotkey interpreter entirely. This would require your users to first install AutoHotkey on their own before choosing // | ||
+ | |||
+ | ==== Alternate Interpreters ==== | ||
+ | |||
+ | Although the premiere AutoHotkey interpreter is licensed under this " | ||
+ | |||
+ | === Keysharp === | ||
+ | |||
+ | The [[https:// | ||
+ | |||
+ | ===== Source Encryption ===== | ||
+ | |||
+ | See full article: [[guides: | ||
+ | |||
+ | Keeping in mind the issues with the licensing of the AutoHotkey interpreter, | ||
===== Fingerprinting ===== | ===== Fingerprinting ===== | ||
+ | Software licenses are usually tied to both a user of the software, and some number of computer systems that the software will be installed onto. In order to enforce the installation limit, one or more metrics of the computer system must be fingerprinted to validate that the user did not attempt to impermissibly transfer the software from one computer to another. Together, these collected metrics form what is called a " | ||
+ | Some metrics can change over the lifetime of a single installation. For example, the operating system version, processor, motherboard, | ||
+ | Here are some of the fingerprint-able metrics you can access from AutoHotkey: | ||
+ | |||
+ | Motherboard Serial Number: | ||
+ | |||
+ | <code autohotkey> | ||
+ | MsgBox ComObjGet(" | ||
+ | </ | ||
+ | |||
+ | Processor Serial Number: | ||
+ | |||
+ | <code autohotkey> | ||
+ | MsgBox ComObjGet(" | ||
+ | </ | ||
+ | |||
+ | BIOS Serial Number: | ||
+ | |||
+ | <code autohotkey> | ||
+ | MsgBox ComObjGet(" | ||
+ | </ | ||
+ | |||
+ | Operating System Version: | ||
+ | <code autohotkey> | ||
+ | MsgBox A_OSVersion | ||
+ | </ | ||
+ | |||
+ | Computer Name (host name): | ||
+ | |||
+ | <code autohotkey> | ||
+ | MsgBox A_ComputerName | ||
+ | </ | ||
+ | |||
+ | User Name: | ||
+ | |||
+ | <code autohotkey> | ||
+ | MsgBox A_UserName | ||
+ | </ | ||
+ | |||
+ | Processor Metadata: | ||
+ | |||
+ | <code autohotkey> | ||
+ | MsgBox ( | ||
+ | EnvGet(" | ||
+ | EnvGet(" | ||
+ | EnvGet(" | ||
+ | EnvGet(" | ||
+ | ) | ||
+ | </ | ||
+ | |||
+ | Storage volume identifiers: | ||
+ | |||
+ | Network card MAC addresses: '' | ||
+ | |||
+ | Computer System Product UUID (This is used to identify an OEM PC, it may be generic for custom built PCs or VMs): | ||
+ | <code autohotkey> | ||
+ | MsgBox ComObjGet(" | ||
+ | </ | ||
+ | |||
+ | MachineGuid (This is used to identify a Windows installation, | ||
+ | <code autohotkey> | ||
+ | MsgBox RegRead(" | ||
+ | </ | ||
===== Oracle Free VPS ===== | ===== Oracle Free VPS ===== | ||
Line 17: | Line 112: | ||
==== Pay as You Go ==== | ==== Pay as You Go ==== | ||
- | Instance creation is subject to availability at the time you're creating the instance. Priority is given to "pay as you go" accounts, which you can upgrade to under "Bill & Cost Management > Billing > Upgrade and Manage Payment" | + | Instance creation is subject to availability at the time you're creating the instance. Priority is given to "pay as you go" accounts, which you can upgrade to under "Bill & Cost Management > Billing > Upgrade and Manage Payment" |
https:// | https:// | ||
- | Account upgrades can take some time, so please be patient! | + | Account upgrades can take some time, so please be patient! |
+ | |||
+ | ===== Authentication Strategies ===== | ||
+ | |||
+ | Once you have installed a suitable VPS to act as your authentication server, you will need to consider what authentication strategy you will use. The two main strategies are HTTP Basic Authentication, | ||
+ | |||
+ | ==== HTTP Basic Authentication ==== | ||
+ | |||
+ | Basic authentication from the HTTP protocol allows you to require a username and password to be given in order to access resources from the web server. By assigning each user a username and password, your script can provide those credentials when trying to request a validation file from the server. | ||
+ | |||
+ | Fingerprinting information can be used with this authentication scheme. However, the fingerprint will be merely concatenated onto the password such that if any part of the fingerprint changes, the credentials will be invalid. This is less useful than custom authentication. | ||
+ | |||
+ | ==== Custom Authentication ==== | ||
+ | |||
+ | Custom authentication requires installing server-side software like PHP that can listen to requests made by your script and respond depending on the information your script provides in the request. Your script will make a request to the server providing the username and password, as well as each individual fingerprint component. The server can allow individual components of the fingerprint to change according to rules you decide, and keep track of those changes over time in a database. |