public
Last active

Remove license check from Subsonic 4.7

  • Download Gist
noLicense.diff
Diff
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
diff --git a/subsonic-main/src/main/java/net/sourceforge/subsonic/service/SettingsService.java b/subsonic-main/src/main/java/net/sourceforge/subsonic/service/SettingsService.java
index f7031bf..39ee5b4 100644
--- a/subsonic-main/src/main/java/net/sourceforge/subsonic/service/SettingsService.java
+++ b/subsonic-main/src/main/java/net/sourceforge/subsonic/service/SettingsService.java
@@ -620,14 +620,11 @@ public class SettingsService {
}
public boolean isLicenseValid() {
- return isLicenseValid(getLicenseEmail(), getLicenseCode()) && licenseValidated;
+ return true;
}
public boolean isLicenseValid(String email, String license) {
- if (email == null || license == null) {
- return false;
- }
- return license.equalsIgnoreCase(StringUtil.md5Hex(email.toLowerCase()));
+ return true;
}
public String getDownsamplingCommand() {
@@ -1223,33 +1220,7 @@ public class SettingsService {
}
private void validateLicense() {
- String email = getLicenseEmail();
- Date date = getLicenseDate();
-
- if (email == null || date == null) {
- licenseValidated = false;
- return;
- }
-
licenseValidated = true;
-
- HttpClient client = new DefaultHttpClient();
- HttpConnectionParams.setConnectionTimeout(client.getParams(), 120000);
- HttpConnectionParams.setSoTimeout(client.getParams(), 120000);
- HttpGet method = new HttpGet("http://subsonic.org/backend/validateLicense.view" + "?email=" + StringUtil.urlEncode(email) +
- "&date=" + date.getTime() + "&version=" + versionService.getLocalVersion());
- try {
- ResponseHandler<String> responseHandler = new BasicResponseHandler();
- String content = client.execute(method, responseHandler);
- licenseValidated = content != null && content.contains("true");
- if (!licenseValidated) {
- LOG.warn("License key is not valid.");
- }
- } catch (Throwable x) {
- LOG.warn("Failed to validate license.", x);
- } finally {
- client.getConnectionManager().shutdown();
- }
}
public void validateLicenseAsync() {

This works if you can be assed into patching it yourself, if not, just add a
127.0.0.1 subsonic.org
line to /etc/hosts
and then make a file on your local webserver (for the subsonic.org vhost if you're using them) called /backend/validateLicense.view with the content of 'true'.

Then activate it with a key of md5hex(email).

This way you can use the subsonic.org provided binaries.

Or you could be a nice person and donate.

Thanks for this ultramancool. I had donated but my license would not apply correctly, I couldn't wait for a response from the devs/forums so I implemented your solution in a slightly modified way.

In my case, Subsonic is hosted on a Windows Server which has IIS running on port 80 (hosting another app), this means subsonic needs to run on a different port (I used the default 4040). Subsonic expects the /backend/validateLicense.view file to be on a server on port 80. So, when creating your solution, it is necessary to modify the following:

  1. hosts file (127.0.0.1 subsonic.org) as you had done, on Windows, the location is "C:\Windows\System32\Drivers\Etc\hosts"
  2. In the default folder for IIS which is "C:\inetpub\wwwroot" create the folder called "backend"
  3. Within this folder, create the plain text file called "licenseValidate.view" and within it, just have the word "true"
  4. Go into the IIS admin console, drill down the config list on the left to "Default Web Site", click the "Handler Mappings" icon
  5. Click "Add Managed Handler" link in the right pane, set the Request Path to "*.view", set the type to "System.Web.DefaultHttpHandler" and give it any name you like.

These instructions are written for Windows Server 2012, I believe Server 2008 should be similar if not the same, other Windows servers may differ but I'm sure anyone setting up a Subsonic server can figure it out :)

How do I patch this? Is it possible to patch it without root?

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.