<?xml version="1.0" encoding="UTF-8"?>
<!--
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
<document xmlns="http://maven.apache.org/XDOC/2.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
	<properties>
		<title>Webapp Name / Path</title>
		<author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
	</properties>

	<body>

		<section name="Customize Openmeetings logo">
			<p>If you want to set up your logo in Openmeetings header you can do the following:</p>
			<ol>
				<li>create your logo image as PNG 40px height</li>
				<li>replace <tt>/opt/red5/webapps/openmeetings/css/images/logo.png</tt> with your logo file</li>
			</ol>
		</section>
		<section name="Renaming /openmeetings context">
			<p>
				If you want to have
				<tt>http://yourcorp.com:5080/yourmeetings</tt>
				instead of
				<tt>http://yourcorp.com:5080/openmeetings</tt>
				you need to do the following
			</p>
			<ol>
				<li>stop openmmetings if it is running </li>
				<li>
					go to openmeetings install dir (for ex. <tt>/opt/red5</tt>)
				</li>
				<li>
					rename <tt>/opt/red5/webapps/openmeetings</tt> to <tt>/opt/red5/webapps/yourmeetings</tt>
					(for ex. <tt>mv /opt/red5/webapps/openmeetings /opt/red5/webapps/yourmeetings</tt>)
				</li>
				<li>
					open <tt>/opt/red5/webapps/yourmeetings/public/config.xml</tt>
					using your favorite text editor (for ex. <tt>vim /opt/red5/webapps/yourmeetings/public/config.xml</tt>)
					<ul>
						<li>
							find and modify <tt>&lt;webAppRootKey&gt;openmeetings&lt;/webAppRootKey&gt;</tt>
							to be <tt>&lt;webAppRootKey&gt;<strong>yourmeetings</strong>&lt;/webAppRootKey&gt;</tt>
						</li>
						<li>
							find and modify <tt>&lt;httpRootKey&gt;/openmeetings/&lt;/httpRootKey&gt;</tt>
							to be <tt>&lt;httpRootKey&gt;<strong>/yourmeetings/</strong>&lt;/httpRootKey&gt;</tt>
						</li>
					</ul>
				</li>
				<li>
					open <tt>/opt/red5/webapps/root/index.html</tt>
					using your favorite text editor (for ex. <tt>vim /opt/red5/webapps/root/index.html</tt>)
					<ul>
						<li>
							find and modify <tt>&lt;meta http-equiv="REFRESH" content="0;url=openmeetings/"&gt;</tt>
							to be <tt>&lt;meta http-equiv="REFRESH" content="0;url=<strong>yourmeetings/</strong>"&gt;</tt>
						</li>
					</ul>
				</li>
			</ol>
			<p>That's it</p>
		</section>

		<section name="Changing hard-coded application name in string labels">
			<p>
				To have
				<i>Your Application Name</i>
				instead of
				<i>Openmeetings</i>
				in
				<strong>all</strong>
				text labels you need to do the following
			</p>
			<ol>
				<li>
					ensure
					<strong>
						<tt>{0}</tt>
					</strong>
					placeholder is used in
					<i>all</i>
					strings you have added and/or modified (all strings bundled into
					Openmeetings already have this placeholder)
				</li>
				<li>login to Openmeetings as user with administrator privileges </li>
				<li>
					go to
					<tt>Administration -&gt; Configuration</tt>
				</li>
				<li>
					find and edit configuration with name
					<strong>
						<tt>application.name</tt>
					</strong>
				</li>
				<li>
					Set its value to be
					<i>
						<tt>Your Application Name</tt>
					</i>
				</li>
				<li>
					<tt>Save</tt>
				</li>
				<li>reload page or relogin </li>
			</ol>
			<p>
			All string will display
			<i>
				<tt>Your Application Name</tt>
			</i>
			in place of
			<i>
				<tt>Openmeetings</tt>
			</i>
			</p>
		</section>

		<section name="Running multiple Openmeetings instances on the same server">
			<p>
				If you want to run multiple Openmeetings instances on the same server i.e. to have<br/>  
				<tt>http://yourcorp.com:5080/openmeetings1</tt><br/> 
				<tt>http://yourcorp.com:5080/openmeetings2</tt><br/> etc.<br/> you need to do the following:
			</p>
			<ol>
				<li>edit <tt>webapps/openmeetings1/WEB-INF/red5-web.properties</tt> for <strong>every</strong> Openmeetings 
				instance and add the following line <tt>webapp.contextPath=/openmeetings1</tt>  to it (context of 
				<strong>every</strong> instance <strong>should</strong> match the folder name in webapps dir)
				</li>
				<li>in case of java memory problems modify <tt>red5.sh</tt> add following line:<br/>
					<source>export JAVA_OPTS="-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:MaxPermSize=128M"</source>
					or <tt>red5.bat</tt>:<br/>
					<source>set JAVA_OPTS=-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:MaxPermSize=128M</source>
				</li>
			</ol>
		</section>
	</body>

</document>