diff --git a/.gitignore b/.gitignore index ec376bb8..2f7896d1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -.idea -target \ No newline at end of file +target/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..b8205a6a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,6 @@ +Guidelines for Contributing +--------------------------- + +Libresonic currently does **NOT** diverge substantially from the original [Subsonic](http://subsonic.org). Please visit Issue #40 on Github for more details about the Rebrand process before continuing. + +Until the Rebrand has finished Issues and Pull Requests will most likely not be accepted or put on hold. Please check back later once the Rebrand has been completed. diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 00000000..4250db74 --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,67 @@ + +Requirements +------------ + + * Recent version of [Maven](http://maven.apache.org/). + * A JDK installation. 1.7.x series of OpenJDK or Oracle JDK 7+ should work. + * Optional: lintian and fakeroot, for .deb package + * Test as follows: + +``` +$ which mvn +/usr/local/bin/mvn +$ echo $JAVA_HOME +/usr/lib/jvm/java-1.7.0-openjdk.x86_64 +$ +``` + +Now you can clone a copy of this repository and switch to the `release` branch if it is not automatically checked out: + +``` +$ git clone git://github.com/Libresonic/libresonic.git +$ cd libresonic +$ git checkout release +$ +``` + +Standalone WAR +-------------- + +At this point you are ready to build the basic Subsonic WAR. This is required for all the other build targets, so you should do it before proceeding. + +``` +$ mvn package + +[INFO] Building war: /path/to/repo/subsonic/subsonic-main/target/subsonic.war + +$ +``` + +Tomcat Installation +------------------- + +The WAR may be copied directly to a Tomcat server's webapps/ directory and deployed. + +``` +$ cp subsonic-main/target/subsonic.war /var/lib/tomcat6/webapps/ +$ +``` + + +Packaged .deb +------------- + +You can furthermore go ahead to create a .deb suitable for installation on Debian or Ubuntu. These instructions should similarly work with rpm(for RedHat/CentOS or Fedora), but it is has not been tested. + +``` +$ mvn -P full -pl subsonic-booter -am install +$ mvn -P full -pl subsonic-installer-debian/ -am install +$ sudo dpkg -i ./subsonic-installer-debian/target/subsonic-*.deb +$ +``` + +Good luck! + diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md new file mode 120000 index 00000000..eada936c --- /dev/null +++ b/ISSUE_TEMPLATE.md @@ -0,0 +1 @@ +CONTRIBUTING.md \ No newline at end of file diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md new file mode 120000 index 00000000..eada936c --- /dev/null +++ b/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1 @@ +CONTRIBUTING.md \ No newline at end of file diff --git a/README.md b/README.md index f55f885a..53ba0f37 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,43 @@ -# Subsonic -Subsonic is a web-based media streamer, providing ubiquitous access to your music and video collection. + +Libresonic +======== -More than 20 apps are available for Android, iPhone, Windows Phone, Sonos etc. +What is Libresonic? +----------------- -Supports virtually all media formats, converting files on the fly. +Libresonic is a free, web-based media streamer, providing ubiqutious access to your music. Use it to share your music with friends, or to listen to your own music while at work. You can stream to multiple players simultaneously, for instance to one player in your kitchen and another in your living room. -Also includes a Podcast receiver and jukebox feature allowing you to control what's playing on your computer from your mobile phone. +Libresonic is designed to handle very large music collections (hundreds of gigabytes). Although optimized for MP3 streaming, it works for any audio or video format that can stream over HTTP, for instance AAC and OGG. By using transcoder plug-ins, Libresonic supports on-the-fly conversion and streaming of virtually any audio format, including WMA, FLAC, APE, Musepack, WavPack and Shorten. -Please see subsonic.org for more details. +If you have constrained bandwidth, you may set an upper limit for the bitrate of the music streams. Libresonic will then automatically resample the music to a suitable bitrate. -### Note -This source code is for Subsonic 5.3, which is the last version of Subsonic released with an open source license. \ No newline at end of file +In addition to being a streaming media server, Libresonic works very well as a local jukebox. The intuitive web interface, as well as search and index facilities, are optimized for efficient browsing through large media libraries. Libresonic also comes with an integrated Podcast receiver, with many of the same features as you find in iTunes. + +Based on Java technology, Libresonic runs on most platforms, including Windows, Mac, Linux and Unix variants. + + +History +----- + +The original [Subsonic](http://www.subsonic.org/) is developed by [Sindre Mehus](mailto:sindre@activeobjects.no). Subsonic was open source through version 6.0-beta1, and closed-source from then onwards. + +Libresonic is maintained by [Eugene E. Kashpureff Jr](mailto:eugene@kashpureff.org). It originated as an unofficial("Kang") of Subsonic which did not contain the Licensing code checks present in the official builds. With the announcement of Subsonic's closed-source future, a decision was made to make a full fork and rebrand to Libresonic. + +Libresonic will strive to maintain compatibility and stability for Subsonic users, including a clean upgrade path. New features and refactoring are welcomed as a Pull Request on Github. + + +License +------- + +Libresonic is free software and licensed under the [GNU General Public License version 3](http://www.gnu.org/copyleft/gpl.html). The code in this repository(and associated binaries) are free of any "license key" or other restrictions. If you wish to thank the maintainer of this repository, please consider a donation to the [Electronic Frontier Foundation](https://supporters.eff.org/donate). + +The original Subsonic was released under the GPLv3 through version 5.3. Beginning with 6.0, the software is only available under a commercial license. There is a [Subsonic Premium](http://www.subsonic.org/pages/premium.jsp) package which offers extra functionality. Subsonic also offers RPM, Deb, Exe, and other pre-built packages that Libresonic does not. + + +Usage +----- + +A WAR compiled from the latest tag is provided on the [Releases page](https://github.com/Libresonic/libresonic/releases). This can be installed as a Tomcat or compatible webapp, and should "just work". Please see the [INSTALL document](https://github.com/Libresonic/libresonic/blob/release/INSTALL.md) for instructions on building from source. diff --git a/pom.xml b/pom.xml index ab1a5bb5..db4ab0fe 100644 --- a/pom.xml +++ b/pom.xml @@ -53,10 +53,6 @@ Local Repository 2 file:../repo - - Codehaus Repository - http://repository.codehaus.org/ - @@ -99,6 +95,8 @@ subsonic-installer-mac subsonic-installer-debian subsonic-installer-rpm + subsonic-backend + subsonic-site subsonic-assembly diff --git a/subsonic-installer-debian/pom.xml b/subsonic-installer-debian/pom.xml index 08dc7e5c..c3255cf5 100644 --- a/subsonic-installer-debian/pom.xml +++ b/subsonic-installer-debian/pom.xml @@ -16,11 +16,11 @@ - debian + linux - - debian - + + linux + 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 ff3b84bd..8045a63c 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 @@ -668,14 +668,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 LicenseInfo getLicenseInfo() { @@ -1401,34 +1398,8 @@ public class SettingsService { private void validateLicense() { String email = getLicenseEmail(); Date date = getLicenseDate(); - - if (email == null || date == null) { - licenseValidated = false; - return; - } - - 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 responseHandler = new BasicResponseHandler(); - String content = client.execute(method, responseHandler); - licenseValidated = content != null && !content.contains("false"); - if (!licenseValidated) { - LOG.warn("License key is not valid."); - } - String[] lines = StringUtils.split(content); - if (lines.length > 1) { - licenseExpires = new Date(Long.parseLong(lines[1])); - } - - } catch (Throwable x) { - LOG.warn("Failed to validate license.", x); - } finally { - client.getConnectionManager().shutdown(); - } + licenseValidated = true; + return; } public synchronized void scheduleLicenseValidation() { diff --git a/subsonic-main/src/main/resources/net/sourceforge/subsonic/i18n/ResourceBundle_en.properties b/subsonic-main/src/main/resources/net/sourceforge/subsonic/i18n/ResourceBundle_en.properties index b74a6119..97c79dc6 100644 --- a/subsonic-main/src/main/resources/net/sourceforge/subsonic/i18n/ResourceBundle_en.properties +++ b/subsonic-main/src/main/resources/net/sourceforge/subsonic/i18n/ResourceBundle_en.properties @@ -293,7 +293,8 @@ help.contact.title = Contact help.contact.text = {0} is developed and maintained by Sindre Mehus \ (sindre@activeobjects.no). \ If you have any questions, comments or suggestions for improvements, please visit the \ - Subsonic Forum. + Subsonic Forum.
\ + Changes to the source have been made by Eugene E. Kashpureff Jr. No support is provided by him, and you may not receive support from the official Subsonic channels as a result. help.log = Log help.logfile = The complete log is saved in {0}. diff --git a/subsonic-main/src/main/resources/net/sourceforge/subsonic/i18n/ResourceBundle_et.properties b/subsonic-main/src/main/resources/net/sourceforge/subsonic/i18n/ResourceBundle_et.properties index 2fc24c36..fafa6eff 100644 --- a/subsonic-main/src/main/resources/net/sourceforge/subsonic/i18n/ResourceBundle_et.properties +++ b/subsonic-main/src/main/resources/net/sourceforge/subsonic/i18n/ResourceBundle_et.properties @@ -1,4 +1,4 @@ -# +# # Estonian localization. # Author: Olav Mägi # diff --git a/subsonic-main/src/main/webapp/WEB-INF/jsp/help.jsp b/subsonic-main/src/main/webapp/WEB-INF/jsp/help.jsp index 3184b9be..4dcd9423 100644 --- a/subsonic-main/src/main/webapp/WEB-INF/jsp/help.jsp +++ b/subsonic-main/src/main/webapp/WEB-INF/jsp/help.jsp @@ -21,7 +21,7 @@ - + @@ -36,35 +36,7 @@ - - - + - - - - - - - + - @@ -139,4 +144,4 @@
- - - - - Subsonic Premium - - - Subsonic Premium - - - - - - - - - - - - - - - - - -
${versionString} – ${buildDateString}
${versionString}-KANG – ${buildDateString}
${model.serverInfo} ( / )
GPL 3.0"> @@ -94,4 +66,4 @@
- \ No newline at end of file + diff --git a/subsonic-main/src/main/webapp/WEB-INF/jsp/home.jsp b/subsonic-main/src/main/webapp/WEB-INF/jsp/home.jsp index f1fd4cf5..124d16a3 100644 --- a/subsonic-main/src/main/webapp/WEB-INF/jsp/home.jsp +++ b/subsonic-main/src/main/webapp/WEB-INF/jsp/home.jsp @@ -7,9 +7,7 @@ - +

" alt=""/> diff --git a/subsonic-main/src/main/webapp/WEB-INF/jsp/top.jsp b/subsonic-main/src/main/webapp/WEB-INF/jsp/top.jsp index 0065bfc0..a8e1cbe3 100644 --- a/subsonic-main/src/main/webapp/WEB-INF/jsp/top.jsp +++ b/subsonic-main/src/main/webapp/WEB-INF/jsp/top.jsp @@ -64,6 +64,7 @@ + @@ -75,37 +76,41 @@ " onclick="showLeftFrame()" alt="" style="display:${model.showSideBar ? 'none' : 'inline'};cursor:pointer"> " onclick="hideLeftFrame()" alt="" style="display:${model.showSideBar ? 'inline' : 'none'};cursor:pointer">

+ " title="${home}" alt="${home}"> + " title="${nowPlaying}" alt="${nowPlaying}"> + " title="${starred}" alt="${starred}"> + " title="${playlists}" alt="${playlists}"> + " title="${podcast}" alt="${podcast}"> + " title="${settings}" alt="${settings}"> + + " title="${status}" alt="${status}"> + + " title="${more}" alt="${more}"> + " title="${help}" alt="${help}">
- \ No newline at end of file +