Skip to content

Instantly share code, notes, and snippets.

@Rovanion
Created September 22, 2012 19:58
Show Gist options
  • Save Rovanion/3767624 to your computer and use it in GitHub Desktop.
Save Rovanion/3767624 to your computer and use it in GitHub Desktop.
Remove license check from Subsonic 4.7
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() {
@Rovanion
Copy link
Author

@ultramancool
Copy link

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.

@fitzy89
Copy link

fitzy89 commented Nov 20, 2012

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 :)

@aijcoa
Copy link

aijcoa commented Jun 4, 2013

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment