Also cleanup some documentation *Database Settings have been renamed and will require manually fixing from 6.2beta1* database.varchar.maxlength -> DatabaseMysqlMaxlength database.config.type -> DatabaseConfigType database.config.embed.driver -> DatabasigEmbedDriver database.config.embed.url -> DatabaseConfigEmbedUrl database.config.embed.username -> DatabasigEmbedUsername database.config.embed.password -> DatabasigEmbedPassword database.config.jndi.name -> DatabaseConfigJNDIName database.usertable.quote -> DatabaseUsertableQuote Signed-off-by: Andrew DeMaria <lostonamountain@gmail.com>master
							parent
							
								
									9b35781b87
								
							
						
					
					
						commit
						9c224b7853
					
				| @ -0,0 +1,40 @@ | ||||
| # Startup Configuration Guide | ||||
| 
 | ||||
| Libresonic has some system-wide configuration. These configurations are stored in the  | ||||
| `libresonic.properties` file. There is one exception, which is the `libresonic.home` parameter which  | ||||
| is supplied as a Java System Property. | ||||
| 
 | ||||
| ## `libresonic.properties` | ||||
| These parameters are simple key-value pairs stored in a list. It is recommended that these parameters | ||||
| are changed through the web interface settings page. However, they can also be modified directly. Shutdown | ||||
| your server first, modify, then start it for changes to take effect. | ||||
| 
 | ||||
| ## Java Parameters | ||||
| The `libresonic.home` parameter is a Java System Property that is not modifiable through the web interface.  | ||||
| It must be configured via Java startup parameters. See below for steps to do this. | ||||
| 
 | ||||
| #### `libresonic.home` | ||||
| This parameter dictates the folder where Libresonic will store its logs,  | ||||
| settings, transcode binaries, index and database if using the default H2  | ||||
| database. As such it is recommended to backup this folder. | ||||
| 
 | ||||
| *default: `/var/libresonic` or `C:\\music`* | ||||
| 
 | ||||
| #### Setting Java Parameters on Tomcat | ||||
| As described in the [RUNNING.txt](http://tomcat.apache.org/tomcat-8.0-doc/RUNNING.txt) doc provided by tomcat, | ||||
| you can create a file named `setenv.sh` or for windows `setenv.bat` in the Tomcat home `bin` folder to  modify  the  | ||||
| java args. | ||||
| 
 | ||||
| Here is an example of a `setenv.sh` file (`setenv.bat` has slightly different syntax): | ||||
| ``` | ||||
| export JAVA_OPTS="$JAVA_OPTS -Dlibresonic.home=/home/andrew/.cache/libresonic-test" | ||||
| ``` | ||||
| 
 | ||||
| #### Setting Java Parameters for Standalone Package (SpringBoot) | ||||
| When running the standalone package, add `-Dlibresonic.home=YOUR_PATH_HERE` to the `java` command line right before the  | ||||
| `-jar` argument. Here is an example for linux (windows users will want to use their OS specific path syntax i.e.  | ||||
| `C:\\your\path`) | ||||
| 
 | ||||
| ``` | ||||
| java -Dlibresonic.home=/home/andrew/libresonichome -jar libresonic.war | ||||
| ``` | ||||
| @ -0,0 +1,82 @@ | ||||
| package org.libresonic.player.command; | ||||
| 
 | ||||
| import org.libresonic.player.spring.DataSourceConfigType; | ||||
| 
 | ||||
| import javax.validation.constraints.NotNull; | ||||
| 
 | ||||
| public class DatabaseSettingsCommand { | ||||
| 
 | ||||
|     @NotNull | ||||
|     private DataSourceConfigType configType; | ||||
|     private String embedDriver; | ||||
|     private String embedPassword; | ||||
|     private String embedUrl; | ||||
|     private String embedUsername; | ||||
|     private String JNDIName; | ||||
|     private int mysqlVarcharMaxlength; | ||||
|     private String usertableQuote; | ||||
| 
 | ||||
|     public DataSourceConfigType getConfigType() { | ||||
|         return configType; | ||||
|     } | ||||
| 
 | ||||
|     public void setConfigType(DataSourceConfigType configType) { | ||||
|         this.configType = configType; | ||||
|     } | ||||
| 
 | ||||
|     public String getEmbedDriver() { | ||||
|         return embedDriver; | ||||
|     } | ||||
| 
 | ||||
|     public void setEmbedDriver(String embedDriver) { | ||||
|         this.embedDriver = embedDriver; | ||||
|     } | ||||
| 
 | ||||
|     public String getEmbedPassword() { | ||||
|         return embedPassword; | ||||
|     } | ||||
| 
 | ||||
|     public void setEmbedPassword(String embedPassword) { | ||||
|         this.embedPassword = embedPassword; | ||||
|     } | ||||
| 
 | ||||
|     public String getEmbedUrl() { | ||||
|         return embedUrl; | ||||
|     } | ||||
| 
 | ||||
|     public void setEmbedUrl(String embedUrl) { | ||||
|         this.embedUrl = embedUrl; | ||||
|     } | ||||
| 
 | ||||
|     public String getEmbedUsername() { | ||||
|         return embedUsername; | ||||
|     } | ||||
| 
 | ||||
|     public void setEmbedUsername(String embedUsername) { | ||||
|         this.embedUsername = embedUsername; | ||||
|     } | ||||
| 
 | ||||
|     public String getJNDIName() { | ||||
|         return JNDIName; | ||||
|     } | ||||
| 
 | ||||
|     public void setJNDIName(String JNDIName) { | ||||
|         this.JNDIName = JNDIName; | ||||
|     } | ||||
| 
 | ||||
|     public int getMysqlVarcharMaxlength() { | ||||
|         return mysqlVarcharMaxlength; | ||||
|     } | ||||
| 
 | ||||
|     public void setMysqlVarcharMaxlength(int mysqlVarcharMaxlength) { | ||||
|         this.mysqlVarcharMaxlength = mysqlVarcharMaxlength; | ||||
|     } | ||||
| 
 | ||||
|     public String getUsertableQuote() { | ||||
|         return usertableQuote; | ||||
|     } | ||||
| 
 | ||||
|     public void setUsertableQuote(String usertableQuote) { | ||||
|         this.usertableQuote = usertableQuote; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,106 @@ | ||||
| /* | ||||
|  This file is part of Libresonic. | ||||
| 
 | ||||
|  Libresonic is free software: you can redistribute it and/or modify | ||||
|  it under the terms of the GNU General Public License as published by | ||||
|  the Free Software Foundation, either version 3 of the License, or | ||||
|  (at your option) any later version. | ||||
| 
 | ||||
|  Libresonic is distributed in the hope that it will be useful, | ||||
|  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  GNU General Public License for more details. | ||||
| 
 | ||||
|  You should have received a copy of the GNU General Public License | ||||
|  along with Libresonic.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
| 
 | ||||
|  Copyright 2016 (C) Libresonic Authors | ||||
|  Based upon Subsonic, Copyright 2009 (C) Sindre Mehus | ||||
|  */ | ||||
| package org.libresonic.player.controller; | ||||
| 
 | ||||
| import org.libresonic.player.command.DatabaseSettingsCommand; | ||||
| import org.libresonic.player.dao.AlbumDao; | ||||
| import org.libresonic.player.dao.ArtistDao; | ||||
| import org.libresonic.player.dao.MediaFileDao; | ||||
| import org.libresonic.player.service.MediaScannerService; | ||||
| import org.libresonic.player.service.SettingsService; | ||||
| import org.libresonic.player.spring.DataSourceConfigType; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Controller; | ||||
| import org.springframework.ui.Model; | ||||
| import org.springframework.validation.BindingResult; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
| import org.springframework.web.bind.annotation.ModelAttribute; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RequestMethod; | ||||
| import org.springframework.web.servlet.mvc.support.RedirectAttributes; | ||||
| 
 | ||||
| @Controller | ||||
| @RequestMapping("/databaseSettings") | ||||
| public class DatabaseSettingsController { | ||||
| 
 | ||||
|     @Autowired | ||||
|     private SettingsService settingsService; | ||||
|     @Autowired | ||||
|     private MediaScannerService mediaScannerService; | ||||
|     @Autowired | ||||
|     private ArtistDao artistDao; | ||||
|     @Autowired | ||||
|     private AlbumDao albumDao; | ||||
|     @Autowired | ||||
|     private MediaFileDao mediaFileDao; | ||||
| 
 | ||||
|     @RequestMapping(method = RequestMethod.GET) | ||||
|     protected String displayForm() throws Exception { | ||||
|         return "databaseSettings"; | ||||
|     } | ||||
| 
 | ||||
|     @ModelAttribute | ||||
|     protected void formBackingObject(Model model) throws Exception { | ||||
|         DatabaseSettingsCommand command = new DatabaseSettingsCommand(); | ||||
|         command.setConfigType(settingsService.getDatabaseConfigType()); | ||||
|         command.setEmbedDriver(settingsService.getDatabaseConfigEmbedDriver()); | ||||
|         command.setEmbedPassword(settingsService.getDatabaseConfigEmbedPassword()); | ||||
|         command.setEmbedUrl(settingsService.getDatabaseConfigEmbedUrl()); | ||||
|         command.setEmbedUsername(settingsService.getDatabaseConfigEmbedUsername()); | ||||
|         command.setJNDIName(settingsService.getDatabaseConfigJNDIName()); | ||||
|         command.setMysqlVarcharMaxlength(settingsService.getDatabaseMysqlVarcharMaxlength()); | ||||
|         command.setUsertableQuote(settingsService.getDatabaseUsertableQuote()); | ||||
|         model.addAttribute("command", command); | ||||
|     } | ||||
| 
 | ||||
|     @RequestMapping(method = RequestMethod.POST) | ||||
|     protected String onSubmit(@ModelAttribute("command") @Validated DatabaseSettingsCommand command, | ||||
|                               BindingResult bindingResult, | ||||
|                               RedirectAttributes redirectAttributes) throws Exception { | ||||
|         if (!bindingResult.hasErrors()) { | ||||
|             settingsService.resetDatabaseToDefault(); | ||||
|             settingsService.setDatabaseConfigType(command.getConfigType()); | ||||
|             switch(command.getConfigType()) { | ||||
|                 case EMBED: | ||||
|                     settingsService.setDatabaseConfigEmbedDriver(command.getEmbedDriver()); | ||||
|                     settingsService.setDatabaseConfigEmbedPassword(command.getEmbedPassword()); | ||||
|                     settingsService.setDatabaseConfigEmbedUrl(command.getEmbedUrl()); | ||||
|                     settingsService.setDatabaseConfigEmbedUsername(command.getEmbedUsername()); | ||||
|                     break; | ||||
|                 case JNDI: | ||||
|                     settingsService.setDatabaseConfigJNDIName(command.getJNDIName()); | ||||
|                     break; | ||||
|                 case LEGACY: | ||||
|                 default: | ||||
|                     break; | ||||
|             } | ||||
|             if(command.getConfigType() != DataSourceConfigType.LEGACY) { | ||||
|                 settingsService.setDatabaseMysqlVarcharMaxlength(command.getMysqlVarcharMaxlength()); | ||||
|                 settingsService.setDatabaseUsertableQuote(command.getUsertableQuote()); | ||||
|             } | ||||
|             redirectAttributes.addFlashAttribute("settings_toast", true); | ||||
|             settingsService.save(); | ||||
|             return "redirect:databaseSettings.view"; | ||||
|         } else { | ||||
|             return "databaseSettings.view"; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,128 @@ | ||||
| <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="iso-8859-1" %> | ||||
| <%--@elvariable id="command" type="org.libresonic.player.command.DatabaseSettingsCommand"--%> | ||||
| 
 | ||||
| <html> | ||||
| <head> | ||||
|     <%@ include file="head.jsp" %> | ||||
|     <%@ include file="jquery.jsp" %> | ||||
|     <script> | ||||
|         function updateShownOptions() { | ||||
|             $(".hideawayDatabaseOptions").hide(); | ||||
|             var value = $('select#configType').val(); | ||||
|             var objToShow = $("#" + value + "DatabaseOptions"); | ||||
|             if (objToShow.length) { | ||||
|                 objToShow.show(); | ||||
|             } | ||||
|             if(value != 'LEGACY') { | ||||
|                 $("#nonLEGACYDatabaseOptions").show(); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         $(document).ready(function () { | ||||
|             updateShownOptions(); | ||||
|             $('select#configType').on('change', function () { | ||||
|                 updateShownOptions(); | ||||
|             }); | ||||
|         }); | ||||
|     </script> | ||||
| </head> | ||||
| <body class="mainframe bgcolor1"> | ||||
| <script type="text/javascript" src="<c:url value="/script/wz_tooltip.js"/>"></script> | ||||
| <script type="text/javascript" src="<c:url value="/script/tip_balloon.js"/>"></script> | ||||
| 
 | ||||
| <c:import url="settingsHeader.jsp"> | ||||
|     <c:param name="cat" value="database"/> | ||||
|     <c:param name="toast" value="${settings_toast}"/> | ||||
| </c:import> | ||||
| 
 | ||||
| <form:form commandName="command" action="databaseSettings.view" method="post"> | ||||
|     <p><fmt:message key="databasesettings.moreinfo"/></p> | ||||
| 
 | ||||
|     <table style="white-space:nowrap" class="indent"> | ||||
|         <tr> | ||||
|             <td><fmt:message key="databasesettings.configtype"/></td> | ||||
|             <td> | ||||
|                 <form:select path="configType" cssStyle="width:12em" id="configType"> | ||||
|                     <form:option value="LEGACY" label="Legacy"/> | ||||
|                     <form:option value="EMBED" label="Embedded JDBC"/> | ||||
|                     <form:option value="JNDI" label="JNDI"/> | ||||
|                 </form:select> | ||||
|                 <c:import url="helpToolTip.jsp"><c:param name="topic" value="databaseConfigType"/></c:import> | ||||
|             </td> | ||||
|         </tr> | ||||
|     </table> | ||||
| 
 | ||||
|     <div id="EMBEDDatabaseOptions" class="hideawayDatabaseOptions"> | ||||
|         <table style="white-space:nowrap;" class="indent"> | ||||
|             <table style="white-space:nowrap;" class="indent"> | ||||
|                 <tr> | ||||
|                     <td><fmt:message key="databasesettings.embeddriver"/></td> | ||||
|                     <td> | ||||
|                         <form:input path="embedDriver" size="30"/> | ||||
|                         <c:import url="helpToolTip.jsp"><c:param name="topic" value="embeddriver"/></c:import> | ||||
|                     </td> | ||||
|                 </tr> | ||||
|                 <tr> | ||||
|                     <td><fmt:message key="databasesettings.embedurl"/></td> | ||||
|                     <td> | ||||
|                         <form:input path="embedUrl" size="58"/> | ||||
|                     </td> | ||||
|                 </tr> | ||||
|                 <tr> | ||||
|                     <td><fmt:message key="databasesettings.embedusername"/></td> | ||||
|                     <td> | ||||
|                         <form:input path="embedUsername" size="36"/> | ||||
|                     </td> | ||||
|                 </tr> | ||||
|                 <tr> | ||||
|                     <td><fmt:message key="databasesettings.embedpassword"/></td> | ||||
|                     <td> | ||||
|                         <form:input path="embedPassword" size="36"/> | ||||
|                     </td> | ||||
|                 </tr> | ||||
|             </table> | ||||
|         </table> | ||||
|     </div> | ||||
| 
 | ||||
|     <div id="JNDIDatabaseOptions" class="hideawayDatabaseOptions"> | ||||
|         <table style="white-space:nowrap;" class="indent"> | ||||
|             <tr> | ||||
|                 <td><fmt:message key="databasesettings.jndiname"/></td> | ||||
|                 <td> | ||||
|                     <form:input path="JNDIName" size="36"/> | ||||
|                     <c:import url="helpToolTip.jsp"><c:param name="topic" value="jndiname"/></c:import> | ||||
|                 </td> | ||||
|             </tr> | ||||
|         </table> | ||||
|     </div> | ||||
|     <div id="nonLEGACYDatabaseOptions" class="hideawayDatabaseOptions"> | ||||
|         <table style="white-space:nowrap" class="indent"> | ||||
|             <tr> | ||||
|                 <td><fmt:message key="databasesettings.mysqlvarcharmaxlength"/></td> | ||||
|                 <td> | ||||
|                     <form:input path="mysqlVarcharMaxlength" size="8"/> | ||||
|                     <c:import url="helpToolTip.jsp"><c:param name="topic" value="mysqlvarcharmaxlength"/></c:import> | ||||
|                 </td> | ||||
|             </tr> | ||||
|             <tr> | ||||
|                 <td><fmt:message key="databasesettings.usertablequote"/></td> | ||||
|                 <td> | ||||
|                     <form:input path="usertableQuote" size="1" htmlEscape="true"/> | ||||
|                     <c:import url="helpToolTip.jsp"><c:param name="topic" value="usertablequote"/></c:import> | ||||
|                 </td> | ||||
|             </tr> | ||||
|         </table> | ||||
|         <p class="warning"><fmt:message key="databasesettings.jdbclibrary"/></p> | ||||
|     </div> | ||||
| 
 | ||||
|     <p class="warning"><fmt:message key="databasettings.restartRequired"/></p> | ||||
| 
 | ||||
|     <p> | ||||
|         <input type="submit" value="<fmt:message key="common.save"/>" style="margin-right:0.3em"> | ||||
|         <input type="button" value="<fmt:message key="common.cancel"/>" onclick="location.href='nowPlaying.view'"> | ||||
|     </p> | ||||
| 
 | ||||
| </form:form> | ||||
| 
 | ||||
| </body> | ||||
| </html> | ||||
					Loading…
					
					
				
		Reference in new issue