From 66ae21856c1309eb5086b268887a0f14cfd5a87d Mon Sep 17 00:00:00 2001 From: Zak Peirce Date: Fri, 16 Dec 2016 10:46:40 -0800 Subject: [PATCH] Removed all traces of premium license --- libresonic-installer-windows/pom.xml | 1 - .../command/NetworkSettingsCommand.java | 9 -- .../controller/DLNASettingsController.java | 3 +- .../player/controller/HelpController.java | 1 - .../player/controller/MainController.java | 1 - .../controller/PlayQueueController.java | 3 +- .../controller/PodcastChannelsController.java | 1 - .../player/controller/RESTController.java | 20 ---- .../player/controller/RightController.java | 3 +- .../controller/ShareManagementController.java | 3 +- .../controller/ShareSettingsController.java | 3 +- .../controller/SonosSettingsController.java | 3 +- .../controller/VideoPlayerController.java | 1 - .../RESTRequestParameterProcessingFilter.java | 13 --- .../player/service/NetworkService.java | 7 -- .../player/service/PodcastService.java | 4 - .../player/service/SettingsService.java | 105 +----------------- .../player/service/SonosService.java | 4 - .../player/service/UPnPService.java | 4 +- .../upnp/FolderBasedContentDirectory.java | 5 - .../player/i18n/ResourceBundle_cs.properties | 37 ------ .../player/i18n/ResourceBundle_de.properties | 27 ----- .../player/i18n/ResourceBundle_en.properties | 39 ------- .../i18n/ResourceBundle_en_GB.properties | 3 - .../player/i18n/ResourceBundle_et.properties | 38 ------- .../i18n/ResourceBundle_ja_JP.properties | 38 ------- .../player/i18n/ResourceBundle_ko.properties | 37 ------ .../player/i18n/ResourceBundle_nl.properties | 36 ------ .../i18n/ResourceBundle_zh_TW.properties | 39 ------- .../src/main/webapp/WEB-INF/jsp/albumMain.jsp | 1 - .../main/webapp/WEB-INF/jsp/createShare.jsp | 5 +- .../main/webapp/WEB-INF/jsp/dlnaSettings.jsp | 5 +- .../webapp/WEB-INF/jsp/networkSettings.jsp | 3 - .../main/webapp/WEB-INF/jsp/playQueueCast.jsp | 5 +- .../webapp/WEB-INF/jsp/podcastChannels.jsp | 3 - .../src/main/webapp/WEB-INF/jsp/right.jsp | 11 -- .../main/webapp/WEB-INF/jsp/shareSettings.jsp | 5 +- .../main/webapp/WEB-INF/jsp/sonosSettings.jsp | 5 +- .../main/webapp/WEB-INF/jsp/videoPlayer.jsp | 4 - .../service/SettingsServiceTestCase.java | 9 -- .../main/resources/libresonic-rest-api.xsd | 10 +- 41 files changed, 14 insertions(+), 540 deletions(-) diff --git a/libresonic-installer-windows/pom.xml b/libresonic-installer-windows/pom.xml index b213a361..22eefcfe 100644 --- a/libresonic-installer-windows/pom.xml +++ b/libresonic-installer-windows/pom.xml @@ -59,7 +59,6 @@ - diff --git a/libresonic-main/src/main/java/org/libresonic/player/command/NetworkSettingsCommand.java b/libresonic-main/src/main/java/org/libresonic/player/command/NetworkSettingsCommand.java index 67fe762b..c61cbf92 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/command/NetworkSettingsCommand.java +++ b/libresonic-main/src/main/java/org/libresonic/player/command/NetworkSettingsCommand.java @@ -19,7 +19,6 @@ */ package org.libresonic.player.command; -import org.libresonic.player.domain.LicenseInfo; /** * @author Sindre Mehus @@ -34,7 +33,6 @@ public class NetworkSettingsCommand { private String urlRedirectType; private int port; private boolean toast; - private LicenseInfo licenseInfo; public void setPortForwardingEnabled(boolean portForwardingEnabled) { this.portForwardingEnabled = portForwardingEnabled; @@ -83,13 +81,6 @@ public class NetworkSettingsCommand { this.toast = toast; } - public void setLicenseInfo(LicenseInfo licenseInfo) { - this.licenseInfo = licenseInfo; - } - - public LicenseInfo getLicenseInfo() { - return licenseInfo; - } public String getUrlRedirectType() { return urlRedirectType; diff --git a/libresonic-main/src/main/java/org/libresonic/player/controller/DLNASettingsController.java b/libresonic-main/src/main/java/org/libresonic/player/controller/DLNASettingsController.java index 8995c462..e2a98db2 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/controller/DLNASettingsController.java +++ b/libresonic-main/src/main/java/org/libresonic/player/controller/DLNASettingsController.java @@ -55,7 +55,6 @@ public class DLNASettingsController extends ParameterizableViewController { ModelAndView result = super.handleRequestInternal(request, response); map.put("dlnaEnabled", settingsService.isDlnaEnabled()); map.put("dlnaServerName", settingsService.getDlnaServerName()); - map.put("licenseInfo", settingsService.getLicenseInfo()); result.addObject("model", map); return result; @@ -92,4 +91,4 @@ public class DLNASettingsController extends ParameterizableViewController { public void setUpnpService(UPnPService upnpService) { this.upnpService = upnpService; } -} \ No newline at end of file +} diff --git a/libresonic-main/src/main/java/org/libresonic/player/controller/HelpController.java b/libresonic-main/src/main/java/org/libresonic/player/controller/HelpController.java index 24f0c27a..b4b6d023 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/controller/HelpController.java +++ b/libresonic-main/src/main/java/org/libresonic/player/controller/HelpController.java @@ -63,7 +63,6 @@ public class HelpController extends ParameterizableViewController { ", java " + System.getProperty("java.version") + ", " + System.getProperty("os.name"); - map.put("licenseInfo", settingsService.getLicenseInfo()); map.put("user", securityService.getCurrentUser(request)); map.put("brand", settingsService.getBrand()); map.put("localVersion", versionService.getLocalVersion()); diff --git a/libresonic-main/src/main/java/org/libresonic/player/controller/MainController.java b/libresonic-main/src/main/java/org/libresonic/player/controller/MainController.java index 68217c85..ece27c3d 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/controller/MainController.java +++ b/libresonic-main/src/main/java/org/libresonic/player/controller/MainController.java @@ -119,7 +119,6 @@ public class MainController extends AbstractController { map.put("showArtistInfo", userSettings.isShowArtistInfoEnabled()); map.put("partyMode", userSettings.isPartyModeEnabled()); map.put("brand", settingsService.getBrand()); - map.put("showAd", !settingsService.isLicenseValid() && adService.showAd()); map.put("viewAsList", isViewAsList(request, userSettings)); if (dir.isAlbum()) { map.put("sieblingAlbums", getSieblingAlbums(dir)); diff --git a/libresonic-main/src/main/java/org/libresonic/player/controller/PlayQueueController.java b/libresonic-main/src/main/java/org/libresonic/player/controller/PlayQueueController.java index 069660e4..f6f5e8cd 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/controller/PlayQueueController.java +++ b/libresonic-main/src/main/java/org/libresonic/player/controller/PlayQueueController.java @@ -61,7 +61,6 @@ public class PlayQueueController extends ParameterizableViewController { map.put("partyMode", userSettings.isPartyModeEnabled()); map.put("notify", userSettings.isSongNotificationEnabled()); map.put("autoHide", userSettings.isAutoHidePlayQueue()); - map.put("licenseInfo", settingsService.getLicenseInfo()); ModelAndView result = super.handleRequestInternal(request, response); result.addObject("model", map); return result; @@ -78,4 +77,4 @@ public class PlayQueueController extends ParameterizableViewController { public void setSettingsService(SettingsService settingsService) { this.settingsService = settingsService; } -} \ No newline at end of file +} diff --git a/libresonic-main/src/main/java/org/libresonic/player/controller/PodcastChannelsController.java b/libresonic-main/src/main/java/org/libresonic/player/controller/PodcastChannelsController.java index 1dff8955..3c4f8376 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/controller/PodcastChannelsController.java +++ b/libresonic-main/src/main/java/org/libresonic/player/controller/PodcastChannelsController.java @@ -64,7 +64,6 @@ public class PodcastChannelsController extends ParameterizableViewController { map.put("channels", channels); map.put("channelMap", channelMap); map.put("newestEpisodes", podcastService.getNewestEpisodes(10)); - map.put("licenseInfo", settingsService.getLicenseInfo()); return result; } diff --git a/libresonic-main/src/main/java/org/libresonic/player/controller/RESTController.java b/libresonic-main/src/main/java/org/libresonic/player/controller/RESTController.java index 6d99031f..a61b7fb7 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/controller/RESTController.java +++ b/libresonic-main/src/main/java/org/libresonic/player/controller/RESTController.java @@ -60,7 +60,6 @@ import org.libresonic.restapi.InternetRadioStation; import org.libresonic.restapi.InternetRadioStations; import org.libresonic.restapi.JukeboxPlaylist; import org.libresonic.restapi.JukeboxStatus; -import org.libresonic.restapi.License; import org.libresonic.restapi.Lyrics; import org.libresonic.restapi.MediaType; import org.libresonic.restapi.MusicFolders; @@ -101,7 +100,6 @@ import org.libresonic.player.domain.ArtistBio; import org.libresonic.player.domain.Bookmark; import org.libresonic.player.domain.Genre; import org.libresonic.player.domain.InternetRadio; -import org.libresonic.player.domain.LicenseInfo; import org.libresonic.player.domain.MediaFile; import org.libresonic.player.domain.MusicFolder; import org.libresonic.player.domain.MusicFolderContent; @@ -207,23 +205,6 @@ public class RESTController extends MultiActionController { jaxbWriter.writeResponse(request, response, res); } - @SuppressWarnings("UnusedDeclaration") - public void getLicense(HttpServletRequest request, HttpServletResponse response) throws Exception { - request = wrapRequest(request); - License license = new License(); - - LicenseInfo licenseInfo = settingsService.getLicenseInfo(); - - license.setEmail(licenseInfo.getLicenseEmail()); - license.setValid(licenseInfo.isLicenseValid()); - license.setLicenseExpires(jaxbWriter.convertDate(licenseInfo.getLicenseExpires())); - license.setTrialExpires(jaxbWriter.convertDate(licenseInfo.getTrialExpires())); - - Response res = createResponse(); - res.setLicense(license); - jaxbWriter.writeResponse(request, response, res); - } - @SuppressWarnings("UnusedDeclaration") public void getMusicFolders(HttpServletRequest request, HttpServletResponse response) throws Exception { request = wrapRequest(request); @@ -2489,7 +2470,6 @@ public class RESTController extends MultiActionController { PROTOCOL_MISMATCH_SERVER_TOO_OLD(30, "Incompatible Libresonic REST protocol version. Server must upgrade."), NOT_AUTHENTICATED(40, "Wrong username or password."), NOT_AUTHORIZED(50, "User is not authorized for the given operation."), - NOT_LICENSED(60, "The trial period for the Libresonic server is over. Please upgrade to Subsonic Premium. Visit libresonic.org for details."), NOT_FOUND(70, "Requested data was not found."); private final int code; diff --git a/libresonic-main/src/main/java/org/libresonic/player/controller/RightController.java b/libresonic-main/src/main/java/org/libresonic/player/controller/RightController.java index 769765e0..f042c7f0 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/controller/RightController.java +++ b/libresonic-main/src/main/java/org/libresonic/player/controller/RightController.java @@ -63,7 +63,6 @@ public class RightController extends ParameterizableViewController { map.put("showNowPlaying", userSettings.isShowNowPlayingEnabled()); map.put("showChat", userSettings.isShowChatEnabled()); map.put("user", securityService.getCurrentUser(request)); - map.put("licenseInfo", settingsService.getLicenseInfo()); result.addObject("model", map); return result; @@ -80,4 +79,4 @@ public class RightController extends ParameterizableViewController { public void setVersionService(VersionService versionService) { this.versionService = versionService; } -} \ No newline at end of file +} diff --git a/libresonic-main/src/main/java/org/libresonic/player/controller/ShareManagementController.java b/libresonic-main/src/main/java/org/libresonic/player/controller/ShareManagementController.java index f1bab574..30f7a8e7 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/controller/ShareManagementController.java +++ b/libresonic-main/src/main/java/org/libresonic/player/controller/ShareManagementController.java @@ -80,7 +80,6 @@ public class ShareManagementController extends MultiActionController { } map.put("playUrl", shareService.getShareUrl(share)); - map.put("licenseInfo", settingsService.getLicenseInfo()); return new ModelAndView("createShare", "model", map); } @@ -145,4 +144,4 @@ public class ShareManagementController extends MultiActionController { public void setPlaylistService(PlaylistService playlistService) { this.playlistService = playlistService; } -} \ No newline at end of file +} diff --git a/libresonic-main/src/main/java/org/libresonic/player/controller/ShareSettingsController.java b/libresonic-main/src/main/java/org/libresonic/player/controller/ShareSettingsController.java index 19113a73..ad513035 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/controller/ShareSettingsController.java +++ b/libresonic-main/src/main/java/org/libresonic/player/controller/ShareSettingsController.java @@ -69,7 +69,6 @@ public class ShareSettingsController extends ParameterizableViewController { map.put("shareBaseUrl", shareService.getShareBaseUrl()); map.put("shareInfos", getShareInfos(request)); map.put("user", securityService.getCurrentUser(request)); - map.put("licenseInfo", settingsService.getLicenseInfo()); result.addObject("model", map); return result; @@ -181,4 +180,4 @@ public class ShareSettingsController extends ParameterizableViewController { return dir; } } -} \ No newline at end of file +} diff --git a/libresonic-main/src/main/java/org/libresonic/player/controller/SonosSettingsController.java b/libresonic-main/src/main/java/org/libresonic/player/controller/SonosSettingsController.java index eb8226b6..4d05884e 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/controller/SonosSettingsController.java +++ b/libresonic-main/src/main/java/org/libresonic/player/controller/SonosSettingsController.java @@ -55,7 +55,6 @@ public class SonosSettingsController extends ParameterizableViewController { ModelAndView result = super.handleRequestInternal(request, response); map.put("sonosEnabled", settingsService.isSonosEnabled()); map.put("sonosServiceName", settingsService.getSonosServiceName()); - map.put("licenseInfo", settingsService.getLicenseInfo()); result.addObject("model", map); return result; @@ -93,4 +92,4 @@ public class SonosSettingsController extends ParameterizableViewController { public void setSonosService(SonosService sonosService) { this.sonosService = sonosService; } -} \ No newline at end of file +} diff --git a/libresonic-main/src/main/java/org/libresonic/player/controller/VideoPlayerController.java b/libresonic-main/src/main/java/org/libresonic/player/controller/VideoPlayerController.java index b585d43b..4cc8b3f1 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/controller/VideoPlayerController.java +++ b/libresonic-main/src/main/java/org/libresonic/player/controller/VideoPlayerController.java @@ -85,7 +85,6 @@ public class VideoPlayerController extends ParameterizableViewController { map.put("duration", duration); map.put("bitRates", BIT_RATES); map.put("defaultBitRate", DEFAULT_BIT_RATE); - map.put("licenseInfo", settingsService.getLicenseInfo()); map.put("user", user); ModelAndView result = super.handleRequestInternal(request, response); diff --git a/libresonic-main/src/main/java/org/libresonic/player/security/RESTRequestParameterProcessingFilter.java b/libresonic-main/src/main/java/org/libresonic/player/security/RESTRequestParameterProcessingFilter.java index efa374b6..dfabd4eb 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/security/RESTRequestParameterProcessingFilter.java +++ b/libresonic-main/src/main/java/org/libresonic/player/security/RESTRequestParameterProcessingFilter.java @@ -99,10 +99,6 @@ public class RESTRequestParameterProcessingFilter implements Filter { errorCode = authenticate(username, password, salt, token, previousAuth); } - if (errorCode == null) { - errorCode = checkLicense(client); - } - if (errorCode == null) { chain.doFilter(request, response); } else { @@ -162,15 +158,6 @@ public class RESTRequestParameterProcessingFilter implements Filter { return RESTController.ErrorCode.MISSING_PARAMETER; } - private RESTController.ErrorCode checkLicense(String client) { - LicenseInfo licenseInfo = settingsService.getLicenseInfo(); - if (licenseInfo.isLicenseOrTrialValid()) { - return null; - } - LOG.info("REST access for client '" + client + "' has expired."); - return RESTController.ErrorCode.NOT_LICENSED; - } - public static String decrypt(String s) { if (s == null) { return null; diff --git a/libresonic-main/src/main/java/org/libresonic/player/service/NetworkService.java b/libresonic-main/src/main/java/org/libresonic/player/service/NetworkService.java index 1992c0ea..aaaeb0a3 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/service/NetworkService.java +++ b/libresonic-main/src/main/java/org/libresonic/player/service/NetworkService.java @@ -232,8 +232,6 @@ public class NetworkService { HttpPost request = new HttpPost(enable ? URL_REDIRECTION_REGISTER_URL : URL_REDIRECTION_UNREGISTER_URL); int port = settingsService.getPort(); - boolean trial = !settingsService.isLicenseValid(); - Date trialExpires = settingsService.getTrialExpires(); List params = new ArrayList(); params.add(new BasicNameValuePair("serverId", settingsService.getServerId())); @@ -242,11 +240,6 @@ public class NetworkService { params.add(new BasicNameValuePair("localIp", settingsService.getLocalIpAddress())); params.add(new BasicNameValuePair("localPort", String.valueOf(port))); params.add(new BasicNameValuePair("contextPath", settingsService.getUrlRedirectContextPath())); - params.add(new BasicNameValuePair("trial", String.valueOf(trial))); - if (trial && trialExpires != null) { - params.add(new BasicNameValuePair("trialExpires", String.valueOf(trialExpires.getTime()))); - } else { - params.add(new BasicNameValuePair("licenseHolder", settingsService.getLicenseEmail())); } diff --git a/libresonic-main/src/main/java/org/libresonic/player/service/PodcastService.java b/libresonic-main/src/main/java/org/libresonic/player/service/PodcastService.java index 7fd2ab9d..cd6e5b4d 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/service/PodcastService.java +++ b/libresonic-main/src/main/java/org/libresonic/player/service/PodcastService.java @@ -535,10 +535,6 @@ public class PodcastService { try (CloseableHttpClient client = HttpClients.createDefault()) { - if (!settingsService.getLicenseInfo().isLicenseOrTrialValid()) { - throw new Exception("Sorry, the trial period is expired."); - } - PodcastChannel channel = getChannel(episode.getChannelId()); RequestConfig requestConfig = RequestConfig.custom() .setConnectTimeout(2 * 60 * 1000) // 2 minutes diff --git a/libresonic-main/src/main/java/org/libresonic/player/service/SettingsService.java b/libresonic-main/src/main/java/org/libresonic/player/service/SettingsService.java index 44bcd48d..132b39a0 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/service/SettingsService.java +++ b/libresonic-main/src/main/java/org/libresonic/player/service/SettingsService.java @@ -52,7 +52,6 @@ import org.libresonic.player.dao.UserDao; import org.libresonic.player.domain.AlbumListType; import org.libresonic.player.domain.Avatar; import org.libresonic.player.domain.InternetRadio; -import org.libresonic.player.domain.LicenseInfo; import org.libresonic.player.domain.MediaLibraryStatistics; import org.libresonic.player.domain.MusicFolder; import org.libresonic.player.domain.Theme; @@ -73,9 +72,6 @@ public class SettingsService { private static final File LIBRESONIC_HOME_WINDOWS = new File("c:/libresonic"); private static final File LIBRESONIC_HOME_OTHER = new File("/var/libresonic"); - // Number of free trial days. - public static final long TRIAL_DAYS = 30L; - // Global settings. private static final String KEY_INDEX_STRING = "IndexString"; private static final String KEY_IGNORED_ARTICLES = "IgnoredArticles"; @@ -102,9 +98,6 @@ public class SettingsService { private static final String KEY_PODCAST_EPISODE_DOWNLOAD_COUNT = "PodcastEpisodeDownloadCount"; private static final String KEY_DOWNLOAD_BITRATE_LIMIT = "DownloadBitrateLimit"; private static final String KEY_UPLOAD_BITRATE_LIMIT = "UploadBitrateLimit"; - private static final String KEY_LICENSE_EMAIL = "LicenseEmail"; - private static final String KEY_LICENSE_CODE = "LicenseCode"; - private static final String KEY_LICENSE_DATE = "LicenseDate"; private static final String KEY_DOWNSAMPLING_COMMAND = "DownsamplingCommand4"; private static final String KEY_HLS_COMMAND = "HlsCommand3"; private static final String KEY_JUKEBOX_COMMAND = "JukeboxCommand2"; @@ -131,7 +124,6 @@ public class SettingsService { private static final String KEY_ORGANIZE_BY_FOLDER_STRUCTURE = "OrganizeByFolderStructure"; private static final String KEY_SORT_ALBUMS_BY_YEAR = "SortAlbumsByYear"; private static final String KEY_MEDIA_LIBRARY_STATISTICS = "MediaLibraryStatistics"; - private static final String KEY_TRIAL_EXPIRES = "TrialExpires"; private static final String KEY_DLNA_ENABLED = "DlnaEnabled"; private static final String KEY_DLNA_SERVER_NAME = "DlnaServerName"; private static final String KEY_SONOS_ENABLED = "SonosEnabled"; @@ -178,9 +170,6 @@ public class SettingsService { private static final int DEFAULT_PODCAST_EPISODE_DOWNLOAD_COUNT = 1; private static final long DEFAULT_DOWNLOAD_BITRATE_LIMIT = 0; private static final long DEFAULT_UPLOAD_BITRATE_LIMIT = 0; - private static final String DEFAULT_LICENSE_EMAIL = null; - private static final String DEFAULT_LICENSE_CODE = null; - private static final String DEFAULT_LICENSE_DATE = null; private static final String DEFAULT_DOWNSAMPLING_COMMAND = "ffmpeg -i %s -map 0:0 -b:a %bk -v 0 -f mp3 -"; private static final String DEFAULT_HLS_COMMAND = "ffmpeg -ss %o -t %d -i %s -async 1 -b:v %bk -s %wx%h -ar 44100 -ac 2 -v 0 -f mpegts -c:v libx264 -preset superfast -c:a libmp3lame -threads 0 -"; private static final String DEFAULT_JUKEBOX_COMMAND = "ffmpeg -ss %o -i %s -map 0:0 -v 0 -ar 44100 -ac 2 -f s16be -"; @@ -206,7 +195,6 @@ public class SettingsService { private static final boolean DEFAULT_ORGANIZE_BY_FOLDER_STRUCTURE = true; private static final boolean DEFAULT_SORT_ALBUMS_BY_YEAR = true; private static final String DEFAULT_MEDIA_LIBRARY_STATISTICS = "0 0 0 0 0"; - private static final String DEFAULT_TRIAL_EXPIRES = null; private static final boolean DEFAULT_DLNA_ENABLED = false; private static final String DEFAULT_DLNA_SERVER_NAME = "Libresonic"; private static final boolean DEFAULT_SONOS_ENABLED = false; @@ -223,7 +211,7 @@ public class SettingsService { // Array of obsolete keys. Used to clean property file. private static final List OBSOLETE_KEYS = Arrays.asList("PortForwardingPublicPort", "PortForwardingLocalPort", "DownsamplingCommand", "DownsamplingCommand2", "DownsamplingCommand3", "AutoCoverBatch", "MusicMask", - "VideoMask", "CoverArtMask, HlsCommand", "HlsCommand2", "JukeboxCommand", "UrlRedirectTrialExpires", "VideoTrialExpires", + "VideoMask", "CoverArtMask, HlsCommand", "HlsCommand2", "JukeboxCommand", "CoverArtFileTypes", "UrlRedirectCustomHost", "CoverArtLimit", "StreamPort"); private static final String LOCALES_FILE = "/org/libresonic/player/i18n/locales.txt"; @@ -248,13 +236,6 @@ public class SettingsService { private static File libresonicHome; - private boolean licenseValidated = true; - private Date licenseExpires; - private final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); - private ScheduledFuture licenseValidationFuture; - - private static final long LICENSE_VALIDATION_DELAY_HOURS = 12; - private static final long LOCAL_IP_LOOKUP_DELAY_SECONDS = 60; private String localIpAddress; public SettingsService() { @@ -281,14 +262,6 @@ public class SettingsService { } } - // Start trial. - if (getTrialExpires() == null) { - Date expiryDate = new Date(System.currentTimeMillis() + TRIAL_DAYS * 24L * 3600L * 1000L); - setTrialExpires(expiryDate); - } - - save(false); - } /** * Register in service locator so that non-Spring objects can access me. @@ -298,7 +271,6 @@ public class SettingsService { logServerInfo(); ServiceLocator.setSettingsService(this); scheduleLocalIpAddressLookup(); - scheduleLicenseValidation(); } private void logServerInfo() { @@ -650,49 +622,6 @@ public class SettingsService { setLong(KEY_UPLOAD_BITRATE_LIMIT, limit); } - public String getLicenseEmail() { - return properties.getProperty(KEY_LICENSE_EMAIL, DEFAULT_LICENSE_EMAIL); - } - - public void setLicenseEmail(String email) { - setProperty(KEY_LICENSE_EMAIL, email); - } - - public String getLicenseCode() { - return properties.getProperty(KEY_LICENSE_CODE, DEFAULT_LICENSE_CODE); - } - - public void setLicenseCode(String code) { - setProperty(KEY_LICENSE_CODE, code); - } - - public Date getLicenseDate() { - String value = properties.getProperty(KEY_LICENSE_DATE, DEFAULT_LICENSE_DATE); - return value == null ? null : new Date(Long.parseLong(value)); - } - - public void setLicenseDate(Date date) { - String value = (date == null ? null : String.valueOf(date.getTime())); - setProperty(KEY_LICENSE_DATE, value); - } - - public boolean isLicenseValid() { - return true; - } - - public boolean isLicenseValid(String email, String license) { - return true; - } - - public LicenseInfo getLicenseInfo() { - Date trialExpires = getTrialExpires(); - Date now = new Date(); - boolean trialValid = trialExpires.after(now); - long trialDaysLeft = trialValid ? (trialExpires.getTime() - now.getTime()) / (24L * 3600L * 1000L) : 0L; - - return new LicenseInfo(getLicenseEmail(), isLicenseValid(), trialExpires, trialDaysLeft, licenseExpires); - } - public String getDownsamplingCommand() { return properties.getProperty(KEY_DOWNSAMPLING_COMMAND, DEFAULT_DOWNSAMPLING_COMMAND); } @@ -846,16 +775,6 @@ public class SettingsService { properties.setProperty(KEY_URL_REDIRECT_TYPE, urlRedirectType.name()); } - public Date getTrialExpires() { - String value = properties.getProperty(KEY_TRIAL_EXPIRES, DEFAULT_TRIAL_EXPIRES); - return value == null ? null : new Date(Long.parseLong(value)); - } - - private void setTrialExpires(Date date) { - String value = (date == null ? null : String.valueOf(date.getTime())); - setProperty(KEY_TRIAL_EXPIRES, value); - } - public String getUrlRedirectContextPath() { return properties.getProperty(KEY_URL_REDIRECT_CONTEXT_PATH, DEFAULT_URL_REDIRECT_CONTEXT_PATH); } @@ -1406,28 +1325,6 @@ public class SettingsService { return result.toArray(new String[result.size()]); } - private void validateLicense() { - String email = getLicenseEmail(); - Date date = getLicenseDate(); - licenseValidated = true; - return; - } - - public synchronized void scheduleLicenseValidation() { - if (licenseValidationFuture != null) { - licenseValidationFuture.cancel(true); - } - Runnable task = new Runnable() { - public void run() { - validateLicense(); - } - }; - licenseValidated = true; - licenseExpires = null; - - licenseValidationFuture = executor.scheduleWithFixedDelay(task, 0L, LICENSE_VALIDATION_DELAY_HOURS, TimeUnit.HOURS); - } - private void scheduleLocalIpAddressLookup() { Runnable task = new Runnable() { public void run() { diff --git a/libresonic-main/src/main/java/org/libresonic/player/service/SonosService.java b/libresonic-main/src/main/java/org/libresonic/player/service/SonosService.java index 86c0815d..e9a1e013 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/service/SonosService.java +++ b/libresonic-main/src/main/java/org/libresonic/player/service/SonosService.java @@ -347,10 +347,6 @@ public class SonosService implements SonosSoap { throw new SonosSoapFault.LoginInvalid(); } - if (!settingsService.getLicenseInfo().isLicenseOrTrialValid()) { - throw new SonosSoapFault.LoginUnauthorized(); - } - // Use username as session ID for easy access to it later. GetSessionIdResponse result = new GetSessionIdResponse(); result.setGetSessionIdResult(user.getUsername()); diff --git a/libresonic-main/src/main/java/org/libresonic/player/service/UPnPService.java b/libresonic-main/src/main/java/org/libresonic/player/service/UPnPService.java index a4d37aee..e33efe10 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/service/UPnPService.java +++ b/libresonic-main/src/main/java/org/libresonic/player/service/UPnPService.java @@ -125,11 +125,9 @@ public class UPnPService { // TODO: DLNACaps Version version = versionService.getLocalVersion(); String versionString = version == null ? null : version.toString(); - String licenseEmail = settingsService.getLicenseEmail(); - String licenseString = licenseEmail == null ? "Unlicensed" : ("Licensed to " + licenseEmail); DeviceDetails details = new DeviceDetails(serverName, new ManufacturerDetails(serverName), - new ModelDetails(serverName, licenseString, versionString), + new ModelDetails(serverName), new DLNADoc[]{new DLNADoc("DMS", DLNADoc.Version.V1_5)}, null); Icon icon = new Icon("image/png", 512, 512, 32, getClass().getResource("logo-512.png")); diff --git a/libresonic-main/src/main/java/org/libresonic/player/service/upnp/FolderBasedContentDirectory.java b/libresonic-main/src/main/java/org/libresonic/player/service/upnp/FolderBasedContentDirectory.java index 7323039d..a706e062 100644 --- a/libresonic-main/src/main/java/org/libresonic/player/service/upnp/FolderBasedContentDirectory.java +++ b/libresonic-main/src/main/java/org/libresonic/player/service/upnp/FolderBasedContentDirectory.java @@ -67,11 +67,6 @@ public class FolderBasedContentDirectory extends LibresonicContentDirectory { public BrowseResult browse(String objectId, BrowseFlag browseFlag, String filter, long firstResult, long maxResults, SortCriterion[] orderby) throws ContentDirectoryException { - if (!settingsService.getLicenseInfo().isLicenseOrTrialValid()) { - LOG.warn("UPnP/DLNA media server not available. Please upgrade to Subsonic Premium."); - throw new ContentDirectoryException(ContentDirectoryErrorCode.CANNOT_PROCESS, "Please upgrade to Subsonic Premium"); - } - LOG.info("UPnP request - objectId: " + objectId + ", browseFlag: " + browseFlag + ", filter: " + filter + ", firstResult: " + firstResult + ", maxResults: " + maxResults); diff --git a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_cs.properties b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_cs.properties index 97c8dd83..9967b82b 100644 --- a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_cs.properties +++ b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_cs.properties @@ -25,8 +25,6 @@ common.confirm = Potvr\u010Fte common.unknown = (Nezn\u00E1m\u00FD) common.default = (V\u00FDchoz\u00ED) common.settingssaved = Nastaven\u00ED byla ulo\u017Eena. -common.trialexpired = Zku\u0161ebn\u00ED doba vypr\u0161ela {0}. Z\u00EDskejte Subsonic Premium pro pou\u017Eit\u00ED t\u00E9to funkce. -common.trialnotexpired = Tato funkce je dostupn\u00E1 do {0}. Pot\u00E9 mus\u00EDte z\u00EDskat Subsonic Premium. # login.jsp login.username = U\u017Eivatelsk\u00E9 jm\u00E9no @@ -73,9 +71,6 @@ top.upgrade = Je dostupn\u00E1 nov\u00E1 verze. St\u00E1hnout {0} {1} \ zde. top.missing = Nebyly nalezeny \u017E\u00E1dn\u00E9 slo\u017Eky m\u00E9di\u00ED. Zm\u011B\u0148te nastaven\u00ED. top.logout = Odhl\u00E1sit u\u017Eivatele {0} -top.getpremium = Z\u00EDskat Subsonic Premium -top.gotpremium = Subsonic Premium -top.trialdaysleft = Zb\u00FDv\u00E1 {0} dn\u016F zku\u0161ebn\u00ED doby # left.jsp left.scanning = Prohled\u00E1v\u00E1n\u00ED slo\u017Eek m\u00E9di\u00ED... @@ -268,10 +263,6 @@ upload.unzipped = Rozbaleno {0} help.title = O aplikaci {0} help.upgrade = Pozor! Je dostupn\u00E1 nov\u00E1 verze. St\u00E1hnout {0} {1} \ zde. -help.premium.title = Licence -help.premium.expires = (vypr\u0161\u00ED {0}) -help.premium.upgrade = Upgradujte na Subsonic Premium, abyste si u\u017Eili spoustu funkc\u00ED nav\u00EDc! -help.premium.expired = (Licence vypr\u0161ela {0}) help.version.title = Verze help.builddate.title = Datum sestaven\u00ED help.server.title = Server @@ -568,7 +559,6 @@ main.sharealbum = Sd\u00EDlet main.more = V\u00EDce akc\u00ED... main.more.selection = Vybran\u00E9 skladby... main.more.share = Sd\u00EDlet -main.premium = Z\u00EDskat Subsonic Premium
(a odebrat tuto reklamu) main.nowplaying = P\u0159ehr\u00E1v\u00E1n\u00ED main.lyrics = Texty main.minutesago = minut zp\u011Bt @@ -637,33 +627,6 @@ share.disabled = Abyste s n\u011Bk\u00FDm mohli sd\u00EDlet svou hudbu, mus\u00E P\u0159ejd\u011Bte na Nastaven\u00ED > S\u00ED\u0165 (jsou vy\u017Eadov\u00E1na opr\u00E1vn\u011Bn\u00ED administr\u00E1tora). share.manage = Spravovat m\u00E1 sd\u00EDlen\u00E1 m\u00E9dia -# premium.jsp -premium.title = Subsonic Premium -premium.invalidlicense = Neplatn\u00FD licen\u010Dn\u00ED kl\u00ED\u010D. -premium.text =

Upgradujte na Subsonic Premium, abyste si u\u017Eili tyto dal\u0161\u00ED funkce:

\ -
    \ -
  • Aplikace pro Android, iPhone, Blackberry a Windows Phone*.
  • \ -
  • Aplikace pro Mac, Windows, Chrome, Roku a spoustu dal\u0161\u00EDch*.
  • \ -
  • Streamov\u00E1n\u00ED videa.
  • \ -
  • P\u0159ij\u00EDma\u010D Podcast\u016F.
  • \ -
  • Va\u0161e osobn\u00ED serverov\u00E1 adresa: vasejmeno.libresonic.org (viz Nastaven\u00ED > S\u00ED\u0165).
  • \ -
  • P\u0159ehr\u00E1v\u00E1n\u00ED sv\u00FDch m\u00E9di\u00ED na kompatibiln\u00EDch za\u0159\u00EDzen\u00EDch DLNA a UPnP.
  • \ -
  • Sd\u00EDlen\u00ED sv\u00FDch m\u00E9di\u00ED na Facebooku, Twitteru, Google+.
  • \ -
  • \u017D\u00E1dn\u00E9 reklamy ve webov\u00E9m rozhran\u00ED.
  • \ -
  • Ostatn\u00ED funkce, kter\u00E9 budou spu\u0161t\u011Bny pozd\u011Bji.
  • \ -
\ -

* N\u011Bkter\u00E9 aplikace mus\u00ED b\u00FDt zakoupeny samostatn\u011B.

-premium.getpremium = Z\u00EDskat Subsonic Premium -premium.licensed = M\u00E1te platnou licenci Subsonic Premium! -premium.licensedexpires = Va\u0161e licence Subsonic Premium je platn\u00E1 do {0} -premium.licensedexpired = Va\u0161e licence Subsonic Premium vypr\u0161ela {0} -premium.licensedto = Licence je registrov\u00E1na na u\u017Eivatele {0}. -premium.forcechange = Registrovat jin\u00FD licen\u010Dn\u00ED kl\u00ED\u010D -premium.register = P\u0159i upgradu na Subsonic Premium obdr\u017E\u00EDte licen\u010Dn\u00ED kl\u00ED\u010D e-mailem. Zaregistrujte se n\u00ED\u017Ee. -premium.resend = Ztracen\u00FD licen\u010Dn\u00ED kl\u00ED\u010D? Poslat ho znovu. -premium.register.email = E-mail -premium.register.license = Licen\u010Dn\u00ED kl\u00ED\u010D - # podcastReceiver.jsp podcastreceiver.title = P\u0159ij\u00EDma\u010D Podcast\u016F podcastreceiver.expandall = Zobrazit epizody diff --git a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_de.properties b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_de.properties index b7da1d8a..8f31fc8a 100644 --- a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_de.properties +++ b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_de.properties @@ -530,33 +530,6 @@ share.disabled = Um Musik mit jemanden teilen zu k\u00F6nnen musst du erst deine Bitte wechsle zu Settings > Network (Administratorrechte werden ben\u00F6tigt). share.manage = Meine geteilten Medien verwalten -# premium.jsp -premium.title = Subsonic Premium -premium.invalidlicense = Ung\u00FCltiger Lizenzschl\u00FCssel. -premium.text =

Upgrade zu Subsonic Premium um diese Funktionen zu geniessen:

\ -
    \ -
  • Apps f\u00FCr Android, iPhone, Windows Phone, Mac, Chrome und mehr*.
  • \ -
  • Videostreaming.
  • \ -
  • Streame zu deinen Chromecast und Sonos Ger\u00E4ten.
  • \ -
  • Podcast Empf\u00E4nger.
  • \ -
  • Deine pers\u00F6nliche Serveradresse: deinname.libresonic.org (siehe Einstellungen > Netzwerk).
  • \ -
  • Spiele deine Medien auf kompatiblen DLNA/UPnP Ger\u00E4ten.
  • \ -
  • Teile deine Medien auf Facebook, Twitter, Google+.
  • \ -
  • Keine Werbung im Webinterface.
  • \ -
  • Weitere Funktionen die sp\u00E4ter ver\u00F6ffentlicht werden.
  • \ -
\ -

* Einige Apps m\u00FCssen seperat gekauft werden.

-premium.getpremium = Erhalte Subsonic Premium -premium.licensed = Du hast eine g\u00FCltige Subsonic Premium Lizenz! -premium.licensedexpires = Deine Subsonic Premium Lizenz ist g\u00FCltig bis {0} -premium.licensedexpired = Deine Subsonic Premium Lizenz ist abgelaufen am {0} -premium.licensedto = Die Lizenz ist registriert f\u00FCr {0}. -premium.forcechange = Einen anderen Lizenzschl\u00FCssel registrieren -premium.register = Bei einem Upgrade auf Subsonic Premium erhalten sie ihren Lizenzschl\u00FCssel per Email. Bitte registrieren sie sich unten. -premium.resend = Lizenzschl\u00FCssel verloren? Erneut zusenden. -premium.register.email = Email -premium.register.license = License key - # userSettings.jsp usersettings.title = Benutzer ausw\u00E4hlen usersettings.newuser = Neuer Benutzer diff --git a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_en.properties b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_en.properties index 25cff3ab..b23e08b9 100644 --- a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_en.properties +++ b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_en.properties @@ -24,8 +24,6 @@ common.confirm = Please confirm common.unknown = (Unknown) common.default = (Default) common.settingssaved = Settings were saved. -common.trialexpired = The trial period expired on {0}. Get Subsonic Premium to use this feature. -common.trialnotexpired = This feature is available until {0}. After that you must get Subsonic Premium. # login.jsp login.username = Username @@ -73,9 +71,6 @@ top.upgrade = A new version is available. Download {0} {1} \ here. top.missing = No media folders found. Please change the settings. top.logout = Log out {0} -top.getpremium = Get Subsonic Premium -top.gotpremium = Subsonic Premium -top.trialdaysleft = {0} day(s) left of trial # left.jsp left.scanning = Scanning media folders... @@ -146,7 +141,6 @@ importPlaylist.error = Failed to import playlist. {0} # videoPlayer.jsp videoPlayer.getflash = Please install Flash Player -videoPlayer.getpremium = Get Subsonic Premium to play on Chromecast. # status.jsp status.title = Status @@ -316,10 +310,6 @@ upload.unzipped = Unzipped {0} help.title = About {0} help.upgrade = Note! A new version is available. Download {0} {1} \ here. -help.premium.title = License -help.premium.expires = (expires {0}) -help.premium.upgrade = Upgrade to Subsonic Premium to enjoy lots of extra features! -help.premium.expired = (License expired {0}) help.version.title = Version help.builddate.title = Build date help.server.title = Server @@ -344,7 +334,6 @@ settingsheader.podcast = Podcast settingsheader.player = Players settingsheader.dlna = DLNA/UPnP settingsheader.sonos = Sonos -settingsheader.premium = Subsonic Premium settingsheader.share = Shared media settingsheader.network = Network settingsheader.transcoding = Transcoding @@ -642,7 +631,6 @@ main.sharealbum = Share main.more = More actions... main.more.selection = Selected songs... main.more.share = Share -main.premium = Get Subsonic Premium
(and remove this ad) main.nowplaying = Now playing main.lyrics = Lyrics main.minutesago = minutes ago @@ -718,33 +706,6 @@ share.disabled = To share your music with someone you must first register your o Please go to Settings > Network (administrative rights required). share.manage = Manage my shared media -# premium.jsp -premium.title = Subsonic Premium -premium.invalidlicense = Invalid license key. -premium.text =

Upgrade to Subsonic Premium to enjoy these extra features:

\ -
    \ -
  • Apps for Android, iPhone, Windows Phone, Mac, Chrome and more*.
  • \ -
  • Video streaming.
  • \ -
  • Stream to your Chromecast and Sonos devices.
  • \ -
  • Podcast receiver.
  • \ -
  • Your personal server address: yourname.libresonic.org (see Settings > Network).
  • \ -
  • Play your media on compatible DLNA/UPnP devices.
  • \ -
  • Share your media on Facebook, Twitter, Google+.
  • \ -
  • No ads in the web interface.
  • \ -
  • Other features to be released later.
  • \ -
\ -

* Some apps must be purchased separately.

-premium.getpremium = Get Subsonic Premium -premium.licensed = You have a valid Subsonic Premium license! -premium.licensedexpires = Your Subsonic Premium license is valid until {0} -premium.licensedexpired = Your Subsonic Premium license expired {0} -premium.licensedto = The license is registered to {0}. -premium.forcechange = Register a different license key -premium.register = When upgrading to Subsonic Premium you receive a license key by email. Please register it below. -premium.resend = Lost the license key? Send it again. -premium.register.email = Email -premium.register.license = License key - # podcastReceiver.jsp podcastreceiver.title = Podcasts podcastreceiver.empty = You haven't subscribed to any podcasts yet. diff --git a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_en_GB.properties b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_en_GB.properties index e0d2ef71..3d036231 100644 --- a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_en_GB.properties +++ b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_en_GB.properties @@ -15,9 +15,6 @@ help.license.text = {0} is free software distributed under the Get Subsonic Premium
(and remove this advert) - # helpPopup.jsp helppopup.musicmask.text =

Allows you to specify the type of files that should be recognised as music.

helppopup.videomask.text =

Allows you to specify the type of files that should be recognised as video.

diff --git a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_et.properties b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_et.properties index c9a062e7..32c0f3b5 100644 --- a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_et.properties +++ b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_et.properties @@ -24,8 +24,6 @@ common.confirm = Palun kinnita common.unknown = (Tundmatu) common.default = (Tavaline) common.settingssaved = Seaded on salvestatud. -common.trialexpired = {0} aegus Teie prooviversioon. Selle kasutamiseks hankige Subsonic Premium. -common.trialnotexpired = Seda saab kasutada kuni{0}. Pärast tähtaja lõppu peate hankima Subsonic Premiumi. # login.jsp login.username = Kasutajanimi @@ -73,9 +71,6 @@ top.upgrade = Uuem versioon on saadaval. Lae alla {0} {1} \ siit. top.missing = Meediakauste ei leitud. Palun muuda seadeid. top.logout = Logi välja {0} -top.getpremium = Hankige Subsonic Premium -top.gotpremium = Subsonic Premium -top.trialdaysleft = {0} päev(a) jäänud prooviversiooni lõpuni # left.jsp left.scanning = Meediakaustade skänneerimine... @@ -140,7 +135,6 @@ importPlaylist.error = Esitusloendi importimine ebaõnnestus. {0} # videoPlayer.jsp videoPlayer.getflash = Palun paigalda Flash meediaesitaja -videoPlayer.getpremium = Chromecastil esitamiseks ostke Subsonic Premium. # status.jsp status.title = Olek @@ -266,10 +260,6 @@ upload.unzipped = {0} on lahti pakitud help.title = Info {0}´i kohta help.upgrade = Note! Saadaval on uuem versioon. Lae alla {0} {1} \ siit. -help.premium.title = Litsents -help.premium.expires = (aegub {0}) -help.premium.upgrade = Paljude lisavõimaluste nautimiseks hankigeSubsonic Premium! -help.premium.expired = (Litsents aegus {0}) help.version.title = Versioon help.builddate.title = Valmistamiskuupäev help.server.title = Server @@ -569,7 +559,6 @@ main.sharealbum = Jaga main.more = Rohkem tegevusi... main.more.selection = Valitud lood main.more.share = Jaga -main.premium = Hankige Subsonic Premium
(ja sellega eemaldate siinse reklaami) main.nowplaying = Hetkel esitamisel main.lyrics = Laulusõnad main.minutesago = minutit tagasi @@ -638,33 +627,6 @@ share.disabled = Esmalt, et saaksite muusikat jagada kellegagi, peate te registr Palun mine Seaded > Võrk (administraatori õigus on vajalik). share.manage = Halda minu jagatud meediat -# premium.jsp -premium.title = Subsonic Premium -premium.invalidlicense = Vigage litsentsivõti. -premium.text =

Nende lisavõimaluste nautimiseks peate hankima Subsonic Premiumi:

\ -
    \ -
  • Rakendused Androidile, iPhoneile ja Windows Phoneile*.
  • \ -
  • Rakendused BlackBerryiel, Rokule, Macile, Windowsile, Chrome´le ja paljudele teistele*.
  • \ -
  • Video edastus.
  • \ -
  • Taskupleieri kasutusvõimalus (Podcast).
  • \ -
  • Teie personaalse nimega serveriaadress: teienimi.libresonic.org (asub Seaded > Võrk).
  • \ -
  • Esitage oma meediattoetatud DLNA/UPnP seadmetes.
  • \ -
  • Jagage oma meediat Facebookis, Twitteris, Google+´is.
  • \ -
  • Reklaamivaba interneti kasutajaliides.
  • \ -
  • Teised võimalused avaldatakse hiljem.
  • \ -
\ -

* Mõned rakendused tuleb eraldi osta või sisaldavad reklaame.

-premium.getpremium = Hankige Subsonic Premium -premium.licensed = Teil on kehtiv litsents Subsonic Premiumile! -premium.licensedexpires = Teie Subsonic Premiumi litsents kehtib kuni {0} -premium.licensedexpired = Teie Subsonic Premiumi litsents aegub {0} -premium.licensedto = Litsents on registreeritud aadressile {0}. -premium.forcechange = Registreerige teise litsentsi võtmega -premium.register = Subsonic Premiumi litsentsi võtme leiate oma e-postist. Palun registreerige see kõrvalolevast ankeedist. -premium.resend = Kaotasite litsentsi võtme? Saatke see uuesti. -premium.register.email = E-spost -premium.register.license = Litsentsi võti - # podcastReceiver.jsp podcastreceiver.title = Taskupleierite hankija podcastreceiver.expandall = Kuva osad diff --git a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_ja_JP.properties b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_ja_JP.properties index d63ba0f5..ef58ef7a 100644 --- a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_ja_JP.properties +++ b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_ja_JP.properties @@ -25,8 +25,6 @@ common.confirm = \u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F common.unknown = (\u4E0D\u660E) common.default = (\u30C7\u30D5\u30A9\u30EB\u30C8) common.settingssaved = \u8A2D\u5B9A\u3092\u4FDD\u5B58\u3057\u307E\u3057\u305F\u3002 -common.trialexpired = \u8A66\u7528\u671F\u9593\u306F {0} \u307E\u3067\u3067\u3059\u3002\u3053\u306E\u6A5F\u80FD\u3092\u7D99\u7D9A\u3057\u3066\u5229\u7528\u3059\u308B\u306B\u306F Subsonic Premium \u306B\u767B\u9332\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -common.trialnotexpired = \u3053\u306E\u6A5F\u80FD\u306F {0} \u307E\u3067\u5229\u7528\u3067\u304D\u307E\u3059\u3002\u7D99\u7D9A\u3057\u3066\u5229\u7528\u3059\u308B\u306B\u306FSubsonic Premium\u306B\u767B\u9332\u3057\u3066\u304F\u3060\u3055\u3044\u3002 # login.jsp login.username = \u30E6\u30FC\u30B6\u540D @@ -74,9 +72,6 @@ top.upgrade = \u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u30EA\u30EA \u3092\u3053\u3053\u304B\u3089\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3057\u3066\u304F\u3060\u3055\u3044\u3002 top.missing = \u97F3\u697D\u30D5\u30A9\u30EB\u30C0\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u8A2D\u5B9A\u3092\u898B\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002 top.logout = {0} \u3092\u30ED\u30B0\u30A2\u30A6\u30C8\u3059\u308B -top.getpremium = Subsonic Premium\u306B\u767B\u9332 -top.gotpremium = Subsonic Premium -top.trialdaysleft = \u8A66\u7528\u671F\u9593\u306F\u6B8B\u308A {0} \u65E5\u3067\u3059 # left.jsp left.scanning = \u97F3\u697D\u30D5\u30A9\u30EB\u30C0\u3092\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u3044\u307E\u3059... @@ -275,10 +270,6 @@ upload.unzipped = zip\u30D5\u30A1\u30A4\u30EB {0} \u3092\u5C55\u958B\u3057\u307E help.title = {0} \u306B\u3064\u3044\u3066 help.upgrade = \u6CE8\u610F! \u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u30EA\u30EA\u30FC\u30B9\u3055\u308C\u3066\u3044\u307E\u3059\u3002
{0} {1} \ \u3092\u3053\u3053\u304B\u3089\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -help.premium.title = \u30E9\u30A4\u30BB\u30F3\u30B9 -help.premium.expires = (\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u671F\u9650 {0}) -help.premium.upgrade = Subsonic Premium \u306B\u767B\u9332\u3057\u3066 \u5168\u6A5F\u80FD \u3092\u304A\u697D\u3057\u307F\u304F\u3060\u3055\u3044! -help.premium.expired = (\u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u6709\u52B9\u671F\u9650 {0}) help.version.title = \u30D0\u30FC\u30B8\u30E7\u30F3 help.builddate.title = \u30D3\u30EB\u30C9\u65E5 help.server.title = \u30B5\u30FC\u30D0 @@ -313,7 +304,6 @@ settingsheader.podcast = Podcast settingsheader.player = \u30D7\u30EC\u30FC\u30E4 settingsheader.dlna = DLNA settingsheader.sonos = Sonos -settingsheader.premium = Subsonic Premium settingsheader.share = \u5171\u6709\u306E\u8A2D\u5B9A settingsheader.network = \u30CD\u30C3\u30C8\u30EF\u30FC\u30AF settingsheader.transcoding = \u30C8\u30E9\u30F3\u30B9\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0 @@ -608,7 +598,6 @@ main.sharealbum = \u5171\u6709 main.more = \u305D\u306E\u4ED6... main.more.selection = \u66F2\u76EE\u306E\u9078\u629E main.more.share = \u5171\u6709 -main.premium = Subsonic Premium \u306B\u767B\u9332
(\u5E83\u544A\u304C\u9664\u53BB\u3067\u304D\u307E\u3059) main.nowplaying = \u518D\u751F\u4E2D main.lyrics = \u6B4C\u8A5E main.minutesago = \u5206\u524D @@ -683,33 +672,6 @@ share.disabled = \u3042\u306A\u305F\u306E\u66F2\u3092\u8AB0\u304B\u3068\u5171\u6 \u53C2\u7167: \u8A2D\u5B9A > \u30CD\u30C3\u30C8\u30EF\u30FC\u30AF (\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059) share.manage = \u5171\u6709\u30E1\u30C7\u30A3\u30A2\u306E\u7BA1\u7406 -# premium.jsp -premium.title = Subsonic Premium -premium.invalidlicense = \u7121\u52B9\u306A\u30E9\u30A4\u30BB\u30F3\u30B9\u30AD\u30FC\u3067\u3059\u3002 -premium.text =

Subsonic Premium \u306B\u767B\u9332\u3059\u308B\u3068\u3001\u4EE5\u4E0B\u306E\u6A5F\u80FD\u304C\u5229\u7528\u3067\u304D\u307E\u3059:

\ -
    \ -
  • Android, iPhone, Blackberry \u3084 Windows Phone* \u7B49\u306E\u30A2\u30D7\u30EA\u3067\u518D\u751F\u3002
  • \ -
  • Mac, Windows, Chrome, Roku, \u305D\u306E\u4ED6* \u7528\u306E\u30A2\u30D7\u30EA\u3067\u518D\u751F\u3002
  • \ -
  • \u30D3\u30C7\u30AA\u30B9\u30C8\u30EA\u30FC\u30DF\u30F3\u30B0\u518D\u751F\u3002
  • \ -
  • Podcast \u306E\u53D7\u4FE1\u3002
  • \ -
  • \u3042\u306A\u305F\u56FA\u6709\u306E\u30B5\u30FC\u30D0\u30A2\u30C9\u30EC\u30B9: yourname.libresonic.org \u306E\u4F7F\u7528(\u53C2\u7167: \u8A2D\u5B9A > \u30CD\u30C3\u30C8\u30EF\u30FC\u30AF)\u3002
  • \ -
  • DLNA/UPnP \u4E92\u63DB\u30C7\u30D0\u30A4\u30B9\u3067\u97F3\u697D\u3092\u518D\u751F\u3002
  • \ -
  • Facebook, Twitter, Google+ \u3067\u97F3\u697D\u3092\u5171\u6709\u3002
  • \ -
  • \u30A6\u30A7\u30D6\u753B\u9762\u3067\u306E\u5E83\u544A\u306E\u975E\u8868\u793A\u3002
  • \ -
  • \u305D\u306E\u4ED6\u306E\u6A5F\u80FD\u3082\u4ECA\u5F8C\u306E\u30EA\u30EA\u30FC\u30B9\u3067\u8FFD\u52A0\u3002
  • \ -
\ -

* \u4E00\u90E8\u306E\u30A2\u30D7\u30EA\u306F\u5225\u9014\u8CFC\u5165\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002

-premium.getpremium = Subsonic Premium \u306B\u767B\u9332 -premium.licensed = \u6709\u52B9\u306A Subsonic Premium \u30E9\u30A4\u30BB\u30F3\u30B9\u3092\u53D6\u5F97\u3057\u307E\u3057\u305F! -premium.licensedexpires = Subsonic Premium \u30E9\u30A4\u30BB\u30F3\u30B9\u304C {0} \u307E\u3067\u6709\u52B9\u3067\u3059 -premium.licensedexpired = Subsonic Premium \u30E9\u30A4\u30BB\u30F3\u30B9\u306E\u6709\u52B9\u671F\u9650\u306F {0} \u307E\u3067\u3067\u3059 -premium.licensedto = \u30E9\u30A4\u30BB\u30F3\u30B9\u306F {0} \u306B\u767B\u9332\u3055\u308C\u307E\u3057\u305F\u3002 -premium.forcechange = \u5225\u306E\u30E9\u30A4\u30BB\u30F3\u30B9\u30AD\u30FC\u3092\u767B\u9332\u3059\u308B -premium.register = Subsonic Premium \u306B\u767B\u9332\u3059\u308B\u5834\u5408\u306F\u3001\u30E1\u30FC\u30EB\u3067\u53D7\u3051\u53D6\u3063\u305F\u30E9\u30A4\u30BB\u30F3\u30B9\u30AD\u30FC\u3092\u3001\u4E0B\u6B04\u306B\u5165\u529B\u3057 OK \u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u307E\u3059\u3002 -premium.resend = \u30E9\u30A4\u30BB\u30F3\u30B9\u30AD\u30FC\u3092\u5931\u304F\u3057\u307E\u3057\u305F\u304B? \u30E9\u30A4\u30BB\u30F3\u30B9\u30AD\u30FC\u3092\u518D\u53D6\u5F97\u3059\u308B\u3002 -premium.register.email = \u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9 -premium.register.license = \u30E9\u30A4\u30BB\u30F3\u30B9\u30AD\u30FC - # podcastReceiver.jsp podcastreceiver.title = Podcast\u306E\u53D7\u4FE1 podcastreceiver.empty = \u30DD\u30C3\u30C9\u30AD\u30E3\u30B9\u30C8\u304C\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 diff --git a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_ko.properties b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_ko.properties index a8a28c49..4a3ec23e 100644 --- a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_ko.properties +++ b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_ko.properties @@ -24,8 +24,6 @@ common.confirm = \uD655\uC778\uD558\uC2DC\uAE30 \uBC14\uB78D\uB2C8\uB2E4 common.unknown = (\uC54C\uC218\uC5C6\uC74C) common.default = (\uAE30\uBCF8\uAC12) common.settingssaved = \uC124\uC815\uC774 \uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -common.trialexpired = {0}\uC77C\uC5D0 \uC2DC\uD5D8\uAE30\uAC04\uC774 \uB9CC\uB8CC\uB429\uB2C8\uB2E4. \uC774 \uAE30\uB2A5\uC744 \uACC4\uC18D \uC0AC\uC6A9\uD558\uAE30 \uC704\uD574 \uC11C\uBE0C\uC18C\uB2C9 \uD504\uB9AC\uBBF8\uC5C4\uC744 \uAD6C\uC785\uD569\uB2C8\uB2E4. -common.trialnotexpired = \uC774 \uAE30\uB2A5\uC740 {0}\uC77C\uAE4C\uC9C0 \uAC00\uB2A5\uD569\uB2C8\uB2E4. \uADF8 \uC774\uD6C4\uC5D0\uB294 \uC11C\uBE0C\uC18C\uB2C9 \uD504\uB9AC\uBBF8\uC5C4\uC744 \uAD6C\uC785\uD558\uC5EC\uC57C \uD569\uB2C8\uB2E4. # login.jsp login.username = \uC0AC\uC6A9\uC790\uC774\uB984 @@ -72,9 +70,6 @@ top.upgrade = \uC54C\uB9BC! \uC0C8\uB85C\uC6B4 \uBC84\uC804\uC744 \uC0AC\ \uC5EC\uAE30. top.missing = \uC9C0\uC815\uB41C \uC74C\uC545 \uC800\uC7A5\uC18C\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. \uC124\uC815\uC744 \uD655\uC778\uD574\uC8FC\uC138\uC694. top.logout = {0} \uB85C\uADF8\uC544\uC6C3 -top.getpremium = \uC11C\uBE0C\uC18C\uB2C9 \uD504\uB9AC\uBBF8\uC5C4 \uC5BB\uAE30 -top.gotpremium = \uC11C\uBE0C\uC18C\uB2C9 \uD504\uB9AC\uBBF8\uC5C4 -top.trialdaysleft = \uC2DC\uD5D8 \uAE30\uAC04\uC774 {0}\uC77C \uB0A8\uC558\uC2B5\uB2C8\uB2E4. # left.jsp left.scanning = \uBBF8\uB514\uC5B4 \uD3F4\uB354\uB97C \uAC80\uC0C9 \uC911\uC785\uB2C8\uB2E4. @@ -264,10 +259,6 @@ upload.unzipped = \uC555\uCD95\uC744 \uD480\uC5C8\uC2B5\uB2C8\uB2E4. {0} help.title = About {0} help.upgrade = \uC54C\uB9BC! \uC0C8\uB85C\uC6B4 \uBC84\uC804\uC774 \uB098\uC654\uC2B5\uB2C8\uB2E4. \uB2E4\uC6B4\uB85C\uB4DC {0} {1} \ \uC5EC\uAE30. -help.premium.title = \uB77C\uC774\uC13C\uC2A4 -help.premium.expires = ({0} \uB9CC\uB8CC) -help.premium.upgrade = \uC11C\uBE0C\uC18C\uB2C9 \uD504\uB9AC\uBBF8\uC5C4 \uC73C\uB85C \uC5C5\uADF8\uB808\uC774\uB4DC\uD558\uC5EC \uB9CE\uC740 \uD655\uC7A5 \uAE30\uB2A5\uB4E4 \uC744 \uC0AC\uC6A9\uD574\uBCF4\uC138\uC694! -help.premium.expired = (\uB77C\uC774\uC13C\uC2A4 \uB9CC\uB8CC\uB428 {0}) help.version.title = \uBC84\uC804 help.builddate.title = \uBE4C\uB4DC \uB0A0\uC9DC help.server.title = \uC11C\uBC84 @@ -574,7 +565,6 @@ main.sharealbum = Share main.more = More actions... main.more.selection = Selected songs main.more.share = Share -main.premium = Get Subsonic Premium
(and remove this ad) main.nowplaying = \uD604\uC7AC \uC7AC\uC0DD main.lyrics = \uAC00\uC0AC main.minutesago = \uBD84 \uC804 @@ -641,33 +631,6 @@ share.disabled = \uBA3C\uC800 \uC790\uC2E0\uC758 libresonic.org \uC8FC\ \uC124\uC815 > \uB124\uD2B8\uC6CC\uD06C \uB85C \uC774\uB3D9\uD558\uC2ED\uC2DC\uC624 (\uAD00\uB9AC\uC790 \uAD8C\uD55C\uC774 \uD544\uC694\uD569\uB2C8\uB2E4). share.manage = \uB0B4 \uACF5\uC720 \uBBF8\uB514\uC5B4 \uAD00\uB9AC -# premium.jsp -premium.title = \uC11C\uBE0C\uC18C\uB2C9 \uD504\uB9AC\uBBF8\uC5C4 -premium.invalidlicense = \uC798\uBABB\uB41C \uB77C\uC774\uC13C\uC2A4 \uD0A4. -premium.text =

\uC774\uB7EC\uD55C \uCD94\uAC00 \uAE30\uB2A5\uC744 \uC990\uAE38 \uC218 \uC788\uB294 \uC11C\uBE0C\uC18C\uB2C9 \uD504\uB9AC\uBBF8\uC5C4\uC73C\uB85C \uC5C5\uADF8\uB808\uC774\uB4DC:

\ -
    \ -
  • \uC571\uC2A4 \uC548\uB4DC\uB85C\uC774\uB4DC, \uC544\uC774\uD3EC, \uC708\uB3C4\uC6B0 \uBAA8\uBC14\uC77C.
  • \ -
  • \uC571\uC2A4 \uBE14\uB799\uBCA0\uB9AC, \uB85C\uCFE0, \uC708\uB3C4\uC6B0, \uD06C\uB86C \uB4F1.
  • \ -
  • \uBE44\uB514\uC624 \uC2A4\uD2B8\uB9AC\uBC0D.
  • \ -
  • \uD31F\uCE90\uC2A4\uD2B8 \uC218\uC2E0\uAE30.
  • \ -
  • \uAC1C\uC778 \uC11C\uBC84 \uC8FC\uC18C: \uB2F9\uC2E0\uC758\uC774\uB984.libresonic.org (see \uC124\uC815 > \uB124\uD2B8\uC6CC\uD06C).
  • \ -
  • DLNA/UPnP \uD638\uD658 \uC7A5\uCE58\uC5D0\uC11C \uB2F9\uC2E0\uC758 \uBBF8\uB514\uC5B4\uB97C \uC7AC\uC0DD.
  • \ -
  • \uB2F9\uC2E0\uC758 \uBBF8\uB514\uC5B4\uB97C \uD398\uC774\uC2A4\uBD81, \uD2B8\uC704\uD130, \uAD6C\uAE00\uD50C\uB7EC\uC2A4\uC5D0 \uACF5\uC720.
  • \ -
  • \uC6F9 \uC778\uD130\uD398\uC774\uC2A4\uC758 \uAD11\uACE0\uC81C\uAC70.
  • \ -
  • \uCC28\uD6C4 \uCD94\uAC00\uB418\uB294 \uC5EC\uB7EC \uAE30\uB2A5\uB4E4.
  • \ -
\ -

* \uC77C\uBD80 \uC571\uC758 \uACBD\uC6B0 \uCD94\uAC00 \uACB0\uC81C\uB098 \uAD11\uACE0\uAC00 \uD3EC\uD568\uB429\uB2C8\uB2E4.

-premium.getpremium = \uC11C\uBE0C\uC18C\uB2C9 \uD504\uB9AC\uBBF8\uC5C4\uC744 \uC5BB\uC73C\uC138\uC694. -premium.licensed = \uB2F9\uC2E0\uC740 \uC720\uD6A8\uD55C \uC11C\uBE0C\uC18C\uB2C9 \uD504\uB9AC\uBBF8\uC5C4 \uB77C\uC774\uC13C\uC2A4\uB97C \uAC00\uC9C0\uACE0 \uC788\uC2B5\uB2C8\uB2E4.! -premium.licensedexpires = \uB2F9\uC2E0\uC758 \uC11C\uBE0C\uC18C\uB2C9 \uD504\uB9AC\uBBF8\uC5C4 \uB77C\uC774\uC13C\uC2A4\uB294 {0} \uAE4C\uC9C0 \uC720\uD6A8\uD569\uB2C8\uB2E4. -premium.licensedexpired = \uB2F9\uC2E0\uC758 \uC11C\uBE0C\uC18C\uB2C9 \uD504\uB9AC\uBBF8\uC5C4 \uB77C\uC774\uC13C\uC2A4\uB294 {0} \uC5D0 \uB9CC\uB8CC\uB429\uB2C8\uB2E4. -premium.licensedto = \uB77C\uC774\uC13C\uC2A4\uAC00 {0} \uC5D0 \uB4F1\uB85D\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4. -premium.forcechange = \uC774\uAC83\uC744 \uBCC0\uACBD\uD569\uB2C8\uB2E4. -premium.register = \uC11C\uBE0C\uC18C\uB2C9 \uD504\uB9AC\uBBF8\uC5C4\uC73C\uB85C \uC5C5\uADF8\uB808\uC774\uB4DC\uD560 \uB54C \uC774\uBA54\uC77C\uB85C \uB77C\uC774\uC13C\uC2A4\uD0A4\uB97C \uBC1B\uC2B5\uB2C8\uB2E4. \uC544\uB798\uC5D0 \uB4F1\uB85D\uD558\uC138\uC694. -premium.resend = \uB77C\uC774\uC13C\uC2A4\uD0A4\uB97C \uC78A\uC73C\uC168\uB098\uC694? \uB2E4\uC2DC \uBCF4\uB0B4\uAE30. -premium.register.email = \uC774\uBA54\uC77C -premium.register.license = \uB77C\uC774\uC13C\uC2A4 \uD0A4 - # podcastReceiver.jsp podcastreceiver.title = \uD31F\uCE90\uC2A4\uD2B8 \uC218\uC2E0\uAE30 podcastreceiver.expandall = \uC5D0\uD53C\uC18C\uB4DC \uBCF4\uAE30 diff --git a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_nl.properties b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_nl.properties index 9d34a9e8..48e57b04 100644 --- a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_nl.properties +++ b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_nl.properties @@ -30,8 +30,6 @@ common.confirm = Bevestig common.unknown = (Onbekend) common.default = (Standaard) common.settingssaved = Instellingen zijn opgeslagen. -common.trialexpired = De testperiode is verlopen op {0}. Neem Subsonic Premium om deze functie te gebruiken. -common.trialnotexpired = Deze functie is beschikbaar tot {0}. Daarna heb je Subsonic Premium nodig. # login.jsp login.username = Gebruikersnaam @@ -79,9 +77,6 @@ top.upgrade = Er is een nieuwe versie beschikbaar. Download {0} {1} \ here. top.missing = Geen mediamappen gevonden. Verander de Instellingen. top.logout = Uitloggen {0} -top.getpremium = Schaf Subsonic Premium aan. -top.gotpremium = Subsonic Premium -top.trialdaysleft = resterende testperiode {0} dag(en) # left.jsp left.scanning = Mediamappen worden gescanned. @@ -269,10 +264,6 @@ upload.unzipped = Uitgepakt {0} help.title = Over {0} help.upgrade = Let op! Er is een nieuwe versie beschikbaar. Download {0} {1} \ hier. -help.premium.title = Licentie -help.premium.expires = (vervalt op {0}) -help.premium.upgrade = Upgrade naar Subsonic Premium om extra functies te krijgen! -help.premium.expired = (Licentie vervallen op {0}) help.version.title = Versie help.builddate.title = Compileer datum help.server.title = Server @@ -573,7 +564,6 @@ main.sharealbum = Delen main.more = Meer acties... main.more.selection = Geselecteerde songs... main.more.share = Deel -main.premium = Schaf Subsonic Premium aan
(en verwijder de advertentie) main.nowplaying = Speelt nu main.lyrics = Teksten main.minutesago = minuten geleden @@ -642,32 +632,6 @@ share.disabled = Om jouw muziek te kunnen delen moet je eerst je eigen libre Ga naar Instellingen > Netwerk (Administrator rechten vereist!). share.manage = Beheer gedeelde media. -# premium.jsp -premium.title = Subsonic Premium -premium.invalidlicense = Ongeldige licentie sleutel. -premium.text =

Upgrade naar Subsonic Premium om van deze extra functies te kunnen genieten:

\ -
    \ -
  • Apps voor Android, iPhone and Windows Phone*.
  • \ -
  • Apps voor BlackBerry, Roku, Mac, Windows, Chrome and more*.
  • \ -
  • Video streaming.
  • \ -
  • Podcast ontvanger.
  • \ -
  • Je persoonlijk server adres: Jouwnaam.libresonic.org (Zie Instellingen > Netwerk).
  • \ -
  • Deel jouw media op Facebook, Twitter, Google+.
  • \ -
  • Geen advertenties in de web interface.
  • \ -
  • Meer functies die later uitgebracht worden.
  • \ -
\ -

* Sommige apps moeten separaat aangekocht worden.

-premium.getpremium = Schaf Subsonic Premium aan -premium.licensed = Je hebt een geldige Subsonic Premium licentie! -premium.licensedexpires = Jouw Subsonic Premium licentie is geldig tot {0} -premium.licensedexpired = Jouw Subsonic Premium licentie is vervallen op {0} -premium.licensedto = Deze licentie is geregistreerd voor {0}. -premium.forcechange = Registreer met een andere licentie sleutel -premium.register = Als je upgrade naar Subsonic Premium zul je per email een licentie sleutel ontvangen. Voer de licentiesleutel hier in: -premium.resend = Licentiesleutel verloren? Stuur mij de sleutel opnieuw.. -premium.register.email = Email -premium.register.license = Licentie sleutel - # podcastReceiver.jsp podcastreceiver.title = Podcast ontvanger podcastreceiver.expandall = Toon uitzendingen diff --git a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_zh_TW.properties b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_zh_TW.properties index e3ff6b3a..c8bf4493 100644 --- a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_zh_TW.properties +++ b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_zh_TW.properties @@ -27,8 +27,6 @@ common.confirm = \u8ACB\u78BA\u8A8D common.unknown = (\u672A\u77E5) common.default = (\u9810\u8A2D\u503C) common.settingssaved = \u8A2D\u5B9A\u5DF2\u5132\u5B58\u3002 -common.trialexpired = \u8A66\u7528\u7248\u5C07\u65BC {0} \u5230\u671F\u3002\u53D6\u5F97Subsonic Premium\u4F86\u4F7F\u7528\u9019\u500B\u529F\u80FD\u3002 -common.trialnotexpired = \u9019\u500B\u529F\u80FD\u5728 {0} \u4E4B\u524D\u90FD\u53EF\u4F7F\u7528\u3002\u4E4B\u5F8C\u60A8\u5FC5\u9808\u53D6\u5F97Subsonic Premium\u624D\u80FD\u4F7F\u7528\u3002 # login.jsp login.username = \u5E33\u865F @@ -76,9 +74,6 @@ top.upgrade = \u6709\u65B0\u7248\u672C\u63D0\u4F9B. \u4E0B\u8F09 {0} {1} \ \u9019\u88E1\u3002 top.missing = \u627E\u4E0D\u5230\u97F3\u6A02\u8CC7\u6599\u593E\uFF0C\u8ACB\u91CD\u65B0\u8A2D\u5B9A\u3002 top.logout =\u767B\u51FA{0} -top.getpremium = \u53D6\u5F97 Subsonic Premium -top.gotpremium = Subsonic Premium -top.trialdaysleft = \u5269\u4E0B {0} \u5929\u9AD4\u9A57\u6642\u9593 # left.jsp left.scanning = \u6383\u63CF\u97F3\u6A02\u8CC7\u6599\u593E\u4E2D\u2026 @@ -148,7 +143,6 @@ importPlaylist.error = Failed to import playlist. {0} # videoPlayer.jsp videoPlayer.getflash = Please install Flash Player -videoPlayer.getpremium = Get Subsonic Premium to play on Chromecast. # status.jsp status.title = \u72C0\u614B @@ -276,10 +270,6 @@ upload.unzipped = \u89E3\u58D3\u7E2E {0} help.title = \u95DC\u65BC {0} help.upgrade = \u6CE8\u610F\uFF01 \u6709\u65B0\u7248\u672C\u53EF\u7528\u3002\u4E0B\u8F09 {0} {1} \ \u8ACB\u9EDE\u9078\u9019\u88E1\u3002 -help.premium.title = \u6388\u6B0A -help.premium.expires = (\u904E\u671F {0}) -help.premium.upgrade = \u5347\u7D1A\u5230 Subsonic Premium \u4F86\u4F7F\u7528 \u66F4\u591A\u529F\u80FD\uFF01 -help.premium.expired = (\u6388\u6B0A\u904E\u671F\u65BC {0}) help.version.title = \u7248\u672C help.builddate.title = \u65E5\u671F help.server.title = \u4F3A\u670D\u5668 @@ -304,7 +294,6 @@ settingsheader.podcast = \u64AD\u5BA2 settingsheader.player = \u64AD\u653E\u5668 settingsheader.dlna = DLNA/UPnP settingsheader.sonos = Sonos -settingsheader.premium = Subsonic Premium settingsheader.share = \u5206\u4EAB\u5A92\u9AD4 settingsheader.network = \u7DB2\u8DEF settingsheader.transcoding = \u8F49\u6A94 @@ -600,7 +589,6 @@ main.sharealbum = \u5206\u4EAB main.more = \u66F4\u591A\u52D5\u4F5C\u2026 main.more.selection = \u9078\u64C7\u6B4C\u66F2\u2026 main.more.share = \u5206\u4EAB -main.premium = \u53D6\u5F97 Subsonic Premium
(\u4E26\u522A\u9664\u6B64\u5EE3\u544A) main.nowplaying =\u76EE\u524D\u64A5\u653E main.lyrics = \u6B4C\u8A5E main.minutesago = \u5206\u9418\u524D @@ -676,33 +664,6 @@ share.disabled = To share your music with someone you must first register your o Please go to Settings > Network (administrative rights required). share.manage = Manage my shared media -# premium.jsp -premium.title = Subsonic Premium -premium.invalidlicense = Invalid license key. -premium.text =

Upgrade to Subsonic Premium to enjoy these extra features:

\ -
    \ -
  • Apps for Android, iPhone, Windows Phone, Mac, Chrome and more*.
  • \ -
  • Video streaming.
  • \ -
  • Stream to your Chromecast and Sonos devices.
  • \ -
  • Podcast receiver.
  • \ -
  • Your personal server address: yourname.libresonic.org (see Settings > Network).
  • \ -
  • Play your media on compatible DLNA/UPnP devices.
  • \ -
  • Share your media on Facebook, Twitter, Google+.
  • \ -
  • No ads in the web interface.
  • \ -
  • Other features to be released later.
  • \ -
\ -

* Some apps must be purchased separately.

-premium.getpremium = \u53D6\u5F97 Subsonic Premium -premium.licensed = You have a valid Subsonic Premium license! -premium.licensedexpires = Your Subsonic Premium license is valid until {0} -premium.licensedexpired = Your Subsonic Premium license expired {0} -premium.licensedto = The license is registered to {0}. -premium.forcechange = Register a different license key -premium.register = When upgrading to Subsonic Premium you receive a license key by email. Please register it below. -premium.resend = Lost the license key? Send it again. -premium.register.email = Email -premium.register.license = License key - # podcastReceiver.jsp podcastreceiver.title = \u64AD\u5BA2\u63A5\u6536\u5668 podcastreceiver.empty = You haven't subscribed to any podcasts yet. diff --git a/libresonic-main/src/main/webapp/WEB-INF/jsp/albumMain.jsp b/libresonic-main/src/main/webapp/WEB-INF/jsp/albumMain.jsp index 429275b5..a11290b3 100644 --- a/libresonic-main/src/main/webapp/WEB-INF/jsp/albumMain.jsp +++ b/libresonic-main/src/main/webapp/WEB-INF/jsp/albumMain.jsp @@ -409,7 +409,6 @@

Your personal server address: you.libresonic.org

Podcast receiver.

-

Get Subsonic Premium

diff --git a/libresonic-main/src/main/webapp/WEB-INF/jsp/createShare.jsp b/libresonic-main/src/main/webapp/WEB-INF/jsp/createShare.jsp index 13a7fd80..abe4b83d 100644 --- a/libresonic-main/src/main/webapp/WEB-INF/jsp/createShare.jsp +++ b/libresonic-main/src/main/webapp/WEB-INF/jsp/createShare.jsp @@ -40,9 +40,6 @@ - -<%@ include file="licenseNotice.jsp" %> -
@@ -53,4 +50,4 @@
- \ No newline at end of file + diff --git a/libresonic-main/src/main/webapp/WEB-INF/jsp/dlnaSettings.jsp b/libresonic-main/src/main/webapp/WEB-INF/jsp/dlnaSettings.jsp index 21c49b10..4eeda74c 100644 --- a/libresonic-main/src/main/webapp/WEB-INF/jsp/dlnaSettings.jsp +++ b/libresonic-main/src/main/webapp/WEB-INF/jsp/dlnaSettings.jsp @@ -53,9 +53,6 @@

- - <%@ include file="licenseNotice.jsp" %> -

" style="margin-right:0.3em"> " onclick="location.href='nowPlaying.view'"> @@ -63,4 +60,4 @@ - \ No newline at end of file + diff --git a/libresonic-main/src/main/webapp/WEB-INF/jsp/networkSettings.jsp b/libresonic-main/src/main/webapp/WEB-INF/jsp/networkSettings.jsp index ba80531a..5e70221d 100644 --- a/libresonic-main/src/main/webapp/WEB-INF/jsp/networkSettings.jsp +++ b/libresonic-main/src/main/webapp/WEB-INF/jsp/networkSettings.jsp @@ -90,9 +90,6 @@

- - <%@ include file="licenseNotice.jsp" %> -

" style="margin-right:0.3em"> " onclick="location.href='nowPlaying.view'"> diff --git a/libresonic-main/src/main/webapp/WEB-INF/jsp/playQueueCast.jsp b/libresonic-main/src/main/webapp/WEB-INF/jsp/playQueueCast.jsp index 52802ead..6621e2e4 100644 --- a/libresonic-main/src/main/webapp/WEB-INF/jsp/playQueueCast.jsp +++ b/libresonic-main/src/main/webapp/WEB-INF/jsp/playQueueCast.jsp @@ -92,12 +92,9 @@ */ CastPlayer.prototype.launchCastApp = function () { - this.log("launching app..."); chrome.cast.requestSession(this.onRequestSessionSuccess.bind(this), this.onLaunchError.bind(this)); - - $().toastmessage('showNoticeToast', ""); }; @@ -283,4 +280,4 @@ window.CastPlayer = CastPlayer; })(); - \ No newline at end of file + diff --git a/libresonic-main/src/main/webapp/WEB-INF/jsp/podcastChannels.jsp b/libresonic-main/src/main/webapp/WEB-INF/jsp/podcastChannels.jsp index 6614afc2..12bf2f18 100644 --- a/libresonic-main/src/main/webapp/WEB-INF/jsp/podcastChannels.jsp +++ b/libresonic-main/src/main/webapp/WEB-INF/jsp/podcastChannels.jsp @@ -110,8 +110,5 @@ - -<%@ include file="licenseNotice.jsp" %> - diff --git a/libresonic-main/src/main/webapp/WEB-INF/jsp/right.jsp b/libresonic-main/src/main/webapp/WEB-INF/jsp/right.jsp index 00e7f6f1..917d122c 100644 --- a/libresonic-main/src/main/webapp/WEB-INF/jsp/right.jsp +++ b/libresonic-main/src/main/webapp/WEB-INF/jsp/right.jsp @@ -153,17 +153,6 @@ - -

- " alt=""> - - -
- -
-
- -
diff --git a/libresonic-main/src/main/webapp/WEB-INF/jsp/shareSettings.jsp b/libresonic-main/src/main/webapp/WEB-INF/jsp/shareSettings.jsp index c57a4ec0..4c09f85c 100644 --- a/libresonic-main/src/main/webapp/WEB-INF/jsp/shareSettings.jsp +++ b/libresonic-main/src/main/webapp/WEB-INF/jsp/shareSettings.jsp @@ -55,9 +55,6 @@ - - <%@ include file="licenseNotice.jsp" %> -

" style="margin-right:0.3em"> " onclick="location.href='nowPlaying.view'" style="margin-right:2.0em"> @@ -67,4 +64,4 @@ - \ No newline at end of file + diff --git a/libresonic-main/src/main/webapp/WEB-INF/jsp/sonosSettings.jsp b/libresonic-main/src/main/webapp/WEB-INF/jsp/sonosSettings.jsp index c0c06c1a..079ab90a 100644 --- a/libresonic-main/src/main/webapp/WEB-INF/jsp/sonosSettings.jsp +++ b/libresonic-main/src/main/webapp/WEB-INF/jsp/sonosSettings.jsp @@ -53,9 +53,6 @@

- - <%@ include file="licenseNotice.jsp" %> -

" style="margin-right:0.3em"> " onclick="location.href='nowPlaying.view'"> @@ -63,4 +60,4 @@ - \ No newline at end of file + diff --git a/libresonic-main/src/main/webapp/WEB-INF/jsp/videoPlayer.jsp b/libresonic-main/src/main/webapp/WEB-INF/jsp/videoPlayer.jsp index d6328838..4bccfae8 100644 --- a/libresonic-main/src/main/webapp/WEB-INF/jsp/videoPlayer.jsp +++ b/libresonic-main/src/main/webapp/WEB-INF/jsp/videoPlayer.jsp @@ -27,10 +27,6 @@ - -<%@ include file="licenseNotice.jsp" %> - -

Playing on Chromecast
diff --git a/libresonic-main/src/test/java/org/libresonic/player/service/SettingsServiceTestCase.java b/libresonic-main/src/test/java/org/libresonic/player/service/SettingsServiceTestCase.java index c2c29f21..c5072890 100644 --- a/libresonic-main/src/test/java/org/libresonic/player/service/SettingsServiceTestCase.java +++ b/libresonic-main/src/test/java/org/libresonic/player/service/SettingsServiceTestCase.java @@ -54,9 +54,6 @@ public class SettingsServiceTestCase extends TestCase { assertEquals("Wrong default index creation hour.", 3, settingsService.getIndexCreationHour()); assertTrue("Wrong default playlist folder.", settingsService.getPlaylistFolder().endsWith("playlists")); assertEquals("Wrong default theme.", "default", settingsService.getThemeId()); - assertNull("Wrong default license email.", settingsService.getLicenseEmail()); - assertNull("Wrong default license code.", settingsService.getLicenseCode()); - assertNull("Wrong default license date.", settingsService.getLicenseDate()); assertEquals("Wrong default Podcast episode retention count.", 10, settingsService.getPodcastEpisodeRetentionCount()); assertEquals("Wrong default Podcast episode download count.", 1, settingsService.getPodcastEpisodeDownloadCount()); assertTrue("Wrong default Podcast folder.", settingsService.getPodcastFolder().endsWith("Podcast")); @@ -83,9 +80,6 @@ public class SettingsServiceTestCase extends TestCase { settingsService.setThemeId("dark"); settingsService.setIndexCreationInterval(4); settingsService.setIndexCreationHour(9); - settingsService.setLicenseEmail("sindre@foo.bar.no"); - settingsService.setLicenseCode(null); - settingsService.setLicenseDate(new Date(223423412351253L)); settingsService.setPodcastEpisodeRetentionCount(5); settingsService.setPodcastEpisodeDownloadCount(-1); settingsService.setPodcastFolder("d:/podcasts"); @@ -123,9 +117,6 @@ public class SettingsServiceTestCase extends TestCase { assertEquals("Wrong theme.", "dark", ss.getThemeId()); assertEquals("Wrong index creation interval.", 4, ss.getIndexCreationInterval()); assertEquals("Wrong index creation hour.", 9, ss.getIndexCreationHour()); - assertEquals("Wrong license email.", "sindre@foo.bar.no", ss.getLicenseEmail()); - assertEquals("Wrong license code.", null, ss.getLicenseCode()); - assertEquals("Wrong license date.", new Date(223423412351253L), ss.getLicenseDate()); assertEquals("Wrong Podcast episode retention count.", 5, settingsService.getPodcastEpisodeRetentionCount()); assertEquals("Wrong Podcast episode download count.", -1, settingsService.getPodcastEpisodeDownloadCount()); assertEquals("Wrong Podcast folder.", "d:/podcasts", settingsService.getPodcastFolder()); diff --git a/libresonic-rest-api/src/main/resources/libresonic-rest-api.xsd b/libresonic-rest-api/src/main/resources/libresonic-rest-api.xsd index 4d982a69..76e29b1f 100644 --- a/libresonic-rest-api/src/main/resources/libresonic-rest-api.xsd +++ b/libresonic-rest-api/src/main/resources/libresonic-rest-api.xsd @@ -27,7 +27,6 @@ - @@ -546,13 +545,6 @@ - - - - - - - @@ -585,4 +577,4 @@ - \ No newline at end of file +