<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.open-xchange.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sonja.krause-harder</id>
	<title>Open-Xchange - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.open-xchange.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sonja.krause-harder"/>
	<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Special:Contributions/Sonja.krause-harder"/>
	<updated>2026-06-30T15:31:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=OXLoadBalancingClustering_SessionLoadbalancing&amp;diff=21362</id>
		<title>OXLoadBalancingClustering SessionLoadbalancing</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=OXLoadBalancingClustering_SessionLoadbalancing&amp;diff=21362"/>
		<updated>2016-01-27T10:49:17Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please see [[AppSuite:Grizzly]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Drive&amp;diff=21211</id>
		<title>AppSuite:OX Drive</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Drive&amp;diff=21211"/>
		<updated>2016-01-07T10:12:51Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: Remove all references to repo updater/updates -- it does not exist.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OX Drive =&lt;br /&gt;
&lt;br /&gt;
In OX App Suite, Open-Xchange provides a cloud storage called OX Drive. It provides file- and folder synchronization across multiple devices in the most simplest way for the end user, fully optimized for each device type. This article explains how to set up the server-side components for OX Drive, as well as details about the client setup.&lt;br /&gt;
&lt;br /&gt;
== Key features ==&lt;br /&gt;
&lt;br /&gt;
* Native Apps for Windows, Mac OS, iOS and Android&lt;br /&gt;
* Easy and attractive upsell properties (e.g. Upsell based on Quota limitations)&lt;br /&gt;
* Clients are specially designed for the devices they run on taking into account limitations such as battery life, screen limitations, bandwidth etc.&lt;br /&gt;
* Controlled synchronization of files across devices&lt;br /&gt;
* Storage management (e.g. quota control, upload limits)&lt;br /&gt;
* Connection type recognition and adaptation (e.g. Wi-Fi, cell network)&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
OX Drive is a combination of two components:&lt;br /&gt;
* OX Drive in OX App Suite&lt;br /&gt;
* OX Drive Clients (optional native client components for synchronization)&lt;br /&gt;
&lt;br /&gt;
OX Drive is available for the following native clients:&lt;br /&gt;
* OX Drive for Windows&lt;br /&gt;
* OX Drive for Mac OS&lt;br /&gt;
* OX Drive for iOS&lt;br /&gt;
* OX Drive for Android&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
You will find the requirements under [[AppSuite:OX_System_Requirements#OX_Drive_for_Clients|OX Drive Client and Platform Requirements]]&lt;br /&gt;
&lt;br /&gt;
= Server-side Installation and Configuration =&lt;br /&gt;
&lt;br /&gt;
This chapter describes how the backend components of OX Drive are installed and configured on the server.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Open-Xchange Server v7.4.2 and above (''open-xchange-core'')&lt;br /&gt;
* Grizzly HTTP connector (''open-xchange-grizzly''), see [[AppSuite:Grizzly]] for details, with ''Comet'' support enabled in ''grizzly.properties''&lt;br /&gt;
* Valid Push-Certificates / API keys for cloud-based notifications, see configuration below&lt;br /&gt;
* Enabled Hazelcast for inter-OX-communication, see [[AppSuite:Running_a_cluster]] for details&lt;br /&gt;
&lt;br /&gt;
== Available packages ==&lt;br /&gt;
&lt;br /&gt;
Open-Xchange Drive is available with the following backend packages:&lt;br /&gt;
&lt;br /&gt;
* ''open-xchange-drive'' - The main server components for OX Drive&lt;br /&gt;
* ''open-xchange-drive-comet'' - Provides the Push interface via long-polling for the desktop clients&lt;br /&gt;
* ''open-xchange-updater-drive'' - Adds the OX Drive application to the Windows desktop auto-updater&lt;br /&gt;
* ''open-xchange-drive-help-*'' - Online help in various languages for the OX Drive applications (these were called ''open-xchange-appsuite-help-drive-*'' in versions earlier than Open-Xchange Server v7.6.2)&lt;br /&gt;
* ''open-xchange-drive-restricted'' - Restricted components, including prerequisites for cloud-based push notifications&lt;br /&gt;
&lt;br /&gt;
Installation on the server varies depending on the underlying distribution, details are available in the following chapters.&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|backend}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=rhelname|pc2v=RHEL6|drive-help}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum update&lt;br /&gt;
 $ yum install open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 7 or CentOS 7 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL7|backend}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=rhelname|pc2v=RHEL7|drive-help}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL7|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=rhelname|pc2v=RHEL7|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum update&lt;br /&gt;
 $ yum install open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianWheezy|backend}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=debianname|pc2v=DebianWheezy|drive-help}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 8.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianJessie|backend}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=debianname|pc2v=DebianJessie|drive-help}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianJessie|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=debianname|pc2v=DebianJessie|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
Add the package repository using zypper if not already present:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=susename|pc2v=SLES11|backend}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=susename|pc2v=SLES11|drive-help}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
 $ zypper in open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 12 ===&lt;br /&gt;
&lt;br /&gt;
Add the package repository using zypper if not already present:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=susename|pc2v=SLE_12|backend}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=susename|pc2v=SLE_12|drive-help}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=susename|pc2v=SLE_12|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=susename|pc2v=SLE_12|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
 $ zypper in open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== OX Server Edition / App Suite for UCS ===&lt;br /&gt;
&lt;br /&gt;
If you have purchased the OX Server Edition / App Suite for UCS, the OX Drive is part of the offering and after the installation/update available. The necessary package for push, is available with a valid license and can be installed via the Univention App Center.&lt;br /&gt;
&lt;br /&gt;
* The new license is already registered at the LDB after purchase.&lt;br /&gt;
* Log on at the Univention Management Console (UMC)&lt;br /&gt;
* Make sure, that the correct LDB account has been selected in the UMC module &amp;quot;OX License Management&amp;quot;&lt;br /&gt;
* Click on &amp;quot;App Center&amp;quot; at the UMC und switch to the tab &amp;quot;Repository Settings&amp;quot;&lt;br /&gt;
* Within the component list, select &amp;quot;Open-Xchange Drive&amp;quot; and press the &amp;quot;Install&amp;quot; button&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
The following gives an overview about the most important settings to enable file synchronization via OX Drive, especially when it comes to real-time Push notifications for the client applications.&lt;br /&gt;
&lt;br /&gt;
All settings regarding the OX Drive backend component are located in the configuration file ''drive.properties''. The default configuration should be sufficient for a basic &amp;quot;up-and-running&amp;quot; setup (with the exception of defining the Push certificates and API keys for cloud-based client notifications, see next chapters). Please refer to the inline documentation of the configuration file for more advanced options. &lt;br /&gt;
&lt;br /&gt;
=== Push via Google Cloud Messaging (GCM) ===&lt;br /&gt;
&lt;br /&gt;
The OX Drive application for Android devices is able to receive Push notifications from the Open-Xchange Server via [http://developer.android.com/google/gcm/index.html Google Cloud Messaging (GCM)]. To issue those Push messages, the backend needs to be provided with a suitable API key for the corresponding Android client application. The API key is included in the restricted components installation package ''open-xchange-drive-restricted'' for the &amp;quot;vanilla&amp;quot; Android client application. Alternatively, the key can be specified directly in the ''drive.properties'' configuration file:&lt;br /&gt;
&lt;br /&gt;
 # Specifies the API key of the server application. Required if &lt;br /&gt;
 # &amp;quot;com.openexchange.drive.events.gcm.enabled&amp;quot; is &amp;quot;true&amp;quot; and the package &lt;br /&gt;
 # containing the restricted drive components is not installed.&lt;br /&gt;
 com.openexchange.drive.events.gcm.key=&lt;br /&gt;
&lt;br /&gt;
Push via GCM can be enabled via:&lt;br /&gt;
&lt;br /&gt;
 # Enables or disables push event notifications to clients using the Google&lt;br /&gt;
 # Cloud Messaging (GCM) service. This requires a valid configuration for the &lt;br /&gt;
 # GCM API key, see options below. Defaults to &amp;quot;false&amp;quot;. &lt;br /&gt;
 com.openexchange.drive.events.gcm.enabled=true&lt;br /&gt;
&lt;br /&gt;
Please note that push via GCM needs to be enabled explicitly - also if ''open-xchange-drive-restricted'' is installed.&lt;br /&gt;
&lt;br /&gt;
=== Push via Apple Push Notification service (APNs) ===&lt;br /&gt;
&lt;br /&gt;
The OX Drive application for iOS and Mac OS devices is able to receive Push notifications from the Open-Xchange Server via [http://developer.apple.com/library/IOS/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html Apple Push Notification service (APNs)]. To issue those Push messages, the backend needs to be provided with a suitable keystore container file (PKCS #12) containing the APNs certificate and keys. Note that the Mac OS desktop client and the iOS mobile client are served separately with different certificates, so that both needs to be configured independantly. The required certificates are already included in the restricted components installation package ''open-xchange-drive-restricted'' for the &amp;quot;vanilla&amp;quot; iOS and Mac OS client applications. Alternatively, the certificate can be specified directly in the ''drive.properties'' configuration file (the following only shows the setup for iOS). First, the path to the PKCS #12 container file needs to be specified at:&lt;br /&gt;
&lt;br /&gt;
 # Specifies the path to the local keystore file (PKCS #12) containing the APNS &lt;br /&gt;
 # certificate and keys for the iOS application, e.g. &lt;br /&gt;
 # &amp;quot;/opt/open-xchange/etc/drive-apns.p12&amp;quot;. Required if &lt;br /&gt;
 # &amp;quot;com.openexchange.drive.events.apn.enabled&amp;quot; is &amp;quot;true&amp;quot; and the package &lt;br /&gt;
 # containing the restricted drive components is not installed.&lt;br /&gt;
 com.openexchange.drive.events.apn.ios.keystore=&lt;br /&gt;
&lt;br /&gt;
This file is opened by the backend using the password as supplied via: &lt;br /&gt;
 &lt;br /&gt;
 # Specifies the password used when creating the referenced keystore containing&lt;br /&gt;
 # the certificate of the iOS application. Note that blank or null passwords &lt;br /&gt;
 # are in violation of the PKCS #12 specifications. Required if &lt;br /&gt;
 # &amp;quot;com.openexchange.drive.events.apn.enabled&amp;quot; is &amp;quot;true&amp;quot; and the package &lt;br /&gt;
 # containing the restricted drive components is not installed.&lt;br /&gt;
 com.openexchange.drive.events.apn.ios.password=&lt;br /&gt;
&lt;br /&gt;
Configuration also allows to swith between development and production environments, however, this setting should be ''true'' normally:&lt;br /&gt;
&lt;br /&gt;
 # Indicates which APNS service is used when sending push notifications to iOS&lt;br /&gt;
 # devices. A value of &amp;quot;true&amp;quot; will use the production service, a value of &lt;br /&gt;
 # &amp;quot;false&amp;quot; the sandbox service. Defaults to &amp;quot;true&amp;quot;.&lt;br /&gt;
 com.openexchange.drive.events.apn.ios.production=true&lt;br /&gt;
&lt;br /&gt;
The OX backend contacts the APNs servers from time to time to get informed about clients no longer reachable clients where the applications was uninstalled. The interval can be defined with the following setting: &lt;br /&gt;
&lt;br /&gt;
 # Configures the interval between queries to the APN feedback service for the&lt;br /&gt;
 # subscribed iOS devices. The value can be defined using units of measurement: &lt;br /&gt;
 # &amp;quot;D&amp;quot; (=days), &amp;quot;W&amp;quot; (=weeks) and &amp;quot;H&amp;quot; (=hours). Defaults to &amp;quot;1D&amp;quot; (one day). &lt;br /&gt;
 # Leaving this parameter empty disables the feedback queries on this node. &lt;br /&gt;
 # Since each received feedback is processed cluster-wide, only one node in the &lt;br /&gt;
 # cluster should be enabled here. &lt;br /&gt;
 com.openexchange.drive.events.apn.ios.feedbackQueryInterval=1D&lt;br /&gt;
&lt;br /&gt;
Please note that if you have multiple backend nodes in the cluster, it's recommended that only one node is configured to contact the feedback query service. Finally, Push notifications via APN for iOS can be enabled via:&lt;br /&gt;
&lt;br /&gt;
 # Enables or disables push event notifications to clients using the Apple Push&lt;br /&gt;
 # Notification service (APNS) for Mac OS devices. This requires a valid &lt;br /&gt;
 # configuration for the APNS certificate and keys, see either options below, &lt;br /&gt;
 # or install the restricted components packages for drive. Defaults to &lt;br /&gt;
 # &amp;quot;false&amp;quot;. &lt;br /&gt;
 com.openexchange.drive.events.apn.ios.enabled=false&lt;br /&gt;
&lt;br /&gt;
As stated above, configuration for Push notifications via APN for the Mac OS desktop application is configured similarly, the relevant options are prefixed with ''com.openexchange.drive.events.apn.macos''. Please also note that push via APNS needs to be enabled explicitly - also if ''open-xchange-drive-restricted'' is installed.&lt;br /&gt;
&lt;br /&gt;
=== Further Configuration ===&lt;br /&gt;
&lt;br /&gt;
* The backend component of OX Drive supplies the clients with various hyperlinks, e.g. deep-links to files and folders in the groupware webinterface or an URL to the online help. In order to point to the suitable web interface, please ensure that the correct UI web path is configured via ''com.openexchange.UIWebPath'' located in ''server.properties''.&lt;br /&gt;
* As already mentioned above, the backend relies on the [https://grizzly.java.net/comet.html Comet] component of the Grizzly http connector for sending push notifications to the desktop clients. Therefore, ''com.openexchange.http.grizzly.hasCometEnabled'' needs to be set to ''true'' in ''grizzly.properties''.&lt;br /&gt;
&lt;br /&gt;
= Enabling OX Drive for Users =&lt;br /&gt;
&lt;br /&gt;
OX Drive is enabled for all users that have the capability ''com.openexchange.capability.drive''. Please note that users need to have the ''infostore'' permission set to use drive. So the users that have ''drive'' enabled must be a subset of those users with ''infostore'' permission. Since 7.6.0 we enforce this via the default configuration. You can also enable this cabaility globally with the following setting in the ''drive.properties'' configuration file:&lt;br /&gt;
&lt;br /&gt;
 # Enables or disables the &amp;quot;drive&amp;quot; module capability globally. The capability&lt;br /&gt;
 # can also be set more fine-grained via config cascade. Per default it is only&lt;br /&gt;
 # enabled for users that have the &amp;quot;infostore&amp;quot; permission set. This is configured&lt;br /&gt;
 # in /opt/open-xchange/etc/contextSets/drive.yml.&lt;br /&gt;
 com.openexchange.capability.drive=false&lt;br /&gt;
&lt;br /&gt;
More details about capabilities can be found at [[AppSuite:Capabilities]]. Furthermore, this capability can be defined in a more granular way using the Config Cascade as described at [[ConfigCascade]].&lt;br /&gt;
&lt;br /&gt;
= Installation of the Clients =&lt;br /&gt;
&lt;br /&gt;
== Installation of Mac OS X Desktop Client ==&lt;br /&gt;
&lt;br /&gt;
The OX Drive for Mac OS X will be provided via the Apple App Store:&lt;br /&gt;
&lt;br /&gt;
* https://itunes.apple.com/app/ox-drive/id818195014?mt=12&lt;br /&gt;
&lt;br /&gt;
== Installation of Windows Desktop Client ==&lt;br /&gt;
&lt;br /&gt;
The OX Drive for Windows will be provided direct at the OX App Suite via the [[AppSuite:Open-Xchange_Updater|OX Updater]].&lt;br /&gt;
&lt;br /&gt;
== Installation on Mobile Clients ==&lt;br /&gt;
&lt;br /&gt;
The OX Drive App is available via the different App Stores:&lt;br /&gt;
&lt;br /&gt;
* iOS: https://itunes.apple.com/app/ox-drive/id798570177?mt=8&lt;br /&gt;
&lt;br /&gt;
* Android: https://play.google.com/store/apps/details?id=com.openexchange.drive.vanilla&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Client Configuration and Deployment ==&lt;br /&gt;
&lt;br /&gt;
The user needs to enter the server URL and provide his username and password. Afterwards, client-specific settings may be configured. This includes the synchronization mode (All files / Favorites only) and Photostream settings on mobile devices, or the local root synchronization folder for the desktop applications. More information is available in the online documentation. &lt;br /&gt;
&lt;br /&gt;
After the initial synchronization is completed, all further changes are synchronized instantly across all devices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
&lt;br /&gt;
'''How to limit the maximum file size, a configured ''MAX_UPLOAD_SIZE'' seems to have no effect for uploads from OX Drive clients?'''&lt;br /&gt;
&lt;br /&gt;
This setting has no effect for files uploaded from OX Drive clients, since big uploads may also be processed via multiple requests in smaller chunks. We plan to offer a separate configuration option in a future release.&lt;br /&gt;
&lt;br /&gt;
'''There are strange files and folders on the backend, where do they come from, is it safe to delete them?'''&lt;br /&gt;
&lt;br /&gt;
To support chunked uploads, and to optimize the synchronization process, the synchronization logic may create various temporary files (''.drive'' directory and contained files). They only appear in the web interface if the setting ''Show hidden files and folders'' is enabled, and are removed automatically if not accessed for a specific period (default: 1 day).&lt;br /&gt;
&lt;br /&gt;
'''Not all files and folders get synchronized. Are there any restrictions?'''&lt;br /&gt;
&lt;br /&gt;
Yes, please consult the online help for a detailed list of excluded files and folders.&lt;br /&gt;
&lt;br /&gt;
'''How do I synchronize a shared or public folder?'''&lt;br /&gt;
&lt;br /&gt;
Currently, only the synchronization of a single root folder (and all of it's subfolders) is possible. For the mobile client applications, this is always the default personal drive folder of the user, while the desktop clients allow to choose which folder to synchronize. The synchronization of multiple root folders is scheduled for a future release.&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Mail&amp;diff=20791</id>
		<title>AppSuite:OX Mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Mail&amp;diff=20791"/>
		<updated>2015-10-20T14:59:30Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OX Mail =&lt;br /&gt;
&lt;br /&gt;
OX Mail is a native mobile phone app built specifically for smartphone users who already have a valid OX App Suite account. The app is designed to let users access their OX App Suite email environment directly from a smartphone native client.&lt;br /&gt;
&lt;br /&gt;
OX Mail enables users to synchronize mails between a variety of smartphone devices and OX App Suite. OX Mail consists of two elements: The OX Mail component that is built into OX App Suite and the native OX Mail app.&lt;br /&gt;
&lt;br /&gt;
The OX Mail app has been designed specifically for ease-of-use and is available for both iOS and Android.&lt;br /&gt;
&lt;br /&gt;
'''Please Note: The OX Mail app will be available in September. With this app Open-Xchange has also created a new branding concept for the customers and partners. More information can be found in the chapter [http://oxpedia.org/wiki/index.php?title=AppSuite:OX_Mail#Integrated_Branding.2FCustomization_Concept_for_Partners_and_Customers Branding/Customization Concept for Partners and Customers]'''&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
=== Server-side Installation and Configuration ===&lt;br /&gt;
&lt;br /&gt;
With OX Mail, OX App Suite supports server based PUSH functionality.&lt;br /&gt;
&lt;br /&gt;
Dovecot customers can use the special PUSH plugin without any additional costs. The plugin will be provided via the Dovecot software repository for Dovecot Pro and community edition. '''Please Note, the installation of the latest Dovecot v2.2.19 release is required'''&lt;br /&gt;
&lt;br /&gt;
'''Please Note: The Open-Xchange package 'open-xchange-push-imapidle' which provides mail push functionality by using the IMAP IDLE command to generate push events when new mail arrives, is not officially supported with OX Mail (app).'''&lt;br /&gt;
&lt;br /&gt;
If you are not using the Dovecot Push Plugin your mail backend has to actively notify the Open-Xchange middleware servers of new emails. This might require the creation of an additional OX middleware plugin to receive those notifications. For further details please contact your assigned pre-sales / prof. services contact.&lt;br /&gt;
&lt;br /&gt;
'''Please Note, the installation of the latest OX App Suite version is required.'''&lt;br /&gt;
&lt;br /&gt;
You will finde the client requirements under [[AppSuite:OX_System_Requirements#OX_Mail_for_Clients|OX Mail requirements]]&lt;br /&gt;
&lt;br /&gt;
== Key Benefits ==&lt;br /&gt;
&lt;br /&gt;
* Supports email PUSH notification for personal Inbox – emails show up immediately on the device&lt;br /&gt;
* Quick and easy to set up with the start-up wizard&lt;br /&gt;
* Intuitive, simple to use, design &lt;br /&gt;
* Familiar smartphone experience&lt;br /&gt;
* Available for both iOS and Android – download app from App Store for free&lt;br /&gt;
&lt;br /&gt;
A more detailed overview of OX Mail, can be found at: http://software.open-xchange.com/products/mail/doc/OX_Mail_Product_Guide.pdf&lt;br /&gt;
&lt;br /&gt;
== Pricing &amp;amp; Availability ==&lt;br /&gt;
&lt;br /&gt;
OX Mail will be available in September 2015.&lt;br /&gt;
&lt;br /&gt;
This email app is available for both iOS and Android and can be downloaded for free from the corresponding App Stores. Availability will be confirmed by Open-Xchange via the usual communication channels. &lt;br /&gt;
&lt;br /&gt;
'''Please note:''' The exact date when the clients become available depends on the approval process of the respective app stores. &lt;br /&gt;
&lt;br /&gt;
The Open-Xchange Middleware components can be downloaded from the respective download repositories as normal.&lt;br /&gt;
&lt;br /&gt;
Please contact your Open-Xchange account manager for further information and pricing details.&lt;br /&gt;
&lt;br /&gt;
= Enabling OX Mail for Users =&lt;br /&gt;
&lt;br /&gt;
OX Mail is enabled for all users that have the capability ''com.openexchange.capability.mobile_mail_app'' &lt;br /&gt;
&lt;br /&gt;
More details about capabilities can be found at [[AppSuite:Capabilities]]. Furthermore, this capability can be defined in a more granular way using the Config Cascade as described at [[ConfigCascade]].&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: &lt;br /&gt;
By default, the capability for the OX Mail app is set to false for all users. It can be changed by editing the corresponding capability in the &amp;quot;permissions.properties&amp;quot; config file, or if you need a more fine grained selection of enabled users, you can use the well known provisioning tools / config cascade.&lt;br /&gt;
&lt;br /&gt;
= Installation of the Clients =&lt;br /&gt;
&lt;br /&gt;
The OX Mail will be available via the different App Stores for iOS and Android by September 2015&lt;br /&gt;
&lt;br /&gt;
= OX Mail Server-side Installation and Configuration =&lt;br /&gt;
&lt;br /&gt;
This chapter describes how the backend components of OX Mail are installed and configured on the server.&lt;br /&gt;
&lt;br /&gt;
== Available packages ==&lt;br /&gt;
&lt;br /&gt;
OX Mail is available with the following backend packages:&lt;br /&gt;
&lt;br /&gt;
* ''open-xchange-mobile-push-certificates'' - Certificates for cloud-based push notifications&lt;br /&gt;
* ''open-xchange-mailapp-backend'' - The main server components for OX Mail&lt;br /&gt;
* ''open-xchange-mobile-push-plugin'' - Provides Push functionality&lt;br /&gt;
&lt;br /&gt;
Installation on the server varies depending on the underlying distribution, details are available in the following chapters.&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum install open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 6.0 (Squeeze) ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 (Wheezy) ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianWheezy|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
= Setup Description for Mobile Push =&lt;br /&gt;
&lt;br /&gt;
== Setup of the Open-Xchange Node==&lt;br /&gt;
&lt;br /&gt;
The existing push framework of the Open-Xchange Middleware has been extended by the capability to spawn &amp;quot;permanent&amp;quot; listeners for incoming new message deliveries. Up to that point the life cycle for a listener was bound to at least one active session, which is associated with a client that is allowed to receive push notifications.&lt;br /&gt;
&lt;br /&gt;
With introduction of the previously mentioned capability, listeners can be started without the need for an existent session right on the start of an Open-Xchange Middleware node. In addition those permanent listeners are spread approximately even over capable cluster members as - dependent on the underlying implementation - a listener representation may open/hold resources (socket connections) in order to receive notifications about new message deliveries.&lt;br /&gt;
&lt;br /&gt;
To prepare a certain Open-Xchange Middleware node to spawn permanent push listeners the following properties need to be configured in file '/opt/open-xchange/etc/mail-push.properties':&lt;br /&gt;
&lt;br /&gt;
* com.openexchange.push.allowPermanentPush&amp;lt;br&amp;gt;This is the general switch to enable/disable support for permanent listeners on a node. Thus needs to be set to &amp;quot;true&amp;quot;&lt;br /&gt;
* com.openexchange.push.allowedClient&amp;lt;br&amp;gt;Specify the comma-separated list of clients which are allowed to receive notifications about new mails, “open-xchange-mailapp” should be added here if you plan to use it in combination with the new mobile-push feature.&lt;br /&gt;
* com.openexchange.push.credstorage.enabled&amp;lt;br&amp;gt;As permanent listeners are required to run without an active session, the credential storage can be used to store user credentials in installations that do not support a master authentication to the mail storage Hence, if the property &amp;quot;com.openexchange.mail.passwordSource&amp;quot; (mail.properties) is not set to &amp;quot;global&amp;quot; this property is required to be set to &amp;quot;true&amp;quot;&lt;br /&gt;
* com.openexchange.push.credstorage.passcrypt&amp;lt;br&amp;gt;This property is required if &amp;quot;com.openexchange.push.credstorage.enabled&amp;quot; is set to &amp;quot;true&amp;quot;. It does specify the passphrase to use to symmetrically encrypt the stored credentials. The passphrase is required to be equal on each cluster member.&lt;br /&gt;
* com.openexchange.push.credstorage.rdb&amp;lt;br&amp;gt;Once the credential storage is enabled, Open-Xchange offers two ways of storing the user-associated login/password combination. In cluster memory (default) or persisted to database. While the first way ensures that no user credentials are persisted nowhere in the Open-Xchange installation, it has the big disadvantage the stored credentials are gone once the last cluster members gets shut-down. Therefore there is also the possibility to store the credentials inside the database. Of course, no matter where the credentials are stored, they are encrypted using the value from com.openexchange.push.credstorage.passcrypt&amp;quot; property&lt;br /&gt;
&lt;br /&gt;
With setting the properties above the configuration on the Open-Xchange Middleware node is prepared to spawn permanent listeners.&lt;br /&gt;
&lt;br /&gt;
Now an appropriate push bundle/package needs to be installed that supports spawning permanent listeners. Currently Open-Xchange ships with three implementations:&lt;br /&gt;
* open-xchange-push-dovecot&lt;br /&gt;
* open-xchange-push-imapidle (Not recommended, therefore disabled for IMAP-IDLE by default. com.openexchange.push.imapidle.supportsPermanentListeners=false)&lt;br /&gt;
* open-xchange-push-mailnotify&lt;br /&gt;
&lt;br /&gt;
Putting all together the following execution flow is taken to decide whether permanent listeners are spawned or not:&lt;br /&gt;
&lt;br /&gt;
[[Image:ox_mail_push_configuration_2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
To check at any time what listeners are currently running, there is a new command-line tool &amp;quot;/opt/open-xchange/sbin/listpushusers&amp;quot; that outputs the user-id/context-id pair along-side with the information if the listener is of permanent nature or bound to an active session:&lt;br /&gt;
&lt;br /&gt;
[[Image:ox_mail_push_configuration_3.png|500px]]&lt;br /&gt;
&lt;br /&gt;
An exemplary out put might look like:&lt;br /&gt;
 ~# /opt/open-xchange/sbin/listpushusers&lt;br /&gt;
 user=249, context=1, permanent=true&lt;br /&gt;
 user=402, context=1, permanent=true&lt;br /&gt;
&lt;br /&gt;
== Setup of the Mobile Push ==&lt;br /&gt;
An appropriate registration for a capable client is required to create a permanent listener for a certain user. As of now, only the Open-Xchange Mail App performs such a registration request to mark the user to have a permanent listener using the newly introduced Mobile Push interfaces of the Open-Xchange Middleware.&lt;br /&gt;
The Mobile Push feature is installed by the following packages:&lt;br /&gt;
* open-xchange-mobile-push-plugin&lt;br /&gt;
* open-xchange-mobile-push-certificates (Only certificates and licenses)&lt;br /&gt;
&lt;br /&gt;
Simply said the main purpose of the Mobile Push functionality is to register an OSGi event handler converting an incoming OSGi event with topic &amp;quot;com/openexchange/push&amp;quot; to an appropriate native push reaching the mobile device using either&lt;br /&gt;
* APN or&lt;br /&gt;
* GCM&lt;br /&gt;
&lt;br /&gt;
=== Client subscription ===&lt;br /&gt;
To be able to do so, the client has to perform a subscribe request against the Mobile Push interface. Such a subscribe call mainly performs two things&lt;br /&gt;
&lt;br /&gt;
1. Storing the data into the database that is needed to initiate a APN/GCM push request&amp;lt;br&amp;gt;&lt;br /&gt;
2. Registering &amp;amp; starting a permanent listener in the push framework&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Handling of OSGi events ===&lt;br /&gt;
&lt;br /&gt;
Moreover, the OSGi events with topic &amp;quot;com/openexchange/push&amp;quot; are spread remotely throughout the Open-Xchange cluster. To avoid that each node yields a native push event for the mobile device, the OSGi event handler of the Mobile Push does only consider local events. This fact implies that each node that broadcasts OSGi events with topic &amp;quot;com/openexchange/push&amp;quot; is required to have the open-xchange-mobile-push packages installed; otherwise the OSGi event is not handled.&lt;br /&gt;
&lt;br /&gt;
=== Mobile Push configuration ===&lt;br /&gt;
The setup of the Mobile Push functionality includes proper configuration of the communication with the APN/GCM services, which is performed in file 'mobilepushevent.properties':&lt;br /&gt;
* com.openxchange.mobilepush.events.gcm.enabled&amp;lt;br&amp;gt;General switch to enable/disable communication with GCM service&lt;br /&gt;
* com.openxchange.mobilepush.events.gcm.key&amp;lt;br&amp;gt;Specifies the GCM key in order to authenticate against the GCM service and to forward push messages to that service. Required if &amp;quot;com.openxchange.mobilenotifier.events.gcm.enabled&amp;quot; is &amp;quot;true&amp;quot; and you want to use a different key than provided by open-xchange-mobile-push-certificates. Otherwise the key from open-xchange-mobile-push-certificates is used.&lt;br /&gt;
* com.openxchange.mobilepush.events.apn.ios.enabled&amp;lt;br&amp;gt;General switch to enable/disable communication with APN service&lt;br /&gt;
* com.openxchange.mobilepush.events.apn.ios.keystore&amp;lt;br&amp;gt;Specifies the path to the local keystore file (PKCS #12) containing the APNS certificate and keys for the iOS application. Required if &amp;quot;com.openxchange.mobilepush.events.apn.ios.enabled&amp;quot; is &amp;quot;true&amp;quot; and you want to use a different certificate than provided by open-xchange-mobile-push-certificates. Otherwise the certificate from open-xchange-mobile-push-certificates is used.&lt;br /&gt;
* com.openxchange.mobilepush.events.apn.ios.password&amp;lt;br&amp;gt;Specifies the password used when creating the referenced keystore containing the certificate of the iOS application. Note that blank or null passwords are in violation of the PKCS #12 specifications. Required if &amp;quot;com.openxchange.mobilepush.events.apn.ios.enabled&amp;quot; is &amp;quot;true&amp;quot; and you want to use a different certificate than provided by open-xchange-mobile-push-certificates.&lt;br /&gt;
&lt;br /&gt;
= Setup of the Dovecot Push =&lt;br /&gt;
&lt;br /&gt;
Dovecot Push plug-in requires METADATA support on Dovecot side, but it should only be enabled for OX IMAP sessions and not for any other IMAP clients directly. Enabling can be done with e.g. the remote directive &amp;quot;remote 1.2.3.0/24 { imap_metadata = yes }&amp;quot; and specifying the IP ranges of OX. Metadata configuration is also described in the article http://wiki2.dovecot.org/ImapMetadata. Please note, the mail_attribute_dict setting also needs to be defined.&lt;br /&gt;
&lt;br /&gt;
The following picture should demonstrate how the overall communication flow between Mail App, Open-Xchange Middleware, and the Dovecot Push plug-in takes place. That communication flow requires the &amp;quot;open-xchange-push-dovecot&amp;quot; package to be installed on the Open-Xchange Middleware nodes and the Dovecot &amp;quot;http-notify&amp;quot; plug-in.&lt;br /&gt;
&lt;br /&gt;
[[Image:ox_mail_push_configuration_4.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Once the Open-Xchange Mail App is installed on the user’s mobile device and it is allowed to show notifications about a new message delivery, the Mail App performs a subscription call to the Open-Xchange Middleware Servers using a fully authenticated session.&lt;br /&gt;
&lt;br /&gt;
When the &amp;quot;open-xchange-push-dovecot&amp;quot; package is installed, the previous subscribe call requests it to spawn a permanent listener. Such a listener simply tells the Dovecot server to notify about new message delivery events for the associated user by executing a special SETMETADATA command. Hence, it does not open or use any resources other than firing a single IMAP command to the Dovecot IMAP Server.&lt;br /&gt;
&lt;br /&gt;
Whenever a &amp;quot;new message delivery&amp;quot; event occurs, the Dovecot Server performs a HTTP callback against a configurable HTTP end-point of the Open-Xchange Middleware providing crucial information about the newly delivered message with a simple JSON body. That incoming HTTP callback is then turned into an appropriate OSGi event with topic &amp;quot;com/openexchange/push&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
That event is in turn handled by the Mobile Push event handler, which uses the event’s information to request an APN/GCM push to the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Configuration of Dovecot &amp;quot;http-notify&amp;quot; plug-in ==&lt;br /&gt;
&lt;br /&gt;
To use push notifications, both the &amp;quot;notify&amp;quot; and the &amp;quot;push_notification&amp;quot; plugins need to be activated. For LMTP delivery, this is required:&lt;br /&gt;
&lt;br /&gt;
 protocol lmtp {&lt;br /&gt;
   mail_plugins = $mail_plugins notify push_notification&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
If you also want push notifications to work for LDA-based delivery, you would need additional configuration:&lt;br /&gt;
&lt;br /&gt;
 protocol lda {&lt;br /&gt;
   mail_plugins = $mail_plugins notify push_notification&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The HTTP end-point (URL + authentication information) to use is configured in the Dovecot configuration file. The appropriate configuration options will contain the HTTP URL denoting the end-point to connect to as well as the authentication information for Basic Authentication as configured by properties &amp;quot;com.openexchange.rest.services.basic-auth.login&amp;quot; and &amp;quot;com.openexchange.rest.services.basic-auth.password&amp;quot;.&lt;br /&gt;
The URL to configure in Dovecot configuration follows this pattern.&lt;br /&gt;
 &amp;lt;http|https&amp;gt; + &amp;quot;://&amp;quot; + &amp;lt;login&amp;gt; + &amp;quot;:&amp;quot; + &amp;lt;password&amp;gt; + &amp;quot;@&amp;quot; + &amp;lt;host&amp;gt; + &amp;quot;:&amp;quot; + &amp;lt;port&amp;gt; + &amp;quot;/preliminary/http-notify/v1/notify&amp;quot;&lt;br /&gt;
&lt;br /&gt;
E.g.&lt;br /&gt;
 plugin {&lt;br /&gt;
  push_notification_driver = ox:url=http://login:pass@node1.domain.tld:8009/preliminary/http-notify/v1/notify&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is also possible to specify more than one HTTP end-point to connect to if a new message delivery occurs. Thus the configuration section mentioned above may be extended by additional &amp;quot;push_notification_driver&amp;quot; entries; e.g. push_notification_driver2, push_notification_driver3, etc.&lt;br /&gt;
&lt;br /&gt;
Please note that the path &amp;quot;/preliminary/http-notify/v1/notify&amp;quot; denotes the internal REST API of the Open-Xchange Middleware, which is not publicly accessible. The administrator can decide whether to add that path to the Apache configuration (see also [[AppSuite:Apache_Configuration]] and [[AppSuite:Grizzly]]) through a Location/ProxyPass directive:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Location /preliminary&amp;gt;&lt;br /&gt;
     Order Deny,Allow&lt;br /&gt;
     Deny from all&lt;br /&gt;
     # Only allow access from servers within the network. Do not expose this&lt;br /&gt;
     # location outside of your network. In case you use a load balancing service in front&lt;br /&gt;
     # of your Apache infrastructure you should make sure that access to /preliminary will&lt;br /&gt;
     # be blocked from the internet / outside clients. Examples:&lt;br /&gt;
     # Allow from 192.168.0.1&lt;br /&gt;
     # Allow from 192.168.1.1 192.168.1.2&lt;br /&gt;
     # Allow from 192.168.0.&lt;br /&gt;
     ProxyPass /preliminary balancer://oxcluster/preliminary&lt;br /&gt;
 &amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case the &amp;quot;user=&amp;quot; sent by OX in the push_notification_driver url data does not match the IMAP login of a user, Dovecot ignores it. This can be overridden by defining  &amp;quot;user_from_metadata&amp;quot; in the push_notification_driver url, e.g. &lt;br /&gt;
&lt;br /&gt;
  push_notification_driver = ox:url=http://example.com/ user_from_metadata&lt;br /&gt;
&lt;br /&gt;
= Integrated Branding/Customization Concept for Partners and Customers =&lt;br /&gt;
&lt;br /&gt;
With OX Mail it is also possible for customers and partners to add branding elements to the app. During the installation of the app a user is presented with a list of preconfigured providers. When a provider is selected the app is automatically setup and branded for that provider.&lt;br /&gt;
&lt;br /&gt;
For both design reasons, as well as app store restrictions, branding in this context means:&lt;br /&gt;
* The app design is “Super Flat”. This means there are not many elements that can be, or need to be, styled in order to match a particular brand.&lt;br /&gt;
* The app does not contain or use any logos of any sort. &lt;br /&gt;
* At install time the app uses a startup wizard in combination with a hosted configuration service. The wizard gives the end user the option to select a provider from a list. When this is done the app will retrieve the branding information from the configuration service and changes its theme accordingly. &lt;br /&gt;
&lt;br /&gt;
== Branding / Customization Process ==&lt;br /&gt;
&lt;br /&gt;
In order to participate you will need to provide specific information such as:&lt;br /&gt;
&lt;br /&gt;
* Confirmation that you are running OX App Suite 7.6.2 including the latest patch.&lt;br /&gt;
* A full URL where your OX App Suite service can be reached by a web client.&lt;br /&gt;
* Two test accounts on your OX App Suite service, where we can verify that the OX App Suite system works as expected.&lt;br /&gt;
* A “logo” and “name” of your service. This information will be used in the app itself.&lt;br /&gt;
* Optional: A preferred color (CI color) that Open-Xchange will use for the app if a user chooses their service from the provider list.&lt;br /&gt;
&lt;br /&gt;
=== Steps ===&lt;br /&gt;
&lt;br /&gt;
# Please download the Questionnaire from [http://knowledgebase.open-xchange.com/fileadmin/user_upload/open-xchange/document/misc/Questionnaire_OX_Mail_Branding.pdf Open-Xchange Download Server]&lt;br /&gt;
# Please fill out the Questionnaire and send it to your Open-Xchange account manager.&lt;br /&gt;
# Open-Xchange will check the data. If all information are available, Open-Xchange will add your personal brand to the live OX Mail app. Please Note: The exact date when your brand becomes available depends on the approval process and could take 5 to 10 days. Open-Xchange won't communicate an exact date. Please check by your self.&lt;br /&gt;
&lt;br /&gt;
[[Category: OX7]]&lt;br /&gt;
[[Category: AppSuite]]&lt;br /&gt;
[[Category: OXMailapp]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Mail&amp;diff=20790</id>
		<title>AppSuite:OX Mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Mail&amp;diff=20790"/>
		<updated>2015-10-20T14:43:57Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OX Mail =&lt;br /&gt;
&lt;br /&gt;
OX Mail is a native mobile phone app built specifically for smartphone users who already have a valid OX App Suite account. The app is designed to let users access their OX App Suite email environment directly from a smartphone native client.&lt;br /&gt;
&lt;br /&gt;
OX Mail enables users to synchronize mails between a variety of smartphone devices and OX App Suite. OX Mail consists of two elements: The OX Mail component that is built into OX App Suite and the native OX Mail app.&lt;br /&gt;
&lt;br /&gt;
The OX Mail app has been designed specifically for ease-of-use and is available for both iOS and Android.&lt;br /&gt;
&lt;br /&gt;
'''Please Note: The OX Mail app will be available in September. With this app Open-Xchange has also created a new branding concept for the customers and partners. More information can be found in the chapter [http://oxpedia.org/wiki/index.php?title=AppSuite:OX_Mail#Integrated_Branding.2FCustomization_Concept_for_Partners_and_Customers Branding/Customization Concept for Partners and Customers]'''&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
=== Server-side Installation and Configuration ===&lt;br /&gt;
&lt;br /&gt;
With OX Mail, OX App Suite supports server based PUSH functionality.&lt;br /&gt;
&lt;br /&gt;
Dovecot customers can use the special PUSH plugin without any additional costs. The plugin will be provided via the Dovecot software repository for Dovecot Pro and community edition. '''Please Note, the installation of the latest Dovecot v2.2.19 release is required'''&lt;br /&gt;
&lt;br /&gt;
'''Please Note: The Open-Xchange package 'open-xchange-push-imapidle' which provides mail push functionality by using the IMAP IDLE command to generate push events when new mail arrives, is not officially supported with OX Mail (app).'''&lt;br /&gt;
&lt;br /&gt;
If you are not using the Dovecot Push Plugin your mail backend has to actively notify the Open-Xchange middleware servers of new emails. This might require the creation of an additional OX middleware plugin to receive those notifications. For further details please contact your assigned pre-sales / prof. services contact.&lt;br /&gt;
&lt;br /&gt;
'''Please Note, the installation of the latest OX App Suite version is required.'''&lt;br /&gt;
&lt;br /&gt;
You will finde the client requirements under [[AppSuite:OX_System_Requirements#OX_Mail_for_Clients|OX Mail requirements]]&lt;br /&gt;
&lt;br /&gt;
== Key Benefits ==&lt;br /&gt;
&lt;br /&gt;
* Supports email PUSH notification for personal Inbox – emails show up immediately on the device&lt;br /&gt;
* Quick and easy to set up with the start-up wizard&lt;br /&gt;
* Intuitive, simple to use, design &lt;br /&gt;
* Familiar smartphone experience&lt;br /&gt;
* Available for both iOS and Android – download app from App Store for free&lt;br /&gt;
&lt;br /&gt;
A more detailed overview of OX Mail, can be found at: http://software.open-xchange.com/products/mail/doc/OX_Mail_Product_Guide.pdf&lt;br /&gt;
&lt;br /&gt;
== Pricing &amp;amp; Availability ==&lt;br /&gt;
&lt;br /&gt;
OX Mail will be available in September 2015.&lt;br /&gt;
&lt;br /&gt;
This email app is available for both iOS and Android and can be downloaded for free from the corresponding App Stores. Availability will be confirmed by Open-Xchange via the usual communication channels. &lt;br /&gt;
&lt;br /&gt;
'''Please note:''' The exact date when the clients become available depends on the approval process of the respective app stores. &lt;br /&gt;
&lt;br /&gt;
The Open-Xchange Middleware components can be downloaded from the respective download repositories as normal.&lt;br /&gt;
&lt;br /&gt;
Please contact your Open-Xchange account manager for further information and pricing details.&lt;br /&gt;
&lt;br /&gt;
= Enabling OX Mail for Users =&lt;br /&gt;
&lt;br /&gt;
OX Mail is enabled for all users that have the capability ''com.openexchange.capability.mobile_mail_app'' &lt;br /&gt;
&lt;br /&gt;
More details about capabilities can be found at [[AppSuite:Capabilities]]. Furthermore, this capability can be defined in a more granular way using the Config Cascade as described at [[ConfigCascade]].&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: &lt;br /&gt;
By default, the capability for the OX Mail app is set to false for all users. It can be changed by editing the corresponding capability in the &amp;quot;permissions.properties&amp;quot; config file, or if you need a more fine grained selection of enabled users, you can use the well known provisioning tools / config cascade.&lt;br /&gt;
&lt;br /&gt;
= Installation of the Clients =&lt;br /&gt;
&lt;br /&gt;
The OX Mail will be available via the different App Stores for iOS and Android by September 2015&lt;br /&gt;
&lt;br /&gt;
= OX Mail Server-side Installation and Configuration =&lt;br /&gt;
&lt;br /&gt;
This chapter describes how the backend components of OX Mail are installed and configured on the server.&lt;br /&gt;
&lt;br /&gt;
== Available packages ==&lt;br /&gt;
&lt;br /&gt;
OX Mail is available with the following backend packages:&lt;br /&gt;
&lt;br /&gt;
* ''open-xchange-mobile-push-certificates'' - Certificates for cloud-based push notifications&lt;br /&gt;
* ''open-xchange-mailapp-backend'' - The main server components for OX Mail&lt;br /&gt;
* ''open-xchange-mobile-push-plugin'' - Provides Push functionality&lt;br /&gt;
&lt;br /&gt;
Installation on the server varies depending on the underlying distribution, details are available in the following chapters.&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum install open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 6.0 (Squeeze) ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 (Wheezy) ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianWheezy|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
= Setup Description for Mobile Push =&lt;br /&gt;
&lt;br /&gt;
== Setup of the Open-Xchange Node==&lt;br /&gt;
&lt;br /&gt;
The existing push framework of the Open-Xchange Middleware has been extended by the capability to spawn &amp;quot;permanent&amp;quot; listeners for incoming new message deliveries. Up to that point the life cycle for a listener was bound to at least one active session, which is associated with a client that is allowed to receive push notifications.&lt;br /&gt;
&lt;br /&gt;
With introduction of the previously mentioned capability, listeners can be started without the need for an existent session right on the start of an Open-Xchange Middleware node. In addition those permanent listeners are spread approximately even over capable cluster members as - dependent on the underlying implementation - a listener representation may open/hold resources (socket connections) in order to receive notifications about new message deliveries.&lt;br /&gt;
&lt;br /&gt;
To prepare a certain Open-Xchange Middleware node to spawn permanent push listeners the following properties need to be configured in file '/opt/open-xchange/etc/mail-push.properties':&lt;br /&gt;
&lt;br /&gt;
* com.openexchange.push.allowPermanentPush&amp;lt;br&amp;gt;This is the general switch to enable/disable support for permanent listeners on a node. Thus needs to be set to &amp;quot;true&amp;quot;&lt;br /&gt;
* com.openexchange.push.allowedClient&amp;lt;br&amp;gt;Specify the comma-separated list of clients which are allowed to receive notifications about new mails, “open-xchange-mailapp” should be added here if you plan to use it in combination with the new mobile-push feature.&lt;br /&gt;
* com.openexchange.push.credstorage.enabled&amp;lt;br&amp;gt;As permanent listeners are required to run without an active session, the credential storage can be used to store user credentials in installations that do not support a master authentication to the mail storage Hence, if the property &amp;quot;com.openexchange.mail.passwordSource&amp;quot; (mail.properties) is not set to &amp;quot;global&amp;quot; this property is required to be set to &amp;quot;true&amp;quot;&lt;br /&gt;
* com.openexchange.push.credstorage.passcrypt&amp;lt;br&amp;gt;This property is required if &amp;quot;com.openexchange.push.credstorage.enabled&amp;quot; is set to &amp;quot;true&amp;quot;. It does specify the passphrase to use to symmetrically encrypt the stored credentials. The passphrase is required to be equal on each cluster member.&lt;br /&gt;
* com.openexchange.push.credstorage.rdb&amp;lt;br&amp;gt;Once the credential storage is enabled, Open-Xchange offers two ways of storing the user-associated login/password combination. In cluster memory (default) or persisted to database. While the first way ensures that no user credentials are persisted nowhere in the Open-Xchange installation, it has the big disadvantage the stored credentials are gone once the last cluster members gets shut-down. Therefore there is also the possibility to store the credentials inside the database. Of course, no matter where the credentials are stored, they are encrypted using the value from com.openexchange.push.credstorage.passcrypt&amp;quot; property&lt;br /&gt;
&lt;br /&gt;
With setting the properties above the configuration on the Open-Xchange Middleware node is prepared to spawn permanent listeners.&lt;br /&gt;
&lt;br /&gt;
Now an appropriate push bundle/package needs to be installed that supports spawning permanent listeners. Currently Open-Xchange ships with three implementations:&lt;br /&gt;
* open-xchange-push-dovecot&lt;br /&gt;
* open-xchange-push-imapidle (Not recommended, therefore disabled for IMAP-IDLE by default. com.openexchange.push.imapidle.supportsPermanentListeners=false)&lt;br /&gt;
* open-xchange-push-mailnotify&lt;br /&gt;
&lt;br /&gt;
Putting all together the following execution flow is taken to decide whether permanent listeners are spawned or not:&lt;br /&gt;
&lt;br /&gt;
[[Image:ox_mail_push_configuration_2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
To check at any time what listeners are currently running, there is a new command-line tool &amp;quot;/opt/open-xchange/sbin/listpushusers&amp;quot; that outputs the user-id/context-id pair along-side with the information if the listener is of permanent nature or bound to an active session:&lt;br /&gt;
&lt;br /&gt;
[[Image:ox_mail_push_configuration_3.png|500px]]&lt;br /&gt;
&lt;br /&gt;
An exemplary out put might look like:&lt;br /&gt;
 ~# /opt/open-xchange/sbin/listpushusers&lt;br /&gt;
 user=249, context=1, permanent=true&lt;br /&gt;
 user=402, context=1, permanent=true&lt;br /&gt;
&lt;br /&gt;
== Setup of the Mobile Push ==&lt;br /&gt;
An appropriate registration for a capable client is required to create a permanent listener for a certain user. As of now, only the Open-Xchange Mail App performs such a registration request to mark the user to have a permanent listener using the newly introduced Mobile Push interfaces of the Open-Xchange Middleware.&lt;br /&gt;
The Mobile Push feature is installed by the following packages:&lt;br /&gt;
* open-xchange-mobile-push&lt;br /&gt;
* open-xchange-mobile-push-certificates (Only certificates and licenses)&lt;br /&gt;
&lt;br /&gt;
Simply said the main purpose of the Mobile Push functionality is to register an OSGi event handler converting an incoming OSGi event with topic &amp;quot;com/openexchange/push&amp;quot; to an appropriate native push reaching the mobile device using either&lt;br /&gt;
* APN or&lt;br /&gt;
* GCM&lt;br /&gt;
&lt;br /&gt;
=== Client subscription ===&lt;br /&gt;
To be able to do so, the client has to perform a subscribe request against the Mobile Push interface. Such a subscribe call mainly performs two things&lt;br /&gt;
&lt;br /&gt;
1. Storing the data into the database that is needed to initiate a APN/GCM push request&amp;lt;br&amp;gt;&lt;br /&gt;
2. Registering &amp;amp; starting a permanent listener in the push framework&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Handling of OSGi events ===&lt;br /&gt;
&lt;br /&gt;
Moreover, the OSGi events with topic &amp;quot;com/openexchange/push&amp;quot; are spread remotely throughout the Open-Xchange cluster. To avoid that each node yields a native push event for the mobile device, the OSGi event handler of the Mobile Push does only consider local events. This fact implies that each node that broadcasts OSGi events with topic &amp;quot;com/openexchange/push&amp;quot; is required to have the open-xchange-mobile-push packages installed; otherwise the OSGi event is not handled.&lt;br /&gt;
&lt;br /&gt;
=== Mobile Push configuration ===&lt;br /&gt;
The setup of the Mobile Push functionality includes proper configuration of the communication with the APN/GCM services, which is performed in file 'mobilepushevent.properties':&lt;br /&gt;
* com.openxchange.mobilepush.events.gcm.enabled&amp;lt;br&amp;gt;General switch to enable/disable communication with GCM service&lt;br /&gt;
* com.openxchange.mobilepush.events.gcm.key&amp;lt;br&amp;gt;Specifies the GCM key in order to authenticate against the GCM service and to forward push messages to that service. Required if &amp;quot;com.openxchange.mobilenotifier.events.gcm.enabled&amp;quot; is &amp;quot;true&amp;quot; and you want to use a different key than provided by open-xchange-mobile-push-certificates. Otherwise the key from open-xchange-mobile-push-certificates is used.&lt;br /&gt;
* com.openxchange.mobilepush.events.apn.ios.enabled&amp;lt;br&amp;gt;General switch to enable/disable communication with APN service&lt;br /&gt;
* com.openxchange.mobilepush.events.apn.ios.keystore&amp;lt;br&amp;gt;Specifies the path to the local keystore file (PKCS #12) containing the APNS certificate and keys for the iOS application. Required if &amp;quot;com.openxchange.mobilepush.events.apn.ios.enabled&amp;quot; is &amp;quot;true&amp;quot; and you want to use a different certificate than provided by open-xchange-mobile-push-certificates. Otherwise the certificate from open-xchange-mobile-push-certificates is used.&lt;br /&gt;
* com.openxchange.mobilepush.events.apn.ios.password&amp;lt;br&amp;gt;Specifies the password used when creating the referenced keystore containing the certificate of the iOS application. Note that blank or null passwords are in violation of the PKCS #12 specifications. Required if &amp;quot;com.openxchange.mobilepush.events.apn.ios.enabled&amp;quot; is &amp;quot;true&amp;quot; and you want to use a different certificate than provided by open-xchange-mobile-push-certificates.&lt;br /&gt;
&lt;br /&gt;
= Setup of the Dovecot Push =&lt;br /&gt;
&lt;br /&gt;
Dovecot Push plug-in requires METADATA support on Dovecot side, but it should only be enabled for OX IMAP sessions and not for any other IMAP clients directly. Enabling can be done with e.g. the remote directive &amp;quot;remote 1.2.3.0/24 { imap_metadata = yes }&amp;quot; and specifying the IP ranges of OX. Metadata configuration is also described in the article http://wiki2.dovecot.org/ImapMetadata. Please note, the mail_attribute_dict setting also needs to be defined.&lt;br /&gt;
&lt;br /&gt;
The following picture should demonstrate how the overall communication flow between Mail App, Open-Xchange Middleware, and the Dovecot Push plug-in takes place. That communication flow requires the &amp;quot;open-xchange-push-dovecot&amp;quot; package to be installed on the Open-Xchange Middleware nodes and the Dovecot &amp;quot;http-notify&amp;quot; plug-in.&lt;br /&gt;
&lt;br /&gt;
[[Image:ox_mail_push_configuration_4.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Once the Open-Xchange Mail App is installed on the user’s mobile device and it is allowed to show notifications about a new message delivery, the Mail App performs a subscription call to the Open-Xchange Middleware Servers using a fully authenticated session.&lt;br /&gt;
&lt;br /&gt;
When the &amp;quot;open-xchange-push-dovecot&amp;quot; package is installed, the previous subscribe call requests it to spawn a permanent listener. Such a listener simply tells the Dovecot server to notify about new message delivery events for the associated user by executing a special SETMETADATA command. Hence, it does not open or use any resources other than firing a single IMAP command to the Dovecot IMAP Server.&lt;br /&gt;
&lt;br /&gt;
Whenever a &amp;quot;new message delivery&amp;quot; event occurs, the Dovecot Server performs a HTTP callback against a configurable HTTP end-point of the Open-Xchange Middleware providing crucial information about the newly delivered message with a simple JSON body. That incoming HTTP callback is then turned into an appropriate OSGi event with topic &amp;quot;com/openexchange/push&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
That event is in turn handled by the Mobile Push event handler, which uses the event’s information to request an APN/GCM push to the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Configuration of Dovecot &amp;quot;http-notify&amp;quot; plug-in ==&lt;br /&gt;
&lt;br /&gt;
To use push notifications, both the &amp;quot;notify&amp;quot; and the &amp;quot;push_notification&amp;quot; plugins need to be activated. For LMTP delivery, this is required:&lt;br /&gt;
&lt;br /&gt;
 protocol lmtp {&lt;br /&gt;
   mail_plugins = $mail_plugins notify push_notification&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
If you also want push notifications to work for LDA-based delivery, you would need additional configuration:&lt;br /&gt;
&lt;br /&gt;
 protocol lda {&lt;br /&gt;
   mail_plugins = $mail_plugins notify push_notification&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The HTTP end-point (URL + authentication information) to use is configured in the Dovecot configuration file. The appropriate configuration options will contain the HTTP URL denoting the end-point to connect to as well as the authentication information for Basic Authentication as configured by properties &amp;quot;com.openexchange.rest.services.basic-auth.login&amp;quot; and &amp;quot;com.openexchange.rest.services.basic-auth.password&amp;quot;.&lt;br /&gt;
The URL to configure in Dovecot configuration follows this pattern.&lt;br /&gt;
 &amp;lt;http|https&amp;gt; + &amp;quot;://&amp;quot; + &amp;lt;login&amp;gt; + &amp;quot;:&amp;quot; + &amp;lt;password&amp;gt; + &amp;quot;@&amp;quot; + &amp;lt;host&amp;gt; + &amp;quot;:&amp;quot; + &amp;lt;port&amp;gt; + &amp;quot;/preliminary/http-notify/v1/notify&amp;quot;&lt;br /&gt;
&lt;br /&gt;
E.g.&lt;br /&gt;
 plugin {&lt;br /&gt;
  push_notification_driver = ox:url=http://login:pass@node1.domain.tld:8009/preliminary/http-notify/v1/notify&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is also possible to specify more than one HTTP end-point to connect to if a new message delivery occurs. Thus the configuration section mentioned above may be extended by additional &amp;quot;push_notification_driver&amp;quot; entries; e.g. push_notification_driver2, push_notification_driver3, etc.&lt;br /&gt;
&lt;br /&gt;
Please note that the path &amp;quot;/preliminary/http-notify/v1/notify&amp;quot; denotes the internal REST API of the Open-Xchange Middleware, which is not publicly accessible. The administrator can decide whether to add that path to the Apache configuration (see also [[AppSuite:Apache_Configuration]] and [[AppSuite:Grizzly]]) through a Location/ProxyPass directive:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Location /preliminary&amp;gt;&lt;br /&gt;
     Order Deny,Allow&lt;br /&gt;
     Deny from all&lt;br /&gt;
     # Only allow access from servers within the network. Do not expose this&lt;br /&gt;
     # location outside of your network. In case you use a load balancing service in front&lt;br /&gt;
     # of your Apache infrastructure you should make sure that access to /preliminary will&lt;br /&gt;
     # be blocked from the internet / outside clients. Examples:&lt;br /&gt;
     # Allow from 192.168.0.1&lt;br /&gt;
     # Allow from 192.168.1.1 192.168.1.2&lt;br /&gt;
     # Allow from 192.168.0.&lt;br /&gt;
     ProxyPass /preliminary balancer://oxcluster/preliminary&lt;br /&gt;
 &amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case the &amp;quot;user=&amp;quot; sent by OX in the push_notification_driver url data does not match the IMAP login of a user, Dovecot ignores it. This can be overridden by defining  &amp;quot;user_from_metadata&amp;quot; in the push_notification_driver url, e.g. &lt;br /&gt;
&lt;br /&gt;
  push_notification_driver = ox:url=http://example.com/ user_from_metadata&lt;br /&gt;
&lt;br /&gt;
= Integrated Branding/Customization Concept for Partners and Customers =&lt;br /&gt;
&lt;br /&gt;
With OX Mail it is also possible for customers and partners to add branding elements to the app. During the installation of the app a user is presented with a list of preconfigured providers. When a provider is selected the app is automatically setup and branded for that provider.&lt;br /&gt;
&lt;br /&gt;
For both design reasons, as well as app store restrictions, branding in this context means:&lt;br /&gt;
* The app design is “Super Flat”. This means there are not many elements that can be, or need to be, styled in order to match a particular brand.&lt;br /&gt;
* The app does not contain or use any logos of any sort. &lt;br /&gt;
* At install time the app uses a startup wizard in combination with a hosted configuration service. The wizard gives the end user the option to select a provider from a list. When this is done the app will retrieve the branding information from the configuration service and changes its theme accordingly. &lt;br /&gt;
&lt;br /&gt;
== Branding / Customization Process ==&lt;br /&gt;
&lt;br /&gt;
In order to participate you will need to provide specific information such as:&lt;br /&gt;
&lt;br /&gt;
* Confirmation that you are running OX App Suite 7.6.2 including the latest patch.&lt;br /&gt;
* A full URL where your OX App Suite service can be reached by a web client.&lt;br /&gt;
* Two test accounts on your OX App Suite service, where we can verify that the OX App Suite system works as expected.&lt;br /&gt;
* A “logo” and “name” of your service. This information will be used in the app itself.&lt;br /&gt;
* Optional: A preferred color (CI color) that Open-Xchange will use for the app if a user chooses their service from the provider list.&lt;br /&gt;
&lt;br /&gt;
=== Steps ===&lt;br /&gt;
&lt;br /&gt;
# Please download the Questionnaire from [http://knowledgebase.open-xchange.com/fileadmin/user_upload/open-xchange/document/misc/Questionnaire_OX_Mail_Branding.pdf Open-Xchange Download Server]&lt;br /&gt;
# Please fill out the Questionnaire and send it to your Open-Xchange account manager.&lt;br /&gt;
# Open-Xchange will check the data. If all information are available, Open-Xchange will add your personal brand to the live OX Mail app. Please Note: The exact date when your brand becomes available depends on the approval process and could take 5 to 10 days. Open-Xchange won't communicate an exact date. Please check by your self.&lt;br /&gt;
&lt;br /&gt;
[[Category: OX7]]&lt;br /&gt;
[[Category: AppSuite]]&lt;br /&gt;
[[Category: OXMailapp]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Mail&amp;diff=20789</id>
		<title>AppSuite:OX Mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Mail&amp;diff=20789"/>
		<updated>2015-10-20T11:11:28Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: Fix #41701&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OX Mail =&lt;br /&gt;
&lt;br /&gt;
OX Mail is a native mobile phone app built specifically for smartphone users who already have a valid OX App Suite account. The app is designed to let users access their OX App Suite email environment directly from a smartphone native client.&lt;br /&gt;
&lt;br /&gt;
OX Mail enables users to synchronize mails between a variety of smartphone devices and OX App Suite. OX Mail consists of two elements: The OX Mail component that is built into OX App Suite and the native OX Mail app.&lt;br /&gt;
&lt;br /&gt;
The OX Mail app has been designed specifically for ease-of-use and is available for both iOS and Android.&lt;br /&gt;
&lt;br /&gt;
'''Please Note: The OX Mail app will be available in September. With this app Open-Xchange has also created a new branding concept for the customers and partners. More information can be found in the chapter [http://oxpedia.org/wiki/index.php?title=AppSuite:OX_Mail#Integrated_Branding.2FCustomization_Concept_for_Partners_and_Customers Branding/Customization Concept for Partners and Customers]'''&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
=== Server-side Installation and Configuration ===&lt;br /&gt;
&lt;br /&gt;
With OX Mail, OX App Suite supports server based PUSH functionality.&lt;br /&gt;
&lt;br /&gt;
Dovecot customers can use the special PUSH plugin without any additional costs. The plugin will be provided via the Dovecot software repository for Dovecot Pro and community edition. '''Please Note, the installation of the latest Dovecot v2.2.19 release is required'''&lt;br /&gt;
&lt;br /&gt;
'''Please Note: The Open-Xchange package 'open-xchange-push-imapidle' which provides mail push functionality by using the IMAP IDLE command to generate push events when new mail arrives, is not officially supported with OX Mail (app).'''&lt;br /&gt;
&lt;br /&gt;
If you are not using the Dovecot Push Plugin your mail backend has to actively notify the Open-Xchange middleware servers of new emails. This might require the creation of an additional OX middleware plugin to receive those notifications. For further details please contact your assigned pre-sales / prof. services contact.&lt;br /&gt;
&lt;br /&gt;
'''Please Note, the installation of the latest OX App Suite version is required.'''&lt;br /&gt;
&lt;br /&gt;
You will finde the client requirements under [[AppSuite:OX_System_Requirements#OX_Mail_for_Clients|OX Mail requirements]]&lt;br /&gt;
&lt;br /&gt;
== Key Benefits ==&lt;br /&gt;
&lt;br /&gt;
* Supports email PUSH notification for personal Inbox – emails show up immediately on the device&lt;br /&gt;
* Quick and easy to set up with the start-up wizard&lt;br /&gt;
* Intuitive, simple to use, design &lt;br /&gt;
* Familiar smartphone experience&lt;br /&gt;
* Available for both iOS and Android – download app from App Store for free&lt;br /&gt;
&lt;br /&gt;
A more detailed overview of OX Mail, can be found at: http://software.open-xchange.com/products/mail/doc/OX_Mail_Product_Guide.pdf&lt;br /&gt;
&lt;br /&gt;
== Pricing &amp;amp; Availability ==&lt;br /&gt;
&lt;br /&gt;
OX Mail will be available in September 2015.&lt;br /&gt;
&lt;br /&gt;
This email app is available for both iOS and Android and can be downloaded for free from the corresponding App Stores. Availability will be confirmed by Open-Xchange via the usual communication channels. &lt;br /&gt;
&lt;br /&gt;
'''Please note:''' The exact date when the clients become available depends on the approval process of the respective app stores. &lt;br /&gt;
&lt;br /&gt;
The Open-Xchange Middleware components can be downloaded from the respective download repositories as normal.&lt;br /&gt;
&lt;br /&gt;
Please contact your Open-Xchange account manager for further information and pricing details.&lt;br /&gt;
&lt;br /&gt;
= Enabling OX Mail for Users =&lt;br /&gt;
&lt;br /&gt;
OX Mail is enabled for all users that have the capability ''com.openexchange.capability.mobile_mail_app'' &lt;br /&gt;
&lt;br /&gt;
More details about capabilities can be found at [[AppSuite:Capabilities]]. Furthermore, this capability can be defined in a more granular way using the Config Cascade as described at [[ConfigCascade]].&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: &lt;br /&gt;
By default, the capability for the OX Mail app is set to false for all users. It can be changed by editing the corresponding capability in the &amp;quot;permissions.properties&amp;quot; config file, or if you need a more fine grained selection of enabled users, you can use the well known provisioning tools / config cascade.&lt;br /&gt;
&lt;br /&gt;
= Installation of the Clients =&lt;br /&gt;
&lt;br /&gt;
The OX Mail will be available via the different App Stores for iOS and Android by September 2015&lt;br /&gt;
&lt;br /&gt;
= OX Mail Server-side Installation and Configuration =&lt;br /&gt;
&lt;br /&gt;
This chapter describes how the backend components of OX Mail are installed and configured on the server.&lt;br /&gt;
&lt;br /&gt;
== Available packages ==&lt;br /&gt;
&lt;br /&gt;
OX Mail is available with the following backend packages:&lt;br /&gt;
&lt;br /&gt;
* ''open-xchange-mobile-push-certificates'' - Certificates for cloud-based push notifications&lt;br /&gt;
* ''open-xchange-mailapp-backend'' - The main server components for OX Mail&lt;br /&gt;
* ''open-xchange-mobile-push-plugin'' - Provides Push functionality&lt;br /&gt;
&lt;br /&gt;
Installation on the server varies depending on the underlying distribution, details are available in the following chapters.&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum install open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 6.0 (Squeeze) ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 (Wheezy) ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianWheezy|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
= Setup Description for Mobile Push =&lt;br /&gt;
&lt;br /&gt;
== Setup of the Open-Xchange Node==&lt;br /&gt;
&lt;br /&gt;
The existing push framework of the Open-Xchange Middleware has been extended by the capability to spawn &amp;quot;permanent&amp;quot; listeners for incoming new message deliveries. Up to that point the life cycle for a listener was bound to at least one active session, which is associated with a client that is allowed to receive push notifications.&lt;br /&gt;
&lt;br /&gt;
With introduction of the previously mentioned capability, listeners can be started without the need for an existent session right on the start of an Open-Xchange Middleware node. In addition those permanent listeners are spread approximately even over capable cluster members as - dependent on the underlying implementation - a listener representation may open/hold resources (socket connections) in order to receive notifications about new message deliveries.&lt;br /&gt;
&lt;br /&gt;
To prepare a certain Open-Xchange Middleware node to spawn permanent push listeners the following properties need to be configured in file '/opt/open-xchange/etc/mail-push.properties':&lt;br /&gt;
&lt;br /&gt;
* com.openexchange.push.allowPermanentPush&amp;lt;br&amp;gt;This is the general switch to enable/disable support for permanent listeners on a node. Thus needs to be set to &amp;quot;true&amp;quot;&lt;br /&gt;
* com.openexchange.push.allowedClient&amp;lt;br&amp;gt;Specify the comma-separated list of clients which are allowed to receive notifications about new mails, “open-xchange-mailapp” should be added here if you plan to use it in combination with the new mobile-push feature.&lt;br /&gt;
* com.openexchange.push.credstorage.enabled&amp;lt;br&amp;gt;As permanent listeners are required to run without an active session, the credential storage can be used to store user credentials in installations that do not support a master authentication to the mail storage Hence, if the property &amp;quot;com.openexchange.mail.passwordSource&amp;quot; (mail.properties) is not set to &amp;quot;global&amp;quot; this property is required to be set to &amp;quot;true&amp;quot;&lt;br /&gt;
* com.openexchange.push.credstorage.passcrypt&amp;lt;br&amp;gt;This property is required if &amp;quot;com.openexchange.push.credstorage.enabled&amp;quot; is set to &amp;quot;true&amp;quot;. It does specify the passphrase to use to symmetrically encrypt the stored credentials. The passphrase is required to be equal on each cluster member.&lt;br /&gt;
* com.openexchange.push.credstorage.rdb&amp;lt;br&amp;gt;Once the credential storage is enabled, Open-Xchange offers two ways of storing the user-associated login/password combination. In cluster memory (default) or persisted to database. While the first way ensures that no user credentials are persisted nowhere in the Open-Xchange installation, it has the big disadvantage the stored credentials are gone once the last cluster members gets shut-down. Therefore there is also the possibility to store the credentials inside the database. Of course, no matter where the credentials are stored, they are encrypted using the value from com.openexchange.push.credstorage.passcrypt&amp;quot; property&lt;br /&gt;
&lt;br /&gt;
With setting the properties above the configuration on the Open-Xchange Middleware node is prepared to spawn permanent listeners.&lt;br /&gt;
&lt;br /&gt;
Now an appropriate push bundle/package needs to be installed that supports spawning permanent listeners. Currently Open-Xchange ships with three implementations:&lt;br /&gt;
* open-xchange-push-dovecot&lt;br /&gt;
* open-xchange-push-imapidle (Not recommended, therefore disabled for IMAP-IDLE by default. com.openexchange.push.imapidle.supportsPermanentListeners=false)&lt;br /&gt;
* open-xchange-push-mailnotify&lt;br /&gt;
&lt;br /&gt;
Putting all together the following execution flow is taken to decide whether permanent listeners are spawned or not:&lt;br /&gt;
&lt;br /&gt;
[[Image:ox_mail_push_configuration_2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
To check at any time what listeners are currently running, there is a new command-line tool &amp;quot;/opt/open-xchange/sbin/listpushusers&amp;quot; that outputs the user-id/context-id pair along-side with the information if the listener is of permanent nature or bound to an active session:&lt;br /&gt;
&lt;br /&gt;
[[Image:ox_mail_push_configuration_3.png|500px]]&lt;br /&gt;
&lt;br /&gt;
An exemplary out put might look like:&lt;br /&gt;
 ~# /opt/open-xchange/sbin/listpushusers&lt;br /&gt;
 user=249, context=1, permanent=true&lt;br /&gt;
 user=402, context=1, permanent=true&lt;br /&gt;
&lt;br /&gt;
== Setup of the Mobile Push ==&lt;br /&gt;
An appropriate registration for a capable client is required to create a permanent listener for a certain user. As of now, only the Open-Xchange Mail App performs such a registration request to mark the user to have a permanent listener using the newly introduced Mobile Push interfaces of the Open-Xchange Middleware.&lt;br /&gt;
The Mobile Push feature is installed by the following packages:&lt;br /&gt;
* open-xchange-mobile-push&lt;br /&gt;
* open-xchange-mobile-push-restricted (Only certificates and licenses)&lt;br /&gt;
&lt;br /&gt;
Simply said the main purpose of the Mobile Push functionality is to register an OSGi event handler converting an incoming OSGi event with topic &amp;quot;com/openexchange/push&amp;quot; to an appropriate native push reaching the mobile device using either&lt;br /&gt;
* APN or&lt;br /&gt;
* GCM&lt;br /&gt;
&lt;br /&gt;
=== Client subscription ===&lt;br /&gt;
To be able to do so, the client has to perform a subscribe request against the Mobile Push interface. Such a subscribe call mainly performs two things&lt;br /&gt;
&lt;br /&gt;
1. Storing the data into the database that is needed to initiate a APN/GCM push request&amp;lt;br&amp;gt;&lt;br /&gt;
2. Registering &amp;amp; starting a permanent listener in the push framework&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Handling of OSGi events ===&lt;br /&gt;
&lt;br /&gt;
Moreover, the OSGi events with topic &amp;quot;com/openexchange/push&amp;quot; are spread remotely throughout the Open-Xchange cluster. To avoid that each node yields a native push event for the mobile device, the OSGi event handler of the Mobile Push does only consider local events. This fact implies that each node that broadcasts OSGi events with topic &amp;quot;com/openexchange/push&amp;quot; is required to have the open-xchange-mobile-push packages installed; otherwise the OSGi event is not handled.&lt;br /&gt;
&lt;br /&gt;
=== Mobile Push configuration ===&lt;br /&gt;
The setup of the Mobile Push functionality includes proper configuration of the communication with the APN/GCM services, which is performed in file 'mobilepushevent.properties':&lt;br /&gt;
* com.openxchange.mobilepush.events.gcm.enabled&amp;lt;br&amp;gt;General switch to enable/disable communication with GCM service&lt;br /&gt;
* com.openxchange.mobilepush.events.gcm.key&amp;lt;br&amp;gt;Specifies the GCM key in order to authenticate against the GCM service and to forward push messages to that service. Required if &amp;quot;com.openxchange.mobilenotifier.events.gcm.enabled&amp;quot; is &amp;quot;true&amp;quot; and you want to use a different key than provided by open-xchange-mobile-push-restricted. Otherwise the key from open-xchange-mobile-push-restricted is used.&lt;br /&gt;
* com.openxchange.mobilepush.events.apn.ios.enabled&amp;lt;br&amp;gt;General switch to enable/disable communication with APN service&lt;br /&gt;
* com.openxchange.mobilepush.events.apn.ios.keystore&amp;lt;br&amp;gt;Specifies the path to the local keystore file (PKCS #12) containing the APNS certificate and keys for the iOS application. Required if &amp;quot;com.openxchange.mobilepush.events.apn.ios.enabled&amp;quot; is &amp;quot;true&amp;quot; and you want to use a different certificate than provided by open-xchange-mobile-push-restricted. Otherwise the certificate from open-xchange-mobile-push-restricted is used.&lt;br /&gt;
* com.openxchange.mobilepush.events.apn.ios.password&amp;lt;br&amp;gt;Specifies the password used when creating the referenced keystore containing the certificate of the iOS application. Note that blank or null passwords are in violation of the PKCS #12 specifications. Required if &amp;quot;com.openxchange.mobilepush.events.apn.ios.enabled&amp;quot; is &amp;quot;true&amp;quot; and you want to use a different certificate than provided by open-xchange-mobile-push-restricted.&lt;br /&gt;
&lt;br /&gt;
= Setup of the Dovecot Push =&lt;br /&gt;
&lt;br /&gt;
Dovecot Push plug-in requires METADATA support on Dovecot side, but it should only be enabled for OX IMAP sessions and not for any other IMAP clients directly. Enabling can be done with e.g. the remote directive &amp;quot;remote 1.2.3.0/24 { imap_metadata = yes }&amp;quot; and specifying the IP ranges of OX. Metadata configuration is also described in the article http://wiki2.dovecot.org/ImapMetadata. Please note, the mail_attribute_dict setting also needs to be defined.&lt;br /&gt;
&lt;br /&gt;
The following picture should demonstrate how the overall communication flow between Mail App, Open-Xchange Middleware, and the Dovecot Push plug-in takes place. That communication flow requires the &amp;quot;open-xchange-push-dovecot&amp;quot; package to be installed on the Open-Xchange Middleware nodes and the Dovecot &amp;quot;http-notify&amp;quot; plug-in.&lt;br /&gt;
&lt;br /&gt;
[[Image:ox_mail_push_configuration_4.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Once the Open-Xchange Mail App is installed on the user’s mobile device and it is allowed to show notifications about a new message delivery, the Mail App performs a subscription call to the Open-Xchange Middleware Servers using a fully authenticated session.&lt;br /&gt;
&lt;br /&gt;
When the &amp;quot;open-xchange-push-dovecot&amp;quot; package is installed, the previous subscribe call requests it to spawn a permanent listener. Such a listener simply tells the Dovecot server to notify about new message delivery events for the associated user by executing a special SETMETADATA command. Hence, it does not open or use any resources other than firing a single IMAP command to the Dovecot IMAP Server.&lt;br /&gt;
&lt;br /&gt;
Whenever a &amp;quot;new message delivery&amp;quot; event occurs, the Dovecot Server performs a HTTP callback against a configurable HTTP end-point of the Open-Xchange Middleware providing crucial information about the newly delivered message with a simple JSON body. That incoming HTTP callback is then turned into an appropriate OSGi event with topic &amp;quot;com/openexchange/push&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
That event is in turn handled by the Mobile Push event handler, which uses the event’s information to request an APN/GCM push to the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Configuration of Dovecot &amp;quot;http-notify&amp;quot; plug-in ==&lt;br /&gt;
&lt;br /&gt;
To use push notifications, both the &amp;quot;notify&amp;quot; and the &amp;quot;push_notification&amp;quot; plugins need to be activated. For LMTP delivery, this is required:&lt;br /&gt;
&lt;br /&gt;
 protocol lmtp {&lt;br /&gt;
   mail_plugins = $mail_plugins notify push_notification&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
If you also want push notifications to work for LDA-based delivery, you would need additional configuration:&lt;br /&gt;
&lt;br /&gt;
 protocol lda {&lt;br /&gt;
   mail_plugins = $mail_plugins notify push_notification&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The HTTP end-point (URL + authentication information) to use is configured in the Dovecot configuration file. The appropriate configuration options will contain the HTTP URL denoting the end-point to connect to as well as the authentication information for Basic Authentication as configured by properties &amp;quot;com.openexchange.rest.services.basic-auth.login&amp;quot; and &amp;quot;com.openexchange.rest.services.basic-auth.password&amp;quot;.&lt;br /&gt;
The URL to configure in Dovecot configuration follows this pattern.&lt;br /&gt;
 &amp;lt;http|https&amp;gt; + &amp;quot;://&amp;quot; + &amp;lt;login&amp;gt; + &amp;quot;:&amp;quot; + &amp;lt;password&amp;gt; + &amp;quot;@&amp;quot; + &amp;lt;host&amp;gt; + &amp;quot;:&amp;quot; + &amp;lt;port&amp;gt; + &amp;quot;/preliminary/http-notify/v1/notify&amp;quot;&lt;br /&gt;
&lt;br /&gt;
E.g.&lt;br /&gt;
 plugin {&lt;br /&gt;
  push_notification_driver = ox:url=http://login:pass@node1.domain.tld:8009/preliminary/http-notify/v1/notify&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is also possible to specify more than one HTTP end-point to connect to if a new message delivery occurs. Thus the configuration section mentioned above may be extended by additional &amp;quot;push_notification_driver&amp;quot; entries; e.g. push_notification_driver2, push_notification_driver3, etc.&lt;br /&gt;
&lt;br /&gt;
Please note that the path &amp;quot;/preliminary/http-notify/v1/notify&amp;quot; denotes the internal REST API of the Open-Xchange Middleware, which is not publicly accessible. The administrator can decide whether to add that path to the Apache configuration (see also [[AppSuite:Apache_Configuration]] and [[AppSuite:Grizzly]]) through a Location/ProxyPass directive:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Location /preliminary&amp;gt;&lt;br /&gt;
     Order Deny,Allow&lt;br /&gt;
     Deny from all&lt;br /&gt;
     # Only allow access from servers within the network. Do not expose this&lt;br /&gt;
     # location outside of your network. In case you use a load balancing service in front&lt;br /&gt;
     # of your Apache infrastructure you should make sure that access to /preliminary will&lt;br /&gt;
     # be blocked from the internet / outside clients. Examples:&lt;br /&gt;
     # Allow from 192.168.0.1&lt;br /&gt;
     # Allow from 192.168.1.1 192.168.1.2&lt;br /&gt;
     # Allow from 192.168.0.&lt;br /&gt;
     ProxyPass /preliminary balancer://oxcluster/preliminary&lt;br /&gt;
 &amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case the &amp;quot;user=&amp;quot; sent by OX in the push_notification_driver url data does not match the IMAP login of a user, Dovecot ignores it. This can be overridden by defining  &amp;quot;user_from_metadata&amp;quot; in the push_notification_driver url, e.g. &lt;br /&gt;
&lt;br /&gt;
  push_notification_driver = ox:url=http://example.com/ user_from_metadata&lt;br /&gt;
&lt;br /&gt;
= Integrated Branding/Customization Concept for Partners and Customers =&lt;br /&gt;
&lt;br /&gt;
With OX Mail it is also possible for customers and partners to add branding elements to the app. During the installation of the app a user is presented with a list of preconfigured providers. When a provider is selected the app is automatically setup and branded for that provider.&lt;br /&gt;
&lt;br /&gt;
For both design reasons, as well as app store restrictions, branding in this context means:&lt;br /&gt;
* The app design is “Super Flat”. This means there are not many elements that can be, or need to be, styled in order to match a particular brand.&lt;br /&gt;
* The app does not contain or use any logos of any sort. &lt;br /&gt;
* At install time the app uses a startup wizard in combination with a hosted configuration service. The wizard gives the end user the option to select a provider from a list. When this is done the app will retrieve the branding information from the configuration service and changes its theme accordingly. &lt;br /&gt;
&lt;br /&gt;
== Branding / Customization Process ==&lt;br /&gt;
&lt;br /&gt;
In order to participate you will need to provide specific information such as:&lt;br /&gt;
&lt;br /&gt;
* Confirmation that you are running OX App Suite 7.6.2 including the latest patch.&lt;br /&gt;
* A full URL where your OX App Suite service can be reached by a web client.&lt;br /&gt;
* Two test accounts on your OX App Suite service, where we can verify that the OX App Suite system works as expected.&lt;br /&gt;
* A “logo” and “name” of your service. This information will be used in the app itself.&lt;br /&gt;
* Optional: A preferred color (CI color) that Open-Xchange will use for the app if a user chooses their service from the provider list.&lt;br /&gt;
&lt;br /&gt;
=== Steps ===&lt;br /&gt;
&lt;br /&gt;
# Please download the Questionnaire from [http://knowledgebase.open-xchange.com/fileadmin/user_upload/open-xchange/document/misc/Questionnaire_OX_Mail_Branding.pdf Open-Xchange Download Server]&lt;br /&gt;
# Please fill out the Questionnaire and send it to your Open-Xchange account manager.&lt;br /&gt;
# Open-Xchange will check the data. If all information are available, Open-Xchange will add your personal brand to the live OX Mail app. Please Note: The exact date when your brand becomes available depends on the approval process and could take 5 to 10 days. Open-Xchange won't communicate an exact date. Please check by your self.&lt;br /&gt;
&lt;br /&gt;
[[Category: OX7]]&lt;br /&gt;
[[Category: AppSuite]]&lt;br /&gt;
[[Category: OXMailapp]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=OX6:Installing_OX_Language_Packages&amp;diff=20783</id>
		<title>OX6:Installing OX Language Packages</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=OX6:Installing_OX_Language_Packages&amp;diff=20783"/>
		<updated>2015-10-15T10:49:14Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: Reverted edits by Cutmasta (talk) to last revision by Choeger&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installing Open-Xchange Server Language Packages ==&lt;br /&gt;
&lt;br /&gt;
=== Where to get the language packages? ===&lt;br /&gt;
&lt;br /&gt;
The packages are contained in the standard Open-Xchange installation repositories.&lt;br /&gt;
&lt;br /&gt;
For a complete list of currently available languages, have a look at [[Available_Translations]].&lt;br /&gt;
&lt;br /&gt;
=== How to install? ===&lt;br /&gt;
&lt;br /&gt;
Use the package manager from your preferred distribution to search for packages with names&lt;br /&gt;
&lt;br /&gt;
on 6.20.x:&lt;br /&gt;
&lt;br /&gt;
 open-xchange-lang*&lt;br /&gt;
 open-xchange-gui-lang*&lt;br /&gt;
&lt;br /&gt;
on 6.22.x:&lt;br /&gt;
&lt;br /&gt;
 open-xchange-l10n*&lt;br /&gt;
 open-xchange-gui-l10n*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== OX AE ====&lt;br /&gt;
&lt;br /&gt;
Log into UDM and search for language packages using pattern &amp;lt;tt&amp;gt;open-xchange*lang*&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:udmoxlang.jpg|center|600px|]]&lt;br /&gt;
&lt;br /&gt;
[[Category: OX6]]&lt;br /&gt;
&lt;br /&gt;
'''Important:''' Currently the additionally installed languages are only available within Open-Xchange Groupware and cannot be set within Univention Directory Manager.&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Mail&amp;diff=20315</id>
		<title>AppSuite:OX Mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Mail&amp;diff=20315"/>
		<updated>2015-09-02T10:36:16Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* Available packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OX Mail (In Progress)=&lt;br /&gt;
&lt;br /&gt;
OX Mail is a native mobile phone app built specifically for smartphone users who already have a valid OX App Suite account. The app is designed to let users access their OX App Suite email environment directly from a smartphone native client.&lt;br /&gt;
&lt;br /&gt;
OX Mail enables users to synchronize mails between a variety of smartphone devices and OX App Suite. OX Mail consists of two elements: The OX Mail component that is built into OX App Suite and the native OX Mail app.&lt;br /&gt;
&lt;br /&gt;
The OX Mail app has been designed specifically for ease-of-use and is available for both iOS and Android.&lt;br /&gt;
&lt;br /&gt;
'''Please Note: The OX Mail app will be available in September. With this app Open-Xchange has also created a new branding concept for the customers and partners. More information can be found in the chapter [http://oxpedia.org/wiki/index.php?title=AppSuite:OX_Mail#Integrated_Branding.2FCustomization_Concept_for_Partners_and_Customers Branding/Customization Concept for Partners and Customers]'''&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
=== Server-side Installation and Configuration ===&lt;br /&gt;
&lt;br /&gt;
With OX Mail, OX App Suite supports server based PUSH functionality. One of the main requirements for push functionality is the use of the Dovecot mail backend. In addition the following conditions should be met: &lt;br /&gt;
&lt;br /&gt;
* Dovecot Customers with less than 100,000 users: Customers can use the special PUSH plugin without any additional costs. The plugin will be provided via the Open-Xchange software repository for customers with a valid Open-Xchange App Suite license.&lt;br /&gt;
* Dovecot Pro Customers with more than a 100,000 users: PUSH plugin use is covered under this license without incurring additional costs.&lt;br /&gt;
* If you are not using the Dovecot Push Plugin your mail backend has to actively notify the Open-Xchange middleware servers of new emails. This might require the creation of an additional OX middleware plugin to receive those notifications.&lt;br /&gt;
* '''Installed latest OX App Suite Public Patch v7.6.2-rev31 (week 36 2015)'''&lt;br /&gt;
&lt;br /&gt;
For further details please contact your assigned pre-sales / prof. services contact.&lt;br /&gt;
&lt;br /&gt;
You will finde the client requirements under [[AppSuite:OX_System_Requirements#OX_Mail_for_Clients|OX Mail requirements]]&lt;br /&gt;
&lt;br /&gt;
== Key Benefits ==&lt;br /&gt;
&lt;br /&gt;
* Supports email PUSH notification – emails show up immediately on the device&lt;br /&gt;
* Quick and easy to set up with the start-up wizard&lt;br /&gt;
* Intuitive, simple to use, design &lt;br /&gt;
* Familiar smartphone experience&lt;br /&gt;
* Available for both iOS and Android – download app from App Store for free&lt;br /&gt;
* Low support requirements&lt;br /&gt;
&lt;br /&gt;
A more detailed overview of OX Mail, can be found at: http://software.open-xchange.com/products/mail/doc/OX_Mail_Product_Guide.pdf&lt;br /&gt;
&lt;br /&gt;
== Pricing &amp;amp; Availability ==&lt;br /&gt;
&lt;br /&gt;
OX Mail will be available in September 2015.&lt;br /&gt;
&lt;br /&gt;
This email app is available for both iOS and Android and can be downloaded for free from the corresponding App Stores. Availability will be confirmed by Open-Xchange via the usual communication channels. &lt;br /&gt;
&lt;br /&gt;
'''Please note:''' The exact date when the clients become available depends on the approval process of the respective app stores. &lt;br /&gt;
&lt;br /&gt;
The Open-Xchange Middleware components can be downloaded from the respective download repositories as normal.&lt;br /&gt;
&lt;br /&gt;
Please contact your Open-Xchange account manager for further information and pricing details.&lt;br /&gt;
&lt;br /&gt;
= Enabling OX Mail for Users =&lt;br /&gt;
&lt;br /&gt;
OX Mail is enabled for all users that have the capability ''com.openexchange.capability.mobile_mail_app'' &lt;br /&gt;
&lt;br /&gt;
More details about capabilities can be found at [[AppSuite:Capabilities]]. Furthermore, this capability can be defined in a more granular way using the Config Cascade as described at [[ConfigCascade]].&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: &lt;br /&gt;
By default, the capability for the OX Mail app is set to false for all users. It can be changed by editing the corresponding capability in the &amp;quot;permissions.properties&amp;quot; config file, or if you need a more fine grained selection of enabled users, you can use the well known provisioning tools / config cascade.&lt;br /&gt;
&lt;br /&gt;
= Installation of the Clients =&lt;br /&gt;
&lt;br /&gt;
The OX Mail will be available via the different App Stores for iOS and Android by September 2015&lt;br /&gt;
&lt;br /&gt;
= OX Mail Server-side Installation and Configuration =&lt;br /&gt;
&lt;br /&gt;
This chapter describes how the backend components of OX Mail are installed and configured on the server.&lt;br /&gt;
&lt;br /&gt;
== Available packages ==&lt;br /&gt;
&lt;br /&gt;
OX Mail is available with the following backend packages:&lt;br /&gt;
&lt;br /&gt;
* ''open-xchange-mobile-push-certificates'' - Certificates for cloud-based push notifications&lt;br /&gt;
* ''open-xchange-mailapp-backend'' - The main server components for OX Mail&lt;br /&gt;
* ''open-xchange-mobile-push-plugin'' - ???&lt;br /&gt;
* ''open-xchange-push-dovecot'' - ???&lt;br /&gt;
&lt;br /&gt;
Installation on the server varies depending on the underlying distribution, details are available in the following chapters.&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 6.0 (Squeeze) ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 (Wheezy) ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianWheezy|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
 $ zypper install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
= Setup Description for Mobile Push =&lt;br /&gt;
&lt;br /&gt;
== Setup of the Open-Xchange Node==&lt;br /&gt;
&lt;br /&gt;
The existing push framework of the Open-Xchange Middleware has been extended by the capability to spawn &amp;quot;permanent&amp;quot; listeners for incoming new message deliveries. Up to that point the life cycle for a listener was bound to at least one active session, which is associated with a client that is allowed to receive push notifications.&lt;br /&gt;
&lt;br /&gt;
With introduction of the previously mentioned capability, listeners can be started without the need for an existent session right on the start of an Open-Xchange Middleware node. In addition those permanent listeners are spread approximately even over capable cluster members as - dependent on the underlying implementation - a listener representation may open/hold resources (socket connections) in order to receive notifications about new message deliveries.&lt;br /&gt;
&lt;br /&gt;
To prepare a certain Open-Xchange Middleware node to spawn permanent push listeners the following properties need to be configured in file '/opt/open-xchange/etc/mail-push.properties':&lt;br /&gt;
&lt;br /&gt;
* com.openexchange.push.allowPermanentPush&amp;lt;br&amp;gt;This is the general switch to enable/disable support for permanent listeners on a node. Thus needs to be set to &amp;quot;true&amp;quot;&lt;br /&gt;
* com.openexchange.push.allowedClient&amp;lt;br&amp;gt;Specify the comma-separated list of clients which are allowed to receive notifications about new mails, “open-xchange-mailapp” should be added here if you plan to use it in combination with the new mobile-push feature.&lt;br /&gt;
* com.openexchange.push.credstorage.enabled&amp;lt;br&amp;gt;As permanent listeners are required to run without an active session, the credential storage can be used to store user credentials in installations that do not support a master authentication to the mail storage Hence, if the property &amp;quot;com.openexchange.mail.passwordSource&amp;quot; (mail.properties) is not set to &amp;quot;global&amp;quot; this property is required to be set to &amp;quot;true&amp;quot;&lt;br /&gt;
* com.openexchange.push.credstorage.passcrypt&amp;lt;br&amp;gt;This property is required if &amp;quot;com.openexchange.push.credstorage.enabled&amp;quot; is set to &amp;quot;true&amp;quot;. It does specify the passphrase to use to symmetrically encrypt the stored credentials. The passphrase is required to be equal on each cluster member.&lt;br /&gt;
* com.openexchange.push.credstorage.rdb&amp;lt;br&amp;gt;Once the credential storage is enabled, Open-Xchange offers two ways of storing the user-associated login/password combination. In cluster memory (default) or persisted to database. While the first way ensures that no user credentials are persisted nowhere in the Open-Xchange installation, it has the big disadvantage the stored credentials are gone once the last cluster members gets shut-down. Therefore there is also the possibility to store the credentials inside the database. Of course, no matter where the credentials are stored, they are encrypted using the value from com.openexchange.push.credstorage.passcrypt&amp;quot; property&lt;br /&gt;
&lt;br /&gt;
With setting the properties above the configuration on the Open-Xchange Middleware node is prepared to spawn permanent listeners.&lt;br /&gt;
&lt;br /&gt;
Now an appropriate push bundle/package needs to be installed that supports spawning permanent listeners. Currently Open-Xchange ships with three implementations:&lt;br /&gt;
* open-xchange-push-dovecot&lt;br /&gt;
* open-xchange-push-imapidle (Not recommended, therefore disabled for IMAP-IDLE by default. com.openexchange.push.imapidle.supportsPermanentListeners=false)&lt;br /&gt;
* open-xchange-push-mailnotify&lt;br /&gt;
&lt;br /&gt;
Putting all together the following execution flow is taken to decide whether permanent listeners are spawned or not:&lt;br /&gt;
&lt;br /&gt;
[[Image:ox_mail_push_configuration_2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
To check at any time what listeners are currently running, there is a new command-line tool &amp;quot;/opt/open-xchange/sbin/listpushusers&amp;quot; that outputs the user-id/context-id pair along-side with the information if the listener is of permanent nature or bound to an active session:&lt;br /&gt;
&lt;br /&gt;
[[Image:ox_mail_push_configuration_3.png|500px]]&lt;br /&gt;
&lt;br /&gt;
An exemplary out put might look like:&lt;br /&gt;
 ~# /opt/open-xchange/sbin/listpushusers&lt;br /&gt;
 user=249, context=1, permanent=true&lt;br /&gt;
 user=402, context=1, permanent=true&lt;br /&gt;
&lt;br /&gt;
== Setup of the Mobile Push ==&lt;br /&gt;
An appropriate registration for a capable client is required to create a permanent listener for a certain user. As of now, only the Open-Xchange Mail App performs such a registration request to mark the user to have a permanent listener using the newly introduced Mobile Push interfaces of the Open-Xchange Middleware.&lt;br /&gt;
The Mobile Push feature is installed by the following packages:&lt;br /&gt;
* open-xchange-mobile-push&lt;br /&gt;
* open-xchange-mobile-push-restricted (Only certificates and licenses)&lt;br /&gt;
&lt;br /&gt;
Simply said the main purpose of the Mobile Push functionality is to register an OSGi event handler converting an incoming OSGi event with topic &amp;quot;com/openexchange/push&amp;quot; to an appropriate native push reaching the mobile device using either&lt;br /&gt;
* APN or&lt;br /&gt;
* GCM&lt;br /&gt;
&lt;br /&gt;
=== Client subscription ===&lt;br /&gt;
To be able to do so, the client has to perform a subscribe request against the Mobile Push interface. Such a subscribe call mainly performs two things&lt;br /&gt;
&lt;br /&gt;
1. Storing the data into the database that is needed to initiate a APN/GCM push request&amp;lt;br&amp;gt;&lt;br /&gt;
2. Registering &amp;amp; starting a permanent listener in the push framework&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Handling of OSGi events ===&lt;br /&gt;
&lt;br /&gt;
Moreover, the OSGi events with topic &amp;quot;com/openexchange/push&amp;quot; are spread remotely throughout the Open-Xchange cluster. To avoid that each node yields a native push event for the mobile device, the OSGi event handler of the Mobile Push does only consider local events. This fact implies that each node that broadcasts OSGi events with topic &amp;quot;com/openexchange/push&amp;quot; is required to have the open-xchange-mobile-push packages installed; otherwise the OSGi event is not handled.&lt;br /&gt;
&lt;br /&gt;
=== Mobile Push configuration ===&lt;br /&gt;
The setup of the Mobile Push functionality includes proper configuration of the communication with the APN/GCM services, which is performed in file 'mobilepushevent.properties':&lt;br /&gt;
* com.openxchange.mobilepush.events.gcm.enabled&amp;lt;br&amp;gt;General switch to enable/disable communication with GCM service&lt;br /&gt;
* com.openxchange.mobilepush.events.gcm.key&amp;lt;br&amp;gt;Specifies the GCM key in order to authenticate against the GCM service and to forward push messages to that service. Required if &amp;quot;com.openxchange.mobilenotifier.events.gcm.enabled&amp;quot; is &amp;quot;true&amp;quot; and you want to use a different key than provided by open-xchange-mobile-push-restricted. Otherwise the key from open-xchange-mobile-push-restricted is used.&lt;br /&gt;
* com.openxchange.mobilepush.events.apn.ios.enabled&amp;lt;br&amp;gt;General switch to enable/disable communication with APN service&lt;br /&gt;
* com.openxchange.mobilepush.events.apn.ios.keystore&amp;lt;br&amp;gt;Specifies the path to the local keystore file (PKCS #12) containing the APNS certificate and keys for the iOS application. Required if &amp;quot;com.openxchange.mobilepush.events.apn.ios.enabled&amp;quot; is &amp;quot;true&amp;quot; and you want to use a different certificate than provided by open-xchange-mobile-push-restricted. Otherwise the certificate from open-xchange-mobile-push-restricted is used.&lt;br /&gt;
* com.openxchange.mobilepush.events.apn.ios.password&amp;lt;br&amp;gt;Specifies the password used when creating the referenced keystore containing the certificate of the iOS application. Note that blank or null passwords are in violation of the PKCS #12 specifications. Required if &amp;quot;com.openxchange.mobilepush.events.apn.ios.enabled&amp;quot; is &amp;quot;true&amp;quot; and you want to use a different certificate than provided by open-xchange-mobile-push-restricted.&lt;br /&gt;
&lt;br /&gt;
= Setup of the Dovecot Push =&lt;br /&gt;
&lt;br /&gt;
Dovecot Push plug-in requires METADATA support on Dovecot side. Please read this article for enabling METADATA support in the Dovecot configuration: http://wiki2.dovecot.org/ImapMetadata&lt;br /&gt;
&lt;br /&gt;
The following picture should demonstrate how the overall communication flow between Mail App, Open-Xchange Middleware, and the Dovecot Push plug-in takes place. That communication flow requires the &amp;quot;open-xchange-push-dovecot&amp;quot; package to be installed on the Open-Xchange Middleware nodes and the Dovecot &amp;quot;http-notify&amp;quot; plug-in.&lt;br /&gt;
&lt;br /&gt;
[[Image:ox_mail_push_configuration_4.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Once the Open-Xchange Mail App is installed on the user’s mobile device and it is allowed to show notifications about a new message delivery, the Mail App performs a subscription call to the Open-Xchange Middleware Servers using a fully authenticated session.&lt;br /&gt;
&lt;br /&gt;
When the &amp;quot;open-xchange-push-dovecot&amp;quot; package is installed, the previous subscribe call requests it to spawn a permanent listener. Such a listener simply tells the Dovecot server to notify about new message delivery events for the associated user by executing a special SETMETADATA command. Hence, it does not open or use any resources other than firing a single IMAP command to the Dovecot IMAP Server.&lt;br /&gt;
&lt;br /&gt;
Whenever a &amp;quot;new message delivery&amp;quot; event occurs, the Dovecot Server performs a HTTP callback against a configurable HTTP end-point of the Open-Xchange Middleware providing crucial information about the newly delivered message with a simple JSON body. That incoming HTTP callback is then turned into an appropriate OSGi event with topic &amp;quot;com/openexchange/push&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
That event is in turn handled by the Mobile Push event handler, which uses the event’s information to request an APN/GCM push to the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Configuration of Dovecot &amp;quot;http-notify&amp;quot; plug-in ==&lt;br /&gt;
&lt;br /&gt;
To use push notifications, both the &amp;quot;notify&amp;quot; and the &amp;quot;push_notification&amp;quot; plugins need to be activated. For LMTP delivery, this is required:&lt;br /&gt;
&lt;br /&gt;
 protocol lmtp {&lt;br /&gt;
   mail_plugins = $mail_plugins notify push_notification&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
If you also want push notifications to work for LDA-based delivery, you would need additional configuration:&lt;br /&gt;
&lt;br /&gt;
 protocol lda {&lt;br /&gt;
   mail_plugins = $mail_plugins notify push_notification&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The HTTP end-point (URL + authentication information) to use is configured in the Dovecot configuration file. The appropriate configuration options will contain the HTTP URL denoting the end-point to connect to as well as the authentication information for Basic Authentication as configured by properties &amp;quot;com.openexchange.rest.services.basic-auth.login&amp;quot; and &amp;quot;com.openexchange.rest.services.basic-auth.password&amp;quot;.&lt;br /&gt;
The URL to configure in Dovecot configuration follows this pattern.&lt;br /&gt;
 &amp;lt;http|https&amp;gt; + &amp;quot;://&amp;quot; + &amp;lt;login&amp;gt; + &amp;quot;:&amp;quot; + &amp;lt;password&amp;gt; + &amp;quot;@&amp;quot; + &amp;lt;host&amp;gt; + &amp;quot;:&amp;quot; + &amp;lt;port&amp;gt; + &amp;quot;/preliminary/http-notify/v1/notify&amp;quot;&lt;br /&gt;
&lt;br /&gt;
E.g.&lt;br /&gt;
 plugin {&lt;br /&gt;
  push_notification_driver = ox:url=http://login:pass@node1.domain.tld:8009/preliminary/http-notify/v1/notify&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is also possible to specify more than one HTTP end-point to connect to if a new message delivery occurs. Thus the configuration section mentioned above may be extended by additional &amp;quot;push_notification_driver&amp;quot; entries; e.g. push_notification_driver2, push_notification_driver3, etc.&lt;br /&gt;
&lt;br /&gt;
Please note that the path &amp;quot;/preliminary/http-notify/v1/notify&amp;quot; denotes the internal REST API of the Open-Xchange Middleware, which is not publicly accessible. The administrator can decide whether to add that path to the Apache configuration (see also [[AppSuite:Apache_Configuration]] and [[AppSuite:Grizzly]]) through a Location/ProxyPass directive:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Location /preliminary&amp;gt;&lt;br /&gt;
     Order Deny,Allow&lt;br /&gt;
     Deny from all&lt;br /&gt;
     # Only allow access from servers within the network. Do not expose this&lt;br /&gt;
     # location outside of your network. In case you use a load balancing service in front&lt;br /&gt;
     # of your Apache infrastructure you should make sure that access to /preliminary will&lt;br /&gt;
     # be blocked from the internet / outside clients. Examples:&lt;br /&gt;
     # Allow from 192.168.0.1&lt;br /&gt;
     # Allow from 192.168.1.1 192.168.1.2&lt;br /&gt;
     # Allow from 192.168.0.&lt;br /&gt;
     ProxyPass /preliminary balancer://oxcluster/preliminary&lt;br /&gt;
 &amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Integrated Branding/Customization Concept for Partners and Customers =&lt;br /&gt;
&lt;br /&gt;
With OX Mail it is also possible for customers and partners to add branding elements to the app. During the installation of the app a user is presented with a list of preconfigured providers. When a provider is selected the app is automatically setup and branded for that provider.&lt;br /&gt;
&lt;br /&gt;
For both design reasons, as well as app store restrictions, branding in this context means:&lt;br /&gt;
* The app design is “Super Flat”. This means there are not many elements that can be, or need to be, styled in order to match a particular brand.&lt;br /&gt;
* The app does not contain or use any logos of any sort. &lt;br /&gt;
* At install time the app uses a startup wizard in combination with a hosted configuration service. The wizard gives the end user the option to select a provider from a list. When this is done the app will retrieve the branding information from the configuration service and changes its theme accordingly. &lt;br /&gt;
&lt;br /&gt;
== Branding / Customization Process ==&lt;br /&gt;
&lt;br /&gt;
In order to participate you will need to provide specific information such as:&lt;br /&gt;
&lt;br /&gt;
* Confirmation that you are running OX App Suite 7.6.2 including the latest patch.&lt;br /&gt;
* A full URL where your OX App Suite service can be reached by a web client.&lt;br /&gt;
* Two test accounts on your OX App Suite service, where we can verify that the OX App Suite system works as expected.&lt;br /&gt;
* A “logo” and “name” of your service. This information will be used in the app itself.&lt;br /&gt;
* Optional: A preferred color (CI color) that Open-Xchange will use for the app if a user chooses their service from the provider list.&lt;br /&gt;
&lt;br /&gt;
=== Steps ===&lt;br /&gt;
&lt;br /&gt;
# Please download the Questionnaire from [http://knowledgebase.open-xchange.com/fileadmin/user_upload/open-xchange/document/misc/Questionnaire_OX_Mail_Branding.pdf Open-Xchange Download Server]&lt;br /&gt;
# Please fill out the Questionnaire and send it to your Open-Xchange account manager.&lt;br /&gt;
# Open-Xchange will check the data. If all information are available, Open-Xchange will add your personal brand to the live OX Mail app. Please Note: The exact date when your brand becomes available depends on the approval process and could take 5 to 10 days. Open-Xchange won't communicate an exact date. Please check by your self.&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Mail&amp;diff=20309</id>
		<title>AppSuite:OX Mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Mail&amp;diff=20309"/>
		<updated>2015-09-02T09:00:13Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OX Mail (In Progress)=&lt;br /&gt;
&lt;br /&gt;
OX Mail is a native mobile phone app built specifically for smartphone users who already have a valid OX App Suite account. The app is designed to let users access their OX App Suite email environment directly from a smartphone native client.&lt;br /&gt;
&lt;br /&gt;
OX Mail enables users to synchronize mails between a variety of smartphone devices and OX App Suite. OX Mail consists of two elements: The OX Mail component that is built into OX App Suite and the native OX Mail app.&lt;br /&gt;
&lt;br /&gt;
The OX Mail app has been designed specifically for ease-of-use and is available for both iOS and Android.&lt;br /&gt;
&lt;br /&gt;
'''Please Note: The OX Mail app will be available in September. With this app Open-Xchange has also created a new branding concept for the customers and partners. More information can be found in the chapter [http://oxpedia.org/wiki/index.php?title=AppSuite:OX_Mail#Integrated_Branding.2FCustomization_Concept_for_Partners_and_Customers Branding/Customization Concept for Partners and Customers]'''&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
=== Server-side Installation and Configuration ===&lt;br /&gt;
&lt;br /&gt;
With OX Mail, OX App Suite supports server based PUSH functionality. One of the main requirements for push functionality is the use of the Dovecot mail backend. In addition the following conditions should be met: &lt;br /&gt;
&lt;br /&gt;
* Dovecot Customers with less than 100,000 users: Customers can use the special PUSH plugin without any additional costs. The plugin will be provided via the Open-Xchange software repository for customers with a valid Open-Xchange App Suite license.&lt;br /&gt;
* Dovecot Pro Customers with more than a 100,000 users: PUSH plugin use is covered under this license without incurring additional costs.&lt;br /&gt;
* If you are not using the Dovecot Push Plugin your mail backend has to actively notify the Open-Xchange middleware servers of new emails. This might require the creation of an additional OX middleware plugin to receive those notifications. &lt;br /&gt;
&lt;br /&gt;
For further details please contact your assigned pre-sales / prof. services contact.&lt;br /&gt;
&lt;br /&gt;
You will finde the client requirements under [[AppSuite:OX_System_Requirements#OX_Mail_for_Clients|OX Mail requirements]]&lt;br /&gt;
&lt;br /&gt;
== Key Benefits ==&lt;br /&gt;
&lt;br /&gt;
* Supports email PUSH notification – emails show up immediately on the device&lt;br /&gt;
* Quick and easy to set up with the start-up wizard&lt;br /&gt;
* Intuitive, simple to use, design &lt;br /&gt;
* Familiar smartphone experience&lt;br /&gt;
* Available for both iOS and Android – download app from App Store for free&lt;br /&gt;
* Low support requirements&lt;br /&gt;
&lt;br /&gt;
A more detailed overview of OX Mail, can be found at: http://software.open-xchange.com/products/mail/doc/OX_Mail_Product_Guide.pdf&lt;br /&gt;
&lt;br /&gt;
== Pricing &amp;amp; Availability ==&lt;br /&gt;
&lt;br /&gt;
OX Mail will be available in September 2015.&lt;br /&gt;
&lt;br /&gt;
This email app is available for both iOS and Android and can be downloaded for free from the corresponding App Stores. Availability will be confirmed by Open-Xchange via the usual communication channels. &lt;br /&gt;
&lt;br /&gt;
'''Please note:''' The exact date when the clients become available depends on the approval process of the respective app stores. &lt;br /&gt;
&lt;br /&gt;
The Open-Xchange Middleware components can be downloaded from the respective download repositories as normal.&lt;br /&gt;
&lt;br /&gt;
Please contact your Open-Xchange account manager for further information and pricing details.&lt;br /&gt;
&lt;br /&gt;
= Enabling OX Mail for Users =&lt;br /&gt;
&lt;br /&gt;
OX Mail is enabled for all users that have the capability ''com.openexchange.capability.mobile_mail_app'' &lt;br /&gt;
&lt;br /&gt;
More details about capabilities can be found at [[AppSuite:Capabilities]]. Furthermore, this capability can be defined in a more granular way using the Config Cascade as described at [[ConfigCascade]].&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: &lt;br /&gt;
By default, the capability for the OX Mail app is set to false for all users. It can be changed by editing the corresponding capability in the &amp;quot;permissions.properties&amp;quot; config file, or if you need a more fine grained selection of enabled users, you can use the well known provisioning tools / config cascade.&lt;br /&gt;
&lt;br /&gt;
= Installation of the Clients =&lt;br /&gt;
&lt;br /&gt;
The OX Mail will be available via the different App Stores for iOS and Android by September 2015&lt;br /&gt;
&lt;br /&gt;
= OX Mail Server-side Installation and Configuration =&lt;br /&gt;
&lt;br /&gt;
This chapter describes how the backend components of OX Mail are installed and configured on the server.&lt;br /&gt;
&lt;br /&gt;
== Available packages ==&lt;br /&gt;
&lt;br /&gt;
OX Mail is available with the following backend packages:&lt;br /&gt;
&lt;br /&gt;
* ''open-xchange-mail'' - The main server components for OX Mail&lt;br /&gt;
* ''open-xchange-mobile-push-restricted'' - Restricted components, including prerequisites for cloud-based push notifications&lt;br /&gt;
&lt;br /&gt;
Installation on the server varies depending on the underlying distribution, details are available in the following chapters.&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 6.0 (Squeeze) ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 (Wheezy) ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianWheezy|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
 $ zypper install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Setup Description for Mobile Push =&lt;br /&gt;
&lt;br /&gt;
== Setup of the Open-Xchange Node==&lt;br /&gt;
&lt;br /&gt;
The existing push framework of the Open-Xchange Middleware has been extended by the capability to spawn &amp;quot;permanent&amp;quot; listeners for incoming new message deliveries. Up to that point the life cycle for a listener was bound to at least one active session, which is associated with a client that is allowed to receive push notifications.&lt;br /&gt;
&lt;br /&gt;
With introduction of the previously mentioned capability, listeners can be started without the need for an existent session right on the start of an Open-Xchange Middleware node. In addition those permanent listeners are spread approximately even over capable cluster members as - dependent on the underlying implementation - a listener representation may open/hold resources (socket connections) in order to receive notifications about new message deliveries.&lt;br /&gt;
&lt;br /&gt;
To prepare a certain Open-Xchange Middleware node to spawn permanent push listeners the following properties need to be configured in file '/opt/open-xchange/etc/mail-push.properties':&lt;br /&gt;
&lt;br /&gt;
* com.openexchange.push.allowPermanentPush&amp;lt;br&amp;gt;This is the general switch to enable/disable support for permanent listeners on a node. Thus needs to be set to &amp;quot;true&amp;quot;&lt;br /&gt;
* com.openexchange.push.allowedClient&amp;lt;br&amp;gt;Specify the comma-separated list of clients which are allowed to receive notifications about new mails, “open-xchange-mailapp” should be added here if you plan to use it in combination with the new mobile-push feature.&lt;br /&gt;
* com.openexchange.push.credstorage.enabled&amp;lt;br&amp;gt;As permanent listeners are required to run without an active session, the credential storage can be used to store user credentials in installations that do not support a master authentication to the mail storage Hence, if the property &amp;quot;com.openexchange.mail.passwordSource&amp;quot; (mail.properties) is not set to &amp;quot;global&amp;quot; this property is required to be set to &amp;quot;true&amp;quot;&lt;br /&gt;
* com.openexchange.push.credstorage.passcrypt&amp;lt;br&amp;gt;This property is required if &amp;quot;com.openexchange.push.credstorage.enabled&amp;quot; is set to &amp;quot;true&amp;quot;. It does specify the passphrase to use to symmetrically encrypt the stored credentials. The passphrase is required to be equal on each cluster member.&lt;br /&gt;
* com.openexchange.push.credstorage.rdb&amp;lt;br&amp;gt;Once the credential storage is enabled, Open-Xchange offers two ways of storing the user-associated login/password combination. In cluster memory (default) or persisted to database. While the first way ensures that no user credentials are persisted nowhere in the Open-Xchange installation, it has the big disadvantage the stored credentials are gone once the last cluster members gets shut-down. Therefore there is also the possibility to store the credentials inside the database. Of course, no matter where the credentials are stored, they are encrypted using the value from com.openexchange.push.credstorage.passcrypt&amp;quot; property&lt;br /&gt;
&lt;br /&gt;
With setting the properties above the configuration on the Open-Xchange Middleware node is prepared to spawn permanent listeners.&lt;br /&gt;
&lt;br /&gt;
Now an appropriate push bundle/package needs to be installed that supports spawning permanent listeners. Currently Open-Xchange ships with three implementations:&lt;br /&gt;
* open-xchange-push-dovecot&lt;br /&gt;
* open-xchange-push-imapidle (Not recommended, therefore disabled for IMAP-IDLE by default. com.openexchange.push.imapidle.supportsPermanentListeners=false)&lt;br /&gt;
* open-xchange-push-mailnotify&lt;br /&gt;
&lt;br /&gt;
Putting all together the following execution flow is taken to decide whether permanent listeners are spawned or not:&lt;br /&gt;
&lt;br /&gt;
[[Image:ox_mail_push_configuration_2.png|500px]]&lt;br /&gt;
&lt;br /&gt;
To check at any time what listeners are currently running, there is a new command-line tool &amp;quot;/opt/open-xchange/sbin/listpushusers&amp;quot; that outputs the user-id/context-id pair along-side with the information if the listener is of permanent nature or bound to an active session:&lt;br /&gt;
&lt;br /&gt;
[[Image:ox_mail_push_configuration_3.png|500px]]&lt;br /&gt;
&lt;br /&gt;
An exemplary out put might look like:&lt;br /&gt;
 ~# /opt/open-xchange/sbin/listpushusers&lt;br /&gt;
 user=249, context=1, permanent=true&lt;br /&gt;
 user=402, context=1, permanent=true&lt;br /&gt;
&lt;br /&gt;
== Setup of the Mobile Push ==&lt;br /&gt;
An appropriate registration for a capable client is required to create a permanent listener for a certain user. As of now, only the Open-Xchange Mail App performs such a registration request to mark the user to have a permanent listener using the newly introduced Mobile Push interfaces of the Open-Xchange Middleware.&lt;br /&gt;
The Mobile Push feature is installed by the following packages:&lt;br /&gt;
* open-xchange-mobile-push&lt;br /&gt;
* open-xchange-mobile-push-restricted (Only certificates and licenses)&lt;br /&gt;
&lt;br /&gt;
Simply said the main purpose of the Mobile Push functionality is to register an OSGi event handler converting an incoming OSGi event with topic &amp;quot;com/openexchange/push&amp;quot; to an appropriate native push reaching the mobile device using either&lt;br /&gt;
* APN or&lt;br /&gt;
* GCM&lt;br /&gt;
&lt;br /&gt;
=== Client subscription ===&lt;br /&gt;
To be able to do so, the client has to perform a subscribe request against the Mobile Push interface. Such a subscribe call mainly performs two things&lt;br /&gt;
&lt;br /&gt;
1. Storing the data into the database that is needed to initiate a APN/GCM push request&amp;lt;br&amp;gt;&lt;br /&gt;
2. Registering &amp;amp; starting a permanent listener in the push framework&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Handling of OSGi events ===&lt;br /&gt;
&lt;br /&gt;
Moreover, the OSGi events with topic &amp;quot;com/openexchange/push&amp;quot; are spread remotely throughout the Open-Xchange cluster. To avoid that each node yields a native push event for the mobile device, the OSGi event handler of the Mobile Push does only consider local events. This fact implies that each node that broadcasts OSGi events with topic &amp;quot;com/openexchange/push&amp;quot; is required to have the open-xchange-mobile-push packages installed; otherwise the OSGi event is not handled.&lt;br /&gt;
&lt;br /&gt;
=== Mobile Push configuration ===&lt;br /&gt;
The setup of the Mobile Push functionality includes proper configuration of the communication with the APN/GCM services, which is performed in file 'mobilepushevent.properties':&lt;br /&gt;
* com.openxchange.mobilepush.events.gcm.enabled&amp;lt;br&amp;gt;General switch to enable/disable communication with GCM service&lt;br /&gt;
* com.openxchange.mobilepush.events.gcm.key&amp;lt;br&amp;gt;Specifies the GCM key in order to authenticate against the GCM service and to forward push messages to that service. Required if &amp;quot;com.openxchange.mobilenotifier.events.gcm.enabled&amp;quot; is &amp;quot;true&amp;quot; and you want to use a different key than provided by open-xchange-mobile-push-restricted. Otherwise the key from open-xchange-mobile-push-restricted is used.&lt;br /&gt;
* com.openxchange.mobilepush.events.apn.ios.enabled&amp;lt;br&amp;gt;General switch to enable/disable communication with APN service&lt;br /&gt;
* com.openxchange.mobilepush.events.apn.ios.keystore&amp;lt;br&amp;gt;Specifies the path to the local keystore file (PKCS #12) containing the APNS certificate and keys for the iOS application. Required if &amp;quot;com.openxchange.mobilepush.events.apn.ios.enabled&amp;quot; is &amp;quot;true&amp;quot; and you want to use a different certificate than provided by open-xchange-mobile-push-restricted. Otherwise the certificate from open-xchange-mobile-push-restricted is used.&lt;br /&gt;
* com.openxchange.mobilepush.events.apn.ios.password&amp;lt;br&amp;gt;Specifies the password used when creating the referenced keystore containing the certificate of the iOS application. Note that blank or null passwords are in violation of the PKCS #12 specifications. Required if &amp;quot;com.openxchange.mobilepush.events.apn.ios.enabled&amp;quot; is &amp;quot;true&amp;quot; and you want to use a different certificate than provided by open-xchange-mobile-push-restricted.&lt;br /&gt;
&lt;br /&gt;
= Setup of the Dovecot Push =&lt;br /&gt;
&lt;br /&gt;
Dovecot Push plug-in requires METADATA support on Dovecot side. Please read this article for enabling METADATA support in the Dovecot configuration: http://wiki2.dovecot.org/ImapMetadata&lt;br /&gt;
&lt;br /&gt;
The following picture should demonstrate how the overall communication flow between Mail App, Open-Xchange Middleware, and the Dovecot Push plug-in takes place. That communication flow requires the &amp;quot;open-xchange-push-dovecot&amp;quot; package to be installed on the Open-Xchange Middleware nodes and the Dovecot &amp;quot;http-notify&amp;quot; plug-in.&lt;br /&gt;
&lt;br /&gt;
[[Image:ox_mail_push_configuration_4.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Once the Open-Xchange Mail App is installed on the user’s mobile device and it is allowed to show notifications about a new message delivery, the Mail App performs a subscription call to the Open-Xchange Middleware Servers using a fully authenticated session.&lt;br /&gt;
&lt;br /&gt;
When the &amp;quot;open-xchange-push-dovecot&amp;quot; package is installed, the previous subscribe call requests it to spawn a permanent listener. Such a listener simply tells the Dovecot server to notify about new message delivery events for the associated user by executing a special SETMETADATA command. Hence, it does not open or use any resources other than firing a single IMAP command to the Dovecot IMAP Server.&lt;br /&gt;
&lt;br /&gt;
Whenever a &amp;quot;new message delivery&amp;quot; event occurs, the Dovecot Server performs a HTTP callback against a configurable HTTP end-point of the Open-Xchange Middleware providing crucial information about the newly delivered message with a simple JSON body. That incoming HTTP callback is then turned into an appropriate OSGi event with topic &amp;quot;com/openexchange/push&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
That event is in turn handled by the Mobile Push event handler, which uses the event’s information to request an APN/GCM push to the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Configuration of Dovecot &amp;quot;http-notify&amp;quot; plug-in ==&lt;br /&gt;
&lt;br /&gt;
To use push notifications, both the &amp;quot;notify&amp;quot; and the &amp;quot;push_notification&amp;quot; plugins need to be activated. For LMTP delivery, this is required:&lt;br /&gt;
&lt;br /&gt;
 protocol lmtp {&lt;br /&gt;
   mail_plugins = $mail_plugins notify push_notification&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
If you also want push notifications to work for LDA-based delivery, you would need additional configuration:&lt;br /&gt;
&lt;br /&gt;
 protocol lda {&lt;br /&gt;
   mail_plugins = $mail_plugins notify push_notification&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The HTTP end-point (URL + authentication information) to use is configured in the Dovecot configuration file. The appropriate configuration options will contain the HTTP URL denoting the end-point to connect to as well as the authentication information for Basic Authentication as configured by properties &amp;quot;com.openexchange.rest.services.basic-auth.login&amp;quot; and &amp;quot;com.openexchange.rest.services.basic-auth.password&amp;quot;.&lt;br /&gt;
The URL to configure in Dovecot configuration follows this pattern.&lt;br /&gt;
 &amp;lt;http|https&amp;gt; + &amp;quot;://&amp;quot; + &amp;lt;login&amp;gt; + &amp;quot;:&amp;quot; + &amp;lt;password&amp;gt; + &amp;quot;@&amp;quot; + &amp;lt;host&amp;gt; + &amp;quot;:&amp;quot; + &amp;lt;port&amp;gt; + &amp;quot;/preliminary/http-notify/v1/notify&amp;quot;&lt;br /&gt;
&lt;br /&gt;
E.g.&lt;br /&gt;
 plugin {&lt;br /&gt;
  push_notification_driver = ox:url=http://login:pass@node1.domain.tld:8009/preliminary/http-notify/v1/notify&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Furthermore, it is also possible to specify more than one HTTP end-point to connect to if a new message delivery occurs. Thus the configuration section mentioned above may be extended by additional &amp;quot;push_notification_driver&amp;quot; entries; e.g. push_notification_driver2, push_notification_driver3, etc.&lt;br /&gt;
&lt;br /&gt;
Please note that the path &amp;quot;/preliminary/http-notify/v1/notify&amp;quot; denotes the internal REST API of the Open-Xchange Middleware, which is not publicly accessible. The administrator can decide whether to add that path to the Apache configuration (see also [[AppSuite:Apache_Configuration]] and [[AppSuite:Grizzly]]) through a Location/ProxyPass directive:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Location /preliminary&amp;gt;&lt;br /&gt;
     Order Deny,Allow&lt;br /&gt;
     Deny from all&lt;br /&gt;
     # Only allow access from servers within the network. Do not expose this&lt;br /&gt;
     # location outside of your network. In case you use a load balancing service in front&lt;br /&gt;
     # of your Apache infrastructure you should make sure that access to /preliminary will&lt;br /&gt;
     # be blocked from the internet / outside clients. Examples:&lt;br /&gt;
     # Allow from 192.168.0.1&lt;br /&gt;
     # Allow from 192.168.1.1 192.168.1.2&lt;br /&gt;
     # Allow from 192.168.0.&lt;br /&gt;
     ProxyPass /preliminary balancer://oxcluster/preliminary&lt;br /&gt;
 &amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Integrated Branding/Customization Concept for Partners and Customers =&lt;br /&gt;
&lt;br /&gt;
With OX Mail it is also possible for customers and partners to add branding elements to the app. During the installation of the app a user is presented with a list of preconfigured providers. When a provider is selected the app is automatically setup and branded for that provider.&lt;br /&gt;
&lt;br /&gt;
For both design reasons, as well as app store restrictions, branding in this context means:&lt;br /&gt;
* The app design is “Super Flat”. This means there are not many elements that can be, or need to be, styled in order to match a particular brand.&lt;br /&gt;
* The app does not contain or use any logos of any sort. &lt;br /&gt;
* At install time the app uses a startup wizard in combination with a hosted configuration service. The wizard gives the end user the option to select a provider from a list. When this is done the app will retrieve the branding information from the configuration service and changes its theme accordingly. &lt;br /&gt;
&lt;br /&gt;
== Branding / Customization Process ==&lt;br /&gt;
&lt;br /&gt;
In order to participate you will need to provide specific information such as:&lt;br /&gt;
&lt;br /&gt;
* Confirmation that you are running OX App Suite 7.6.2 including the latest patch.&lt;br /&gt;
* A full URL where your OX App Suite service can be reached by a web client.&lt;br /&gt;
* Two test accounts on your OX App Suite service, where we can verify that the OX App Suite system works as expected.&lt;br /&gt;
* A “logo” and “name” of your service. This information will be used in the app itself.&lt;br /&gt;
* Optional: A preferred color (CI color) that Open-Xchange will use for the app if a user chooses their service from the provider list.&lt;br /&gt;
&lt;br /&gt;
=== Steps ===&lt;br /&gt;
&lt;br /&gt;
# Please download the Questionnaire from [http://knowledgebase.open-xchange.com/fileadmin/user_upload/open-xchange/document/misc/Questionnaire_OX_Mail_Branding.pdf Open-Xchange Download Server]&lt;br /&gt;
# Please fill out the Questionnaire and send it to your Open-Xchange account manager.&lt;br /&gt;
# Open-Xchange will check the data. If all information are available, Open-Xchange will add your personal brand to the live OX Mail app. Please Note: The exact date when your brand becomes available depends on the approval process and could take 5 to 10 days. Open-Xchange won't communicate an exact date. Please check by your self.&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=User:Sonja.krause-harder&amp;diff=20308</id>
		<title>User:Sonja.krause-harder</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=User:Sonja.krause-harder&amp;diff=20308"/>
		<updated>2015-09-02T08:57:51Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 6.0 (Squeeze) ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 (Wheezy) ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianWheezy|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
 $ zypper install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=User:Sonja.krause-harder&amp;diff=20307</id>
		<title>User:Sonja.krause-harder</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=User:Sonja.krause-harder&amp;diff=20307"/>
		<updated>2015-09-02T08:55:40Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
 $ yum install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 6.0 (Squeeze) ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 (Wheezy) ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianWheezy|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail|mailapp}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
 $ zypper install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=User:Sonja.krause-harder&amp;diff=20306</id>
		<title>User:Sonja.krause-harder</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=User:Sonja.krause-harder&amp;diff=20306"/>
		<updated>2015-09-02T08:50:20Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* Redhat Enterprise Linux 6 or CentOS 6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mailapp}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/dovecot/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|dovecot-push}}&lt;br /&gt;
&lt;br /&gt;
 $ yum install open-xchange-push-dovecot open-xchange-mobile-push-certificates open-xchange-mailapp-backend open-xchange-mobile-push-plugin&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=User:Sonja.krause-harder&amp;diff=20305</id>
		<title>User:Sonja.krause-harder</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=User:Sonja.krause-harder&amp;diff=20305"/>
		<updated>2015-09-02T08:35:40Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|documentconverter|readerengine}}&lt;br /&gt;
&lt;br /&gt;
 $ yum install readerengine open-xchange-documentconverter open-xchange-documents-ui-viewer open-xchange-documents-ui-static&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=User:Sonja.krause-harder&amp;diff=20304</id>
		<title>User:Sonja.krause-harder</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=User:Sonja.krause-harder&amp;diff=20304"/>
		<updated>2015-09-02T08:33:37Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
{{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/mail/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|mail}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|documentconverter|readerengine}}&lt;br /&gt;
&lt;br /&gt;
 $ yum install readerengine open-xchange-documentconverter open-xchange-documents-ui-viewer open-xchange-documents-ui-static&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=User:Sonja.krause-harder&amp;diff=20303</id>
		<title>User:Sonja.krause-harder</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=User:Sonja.krause-harder&amp;diff=20303"/>
		<updated>2015-09-02T08:32:37Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
Add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|backend/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=[CUSTOMERID:PASSWORD]|documentconverter|readerengine}}&lt;br /&gt;
&lt;br /&gt;
 $ yum install readerengine open-xchange-documentconverter open-xchange-documents-ui-viewer open-xchange-documents-ui-static&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19360</id>
		<title>Jolokia LoginCounter HOWTO</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19360"/>
		<updated>2015-04-20T10:40:20Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* Access specific information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HOWTO - Access Login Counter data with Jolokia = &lt;br /&gt;
&lt;br /&gt;
This article describes how to access information exposed through JMX by Open-Xchange with the Jolokia JMX-to-HTTP bridge, using &amp;quot;Login Counter&amp;quot; as an example.&lt;br /&gt;
&lt;br /&gt;
== Install Open-Xchange ==&lt;br /&gt;
&lt;br /&gt;
See http://oxpedia.org/wiki/index.php?title=AppSuite:Main_Page_AppSuite#quickinstall if you don't have Open-Xchange installed yet. Jolokia is part of the base product, no extra packages are needed.&lt;br /&gt;
&lt;br /&gt;
== Enable Jolokia == &lt;br /&gt;
&lt;br /&gt;
(See also https://oxpedia.org/wiki/index.php?title=Jolokia)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, enable Jolokia by setting the following properties:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.start = true&lt;br /&gt;
  com.openexchange.jolokia.user = youruser&lt;br /&gt;
  com.openexchange.jolokia.password = yourpassword&lt;br /&gt;
&lt;br /&gt;
Jolokia will not be enabled when no user/password is set.&lt;br /&gt;
&lt;br /&gt;
You can optionally adjust this setting:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.servlet.name = /monitoring/jolokia&lt;br /&gt;
&lt;br /&gt;
If you do, you need to adjust the examples below as well.&lt;br /&gt;
&lt;br /&gt;
== Allow access from other hosts ==&lt;br /&gt;
&lt;br /&gt;
This is an optional step, if you want to access the Jolokia interface from other hosts than localhost. This may be very helpful during the development phase of a project. Please be aware that this interface exposes lots of &amp;quot;interesting&amp;quot; data, so if you remove the restriction to localhost, you need to ensure by other means (network setup, firewalls, web server configuration, ...) that no unauthorised access is possible on production systems.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, set:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.restrict.to.localhost = false&lt;br /&gt;
&lt;br /&gt;
In your web server configuration, enable access to the jolokia servlet. For Apache this is possible by adding a ProxyPass directive for each OX host in the cluster:&lt;br /&gt;
&lt;br /&gt;
  ProxyPass /monitoring/ox1/jolokia http://ox1-ip:8009/monitoring/jolokia&lt;br /&gt;
  ProxyPass /monitoring/ox2/jolokia http://ox2-ip:8009/monitoring/jolokia&lt;br /&gt;
  ...&lt;br /&gt;
	&lt;br /&gt;
On a default installation as described by our installation guides, this would be in &amp;lt;code&amp;gt;proxy_http.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reload your apache config and restart open-xchange for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
== Access the Jolokia interface ==&lt;br /&gt;
&lt;br /&gt;
On localhost, call:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/list &amp;gt; ox.json&lt;br /&gt;
	&lt;br /&gt;
If you enabled access from other hosts, you can also use a standard web browser. Open e.g.&lt;br /&gt;
&lt;br /&gt;
  http://&amp;lt;yourserver&amp;gt;/monitoring/ox1/jolokia/list&lt;br /&gt;
	&lt;br /&gt;
You'll be asked for user name and password through a standard HTTP auth window.&lt;br /&gt;
&lt;br /&gt;
== Access specific information ==&lt;br /&gt;
&lt;br /&gt;
The ox.json file you received in the last step gives you complete documentation what data is available through this interface.&lt;br /&gt;
&lt;br /&gt;
As an example, the &amp;quot;Login Counter&amp;quot; interface (which is also used by the [http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter logincounter command line tool]) is described like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;com.openexchange.reporting&amp;quot;: {&lt;br /&gt;
	&amp;quot;name=Login Counter&amp;quot;: {&lt;br /&gt;
		&amp;quot;desc&amp;quot;: &amp;quot;Information on the management interface of the MBean&amp;quot;,&lt;br /&gt;
		&amp;quot;op&amp;quot;: {&lt;br /&gt;
			&amp;quot;getLastLoginTimeStamp&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.List&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;getNumberOfLogins&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.Map&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;boolean&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p4&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See http://www.jolokia.org/reference/html/protocol.html for detailed documentation how to use the Jolokia interface, especially http://www.jolokia.org/reference/html/protocol.html#serialization for the list of datatypes that can be passed as arguments and received in return values.&lt;br /&gt;
&lt;br /&gt;
To know what the parameters &amp;lt;code&amp;gt;p1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p2&amp;lt;/code&amp;gt;, etc. mean, you need to look at the source code. (See http://oxpedia.org/wiki/index.php?title=SourceCodeAccess for information how to download it.)&lt;br /&gt;
&lt;br /&gt;
In the example above, to get the number of logins in a specific timeframe and with a specific client, we need to call the method &amp;lt;code&amp;gt;getNumberOfLogins&amp;lt;/code&amp;gt; with the parameters &amp;lt;code&amp;gt;startDate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;endDate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;aggregate&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;clientstring&amp;lt;/code&amp;gt;. They correspond to the command line parameters to the &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; command line tool as described on:&lt;br /&gt;
&lt;br /&gt;
  http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter&lt;br /&gt;
&lt;br /&gt;
In curl this call would look like this:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;br /&gt;
	&lt;br /&gt;
If you have enabled access to the Jolokia interface from other hosts, the same information can be viewed in any web browser:&lt;br /&gt;
  http://&amp;lt;yourserver&amp;gt;/monitoring/ox1/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:Server]]&lt;br /&gt;
[[Category:Administrator]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19359</id>
		<title>Jolokia LoginCounter HOWTO</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19359"/>
		<updated>2015-04-20T10:35:50Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* Access specific information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HOWTO - Access Login Counter data with Jolokia = &lt;br /&gt;
&lt;br /&gt;
This article describes how to access information exposed through JMX by Open-Xchange with the Jolokia JMX-to-HTTP bridge, using &amp;quot;Login Counter&amp;quot; as an example.&lt;br /&gt;
&lt;br /&gt;
== Install Open-Xchange ==&lt;br /&gt;
&lt;br /&gt;
See http://oxpedia.org/wiki/index.php?title=AppSuite:Main_Page_AppSuite#quickinstall if you don't have Open-Xchange installed yet. Jolokia is part of the base product, no extra packages are needed.&lt;br /&gt;
&lt;br /&gt;
== Enable Jolokia == &lt;br /&gt;
&lt;br /&gt;
(See also https://oxpedia.org/wiki/index.php?title=Jolokia)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, enable Jolokia by setting the following properties:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.start = true&lt;br /&gt;
  com.openexchange.jolokia.user = youruser&lt;br /&gt;
  com.openexchange.jolokia.password = yourpassword&lt;br /&gt;
&lt;br /&gt;
Jolokia will not be enabled when no user/password is set.&lt;br /&gt;
&lt;br /&gt;
You can optionally adjust this setting:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.servlet.name = /monitoring/jolokia&lt;br /&gt;
&lt;br /&gt;
If you do, you need to adjust the examples below as well.&lt;br /&gt;
&lt;br /&gt;
== Allow access from other hosts ==&lt;br /&gt;
&lt;br /&gt;
This is an optional step, if you want to access the Jolokia interface from other hosts than localhost. This may be very helpful during the development phase of a project. Please be aware that this interface exposes lots of &amp;quot;interesting&amp;quot; data, so if you remove the restriction to localhost, you need to ensure by other means (network setup, firewalls, web server configuration, ...) that no unauthorised access is possible on production systems.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, set:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.restrict.to.localhost = false&lt;br /&gt;
&lt;br /&gt;
In your web server configuration, enable access to the jolokia servlet. For Apache this is possible by adding a ProxyPass directive for each OX host in the cluster:&lt;br /&gt;
&lt;br /&gt;
  ProxyPass /monitoring/ox1/jolokia http://ox1-ip:8009/monitoring/jolokia&lt;br /&gt;
  ProxyPass /monitoring/ox2/jolokia http://ox2-ip:8009/monitoring/jolokia&lt;br /&gt;
  ...&lt;br /&gt;
	&lt;br /&gt;
On a default installation as described by our installation guides, this would be in &amp;lt;code&amp;gt;proxy_http.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reload your apache config and restart open-xchange for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
== Access the Jolokia interface ==&lt;br /&gt;
&lt;br /&gt;
On localhost, call:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/list &amp;gt; ox.json&lt;br /&gt;
	&lt;br /&gt;
If you enabled access from other hosts, you can also use a standard web browser. Open e.g.&lt;br /&gt;
&lt;br /&gt;
  http://&amp;lt;yourserver&amp;gt;/monitoring/ox1/jolokia/list&lt;br /&gt;
	&lt;br /&gt;
You'll be asked for user name and password through a standard HTTP auth window.&lt;br /&gt;
&lt;br /&gt;
== Access specific information ==&lt;br /&gt;
&lt;br /&gt;
The ox.json file you received in the last step gives you complete documentation what data is available through this interface.&lt;br /&gt;
&lt;br /&gt;
As an example, the &amp;quot;Login Counter&amp;quot; interface (which is also used by the [http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter logincounter command line tool]) is described like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;com.openexchange.reporting&amp;quot;: {&lt;br /&gt;
	&amp;quot;name=Login Counter&amp;quot;: {&lt;br /&gt;
		&amp;quot;desc&amp;quot;: &amp;quot;Information on the management interface of the MBean&amp;quot;,&lt;br /&gt;
		&amp;quot;op&amp;quot;: {&lt;br /&gt;
			&amp;quot;getLastLoginTimeStamp&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.List&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;getNumberOfLogins&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.Map&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;boolean&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p4&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See http://www.jolokia.org/reference/html/protocol.html for detailed documentation how to use the Jolokia interface, especially http://www.jolokia.org/reference/html/protocol.html#serialization for the list of datatypes that can be passed as arguments and received in return values.&lt;br /&gt;
&lt;br /&gt;
To know what the parameters &amp;lt;code&amp;gt;p1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p2&amp;lt;/code&amp;gt;, etc. mean, you need to look at the source code. (See http://oxpedia.org/wiki/index.php?title=SourceCodeAccess for information how to download it.)&lt;br /&gt;
&lt;br /&gt;
In the example above, to get the number of logins in a specific timeframe and with a specific client, we need to call the method getNumberOfLogins with the parameters startDate, endDate, aggregate and clientstring. They correspond to the command line parameters to the logincounter tool as described on:&lt;br /&gt;
&lt;br /&gt;
  http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter&lt;br /&gt;
&lt;br /&gt;
In curl this call would look like this:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;br /&gt;
	&lt;br /&gt;
If you have enabled access to the Jolokia interface from other hosts, the same information can be viewed in any web browser:&lt;br /&gt;
  http://&amp;lt;yourserver&amp;gt;/monitoring/ox1/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:Server]]&lt;br /&gt;
[[Category:Administrator]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19358</id>
		<title>Jolokia LoginCounter HOWTO</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19358"/>
		<updated>2015-04-20T10:28:56Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HOWTO - Access Login Counter data with Jolokia = &lt;br /&gt;
&lt;br /&gt;
This article describes how to access information exposed through JMX by Open-Xchange with the Jolokia JMX-to-HTTP bridge, using &amp;quot;Login Counter&amp;quot; as an example.&lt;br /&gt;
&lt;br /&gt;
== Install Open-Xchange ==&lt;br /&gt;
&lt;br /&gt;
See http://oxpedia.org/wiki/index.php?title=AppSuite:Main_Page_AppSuite#quickinstall if you don't have Open-Xchange installed yet. Jolokia is part of the base product, no extra packages are needed.&lt;br /&gt;
&lt;br /&gt;
== Enable Jolokia == &lt;br /&gt;
&lt;br /&gt;
(See also https://oxpedia.org/wiki/index.php?title=Jolokia)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, enable Jolokia by setting the following properties:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.start = true&lt;br /&gt;
  com.openexchange.jolokia.user = youruser&lt;br /&gt;
  com.openexchange.jolokia.password = yourpassword&lt;br /&gt;
&lt;br /&gt;
Jolokia will not be enabled when no user/password is set.&lt;br /&gt;
&lt;br /&gt;
You can optionally adjust this setting:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.servlet.name = /monitoring/jolokia&lt;br /&gt;
&lt;br /&gt;
If you do, you need to adjust the examples below as well.&lt;br /&gt;
&lt;br /&gt;
== Allow access from other hosts ==&lt;br /&gt;
&lt;br /&gt;
This is an optional step, if you want to access the Jolokia interface from other hosts than localhost. This may be very helpful during the development phase of a project. Please be aware that this interface exposes lots of &amp;quot;interesting&amp;quot; data, so if you remove the restriction to localhost, you need to ensure by other means (network setup, firewalls, web server configuration, ...) that no unauthorised access is possible on production systems.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, set:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.restrict.to.localhost = false&lt;br /&gt;
&lt;br /&gt;
In your web server configuration, enable access to the jolokia servlet. For Apache this is possible by adding a ProxyPass directive for each OX host in the cluster:&lt;br /&gt;
&lt;br /&gt;
  ProxyPass /monitoring/ox1/jolokia http://ox1-ip:8009/monitoring/jolokia&lt;br /&gt;
  ProxyPass /monitoring/ox2/jolokia http://ox2-ip:8009/monitoring/jolokia&lt;br /&gt;
  ...&lt;br /&gt;
	&lt;br /&gt;
On a default installation as described by our installation guides, this would be in &amp;lt;code&amp;gt;proxy_http.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reload your apache config and restart open-xchange for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
== Access the Jolokia interface ==&lt;br /&gt;
&lt;br /&gt;
On localhost, call:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/list &amp;gt; ox.json&lt;br /&gt;
	&lt;br /&gt;
If you enabled access from other hosts, you can also use a standard web browser. Open e.g.&lt;br /&gt;
&lt;br /&gt;
  http://&amp;lt;yourserver&amp;gt;/monitoring/ox1/jolokia/list&lt;br /&gt;
	&lt;br /&gt;
You'll be asked for user name and password through a standard HTTP auth window.&lt;br /&gt;
&lt;br /&gt;
== Access specific information ==&lt;br /&gt;
&lt;br /&gt;
The ox.json file you received in the last step gives you a complete documentation what data is available through this interface.&lt;br /&gt;
&lt;br /&gt;
As an example, the &amp;quot;Login Counter&amp;quot; interface (which is also used by the [http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter logincounter command line tool]) is described like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;com.openexchange.reporting&amp;quot;: {&lt;br /&gt;
	&amp;quot;name=Login Counter&amp;quot;: {&lt;br /&gt;
		&amp;quot;desc&amp;quot;: &amp;quot;Information on the management interface of the MBean&amp;quot;,&lt;br /&gt;
		&amp;quot;op&amp;quot;: {&lt;br /&gt;
			&amp;quot;getLastLoginTimeStamp&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.List&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;getNumberOfLogins&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.Map&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;boolean&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p4&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See http://www.jolokia.org/reference/html/protocol.html for detailed documentation how to use the Jolokia interface, especially http://www.jolokia.org/reference/html/protocol.html#serialization for the list of datatypes that can be passed as arguments and received in return values.&lt;br /&gt;
&lt;br /&gt;
To know what the parameters &amp;lt;code&amp;gt;p1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p2&amp;lt;/code&amp;gt;, etc. mean, you need to look at the source code. (See http://oxpedia.org/wiki/index.php?title=SourceCodeAccess for information how to download it.)&lt;br /&gt;
&lt;br /&gt;
In the example above, to get the number of logins in a specific timeframe and with a specific client, we need to call the method getNumberOfLogins with the parameters startDate, endDate, aggregate and clientstring. They correspond to the command line parameters to the logincounter tool as described on:&lt;br /&gt;
&lt;br /&gt;
  http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter&lt;br /&gt;
&lt;br /&gt;
In curl this call would look like this:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;br /&gt;
	&lt;br /&gt;
If you have enabled access to the Jolokia interface from other hosts, the same information can be viewed in any web browser:&lt;br /&gt;
  http://&amp;lt;yourserver&amp;gt;/monitoring/ox1/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:Server]]&lt;br /&gt;
[[Category:Administrator]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Jolokia&amp;diff=19357</id>
		<title>Jolokia</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Jolokia&amp;diff=19357"/>
		<updated>2015-04-20T10:28:31Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Jolokia&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' This article tells you to use Jolokia, a JMX bridge, that is available vom AppSuite v7.4.0 on.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= How to interact with Jolokia for Open-Xchange=&lt;br /&gt;
&lt;br /&gt;
Open-Xchange does support Jolokia as a remote JMX-Bridge over HTTP.&lt;br /&gt;
&lt;br /&gt;
By Version 7.4.0 ongoing, it is located inside Open-Xchange Bundle and configured by jolokia.properties&lt;br /&gt;
&lt;br /&gt;
Additional information can be found at http://www.jolokia.org/ .&lt;br /&gt;
&lt;br /&gt;
== jolokia.properties ==&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot; style=&amp;quot;table-layout: fixed&amp;quot; class='wikitable sortable' border='1'&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;30%&amp;quot; | Key&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;20%&amp;quot; | Default value&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;35%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| com.openexchange.jolokia.start&lt;br /&gt;
| false&lt;br /&gt;
| start switch for jolokia&lt;br /&gt;
|-&lt;br /&gt;
| com.openexchange.jolokia.servlet.name&lt;br /&gt;
| /monitoring/jolokia&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;Under what servlet name jolokia will be published, please bear in mind that this should not be forwarded by apache and kept internal&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| com.openexchange.jolokia.user&lt;br /&gt;
| &lt;br /&gt;
| &amp;lt;nowiki&amp;gt;User used for authentication with HTTP Basic Authentication. If not given, Jolokia will not start!&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| com.openexchange.jolokia.password&lt;br /&gt;
| &lt;br /&gt;
| &amp;lt;nowiki&amp;gt;Password used for authentification, if not set &amp;quot;secret&amp;quot; is used.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| com.openexchange.jolokia.restrict.to.localhost&lt;br /&gt;
| true&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;This setting will restrict jolokia access to localhost. It is completly ignored when a jolokia-access.xml is present&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Keep in mind that Jolokia will not start unless you set &amp;lt;code&amp;gt; com.openexchange.jolokia.start = true &amp;lt;/code&amp;gt; , &amp;lt;code&amp;gt; com.openexchange.jolokia.user = yourUser&amp;lt;/code&amp;gt; and to &amp;lt;code&amp;gt; com.openexchange.jolokia.password = yourPassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When using Munin-Scripts with Jolokia, this user and password also need to be changed.&lt;br /&gt;
&lt;br /&gt;
== Running Jolokia ==&lt;br /&gt;
&lt;br /&gt;
As Jolokia represents a JMX-Interface it is highly recommended '''not''' to forward it to the internet!&lt;br /&gt;
&lt;br /&gt;
This is by default set through the use of &amp;lt;code&amp;gt;com.openexchange.jolokia.restrict.to.localhost = true&amp;lt;/code&amp;gt; and can be changed by either setting it to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; or providing a &amp;lt;code&amp;gt;jolokia-access.xml&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;/opt/open-xchange/etc/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For further information how to setup this file, http://www.jolokia.org/reference/html/security.html is a good start as all those settings are usable.&lt;br /&gt;
&lt;br /&gt;
=== Jolokia with Grizzly ===&lt;br /&gt;
&lt;br /&gt;
When using Grizzly and munin scripts on the same machine, you can connect to jolokia directly with the servers address, e.g.: &amp;lt;code&amp;gt;http://localhost:8009/monitoring/jolokia&amp;lt;/code&amp;gt;.&lt;br /&gt;
When connecting through another machine, a best practise is to use the same forwarding as described below.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
For a more detailed example, see https://oxpedia.org/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:Server]]&lt;br /&gt;
[[Category:Administrator]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19356</id>
		<title>Jolokia LoginCounter HOWTO</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19356"/>
		<updated>2015-04-20T10:27:07Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* Access specific information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HOWTO - Access Login Counter data with Jolokia = &lt;br /&gt;
&lt;br /&gt;
This article describes how to access information exposed through JMX by Open-Xchange with the Jolokia JMX-to-HTTP bridge, using &amp;quot;Login Counter&amp;quot; as an example.&lt;br /&gt;
&lt;br /&gt;
== Install Open-Xchange ==&lt;br /&gt;
&lt;br /&gt;
See http://oxpedia.org/wiki/index.php?title=AppSuite:Main_Page_AppSuite#quickinstall if you don't have Open-Xchange installed yet. Jolokia is part of the base product, no extra packages are needed.&lt;br /&gt;
&lt;br /&gt;
== Enable Jolokia == &lt;br /&gt;
&lt;br /&gt;
(See also https://oxpedia.org/wiki/index.php?title=Jolokia)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, enable Jolokia by setting the following properties:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.start = true&lt;br /&gt;
  com.openexchange.jolokia.user = youruser&lt;br /&gt;
  com.openexchange.jolokia.password = yourpassword&lt;br /&gt;
&lt;br /&gt;
Jolokia will not be enabled when no user/password is set.&lt;br /&gt;
&lt;br /&gt;
You can optionally adjust this setting:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.servlet.name = /monitoring/jolokia&lt;br /&gt;
&lt;br /&gt;
If you do, you need to adjust the examples below as well.&lt;br /&gt;
&lt;br /&gt;
== Allow access from other hosts ==&lt;br /&gt;
&lt;br /&gt;
This is an optional step, if you want to access the Jolokia interface from other hosts than localhost. This may be very helpful during the development phase of a project. Please be aware that this interface exposes lots of &amp;quot;interesting&amp;quot; data, so if you remove the restriction to localhost, you need to ensure by other means (network setup, firewalls, web server configuration, ...) that no unauthorised access is possible on production systems.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, set:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.restrict.to.localhost = false&lt;br /&gt;
&lt;br /&gt;
In your web server configuration, enable access to the jolokia servlet. For Apache this is possible by adding a ProxyPass directive for each OX host in the cluster:&lt;br /&gt;
&lt;br /&gt;
  ProxyPass /monitoring/ox1/jolokia http://ox1-ip:8009/monitoring/jolokia&lt;br /&gt;
  ProxyPass /monitoring/ox2/jolokia http://ox2-ip:8009/monitoring/jolokia&lt;br /&gt;
  ...&lt;br /&gt;
	&lt;br /&gt;
On a default installation as described by our installation guides, this would be in &amp;lt;code&amp;gt;proxy_http.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reload your apache config and restart open-xchange for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
== Access the Jolokia interface ==&lt;br /&gt;
&lt;br /&gt;
On localhost, call:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/list &amp;gt; ox.json&lt;br /&gt;
	&lt;br /&gt;
If you enabled access from other hosts, you can also use a standard web browser. Open e.g.&lt;br /&gt;
&lt;br /&gt;
  http://&amp;lt;yourserver&amp;gt;/monitoring/ox1/jolokia/list&lt;br /&gt;
	&lt;br /&gt;
You'll be asked for user name and password through a standard HTTP auth window.&lt;br /&gt;
&lt;br /&gt;
== Access specific information ==&lt;br /&gt;
&lt;br /&gt;
The ox.json file you received in the last step gives you a complete documentation what data is available through this interface.&lt;br /&gt;
&lt;br /&gt;
As an example, the &amp;quot;Login Counter&amp;quot; interface (which is also used by the [http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter logincounter command line tool]) is described like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;com.openexchange.reporting&amp;quot;: {&lt;br /&gt;
	&amp;quot;name=Login Counter&amp;quot;: {&lt;br /&gt;
		&amp;quot;desc&amp;quot;: &amp;quot;Information on the management interface of the MBean&amp;quot;,&lt;br /&gt;
		&amp;quot;op&amp;quot;: {&lt;br /&gt;
			&amp;quot;getLastLoginTimeStamp&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.List&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;getNumberOfLogins&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.Map&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;boolean&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p4&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See http://www.jolokia.org/reference/html/protocol.html for detailed documentation how to use the Jolokia interface, especially http://www.jolokia.org/reference/html/protocol.html#serialization for the list of datatypes that can be passed as arguments and received in return values.&lt;br /&gt;
&lt;br /&gt;
To know what the parameters &amp;lt;code&amp;gt;p1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p2&amp;lt;/code&amp;gt;, etc. mean, you need to look at the source code. (See http://oxpedia.org/wiki/index.php?title=SourceCodeAccess for information how to download it.)&lt;br /&gt;
&lt;br /&gt;
In the example above, to get the number of logins in a specific timeframe and with a specific client, we need to call the method getNumberOfLogins with the parameters startDate, endDate, aggregate and clientstring. They correspond to the command line parameters to the logincounter tool as described on:&lt;br /&gt;
&lt;br /&gt;
  http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter&lt;br /&gt;
&lt;br /&gt;
In curl this call would look like this:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;br /&gt;
	&lt;br /&gt;
If you have enabled access to the Jolokia interface from other hosts, the same information can be viewed in any web browser:&lt;br /&gt;
  http://&amp;lt;yourserver&amp;gt;/monitoring/ox1/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19355</id>
		<title>Jolokia LoginCounter HOWTO</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19355"/>
		<updated>2015-04-20T10:26:41Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* Access the Jolokia interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HOWTO - Access Login Counter data with Jolokia = &lt;br /&gt;
&lt;br /&gt;
This article describes how to access information exposed through JMX by Open-Xchange with the Jolokia JMX-to-HTTP bridge, using &amp;quot;Login Counter&amp;quot; as an example.&lt;br /&gt;
&lt;br /&gt;
== Install Open-Xchange ==&lt;br /&gt;
&lt;br /&gt;
See http://oxpedia.org/wiki/index.php?title=AppSuite:Main_Page_AppSuite#quickinstall if you don't have Open-Xchange installed yet. Jolokia is part of the base product, no extra packages are needed.&lt;br /&gt;
&lt;br /&gt;
== Enable Jolokia == &lt;br /&gt;
&lt;br /&gt;
(See also https://oxpedia.org/wiki/index.php?title=Jolokia)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, enable Jolokia by setting the following properties:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.start = true&lt;br /&gt;
  com.openexchange.jolokia.user = youruser&lt;br /&gt;
  com.openexchange.jolokia.password = yourpassword&lt;br /&gt;
&lt;br /&gt;
Jolokia will not be enabled when no user/password is set.&lt;br /&gt;
&lt;br /&gt;
You can optionally adjust this setting:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.servlet.name = /monitoring/jolokia&lt;br /&gt;
&lt;br /&gt;
If you do, you need to adjust the examples below as well.&lt;br /&gt;
&lt;br /&gt;
== Allow access from other hosts ==&lt;br /&gt;
&lt;br /&gt;
This is an optional step, if you want to access the Jolokia interface from other hosts than localhost. This may be very helpful during the development phase of a project. Please be aware that this interface exposes lots of &amp;quot;interesting&amp;quot; data, so if you remove the restriction to localhost, you need to ensure by other means (network setup, firewalls, web server configuration, ...) that no unauthorised access is possible on production systems.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, set:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.restrict.to.localhost = false&lt;br /&gt;
&lt;br /&gt;
In your web server configuration, enable access to the jolokia servlet. For Apache this is possible by adding a ProxyPass directive for each OX host in the cluster:&lt;br /&gt;
&lt;br /&gt;
  ProxyPass /monitoring/ox1/jolokia http://ox1-ip:8009/monitoring/jolokia&lt;br /&gt;
  ProxyPass /monitoring/ox2/jolokia http://ox2-ip:8009/monitoring/jolokia&lt;br /&gt;
  ...&lt;br /&gt;
	&lt;br /&gt;
On a default installation as described by our installation guides, this would be in &amp;lt;code&amp;gt;proxy_http.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reload your apache config and restart open-xchange for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
== Access the Jolokia interface ==&lt;br /&gt;
&lt;br /&gt;
On localhost, call:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/list &amp;gt; ox.json&lt;br /&gt;
	&lt;br /&gt;
If you enabled access from other hosts, you can also use a standard web browser. Open e.g.&lt;br /&gt;
&lt;br /&gt;
  http://&amp;lt;yourserver&amp;gt;/monitoring/ox1/jolokia/list&lt;br /&gt;
	&lt;br /&gt;
You'll be asked for user name and password through a standard HTTP auth window.&lt;br /&gt;
&lt;br /&gt;
== Access specific information ==&lt;br /&gt;
&lt;br /&gt;
The ox.json file you received in the last step gives you a complete documentation what data is available through this interface.&lt;br /&gt;
&lt;br /&gt;
As an example, the &amp;quot;Login Counter&amp;quot; interface (which is also used by the [http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter logincounter command line tool]) is described like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;com.openexchange.reporting&amp;quot;: {&lt;br /&gt;
	&amp;quot;name=Login Counter&amp;quot;: {&lt;br /&gt;
		&amp;quot;desc&amp;quot;: &amp;quot;Information on the management interface of the MBean&amp;quot;,&lt;br /&gt;
		&amp;quot;op&amp;quot;: {&lt;br /&gt;
			&amp;quot;getLastLoginTimeStamp&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.List&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;getNumberOfLogins&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.Map&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;boolean&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p4&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See http://www.jolokia.org/reference/html/protocol.html for detailed documentation how to use the Jolokia interface, especially http://www.jolokia.org/reference/html/protocol.html#serialization for the list of datatypes that can be passed as arguments and received in return values.&lt;br /&gt;
&lt;br /&gt;
To know what the parameters &amp;lt;code&amp;gt;p1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p2&amp;lt;/code&amp;gt;, etc. mean, you need to look at the source code. (See http://oxpedia.org/wiki/index.php?title=SourceCodeAccess for information how to download it.)&lt;br /&gt;
&lt;br /&gt;
In the example above, to get the number of logins in a specific timeframe and with a specific client, we need to call the method getNumberOfLogins with the parameters startDate, endDate, aggregate and clientstring. They correspond to the command line parameters to the logincounter tool as described on:&lt;br /&gt;
&lt;br /&gt;
  http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter&lt;br /&gt;
&lt;br /&gt;
In curl this call would look like this:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;br /&gt;
	&lt;br /&gt;
If you have enabled access to the Jolokia interface from other hosts, the same information can be viewed in any web browser:&lt;br /&gt;
&lt;br /&gt;
  http://&amp;lt;yourserver&amp;gt;/monitoring/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19354</id>
		<title>Jolokia LoginCounter HOWTO</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19354"/>
		<updated>2015-04-20T10:23:15Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HOWTO - Access Login Counter data with Jolokia = &lt;br /&gt;
&lt;br /&gt;
This article describes how to access information exposed through JMX by Open-Xchange with the Jolokia JMX-to-HTTP bridge, using &amp;quot;Login Counter&amp;quot; as an example.&lt;br /&gt;
&lt;br /&gt;
== Install Open-Xchange ==&lt;br /&gt;
&lt;br /&gt;
See http://oxpedia.org/wiki/index.php?title=AppSuite:Main_Page_AppSuite#quickinstall if you don't have Open-Xchange installed yet. Jolokia is part of the base product, no extra packages are needed.&lt;br /&gt;
&lt;br /&gt;
== Enable Jolokia == &lt;br /&gt;
&lt;br /&gt;
(See also https://oxpedia.org/wiki/index.php?title=Jolokia)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, enable Jolokia by setting the following properties:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.start = true&lt;br /&gt;
  com.openexchange.jolokia.user = youruser&lt;br /&gt;
  com.openexchange.jolokia.password = yourpassword&lt;br /&gt;
&lt;br /&gt;
Jolokia will not be enabled when no user/password is set.&lt;br /&gt;
&lt;br /&gt;
You can optionally adjust this setting:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.servlet.name = /monitoring/jolokia&lt;br /&gt;
&lt;br /&gt;
If you do, you need to adjust the examples below as well.&lt;br /&gt;
&lt;br /&gt;
== Allow access from other hosts ==&lt;br /&gt;
&lt;br /&gt;
This is an optional step, if you want to access the Jolokia interface from other hosts than localhost. This may be very helpful during the development phase of a project. Please be aware that this interface exposes lots of &amp;quot;interesting&amp;quot; data, so if you remove the restriction to localhost, you need to ensure by other means (network setup, firewalls, web server configuration, ...) that no unauthorised access is possible on production systems.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, set:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.restrict.to.localhost = false&lt;br /&gt;
&lt;br /&gt;
In your web server configuration, enable access to the jolokia servlet. For Apache this is possible by adding a ProxyPass directive for each OX host in the cluster:&lt;br /&gt;
&lt;br /&gt;
  ProxyPass /monitoring/ox1/jolokia http://ox1-ip:8009/monitoring/jolokia&lt;br /&gt;
  ProxyPass /monitoring/ox2/jolokia http://ox2-ip:8009/monitoring/jolokia&lt;br /&gt;
  ...&lt;br /&gt;
	&lt;br /&gt;
On a default installation as described by our installation guides, this would be in &amp;lt;code&amp;gt;proxy_http.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reload your apache config and restart open-xchange for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
== Access the Jolokia interface ==&lt;br /&gt;
&lt;br /&gt;
On localhost, call:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/list &amp;gt; ox.json&lt;br /&gt;
	&lt;br /&gt;
If you enabled access from other hosts, you can also use a standard web browser. Open&lt;br /&gt;
&lt;br /&gt;
  http://&amp;lt;yourserver&amp;gt;/monitoring/jolokia/list&lt;br /&gt;
	&lt;br /&gt;
You'll be asked for user name and password through a standard HTTP auth window.&lt;br /&gt;
&lt;br /&gt;
== Access specific information ==&lt;br /&gt;
&lt;br /&gt;
The ox.json file you received in the last step gives you a complete documentation what data is available through this interface.&lt;br /&gt;
&lt;br /&gt;
As an example, the &amp;quot;Login Counter&amp;quot; interface (which is also used by the [http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter logincounter command line tool]) is described like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;com.openexchange.reporting&amp;quot;: {&lt;br /&gt;
	&amp;quot;name=Login Counter&amp;quot;: {&lt;br /&gt;
		&amp;quot;desc&amp;quot;: &amp;quot;Information on the management interface of the MBean&amp;quot;,&lt;br /&gt;
		&amp;quot;op&amp;quot;: {&lt;br /&gt;
			&amp;quot;getLastLoginTimeStamp&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.List&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;getNumberOfLogins&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.Map&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;boolean&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p4&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See http://www.jolokia.org/reference/html/protocol.html for detailed documentation how to use the Jolokia interface, especially http://www.jolokia.org/reference/html/protocol.html#serialization for the list of datatypes that can be passed as arguments and received in return values.&lt;br /&gt;
&lt;br /&gt;
To know what the parameters &amp;lt;code&amp;gt;p1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p2&amp;lt;/code&amp;gt;, etc. mean, you need to look at the source code. (See http://oxpedia.org/wiki/index.php?title=SourceCodeAccess for information how to download it.)&lt;br /&gt;
&lt;br /&gt;
In the example above, to get the number of logins in a specific timeframe and with a specific client, we need to call the method getNumberOfLogins with the parameters startDate, endDate, aggregate and clientstring. They correspond to the command line parameters to the logincounter tool as described on:&lt;br /&gt;
&lt;br /&gt;
  http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter&lt;br /&gt;
&lt;br /&gt;
In curl this call would look like this:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;br /&gt;
	&lt;br /&gt;
If you have enabled access to the Jolokia interface from other hosts, the same information can be viewed in any web browser:&lt;br /&gt;
&lt;br /&gt;
  http://&amp;lt;yourserver&amp;gt;/monitoring/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19353</id>
		<title>Jolokia LoginCounter HOWTO</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19353"/>
		<updated>2015-04-20T10:21:37Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* HOWTO - Access Login Counter with Jolokia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HOWTO - Access Login Counter data with Jolokia = &lt;br /&gt;
&lt;br /&gt;
This article describes how to access information exposed through JMX by Open-Xchange with the Jolokia JMX-to-HTTP bridge, using &amp;quot;Login Counter&amp;quot; as an example.&lt;br /&gt;
&lt;br /&gt;
== Install Open-Xchange ==&lt;br /&gt;
&lt;br /&gt;
See http://oxpedia.org/wiki/index.php?title=AppSuite:Main_Page_AppSuite#quickinstall if you don't have Open-Xchange installed yet. Jolokia is part of the base product, no extra packages are needed.&lt;br /&gt;
&lt;br /&gt;
== Enable Jolokia == &lt;br /&gt;
&lt;br /&gt;
(See also https://oxpedia.org/wiki/index.php?title=Jolokia)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, enable Jolokia by setting the following properties:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.start = true&lt;br /&gt;
  com.openexchange.jolokia.user = youruser&lt;br /&gt;
  com.openexchange.jolokia.password = yourpassword&lt;br /&gt;
&lt;br /&gt;
Jolokia will not be enabled when no user/password is set.&lt;br /&gt;
&lt;br /&gt;
You can optionally adjust this setting:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.servlet.name = /monitoring/jolokia&lt;br /&gt;
&lt;br /&gt;
If you do, you need to adjust the examples below as well.&lt;br /&gt;
&lt;br /&gt;
== Allow access from other hosts ==&lt;br /&gt;
&lt;br /&gt;
This is an optional step, if you want to access the Jolokia interface from other hosts than localhost. This may be very helpful during the development phase of a project. Please be aware that this interface exposes lots of &amp;quot;interesting&amp;quot; data, so if you remove the restriction to localhost, you need to ensure by other means (network setup, firewalls, web server configuration, ...) that no unauthorised access is possible on production systems.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, set:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.restrict.to.localhost = false&lt;br /&gt;
&lt;br /&gt;
In your web server configuration, enable access to the jolokia servlet. For Apache this is possible by adding a ProxyPass directive for each OX host in the cluster:&lt;br /&gt;
&lt;br /&gt;
  ProxyPass /monitoring/ox1/jolokia http://ox1-ip:8009/monitoring/jolokia&lt;br /&gt;
  ProxyPass /monitoring/ox2/jolokia http://ox2-ip:8009/monitoring/jolokia&lt;br /&gt;
  ...&lt;br /&gt;
	&lt;br /&gt;
On a default installation as described by our installation guides, this would be in &amp;lt;code&amp;gt;proxy_http.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reload your apache config and restart open-xchange for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
== Access the Jolokia interface ==&lt;br /&gt;
&lt;br /&gt;
On localhost, call:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/list &amp;gt; ox.json&lt;br /&gt;
	&lt;br /&gt;
If you enabled access from other hosts, you can also use a standard web browser. Open&lt;br /&gt;
&lt;br /&gt;
  http://&amp;lt;yourserver&amp;gt;/monitoring/jolokia/list&lt;br /&gt;
	&lt;br /&gt;
You'll be asked for user name and password through a standard HTTP auth window.&lt;br /&gt;
&lt;br /&gt;
== Access specific information ==&lt;br /&gt;
&lt;br /&gt;
The ox.json file you received in the last step gives you a complete documentation what data is available through this interface.&lt;br /&gt;
&lt;br /&gt;
As an example, the &amp;quot;Login Counter&amp;quot; interface (which is also used by the [http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter logincounter command line tool]) is described like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;com.openexchange.reporting&amp;quot;: {&lt;br /&gt;
	&amp;quot;name=Login Counter&amp;quot;: {&lt;br /&gt;
		&amp;quot;desc&amp;quot;: &amp;quot;Information on the management interface of the MBean&amp;quot;,&lt;br /&gt;
		&amp;quot;op&amp;quot;: {&lt;br /&gt;
			&amp;quot;getLastLoginTimeStamp&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.List&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;getNumberOfLogins&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.Map&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;boolean&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p4&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See http://www.jolokia.org/reference/html/protocol.html for detailed documentation how to use the Jolokia interface, especially http://www.jolokia.org/reference/html/protocol.html#serialization for the list of datatypes that can be passed as arguments and received in return values.&lt;br /&gt;
&lt;br /&gt;
To know what the parameters &amp;lt;code&amp;gt;p1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p2&amp;lt;/code&amp;gt;, etc. mean, you need to look at the source code. (See http://oxpedia.org/wiki/index.php?title=SourceCodeAccess for information how to download it.)&lt;br /&gt;
&lt;br /&gt;
In the example above, to get the number of logins in a specific timeframe and with a specific client, we need to call the method getNumberOfLogins with the parameters startDate, endDate, aggregate and clientstring. They correspond to the command line parameters to the logincounter tool as described on:&lt;br /&gt;
&lt;br /&gt;
  http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter&lt;br /&gt;
&lt;br /&gt;
In curl this call would look like this:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;br /&gt;
	&lt;br /&gt;
If you have enabled access to the Jolokia interface from other hosts, the same information can be viewed in any web browser:&lt;br /&gt;
&lt;br /&gt;
http://&amp;lt;yourserver&amp;gt;/monitoring/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19352</id>
		<title>Jolokia LoginCounter HOWTO</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Jolokia_LoginCounter_HOWTO&amp;diff=19352"/>
		<updated>2015-04-20T10:20:59Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: Created page with &amp;quot;= HOWTO - Access Login Counter with Jolokia =   This article describes how to access information exposed through JMX by Open-Xchange with the Jolokia JMX-to-HTTP bridge, using...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HOWTO - Access Login Counter with Jolokia = &lt;br /&gt;
&lt;br /&gt;
This article describes how to access information exposed through JMX by Open-Xchange with the Jolokia JMX-to-HTTP bridge, using &amp;quot;Login Counter&amp;quot; as an example.&lt;br /&gt;
&lt;br /&gt;
== Install Open-Xchange ==&lt;br /&gt;
&lt;br /&gt;
See http://oxpedia.org/wiki/index.php?title=AppSuite:Main_Page_AppSuite#quickinstall if you don't have Open-Xchange installed yet. Jolokia is part of the base product, no extra packages are needed.&lt;br /&gt;
&lt;br /&gt;
== Enable Jolokia == &lt;br /&gt;
&lt;br /&gt;
(See also https://oxpedia.org/wiki/index.php?title=Jolokia)&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, enable Jolokia by setting the following properties:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.start = true&lt;br /&gt;
  com.openexchange.jolokia.user = youruser&lt;br /&gt;
  com.openexchange.jolokia.password = yourpassword&lt;br /&gt;
&lt;br /&gt;
Jolokia will not be enabled when no user/password is set.&lt;br /&gt;
&lt;br /&gt;
You can optionally adjust this setting:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.servlet.name = /monitoring/jolokia&lt;br /&gt;
&lt;br /&gt;
If you do, you need to adjust the examples below as well.&lt;br /&gt;
&lt;br /&gt;
== Allow access from other hosts ==&lt;br /&gt;
&lt;br /&gt;
This is an optional step, if you want to access the Jolokia interface from other hosts than localhost. This may be very helpful during the development phase of a project. Please be aware that this interface exposes lots of &amp;quot;interesting&amp;quot; data, so if you remove the restriction to localhost, you need to ensure by other means (network setup, firewalls, web server configuration, ...) that no unauthorised access is possible on production systems.&lt;br /&gt;
&lt;br /&gt;
In &amp;lt;code&amp;gt;etc/jolokia.properties&amp;lt;/code&amp;gt;, set:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.jolokia.restrict.to.localhost = false&lt;br /&gt;
&lt;br /&gt;
In your web server configuration, enable access to the jolokia servlet. For Apache this is possible by adding a ProxyPass directive for each OX host in the cluster:&lt;br /&gt;
&lt;br /&gt;
  ProxyPass /monitoring/ox1/jolokia http://ox1-ip:8009/monitoring/jolokia&lt;br /&gt;
  ProxyPass /monitoring/ox2/jolokia http://ox2-ip:8009/monitoring/jolokia&lt;br /&gt;
  ...&lt;br /&gt;
	&lt;br /&gt;
On a default installation as described by our installation guides, this would be in &amp;lt;code&amp;gt;proxy_http.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Reload your apache config and restart open-xchange for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
== Access the Jolokia interface ==&lt;br /&gt;
&lt;br /&gt;
On localhost, call:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/list &amp;gt; ox.json&lt;br /&gt;
	&lt;br /&gt;
If you enabled access from other hosts, you can also use a standard web browser. Open&lt;br /&gt;
&lt;br /&gt;
  http://&amp;lt;yourserver&amp;gt;/monitoring/jolokia/list&lt;br /&gt;
	&lt;br /&gt;
You'll be asked for user name and password through a standard HTTP auth window.&lt;br /&gt;
&lt;br /&gt;
== Access specific information ==&lt;br /&gt;
&lt;br /&gt;
The ox.json file you received in the last step gives you a complete documentation what data is available through this interface.&lt;br /&gt;
&lt;br /&gt;
As an example, the &amp;quot;Login Counter&amp;quot; interface (which is also used by the [http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter logincounter command line tool]) is described like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;com.openexchange.reporting&amp;quot;: {&lt;br /&gt;
	&amp;quot;name=Login Counter&amp;quot;: {&lt;br /&gt;
		&amp;quot;desc&amp;quot;: &amp;quot;Information on the management interface of the MBean&amp;quot;,&lt;br /&gt;
		&amp;quot;op&amp;quot;: {&lt;br /&gt;
			&amp;quot;getLastLoginTimeStamp&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.List&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			},&lt;br /&gt;
			&amp;quot;getNumberOfLogins&amp;quot;: {&lt;br /&gt;
				&amp;quot;ret&amp;quot;:&amp;quot;java.util.Map&amp;quot;,&lt;br /&gt;
				&amp;quot;desc&amp;quot;:&amp;quot;Operation exposed for management&amp;quot;,&lt;br /&gt;
				&amp;quot;args&amp;quot;: [&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.util.Date&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;boolean&amp;quot;},&lt;br /&gt;
					{&amp;quot;desc&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;p4&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;java.lang.String&amp;quot;}&lt;br /&gt;
				]&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See http://www.jolokia.org/reference/html/protocol.html for detailed documentation how to use the Jolokia interface, especially http://www.jolokia.org/reference/html/protocol.html#serialization for the list of datatypes that can be passed as arguments and received in return values.&lt;br /&gt;
&lt;br /&gt;
To know what the parameters &amp;lt;code&amp;gt;p1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p2&amp;lt;/code&amp;gt;, etc. mean, you need to look at the source code. (See http://oxpedia.org/wiki/index.php?title=SourceCodeAccess for information how to download it.)&lt;br /&gt;
&lt;br /&gt;
In the example above, to get the number of logins in a specific timeframe and with a specific client, we need to call the method getNumberOfLogins with the parameters startDate, endDate, aggregate and clientstring. They correspond to the command line parameters to the logincounter tool as described on:&lt;br /&gt;
&lt;br /&gt;
  http://oxpedia.org/wiki/index.php?title=AppSuite:Logincounter&lt;br /&gt;
&lt;br /&gt;
In curl this call would look like this:&lt;br /&gt;
&lt;br /&gt;
  $ curl http://yourname:yourpassword@localhost:8009/monitoring/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;br /&gt;
	&lt;br /&gt;
If you have enabled access to the Jolokia interface from other hosts, the same information can be viewed in any web browser:&lt;br /&gt;
&lt;br /&gt;
http://&amp;lt;yourserver&amp;gt;/monitoring/jolokia/exec/com.openexchange.reporting:name=Login%20Counter/getNumberOfLogins/2015-01-01T00:00:00/2015-01-31T23:59:59/true/open-xchange-appsuite/&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Drive&amp;diff=19242</id>
		<title>AppSuite:OX Drive</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Drive&amp;diff=19242"/>
		<updated>2015-03-16T11:24:25Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OX Drive =&lt;br /&gt;
&lt;br /&gt;
In OX App Suite, Open-Xchange provides a cloud storage called OX Drive. It provides file- and folder synchronization across multiple devices in the most simplest way for the end user, fully optimized for each device type. This article explains how to set up the server-side components for OX Drive, as well as details about the client setup.&lt;br /&gt;
&lt;br /&gt;
== Key features ==&lt;br /&gt;
&lt;br /&gt;
* Native Apps for Windows, Mac OS, iOS and Android&lt;br /&gt;
* Easy and attractive upsell properties (e.g. Upsell based on Quota limitations)&lt;br /&gt;
* Clients are specially designed for the devices they run on taking into account limitations such as battery life, screen limitations, bandwidth etc.&lt;br /&gt;
* Controlled synchronization of files across devices&lt;br /&gt;
* Storage management (e.g. quota control, upload limits)&lt;br /&gt;
* Connection type recognition and adaptation (e.g. Wi-Fi, cell network)&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
OX Drive is a combination of two components:&lt;br /&gt;
* OX Drive in OX App Suite&lt;br /&gt;
* OX Drive Clients (optional native client components for synchronization)&lt;br /&gt;
&lt;br /&gt;
OX Drive is available for the following native clients:&lt;br /&gt;
* OX Drive for Windows&lt;br /&gt;
* OX Drive for Mac OS&lt;br /&gt;
* OX Drive for iOS&lt;br /&gt;
* OX Drive for Android&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
You will find the requirements under [[AppSuite:OX_System_Requirements#OX_Drive_for_Clients|OX Drive Client and Platform Requirements]]&lt;br /&gt;
&lt;br /&gt;
= Server-side Installation and Configuration =&lt;br /&gt;
&lt;br /&gt;
This chapter describes how the backend components of OX Drive are installed and configured on the server.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Open-Xchange Server v7.4.2 and above (''open-xchange-core'')&lt;br /&gt;
* Grizzly HTTP connector (''open-xchange-grizzly''), see [[AppSuite:Grizzly]] for details, with ''Comet'' support enabled in ''grizzly.properties''&lt;br /&gt;
* Valid Push-Certificates / API keys for cloud-based notifications, see configuration below&lt;br /&gt;
* Enabled Hazelcast for inter-OX-communication, see [[AppSuite:Running_a_cluster]] for details&lt;br /&gt;
&lt;br /&gt;
== Available packages ==&lt;br /&gt;
&lt;br /&gt;
Open-Xchange Drive is available with the following backend packages:&lt;br /&gt;
&lt;br /&gt;
* ''open-xchange-drive'' - The main server components for OX Drive&lt;br /&gt;
* ''open-xchange-drive-comet'' - Provides the Push interface via long-polling for the desktop clients&lt;br /&gt;
* ''open-xchange-updater-drive'' - Adds the OX Drive application to the Windows desktop auto-updater&lt;br /&gt;
* ''open-xchange-drive-help-*'' - Online help in various languages for the OX Drive applications (these were called ''open-xchange-appsuite-help-drive-*'' in versions earlier than Open-Xchange Server v7.6.2)&lt;br /&gt;
* ''open-xchange-drive-restricted'' - Restricted components, including prerequisites for cloud-based push notifications&lt;br /&gt;
&lt;br /&gt;
Installation on the server varies depending on the underlying distribution, details are available in the following chapters.&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|backend}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=rhelname|pc2v=RHEL6|drive-help}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater|updater/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum update&lt;br /&gt;
 $ yum install open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 6.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianSqueeze|backend}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=debianname|pc2v=DebianSqueeze|drive-help}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater|updater/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianWheezy|backend}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=debianname|pc2v=DebianWheezy|drive-help}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater|updater/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
Add the package repository using zypper if not already present:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=susename|pc2v=SLES11|backend}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=susename|pc2v=SLES11|drive-help}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater|updater/updates}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
 $ zypper in open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== OX Server Edition / App Suite for UCS ===&lt;br /&gt;
&lt;br /&gt;
If you have purchased the OX Server Edition / App Suite for UCS, the OX Drive is part of the offering and after the installation/update available. The necessary package for push, is available with a valid license and can be installed via the Univention App Center.&lt;br /&gt;
&lt;br /&gt;
* The new license is already registered at the LDB after purchase.&lt;br /&gt;
* Log on at the Univention Management Console (UMC)&lt;br /&gt;
* Make sure, that the correct LDB account has been selected in the UMC module &amp;quot;OX License Management&amp;quot;&lt;br /&gt;
* Click on &amp;quot;App Center&amp;quot; at the UMC und switch to the tab &amp;quot;Repository Settings&amp;quot;&lt;br /&gt;
* Within the component list, select &amp;quot;Open-Xchange Drive&amp;quot; and press the &amp;quot;Install&amp;quot; button&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
The following gives an overview about the most important settings to enable file synchronization via OX Drive, especially when it comes to real-time Push notifications for the client applications.&lt;br /&gt;
&lt;br /&gt;
All settings regarding the OX Drive backend component are located in the configuration file ''drive.properties''. The default configuration should be sufficient for a basic &amp;quot;up-and-running&amp;quot; setup (with the exception of defining the Push certificates and API keys for cloud-based client notifications, see next chapters). Please refer to the inline documentation of the configuration file for more advanced options. &lt;br /&gt;
&lt;br /&gt;
=== Push via Google Cloud Messaging (GCM) ===&lt;br /&gt;
&lt;br /&gt;
The OX Drive application for Android devices is able to receive Push notifications from the Open-Xchange Server via [http://developer.android.com/google/gcm/index.html Google Cloud Messaging (GCM)]. To issue those Push messages, the backend needs to be provided with a suitable API key for the corresponding Android client application. The API key is included in the restricted components installation package ''open-xchange-drive-restricted'' for the &amp;quot;vanilla&amp;quot; Android client application. Alternatively, the key can be specified directly in the ''drive.properties'' configuration file:&lt;br /&gt;
&lt;br /&gt;
 # Specifies the API key of the server application. Required if &lt;br /&gt;
 # &amp;quot;com.openexchange.drive.events.gcm.enabled&amp;quot; is &amp;quot;true&amp;quot; and the package &lt;br /&gt;
 # containing the restricted drive components is not installed.&lt;br /&gt;
 com.openexchange.drive.events.gcm.key=&lt;br /&gt;
&lt;br /&gt;
Push via GCM can be enabled via:&lt;br /&gt;
&lt;br /&gt;
 # Enables or disables push event notifications to clients using the Google&lt;br /&gt;
 # Cloud Messaging (GCM) service. This requires a valid configuration for the &lt;br /&gt;
 # GCM API key, see options below. Defaults to &amp;quot;false&amp;quot;. &lt;br /&gt;
 com.openexchange.drive.events.gcm.enabled=true&lt;br /&gt;
&lt;br /&gt;
Please note that push via GCM needs to be enabled explicitly - also if ''open-xchange-drive-restricted'' is installed.&lt;br /&gt;
&lt;br /&gt;
=== Push via Apple Push Notification service (APNs) ===&lt;br /&gt;
&lt;br /&gt;
The OX Drive application for iOS and Mac OS devices is able to receive Push notifications from the Open-Xchange Server via [http://developer.apple.com/library/IOS/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html Apple Push Notification service (APNs)]. To issue those Push messages, the backend needs to be provided with a suitable keystore container file (PKCS #12) containing the APNs certificate and keys. Note that the Mac OS desktop client and the iOS mobile client are served separately with different certificates, so that both needs to be configured independantly. The required certificates are already included in the restricted components installation package ''open-xchange-drive-restricted'' for the &amp;quot;vanilla&amp;quot; iOS and Mac OS client applications. Alternatively, the certificate can be specified directly in the ''drive.properties'' configuration file (the following only shows the setup for iOS). First, the path to the PKCS #12 container file needs to be specified at:&lt;br /&gt;
&lt;br /&gt;
 # Specifies the path to the local keystore file (PKCS #12) containing the APNS &lt;br /&gt;
 # certificate and keys for the iOS application, e.g. &lt;br /&gt;
 # &amp;quot;/opt/open-xchange/etc/drive-apns.p12&amp;quot;. Required if &lt;br /&gt;
 # &amp;quot;com.openexchange.drive.events.apn.enabled&amp;quot; is &amp;quot;true&amp;quot; and the package &lt;br /&gt;
 # containing the restricted drive components is not installed.&lt;br /&gt;
 com.openexchange.drive.events.apn.ios.keystore=&lt;br /&gt;
&lt;br /&gt;
This file is opened by the backend using the password as supplied via: &lt;br /&gt;
 &lt;br /&gt;
 # Specifies the password used when creating the referenced keystore containing&lt;br /&gt;
 # the certificate of the iOS application. Note that blank or null passwords &lt;br /&gt;
 # are in violation of the PKCS #12 specifications. Required if &lt;br /&gt;
 # &amp;quot;com.openexchange.drive.events.apn.enabled&amp;quot; is &amp;quot;true&amp;quot; and the package &lt;br /&gt;
 # containing the restricted drive components is not installed.&lt;br /&gt;
 com.openexchange.drive.events.apn.ios.password=&lt;br /&gt;
&lt;br /&gt;
Configuration also allows to swith between development and production environments, however, this setting should be ''true'' normally:&lt;br /&gt;
&lt;br /&gt;
 # Indicates which APNS service is used when sending push notifications to iOS&lt;br /&gt;
 # devices. A value of &amp;quot;true&amp;quot; will use the production service, a value of &lt;br /&gt;
 # &amp;quot;false&amp;quot; the sandbox service. Defaults to &amp;quot;true&amp;quot;.&lt;br /&gt;
 com.openexchange.drive.events.apn.ios.production=true&lt;br /&gt;
&lt;br /&gt;
The OX backend contacts the APNs servers from time to time to get informed about clients no longer reachable clients where the applications was uninstalled. The interval can be defined with the following setting: &lt;br /&gt;
&lt;br /&gt;
 # Configures the interval between queries to the APN feedback service for the&lt;br /&gt;
 # subscribed iOS devices. The value can be defined using units of measurement: &lt;br /&gt;
 # &amp;quot;D&amp;quot; (=days), &amp;quot;W&amp;quot; (=weeks) and &amp;quot;H&amp;quot; (=hours). Defaults to &amp;quot;1D&amp;quot; (one day). &lt;br /&gt;
 # Leaving this parameter empty disables the feedback queries on this node. &lt;br /&gt;
 # Since each received feedback is processed cluster-wide, only one node in the &lt;br /&gt;
 # cluster should be enabled here. &lt;br /&gt;
 com.openexchange.drive.events.apn.ios.feedbackQueryInterval=1D&lt;br /&gt;
&lt;br /&gt;
Please note that if you have multiple backend nodes in the cluster, it's recommended that only one node is configured to contact the feedback query service. Finally, Push notifications via APN for iOS can be enabled via:&lt;br /&gt;
&lt;br /&gt;
 # Enables or disables push event notifications to clients using the Apple Push&lt;br /&gt;
 # Notification service (APNS) for Mac OS devices. This requires a valid &lt;br /&gt;
 # configuration for the APNS certificate and keys, see either options below, &lt;br /&gt;
 # or install the restricted components packages for drive. Defaults to &lt;br /&gt;
 # &amp;quot;false&amp;quot;. &lt;br /&gt;
 com.openexchange.drive.events.apn.ios.enabled=false&lt;br /&gt;
&lt;br /&gt;
As stated above, configuration for Push notifications via APN for the Mac OS desktop application is configured similarly, the relevant options are prefixed with ''com.openexchange.drive.events.apn.macos''. Please also note that push via APNS needs to be enabled explicitly - also if ''open-xchange-drive-restricted'' is installed.&lt;br /&gt;
&lt;br /&gt;
=== Further Configuration ===&lt;br /&gt;
&lt;br /&gt;
* The backend component of OX Drive supplies the clients with various hyperlinks, e.g. deep-links to files and folders in the groupware webinterface or an URL to the online help. In order to point to the suitable web interface, please ensure that the correct UI web path is configured via ''com.openexchange.UIWebPath'' located in ''server.properties''.&lt;br /&gt;
* As already mentioned above, the backend relies on the [https://grizzly.java.net/comet.html Comet] component of the Grizzly http connector for sending push notifications to the desktop clients. Therefore, ''com.openexchange.http.grizzly.hasCometEnabled'' needs to be set to ''true'' in ''grizzly.properties''.&lt;br /&gt;
&lt;br /&gt;
= Enabling OX Drive for Users =&lt;br /&gt;
&lt;br /&gt;
OX Drive is enabled for all users that have the capability ''com.openexchange.capability.drive''. Please note that users need to have the ''infostore'' permission set to use drive. So the users that have ''drive'' enabled must be a subset of those users with ''infostore'' permission. Since 7.6.0 we enforce this via the default configuration. You can also enable this cabaility globally with the following setting in the ''drive.properties'' configuration file:&lt;br /&gt;
&lt;br /&gt;
 # Enables or disables the &amp;quot;drive&amp;quot; module capability globally. The capability&lt;br /&gt;
 # can also be set more fine-grained via config cascade. Per default it is only&lt;br /&gt;
 # enabled for users that have the &amp;quot;infostore&amp;quot; permission set. This is configured&lt;br /&gt;
 # in /opt/open-xchange/etc/contextSets/drive.yml.&lt;br /&gt;
 com.openexchange.capability.drive=false&lt;br /&gt;
&lt;br /&gt;
More details about capabilities can be found at [[AppSuite:Capabilities]]. Furthermore, this capability can be defined in a more granular way using the Config Cascade as described at [[ConfigCascade]].&lt;br /&gt;
&lt;br /&gt;
= Installation of the Clients =&lt;br /&gt;
&lt;br /&gt;
== Installation of Mac OS X Desktop Client ==&lt;br /&gt;
&lt;br /&gt;
The OX Drive for Mac OS X will be provided via the Apple App Store:&lt;br /&gt;
&lt;br /&gt;
* https://itunes.apple.com/app/ox-drive/id818195014?mt=12&lt;br /&gt;
&lt;br /&gt;
== Installation of Windows Desktop Client ==&lt;br /&gt;
&lt;br /&gt;
The OX Drive for Windows will be provided direct at the OX App Suite via the [[AppSuite:Open-Xchange_Updater|OX Updater]].&lt;br /&gt;
&lt;br /&gt;
== Installation on Mobile Clients ==&lt;br /&gt;
&lt;br /&gt;
The OX Drive App is available via the different App Stores:&lt;br /&gt;
&lt;br /&gt;
* iOS: https://itunes.apple.com/app/ox-drive/id798570177?mt=8&lt;br /&gt;
&lt;br /&gt;
* Android: https://play.google.com/store/apps/details?id=com.openexchange.drive.vanilla&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Client Configuration and Deployment ==&lt;br /&gt;
&lt;br /&gt;
The user needs to enter the server URL and provide his username and password. Afterwards, client-specific settings may be configured. This includes the synchronization mode (All files / Favorites only) and Photostream settings on mobile devices, or the local root synchronization folder for the desktop applications. More information is available in the online documentation. &lt;br /&gt;
&lt;br /&gt;
After the initial synchronization is completed, all further changes are synchronized instantly across all devices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
&lt;br /&gt;
'''How to limit the maximum file size, a configured ''MAX_UPLOAD_SIZE'' seems to have no effect for uploads from OX Drive clients?'''&lt;br /&gt;
&lt;br /&gt;
This setting has no effect for files uploaded from OX Drive clients, since big uploads may also be processed via multiple requests in smaller chunks. We plan to offer a separate configuration option in a future release.&lt;br /&gt;
&lt;br /&gt;
'''There are strange files and folders on the backend, where do they come from, is it safe to delete them?'''&lt;br /&gt;
&lt;br /&gt;
To support chunked uploads, and to optimize the synchronization process, the synchronization logic may create various temporary files (''.drive'' directory and contained files). They only appear in the web interface if the setting ''Show hidden files and folders'' is enabled, and are removed automatically if not accessed for a specific period (default: 1 day).&lt;br /&gt;
&lt;br /&gt;
'''Not all files and folders get synchronized. Are there any restrictions?'''&lt;br /&gt;
&lt;br /&gt;
Yes, please consult the online help for a detailed list of excluded files and folders.&lt;br /&gt;
&lt;br /&gt;
'''How do I synchronize a shared or public folder?'''&lt;br /&gt;
&lt;br /&gt;
Currently, only the synchronization of a single root folder (and all of it's subfolders) is possible. For the mobile client applications, this is always the default personal drive folder of the user, while the desktop clients allow to choose which folder to synchronize. The synchronization of multiple root folders is scheduled for a future release.&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Drive&amp;diff=19241</id>
		<title>AppSuite:OX Drive</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Drive&amp;diff=19241"/>
		<updated>2015-03-16T11:20:20Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OX Drive =&lt;br /&gt;
&lt;br /&gt;
In OX App Suite, Open-Xchange provides a cloud storage called OX Drive. It provides file- and folder synchronization across multiple devices in the most simplest way for the end user, fully optimized for each device type. This article explains how to set up the server-side components for OX Drive, as well as details about the client setup.&lt;br /&gt;
&lt;br /&gt;
== Key features ==&lt;br /&gt;
&lt;br /&gt;
* Native Apps for Windows, Mac OS, iOS and Android&lt;br /&gt;
* Easy and attractive upsell properties (e.g. Upsell based on Quota limitations)&lt;br /&gt;
* Clients are specially designed for the devices they run on taking into account limitations such as battery life, screen limitations, bandwidth etc.&lt;br /&gt;
* Controlled synchronization of files across devices&lt;br /&gt;
* Storage management (e.g. quota control, upload limits)&lt;br /&gt;
* Connection type recognition and adaptation (e.g. Wi-Fi, cell network)&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
OX Drive is a combination of two components:&lt;br /&gt;
* OX Drive in OX App Suite&lt;br /&gt;
* OX Drive Clients (optional native client components for synchronization)&lt;br /&gt;
&lt;br /&gt;
OX Drive is available for the following native clients:&lt;br /&gt;
* OX Drive for Windows&lt;br /&gt;
* OX Drive for Mac OS&lt;br /&gt;
* OX Drive for iOS&lt;br /&gt;
* OX Drive for Android&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
You will find the requirements under [[AppSuite:OX_System_Requirements#OX_Drive_for_Clients|OX Drive Client and Platform Requirements]]&lt;br /&gt;
&lt;br /&gt;
= Server-side Installation and Configuration =&lt;br /&gt;
&lt;br /&gt;
This chapter describes how the backend components of OX Drive are installed and configured on the server.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Open-Xchange Server v7.4.2 and above (''open-xchange-core'')&lt;br /&gt;
* Grizzly HTTP connector (''open-xchange-grizzly''), see [[AppSuite:Grizzly]] for details, with ''Comet'' support enabled in ''grizzly.properties''&lt;br /&gt;
* Valid Push-Certificates / API keys for cloud-based notifications, see configuration below&lt;br /&gt;
* Enabled Hazelcast for inter-OX-communication, see [[AppSuite:Running_a_cluster]] for details&lt;br /&gt;
&lt;br /&gt;
== Available packages ==&lt;br /&gt;
&lt;br /&gt;
Open-Xchange Drive is available with the following backend packages:&lt;br /&gt;
&lt;br /&gt;
* ''open-xchange-drive'' - The main server components for OX Drive&lt;br /&gt;
* ''open-xchange-drive-comet'' - Provides the Push interface via long-polling for the desktop clients&lt;br /&gt;
* ''open-xchange-updater-drive'' - Adds the OX Drive application to the Windows desktop auto-updater&lt;br /&gt;
* ''open-xchange-appsuite-help-drive-*'' - Online help in various languages for the OX Drive applications&lt;br /&gt;
* ''open-xchange-drive-restricted'' - Restricted components, including prerequisites for cloud-based push notifications&lt;br /&gt;
&lt;br /&gt;
Installation on the server varies depending on the underlying distribution, details are available in the following chapters.&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|backend}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=rhelname|pc2v=RHEL6|drive-help}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater|updater/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum update&lt;br /&gt;
 $ yum install open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 6.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianSqueeze|backend}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=debianname|pc2v=DebianSqueeze|drive-help}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater|updater/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianWheezy|backend}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=debianname|pc2v=DebianWheezy|drive-help}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater|updater/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
Add the package repository using zypper if not already present:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=susename|pc2v=SLES11|backend}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=susename|pc2v=SLES11|drive-help}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater|updater/updates}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
 $ zypper in open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== OX Server Edition / App Suite for UCS ===&lt;br /&gt;
&lt;br /&gt;
If you have purchased the OX Server Edition / App Suite for UCS, the OX Drive is part of the offering and after the installation/update available. The necessary package for push, is available with a valid license and can be installed via the Univention App Center.&lt;br /&gt;
&lt;br /&gt;
* The new license is already registered at the LDB after purchase.&lt;br /&gt;
* Log on at the Univention Management Console (UMC)&lt;br /&gt;
* Make sure, that the correct LDB account has been selected in the UMC module &amp;quot;OX License Management&amp;quot;&lt;br /&gt;
* Click on &amp;quot;App Center&amp;quot; at the UMC und switch to the tab &amp;quot;Repository Settings&amp;quot;&lt;br /&gt;
* Within the component list, select &amp;quot;Open-Xchange Drive&amp;quot; and press the &amp;quot;Install&amp;quot; button&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
The following gives an overview about the most important settings to enable file synchronization via OX Drive, especially when it comes to real-time Push notifications for the client applications.&lt;br /&gt;
&lt;br /&gt;
All settings regarding the OX Drive backend component are located in the configuration file ''drive.properties''. The default configuration should be sufficient for a basic &amp;quot;up-and-running&amp;quot; setup (with the exception of defining the Push certificates and API keys for cloud-based client notifications, see next chapters). Please refer to the inline documentation of the configuration file for more advanced options. &lt;br /&gt;
&lt;br /&gt;
=== Push via Google Cloud Messaging (GCM) ===&lt;br /&gt;
&lt;br /&gt;
The OX Drive application for Android devices is able to receive Push notifications from the Open-Xchange Server via [http://developer.android.com/google/gcm/index.html Google Cloud Messaging (GCM)]. To issue those Push messages, the backend needs to be provided with a suitable API key for the corresponding Android client application. The API key is included in the restricted components installation package ''open-xchange-drive-restricted'' for the &amp;quot;vanilla&amp;quot; Android client application. Alternatively, the key can be specified directly in the ''drive.properties'' configuration file:&lt;br /&gt;
&lt;br /&gt;
 # Specifies the API key of the server application. Required if &lt;br /&gt;
 # &amp;quot;com.openexchange.drive.events.gcm.enabled&amp;quot; is &amp;quot;true&amp;quot; and the package &lt;br /&gt;
 # containing the restricted drive components is not installed.&lt;br /&gt;
 com.openexchange.drive.events.gcm.key=&lt;br /&gt;
&lt;br /&gt;
Push via GCM can be enabled via:&lt;br /&gt;
&lt;br /&gt;
 # Enables or disables push event notifications to clients using the Google&lt;br /&gt;
 # Cloud Messaging (GCM) service. This requires a valid configuration for the &lt;br /&gt;
 # GCM API key, see options below. Defaults to &amp;quot;false&amp;quot;. &lt;br /&gt;
 com.openexchange.drive.events.gcm.enabled=true&lt;br /&gt;
&lt;br /&gt;
Please note that push via GCM needs to be enabled explicitly - also if ''open-xchange-drive-restricted'' is installed.&lt;br /&gt;
&lt;br /&gt;
=== Push via Apple Push Notification service (APNs) ===&lt;br /&gt;
&lt;br /&gt;
The OX Drive application for iOS and Mac OS devices is able to receive Push notifications from the Open-Xchange Server via [http://developer.apple.com/library/IOS/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html Apple Push Notification service (APNs)]. To issue those Push messages, the backend needs to be provided with a suitable keystore container file (PKCS #12) containing the APNs certificate and keys. Note that the Mac OS desktop client and the iOS mobile client are served separately with different certificates, so that both needs to be configured independantly. The required certificates are already included in the restricted components installation package ''open-xchange-drive-restricted'' for the &amp;quot;vanilla&amp;quot; iOS and Mac OS client applications. Alternatively, the certificate can be specified directly in the ''drive.properties'' configuration file (the following only shows the setup for iOS). First, the path to the PKCS #12 container file needs to be specified at:&lt;br /&gt;
&lt;br /&gt;
 # Specifies the path to the local keystore file (PKCS #12) containing the APNS &lt;br /&gt;
 # certificate and keys for the iOS application, e.g. &lt;br /&gt;
 # &amp;quot;/opt/open-xchange/etc/drive-apns.p12&amp;quot;. Required if &lt;br /&gt;
 # &amp;quot;com.openexchange.drive.events.apn.enabled&amp;quot; is &amp;quot;true&amp;quot; and the package &lt;br /&gt;
 # containing the restricted drive components is not installed.&lt;br /&gt;
 com.openexchange.drive.events.apn.ios.keystore=&lt;br /&gt;
&lt;br /&gt;
This file is opened by the backend using the password as supplied via: &lt;br /&gt;
 &lt;br /&gt;
 # Specifies the password used when creating the referenced keystore containing&lt;br /&gt;
 # the certificate of the iOS application. Note that blank or null passwords &lt;br /&gt;
 # are in violation of the PKCS #12 specifications. Required if &lt;br /&gt;
 # &amp;quot;com.openexchange.drive.events.apn.enabled&amp;quot; is &amp;quot;true&amp;quot; and the package &lt;br /&gt;
 # containing the restricted drive components is not installed.&lt;br /&gt;
 com.openexchange.drive.events.apn.ios.password=&lt;br /&gt;
&lt;br /&gt;
Configuration also allows to swith between development and production environments, however, this setting should be ''true'' normally:&lt;br /&gt;
&lt;br /&gt;
 # Indicates which APNS service is used when sending push notifications to iOS&lt;br /&gt;
 # devices. A value of &amp;quot;true&amp;quot; will use the production service, a value of &lt;br /&gt;
 # &amp;quot;false&amp;quot; the sandbox service. Defaults to &amp;quot;true&amp;quot;.&lt;br /&gt;
 com.openexchange.drive.events.apn.ios.production=true&lt;br /&gt;
&lt;br /&gt;
The OX backend contacts the APNs servers from time to time to get informed about clients no longer reachable clients where the applications was uninstalled. The interval can be defined with the following setting: &lt;br /&gt;
&lt;br /&gt;
 # Configures the interval between queries to the APN feedback service for the&lt;br /&gt;
 # subscribed iOS devices. The value can be defined using units of measurement: &lt;br /&gt;
 # &amp;quot;D&amp;quot; (=days), &amp;quot;W&amp;quot; (=weeks) and &amp;quot;H&amp;quot; (=hours). Defaults to &amp;quot;1D&amp;quot; (one day). &lt;br /&gt;
 # Leaving this parameter empty disables the feedback queries on this node. &lt;br /&gt;
 # Since each received feedback is processed cluster-wide, only one node in the &lt;br /&gt;
 # cluster should be enabled here. &lt;br /&gt;
 com.openexchange.drive.events.apn.ios.feedbackQueryInterval=1D&lt;br /&gt;
&lt;br /&gt;
Please note that if you have multiple backend nodes in the cluster, it's recommended that only one node is configured to contact the feedback query service. Finally, Push notifications via APN for iOS can be enabled via:&lt;br /&gt;
&lt;br /&gt;
 # Enables or disables push event notifications to clients using the Apple Push&lt;br /&gt;
 # Notification service (APNS) for Mac OS devices. This requires a valid &lt;br /&gt;
 # configuration for the APNS certificate and keys, see either options below, &lt;br /&gt;
 # or install the restricted components packages for drive. Defaults to &lt;br /&gt;
 # &amp;quot;false&amp;quot;. &lt;br /&gt;
 com.openexchange.drive.events.apn.ios.enabled=false&lt;br /&gt;
&lt;br /&gt;
As stated above, configuration for Push notifications via APN for the Mac OS desktop application is configured similarly, the relevant options are prefixed with ''com.openexchange.drive.events.apn.macos''. Please also note that push via APNS needs to be enabled explicitly - also if ''open-xchange-drive-restricted'' is installed.&lt;br /&gt;
&lt;br /&gt;
=== Further Configuration ===&lt;br /&gt;
&lt;br /&gt;
* The backend component of OX Drive supplies the clients with various hyperlinks, e.g. deep-links to files and folders in the groupware webinterface or an URL to the online help. In order to point to the suitable web interface, please ensure that the correct UI web path is configured via ''com.openexchange.UIWebPath'' located in ''server.properties''.&lt;br /&gt;
* As already mentioned above, the backend relies on the [https://grizzly.java.net/comet.html Comet] component of the Grizzly http connector for sending push notifications to the desktop clients. Therefore, ''com.openexchange.http.grizzly.hasCometEnabled'' needs to be set to ''true'' in ''grizzly.properties''.&lt;br /&gt;
&lt;br /&gt;
= Enabling OX Drive for Users =&lt;br /&gt;
&lt;br /&gt;
OX Drive is enabled for all users that have the capability ''com.openexchange.capability.drive''. Please note that users need to have the ''infostore'' permission set to use drive. So the users that have ''drive'' enabled must be a subset of those users with ''infostore'' permission. Since 7.6.0 we enforce this via the default configuration. You can also enable this cabaility globally with the following setting in the ''drive.properties'' configuration file:&lt;br /&gt;
&lt;br /&gt;
 # Enables or disables the &amp;quot;drive&amp;quot; module capability globally. The capability&lt;br /&gt;
 # can also be set more fine-grained via config cascade. Per default it is only&lt;br /&gt;
 # enabled for users that have the &amp;quot;infostore&amp;quot; permission set. This is configured&lt;br /&gt;
 # in /opt/open-xchange/etc/contextSets/drive.yml.&lt;br /&gt;
 com.openexchange.capability.drive=false&lt;br /&gt;
&lt;br /&gt;
More details about capabilities can be found at [[AppSuite:Capabilities]]. Furthermore, this capability can be defined in a more granular way using the Config Cascade as described at [[ConfigCascade]].&lt;br /&gt;
&lt;br /&gt;
= Installation of the Clients =&lt;br /&gt;
&lt;br /&gt;
== Installation of Mac OS X Desktop Client ==&lt;br /&gt;
&lt;br /&gt;
The OX Drive for Mac OS X will be provided via the Apple App Store:&lt;br /&gt;
&lt;br /&gt;
* https://itunes.apple.com/app/ox-drive/id818195014?mt=12&lt;br /&gt;
&lt;br /&gt;
== Installation of Windows Desktop Client ==&lt;br /&gt;
&lt;br /&gt;
The OX Drive for Windows will be provided direct at the OX App Suite via the [[AppSuite:Open-Xchange_Updater|OX Updater]].&lt;br /&gt;
&lt;br /&gt;
== Installation on Mobile Clients ==&lt;br /&gt;
&lt;br /&gt;
The OX Drive App is available via the different App Stores:&lt;br /&gt;
&lt;br /&gt;
* iOS: https://itunes.apple.com/app/ox-drive/id798570177?mt=8&lt;br /&gt;
&lt;br /&gt;
* Android: https://play.google.com/store/apps/details?id=com.openexchange.drive.vanilla&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Client Configuration and Deployment ==&lt;br /&gt;
&lt;br /&gt;
The user needs to enter the server URL and provide his username and password. Afterwards, client-specific settings may be configured. This includes the synchronization mode (All files / Favorites only) and Photostream settings on mobile devices, or the local root synchronization folder for the desktop applications. More information is available in the online documentation. &lt;br /&gt;
&lt;br /&gt;
After the initial synchronization is completed, all further changes are synchronized instantly across all devices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
&lt;br /&gt;
'''How to limit the maximum file size, a configured ''MAX_UPLOAD_SIZE'' seems to have no effect for uploads from OX Drive clients?'''&lt;br /&gt;
&lt;br /&gt;
This setting has no effect for files uploaded from OX Drive clients, since big uploads may also be processed via multiple requests in smaller chunks. We plan to offer a separate configuration option in a future release.&lt;br /&gt;
&lt;br /&gt;
'''There are strange files and folders on the backend, where do they come from, is it safe to delete them?'''&lt;br /&gt;
&lt;br /&gt;
To support chunked uploads, and to optimize the synchronization process, the synchronization logic may create various temporary files (''.drive'' directory and contained files). They only appear in the web interface if the setting ''Show hidden files and folders'' is enabled, and are removed automatically if not accessed for a specific period (default: 1 day).&lt;br /&gt;
&lt;br /&gt;
'''Not all files and folders get synchronized. Are there any restrictions?'''&lt;br /&gt;
&lt;br /&gt;
Yes, please consult the online help for a detailed list of excluded files and folders.&lt;br /&gt;
&lt;br /&gt;
'''How do I synchronize a shared or public folder?'''&lt;br /&gt;
&lt;br /&gt;
Currently, only the synchronization of a single root folder (and all of it's subfolders) is possible. For the mobile client applications, this is always the default personal drive folder of the user, while the desktop clients allow to choose which folder to synchronize. The synchronization of multiple root folders is scheduled for a future release.&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Drive&amp;diff=19240</id>
		<title>AppSuite:OX Drive</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Drive&amp;diff=19240"/>
		<updated>2015-03-16T11:16:47Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OX Drive =&lt;br /&gt;
&lt;br /&gt;
In OX App Suite, Open-Xchange provides a cloud storage called OX Drive. It provides file- and folder synchronization across multiple devices in the most simplest way for the end user, fully optimized for each device type. This article explains how to set up the server-side components for OX Drive, as well as details about the client setup.&lt;br /&gt;
&lt;br /&gt;
== Key features ==&lt;br /&gt;
&lt;br /&gt;
* Native Apps for Windows, Mac OS, iOS and Android&lt;br /&gt;
* Easy and attractive upsell properties (e.g. Upsell based on Quota limitations)&lt;br /&gt;
* Clients are specially designed for the devices they run on taking into account limitations such as battery life, screen limitations, bandwidth etc.&lt;br /&gt;
* Controlled synchronization of files across devices&lt;br /&gt;
* Storage management (e.g. quota control, upload limits)&lt;br /&gt;
* Connection type recognition and adaptation (e.g. Wi-Fi, cell network)&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
OX Drive is a combination of two components:&lt;br /&gt;
* OX Drive in OX App Suite&lt;br /&gt;
* OX Drive Clients (optional native client components for synchronization)&lt;br /&gt;
&lt;br /&gt;
OX Drive is available for the following native clients:&lt;br /&gt;
* OX Drive for Windows&lt;br /&gt;
* OX Drive for Mac OS&lt;br /&gt;
* OX Drive for iOS&lt;br /&gt;
* OX Drive for Android&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
You will find the requirements under [[AppSuite:OX_System_Requirements#OX_Drive_for_Clients|OX Drive Client and Platform Requirements]]&lt;br /&gt;
&lt;br /&gt;
= Server-side Installation and Configuration =&lt;br /&gt;
&lt;br /&gt;
This chapter describes how the backend components of OX Drive are installed and configured on the server.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Open-Xchange Server v7.4.2 and above (''open-xchange-core'')&lt;br /&gt;
* Grizzly HTTP connector (''open-xchange-grizzly''), see [[AppSuite:Grizzly]] for details, with ''Comet'' support enabled in ''grizzly.properties''&lt;br /&gt;
* Valid Push-Certificates / API keys for cloud-based notifications, see configuration below&lt;br /&gt;
* Enabled Hazelcast for inter-OX-communication, see [[AppSuite:Running_a_cluster]] for details&lt;br /&gt;
&lt;br /&gt;
== Available packages ==&lt;br /&gt;
&lt;br /&gt;
Open-Xchange Drive is available with the following backend packages:&lt;br /&gt;
&lt;br /&gt;
* ''open-xchange-drive'' - The main server components for OX Drive&lt;br /&gt;
* ''open-xchange-drive-comet'' - Provides the Push interface via long-polling for the desktop clients&lt;br /&gt;
* ''open-xchange-updater-drive'' - Adds the OX Drive application to the Windows desktop auto-updater&lt;br /&gt;
* ''open-xchange-appsuite-help-drive-*'' - Online help in various languages for the OX Drive applications&lt;br /&gt;
* ''open-xchange-drive-restricted'' - Restricted components, including prerequisites for cloud-based push notifications&lt;br /&gt;
&lt;br /&gt;
Installation on the server varies depending on the underlying distribution, details are available in the following chapters.&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|backend}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=rhelname|pc2v=RHEL6|drive-help}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater|updater/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum update&lt;br /&gt;
 $ yum install open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 6.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianSqueeze|backend}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=debianname|pc2v=DebianSqueeze|drive-help}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater|updater/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/drive/stable|pc2n=debianname|pc2v=DebianSqueeze|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|drive-help/updates}}&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianWheezy|backend}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater|updater/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
Add the package repository using zypper if not already present:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=susename|pc2v=SLES11|backend}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products/appsuite/stable|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|backend/updates|drive|updater|updater/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
 $ zypper in open-xchange-drive open-xchange-drive-comet open-xchange-drive-restricted open-xchange-updater-drive&lt;br /&gt;
&lt;br /&gt;
=== OX Server Edition / App Suite for UCS ===&lt;br /&gt;
&lt;br /&gt;
If you have purchased the OX Server Edition / App Suite for UCS, the OX Drive is part of the offering and after the installation/update available. The necessary package for push, is available with a valid license and can be installed via the Univention App Center.&lt;br /&gt;
&lt;br /&gt;
* The new license is already registered at the LDB after purchase.&lt;br /&gt;
* Log on at the Univention Management Console (UMC)&lt;br /&gt;
* Make sure, that the correct LDB account has been selected in the UMC module &amp;quot;OX License Management&amp;quot;&lt;br /&gt;
* Click on &amp;quot;App Center&amp;quot; at the UMC und switch to the tab &amp;quot;Repository Settings&amp;quot;&lt;br /&gt;
* Within the component list, select &amp;quot;Open-Xchange Drive&amp;quot; and press the &amp;quot;Install&amp;quot; button&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
The following gives an overview about the most important settings to enable file synchronization via OX Drive, especially when it comes to real-time Push notifications for the client applications.&lt;br /&gt;
&lt;br /&gt;
All settings regarding the OX Drive backend component are located in the configuration file ''drive.properties''. The default configuration should be sufficient for a basic &amp;quot;up-and-running&amp;quot; setup (with the exception of defining the Push certificates and API keys for cloud-based client notifications, see next chapters). Please refer to the inline documentation of the configuration file for more advanced options. &lt;br /&gt;
&lt;br /&gt;
=== Push via Google Cloud Messaging (GCM) ===&lt;br /&gt;
&lt;br /&gt;
The OX Drive application for Android devices is able to receive Push notifications from the Open-Xchange Server via [http://developer.android.com/google/gcm/index.html Google Cloud Messaging (GCM)]. To issue those Push messages, the backend needs to be provided with a suitable API key for the corresponding Android client application. The API key is included in the restricted components installation package ''open-xchange-drive-restricted'' for the &amp;quot;vanilla&amp;quot; Android client application. Alternatively, the key can be specified directly in the ''drive.properties'' configuration file:&lt;br /&gt;
&lt;br /&gt;
 # Specifies the API key of the server application. Required if &lt;br /&gt;
 # &amp;quot;com.openexchange.drive.events.gcm.enabled&amp;quot; is &amp;quot;true&amp;quot; and the package &lt;br /&gt;
 # containing the restricted drive components is not installed.&lt;br /&gt;
 com.openexchange.drive.events.gcm.key=&lt;br /&gt;
&lt;br /&gt;
Push via GCM can be enabled via:&lt;br /&gt;
&lt;br /&gt;
 # Enables or disables push event notifications to clients using the Google&lt;br /&gt;
 # Cloud Messaging (GCM) service. This requires a valid configuration for the &lt;br /&gt;
 # GCM API key, see options below. Defaults to &amp;quot;false&amp;quot;. &lt;br /&gt;
 com.openexchange.drive.events.gcm.enabled=true&lt;br /&gt;
&lt;br /&gt;
Please note that push via GCM needs to be enabled explicitly - also if ''open-xchange-drive-restricted'' is installed.&lt;br /&gt;
&lt;br /&gt;
=== Push via Apple Push Notification service (APNs) ===&lt;br /&gt;
&lt;br /&gt;
The OX Drive application for iOS and Mac OS devices is able to receive Push notifications from the Open-Xchange Server via [http://developer.apple.com/library/IOS/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html Apple Push Notification service (APNs)]. To issue those Push messages, the backend needs to be provided with a suitable keystore container file (PKCS #12) containing the APNs certificate and keys. Note that the Mac OS desktop client and the iOS mobile client are served separately with different certificates, so that both needs to be configured independantly. The required certificates are already included in the restricted components installation package ''open-xchange-drive-restricted'' for the &amp;quot;vanilla&amp;quot; iOS and Mac OS client applications. Alternatively, the certificate can be specified directly in the ''drive.properties'' configuration file (the following only shows the setup for iOS). First, the path to the PKCS #12 container file needs to be specified at:&lt;br /&gt;
&lt;br /&gt;
 # Specifies the path to the local keystore file (PKCS #12) containing the APNS &lt;br /&gt;
 # certificate and keys for the iOS application, e.g. &lt;br /&gt;
 # &amp;quot;/opt/open-xchange/etc/drive-apns.p12&amp;quot;. Required if &lt;br /&gt;
 # &amp;quot;com.openexchange.drive.events.apn.enabled&amp;quot; is &amp;quot;true&amp;quot; and the package &lt;br /&gt;
 # containing the restricted drive components is not installed.&lt;br /&gt;
 com.openexchange.drive.events.apn.ios.keystore=&lt;br /&gt;
&lt;br /&gt;
This file is opened by the backend using the password as supplied via: &lt;br /&gt;
 &lt;br /&gt;
 # Specifies the password used when creating the referenced keystore containing&lt;br /&gt;
 # the certificate of the iOS application. Note that blank or null passwords &lt;br /&gt;
 # are in violation of the PKCS #12 specifications. Required if &lt;br /&gt;
 # &amp;quot;com.openexchange.drive.events.apn.enabled&amp;quot; is &amp;quot;true&amp;quot; and the package &lt;br /&gt;
 # containing the restricted drive components is not installed.&lt;br /&gt;
 com.openexchange.drive.events.apn.ios.password=&lt;br /&gt;
&lt;br /&gt;
Configuration also allows to swith between development and production environments, however, this setting should be ''true'' normally:&lt;br /&gt;
&lt;br /&gt;
 # Indicates which APNS service is used when sending push notifications to iOS&lt;br /&gt;
 # devices. A value of &amp;quot;true&amp;quot; will use the production service, a value of &lt;br /&gt;
 # &amp;quot;false&amp;quot; the sandbox service. Defaults to &amp;quot;true&amp;quot;.&lt;br /&gt;
 com.openexchange.drive.events.apn.ios.production=true&lt;br /&gt;
&lt;br /&gt;
The OX backend contacts the APNs servers from time to time to get informed about clients no longer reachable clients where the applications was uninstalled. The interval can be defined with the following setting: &lt;br /&gt;
&lt;br /&gt;
 # Configures the interval between queries to the APN feedback service for the&lt;br /&gt;
 # subscribed iOS devices. The value can be defined using units of measurement: &lt;br /&gt;
 # &amp;quot;D&amp;quot; (=days), &amp;quot;W&amp;quot; (=weeks) and &amp;quot;H&amp;quot; (=hours). Defaults to &amp;quot;1D&amp;quot; (one day). &lt;br /&gt;
 # Leaving this parameter empty disables the feedback queries on this node. &lt;br /&gt;
 # Since each received feedback is processed cluster-wide, only one node in the &lt;br /&gt;
 # cluster should be enabled here. &lt;br /&gt;
 com.openexchange.drive.events.apn.ios.feedbackQueryInterval=1D&lt;br /&gt;
&lt;br /&gt;
Please note that if you have multiple backend nodes in the cluster, it's recommended that only one node is configured to contact the feedback query service. Finally, Push notifications via APN for iOS can be enabled via:&lt;br /&gt;
&lt;br /&gt;
 # Enables or disables push event notifications to clients using the Apple Push&lt;br /&gt;
 # Notification service (APNS) for Mac OS devices. This requires a valid &lt;br /&gt;
 # configuration for the APNS certificate and keys, see either options below, &lt;br /&gt;
 # or install the restricted components packages for drive. Defaults to &lt;br /&gt;
 # &amp;quot;false&amp;quot;. &lt;br /&gt;
 com.openexchange.drive.events.apn.ios.enabled=false&lt;br /&gt;
&lt;br /&gt;
As stated above, configuration for Push notifications via APN for the Mac OS desktop application is configured similarly, the relevant options are prefixed with ''com.openexchange.drive.events.apn.macos''. Please also note that push via APNS needs to be enabled explicitly - also if ''open-xchange-drive-restricted'' is installed.&lt;br /&gt;
&lt;br /&gt;
=== Further Configuration ===&lt;br /&gt;
&lt;br /&gt;
* The backend component of OX Drive supplies the clients with various hyperlinks, e.g. deep-links to files and folders in the groupware webinterface or an URL to the online help. In order to point to the suitable web interface, please ensure that the correct UI web path is configured via ''com.openexchange.UIWebPath'' located in ''server.properties''.&lt;br /&gt;
* As already mentioned above, the backend relies on the [https://grizzly.java.net/comet.html Comet] component of the Grizzly http connector for sending push notifications to the desktop clients. Therefore, ''com.openexchange.http.grizzly.hasCometEnabled'' needs to be set to ''true'' in ''grizzly.properties''.&lt;br /&gt;
&lt;br /&gt;
= Enabling OX Drive for Users =&lt;br /&gt;
&lt;br /&gt;
OX Drive is enabled for all users that have the capability ''com.openexchange.capability.drive''. Please note that users need to have the ''infostore'' permission set to use drive. So the users that have ''drive'' enabled must be a subset of those users with ''infostore'' permission. Since 7.6.0 we enforce this via the default configuration. You can also enable this cabaility globally with the following setting in the ''drive.properties'' configuration file:&lt;br /&gt;
&lt;br /&gt;
 # Enables or disables the &amp;quot;drive&amp;quot; module capability globally. The capability&lt;br /&gt;
 # can also be set more fine-grained via config cascade. Per default it is only&lt;br /&gt;
 # enabled for users that have the &amp;quot;infostore&amp;quot; permission set. This is configured&lt;br /&gt;
 # in /opt/open-xchange/etc/contextSets/drive.yml.&lt;br /&gt;
 com.openexchange.capability.drive=false&lt;br /&gt;
&lt;br /&gt;
More details about capabilities can be found at [[AppSuite:Capabilities]]. Furthermore, this capability can be defined in a more granular way using the Config Cascade as described at [[ConfigCascade]].&lt;br /&gt;
&lt;br /&gt;
= Installation of the Clients =&lt;br /&gt;
&lt;br /&gt;
== Installation of Mac OS X Desktop Client ==&lt;br /&gt;
&lt;br /&gt;
The OX Drive for Mac OS X will be provided via the Apple App Store:&lt;br /&gt;
&lt;br /&gt;
* https://itunes.apple.com/app/ox-drive/id818195014?mt=12&lt;br /&gt;
&lt;br /&gt;
== Installation of Windows Desktop Client ==&lt;br /&gt;
&lt;br /&gt;
The OX Drive for Windows will be provided direct at the OX App Suite via the [[AppSuite:Open-Xchange_Updater|OX Updater]].&lt;br /&gt;
&lt;br /&gt;
== Installation on Mobile Clients ==&lt;br /&gt;
&lt;br /&gt;
The OX Drive App is available via the different App Stores:&lt;br /&gt;
&lt;br /&gt;
* iOS: https://itunes.apple.com/app/ox-drive/id798570177?mt=8&lt;br /&gt;
&lt;br /&gt;
* Android: https://play.google.com/store/apps/details?id=com.openexchange.drive.vanilla&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Client Configuration and Deployment ==&lt;br /&gt;
&lt;br /&gt;
The user needs to enter the server URL and provide his username and password. Afterwards, client-specific settings may be configured. This includes the synchronization mode (All files / Favorites only) and Photostream settings on mobile devices, or the local root synchronization folder for the desktop applications. More information is available in the online documentation. &lt;br /&gt;
&lt;br /&gt;
After the initial synchronization is completed, all further changes are synchronized instantly across all devices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
&lt;br /&gt;
'''How to limit the maximum file size, a configured ''MAX_UPLOAD_SIZE'' seems to have no effect for uploads from OX Drive clients?'''&lt;br /&gt;
&lt;br /&gt;
This setting has no effect for files uploaded from OX Drive clients, since big uploads may also be processed via multiple requests in smaller chunks. We plan to offer a separate configuration option in a future release.&lt;br /&gt;
&lt;br /&gt;
'''There are strange files and folders on the backend, where do they come from, is it safe to delete them?'''&lt;br /&gt;
&lt;br /&gt;
To support chunked uploads, and to optimize the synchronization process, the synchronization logic may create various temporary files (''.drive'' directory and contained files). They only appear in the web interface if the setting ''Show hidden files and folders'' is enabled, and are removed automatically if not accessed for a specific period (default: 1 day).&lt;br /&gt;
&lt;br /&gt;
'''Not all files and folders get synchronized. Are there any restrictions?'''&lt;br /&gt;
&lt;br /&gt;
Yes, please consult the online help for a detailed list of excluded files and folders.&lt;br /&gt;
&lt;br /&gt;
'''How do I synchronize a shared or public folder?'''&lt;br /&gt;
&lt;br /&gt;
Currently, only the synchronization of a single root folder (and all of it's subfolders) is possible. For the mobile client applications, this is always the default personal drive folder of the user, while the desktop clients allow to choose which folder to synchronize. The synchronization of multiple root folders is scheduled for a future release.&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Template:Oxinstaller&amp;diff=19129</id>
		<title>Template:Oxinstaller</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Template:Oxinstaller&amp;diff=19129"/>
		<updated>2015-02-26T14:47:02Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Important:''' You should have your Open-Xchange license code at hand. If you do not plan to license Open-Xchange, you can use the option ''--no-license'' instead. Please also check [[OXReportClient]] documentation for more information about configuring a supported and maintained Open-Xchange server.&lt;br /&gt;
&lt;br /&gt;
'''Important:''' For MAX_MEMORY_FOR_JAVAVM a rule of thumb for simple installations is half available system memory. The value must be in MB. For example &amp;quot;1024&amp;quot; for 1GB .&lt;br /&gt;
&lt;br /&gt;
 $ /opt/open-xchange/sbin/oxinstaller --add-license=YOUR-OX-LICENSE-CODE \&lt;br /&gt;
 --servername=oxserver --configdb-pass=db_password \&lt;br /&gt;
 --master-pass=admin_master_password {{#ifeq: {{{connector}}} | http |--network-listener-host|--ajp-bind-port}}=localhost --servermemory MAX_MEMORY_FOR_JAVAVM&lt;br /&gt;
&lt;br /&gt;
'''Note:''' In a clustered setup, &amp;lt;tt&amp;gt;{{#ifeq: {{{connector}}} | http |--network-listener-host|--ajp-bind-port}}&amp;lt;/tt&amp;gt; must be set to &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now is a good time to configure the way OX will authenticate to your mail server.  Edit the file /opt/open-xchange/etc/mail.properties and change the com.openexchange.mail.loginSource to use.  This is very important for servers that require your full email address to log in with.&lt;br /&gt;
&lt;br /&gt;
 # adjust com.openexchange.mail.loginSource&lt;br /&gt;
 $ vim /opt/open-xchange/etc/mail.properties&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Versioning_and_Numbering&amp;diff=19128</id>
		<title>AppSuite:Versioning and Numbering</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Versioning_and_Numbering&amp;diff=19128"/>
		<updated>2015-02-26T14:42:16Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* 2015 */ add messenger release&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Versioning and Numbering of Open-Xchange Products=&lt;br /&gt;
&lt;br /&gt;
== Abbreviations ==&lt;br /&gt;
&lt;br /&gt;
The Open-Xchange versioning 2015 will be structured in the following way:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''&amp;lt;generation&amp;gt;.&amp;lt;major release&amp;gt;.&amp;lt;minor release&amp;gt; Rev&amp;lt;build number&amp;gt;'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |Abbreviation&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |Meaning&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |Comparison&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;generation&amp;gt;&lt;br /&gt;
|The first number is the product generation number. A new generation may contain new architecture, different technology and many more.&lt;br /&gt;
|&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;OX App Suite 7&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;major release&amp;gt;&lt;br /&gt;
|The second version number (major release) indicates significant program changes in terms of added functionality. Major changes to design and enhancements of APIs are possible. All APIs shall be backward compatible, which means, that mainly new functions can be added. If Open-Xchange releases a new major release this will be an even number, unstable interim releases have odd numbers.&lt;br /&gt;
|&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;OX App Suite v7.6&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;minor release&amp;gt;&lt;br /&gt;
|The third version number (minor releases) indicates an update with consolidated bug fixes and non-intrusive feature enhancements. APIs and database will not be changed if this can be avoided. All changes must be backward compatible.&lt;br /&gt;
|&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;OX App Suite v7.6.1&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;build number&amp;gt;&lt;br /&gt;
|The Rev-number (Revision) shows the progress of the development in single steps&lt;br /&gt;
|&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;OX App Suite v7.6.1-Rev3&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Public Patch Release / Patch Release&lt;br /&gt;
|A Public Patch Release enables Open-Xchange to publish a feature together with a patch. This in turn enables Open-Xchange to react more flexibly to time requests for certain features, thus relieving minor releases and making it possible to shift them. Delivering a feature with a Public Patch Release requires:&lt;br /&gt;
* It can be implemented without far-reaching side effects. This is especially true for features that are implemented as plug-ins. To a limited extend, features affecting a limited sub set of core functionality can be included. Technical pragmatism is fine to reach the goal (e.g., copy &amp;amp; paste of functionality instead of abstraction into a service). This pragmatism has to be leveled out though as soon as the feature is ported into a more flexible branch.  &lt;br /&gt;
*It can be deactivated and is deactivated by default. If a customer installs a Public Patch Release, the familiar feature set does not change. Only if explicitly activating the enhanced features, will they be available to the end user.&lt;br /&gt;
*If features require changes to the data base schema or configuration files, they have to be developed in such a way that they do not impair the running system.&lt;br /&gt;
*Side-effects of Public Patch Releases are evaluated by the respective developers. Together with the QA team, they make a test plan for checking for those side effects and other effects. &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Release Levels of Open-Xchange ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;OX Release Level (new)&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;New Generation&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;Major Release&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;Minor Release&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;Patch Release&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |&amp;lt;font color=&amp;quot;#008000&amp;quot;&amp;gt;Public Patch Release&lt;br /&gt;
|-&lt;br /&gt;
|'''Target Audience'''&lt;br /&gt;
|All&lt;br /&gt;
|Public/All&lt;br /&gt;
|Maintenance customers &amp;amp; Partners&lt;br /&gt;
|L3 Support Customers, Value Package Partners&lt;br /&gt;
|Public/All&lt;br /&gt;
|-&lt;br /&gt;
|'''Purpose'''&lt;br /&gt;
|Provide new technologies&lt;br /&gt;
|Provide functional enhancements including Bug Fixes, accumulate earlier Patch Releases's/ major releases&lt;br /&gt;
|Provide common bug fixes for all customers, accumulate previous Patch Release's&lt;br /&gt;
|Provide fixes for severity level 1/2 tickets, for a specific Support Customer, small features, temporary until next Maintenance Release accumulative&lt;br /&gt;
|Provide fixes for severity level 1/2 tickets, for all Support Customer, small features, temporary until next Maintenance Release accumulative&lt;br /&gt;
|-&lt;br /&gt;
|'''Frequency'''&lt;br /&gt;
|Open-Xchange Roadmap&lt;br /&gt;
|Decided by Open-Xchange&lt;br /&gt;
|Decided by Open-Xchange&lt;br /&gt;
|According to SLA&lt;br /&gt;
|As soon as required&lt;br /&gt;
|-&lt;br /&gt;
|'''[[AppSuite:Version_Support_Committment|Support Committment]]'''&lt;br /&gt;
|5 years after First Customer Shippment (FCS)&lt;br /&gt;
|6 months after FCS (Latest Minor Release at the Major-Release cycle will be official supported)&lt;br /&gt;
|Last Minor Release of a supported Major Release&lt;br /&gt;
|Next (Public) Patch Release&lt;br /&gt;
|Next Public Patch Release&lt;br /&gt;
|-&lt;br /&gt;
|'''Requested by'''&lt;br /&gt;
|Product Management&lt;br /&gt;
|Product Management, Professional Services&lt;br /&gt;
|Support, QA, Product Management, Professional Services&lt;br /&gt;
|Entitled Customer (Support, Professional Services)&lt;br /&gt;
|Entitled Customer (Support, Professional Services), Product Management&lt;br /&gt;
|-&lt;br /&gt;
|'''Compatibility requirements/backward compatibility'''&lt;br /&gt;
|&lt;br /&gt;
|Database updates, Changes of configuration files&lt;br /&gt;
|Backward compatibility to last major release. In urgent cases there could be database updates or configuration file changes&lt;br /&gt;
|Backward compatibility to last major release&lt;br /&gt;
|Backward compatibility to last major release&lt;br /&gt;
|-&lt;br /&gt;
|'''Test Efforts OX (QA)'''&lt;br /&gt;
|Smoke Tests, Always Tests, Bug Fix Tests, Feature Tests, Dependencies Tests, Heuristic Tests, Performance Tests&lt;br /&gt;
|Smoke Tests, Always Tests, Bug Fix Tests, Feature Tests, Dependencies Tests, Heuristic Tests, Performance Tests&lt;br /&gt;
|Smoke Test, Always Tests, Bug Fix Tests, Dependencies Tests, Heuristic Tests, Performance Tests&lt;br /&gt;
|Smoke Tests, Always Tests, Bug Fix Tests - Support: Fix Approval&lt;br /&gt;
|Smoke Tests, Always Tests, Bug Fix Tests - Fix Approval&lt;br /&gt;
|-&lt;br /&gt;
|'''Test Efforts Customer/Partner'''&lt;br /&gt;
|Smoke Tests, Bug Fix Tests, New Feature Tests, Integration Tests&lt;br /&gt;
|Smoke Tests, Bug Fix Tests, New Feature Tests, Integration Tests&lt;br /&gt;
|Smoke Tests, Bug Fix Tests, Integration Tests&lt;br /&gt;
|Smoke Tests, Bug Fix Approval&lt;br /&gt;
|Smoke Tests&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open-Xchange Server 6 ==&lt;br /&gt;
&lt;br /&gt;
=== Editions ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; width=&amp;quot;50&amp;quot;|Abbreviation&lt;br /&gt;
!align=&amp;quot;left&amp;quot; width=&amp;quot;200&amp;quot;|Description&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |Target usage&lt;br /&gt;
|-&lt;br /&gt;
|OX:HE&lt;br /&gt;
|Open-Xchange Hosting Edition&lt;br /&gt;
|Designed for organizations that want to provide a scalable, multi-tenant e-mail and collaboration solution to their customers. Focus:  Software-as-a-Service offerings&lt;br /&gt;
|-&lt;br /&gt;
|OX:SE&lt;br /&gt;
|Open-Xchange Server Edition&lt;br /&gt;
|Designed for medium and large size organizations, educational institutions and public administrations seeking a customizable communication solution. Focus: System Integrators&lt;br /&gt;
|-&lt;br /&gt;
|OX:SEforUCS&lt;br /&gt;
|Open-Xchange Server Edition for Univention Corporate Server&lt;br /&gt;
|Integration to in-house customer environments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Open-Xchange App Suite ==&lt;br /&gt;
&lt;br /&gt;
=== Editions ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; width=&amp;quot;50&amp;quot;|Abbreviation&lt;br /&gt;
!align=&amp;quot;left&amp;quot; width=&amp;quot;200&amp;quot;|Description&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |Target usage&lt;br /&gt;
|-&lt;br /&gt;
|OX App Suite&lt;br /&gt;
|Open-Xchange App Suite Community Version&lt;br /&gt;
|Need to revitalize business growth and increase your competitive advantage? OX App Suite integrates smoothly into existing infrastructures and massively scales across multi-tenant architectures securely and reliably. Offer your users a seamless messaging experience to deliver branded, app-economy services and take back the user experience. German engineered and designed for a mobile world, OX App Suite uses open API's to deliver device independent access to email and messaging, social collaboration and digital media via a rich web-based interface. Through a modular App-based portal, HTML5 interoperability gives providers a new basis to up-sell and cross-sell white-labeled services and mobile applications.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Releases ==&lt;br /&gt;
&lt;br /&gt;
===[http://oxpedia.org/wiki/index.php?title=Versioning_and_Numbering_2007 2007]===&lt;br /&gt;
&lt;br /&gt;
===[http://oxpedia.org/wiki/index.php?title=Versioning_and_Numbering_2008 2008]===&lt;br /&gt;
&lt;br /&gt;
===[http://oxpedia.org/wiki/index.php?title=Versioning_and_Numbering_2009 2009]===&lt;br /&gt;
&lt;br /&gt;
===[http://oxpedia.org/wiki/index.php?title=Versioning_and_Numbering_2010 2010]===&lt;br /&gt;
&lt;br /&gt;
===[http://oxpedia.org/wiki/index.php?title=Versioning_and_Numbering_2011 2011]===&lt;br /&gt;
&lt;br /&gt;
===[http://oxpedia.org/wiki/index.php?title=Versioning_and_Numbering_2012 2012]===&lt;br /&gt;
&lt;br /&gt;
===[http://oxpedia.org/wiki/index.php?title=Versioning_and_Numbering_2013 2013]===&lt;br /&gt;
&lt;br /&gt;
===[http://oxpedia.org/wiki/index.php?title=Versioning_and_Numbering_2014 2014]===&lt;br /&gt;
&lt;br /&gt;
===2015 ===&lt;br /&gt;
&lt;br /&gt;
'''Please Note: Minor and Major Product Releases in bold'''&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |GA&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |Product&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |Major Release&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |Minor Release&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |Public Patch Releases&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |Shipped Packages&lt;br /&gt;
|-&lt;br /&gt;
|2015-01-12&lt;br /&gt;
|OX App Suite / OX 6 Backend v7.4.2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[[File:check.gif]]&lt;br /&gt;
|Open-Xchange App Suite / OX 6 backend backend 7.4.2-rev42&lt;br /&gt;
|-&lt;br /&gt;
|2015-01-12&lt;br /&gt;
|OX App Suite / OX 6 Backend v7.6.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[[File:check.gif]]&lt;br /&gt;
|Open-Xchange App Suite / OX 6 backend 7.6.0-rev36&lt;br /&gt;
|-&lt;br /&gt;
|2015-01-12&lt;br /&gt;
|OX App Suite / OX 6 Backend v7.6.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[[File:check.gif]]&lt;br /&gt;
|Open-Xchange App Suite / OX 6 backend v7.6.1-rev14&amp;lt;br&amp;gt;Open-Xchange App Suite frontend v7.6.1-rev11&amp;lt;br&amp;gt;Open-Xchange Documentconverter v7.6.1-rev7&lt;br /&gt;
|-&lt;br /&gt;
|2015-01-14&lt;br /&gt;
|OX Guard v1.2.0&lt;br /&gt;
|&lt;br /&gt;
|[[File:check.gif]]&lt;br /&gt;
|&lt;br /&gt;
|Open-Xchange Guard backend 1.2.0-rev4&amp;lt;br&amp;gt;Open-Xchange Guard frontend 1.2.0-rev3&lt;br /&gt;
|-&lt;br /&gt;
|2015-01-22&lt;br /&gt;
|OX Documents v7.6.1 &amp;amp; OX Guard v1.2.0 for Univention Corporate Server&lt;br /&gt;
|&lt;br /&gt;
|[[File:check.gif]]&lt;br /&gt;
|&lt;br /&gt;
|OX Documents office-web v7.6.1-10&amp;lt;br&amp;gt;OX Documents office v7.6.1-9&amp;lt;br&amp;gt;OX Documents calcengine v7.6.1-9&amp;lt;br&amp;gt;Open-Xchange Guard backend 1.2.0-rev4&amp;lt;br&amp;gt;Open-Xchange Guard frontend 1.2.0-rev3&lt;br /&gt;
|-&lt;br /&gt;
|2015-01-27&lt;br /&gt;
|OX App Suite / OX 6 Backend v7.6.1 / OX Documents v7.6.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[[File:check.gif]]&lt;br /&gt;
|Open-Xchange App Suite / OX 6 backend v7.6.1-rev16&amp;lt;br&amp;gt;Open-Xchange App Suite frontend v7.6.1-rev12&amp;lt;br&amp;gt;Open-Xchange App Suite USM v7.6.1-rev8&amp;lt;br&amp;gt;OX Documents App Suite office-web v7.6.1-11&lt;br /&gt;
|-&lt;br /&gt;
|2015-02-02&lt;br /&gt;
|OX Guard v1.2.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[[File:check.gif]]&lt;br /&gt;
|Open-Xchange Guard backend 1.2.0-rev5&lt;br /&gt;
|-&lt;br /&gt;
|2015-02-09&lt;br /&gt;
|OX App Suite v7.6.1 / OX 6 Backend v7.6.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[[File:check.gif]]&lt;br /&gt;
|Open-Xchange App Suite / OX 6 backend v7.6.1-rev18&amp;lt;br&amp;gt;Open-Xchange App Suite frontend v7.6.1-rev14&lt;br /&gt;
|-&lt;br /&gt;
|2015-02-10&lt;br /&gt;
|OX App Suite Frontend v7.6.1 &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[[File:check.gif]]&lt;br /&gt;
|Open-Xchange App Suite frontend v7.6.1-rev15&lt;br /&gt;
|-&lt;br /&gt;
|2015-02-13&lt;br /&gt;
|OX Connector for Business Mobility &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[[File:check.gif]]&lt;br /&gt;
|Open-Xchange App Suite EAS 7.6.1-rev8&lt;br /&gt;
|-&lt;br /&gt;
|2015-02-25&lt;br /&gt;
|OX Messenger v1.0.0&lt;br /&gt;
|[[File:check.gif]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Open-Xchange Messenger v1.0.0-rev13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Maintenance expires==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |Product-, Release- and Component Name&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |Planned Maintance expires&lt;br /&gt;
|-&lt;br /&gt;
|Starting with release v7.6.1, Open-Xchange supports Apple iOS 8 for mobile and tablet devices. Open-Xchange will discontinue support for Apple iOS 6 with the next minor release of OX App Suite, v7.6.2, planned for Q1 2015.&lt;br /&gt;
|v7.6.2, planned for Q1 2015&lt;br /&gt;
|-&lt;br /&gt;
|Starting with release v7.6.1, Open-Xchange will support the new Apple Mac OS X 10.10 Yosemite (after the final launch) for Calendar/Contact synchronization and OX Drive. Open-Xchange will discontinue support for Apple Mac OS X 10.8 Mountain Lion with the next minor release of OX App Suite, v7.6.2, planned for Q1 2015.&lt;br /&gt;
|v7.6.2, planned for Q1 2015&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange will discontinue support for Debian Squeeze (Debian 6) with the next major release of OX App Suite v7.8.0, planned for Q2 2015. We encourage administrators to update to the latest operating system version of Debian.&lt;br /&gt;
|v7.8.0, planned for Q2 2015&lt;br /&gt;
|-&lt;br /&gt;
|With the v7.8.0 release, Open-Xchange will discontinue support for the Random Token login method (sometimes also called Easy Login). Specifically, this means that the &amp;quot;login?action=redirect&amp;quot; call (see http://oxpedia.org/wiki/index.php?title=HTTP_API#Redirect) will be removed. Furthermore, the &amp;quot;com.openexchange.ajax.login.randomToken&amp;quot; setting will be removed from the &amp;quot;login.properties&amp;quot; file, and the &amp;quot;login?action=login&amp;quot; call will never contain the &amp;quot;random&amp;quot; token. We strongly encourage users of the Random Token login method to change their custom login implementations and use one of the supported methods.&lt;br /&gt;
|v7.8.0, planned for Q2 2015&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Maintenance expired (Archive)==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |Product-, Release- and Component Name&lt;br /&gt;
!align=&amp;quot;left&amp;quot; |Maintance expired&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange discontinued support of all old Android stock browsers on mobile and tablet devices with the release of OX App Suite v7.6.1. OX App Suite is only supported on the new official stock browser, Chrome on Android.&lt;br /&gt;
|Since OX App Suite v7.6.1: 2014-10-15&lt;br /&gt;
|-&lt;br /&gt;
|Support for AJP based communication between the HTTP server and the OX backend server. Open-Xchange already provides a new HTTP connector which is based on the Grizzly project. Download and configuration instructions are available at http://oxpedia.org/wiki/index.php?title=AppSuite:Grizzly&lt;br /&gt;
|Since OX App Suite v7.6.0: 2014-06-25&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange discontinued OX App Suite web frontend support for Internet Explorer 9 with the major release of OX App Suite v7.6.0.&lt;br /&gt;
|Since OX App Suite v7.6.0: 2014-06-25&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange discontinued Open-Xchange Server 6 and OX App Suite calendar and contact synchronization (CalDAV/CardDAV) support for Mac OS X 10.6 (Snow Leopard) and Mac OS X 10.7 (Lion) with the major release of OX App Suite v7.6.0.&lt;br /&gt;
|Since OX App Suite v7.6.0: 2014-06-25&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange discontinued Connector for Business Mobility support for Windows Mobile 6, 6.5, Symbian (Mail for Exchange 3.x), Apple iPhone iOS 5 and Blackberry with the major release of OX App Suite v7.6.0.&lt;br /&gt;
|Since OX App Suite v7.6.0: 2014-06-25&lt;br /&gt;
|-&lt;br /&gt;
|With OX App Suite v7.4.2, the name of the “Files” app was changed to “Drive”. As part of our product strategy we developed clients for different desktop and mobile devices to provide improved file handling and synchronization.&lt;br /&gt;
|Since OX App Suite v7.4.2: 2014-02-11&lt;br /&gt;
|-&lt;br /&gt;
|Debian 7 (Wheezy) was released by the Debian project on May 4th 2013. Both OX App Suite and Open-Xchange Server 6 support Debian 7 with OpenJDK 7 and MySQL 5.5 with this release of OX App Suite. Please note that the combination Debian 7 / OpenJDK 6 or Sun Java 6 will not be supported as a platform by Open-Xchange.&lt;br /&gt;
|Since OX App Suite v7.4.0: 2013-09-26&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange discontinued support for the currently available &amp;quot;showruntimestats&amp;quot; monitoring function (which fetches runtime information from the Java virtual machine and about the Open-Xchange Groupware backend). With OX App Suite v7.4.0, there is a new monitoring function using Jolokia for Open-Xchange. From v7.4.0 onwards, this is located inside the Open-Xchange Bundle and configured by jolokia.properties. Further information can be found at http://oxpedia.org/wiki/index.php?title=Jolokia&lt;br /&gt;
|Since OX App Suite v7.4.0: 2013-09-26&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange provided a new LDAP Contact Storage Integration Bundle. Open-Xchange discontinued support for the old bundle with OX App Suite v7.2.1. Further configuration information is available at the Open-Xchange Knowledgebase under: http://oxpedia.org/wiki/index.php?title=ContactStorageLDAP&lt;br /&gt;
|Since OX App Suite v7.2.1: 2013-05-27&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== What version do I have installed ==&lt;br /&gt;
&lt;br /&gt;
Check [[UpdatingOXPackages#What_Service_Pack_do_I_have_installed.3F|this article]] to find out.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: OX7]]&lt;br /&gt;
[[Category: AppSuite]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=OX6:Using_Brands/Whitelabeling_with_Open-Xchange_Hosting_Edition&amp;diff=19013</id>
		<title>OX6:Using Brands/Whitelabeling with Open-Xchange Hosting Edition</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=OX6:Using_Brands/Whitelabeling_with_Open-Xchange_Hosting_Edition&amp;diff=19013"/>
		<updated>2015-01-13T14:36:09Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Using multiple brands in Open-Xchange  =&lt;br /&gt;
&lt;br /&gt;
== Task == &lt;br /&gt;
&lt;br /&gt;
You want to host the contexts of different brands in a single installation. These brands vary in some of their branding settings. You can define all these different brands via simple configuration files. A brand consists of a definition of properties like product name, logout url, session timeout url and also different [[Upsell]] properties to use.&lt;br /&gt;
&lt;br /&gt;
== Requirements == &lt;br /&gt;
&lt;br /&gt;
Please make sure you have the package &amp;lt;code&amp;gt;open-xchange-hostname-config-cascade&amp;lt;/code&amp;gt; installed. Else the generated URLs for publications and notification mails won´t contain the branded domain/host name.&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
Let's consider three brands we want to configure. We'll call them &amp;quot;Groupware4You&amp;quot;, &amp;quot;CollaborationPro&amp;quot; and &amp;quot;OneStopShop&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Branding in OX is governed by various ui properties. Please note that these examples are primarily OX6 frontend properties. App Suite uses different ones which are not covered here to explain the concept. With these you can:&lt;br /&gt;
&lt;br /&gt;
* Change the help path (ui/global/help/help_path)&lt;br /&gt;
* Change the FAQ path (ui/global/help/faq_path)&lt;br /&gt;
* Change where the ui redirects to, on logout (ui/global/logout_path)&lt;br /&gt;
* Change where the ui redirects to on session expiration (ui/global/sessionExpired_path)&lt;br /&gt;
* Change the ui direct link path (ui/global/directLink_path)&lt;br /&gt;
* Change the url of the page that suggests UWA widgets (ui/global/uwa/link)&lt;br /&gt;
* Change the product name in the about dialog (ui/product/name)&lt;br /&gt;
* Change the product description in the about dialog (ui/product/description)&lt;br /&gt;
* Change the vendor address in the about dialog (ui/product/vendor/address)&lt;br /&gt;
* Change the path where the themes can be found (ui/global/theme/path)&lt;br /&gt;
* Change the hostname for notification mails / publication URLs etc (com.openexchange.hostname)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, we create the default branding settings in the file '''/opt/open-xchange/etc/groupware/settings/branding.properties'''&lt;br /&gt;
&lt;br /&gt;
    ui/global/help/help_path=[protocol]://groupware4you.com[path]/help/[language]&lt;br /&gt;
    ui/global/help/faq_path=[protocol]://groupware4you.com[path]/faq&lt;br /&gt;
    ui/global/logout_path=[protocol]://groupware4you.com[path]/logout&lt;br /&gt;
    ui/global/sessionExpired_path=[protocol]://groupware4you.com[path]/sessionExpired&lt;br /&gt;
    ui/global/directLink_path=[protocol]://groupware4you.com[path]#m=[module]&amp;amp;f=[folder]&amp;amp;i=[object_id]&lt;br /&gt;
    ui/global/uwa/link=http://groupware4you.com/uwa/widgets.html&lt;br /&gt;
    ui/product/name=Groupware 4 You&lt;br /&gt;
    ui/product/description=Groupware 4 You - The groupware for everyone&lt;br /&gt;
    ui/product/vendor/address=Some Address&lt;br /&gt;
    ui/global/theme/path=themes/&lt;br /&gt;
    modules/themes/default=GW4U Theme&lt;br /&gt;
&lt;br /&gt;
In '''/opt/open-xchange/etc/groupware/system.properties''' add the line:&lt;br /&gt;
com.openexchange.hostname=groupware4you.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, let's define the two other brands. If a context belongs to a certain brand, the branding options will be overridden by the config cascade.&lt;br /&gt;
&lt;br /&gt;
Create a file '''/opt/open-xchange/etc/groupware/contextSets/branding.yml'''.&lt;br /&gt;
&lt;br /&gt;
    cpro:&lt;br /&gt;
        withTags: cpro&lt;br /&gt;
        ui/global/help/help_path: &amp;quot;[protocol]://collabpro.com[path]/help/[language]&amp;quot;&lt;br /&gt;
        ui/global/help/faq_path: &amp;quot;[protocol]://collabpro.com[path]/faq&amp;quot;&lt;br /&gt;
        ui/global/logout_path: &amp;quot;[protocol]://collabpro.com[path]/logout&amp;quot;&lt;br /&gt;
        ui/global/sessionExpired_path: &amp;quot;[protocol]://collabpro.com[path]/sessionExpired&amp;quot;&lt;br /&gt;
        ui/global/directLink_path: &amp;quot;[protocol]://collabpro.com[path]#m=[module]&amp;amp;f=[folder]&amp;amp;i=[object_id]&amp;quot;&lt;br /&gt;
        ui/global/uwa/link: &amp;quot;http://collabpro.com/uwa/widgets.html&amp;quot;&lt;br /&gt;
        ui/product/name: &amp;quot;CollaborationPro&amp;quot;&lt;br /&gt;
        ui/product/description: &amp;quot;Don't just be a team, be a unit&amp;quot;&lt;br /&gt;
        ui/product/vendor/address: &amp;quot;Some Address&amp;quot;&lt;br /&gt;
        ui/global/theme/path: &amp;quot;themes/cpro/&amp;quot;&lt;br /&gt;
        com.openexchange.hostname: &amp;quot;collabpro.com&amp;quot;&lt;br /&gt;
        modules/themes/default: &amp;quot;Collab Theme&amp;quot;&lt;br /&gt;
       &lt;br /&gt;
    oss:&lt;br /&gt;
        withTags: oss&lt;br /&gt;
        ui/global/help/help_path: &amp;quot;[protocol]://OneStopShop.com[path]/help/[language]&amp;quot;&lt;br /&gt;
        ui/global/help/faq_path: &amp;quot;[protocol]://OneStopShop.com[path]/faq&amp;quot;&lt;br /&gt;
        ui/global/logout_path: &amp;quot;[protocol]://OneStopShop.com[path]/logout&amp;quot;&lt;br /&gt;
        ui/global/sessionExpired_path: &amp;quot;[protocol]://OneStopShop.com[path]/sessionExpired&amp;quot;&lt;br /&gt;
        ui/global/directLink_path: &amp;quot;[protocol]://OneStopShop.com[path]#m=[module]&amp;amp;f=[folder]&amp;amp;i=[object_id]&amp;quot;&lt;br /&gt;
        ui/global/uwa/link: &amp;quot;http://OneStopShop.com/uwa/widgets.html&amp;quot;&lt;br /&gt;
        ui/product/name: &amp;quot;One Stop Shop&amp;quot;&lt;br /&gt;
        ui/product/description: &amp;quot;One Stop Shop - Be informed&amp;quot;&lt;br /&gt;
        ui/product/vendor/address: &amp;quot;Some Address&amp;quot;&lt;br /&gt;
        ui/global/theme/path: &amp;quot;themes/oss/&amp;quot;&lt;br /&gt;
        com.openexchange.hostname: &amp;quot;OneStopShop.com&amp;quot;&lt;br /&gt;
        modules/themes/default: &amp;quot;OSS Theme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Important''': In the folder pointed to using &amp;lt;tt&amp;gt;ui/global/theme/path&amp;lt;/tt&amp;gt; must be located a folder called &amp;quot;default&amp;quot; containing the default&lt;br /&gt;
theme that brand should use. In addition, if you might want to remove the entries in the &amp;lt;tt&amp;gt;themes.properties&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;/opt/open-xchange/etc/groupware/settings&amp;lt;/tt&amp;gt;&lt;br /&gt;
if users should only see themes depending on their brand.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we'll tag the contexts. This will assign the contexts to a certain brand.&lt;br /&gt;
&lt;br /&gt;
''Groupware4You Contexts''&lt;br /&gt;
   '''changecontext -c1 ... --taxonomy/types=gw4u'''&lt;br /&gt;
   '''changecontext -c2 ... --taxonomy/types=gw4u'''&lt;br /&gt;
&lt;br /&gt;
''CollaborationPro Contexts''&lt;br /&gt;
   '''changecontext -c3 ... --taxonomy/types=cpro'''&lt;br /&gt;
   '''changecontext -c4 ... --taxonomy/types=cpro'''&lt;br /&gt;
&lt;br /&gt;
''OneStopShop Contexts''&lt;br /&gt;
   '''changecontext -c5 ... --taxonomy/types=oss'''&lt;br /&gt;
   '''changecontext -c6 ... --taxonomy/types=oss'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Branding_links_to_send_in_email.png|290px|thumb|left|links_in_email]] &lt;br /&gt;
&lt;br /&gt;
[[File:Branding_logout_url.png|290px|thumb|left|logouturl]] &lt;br /&gt;
&lt;br /&gt;
[[File:Branding_about_dialog_infostore_urls.png|290px|thumb|left|about_dialog_wizzard]] &lt;br /&gt;
&lt;br /&gt;
[[File:Branding_theme_wizzard_hostname.png|290px|thumb|left|wizzard_theme]]&lt;br /&gt;
&lt;br /&gt;
== Programming examples ==&lt;br /&gt;
&lt;br /&gt;
=== perl ===&lt;br /&gt;
&lt;br /&gt;
The file http://software.open-xchange.com/OX6/doc/SOAP/admin/branding-example.pl is an example on how to implement it in perl.&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
Check [[Open-Xchange-SOAP-C-Sharp|Provision using C#]] on how to do the same in C#.&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Guard&amp;diff=18707</id>
		<title>AppSuite:OX Guard</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Guard&amp;diff=18707"/>
		<updated>2014-10-10T12:01:26Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* SUSE Linux Enterprise Server 11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OX Guard =&lt;br /&gt;
&lt;br /&gt;
OX Guard is a security solution that provides protection for email communications and files. Fully integrated with both OX as a Service and standard OX App Suite installations, it allows users to send and read encrypted messages and store and share encrypted files – and requires no additional setup or knowledge. OX Guard offers a simple way to increase security by limiting the opportunity for unauthorized access while data is en-route or in-storage, creating extra peace of mind.&lt;br /&gt;
&lt;br /&gt;
This article will guide you through the installation of Guard and describes the basic configuration and software requirements. As it is intended as a quick walk-through it assumes an existing installation of the operating system including a single server App Suite setup as well as average system administration skills. This guide will also show you how to setup a basic installation with none of the typically used distributed environment settings. The objective of this guide is:&lt;br /&gt;
&lt;br /&gt;
* To setup a single server installation&lt;br /&gt;
* To setup a single Guard instance on an existing Open-Xchange installation, no cluster&lt;br /&gt;
* To use the database service on the existing Open-Xchange installation for Guard, no replication&lt;br /&gt;
* To provide a basic configuration setup, no mailserver configuration&lt;br /&gt;
&lt;br /&gt;
== Key features ==&lt;br /&gt;
&lt;br /&gt;
* Simple security at the touch of a button&lt;br /&gt;
* Provides user based security - Separate from provider&lt;br /&gt;
* Supplementary security to Provider based security - Layered&lt;br /&gt;
* Powerful features yet simple to use and understand&lt;br /&gt;
* Security - Inside and outside of the OX environment&lt;br /&gt;
* Email and Drive integration&lt;br /&gt;
* Uses proven PGP security&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
If an OX App Suite customer would like to evaluate OX Guard integration, the first step is to contact OX Sales. OX Sales will then work on the request and send prices and license/API (for the hosted infrastructure) key details to the customer.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
Please review following URL for remaining requirements  &lt;br /&gt;
&lt;br /&gt;
Please review [[AppSuite:OX_System_Requirements#OX_Guard|OX Guard Requirements]] for a full list of requirements.&lt;br /&gt;
&lt;br /&gt;
Since OX Guard is a Microservice it can either be added to an existing Open-Xchange installation or it can be deployed on a dedicated environment without having any of the other Open-Xchange App Suite core services installed. OX App Suite v7.6.0 or later is required to operate this extension both in a single or multi server environments.&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* Open-Xchange REST API&lt;br /&gt;
* Grizzly HTTP connector (open-xchange-grizzly)&lt;br /&gt;
* A supported Java Virtual Machine (Java 7)&lt;br /&gt;
* An Open-Xchange App Suite installation v7.6.0 or later&lt;br /&gt;
* Please Note: To get access to the latest minor features and bug fixes, you need to have a valid license. The article [[AppSuite:UpdatingOXPackages|Updating OX-Packages]] explains how that can be done.&lt;br /&gt;
&lt;br /&gt;
== Please Note ==&lt;br /&gt;
&lt;br /&gt;
OX Guard version 1.0 supports branding / theming using the configuration cascade, defining a templateID for a user or context.  Additional details will be provided in customization documentation&lt;br /&gt;
&lt;br /&gt;
= Download and Installation =&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
The installation of the open-xchange-rest package which is required for Guard will eventually execute database update tasks if installed and activated. Please take this into account.&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|appsuite/stable/guard-backend}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|appsuite/stable/guard-ui}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum update&lt;br /&gt;
 $ yum install open-xchange-rest open-xchange-guard open-xchange-guard-ui open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|appsuite/stable/guard-backend}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|appsuite/stable/guard-ui}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-rest open-xchange-guard open-xchange-guard-ui open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
Add the package repository using zypper if not already present:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|appsuite/stable/guard-backend}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|appsuite/stable/guard-ui}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
 $ zypper in open-xchange-rest open-xchange-guard open-xchange-guard-ui open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
Guard requires Java 1.7, which will be installed through the Guard packages, still SUSE Linux Enterprise Server 11 will not use Java 1.7 by default. Therefor we have to set Java 1.7 as the default instead of Java 1.6:&lt;br /&gt;
&lt;br /&gt;
 $ update-alternatives --config java&lt;br /&gt;
&lt;br /&gt;
Now select the Java 1.7 JRE, example:&lt;br /&gt;
&lt;br /&gt;
 There are 2 alternatives which provide `java'.&lt;br /&gt;
&lt;br /&gt;
   Selection    Alternative&lt;br /&gt;
 -----------------------------------------------&lt;br /&gt;
 *         1    /usr/lib64/jvm/jre-1.6.0-ibm/bin/java&lt;br /&gt;
  +        2    /usr/lib64/jvm/jre-1.7.0-ibm/bin/java&lt;br /&gt;
 &lt;br /&gt;
 Press enter to keep the default[*], or type selection number: 2&lt;br /&gt;
 Using '/usr/lib64/jvm/jre-1.7.0-ibm/bin/java' to provide 'java'.&lt;br /&gt;
&lt;br /&gt;
= Update OX Guard =&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|appsuite/7.6.0/guard-backend/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|appsuite/7.6.0/guard-ui/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum update&lt;br /&gt;
 $ yum upgrade&lt;br /&gt;
&lt;br /&gt;
After the new packages are installed, the guard process needs a restart:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;$ /etc/init.d/open-xchange-guard restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|appsuite/7.6.0/guard-backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|appsuite/7.6.0/guard-ui/updates}}&lt;br /&gt;
&lt;br /&gt;
Then run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get dist-upgrade&lt;br /&gt;
&lt;br /&gt;
If you want to see, what apt-get is going to do without actually doing it, you can run:&lt;br /&gt;
&lt;br /&gt;
 $ apt-get dist-upgrade -s&lt;br /&gt;
&lt;br /&gt;
After the new packages are installed, the guard process needs a restart:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;$ /etc/init.d/open-xchange-guard restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
Add the package repository using zypper if not already present:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|appsuite/7.6.0/guard-backend/updates}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|appsuite/7.6.0/guard-ui/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper dup -r appsuite-7.6.0-guard-backend-updates&lt;br /&gt;
 $ zypper dup -r appsuite-7.6.0-guard-ui-updates&lt;br /&gt;
&lt;br /&gt;
You might need to run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
&lt;br /&gt;
to update the repository metadata before running ''zypper up''.&lt;br /&gt;
&lt;br /&gt;
After the new packages are installed, the guard process needs a restart:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;$ open-xchange-guard restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
&lt;br /&gt;
The following gives an overview of the most important settings to enable Guard for users on the Open-Xchange installation. Some of those settings have to be modified in order to establish the database and REST API access from the Guard service. All settings relating to the Guard backend component are located in the configuration file guard.properties located in /opt/open-xchange/guard/etc. The default configuration should be sufficient for a basic &amp;quot;up-and-running&amp;quot; setup (with the exception of defining the database username and password). Please refer to the inline documentation of the configuration file for more advanced options.&lt;br /&gt;
&lt;br /&gt;
 $ vim /opt/open-xchange/guard/etc/guard.properties&lt;br /&gt;
&lt;br /&gt;
Open-Xchange config_db host - Guard will establish a connection to the config_db&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.configdbHostname=localhost&lt;br /&gt;
&lt;br /&gt;
Guard database for storing user keys&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.oxguardDatabaseHostname=localhost&lt;br /&gt;
&lt;br /&gt;
Username and Password for the two databases above&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.databaseUsername=openexchange&lt;br /&gt;
 com.openexchange.guard.databasePassword=db_password&lt;br /&gt;
&lt;br /&gt;
Open-Xchange REST API host&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.restApiHostname=localhost&lt;br /&gt;
&lt;br /&gt;
External URL for this Open-Xchange installation. This setting will be used to generate the link to the secure content for external recipients&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.externalEmailURL=URL_TO_OX&lt;br /&gt;
&lt;br /&gt;
== Configure services ==&lt;br /&gt;
&lt;br /&gt;
=== Apache ===&lt;br /&gt;
&lt;br /&gt;
Configure the mod_proxy_http module by adding the Guard API.&lt;br /&gt;
&lt;br /&gt;
'''Redhat Enterprise Linux 6 or CentOS 6'''&lt;br /&gt;
 $ vim /etc/httpd/conf.d/proxy_http.conf&lt;br /&gt;
&lt;br /&gt;
'''Debian GNU/Linux 7.0 and SUSE Linux Enterprise Server 11'''&lt;br /&gt;
 $ vim /etc/apache2/conf.d/proxy_http.conf&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Proxy balancer://oxguard&amp;gt;&lt;br /&gt;
        Order deny,allow&lt;br /&gt;
        Allow from all&amp;lt;br&amp;gt;&lt;br /&gt;
        BalancerMember http://localhost:8080/oxguard timeout=1800 smax=0 ttl=60 retry=60 loadfactor=100 route=OX1&lt;br /&gt;
        ProxySet stickysession=JSESSIONID|jsessionid scolonpathdelim=ON&lt;br /&gt;
        SetEnv proxy-initial-not-pooled&lt;br /&gt;
        SetEnv proxy-sendchunked&lt;br /&gt;
 &amp;lt;/Proxy&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 ProxyPass /appsuite/api/oxguard balancer://oxguard&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' The Guard API settings must be inserted before the existing “&amp;lt;Proxy /appsuite/api&amp;gt;” parameter.&lt;br /&gt;
&lt;br /&gt;
After the configuration is done, restart the Apache webserver&lt;br /&gt;
&lt;br /&gt;
 $ apachectl restart&lt;br /&gt;
&lt;br /&gt;
=== Open-Xchange ===&lt;br /&gt;
&lt;br /&gt;
Please add the following settings to a new configuration file on the Open-Xchange backend servers:&lt;br /&gt;
&lt;br /&gt;
 $ vim /opt/open-xchange/etc/guard.properties&lt;br /&gt;
&lt;br /&gt;
 # OX GUard general permission, required to activate Guard in the AppSuite UI.&lt;br /&gt;
 com.openexchange.capability.guard=true&lt;br /&gt;
 &lt;br /&gt;
 # Default theme template id for all users that have no custom template id configured.&lt;br /&gt;
 com.openexchange.guard.templateID=0&lt;br /&gt;
&lt;br /&gt;
=== SELinux ===&lt;br /&gt;
&lt;br /&gt;
Running SELinux prohibits your local Open-Xchange backend service to connect to localhost:8080, which is where the Guard backend service listens to. In order to allow localhost connections to 8080 execute the following:&lt;br /&gt;
&lt;br /&gt;
 $ setsebool -P httpd_can_network_connect 1&lt;br /&gt;
&lt;br /&gt;
== Initiating the Guard database and key store ==&lt;br /&gt;
&lt;br /&gt;
Once the Guard configuration (database and backend configuration) and the service configuration has been applied, the Guard administration script needs to be executed in order to create the Guard databases. The administration script also takes care of the creation of the master keys and the master password file in /opt/open-xchange/guard. The initiation only needs to be done once for a multi server setup, for details please see “Optional / Clustering”.&lt;br /&gt;
&lt;br /&gt;
 /opt/open-xchange/guard/sbin/guard init&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' It is important to understand that the master password file located at /opt/open-xchange/guard/oxguardpass is required to reset user passwords, without them the administrator will not be able to reset user passwords anymore in the future. The file contains the passwords used to encrypt the master database key, as well as passwords used to encrypt protected data in the users table.&lt;br /&gt;
&lt;br /&gt;
== Start Guard ==&lt;br /&gt;
&lt;br /&gt;
The services have been configured and the database has been initiated, it's time to start Guard&lt;br /&gt;
&lt;br /&gt;
 $ /etc/init.d/open-xchange-guard start&lt;br /&gt;
&lt;br /&gt;
== Enabling Guard for Users ==&lt;br /&gt;
&lt;br /&gt;
Guard provides two capabilities for users in the environment:&lt;br /&gt;
&lt;br /&gt;
* '''Guard Mail:''' com.openexchange.capability.guard:mail&lt;br /&gt;
* '''Guard Drive:''' com.openexchange.capability.guard:drive&lt;br /&gt;
&lt;br /&gt;
Each of those two Guard components is enabled for all users that have the according capability configured. Please note that users need to have the Drive permission set to use Guard Drive. So the users that have Guard Drive enabled must be a subset of those users with OX Drive permission. Since v7.6.0 we enforce this via the default configuration. Those capabilities can be activated for specific user by using the Open-Xchange provisioning scripts:&lt;br /&gt;
&lt;br /&gt;
'''Guard Mail:'''&lt;br /&gt;
 $ /opt/open-xchange/sbin/changeuser -c 1 -A oxadmin -P admin_password -u testuser --config/com.openexchange.capability.guard:mail=true&lt;br /&gt;
&lt;br /&gt;
'''Guard Drive:'''&lt;br /&gt;
 $ /opt/open-xchange/sbin/changeuser -c 1 -A oxadmin -P admin_password -u testuser --config/com.openexchange.capability.guard:drive=true&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' Guard Drive requires Guard Mail to be configured for the user as well.&lt;br /&gt;
&lt;br /&gt;
== Optional ==&lt;br /&gt;
&lt;br /&gt;
=== SSL Configuration ===&lt;br /&gt;
&lt;br /&gt;
Per default the connection between the Guard backend and the configured Open-Xchange REST API host is unencrypted. Even though that Guard will never transmit unencrypted emails to or from the REST API you can optionally encrypt the whole communication between those two components by using SSL. To enforce Guard to use SSL in the communication between those two components enable the follwing configuration in Guard configuration file. &lt;br /&gt;
&lt;br /&gt;
  $ vim /opt/open-xchange/guard/etc/guard.properties&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.guard.backend_ssl=true&lt;br /&gt;
&lt;br /&gt;
The Guard backend is most commonly placed behind a load balancer (APACHE or other) and defaults to HTTP for incoming and outgoing traffic, using the load balancer to do SSL with the users.  If you want Guard to use SSL for all communications, you need to set up the SSL key to use.&lt;br /&gt;
&lt;br /&gt;
Please note that you have to provide access to the certificates.&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.useSSL: true&lt;br /&gt;
 com.openexchange.guard.SSLPort: 8443&lt;br /&gt;
 com.openexchange.guard.SSLKeyStore: //keystore location//&lt;br /&gt;
 com.openexchange.guard.SSLKeyName: //alias name here//&lt;br /&gt;
 com.openexchange.guard.SSLKeyPass: //ssl password//&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' Enabling SSL might decrease performance and/or create more system load due to additional encoding of the HTTP streams.&lt;br /&gt;
&lt;br /&gt;
== Clustering ==&lt;br /&gt;
&lt;br /&gt;
You can run multiple OX Guard servers in your environment to ensure high availability or enhance scalability. OX Guard integrates seamlessly into the existing Open-Xchange infrastructure by using the existing interface standards and is therefor transparent to the environment. A couple of things have to be prepared in order to loosely couple OX Guard servers with Open-Xchange servers in a cluster.&lt;br /&gt;
&lt;br /&gt;
=== MySQL ===&lt;br /&gt;
&lt;br /&gt;
The MySQL servers need to be configured in order to allow access to the configdb of Open-Xchange. To do so you need to set the following configuration in the MySQL my.cnf:&lt;br /&gt;
&lt;br /&gt;
 bind = 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
This allows the Guard backend to bind to the MySQL host which is configured in the guard.properties file with com.openexchange.guard.configdbHostname. After the bind for the MySQL instance is configured and the OX Guard backend would be able to connect to the configured host, you have to grant access for the OX Guard service on the MySQL instance to manage the databases. Do so by connecting to the MySQL server via the mysql client. Authenticate if necessary and execute the following, please note that you have to modify the hostname / IP address of the client who should be able to connect to this database, it should include all possible OX Guard servers:&lt;br /&gt;
&lt;br /&gt;
 GRANT ALL PRIVILEGES ON *.* TO 'openexchange'@'oxguard.example.com' IDENTIFIED BY ‘secret’;&lt;br /&gt;
&lt;br /&gt;
=== Apache ===&lt;br /&gt;
&lt;br /&gt;
OX Guard uses the Open-Xchange REST API to store and fetch data from the Open-Xchange databases. The REST API is a servlet running in the Grizzly container. By default it is not exposed as a servlet through Apache and is only accessibly via port 8009. In order to use Apache's load balancing via mod_proxy we need to add a servlet called &amp;quot;preliminary&amp;quot; to proxy_http.conf, example based on a clustered mod_proxy configuration:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Location /preliminary&amp;gt;&lt;br /&gt;
      Order Deny,Allow&lt;br /&gt;
      Deny from all&lt;br /&gt;
      # Only allow access from Guard servers within the network. Do not expose this&lt;br /&gt;
      # location outside of your network. In case you use a load balancing service in front&lt;br /&gt;
      # of your Apache infrastructure you should make sure that access to /preliminary will&lt;br /&gt;
      # be blocked from the internet / outside clients. Examples:&lt;br /&gt;
      # Allow from 192.168.0.1&lt;br /&gt;
      # Allow from 192.168.1.1 192.168.1.2&lt;br /&gt;
      # Allow from 192.168.0.&lt;br /&gt;
      ProxyPass /preliminary balancer://oxcluster/preliminary&lt;br /&gt;
 &amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that the balancer is properly configured in the mod_proxy configuration. Examples on how to do so can be found in our clustering configuration for Open-Xchange AppSuite. Like explained in the example above, please make sure that this location is only available in your internal network, there is no need to expose /preliminary to the public, it is only used by Guard servers to connect to the OX backend. If you have a load balancer in front of the Apache cluster you should consider blocking access to /preliminary from WAN to restrict access to the servlet to internal network services only.&lt;br /&gt;
&lt;br /&gt;
Now add the OX Guard BalancerMembers to the oxguard balancer configuration (also in proxy_http.conf) to address all your OX Guard nodes in the cluster in this balancer configuration. The configuration has to be applied to all Apache nodes within the cluster.&lt;br /&gt;
&lt;br /&gt;
If the Apache server is a dedicated server / instance you also have to install the OX Guard UI-Static package on all Apache nodes in the cluster in order to provide static files like images or CSS to the OX Guard client. Example for Debian (the OX Guard repository has to be configured in the package management prior):&lt;br /&gt;
&lt;br /&gt;
 $ apt-get install open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
=== Open-Xchange ===&lt;br /&gt;
&lt;br /&gt;
Disable the Open-Xchange IPCheck for session verification. This is required because OX Guard will use the users session cookie to connect to the Open-Xchange REST API, but as a different IP address than the OX Guard server has been used during authentication the request would fail if you don't disable the IPCheck:&lt;br /&gt;
&lt;br /&gt;
 $ vim /opt/open-xchange/etc/server.properties&lt;br /&gt;
&lt;br /&gt;
and set:&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.IPCheck=false&lt;br /&gt;
&lt;br /&gt;
The OX Guard UI package has to be installed on all Open-Xchange backend nodes as well, example for Debian (the OX Guard repository has to be configured in the package management prior):&lt;br /&gt;
&lt;br /&gt;
 $ apt-get install open-xchange-guard-ui&lt;br /&gt;
&lt;br /&gt;
Restart the Open-Xchange service afterwards.&lt;br /&gt;
&lt;br /&gt;
=== OX Guard ===&lt;br /&gt;
&lt;br /&gt;
After all the services like MySQL, Apache and Open-Xchange have been configured you need to update the OX Guard backend configuration to point to the correct API endpoints. Set the REST API endpoint to an Apache server by setting the following value in /opt/open-xchange/guard/etc/guard.properties:&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.restApiHostname=apache.example.com&lt;br /&gt;
&lt;br /&gt;
Per default Guard will try to connect to port 8009 to this host, but as we configured the REST API to be proxies thorugh the serblet /preliminary on every Apache we now also need to change the target port for the REST API. You can do so by adding the following line into /opt/open-xchange/guard/etc/guard.properties:&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.oxBackendPort=80&lt;br /&gt;
&lt;br /&gt;
Please also change all settings in regards to MySQL like com.openexchange.guard.configdbHostname, com.openexchange.guard.oxguardDatabaseHostname, com.openexchange.guard.databaseUsername or com.openexchange.guard.databasePassword. Afterwards restart the OX Guard service and check the logfile if the OX Guard backend is able to connect to the configured REST API.&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Guard&amp;diff=18706</id>
		<title>AppSuite:OX Guard</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Guard&amp;diff=18706"/>
		<updated>2014-10-10T12:00:50Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* Debian GNU/Linux 7.0 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OX Guard =&lt;br /&gt;
&lt;br /&gt;
OX Guard is a security solution that provides protection for email communications and files. Fully integrated with both OX as a Service and standard OX App Suite installations, it allows users to send and read encrypted messages and store and share encrypted files – and requires no additional setup or knowledge. OX Guard offers a simple way to increase security by limiting the opportunity for unauthorized access while data is en-route or in-storage, creating extra peace of mind.&lt;br /&gt;
&lt;br /&gt;
This article will guide you through the installation of Guard and describes the basic configuration and software requirements. As it is intended as a quick walk-through it assumes an existing installation of the operating system including a single server App Suite setup as well as average system administration skills. This guide will also show you how to setup a basic installation with none of the typically used distributed environment settings. The objective of this guide is:&lt;br /&gt;
&lt;br /&gt;
* To setup a single server installation&lt;br /&gt;
* To setup a single Guard instance on an existing Open-Xchange installation, no cluster&lt;br /&gt;
* To use the database service on the existing Open-Xchange installation for Guard, no replication&lt;br /&gt;
* To provide a basic configuration setup, no mailserver configuration&lt;br /&gt;
&lt;br /&gt;
== Key features ==&lt;br /&gt;
&lt;br /&gt;
* Simple security at the touch of a button&lt;br /&gt;
* Provides user based security - Separate from provider&lt;br /&gt;
* Supplementary security to Provider based security - Layered&lt;br /&gt;
* Powerful features yet simple to use and understand&lt;br /&gt;
* Security - Inside and outside of the OX environment&lt;br /&gt;
* Email and Drive integration&lt;br /&gt;
* Uses proven PGP security&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
If an OX App Suite customer would like to evaluate OX Guard integration, the first step is to contact OX Sales. OX Sales will then work on the request and send prices and license/API (for the hosted infrastructure) key details to the customer.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
Please review following URL for remaining requirements  &lt;br /&gt;
&lt;br /&gt;
Please review [[AppSuite:OX_System_Requirements#OX_Guard|OX Guard Requirements]] for a full list of requirements.&lt;br /&gt;
&lt;br /&gt;
Since OX Guard is a Microservice it can either be added to an existing Open-Xchange installation or it can be deployed on a dedicated environment without having any of the other Open-Xchange App Suite core services installed. OX App Suite v7.6.0 or later is required to operate this extension both in a single or multi server environments.&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* Open-Xchange REST API&lt;br /&gt;
* Grizzly HTTP connector (open-xchange-grizzly)&lt;br /&gt;
* A supported Java Virtual Machine (Java 7)&lt;br /&gt;
* An Open-Xchange App Suite installation v7.6.0 or later&lt;br /&gt;
* Please Note: To get access to the latest minor features and bug fixes, you need to have a valid license. The article [[AppSuite:UpdatingOXPackages|Updating OX-Packages]] explains how that can be done.&lt;br /&gt;
&lt;br /&gt;
== Please Note ==&lt;br /&gt;
&lt;br /&gt;
OX Guard version 1.0 supports branding / theming using the configuration cascade, defining a templateID for a user or context.  Additional details will be provided in customization documentation&lt;br /&gt;
&lt;br /&gt;
= Download and Installation =&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
The installation of the open-xchange-rest package which is required for Guard will eventually execute database update tasks if installed and activated. Please take this into account.&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|appsuite/stable/guard-backend}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|appsuite/stable/guard-ui}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum update&lt;br /&gt;
 $ yum install open-xchange-rest open-xchange-guard open-xchange-guard-ui open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|appsuite/stable/guard-backend}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|appsuite/stable/guard-ui}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-rest open-xchange-guard open-xchange-guard-ui open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
Add the package repository using zypper if not already present:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|appsuite/stable/guard-backend}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|appsuite/stable/guard-ui}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
 $ zypper in open-xchange-rest open-xchange-guard open-xchange-guard-ui open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
Guard requires Java 1.7, which will be installed through the Guard packages, still SUSE Linux Enterprise Server 11 will not use Java 1.7 by default. Therefor we have to set Java 1.7 as the default instead of Java 1.6:&lt;br /&gt;
&lt;br /&gt;
 $ update-alternatives --config java&lt;br /&gt;
&lt;br /&gt;
Now select the Java 1.7 JRE, example:&lt;br /&gt;
&lt;br /&gt;
 There are 2 alternatives which provide `java'.&lt;br /&gt;
&lt;br /&gt;
   Selection    Alternative&lt;br /&gt;
 -----------------------------------------------&lt;br /&gt;
 *         1    /usr/lib64/jvm/jre-1.6.0-ibm/bin/java&lt;br /&gt;
  +        2    /usr/lib64/jvm/jre-1.7.0-ibm/bin/java&lt;br /&gt;
 &lt;br /&gt;
 Press enter to keep the default[*], or type selection number: 2&lt;br /&gt;
 Using '/usr/lib64/jvm/jre-1.7.0-ibm/bin/java' to provide 'java'.&lt;br /&gt;
&lt;br /&gt;
= Update OX Guard =&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|appsuite/7.6.0/guard-backend/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|appsuite/7.6.0/guard-ui/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum update&lt;br /&gt;
 $ yum upgrade&lt;br /&gt;
&lt;br /&gt;
After the new packages are installed, the guard process needs a restart:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;$ /etc/init.d/open-xchange-guard restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|appsuite/7.6.0/guard-backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|appsuite/7.6.0/guard-ui/updates}}&lt;br /&gt;
&lt;br /&gt;
Then run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get dist-upgrade&lt;br /&gt;
&lt;br /&gt;
If you want to see, what apt-get is going to do without actually doing it, you can run:&lt;br /&gt;
&lt;br /&gt;
 $ apt-get dist-upgrade -s&lt;br /&gt;
&lt;br /&gt;
After the new packages are installed, the guard process needs a restart:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;$ /etc/init.d/open-xchange-guard restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
Add the package repository using zypper if not already present:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|appsuite/7.6.0/guard-backend/updates}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|appsuite/7.6.0/guard-ui/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper dup -r appsuite-7.6.0-guard-backend-updates&lt;br /&gt;
 $ zypper dup -r appsuite-7.6.0-guard-ui-updates&lt;br /&gt;
&lt;br /&gt;
You might need to run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
&lt;br /&gt;
to update the repository metadata before running ''zypper up''.&lt;br /&gt;
&lt;br /&gt;
After the new packages are installed, the guard process needs a restart:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;$ open-xchange-guard restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
&lt;br /&gt;
The following gives an overview of the most important settings to enable Guard for users on the Open-Xchange installation. Some of those settings have to be modified in order to establish the database and REST API access from the Guard service. All settings relating to the Guard backend component are located in the configuration file guard.properties located in /opt/open-xchange/guard/etc. The default configuration should be sufficient for a basic &amp;quot;up-and-running&amp;quot; setup (with the exception of defining the database username and password). Please refer to the inline documentation of the configuration file for more advanced options.&lt;br /&gt;
&lt;br /&gt;
 $ vim /opt/open-xchange/guard/etc/guard.properties&lt;br /&gt;
&lt;br /&gt;
Open-Xchange config_db host - Guard will establish a connection to the config_db&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.configdbHostname=localhost&lt;br /&gt;
&lt;br /&gt;
Guard database for storing user keys&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.oxguardDatabaseHostname=localhost&lt;br /&gt;
&lt;br /&gt;
Username and Password for the two databases above&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.databaseUsername=openexchange&lt;br /&gt;
 com.openexchange.guard.databasePassword=db_password&lt;br /&gt;
&lt;br /&gt;
Open-Xchange REST API host&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.restApiHostname=localhost&lt;br /&gt;
&lt;br /&gt;
External URL for this Open-Xchange installation. This setting will be used to generate the link to the secure content for external recipients&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.externalEmailURL=URL_TO_OX&lt;br /&gt;
&lt;br /&gt;
== Configure services ==&lt;br /&gt;
&lt;br /&gt;
=== Apache ===&lt;br /&gt;
&lt;br /&gt;
Configure the mod_proxy_http module by adding the Guard API.&lt;br /&gt;
&lt;br /&gt;
'''Redhat Enterprise Linux 6 or CentOS 6'''&lt;br /&gt;
 $ vim /etc/httpd/conf.d/proxy_http.conf&lt;br /&gt;
&lt;br /&gt;
'''Debian GNU/Linux 7.0 and SUSE Linux Enterprise Server 11'''&lt;br /&gt;
 $ vim /etc/apache2/conf.d/proxy_http.conf&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Proxy balancer://oxguard&amp;gt;&lt;br /&gt;
        Order deny,allow&lt;br /&gt;
        Allow from all&amp;lt;br&amp;gt;&lt;br /&gt;
        BalancerMember http://localhost:8080/oxguard timeout=1800 smax=0 ttl=60 retry=60 loadfactor=100 route=OX1&lt;br /&gt;
        ProxySet stickysession=JSESSIONID|jsessionid scolonpathdelim=ON&lt;br /&gt;
        SetEnv proxy-initial-not-pooled&lt;br /&gt;
        SetEnv proxy-sendchunked&lt;br /&gt;
 &amp;lt;/Proxy&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 ProxyPass /appsuite/api/oxguard balancer://oxguard&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' The Guard API settings must be inserted before the existing “&amp;lt;Proxy /appsuite/api&amp;gt;” parameter.&lt;br /&gt;
&lt;br /&gt;
After the configuration is done, restart the Apache webserver&lt;br /&gt;
&lt;br /&gt;
 $ apachectl restart&lt;br /&gt;
&lt;br /&gt;
=== Open-Xchange ===&lt;br /&gt;
&lt;br /&gt;
Please add the following settings to a new configuration file on the Open-Xchange backend servers:&lt;br /&gt;
&lt;br /&gt;
 $ vim /opt/open-xchange/etc/guard.properties&lt;br /&gt;
&lt;br /&gt;
 # OX GUard general permission, required to activate Guard in the AppSuite UI.&lt;br /&gt;
 com.openexchange.capability.guard=true&lt;br /&gt;
 &lt;br /&gt;
 # Default theme template id for all users that have no custom template id configured.&lt;br /&gt;
 com.openexchange.guard.templateID=0&lt;br /&gt;
&lt;br /&gt;
=== SELinux ===&lt;br /&gt;
&lt;br /&gt;
Running SELinux prohibits your local Open-Xchange backend service to connect to localhost:8080, which is where the Guard backend service listens to. In order to allow localhost connections to 8080 execute the following:&lt;br /&gt;
&lt;br /&gt;
 $ setsebool -P httpd_can_network_connect 1&lt;br /&gt;
&lt;br /&gt;
== Initiating the Guard database and key store ==&lt;br /&gt;
&lt;br /&gt;
Once the Guard configuration (database and backend configuration) and the service configuration has been applied, the Guard administration script needs to be executed in order to create the Guard databases. The administration script also takes care of the creation of the master keys and the master password file in /opt/open-xchange/guard. The initiation only needs to be done once for a multi server setup, for details please see “Optional / Clustering”.&lt;br /&gt;
&lt;br /&gt;
 /opt/open-xchange/guard/sbin/guard init&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' It is important to understand that the master password file located at /opt/open-xchange/guard/oxguardpass is required to reset user passwords, without them the administrator will not be able to reset user passwords anymore in the future. The file contains the passwords used to encrypt the master database key, as well as passwords used to encrypt protected data in the users table.&lt;br /&gt;
&lt;br /&gt;
== Start Guard ==&lt;br /&gt;
&lt;br /&gt;
The services have been configured and the database has been initiated, it's time to start Guard&lt;br /&gt;
&lt;br /&gt;
 $ /etc/init.d/open-xchange-guard start&lt;br /&gt;
&lt;br /&gt;
== Enabling Guard for Users ==&lt;br /&gt;
&lt;br /&gt;
Guard provides two capabilities for users in the environment:&lt;br /&gt;
&lt;br /&gt;
* '''Guard Mail:''' com.openexchange.capability.guard:mail&lt;br /&gt;
* '''Guard Drive:''' com.openexchange.capability.guard:drive&lt;br /&gt;
&lt;br /&gt;
Each of those two Guard components is enabled for all users that have the according capability configured. Please note that users need to have the Drive permission set to use Guard Drive. So the users that have Guard Drive enabled must be a subset of those users with OX Drive permission. Since v7.6.0 we enforce this via the default configuration. Those capabilities can be activated for specific user by using the Open-Xchange provisioning scripts:&lt;br /&gt;
&lt;br /&gt;
'''Guard Mail:'''&lt;br /&gt;
 $ /opt/open-xchange/sbin/changeuser -c 1 -A oxadmin -P admin_password -u testuser --config/com.openexchange.capability.guard:mail=true&lt;br /&gt;
&lt;br /&gt;
'''Guard Drive:'''&lt;br /&gt;
 $ /opt/open-xchange/sbin/changeuser -c 1 -A oxadmin -P admin_password -u testuser --config/com.openexchange.capability.guard:drive=true&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' Guard Drive requires Guard Mail to be configured for the user as well.&lt;br /&gt;
&lt;br /&gt;
== Optional ==&lt;br /&gt;
&lt;br /&gt;
=== SSL Configuration ===&lt;br /&gt;
&lt;br /&gt;
Per default the connection between the Guard backend and the configured Open-Xchange REST API host is unencrypted. Even though that Guard will never transmit unencrypted emails to or from the REST API you can optionally encrypt the whole communication between those two components by using SSL. To enforce Guard to use SSL in the communication between those two components enable the follwing configuration in Guard configuration file. &lt;br /&gt;
&lt;br /&gt;
  $ vim /opt/open-xchange/guard/etc/guard.properties&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.guard.backend_ssl=true&lt;br /&gt;
&lt;br /&gt;
The Guard backend is most commonly placed behind a load balancer (APACHE or other) and defaults to HTTP for incoming and outgoing traffic, using the load balancer to do SSL with the users.  If you want Guard to use SSL for all communications, you need to set up the SSL key to use.&lt;br /&gt;
&lt;br /&gt;
Please note that you have to provide access to the certificates.&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.useSSL: true&lt;br /&gt;
 com.openexchange.guard.SSLPort: 8443&lt;br /&gt;
 com.openexchange.guard.SSLKeyStore: //keystore location//&lt;br /&gt;
 com.openexchange.guard.SSLKeyName: //alias name here//&lt;br /&gt;
 com.openexchange.guard.SSLKeyPass: //ssl password//&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' Enabling SSL might decrease performance and/or create more system load due to additional encoding of the HTTP streams.&lt;br /&gt;
&lt;br /&gt;
== Clustering ==&lt;br /&gt;
&lt;br /&gt;
You can run multiple OX Guard servers in your environment to ensure high availability or enhance scalability. OX Guard integrates seamlessly into the existing Open-Xchange infrastructure by using the existing interface standards and is therefor transparent to the environment. A couple of things have to be prepared in order to loosely couple OX Guard servers with Open-Xchange servers in a cluster.&lt;br /&gt;
&lt;br /&gt;
=== MySQL ===&lt;br /&gt;
&lt;br /&gt;
The MySQL servers need to be configured in order to allow access to the configdb of Open-Xchange. To do so you need to set the following configuration in the MySQL my.cnf:&lt;br /&gt;
&lt;br /&gt;
 bind = 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
This allows the Guard backend to bind to the MySQL host which is configured in the guard.properties file with com.openexchange.guard.configdbHostname. After the bind for the MySQL instance is configured and the OX Guard backend would be able to connect to the configured host, you have to grant access for the OX Guard service on the MySQL instance to manage the databases. Do so by connecting to the MySQL server via the mysql client. Authenticate if necessary and execute the following, please note that you have to modify the hostname / IP address of the client who should be able to connect to this database, it should include all possible OX Guard servers:&lt;br /&gt;
&lt;br /&gt;
 GRANT ALL PRIVILEGES ON *.* TO 'openexchange'@'oxguard.example.com' IDENTIFIED BY ‘secret’;&lt;br /&gt;
&lt;br /&gt;
=== Apache ===&lt;br /&gt;
&lt;br /&gt;
OX Guard uses the Open-Xchange REST API to store and fetch data from the Open-Xchange databases. The REST API is a servlet running in the Grizzly container. By default it is not exposed as a servlet through Apache and is only accessibly via port 8009. In order to use Apache's load balancing via mod_proxy we need to add a servlet called &amp;quot;preliminary&amp;quot; to proxy_http.conf, example based on a clustered mod_proxy configuration:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Location /preliminary&amp;gt;&lt;br /&gt;
      Order Deny,Allow&lt;br /&gt;
      Deny from all&lt;br /&gt;
      # Only allow access from Guard servers within the network. Do not expose this&lt;br /&gt;
      # location outside of your network. In case you use a load balancing service in front&lt;br /&gt;
      # of your Apache infrastructure you should make sure that access to /preliminary will&lt;br /&gt;
      # be blocked from the internet / outside clients. Examples:&lt;br /&gt;
      # Allow from 192.168.0.1&lt;br /&gt;
      # Allow from 192.168.1.1 192.168.1.2&lt;br /&gt;
      # Allow from 192.168.0.&lt;br /&gt;
      ProxyPass /preliminary balancer://oxcluster/preliminary&lt;br /&gt;
 &amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that the balancer is properly configured in the mod_proxy configuration. Examples on how to do so can be found in our clustering configuration for Open-Xchange AppSuite. Like explained in the example above, please make sure that this location is only available in your internal network, there is no need to expose /preliminary to the public, it is only used by Guard servers to connect to the OX backend. If you have a load balancer in front of the Apache cluster you should consider blocking access to /preliminary from WAN to restrict access to the servlet to internal network services only.&lt;br /&gt;
&lt;br /&gt;
Now add the OX Guard BalancerMembers to the oxguard balancer configuration (also in proxy_http.conf) to address all your OX Guard nodes in the cluster in this balancer configuration. The configuration has to be applied to all Apache nodes within the cluster.&lt;br /&gt;
&lt;br /&gt;
If the Apache server is a dedicated server / instance you also have to install the OX Guard UI-Static package on all Apache nodes in the cluster in order to provide static files like images or CSS to the OX Guard client. Example for Debian (the OX Guard repository has to be configured in the package management prior):&lt;br /&gt;
&lt;br /&gt;
 $ apt-get install open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
=== Open-Xchange ===&lt;br /&gt;
&lt;br /&gt;
Disable the Open-Xchange IPCheck for session verification. This is required because OX Guard will use the users session cookie to connect to the Open-Xchange REST API, but as a different IP address than the OX Guard server has been used during authentication the request would fail if you don't disable the IPCheck:&lt;br /&gt;
&lt;br /&gt;
 $ vim /opt/open-xchange/etc/server.properties&lt;br /&gt;
&lt;br /&gt;
and set:&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.IPCheck=false&lt;br /&gt;
&lt;br /&gt;
The OX Guard UI package has to be installed on all Open-Xchange backend nodes as well, example for Debian (the OX Guard repository has to be configured in the package management prior):&lt;br /&gt;
&lt;br /&gt;
 $ apt-get install open-xchange-guard-ui&lt;br /&gt;
&lt;br /&gt;
Restart the Open-Xchange service afterwards.&lt;br /&gt;
&lt;br /&gt;
=== OX Guard ===&lt;br /&gt;
&lt;br /&gt;
After all the services like MySQL, Apache and Open-Xchange have been configured you need to update the OX Guard backend configuration to point to the correct API endpoints. Set the REST API endpoint to an Apache server by setting the following value in /opt/open-xchange/guard/etc/guard.properties:&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.restApiHostname=apache.example.com&lt;br /&gt;
&lt;br /&gt;
Per default Guard will try to connect to port 8009 to this host, but as we configured the REST API to be proxies thorugh the serblet /preliminary on every Apache we now also need to change the target port for the REST API. You can do so by adding the following line into /opt/open-xchange/guard/etc/guard.properties:&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.oxBackendPort=80&lt;br /&gt;
&lt;br /&gt;
Please also change all settings in regards to MySQL like com.openexchange.guard.configdbHostname, com.openexchange.guard.oxguardDatabaseHostname, com.openexchange.guard.databaseUsername or com.openexchange.guard.databasePassword. Afterwards restart the OX Guard service and check the logfile if the OX Guard backend is able to connect to the configured REST API.&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Guard&amp;diff=18705</id>
		<title>AppSuite:OX Guard</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Guard&amp;diff=18705"/>
		<updated>2014-10-10T12:00:03Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* Redhat Enterprise Linux 6 or CentOS 6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OX Guard =&lt;br /&gt;
&lt;br /&gt;
OX Guard is a security solution that provides protection for email communications and files. Fully integrated with both OX as a Service and standard OX App Suite installations, it allows users to send and read encrypted messages and store and share encrypted files – and requires no additional setup or knowledge. OX Guard offers a simple way to increase security by limiting the opportunity for unauthorized access while data is en-route or in-storage, creating extra peace of mind.&lt;br /&gt;
&lt;br /&gt;
This article will guide you through the installation of Guard and describes the basic configuration and software requirements. As it is intended as a quick walk-through it assumes an existing installation of the operating system including a single server App Suite setup as well as average system administration skills. This guide will also show you how to setup a basic installation with none of the typically used distributed environment settings. The objective of this guide is:&lt;br /&gt;
&lt;br /&gt;
* To setup a single server installation&lt;br /&gt;
* To setup a single Guard instance on an existing Open-Xchange installation, no cluster&lt;br /&gt;
* To use the database service on the existing Open-Xchange installation for Guard, no replication&lt;br /&gt;
* To provide a basic configuration setup, no mailserver configuration&lt;br /&gt;
&lt;br /&gt;
== Key features ==&lt;br /&gt;
&lt;br /&gt;
* Simple security at the touch of a button&lt;br /&gt;
* Provides user based security - Separate from provider&lt;br /&gt;
* Supplementary security to Provider based security - Layered&lt;br /&gt;
* Powerful features yet simple to use and understand&lt;br /&gt;
* Security - Inside and outside of the OX environment&lt;br /&gt;
* Email and Drive integration&lt;br /&gt;
* Uses proven PGP security&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
If an OX App Suite customer would like to evaluate OX Guard integration, the first step is to contact OX Sales. OX Sales will then work on the request and send prices and license/API (for the hosted infrastructure) key details to the customer.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
Please review following URL for remaining requirements  &lt;br /&gt;
&lt;br /&gt;
Please review [[AppSuite:OX_System_Requirements#OX_Guard|OX Guard Requirements]] for a full list of requirements.&lt;br /&gt;
&lt;br /&gt;
Since OX Guard is a Microservice it can either be added to an existing Open-Xchange installation or it can be deployed on a dedicated environment without having any of the other Open-Xchange App Suite core services installed. OX App Suite v7.6.0 or later is required to operate this extension both in a single or multi server environments.&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* Open-Xchange REST API&lt;br /&gt;
* Grizzly HTTP connector (open-xchange-grizzly)&lt;br /&gt;
* A supported Java Virtual Machine (Java 7)&lt;br /&gt;
* An Open-Xchange App Suite installation v7.6.0 or later&lt;br /&gt;
* Please Note: To get access to the latest minor features and bug fixes, you need to have a valid license. The article [[AppSuite:UpdatingOXPackages|Updating OX-Packages]] explains how that can be done.&lt;br /&gt;
&lt;br /&gt;
== Please Note ==&lt;br /&gt;
&lt;br /&gt;
OX Guard version 1.0 supports branding / theming using the configuration cascade, defining a templateID for a user or context.  Additional details will be provided in customization documentation&lt;br /&gt;
&lt;br /&gt;
= Download and Installation =&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
The installation of the open-xchange-rest package which is required for Guard will eventually execute database update tasks if installed and activated. Please take this into account.&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|appsuite/stable/guard-backend}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|appsuite/stable/guard-ui}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum update&lt;br /&gt;
 $ yum install open-xchange-rest open-xchange-guard open-xchange-guard-ui open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|appsuite/stable/guard-backend}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|appsuite/stable/guard-ui}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-rest open-xchange-guard open-xchange-guard-ui open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
Add the package repository using zypper if not already present:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|appsuite/stable/guard-backend}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|appsuite/stable/guard-ui}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
 $ zypper in open-xchange-rest open-xchange-guard open-xchange-guard-ui open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
Guard requires Java 1.7, which will be installed through the Guard packages, still SUSE Linux Enterprise Server 11 will not use Java 1.7 by default. Therefor we have to set Java 1.7 as the default instead of Java 1.6:&lt;br /&gt;
&lt;br /&gt;
 $ update-alternatives --config java&lt;br /&gt;
&lt;br /&gt;
Now select the Java 1.7 JRE, example:&lt;br /&gt;
&lt;br /&gt;
 There are 2 alternatives which provide `java'.&lt;br /&gt;
&lt;br /&gt;
   Selection    Alternative&lt;br /&gt;
 -----------------------------------------------&lt;br /&gt;
 *         1    /usr/lib64/jvm/jre-1.6.0-ibm/bin/java&lt;br /&gt;
  +        2    /usr/lib64/jvm/jre-1.7.0-ibm/bin/java&lt;br /&gt;
 &lt;br /&gt;
 Press enter to keep the default[*], or type selection number: 2&lt;br /&gt;
 Using '/usr/lib64/jvm/jre-1.7.0-ibm/bin/java' to provide 'java'.&lt;br /&gt;
&lt;br /&gt;
= Update OX Guard =&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|appsuite/7.6.0/guard-backend/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|pc3v=LDBUSER:LDBPASSWORD|appsuite/7.6.0/guard-ui/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum update&lt;br /&gt;
 $ yum upgrade&lt;br /&gt;
&lt;br /&gt;
After the new packages are installed, the guard process needs a restart:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;$ /etc/init.d/open-xchange-guard restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|appsuite/7.6.0/guard-backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|appsuite/7.6.0/guard-ui/updates}}&lt;br /&gt;
&lt;br /&gt;
Then run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get dist-upgrade&lt;br /&gt;
&lt;br /&gt;
If you want to see, what apt-get is going to do without actually doing it, you can run:&lt;br /&gt;
&lt;br /&gt;
 $ apt-get dist-upgrade -s&lt;br /&gt;
&lt;br /&gt;
After the new packages are installed, the guard process needs a restart:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;$ /etc/init.d/open-xchange-guard restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
Add the package repository using zypper if not already present:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|appsuite/7.6.0/guard-backend/updates}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|appsuite/7.6.0/guard-ui/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper dup -r appsuite-7.6.0-guard-backend-updates&lt;br /&gt;
 $ zypper dup -r appsuite-7.6.0-guard-ui-updates&lt;br /&gt;
&lt;br /&gt;
You might need to run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
&lt;br /&gt;
to update the repository metadata before running ''zypper up''.&lt;br /&gt;
&lt;br /&gt;
After the new packages are installed, the guard process needs a restart:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;$ open-xchange-guard restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
&lt;br /&gt;
The following gives an overview of the most important settings to enable Guard for users on the Open-Xchange installation. Some of those settings have to be modified in order to establish the database and REST API access from the Guard service. All settings relating to the Guard backend component are located in the configuration file guard.properties located in /opt/open-xchange/guard/etc. The default configuration should be sufficient for a basic &amp;quot;up-and-running&amp;quot; setup (with the exception of defining the database username and password). Please refer to the inline documentation of the configuration file for more advanced options.&lt;br /&gt;
&lt;br /&gt;
 $ vim /opt/open-xchange/guard/etc/guard.properties&lt;br /&gt;
&lt;br /&gt;
Open-Xchange config_db host - Guard will establish a connection to the config_db&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.configdbHostname=localhost&lt;br /&gt;
&lt;br /&gt;
Guard database for storing user keys&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.oxguardDatabaseHostname=localhost&lt;br /&gt;
&lt;br /&gt;
Username and Password for the two databases above&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.databaseUsername=openexchange&lt;br /&gt;
 com.openexchange.guard.databasePassword=db_password&lt;br /&gt;
&lt;br /&gt;
Open-Xchange REST API host&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.restApiHostname=localhost&lt;br /&gt;
&lt;br /&gt;
External URL for this Open-Xchange installation. This setting will be used to generate the link to the secure content for external recipients&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.externalEmailURL=URL_TO_OX&lt;br /&gt;
&lt;br /&gt;
== Configure services ==&lt;br /&gt;
&lt;br /&gt;
=== Apache ===&lt;br /&gt;
&lt;br /&gt;
Configure the mod_proxy_http module by adding the Guard API.&lt;br /&gt;
&lt;br /&gt;
'''Redhat Enterprise Linux 6 or CentOS 6'''&lt;br /&gt;
 $ vim /etc/httpd/conf.d/proxy_http.conf&lt;br /&gt;
&lt;br /&gt;
'''Debian GNU/Linux 7.0 and SUSE Linux Enterprise Server 11'''&lt;br /&gt;
 $ vim /etc/apache2/conf.d/proxy_http.conf&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Proxy balancer://oxguard&amp;gt;&lt;br /&gt;
        Order deny,allow&lt;br /&gt;
        Allow from all&amp;lt;br&amp;gt;&lt;br /&gt;
        BalancerMember http://localhost:8080/oxguard timeout=1800 smax=0 ttl=60 retry=60 loadfactor=100 route=OX1&lt;br /&gt;
        ProxySet stickysession=JSESSIONID|jsessionid scolonpathdelim=ON&lt;br /&gt;
        SetEnv proxy-initial-not-pooled&lt;br /&gt;
        SetEnv proxy-sendchunked&lt;br /&gt;
 &amp;lt;/Proxy&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 ProxyPass /appsuite/api/oxguard balancer://oxguard&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' The Guard API settings must be inserted before the existing “&amp;lt;Proxy /appsuite/api&amp;gt;” parameter.&lt;br /&gt;
&lt;br /&gt;
After the configuration is done, restart the Apache webserver&lt;br /&gt;
&lt;br /&gt;
 $ apachectl restart&lt;br /&gt;
&lt;br /&gt;
=== Open-Xchange ===&lt;br /&gt;
&lt;br /&gt;
Please add the following settings to a new configuration file on the Open-Xchange backend servers:&lt;br /&gt;
&lt;br /&gt;
 $ vim /opt/open-xchange/etc/guard.properties&lt;br /&gt;
&lt;br /&gt;
 # OX GUard general permission, required to activate Guard in the AppSuite UI.&lt;br /&gt;
 com.openexchange.capability.guard=true&lt;br /&gt;
 &lt;br /&gt;
 # Default theme template id for all users that have no custom template id configured.&lt;br /&gt;
 com.openexchange.guard.templateID=0&lt;br /&gt;
&lt;br /&gt;
=== SELinux ===&lt;br /&gt;
&lt;br /&gt;
Running SELinux prohibits your local Open-Xchange backend service to connect to localhost:8080, which is where the Guard backend service listens to. In order to allow localhost connections to 8080 execute the following:&lt;br /&gt;
&lt;br /&gt;
 $ setsebool -P httpd_can_network_connect 1&lt;br /&gt;
&lt;br /&gt;
== Initiating the Guard database and key store ==&lt;br /&gt;
&lt;br /&gt;
Once the Guard configuration (database and backend configuration) and the service configuration has been applied, the Guard administration script needs to be executed in order to create the Guard databases. The administration script also takes care of the creation of the master keys and the master password file in /opt/open-xchange/guard. The initiation only needs to be done once for a multi server setup, for details please see “Optional / Clustering”.&lt;br /&gt;
&lt;br /&gt;
 /opt/open-xchange/guard/sbin/guard init&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' It is important to understand that the master password file located at /opt/open-xchange/guard/oxguardpass is required to reset user passwords, without them the administrator will not be able to reset user passwords anymore in the future. The file contains the passwords used to encrypt the master database key, as well as passwords used to encrypt protected data in the users table.&lt;br /&gt;
&lt;br /&gt;
== Start Guard ==&lt;br /&gt;
&lt;br /&gt;
The services have been configured and the database has been initiated, it's time to start Guard&lt;br /&gt;
&lt;br /&gt;
 $ /etc/init.d/open-xchange-guard start&lt;br /&gt;
&lt;br /&gt;
== Enabling Guard for Users ==&lt;br /&gt;
&lt;br /&gt;
Guard provides two capabilities for users in the environment:&lt;br /&gt;
&lt;br /&gt;
* '''Guard Mail:''' com.openexchange.capability.guard:mail&lt;br /&gt;
* '''Guard Drive:''' com.openexchange.capability.guard:drive&lt;br /&gt;
&lt;br /&gt;
Each of those two Guard components is enabled for all users that have the according capability configured. Please note that users need to have the Drive permission set to use Guard Drive. So the users that have Guard Drive enabled must be a subset of those users with OX Drive permission. Since v7.6.0 we enforce this via the default configuration. Those capabilities can be activated for specific user by using the Open-Xchange provisioning scripts:&lt;br /&gt;
&lt;br /&gt;
'''Guard Mail:'''&lt;br /&gt;
 $ /opt/open-xchange/sbin/changeuser -c 1 -A oxadmin -P admin_password -u testuser --config/com.openexchange.capability.guard:mail=true&lt;br /&gt;
&lt;br /&gt;
'''Guard Drive:'''&lt;br /&gt;
 $ /opt/open-xchange/sbin/changeuser -c 1 -A oxadmin -P admin_password -u testuser --config/com.openexchange.capability.guard:drive=true&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' Guard Drive requires Guard Mail to be configured for the user as well.&lt;br /&gt;
&lt;br /&gt;
== Optional ==&lt;br /&gt;
&lt;br /&gt;
=== SSL Configuration ===&lt;br /&gt;
&lt;br /&gt;
Per default the connection between the Guard backend and the configured Open-Xchange REST API host is unencrypted. Even though that Guard will never transmit unencrypted emails to or from the REST API you can optionally encrypt the whole communication between those two components by using SSL. To enforce Guard to use SSL in the communication between those two components enable the follwing configuration in Guard configuration file. &lt;br /&gt;
&lt;br /&gt;
  $ vim /opt/open-xchange/guard/etc/guard.properties&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.guard.backend_ssl=true&lt;br /&gt;
&lt;br /&gt;
The Guard backend is most commonly placed behind a load balancer (APACHE or other) and defaults to HTTP for incoming and outgoing traffic, using the load balancer to do SSL with the users.  If you want Guard to use SSL for all communications, you need to set up the SSL key to use.&lt;br /&gt;
&lt;br /&gt;
Please note that you have to provide access to the certificates.&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.useSSL: true&lt;br /&gt;
 com.openexchange.guard.SSLPort: 8443&lt;br /&gt;
 com.openexchange.guard.SSLKeyStore: //keystore location//&lt;br /&gt;
 com.openexchange.guard.SSLKeyName: //alias name here//&lt;br /&gt;
 com.openexchange.guard.SSLKeyPass: //ssl password//&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' Enabling SSL might decrease performance and/or create more system load due to additional encoding of the HTTP streams.&lt;br /&gt;
&lt;br /&gt;
== Clustering ==&lt;br /&gt;
&lt;br /&gt;
You can run multiple OX Guard servers in your environment to ensure high availability or enhance scalability. OX Guard integrates seamlessly into the existing Open-Xchange infrastructure by using the existing interface standards and is therefor transparent to the environment. A couple of things have to be prepared in order to loosely couple OX Guard servers with Open-Xchange servers in a cluster.&lt;br /&gt;
&lt;br /&gt;
=== MySQL ===&lt;br /&gt;
&lt;br /&gt;
The MySQL servers need to be configured in order to allow access to the configdb of Open-Xchange. To do so you need to set the following configuration in the MySQL my.cnf:&lt;br /&gt;
&lt;br /&gt;
 bind = 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
This allows the Guard backend to bind to the MySQL host which is configured in the guard.properties file with com.openexchange.guard.configdbHostname. After the bind for the MySQL instance is configured and the OX Guard backend would be able to connect to the configured host, you have to grant access for the OX Guard service on the MySQL instance to manage the databases. Do so by connecting to the MySQL server via the mysql client. Authenticate if necessary and execute the following, please note that you have to modify the hostname / IP address of the client who should be able to connect to this database, it should include all possible OX Guard servers:&lt;br /&gt;
&lt;br /&gt;
 GRANT ALL PRIVILEGES ON *.* TO 'openexchange'@'oxguard.example.com' IDENTIFIED BY ‘secret’;&lt;br /&gt;
&lt;br /&gt;
=== Apache ===&lt;br /&gt;
&lt;br /&gt;
OX Guard uses the Open-Xchange REST API to store and fetch data from the Open-Xchange databases. The REST API is a servlet running in the Grizzly container. By default it is not exposed as a servlet through Apache and is only accessibly via port 8009. In order to use Apache's load balancing via mod_proxy we need to add a servlet called &amp;quot;preliminary&amp;quot; to proxy_http.conf, example based on a clustered mod_proxy configuration:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Location /preliminary&amp;gt;&lt;br /&gt;
      Order Deny,Allow&lt;br /&gt;
      Deny from all&lt;br /&gt;
      # Only allow access from Guard servers within the network. Do not expose this&lt;br /&gt;
      # location outside of your network. In case you use a load balancing service in front&lt;br /&gt;
      # of your Apache infrastructure you should make sure that access to /preliminary will&lt;br /&gt;
      # be blocked from the internet / outside clients. Examples:&lt;br /&gt;
      # Allow from 192.168.0.1&lt;br /&gt;
      # Allow from 192.168.1.1 192.168.1.2&lt;br /&gt;
      # Allow from 192.168.0.&lt;br /&gt;
      ProxyPass /preliminary balancer://oxcluster/preliminary&lt;br /&gt;
 &amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that the balancer is properly configured in the mod_proxy configuration. Examples on how to do so can be found in our clustering configuration for Open-Xchange AppSuite. Like explained in the example above, please make sure that this location is only available in your internal network, there is no need to expose /preliminary to the public, it is only used by Guard servers to connect to the OX backend. If you have a load balancer in front of the Apache cluster you should consider blocking access to /preliminary from WAN to restrict access to the servlet to internal network services only.&lt;br /&gt;
&lt;br /&gt;
Now add the OX Guard BalancerMembers to the oxguard balancer configuration (also in proxy_http.conf) to address all your OX Guard nodes in the cluster in this balancer configuration. The configuration has to be applied to all Apache nodes within the cluster.&lt;br /&gt;
&lt;br /&gt;
If the Apache server is a dedicated server / instance you also have to install the OX Guard UI-Static package on all Apache nodes in the cluster in order to provide static files like images or CSS to the OX Guard client. Example for Debian (the OX Guard repository has to be configured in the package management prior):&lt;br /&gt;
&lt;br /&gt;
 $ apt-get install open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
=== Open-Xchange ===&lt;br /&gt;
&lt;br /&gt;
Disable the Open-Xchange IPCheck for session verification. This is required because OX Guard will use the users session cookie to connect to the Open-Xchange REST API, but as a different IP address than the OX Guard server has been used during authentication the request would fail if you don't disable the IPCheck:&lt;br /&gt;
&lt;br /&gt;
 $ vim /opt/open-xchange/etc/server.properties&lt;br /&gt;
&lt;br /&gt;
and set:&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.IPCheck=false&lt;br /&gt;
&lt;br /&gt;
The OX Guard UI package has to be installed on all Open-Xchange backend nodes as well, example for Debian (the OX Guard repository has to be configured in the package management prior):&lt;br /&gt;
&lt;br /&gt;
 $ apt-get install open-xchange-guard-ui&lt;br /&gt;
&lt;br /&gt;
Restart the Open-Xchange service afterwards.&lt;br /&gt;
&lt;br /&gt;
=== OX Guard ===&lt;br /&gt;
&lt;br /&gt;
After all the services like MySQL, Apache and Open-Xchange have been configured you need to update the OX Guard backend configuration to point to the correct API endpoints. Set the REST API endpoint to an Apache server by setting the following value in /opt/open-xchange/guard/etc/guard.properties:&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.restApiHostname=apache.example.com&lt;br /&gt;
&lt;br /&gt;
Per default Guard will try to connect to port 8009 to this host, but as we configured the REST API to be proxies thorugh the serblet /preliminary on every Apache we now also need to change the target port for the REST API. You can do so by adding the following line into /opt/open-xchange/guard/etc/guard.properties:&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.oxBackendPort=80&lt;br /&gt;
&lt;br /&gt;
Please also change all settings in regards to MySQL like com.openexchange.guard.configdbHostname, com.openexchange.guard.oxguardDatabaseHostname, com.openexchange.guard.databaseUsername or com.openexchange.guard.databasePassword. Afterwards restart the OX Guard service and check the logfile if the OX Guard backend is able to connect to the configured REST API.&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Guard&amp;diff=18704</id>
		<title>AppSuite:OX Guard</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:OX_Guard&amp;diff=18704"/>
		<updated>2014-10-10T11:57:52Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* Redhat Enterprise Linux 6 or CentOS 6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OX Guard =&lt;br /&gt;
&lt;br /&gt;
OX Guard is a security solution that provides protection for email communications and files. Fully integrated with both OX as a Service and standard OX App Suite installations, it allows users to send and read encrypted messages and store and share encrypted files – and requires no additional setup or knowledge. OX Guard offers a simple way to increase security by limiting the opportunity for unauthorized access while data is en-route or in-storage, creating extra peace of mind.&lt;br /&gt;
&lt;br /&gt;
This article will guide you through the installation of Guard and describes the basic configuration and software requirements. As it is intended as a quick walk-through it assumes an existing installation of the operating system including a single server App Suite setup as well as average system administration skills. This guide will also show you how to setup a basic installation with none of the typically used distributed environment settings. The objective of this guide is:&lt;br /&gt;
&lt;br /&gt;
* To setup a single server installation&lt;br /&gt;
* To setup a single Guard instance on an existing Open-Xchange installation, no cluster&lt;br /&gt;
* To use the database service on the existing Open-Xchange installation for Guard, no replication&lt;br /&gt;
* To provide a basic configuration setup, no mailserver configuration&lt;br /&gt;
&lt;br /&gt;
== Key features ==&lt;br /&gt;
&lt;br /&gt;
* Simple security at the touch of a button&lt;br /&gt;
* Provides user based security - Separate from provider&lt;br /&gt;
* Supplementary security to Provider based security - Layered&lt;br /&gt;
* Powerful features yet simple to use and understand&lt;br /&gt;
* Security - Inside and outside of the OX environment&lt;br /&gt;
* Email and Drive integration&lt;br /&gt;
* Uses proven PGP security&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
If an OX App Suite customer would like to evaluate OX Guard integration, the first step is to contact OX Sales. OX Sales will then work on the request and send prices and license/API (for the hosted infrastructure) key details to the customer.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
Please review following URL for remaining requirements  &lt;br /&gt;
&lt;br /&gt;
Please review [[AppSuite:OX_System_Requirements#OX_Guard|OX Guard Requirements]] for a full list of requirements.&lt;br /&gt;
&lt;br /&gt;
Since OX Guard is a Microservice it can either be added to an existing Open-Xchange installation or it can be deployed on a dedicated environment without having any of the other Open-Xchange App Suite core services installed. OX App Suite v7.6.0 or later is required to operate this extension both in a single or multi server environments.&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* Open-Xchange REST API&lt;br /&gt;
* Grizzly HTTP connector (open-xchange-grizzly)&lt;br /&gt;
* A supported Java Virtual Machine (Java 7)&lt;br /&gt;
* An Open-Xchange App Suite installation v7.6.0 or later&lt;br /&gt;
* Please Note: To get access to the latest minor features and bug fixes, you need to have a valid license. The article [[AppSuite:UpdatingOXPackages|Updating OX-Packages]] explains how that can be done.&lt;br /&gt;
&lt;br /&gt;
== Please Note ==&lt;br /&gt;
&lt;br /&gt;
OX Guard version 1.0 supports branding / theming using the configuration cascade, defining a templateID for a user or context.  Additional details will be provided in customization documentation&lt;br /&gt;
&lt;br /&gt;
= Download and Installation =&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
The installation of the open-xchange-rest package which is required for Guard will eventually execute database update tasks if installed and activated. Please take this into account.&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|appsuite/stable/guard-backend}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|appsuite/stable/guard-ui}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum update&lt;br /&gt;
 $ yum install open-xchange-rest open-xchange-guard open-xchange-guard-ui open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|appsuite/stable/guard-backend}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|appsuite/stable/guard-ui}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get install open-xchange-rest open-xchange-guard open-xchange-guard-ui open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
Add the package repository using zypper if not already present:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|appsuite/stable/guard-backend}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|appsuite/stable/guard-ui}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
 $ zypper in open-xchange-rest open-xchange-guard open-xchange-guard-ui open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
Guard requires Java 1.7, which will be installed through the Guard packages, still SUSE Linux Enterprise Server 11 will not use Java 1.7 by default. Therefor we have to set Java 1.7 as the default instead of Java 1.6:&lt;br /&gt;
&lt;br /&gt;
 $ update-alternatives --config java&lt;br /&gt;
&lt;br /&gt;
Now select the Java 1.7 JRE, example:&lt;br /&gt;
&lt;br /&gt;
 There are 2 alternatives which provide `java'.&lt;br /&gt;
&lt;br /&gt;
   Selection    Alternative&lt;br /&gt;
 -----------------------------------------------&lt;br /&gt;
 *         1    /usr/lib64/jvm/jre-1.6.0-ibm/bin/java&lt;br /&gt;
  +        2    /usr/lib64/jvm/jre-1.7.0-ibm/bin/java&lt;br /&gt;
 &lt;br /&gt;
 Press enter to keep the default[*], or type selection number: 2&lt;br /&gt;
 Using '/usr/lib64/jvm/jre-1.7.0-ibm/bin/java' to provide 'java'.&lt;br /&gt;
&lt;br /&gt;
= Update OX Guard =&lt;br /&gt;
&lt;br /&gt;
=== Redhat Enterprise Linux 6 or CentOS 6 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange yum configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|appsuite/7.6.0/guard-backend/updates}}&lt;br /&gt;
 {{for loop||call=YUMRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=rhelname|pc2v=RHEL6|pc3n=ldbaccount|appsuite/7.6.0/guard-ui/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ yum update&lt;br /&gt;
 $ yum upgrade&lt;br /&gt;
&lt;br /&gt;
After the new packages are installed, the guard process needs a restart:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;$ /etc/init.d/open-xchange-guard restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debian GNU/Linux 7.0 ===&lt;br /&gt;
&lt;br /&gt;
If not already done, add the following repositories to your Open-Xchange apt configuration:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|appsuite/7.6.0/guard-backend/updates}}&lt;br /&gt;
 {{for loop||call=APTRepo|pv=reponame|pc1n=path|pc1v=products|pc2n=debianname|pc2v=DebianWheezy|appsuite/7.6.0/guard-ui/updates}}&lt;br /&gt;
&lt;br /&gt;
Then run&lt;br /&gt;
&lt;br /&gt;
 $ apt-get update&lt;br /&gt;
 $ apt-get dist-upgrade&lt;br /&gt;
&lt;br /&gt;
If you want to see, what apt-get is going to do without actually doing it, you can run:&lt;br /&gt;
&lt;br /&gt;
 $ apt-get dist-upgrade -s&lt;br /&gt;
&lt;br /&gt;
After the new packages are installed, the guard process needs a restart:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;$ /etc/init.d/open-xchange-guard restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SUSE Linux Enterprise Server 11 ===&lt;br /&gt;
&lt;br /&gt;
Add the package repository using zypper if not already present:&lt;br /&gt;
&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|appsuite/7.6.0/guard-backend/updates}}&lt;br /&gt;
 {{for loop||call=SUSERepo|pv=reponame|pc1n=path|pc1v=products|pc2n=susename|pc2v=SLES11|appsuite/7.6.0/guard-ui/updates}}&lt;br /&gt;
&lt;br /&gt;
and run&lt;br /&gt;
&lt;br /&gt;
 $ zypper dup -r appsuite-7.6.0-guard-backend-updates&lt;br /&gt;
 $ zypper dup -r appsuite-7.6.0-guard-ui-updates&lt;br /&gt;
&lt;br /&gt;
You might need to run&lt;br /&gt;
&lt;br /&gt;
 $ zypper ref&lt;br /&gt;
&lt;br /&gt;
to update the repository metadata before running ''zypper up''.&lt;br /&gt;
&lt;br /&gt;
After the new packages are installed, the guard process needs a restart:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;$ open-xchange-guard restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
&lt;br /&gt;
The following gives an overview of the most important settings to enable Guard for users on the Open-Xchange installation. Some of those settings have to be modified in order to establish the database and REST API access from the Guard service. All settings relating to the Guard backend component are located in the configuration file guard.properties located in /opt/open-xchange/guard/etc. The default configuration should be sufficient for a basic &amp;quot;up-and-running&amp;quot; setup (with the exception of defining the database username and password). Please refer to the inline documentation of the configuration file for more advanced options.&lt;br /&gt;
&lt;br /&gt;
 $ vim /opt/open-xchange/guard/etc/guard.properties&lt;br /&gt;
&lt;br /&gt;
Open-Xchange config_db host - Guard will establish a connection to the config_db&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.configdbHostname=localhost&lt;br /&gt;
&lt;br /&gt;
Guard database for storing user keys&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.oxguardDatabaseHostname=localhost&lt;br /&gt;
&lt;br /&gt;
Username and Password for the two databases above&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.databaseUsername=openexchange&lt;br /&gt;
 com.openexchange.guard.databasePassword=db_password&lt;br /&gt;
&lt;br /&gt;
Open-Xchange REST API host&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.restApiHostname=localhost&lt;br /&gt;
&lt;br /&gt;
External URL for this Open-Xchange installation. This setting will be used to generate the link to the secure content for external recipients&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.externalEmailURL=URL_TO_OX&lt;br /&gt;
&lt;br /&gt;
== Configure services ==&lt;br /&gt;
&lt;br /&gt;
=== Apache ===&lt;br /&gt;
&lt;br /&gt;
Configure the mod_proxy_http module by adding the Guard API.&lt;br /&gt;
&lt;br /&gt;
'''Redhat Enterprise Linux 6 or CentOS 6'''&lt;br /&gt;
 $ vim /etc/httpd/conf.d/proxy_http.conf&lt;br /&gt;
&lt;br /&gt;
'''Debian GNU/Linux 7.0 and SUSE Linux Enterprise Server 11'''&lt;br /&gt;
 $ vim /etc/apache2/conf.d/proxy_http.conf&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Proxy balancer://oxguard&amp;gt;&lt;br /&gt;
        Order deny,allow&lt;br /&gt;
        Allow from all&amp;lt;br&amp;gt;&lt;br /&gt;
        BalancerMember http://localhost:8080/oxguard timeout=1800 smax=0 ttl=60 retry=60 loadfactor=100 route=OX1&lt;br /&gt;
        ProxySet stickysession=JSESSIONID|jsessionid scolonpathdelim=ON&lt;br /&gt;
        SetEnv proxy-initial-not-pooled&lt;br /&gt;
        SetEnv proxy-sendchunked&lt;br /&gt;
 &amp;lt;/Proxy&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 ProxyPass /appsuite/api/oxguard balancer://oxguard&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' The Guard API settings must be inserted before the existing “&amp;lt;Proxy /appsuite/api&amp;gt;” parameter.&lt;br /&gt;
&lt;br /&gt;
After the configuration is done, restart the Apache webserver&lt;br /&gt;
&lt;br /&gt;
 $ apachectl restart&lt;br /&gt;
&lt;br /&gt;
=== Open-Xchange ===&lt;br /&gt;
&lt;br /&gt;
Please add the following settings to a new configuration file on the Open-Xchange backend servers:&lt;br /&gt;
&lt;br /&gt;
 $ vim /opt/open-xchange/etc/guard.properties&lt;br /&gt;
&lt;br /&gt;
 # OX GUard general permission, required to activate Guard in the AppSuite UI.&lt;br /&gt;
 com.openexchange.capability.guard=true&lt;br /&gt;
 &lt;br /&gt;
 # Default theme template id for all users that have no custom template id configured.&lt;br /&gt;
 com.openexchange.guard.templateID=0&lt;br /&gt;
&lt;br /&gt;
=== SELinux ===&lt;br /&gt;
&lt;br /&gt;
Running SELinux prohibits your local Open-Xchange backend service to connect to localhost:8080, which is where the Guard backend service listens to. In order to allow localhost connections to 8080 execute the following:&lt;br /&gt;
&lt;br /&gt;
 $ setsebool -P httpd_can_network_connect 1&lt;br /&gt;
&lt;br /&gt;
== Initiating the Guard database and key store ==&lt;br /&gt;
&lt;br /&gt;
Once the Guard configuration (database and backend configuration) and the service configuration has been applied, the Guard administration script needs to be executed in order to create the Guard databases. The administration script also takes care of the creation of the master keys and the master password file in /opt/open-xchange/guard. The initiation only needs to be done once for a multi server setup, for details please see “Optional / Clustering”.&lt;br /&gt;
&lt;br /&gt;
 /opt/open-xchange/guard/sbin/guard init&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' It is important to understand that the master password file located at /opt/open-xchange/guard/oxguardpass is required to reset user passwords, without them the administrator will not be able to reset user passwords anymore in the future. The file contains the passwords used to encrypt the master database key, as well as passwords used to encrypt protected data in the users table.&lt;br /&gt;
&lt;br /&gt;
== Start Guard ==&lt;br /&gt;
&lt;br /&gt;
The services have been configured and the database has been initiated, it's time to start Guard&lt;br /&gt;
&lt;br /&gt;
 $ /etc/init.d/open-xchange-guard start&lt;br /&gt;
&lt;br /&gt;
== Enabling Guard for Users ==&lt;br /&gt;
&lt;br /&gt;
Guard provides two capabilities for users in the environment:&lt;br /&gt;
&lt;br /&gt;
* '''Guard Mail:''' com.openexchange.capability.guard:mail&lt;br /&gt;
* '''Guard Drive:''' com.openexchange.capability.guard:drive&lt;br /&gt;
&lt;br /&gt;
Each of those two Guard components is enabled for all users that have the according capability configured. Please note that users need to have the Drive permission set to use Guard Drive. So the users that have Guard Drive enabled must be a subset of those users with OX Drive permission. Since v7.6.0 we enforce this via the default configuration. Those capabilities can be activated for specific user by using the Open-Xchange provisioning scripts:&lt;br /&gt;
&lt;br /&gt;
'''Guard Mail:'''&lt;br /&gt;
 $ /opt/open-xchange/sbin/changeuser -c 1 -A oxadmin -P admin_password -u testuser --config/com.openexchange.capability.guard:mail=true&lt;br /&gt;
&lt;br /&gt;
'''Guard Drive:'''&lt;br /&gt;
 $ /opt/open-xchange/sbin/changeuser -c 1 -A oxadmin -P admin_password -u testuser --config/com.openexchange.capability.guard:drive=true&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' Guard Drive requires Guard Mail to be configured for the user as well.&lt;br /&gt;
&lt;br /&gt;
== Optional ==&lt;br /&gt;
&lt;br /&gt;
=== SSL Configuration ===&lt;br /&gt;
&lt;br /&gt;
Per default the connection between the Guard backend and the configured Open-Xchange REST API host is unencrypted. Even though that Guard will never transmit unencrypted emails to or from the REST API you can optionally encrypt the whole communication between those two components by using SSL. To enforce Guard to use SSL in the communication between those two components enable the follwing configuration in Guard configuration file. &lt;br /&gt;
&lt;br /&gt;
  $ vim /opt/open-xchange/guard/etc/guard.properties&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.guard.backend_ssl=true&lt;br /&gt;
&lt;br /&gt;
The Guard backend is most commonly placed behind a load balancer (APACHE or other) and defaults to HTTP for incoming and outgoing traffic, using the load balancer to do SSL with the users.  If you want Guard to use SSL for all communications, you need to set up the SSL key to use.&lt;br /&gt;
&lt;br /&gt;
Please note that you have to provide access to the certificates.&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.useSSL: true&lt;br /&gt;
 com.openexchange.guard.SSLPort: 8443&lt;br /&gt;
 com.openexchange.guard.SSLKeyStore: //keystore location//&lt;br /&gt;
 com.openexchange.guard.SSLKeyName: //alias name here//&lt;br /&gt;
 com.openexchange.guard.SSLKeyPass: //ssl password//&lt;br /&gt;
&lt;br /&gt;
'''Please Note:''' Enabling SSL might decrease performance and/or create more system load due to additional encoding of the HTTP streams.&lt;br /&gt;
&lt;br /&gt;
== Clustering ==&lt;br /&gt;
&lt;br /&gt;
You can run multiple OX Guard servers in your environment to ensure high availability or enhance scalability. OX Guard integrates seamlessly into the existing Open-Xchange infrastructure by using the existing interface standards and is therefor transparent to the environment. A couple of things have to be prepared in order to loosely couple OX Guard servers with Open-Xchange servers in a cluster.&lt;br /&gt;
&lt;br /&gt;
=== MySQL ===&lt;br /&gt;
&lt;br /&gt;
The MySQL servers need to be configured in order to allow access to the configdb of Open-Xchange. To do so you need to set the following configuration in the MySQL my.cnf:&lt;br /&gt;
&lt;br /&gt;
 bind = 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
This allows the Guard backend to bind to the MySQL host which is configured in the guard.properties file with com.openexchange.guard.configdbHostname. After the bind for the MySQL instance is configured and the OX Guard backend would be able to connect to the configured host, you have to grant access for the OX Guard service on the MySQL instance to manage the databases. Do so by connecting to the MySQL server via the mysql client. Authenticate if necessary and execute the following, please note that you have to modify the hostname / IP address of the client who should be able to connect to this database, it should include all possible OX Guard servers:&lt;br /&gt;
&lt;br /&gt;
 GRANT ALL PRIVILEGES ON *.* TO 'openexchange'@'oxguard.example.com' IDENTIFIED BY ‘secret’;&lt;br /&gt;
&lt;br /&gt;
=== Apache ===&lt;br /&gt;
&lt;br /&gt;
OX Guard uses the Open-Xchange REST API to store and fetch data from the Open-Xchange databases. The REST API is a servlet running in the Grizzly container. By default it is not exposed as a servlet through Apache and is only accessibly via port 8009. In order to use Apache's load balancing via mod_proxy we need to add a servlet called &amp;quot;preliminary&amp;quot; to proxy_http.conf, example based on a clustered mod_proxy configuration:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Location /preliminary&amp;gt;&lt;br /&gt;
      Order Deny,Allow&lt;br /&gt;
      Deny from all&lt;br /&gt;
      # Only allow access from Guard servers within the network. Do not expose this&lt;br /&gt;
      # location outside of your network. In case you use a load balancing service in front&lt;br /&gt;
      # of your Apache infrastructure you should make sure that access to /preliminary will&lt;br /&gt;
      # be blocked from the internet / outside clients. Examples:&lt;br /&gt;
      # Allow from 192.168.0.1&lt;br /&gt;
      # Allow from 192.168.1.1 192.168.1.2&lt;br /&gt;
      # Allow from 192.168.0.&lt;br /&gt;
      ProxyPass /preliminary balancer://oxcluster/preliminary&lt;br /&gt;
 &amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that the balancer is properly configured in the mod_proxy configuration. Examples on how to do so can be found in our clustering configuration for Open-Xchange AppSuite. Like explained in the example above, please make sure that this location is only available in your internal network, there is no need to expose /preliminary to the public, it is only used by Guard servers to connect to the OX backend. If you have a load balancer in front of the Apache cluster you should consider blocking access to /preliminary from WAN to restrict access to the servlet to internal network services only.&lt;br /&gt;
&lt;br /&gt;
Now add the OX Guard BalancerMembers to the oxguard balancer configuration (also in proxy_http.conf) to address all your OX Guard nodes in the cluster in this balancer configuration. The configuration has to be applied to all Apache nodes within the cluster.&lt;br /&gt;
&lt;br /&gt;
If the Apache server is a dedicated server / instance you also have to install the OX Guard UI-Static package on all Apache nodes in the cluster in order to provide static files like images or CSS to the OX Guard client. Example for Debian (the OX Guard repository has to be configured in the package management prior):&lt;br /&gt;
&lt;br /&gt;
 $ apt-get install open-xchange-guard-ui-static&lt;br /&gt;
&lt;br /&gt;
=== Open-Xchange ===&lt;br /&gt;
&lt;br /&gt;
Disable the Open-Xchange IPCheck for session verification. This is required because OX Guard will use the users session cookie to connect to the Open-Xchange REST API, but as a different IP address than the OX Guard server has been used during authentication the request would fail if you don't disable the IPCheck:&lt;br /&gt;
&lt;br /&gt;
 $ vim /opt/open-xchange/etc/server.properties&lt;br /&gt;
&lt;br /&gt;
and set:&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.IPCheck=false&lt;br /&gt;
&lt;br /&gt;
The OX Guard UI package has to be installed on all Open-Xchange backend nodes as well, example for Debian (the OX Guard repository has to be configured in the package management prior):&lt;br /&gt;
&lt;br /&gt;
 $ apt-get install open-xchange-guard-ui&lt;br /&gt;
&lt;br /&gt;
Restart the Open-Xchange service afterwards.&lt;br /&gt;
&lt;br /&gt;
=== OX Guard ===&lt;br /&gt;
&lt;br /&gt;
After all the services like MySQL, Apache and Open-Xchange have been configured you need to update the OX Guard backend configuration to point to the correct API endpoints. Set the REST API endpoint to an Apache server by setting the following value in /opt/open-xchange/guard/etc/guard.properties:&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.restApiHostname=apache.example.com&lt;br /&gt;
&lt;br /&gt;
Per default Guard will try to connect to port 8009 to this host, but as we configured the REST API to be proxies thorugh the serblet /preliminary on every Apache we now also need to change the target port for the REST API. You can do so by adding the following line into /opt/open-xchange/guard/etc/guard.properties:&lt;br /&gt;
&lt;br /&gt;
 com.openexchange.guard.oxBackendPort=80&lt;br /&gt;
&lt;br /&gt;
Please also change all settings in regards to MySQL like com.openexchange.guard.configdbHostname, com.openexchange.guard.oxguardDatabaseHostname, com.openexchange.guard.databaseUsername or com.openexchange.guard.databasePassword. Afterwards restart the OX Guard service and check the logfile if the OX Guard backend is able to connect to the configured REST API.&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:UI_build_system&amp;diff=18678</id>
		<title>AppSuite:UI build system</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:UI_build_system&amp;diff=18678"/>
		<updated>2014-10-02T13:24:34Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stability-deprecated}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Build System&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Abstract:''' This document describes the build system of OX App Suite. It is intended for app developers who use the build system to create apps as well as for OX App Suite developers who not only use the build system but also may wish to extend it.&lt;br /&gt;
&lt;br /&gt;
The build system is used to create source archives from source files. These source archives can be used to compile installable packages for various Linux distributions. The build system can generate archives for the core UI as well as for independently installed apps.&lt;br /&gt;
&lt;br /&gt;
The OX App Suite build system uses [https://github.com/mde/jake Jake], a port of Rake from Ruby to [http://nodejs.org Node.js]. Both Rake and Jake are dependency-based build systems like Make, which allows quick incremental builds. But unlike Make, Jake doesn't have its own syntax. Instead, it provides an API in JavaScript. The API is used not only to specify dependencies between files using a full programming language, but also to implement the generation of files in the same language. This allows easy implementation of complex build systems, of which the OX App Suite build system is an example. Using the same language for the developed project and for its build system also allows any core developer to quickly extend the build system without having to switch to another language.&lt;br /&gt;
&lt;br /&gt;
== Using the Build System ==&lt;br /&gt;
&lt;br /&gt;
While easily extensible, most of the time the build system will be used as-is. This chapter describes how to set up and use the build system to develop apps and the OX App Suite core.&lt;br /&gt;
&lt;br /&gt;
All command examples are given for the Debian operating system. The instructions should work similarly on other POSIX systems. The first character of each command indicates whether it should be executed as root (#) or as a normal user ($).&lt;br /&gt;
&lt;br /&gt;
== Installing ==&lt;br /&gt;
&lt;br /&gt;
Installing the right environment for running the &amp;lt;code&amp;gt;appserver&amp;lt;/code&amp;gt; and the UI build system is described in [[AppSuite:GettingStarted#Installing | the getting started article]].&lt;br /&gt;
&lt;br /&gt;
== Running ==&lt;br /&gt;
&lt;br /&gt;
The build system is executed by invoking the command &amp;lt;code&amp;gt;build-appsuite&amp;lt;/code&amp;gt;. Similar to most build systems, the build system can perform multiple tasks, which are specified as parameters on the command line. Each task can require any number of parameters. These parameters can be specified either on the command line, using the syntax &amp;lt;code&amp;gt;name=value&amp;lt;/code&amp;gt;, or as environment variables.&lt;br /&gt;
&lt;br /&gt;
If present, the file &amp;lt;code&amp;gt;local.conf&amp;lt;/code&amp;gt; is sourced by a shell script before the build process starts. This file can export environment variables which are specific to the local system, without checking them into a version control system. Typically, it defines values for &amp;lt;code&amp;gt;[[#builddir|builddir]]&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;[[#debug|debug]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Since the build system is based on Jake, it also accepts all other Jake options. In addition, the environment variable &amp;lt;code&amp;gt;$nodeopts&amp;lt;/code&amp;gt; can be used to pass command line parameters to Node.js. One of the most useful parameters is &amp;lt;code&amp;gt;--debug-brk&amp;lt;/code&amp;gt;, which can be used to debug the build system.&lt;br /&gt;
&lt;br /&gt;
When developing external apps, the build system must be run from the top directory of the app's source. As a safety precaution, execution is aborted if the subdirectory &amp;lt;code&amp;gt;apps&amp;lt;/code&amp;gt;, which usually contains JavaScript source code, is not found. This Article is written assuming, you're working in your workspace directory, containing the subfolder &amp;lt;code&amp;gt;apps&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Workflow ==&lt;br /&gt;
&lt;br /&gt;
The build system is used not only to create source archives for packaging. It can also directly install and update the built UI in a directory during development, help with the setup of the source of a new external app and more. While all of these tasks are described in the reference section, daily work involves just a few of them.&lt;br /&gt;
&lt;br /&gt;
To have an easy example about how to [[AppSuite:GettingStarted#Writing | write]], [[AppSuite:GettingStarted#Building | build]] &amp;amp; [[AppSuite:GettingStarted#Running | host]] your javascript code and how to [[AppSuite:GettingStarted#Initialization | initialize]] &amp;amp; [[AppSuite:GettingStarted#Building_Packages | build]] your packages, please have a look at the [[AppSuite:GettingStarted | GettingStarted article]].&lt;br /&gt;
&lt;br /&gt;
==== JSHINT ====&lt;br /&gt;
&lt;br /&gt;
One step of the build process is running jshint to statically analyse the sources for certain errors. JSHint is configured with (what we think) sane defaults, but if you want to configure your own rules, edit &amp;lt;code&amp;gt;.jshintrc&amp;lt;/code&amp;gt; in your project`s root folder, according to your needs.&lt;br /&gt;
&lt;br /&gt;
=== default ===&lt;br /&gt;
&lt;br /&gt;
The default task is used instead of the app task when building the core OX App Suite. Since it is the default Jake task, it is not necessary to specify it on the command line when it's the only task.&lt;br /&gt;
&lt;br /&gt;
The top directory of OX App Suite source code includes the script &amp;lt;code&amp;gt;build.sh&amp;lt;/code&amp;gt;, which should be used instead of calling a potentially unrelated version of &amp;lt;code&amp;gt;build-appsuite&amp;lt;/code&amp;gt;. The script changes the current directory to its own, so that it can be called from any directory.&lt;br /&gt;
&lt;br /&gt;
   $ web/ui/build.sh&lt;br /&gt;
&lt;br /&gt;
=== clean ===&lt;br /&gt;
&lt;br /&gt;
The build system uses dependencies and file timestamps to decide which files to rebuild. This assumes that any change to a file increases its timestamp to a value which is greater than the timestamp of any existing file. When this assumption is violated (e.g. after switching to a different source control branch with older files) it may become necessary to rebuild everything to restore the assumption about timestamps. The simplest way to achieve this is the clean task, which simply deletes all generated files.&lt;br /&gt;
&lt;br /&gt;
WARNING: This can be potentially dangerous, since the clean task simply deletes the directories specified by the variables builddir, destDir, l10nDir, manifestDir, and helpDir.&lt;br /&gt;
&lt;br /&gt;
=== dist ===&lt;br /&gt;
&lt;br /&gt;
When the app is ready to be shipped, or rather all the time on a continuous build system, the app needs to be packaged in a format suitable for installation on a production system. Since there already exist tools to create packages from suitably arranged source code archives, the OX App Suite build system merely prepares such source archives.&lt;br /&gt;
&lt;br /&gt;
The dist task creates an archive with the source (the one ending in .orig.tar.bz2) and a few additional files necessary for Debian packaging. RPM packages can be generated using the same source archive and the .spec file created by init-packaging. The version of the package is extracted from the newest entry in the file debian/changelog.&lt;br /&gt;
&lt;br /&gt;
Debian packages can also be generated manually either from the temporary directory left behind by dist, or even directly from the source tree. The second option pollutes the source tree with generated files, so it is not recommended, although the .gitignore file created by init-packaging can handle these generated files.&lt;br /&gt;
&lt;br /&gt;
   $ build-appsuite dist&lt;br /&gt;
   $ ls tmp/packaging/&lt;br /&gt;
   example-app-0.0.1                   example-app_0.0.1-1.dsc&lt;br /&gt;
   example-app_0.0.1-1.debian.tar.bz2  example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
   $ cd tmp/packaging/example-app-0.0.1/&lt;br /&gt;
   $ dpkg-buildpackage -b&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
&lt;br /&gt;
==== BASEDIR ====&lt;br /&gt;
The top directory of the build system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; all tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; installation directory of the build system&lt;br /&gt;
&lt;br /&gt;
Required to build external apps, since in this case, the build&lt;br /&gt;
system is not installed in the current directory. This variable is&lt;br /&gt;
automatically set as an environment variable by the build system&lt;br /&gt;
executable based on &amp;lt;code&amp;gt;$OX_APPSUITE_DEV&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== branch ====&lt;br /&gt;
The Subversion branch of the CLDR to checkout.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;update-i18n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== builddir ====&lt;br /&gt;
The target directory for generated files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;app&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;clean&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dist&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;docs&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;jakedeps&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Default: &amp;lt;code&amp;gt;build&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== copyright ====&lt;br /&gt;
The copyright line to be included in packaging metadata.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;[[#init-packaging|init-packaging]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Example:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;2012 Open-Xchange, Inc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== coreDir ====&lt;br /&gt;
Location of OX App Suite UI files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;[[#app|app]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#default|default]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; same as &amp;lt;code&amp;gt;[[#builddir|builddir]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some tasks depend on installed files from the OX App Suite. When building external apps, &amp;lt;code&amp;gt;[[#coreDir|coreDir]]&amp;lt;/code&amp;gt; specified the directory which contains these files.&lt;br /&gt;
&lt;br /&gt;
Currently, this parameter is used to compile &amp;lt;code&amp;gt;.less&amp;lt;/code&amp;gt; files for every installed theme. This can be disabled by setting &amp;lt;code&amp;gt;[[#skipLess|skipLess]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== debug ====&lt;br /&gt;
Enables a debug build.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;app&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To simplify debugging of OX App Suite, compression of source code&lt;br /&gt;
can be disabled by specifying &amp;lt;code&amp;gt;on&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== description ====&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;init-packaging&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The description of the app to be included in packaging metadata.&lt;br /&gt;
&lt;br /&gt;
==== destDir ====&lt;br /&gt;
Output directory for source archives created by&lt;br /&gt;
the &amp;lt;code&amp;gt;dist&amp;lt;/code&amp;gt; task.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;clean&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dist&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;tmp/packaging&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== disableStrictMode ====&lt;br /&gt;
Removes all &amp;lt;code&amp;gt;&amp;quot;use strict&amp;quot;&amp;lt;/code&amp;gt; directives from processed&lt;br /&gt;
JavaScript code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;app&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some debugging tools which use code instrumentation have problems&lt;br /&gt;
when the debugged code uses strict mode. This setting enables code&lt;br /&gt;
processing even whe using &amp;lt;code&amp;gt;debug&amp;lt;/code&amp;gt; mode, so line numbers&lt;br /&gt;
will not match the original source code.&lt;br /&gt;
&lt;br /&gt;
==== forceDeb ====&lt;br /&gt;
Whether an error during the generation of Debian source packages is an error.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;dist&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is useful when Debian packages are generated automatically, and a failure of &amp;lt;code&amp;gt;dpkg-source&amp;lt;/code&amp;gt; is also a failure of the entire build. By default it merely produces a warning.&lt;br /&gt;
&lt;br /&gt;
==== from ====&lt;br /&gt;
The root of the printed dependency tree between Jake tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;jakedeps&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== helpDir ====&lt;br /&gt;
The location of online help files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;clean&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;dist&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; same as &amp;lt;code&amp;gt;builddir&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the value contains the string &amp;lt;code&amp;gt;@lang@&amp;lt;/code&amp;gt;, it will be&lt;br /&gt;
replaced by the lowercase language code (e.g. &amp;lt;code&amp;gt;en-us&amp;lt;/code&amp;gt;) to&lt;br /&gt;
allow per-language directories.&lt;br /&gt;
&lt;br /&gt;
==== l10nDir ====&lt;br /&gt;
The location of compiled l10n files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;app&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;clean&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dist&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; same as &amp;lt;code&amp;gt;builddir&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the value contains the string &amp;lt;code&amp;gt;@lang@&amp;lt;/code&amp;gt;, it will be&lt;br /&gt;
replaced by the lowercase language code (e.g. &amp;lt;code&amp;gt;en-us&amp;lt;/code&amp;gt;) to&lt;br /&gt;
allow per-language directories.&lt;br /&gt;
&lt;br /&gt;
==== license ====&lt;br /&gt;
File name of the full text of the distribution license.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;init-packaging&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; based on &amp;lt;code&amp;gt;licenseName&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== licenseName ====&lt;br /&gt;
Name of the distribution license to be included in packaging&lt;br /&gt;
metadata.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;init-packaging&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;CC-BY-NC-SA-3.0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== manifestDir ====&lt;br /&gt;
The location of the combined manifest file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;app&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;clean&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dist&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; same as &amp;lt;code&amp;gt;builddir&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== maintainer ====&lt;br /&gt;
Name and email address of the package maintainer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;init-packaging&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Format:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;Name&amp;lt;/var&amp;gt; &amp;amp;lt;&amp;lt;var&amp;gt;email&amp;lt;/var&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== package ====&lt;br /&gt;
The name of the package for the built app.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; all tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; the package name in the first line of&lt;br /&gt;
&amp;lt;code&amp;gt;debian/changelog&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the name of the manifest file contains the package name and it&lt;br /&gt;
is required to determine build dependencies, the package name must&lt;br /&gt;
be always known. This means either &amp;lt;code&amp;gt;debian/changelog&amp;lt;/code&amp;gt;&lt;br /&gt;
must exist and contain at least one entry, or the parameter must be&lt;br /&gt;
explicitly specified.&lt;br /&gt;
&lt;br /&gt;
==== reverse ====&lt;br /&gt;
Reverses the direction of printed dependencies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;deps&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When specified, the &amp;lt;code&amp;gt;deps&amp;lt;/code&amp;gt; task prints modules which&lt;br /&gt;
depend on the specified modules, instead of modules on which&lt;br /&gt;
the specified module depends.&lt;br /&gt;
&lt;br /&gt;
==== revision ====&lt;br /&gt;
Revision number of the package for the app.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;app&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;dist&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The revision number must increase with each rebuild of the same&lt;br /&gt;
version to enable the creation of unique version strings. These are&lt;br /&gt;
required in package names and to control content caching in clients.&lt;br /&gt;
&lt;br /&gt;
==== root ====&lt;br /&gt;
Specifies for which module to print the dependencies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;deps&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; print all roots&lt;br /&gt;
&lt;br /&gt;
If specified, only the dependencies of the specified module are&lt;br /&gt;
printed. Otherwise, the dependencies of all modules are printed.&lt;br /&gt;
&lt;br /&gt;
==== skipDeb ====&lt;br /&gt;
Whether to skip the generation of Debian source packages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;dist&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is useful when Debian packages are not required and/or&lt;br /&gt;
&amp;lt;code&amp;gt;dpkg-source&amp;lt;/code&amp;gt; is not available, e.g. on RPM based&lt;br /&gt;
systems.&lt;br /&gt;
&lt;br /&gt;
Even when using this flag, at least the file&lt;br /&gt;
&amp;lt;code&amp;gt;debian/changelog&amp;lt;/code&amp;gt; is still required, because it is used&lt;br /&gt;
to store the package name and version. &lt;br /&gt;
&lt;br /&gt;
==== skipLess ====&lt;br /&gt;
Whether to skip the preprocessing of LessCSS files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;app&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This flag skips the generation of CSS files in&lt;br /&gt;
the &amp;lt;code&amp;gt;apps/themes/*/less&amp;lt;/code&amp;gt; directories of all themes.&lt;br /&gt;
It is used by the packaging system, where the LessCSS files are&lt;br /&gt;
precompiled after installation on the target system instead of&lt;br /&gt;
while building the package.&lt;br /&gt;
&lt;br /&gt;
==== tag ====&lt;br /&gt;
The Subversion tag of the CLDR to checkout.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;update-i18n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== to ====&lt;br /&gt;
The leaf task in the printed dependency path between Jake tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;jakedeps&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When specified, only a single path from the root to the leaf task is&lt;br /&gt;
printed (in reverse order).&lt;br /&gt;
&lt;br /&gt;
==== version ====&lt;br /&gt;
Version number of the app.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Used by:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;app&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;dist&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;init-packaging&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Default:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;0.0.1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The version should consist of a major, minor and patch version&lt;br /&gt;
separated by dots.&lt;br /&gt;
&lt;br /&gt;
=== Tasks ===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
An up-to-date list of tasks can be printed using the -T command line option.&lt;br /&gt;
&lt;br /&gt;
==== app ====&lt;br /&gt;
Builds an external app.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Variables:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;[[#BASEDIR|BASEDIR]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#builddir|builddir]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#coreDir|coreDir]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#debug|debug]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#disableStrictMode|disableStrictMode]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#l10nDir|l10nDir]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#manifestDir|manifestDir]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#package|package]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#revision|revision]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#version|version]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This is the main task used to build external apps.&lt;br /&gt;
&lt;br /&gt;
It works without explicitly specifying any variables, but during&lt;br /&gt;
development, &amp;lt;code&amp;gt;[[#builddir|builddir]]&amp;lt;/code&amp;gt; is usually pointed to&lt;br /&gt;
the directory of a locally installed OX App Suite UI to avoid&lt;br /&gt;
additional copying steps. For debugging, &amp;lt;code&amp;gt;[[#debug|debug]]&amp;lt;/code&amp;gt; is also&lt;br /&gt;
often used. Note that &amp;lt;code&amp;gt;[[#clean|clean]]&amp;lt;/code&amp;gt; must be called when&lt;br /&gt;
changing any of the variables.&lt;br /&gt;
&lt;br /&gt;
==== clean ====&lt;br /&gt;
Removes all generated files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Variables:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;BASEDIR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;builddir&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;destDir&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;l10nDir&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;manifestDir&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This task should be executed before a normal build using&lt;br /&gt;
&amp;lt;code&amp;gt;app&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; after changing any build&lt;br /&gt;
variables and after a switch between Git branches. Normal&lt;br /&gt;
incremental builds can miss changed files if a branch switch&lt;br /&gt;
replaces files by older versions.&lt;br /&gt;
&lt;br /&gt;
==== default ====&lt;br /&gt;
Builds OX App Suite.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Variables:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;[[#BASEDIR|BASEDIR]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#builddir|builddir]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#debug|debug]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#disableStrictMode|disableStrictMode]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#l10nDir|l10nDir]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#manifestDir|manifestDir]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#package|package]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#revision|revision]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#version|version]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This is the main task to build OX App Suite. Since it is the default&lt;br /&gt;
Jake task, it does not need to be specified explicitly on&lt;br /&gt;
the command line when it is the only task.&lt;br /&gt;
&lt;br /&gt;
It works without explicitly specifying any variables, but during&lt;br /&gt;
development, &amp;lt;code&amp;gt;[[#builddir|builddir]]&amp;lt;/code&amp;gt; is usually pointed to&lt;br /&gt;
a directory which is accessible to a local web server. For&lt;br /&gt;
debugging, &amp;lt;code&amp;gt;[[#debug|debug]]&amp;lt;/code&amp;gt; is also often used. Note that&lt;br /&gt;
&amp;lt;code&amp;gt;[[#clean|clean]]&amp;lt;/code&amp;gt; must be called when changing any of&lt;br /&gt;
the variables.&lt;br /&gt;
&lt;br /&gt;
==== deps ====&lt;br /&gt;
Prints module dependencies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Variables:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;BASEDIR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;reverse&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This task visualizes dependencies of RequireJS modules. It prints&lt;br /&gt;
a tree of dependencies to &amp;lt;code&amp;gt;stdout&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; is specified, then only the dependencies of&lt;br /&gt;
that module are printed. Otherwise, the dependencies of all modules,&lt;br /&gt;
on which no other module depends are printed in sequence. &lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;reverse&amp;lt;/code&amp;gt; is specified, then this task prints&lt;br /&gt;
dependants instead of dependencies, i.e. modules which depend on&lt;br /&gt;
the specified module instead of modules on which the specified&lt;br /&gt;
module depends.&lt;br /&gt;
&lt;br /&gt;
==== dist ====&lt;br /&gt;
Creates source packages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Variables:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;BASEDIR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;builddir&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;destDir&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;forceDeb&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;l10nDir&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;manifestDir&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;revision&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;skipDeb&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This task cleans the source tree by calling &amp;lt;code&amp;gt;clean&amp;lt;/code&amp;gt; and&lt;br /&gt;
packs the source into an archive which can be used to create Debian&lt;br /&gt;
and RPM packages. The necessary Debian metadata is created alongside&lt;br /&gt;
the source archive. All files necessary for Debian packaging are&lt;br /&gt;
placed in the directory specified by &amp;lt;code&amp;gt;destDir&amp;lt;/code&amp;gt;.&lt;br /&gt;
The generated &amp;lt;code&amp;gt;.orig.tar.bz2&amp;lt;/code&amp;gt; archive can also be used&lt;br /&gt;
together with the &amp;lt;code&amp;gt;.spec&amp;lt;/code&amp;gt; file to generate RPM packages.&lt;br /&gt;
&lt;br /&gt;
Unless the variable &amp;lt;code&amp;gt;skipDeb&amp;lt;/code&amp;gt; is set to&lt;br /&gt;
&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the program &amp;lt;code&amp;gt;dpkg-source&amp;lt;/code&amp;gt; is required&lt;br /&gt;
by this task. It is used to generate Debian-specific packaging&lt;br /&gt;
metadata.&lt;br /&gt;
&lt;br /&gt;
==== init-packaging ====&lt;br /&gt;
Initializes packaging information for a new app.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Variables:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;BASEDIR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;copyright&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;license&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;licenseName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;maintainer&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This task is the first task called when starting with&lt;br /&gt;
the development of a new external app. The directory from which it&lt;br /&gt;
is called must already contain at least the &amp;lt;code&amp;gt;apps&amp;lt;/code&amp;gt;&lt;br /&gt;
subdirectory. This is also the only task where&lt;br /&gt;
the &amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt; variable must be specified explicitly.&lt;br /&gt;
Afterwards, the package name is looked up automatically in the file&lt;br /&gt;
&amp;lt;code&amp;gt;debian/changelog&amp;lt;/code&amp;gt;, which is created by this task.&lt;br /&gt;
&lt;br /&gt;
The variables &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;maintainer&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;copyright&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;licenseName&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;license&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; are required to&lt;br /&gt;
fill out all necessary packaging metadata. Any of these variables&lt;br /&gt;
which are not specified explicitly will cause an interactive prompt.&lt;br /&gt;
This avoids the need to remember the list of variables before one&lt;br /&gt;
can start developing an app.&lt;br /&gt;
&lt;br /&gt;
==== jakedeps ====&lt;br /&gt;
Shows the dependency chain between two Jake tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Variables:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;BASEDIR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;from&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;to&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This task visualized dependencies between Jake tasks. The variable&lt;br /&gt;
&amp;lt;code&amp;gt;from&amp;lt;/code&amp;gt; specifies the root of a dependency tree, with all&lt;br /&gt;
dependencies of &amp;lt;code&amp;gt;from&amp;lt;/code&amp;gt; as inner and leaf nodes. If&lt;br /&gt;
&amp;lt;code&amp;gt;to&amp;lt;/code&amp;gt; is not specified, then that entire tree is printed.&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;to&amp;lt;/code&amp;gt; is also specified, then only the first found&lt;br /&gt;
dependency path from &amp;lt;code&amp;gt;from&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;to&amp;lt;/code&amp;gt; is&lt;br /&gt;
.printed with &amp;lt;code&amp;gt;to&amp;lt;/code&amp;gt; at the top and &amp;lt;code&amp;gt;from&amp;lt;/code&amp;gt; at&lt;br /&gt;
the bottom.&lt;br /&gt;
&lt;br /&gt;
==== merge ====&lt;br /&gt;
Updates all &amp;lt;code&amp;gt;.po&amp;lt;/code&amp;gt; files with the generated&lt;br /&gt;
&amp;lt;code&amp;gt;ox.pot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Variables:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;BASEDIR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;builddir&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;debug&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;revision&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This task updates the list of extracted i18n strings in&lt;br /&gt;
&amp;lt;code&amp;gt;ox.pot&amp;lt;/code&amp;gt; and calls the GNU Gettext tool&lt;br /&gt;
&amp;lt;code&amp;gt;msgmerge&amp;lt;/code&amp;gt; for every language in &amp;lt;code&amp;gt;i18n/*.po&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;i18n/en_US.po&amp;lt;/code&amp;gt; is not updated by this task because the original strings are already in the &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt; locale. It would only end up with every translation mapping every string to itself. The only entries in that file should be for cases when the &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt; text is not a suitable fallback for missing translations. The original string in such a case would be something internationally appropriate (e.&amp;amp;nbsp;g. a date written as &amp;quot;2013-01-01&amp;quot; instead of &amp;quot;01/01/2013&amp;quot;) and &amp;lt;code&amp;gt;i18n/en_US.po&amp;lt;/code&amp;gt; would contain a translation.&lt;br /&gt;
&lt;br /&gt;
==== update-i18n ====&lt;br /&gt;
Updates CLDR data in the source tree.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Variables:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;BASEDIR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;branch&amp;lt;/code&amp;gt;,&lt;br /&gt;
&amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This task downloads data from the Unicode CLDR and updates date&lt;br /&gt;
translations for all languages in &amp;lt;code&amp;gt;i18n/*.po&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The exact version of CLDR data is specified as Suubversion tag or&lt;br /&gt;
branch by the variables &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;branch&amp;lt;/code&amp;gt;,&lt;br /&gt;
respectively. If neither is specified, then the Subversion trunk is&lt;br /&gt;
checked out. If both are specified, &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt; is used.&lt;br /&gt;
&lt;br /&gt;
==== verify-doc ====&lt;br /&gt;
Generates a documentation skeleton for extension points.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Variables:&amp;lt;/b&amp;gt; &amp;lt;code&amp;gt;BASEDIR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;package&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This task is still under development. Currently, it creates a list of all extension points, which have a constant name in the source code. In the future it is supposed to update an existing list instead of overwriting it, and to handle non-constant extension point names.&lt;br /&gt;
&lt;br /&gt;
The list of extension points is stored as an HTML snippet in &amp;lt;code&amp;gt;doc/extensionpoints.html&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=18677</id>
		<title>AppSuite:Theming</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Theming&amp;diff=18677"/>
		<updated>2014-10-02T13:18:42Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stability-experimental}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Theming&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Abstract.''' In this article, you can learn how to create customized themes and use them to change the look of you appsuite installation.&lt;br /&gt;
__TOC__&lt;br /&gt;
== LESS.JS ==&lt;br /&gt;
Appsuite used LESS as dynamic stylesheet language. LESS extends CSS with dynamic behavior such as variables, mixins, operations and functions.&lt;br /&gt;
&lt;br /&gt;
Please read [http://lesscss.org/#docs LESS.JS] documentation first.&lt;br /&gt;
&lt;br /&gt;
=== Using less.js ===&lt;br /&gt;
If your theme depends on less.js, you will need one more step to make it work. Why? To accelerate the login, compilation of LessCSS files was moved from the login process in the browser to the installation process on the backend. &lt;br /&gt;
&lt;br /&gt;
Backend packages for themes and any apps which ship .less files require the following changes:&lt;br /&gt;
&lt;br /&gt;
1. Add &amp;quot;skipLess=1&amp;quot; to the build command in *.spec and in debian/rules:&lt;br /&gt;
   sh /opt/open-xchange-appsuite-dev/bin/build-appsuite app skipLess=1&lt;br /&gt;
2. Add %post and %postun sections to *.spec:&lt;br /&gt;
   %post&lt;br /&gt;
   if [ &amp;quot;$1&amp;quot; = 1 ]; then&lt;br /&gt;
   UPDATE=/opt/open-xchange/appsuite/share/update-themes.sh&lt;br /&gt;
   [ -x $UPDATE ] &amp;amp;&amp;amp; $UPDATE&lt;br /&gt;
   fi&lt;br /&gt;
   %postun&lt;br /&gt;
   UPDATE=/opt/open-xchange/appsuite/share/update-themes.sh&lt;br /&gt;
   [ -x $UPDATE ] &amp;amp;&amp;amp; $UPDATE&lt;br /&gt;
&lt;br /&gt;
For multiple binary packages, the %post and %postun sections should apply only to backend packages &lt;br /&gt;
which contain .less files.&lt;br /&gt;
&lt;br /&gt;
3. Add debian/postinst and debian/postrm containing the same content:&lt;br /&gt;
   #!/bin/sh&lt;br /&gt;
   UPDATE=/opt/open-xchange/appsuite/share/update-themes.sh&lt;br /&gt;
   [ -x $UPDATE ] &amp;amp;&amp;amp; $UPDATE&lt;br /&gt;
&lt;br /&gt;
For multiple binary packages, the postinst and postrm files should apply only to backend packages which contain .less files.&lt;br /&gt;
&lt;br /&gt;
Note: Since 7.2.1, LessCSS files must have the file extension .less to be usable with the 'less' RequireJS plugin (module dependencies of the form 'less!filename.less'). Previously we were more lenient and dealt with .css, too.&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
A theme basically consists of two files located in &amp;lt;code&amp;gt;/opt/open-xchange/appsuite/apps/themes/&amp;lt;var&amp;gt;THEME_ID&amp;lt;/var&amp;gt;/&amp;lt;/code&amp;gt;. These files are described in this and the following sections.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;var&amp;gt;THEME_ID&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; is a unique identifier for your theme, which is not visible to users. By convention, it is best derived from a domain name you control, e.g. &amp;lt;code&amp;gt;com.example.prettytheme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== definitions.less ===&lt;br /&gt;
This file can be used to override variables described in the &amp;quot;Variables&amp;quot; section of this article.&lt;br /&gt;
&lt;br /&gt;
=== style.less ===&lt;br /&gt;
This file can be used to define any CSS you like. Before doing this, check, if there really is no variable that can be used to achieve the same thing.&lt;br /&gt;
&lt;br /&gt;
=== Referencing paths ===&lt;br /&gt;
Since 7.2.1, all URLs are relative to the source .less file in which they are contained. This means that unless a theme changes an image it does not need to include that image anymore. &lt;br /&gt;
&lt;br /&gt;
Old themes must be updated if they change an image from the default theme: All styles from the default theme which refer to a changed image must be overwritten in the custom theme. This way the URLs resolve to the new image.&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
Naming of the variables should be straight forward. Variables containing the word ''Background'' will always refer to the background color. Variables containing ''Color'' will refer to the foreground color of an element, like color of a font. ''Hover'' in most cases means &amp;quot;hovered&amp;quot; elements. ''Selected'' relates to the currently selected item. Elements that are supposed to catch the users eye can use the ''Highlight'' class and the variable contains this word.&lt;br /&gt;
&lt;br /&gt;
Variables are defined in variables.less from twitter-bootstrap and our default definitions.less. Variables that are defined in definitions.less always override variables from bootstrap's variables.less&lt;br /&gt;
&lt;br /&gt;
=== Most relevant variables ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable (7.6.x) || Variable (7.4.x) || Default (7.6.x)&lt;br /&gt;
|-&lt;br /&gt;
| @topbar-background || @topbarBackground || #3774A8 (blue)&lt;br /&gt;
|-&lt;br /&gt;
| --- || @topbarBackgroundAlt || No longer used&lt;br /&gt;
|-&lt;br /&gt;
| @topbar-launcher-color || @topbarLauncherColor || rgba(255, 255, 255, 0.70)&lt;br /&gt;
|-&lt;br /&gt;
| @topbar-launcher-color-hover || @topbarLauncherColor-hover || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @topbar-launcher-color-active || @topbarLauncherColorActive || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @topbar-launcher-background-hover || @topbarLauncherBackgroundHover || rgba(0, 0, 0, 0.30)&lt;br /&gt;
|-&lt;br /&gt;
| @topbar-launcher-background-active || @topbarLauncherBackgroundActive || rgba(0, 0, 0, 0.20);&lt;br /&gt;
|-&lt;br /&gt;
| @topbar-icon-color || @topbarIconColor || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @selected-background || @selectedBackground || #428BCA (blue)&lt;br /&gt;
|-&lt;br /&gt;
| @contact-picture-radius || @contactPictureRadius || 50%&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The most significant visual change is achieved by changing the following variables:&lt;br /&gt;
* '''@topbar-background''' (top navigation bar)&lt;br /&gt;
* '''@selected-background''' (selection background color in list views and folder tree)&lt;br /&gt;
* '''@link-color''' (almost all hyperlinks)&lt;br /&gt;
&lt;br /&gt;
=== Font ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable (7.6.x) || Variable (7.4.x) || Default (7.6.x)&lt;br /&gt;
|-&lt;br /&gt;
| @font-family-sans-serif || @sansFontFamily       || &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif&lt;br /&gt;
|-&lt;br /&gt;
| @font-family-serif      || @serifFontFamily      || Georgia, &amp;quot;Times New Roman&amp;quot;, Times, serif&lt;br /&gt;
|-&lt;br /&gt;
| @font-family-monospace  || @monoFontFamily       || Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace&lt;br /&gt;
|-&lt;br /&gt;
| @font-size-base         || @baseFontSize         || 14px&lt;br /&gt;
|-&lt;br /&gt;
|                     || @baseFontFamily       ||&lt;br /&gt;
|-&lt;br /&gt;
| @line-height-base       || @baseLineHeight       || 1.428571429; // 20/14&lt;br /&gt;
|-&lt;br /&gt;
|                      || @altFontFamily        ||&lt;br /&gt;
|-&lt;br /&gt;
| @font-size-touch        || @touchFontSize        || 15px&lt;br /&gt;
|-&lt;br /&gt;
| @headings-font-family   || @headingsFontFamily   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @headings-font-weight   || @headingsFontWeight   || 500&lt;br /&gt;
|-&lt;br /&gt;
| @font-size-large        || @fontSizeLarge        || ceil((@font-size-base * 1.25)); // ~18px&lt;br /&gt;
|-&lt;br /&gt;
| @font-size-small        || @fontSizeSmall        || ceil((@font-size-base * 0.85)); // ~12px&lt;br /&gt;
|-&lt;br /&gt;
|                      || @fontSizeMini         ||&lt;br /&gt;
|-&lt;br /&gt;
| @vgrid-font-size        || @vgridFontSize        || 13px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Colors ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable (7.6.x)   || Variable (7.4.x) || Default (7.6.x)&lt;br /&gt;
|-&lt;br /&gt;
| @background        || @bodyBackground  || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @text-color        || @textColor       || @gray-dark&lt;br /&gt;
|-&lt;br /&gt;
| @link-color        || @linkColor       || @brand-primary&lt;br /&gt;
|-&lt;br /&gt;
| @link-hover-color  || @linkColorHover  || darken(@link-color, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| @link-accent-color || @linkAccentColor ||  #ffad00&lt;br /&gt;
|-&lt;br /&gt;
| || @linkAccentColorHover ||&lt;br /&gt;
|-&lt;br /&gt;
| @badge-color       || @badgeColor      || @white&lt;br /&gt;
|-&lt;br /&gt;
| @badge-bg          || @badgeBackground || #aaa&lt;br /&gt;
|-&lt;br /&gt;
| @headings-color    || @headingsColor   || inherit&lt;br /&gt;
|-&lt;br /&gt;
| @black             || @black           || #000&lt;br /&gt;
|-&lt;br /&gt;
| @gray-darker       || @grayDarker      || #222&lt;br /&gt;
|-&lt;br /&gt;
| @gray-dark         || @grayDark        || #333&lt;br /&gt;
|-&lt;br /&gt;
| @gray              || @gray            || #555&lt;br /&gt;
|-&lt;br /&gt;
| @gray-light        || @grayLight       || #999&lt;br /&gt;
|-&lt;br /&gt;
| @gray-lighter      || @grayLighter     || #eee&lt;br /&gt;
|-&lt;br /&gt;
| @white             || @white           || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @blue              || @blue            || darken(#049cdb, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @blue-dark         || @blueDark        || #0064cd&lt;br /&gt;
|-&lt;br /&gt;
| @blue-light        || @blueLight       || lighten(#049cdb, 25%)&lt;br /&gt;
|-&lt;br /&gt;
| @green             || @green           || #1A8D1A&lt;br /&gt;
|-&lt;br /&gt;
| @green-light       || @greenLight      || #92D050&lt;br /&gt;
|-&lt;br /&gt;
| @red               || @red             || #cc0000&lt;br /&gt;
|-&lt;br /&gt;
| @yellow            || @yellow          || #F8E400&lt;br /&gt;
|-&lt;br /&gt;
| @orange            || @orange          || #f89406&lt;br /&gt;
|-&lt;br /&gt;
| @pink              || @pink            || #E01CD9&lt;br /&gt;
|-&lt;br /&gt;
| @purple            || @purple          || #7E16CF&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Space ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable (7.6.x) || Variable (7.4.x) || Default (7.6.x)&lt;br /&gt;
|-&lt;br /&gt;
| || @paddingLarge ||&lt;br /&gt;
|-&lt;br /&gt;
| || @paddingSmall ||&lt;br /&gt;
|-&lt;br /&gt;
| || @paddingMini  ||&lt;br /&gt;
|-&lt;br /&gt;
| @border-radius-base  || @baseBorderRadius      || 4px&lt;br /&gt;
|-&lt;br /&gt;
| @border-radius-large || @borderRadiusLarge     || 6px&lt;br /&gt;
|-&lt;br /&gt;
| @border-radius-small || @borderRadiusSmall     || 3px&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pagination ===&lt;br /&gt;
&lt;br /&gt;
Used where pagination is done, for example in the Calendar weekview, each week is on one &amp;quot;page&amp;quot;; one can switch the week using a pagination widget styled with these variables.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable (7.6.x) || Variable (7.4.x) || Default (7.6.x)&lt;br /&gt;
|-&lt;br /&gt;
| @pagination-bg        || @paginationBackground       || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @pagination-border    || @paginationBorder           || #ddd&lt;br /&gt;
|-&lt;br /&gt;
| @pagination-active-bg || @paginationActiveBackground || @brand-primary&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Buttons ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable (7.6.x)                   || Variable (7.4.x)               || Default (7.6.x)&lt;br /&gt;
|-&lt;br /&gt;
| || @btnBackground ||&lt;br /&gt;
|-&lt;br /&gt;
| || @btnBackgroundHighlight ||&lt;br /&gt;
|-&lt;br /&gt;
| || @btnBorder ||&lt;br /&gt;
|-&lt;br /&gt;
| @btn-primary-bg            || @btnPrimaryBackground          || @link-color&lt;br /&gt;
|-&lt;br /&gt;
| || @btnPrimaryBackgroundHighlight ||&lt;br /&gt;
|-&lt;br /&gt;
| @btn-info-bg               || @btnInfoBackground             || #5bc0de&lt;br /&gt;
|-&lt;br /&gt;
| || @btnInfoBackgroundHighlight    ||&lt;br /&gt;
|-&lt;br /&gt;
| @btn-success-bg            || @btnSuccessBackground          || #62c462&lt;br /&gt;
|-&lt;br /&gt;
| || @btnSuccessBackgroundHighlight ||&lt;br /&gt;
|-&lt;br /&gt;
| @btn-warning-bg            || @btnWarningBackground          || lighten(@orange, 15%)&lt;br /&gt;
|-&lt;br /&gt;
| || @btnWarningBackgroundHighlight ||&lt;br /&gt;
|-&lt;br /&gt;
| @btn-danger-bg             || @btnDangerBackground           || #ee5f5b&lt;br /&gt;
|-&lt;br /&gt;
| || @btnDangerBackgroundHighlight ||&lt;br /&gt;
|-&lt;br /&gt;
| @btn-inverse-bg            || @btnInverseBackground          || #444&lt;br /&gt;
|-&lt;br /&gt;
| || @btnInverseBackgroundHighlight ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Dropdowns ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Variable (7.6.x)            || Variable (7.4.x)              || Default (7.6.x)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdown-bg                || @dropdownBackground           || #fff&lt;br /&gt;
|-&lt;br /&gt;
| @dropdown-border            || @dropdownBorder               || rgba(0,0,0,.15)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdown-divider-bg        || @dropdownDividerTop           || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdown-divider-bg        || @dropdownDividerBottom        || #e5e5e5&lt;br /&gt;
|-&lt;br /&gt;
| @dropdown-link-color        || @dropdownLinkColor            || @gray-dark&lt;br /&gt;
|-&lt;br /&gt;
| @dropdown-link-hover-color  || @dropdownLinkColorHover       || darken(@gray-dark, 5%)&lt;br /&gt;
|-&lt;br /&gt;
| @dropdown-link-active-color || @dropdownLinkColorActive      || @component-active-color&lt;br /&gt;
|-&lt;br /&gt;
| @dropdown-link-active-bg    || @dropdownLinkBackgroundActive || @component-active-bg&lt;br /&gt;
|-&lt;br /&gt;
| @dropdown-link-hover-bg     || @dropdownLinkBackgroundHover  || #f5f5f5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foldertree ===&lt;br /&gt;
{|&lt;br /&gt;
! Variable (7.6.x)            || Variable (7.4.x)              || Default (7.6.x) || Description&lt;br /&gt;
|-&lt;br /&gt;
| @foldertree-sidepane-background || @foldertreeSidepanelBackground || #f5f5f5 ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertee-section-title-color || @foldertreeSectionTitleColor || #888 || Color for sectiontitles in foldertree (like &amp;quot;Public&amp;quot; folders)&lt;br /&gt;
|-&lt;br /&gt;
| @foldertree-active-label-color || @foldertreeActiveLabelColor || #333 || ''Active'' means, user can perform an action on this item&lt;br /&gt;
|-&lt;br /&gt;
|@foldertree-passive-label-color || @foldertreePassiveLabelColor ||@hc-gray || ''Passive'' means, user can '''not''' perform any action with this item &lt;br /&gt;
|-&lt;br /&gt;
| @foldertree-hover-background || @foldertreeHoverBackground || rgba(0, 0, 0, 0.05) ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertree-selected-background || @foldertreeSelectedBackground || rgba(0, 0, 0, 0.10) ||&lt;br /&gt;
|-&lt;br /&gt;
| @foldertree-badge-background || @foldertreeBadgeBackground || @bagde-bg || see [[#Colors]] for definition of @badge-bg&lt;br /&gt;
|-&lt;br /&gt;
| @foldertree-badge-color || @foldertreeBadgeColor ||@badge-color || see [[#Colors]] for definition of @badge-color&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Calendar ===&lt;br /&gt;
==== Appointment ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable (7.6.x)            || Variable (7.4.x)              || Default (7.6.x) || Description&lt;br /&gt;
|-&lt;br /&gt;
| @appointment-reserved || @appointmentReserved || #08c /* blue */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointment-temporary || @appointmentTemporary || #ffbb00 /* yellow */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointment-absent || @appointmentAbsent || #913f3f /* red */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointment-free || @appointmentFree || #8eb360 /* green */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointment-private || @appointmentPrivate || #555 /* gray */ || Appointment status color&lt;br /&gt;
|-&lt;br /&gt;
| @appointment-declined-font || @appointmentDeclinedFont || #888 /* dark gray */|| Font color for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointment-unconfirmed-alpha || @appointmentUnconfirmedAlpha || 0.4 || Transparency value for unconfirmed Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointment-declined-alpha || @appointmentDeclinedAlpha || 0.3 || Transparency value for declined Appointments&lt;br /&gt;
|-&lt;br /&gt;
| @appointment-hover-pct || @appointmentHoverPct || 15% || Percentage increase of the dark pigment content on hover effect&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Week View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable (7.6.x)            || Variable (7.4.x)              || Default (7.6.x) || Description&lt;br /&gt;
|-&lt;br /&gt;
| @weekview-appointment-lasso || @weekviewAppointmentLasso || #aeaeff || Lasso frame color&lt;br /&gt;
|-&lt;br /&gt;
| @weekview-day-in || @weekviewDayIn || #fff /* white */ || Default background color in week view&lt;br /&gt;
|-&lt;br /&gt;
| @weekview-day-out || @weekviewDayOut || #e0e0e0 /* grey */ || Background color outside of the mean working time&lt;br /&gt;
|-&lt;br /&gt;
| @weekview-timeline || @weekviewTimeline || rgba(243, 15, 170, 0.4) || Color of the Line indicating the current time&lt;br /&gt;
|-&lt;br /&gt;
| @weekview-time-width || @weekviewTimeWith || 58px || With of the time labels on the left side&lt;br /&gt;
|-&lt;br /&gt;
| @calendar-toolbar-height || @calendarToolbarHeight || 47px || Height of the control toolbar &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Month View ====&lt;br /&gt;
{|&lt;br /&gt;
! Variable (7.6.x)            || Variable (7.4.x)              || Default (7.6.x) || Description&lt;br /&gt;
|-&lt;br /&gt;
| @monthview-appointment-out || @monthviewAppointmentOut || #aaa /* light gray */ || Color of appointments, which are not in focus&lt;br /&gt;
|-&lt;br /&gt;
| @monthview-today || @monthviewToday || #daefff /* light blue */|| Background color of the current day&lt;br /&gt;
|-&lt;br /&gt;
| || @monthview@calendarToolbarHeight || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Area names ==&lt;br /&gt;
&lt;br /&gt;
The variables sometimes refer to common areas. To identify which area is located where, see the following annotated screenshots.&lt;br /&gt;
&lt;br /&gt;
[[File:Colors_mail.png|800px||Mail application]]&lt;br /&gt;
&lt;br /&gt;
[[File:Colors_launchpad.png|800px||Launchpad application]]&lt;br /&gt;
&lt;br /&gt;
== Replacing the logo ==&lt;br /&gt;
&lt;br /&gt;
One of the most common theme changes which requires editing &amp;lt;code&amp;gt;style.css&amp;lt;/code&amp;gt; is changing the logo in the top right corner. The logo is displayed as the background image for an element with the ID &amp;lt;code&amp;gt;io-ox-top-logo-small&amp;lt;/code&amp;gt;. A theme can therefore change the size and URL of the image:&lt;br /&gt;
 #io-ox-top-logo-small {&lt;br /&gt;
     width: 60px;&lt;br /&gt;
     height: 22px;&lt;br /&gt;
     margin: 8px 13px 0 13px;&lt;br /&gt;
     background-image: url(mylogo.png);&lt;br /&gt;
 }&lt;br /&gt;
The file &amp;lt;code&amp;gt;mylogo.png&amp;lt;/code&amp;gt; is expected to be in the same directory as &amp;lt;code&amp;gt;style.css&amp;lt;/code&amp;gt;. If you want to place the image somewhere else, then use a relative path in &amp;lt;code&amp;gt;url()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Remember that images in OX App Suite are served by the web server and not by the application server. This means that images need to be packaged separately (for dedicated web servers) and installed in &amp;lt;code&amp;gt;/var/www/appsuite/&amp;lt;/code&amp;gt; (or similar, depending on the target platform) instead of &amp;lt;code&amp;gt;/opt/open-xchange/appsuite/&amp;lt;/code&amp;gt;. Direct support for multiple packages is coming in version 7.4.1. Until then, use the build system from the &amp;lt;code&amp;gt;develop&amp;lt;/code&amp;gt; branch to [[AppSuite:UI_build_system#init-packaging|initialize the packaging]] if your theme contains images.&lt;br /&gt;
&lt;br /&gt;
== Mixins ==&lt;br /&gt;
In LESS, it is possible to include a bunch of properties from one ruleset into another ruleset. So say we have the following class:&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-css&amp;quot;&amp;gt;&lt;br /&gt;
.border-radius(@radius: 0px) {&lt;br /&gt;
    -webkit-border-radius: @radius;&lt;br /&gt;
    -moz-border-radius: @radius;&lt;br /&gt;
    -ms-border-radius: @radius;&lt;br /&gt;
    border-radius: @radius;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#menu a {&lt;br /&gt;
  color: #111;&lt;br /&gt;
  .border-radius(5px);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read [http://www.lesscss.org/#-mixins LESS Mixins]&lt;br /&gt;
&lt;br /&gt;
=== global OX Mixins ===&lt;br /&gt;
&lt;br /&gt;
they can be found at [[#definitions.less | definitions.less]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Mixin || Sample || Description &lt;br /&gt;
|-&lt;br /&gt;
| .box-sizing(@boxmodel) || .box-sizing(border-box) ||&lt;br /&gt;
|-&lt;br /&gt;
| .user-select(@select) || .user-select(none) ||&lt;br /&gt;
|-&lt;br /&gt;
| .border-radius(@radius) || .border-radius(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .box-shadow(@shadow) || .box-shadow(3px) ||&lt;br /&gt;
|-&lt;br /&gt;
| .vertical-gradient(@startColor, @endColor) || .vertical-gradient(#888, #555) ||&lt;br /&gt;
|-&lt;br /&gt;
| .radial-gradient(@color1, @color2, @color3) || .radial-gradient(#111, #222, #333) ||&lt;br /&gt;
|-&lt;br /&gt;
| .transition(@transition) || .transition(background-color 0.2s linear) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation(@animation) || .animation(slidein 300ms) ||&lt;br /&gt;
|-&lt;br /&gt;
| .animation-name(@name) || .animation-name(slideright) ||&lt;br /&gt;
|-&lt;br /&gt;
| .ellipsis || .ellipsis ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow(@type) || .overflow(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-x(@type) || .overflow-x(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .overflow-y(@type) || .overflow-y(hidden) ||&lt;br /&gt;
|-&lt;br /&gt;
| .backface-visibility(@type) || .backface-visibility(hidden) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to activate a theme during development ==&lt;br /&gt;
&lt;br /&gt;
When creating a new theme, you will want to test changes quickly without building packages reinstalling them. The trick is to use [[Appsuite:Appserver|appserver]].&lt;br /&gt;
&lt;br /&gt;
# First, you need to add the theme to the list of available themes on the backend. Simply create a new file in &amp;lt;code&amp;gt;/opt/open-xchange/etc/settings/&amp;lt;/code&amp;gt; with the extension &amp;lt;code&amp;gt;.properties&amp;lt;/code&amp;gt; and add a line for your theme to it: &amp;lt;pre&amp;gt;io.ox/core/settingOptions//themes/&amp;lt;var&amp;gt;ID&amp;lt;/var&amp;gt;=&amp;lt;var&amp;gt;Theme Name&amp;lt;/var&amp;gt;&amp;lt;/pre&amp;gt; Replace &amp;lt;var&amp;gt;ID&amp;lt;/var&amp;gt; by the identifier (directory name) of your theme, and &amp;lt;var&amp;gt;Theme Name&amp;lt;/var&amp;gt; by the human-readable name which should appear in the UI.&lt;br /&gt;
# The server needs to be restarted to read the new settings.&lt;br /&gt;
# Now, you can use &amp;lt;code&amp;gt;appserver&amp;lt;/code&amp;gt; ([[AppSuite:appserver#Use_with_Apache|with a local web server]] if your theme includes images) to get your theme in combination with the UI which is already installed on the backend.&lt;br /&gt;
# Finally, activate your theme the list in the &amp;lt;code&amp;gt;Settings -&amp;gt; Basic&amp;lt;/code&amp;gt; view behind the option &amp;lt;code&amp;gt;Theme&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In case you also want to access the same backend without &amp;lt;code&amp;gt;appserver&amp;lt;/code&amp;gt; while your theme is selected, that theme (or at least some empty &amp;lt;code&amp;gt;.less&amp;lt;/code&amp;gt; files) should be also installed on the backend to avoid errors. To just use an empty theme, run the following as root:&lt;br /&gt;
 touch /opt/open-xchange/appsuite/apps/themes/&amp;lt;var&amp;gt;ID&amp;lt;/var&amp;gt;/definitions.less&lt;br /&gt;
 touch /opt/open-xchange/appsuite/apps/themes/&amp;lt;var&amp;gt;ID&amp;lt;/var&amp;gt;/style.less&lt;br /&gt;
 /opt/open-xchange/appsuite/share/update-themes.sh&lt;br /&gt;
The value of &amp;lt;var&amp;gt;ID&amp;lt;/var&amp;gt; here must be the same as in your &amp;lt;code&amp;gt;.properties&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
== Favicons and mobile homescreen icons ==&lt;br /&gt;
'''Note''': This chapter is not about changing AppSuite icons which are used in the application like the brand on the upper right.&lt;br /&gt;
&lt;br /&gt;
'''This documentation applies for AppSuite v.7.4.2'''&lt;br /&gt;
&lt;br /&gt;
AppSuite ships with a standard set of icons containing a&lt;br /&gt;
# favicon&lt;br /&gt;
# set of touch icons which are mainly used by mobile Safari on iOS&lt;br /&gt;
&lt;br /&gt;
These icons are used as default for all devices and browsers as long as you don't deliver your own icons with your theme. To provide your own icons, put them into your theme's directory, e.g. &amp;lt;tt&amp;gt;apps/themes/&amp;lt;var&amp;gt;theme-name&amp;lt;/var&amp;gt;/favicon.ico&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Favicon ===&lt;br /&gt;
All major browsers support the use of a favicon. The favicon is a pixel image with the size of 16x16 (32x32) and the &amp;quot;ico&amp;quot; file ending. (see [http://en.wikipedia.org/wiki/Favicon Wikipedia Favicon] for details).&lt;br /&gt;
&lt;br /&gt;
You should provide your custom favicon within your custom theme. If you do not add a custom favicon to your theme the global OX default will be used. The default icon is located under &amp;lt;tt&amp;gt;apps/themes/icons/default&amp;lt;/tt&amp;gt; on the web server.&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' Safari and Internet Explorer do not support dynamic changes to the favicon for a webpage. This means, the default icon will be shown even if a custom favicon is provided within a custom theme. To enable the right favicon for a theme on Safari and IE, the overall standard &amp;lt;tt&amp;gt;favicon.ico&amp;lt;/tt&amp;gt; located under &amp;lt;tt&amp;gt;apps/themes/icons/default&amp;lt;/tt&amp;gt; on the web server must be replaced with a custom version.&lt;br /&gt;
&lt;br /&gt;
=== Apple touch icons ===&lt;br /&gt;
iOS devices (iPhone/iPad/iPod) support so called &amp;quot;Webclips&amp;quot;. Webclips are bookmarks to websites or webapps which provide a App Icon that is shown on the iOS homescreen. AppSuite offers full support for Webclips by providing all needed App icons, splashscreens and full screen support. If a user uses the &amp;quot;Add to homescreen&amp;quot; button on his iOS device, a Webclip is created, taking the right icon for his current device. Most devices need custom resolutions of the Webclip icon in the '''png''' format.&lt;br /&gt;
&lt;br /&gt;
* iPhone 3: 57 x 57 px&lt;br /&gt;
* iPhone 4 retina: 114x114 px&lt;br /&gt;
* iPhone iPhone 5 retina: 120 x 120 px&lt;br /&gt;
* iPad: 72 x 72 px&lt;br /&gt;
* iPad (iOS 7): 76 x 76px&lt;br /&gt;
* iPad retina: 144 x 144 px &lt;br /&gt;
* iPad retina (iOS 7): 152 x 152 px &lt;br /&gt;
&lt;br /&gt;
Furthermore a fullscreen Webclip App will show a splashscreen, a jpg file that is displayed on startup during app load. There are currently three different resolutions as jpg files available. '''Note''': Splashscreens must be JPG files&lt;br /&gt;
&lt;br /&gt;
* iPhone: 320 x 460 px&lt;br /&gt;
* iPhone 4: 640 x 920 px&lt;br /&gt;
* iPhone 5: 640 x 1096 px&lt;br /&gt;
&lt;br /&gt;
'''Note''': We do not provide splashscreens for iPad&lt;br /&gt;
   &lt;br /&gt;
This list may change with Apple's iOS updates. We recommend providing all of this resolutions when customizing the Webclip icons and splashscreens, even if some iOS devices use the next best resolution for an icon if a certain file is missing.&lt;br /&gt;
&lt;br /&gt;
=== Providing custom icons ===&lt;br /&gt;
To provide custom Webclip icons locate the following path in the AppSuite installation on your web server:&lt;br /&gt;
 pathToAppSuite/apps/themes/icons/default&lt;br /&gt;
&lt;br /&gt;
This folder contains all OX default icons for Webclips icons and splashscreens. Use these as samples for your own versions.&lt;br /&gt;
&lt;br /&gt;
A clean installation will have all our default icons in the &amp;quot;default&amp;quot; directory. To customize the icons we recommend using our default icons as samples and save your customized version in your theme. '''Note''': The filename has to be the same as in the default folder. Otherwise the fallback will be applied and the default icons will be used. If more advanced rewriting is needed one should edit the contents of the &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; file located under &amp;lt;tt&amp;gt;apps/themes&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Theming the login page ==&lt;br /&gt;
&lt;br /&gt;
The login page is a little bit special. If you don’t use the [[Open-Xchange_servlet_for_external_login_masks|form login]] and provide your own login page, you might want to theme the login page, too. [[AppSuite:Theming the login page|Learn how to do this here]].&lt;br /&gt;
&lt;br /&gt;
=== Providing domain based login themes ===&lt;br /&gt;
&lt;br /&gt;
If you have a multibrand installation and you want to deliver not only custom themes but also custom login-themes this can be done via Apache mod_rewrite. You can do so by a domain-based rewrite rule to deliver custom themes to a user based on the URI he's using. The needed config file &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; is located under &amp;lt;tt&amp;gt;apps/themes&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Sample config for domain based login theme&lt;br /&gt;
RewriteCond %{HTTP_HOST} ^www\.domain\.com$&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} -f&lt;br /&gt;
RewriteRule ^login/(.*)$ domain_com_logintheme/$1 [L]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Best practice ==&lt;br /&gt;
&lt;br /&gt;
To be really safe, it’s best to only define your own values for the variables shown above. If this really breaks anything, we consider this a bug, please report it [https://bugs.open-xchange.com/] in our bugzilla.&lt;br /&gt;
&lt;br /&gt;
Of course, using CSS in &amp;lt;code&amp;gt;style.less&amp;lt;/code&amp;gt; file to define your own styles is also possible. Make sure to test your style in such cases more carefully. It is most likely safe to change minor things using this file, but if you plan to change any positions of larger elements, this might break the complete design. So please be careful when overwriting the default CSS rules.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://bradfrost.github.io/this-is-responsive/resources.html Responsive design]&lt;br /&gt;
&lt;br /&gt;
[http://lesscss.org/ LESS]&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
It is '''not''' recommended to change the size of elements or their position. If you really want to do so, please check on all devices and in all browsers and make sure you didn’t break anything. You even have to be careful when changing the font, because this might have effects on positioning, too.&lt;br /&gt;
&lt;br /&gt;
As mentioned before, changing colors should be safe.&lt;br /&gt;
&lt;br /&gt;
[[Category:AppSuite]]&lt;br /&gt;
[[Category:UI]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Main_Page_Quickinstall&amp;diff=18584</id>
		<title>AppSuite:Main Page Quickinstall</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Main_Page_Quickinstall&amp;diff=18584"/>
		<updated>2014-09-24T11:38:41Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OX App Suite =&lt;br /&gt;
&lt;br /&gt;
== Quick Installation Guide ==&lt;br /&gt;
&lt;br /&gt;
To download and install the software, please use the following Installation Guides:&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_Debian_6.0|Download and Installation Guide for Debian GNU/Linux 6.0 (Squeeze)]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_Debian_7.0|Download and Installation Guide for Debian GNU/Linux 7.0 (Wheezy)]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_SLES11|Download and Installation Guide for SUSE Linux Enterprise Server 11]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_RHEL6|Download and Installation Guide for RedHat Enterprise Linux 6]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_CentOS_6|Download and Installation Guide for CentOS 6]]&lt;br /&gt;
* [[OXSE4UCS_Installation_en|Download and Installation Guide for Univention Corporate Server]]&lt;br /&gt;
* [[AppSuite:Demoinstallation|Download and Installation Guide for Open-Xchange SE / App Suite for UCS VMware© Demo]]&lt;br /&gt;
&lt;br /&gt;
== Installing the latest Updates for OX App Suite ==&lt;br /&gt;
&lt;br /&gt;
To get the latest features and bugfixes for OX App Suite, you need to have a valid license. The following article explains how that can be done:&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:UpdatingOXPackages|Updating OX App Suite packages]]&lt;br /&gt;
* [[UpdateTasks|Update Task Management in Open-Xchange]]&lt;br /&gt;
&lt;br /&gt;
== Update from 6.22.x to OX App Suite ==&lt;br /&gt;
&lt;br /&gt;
To update the software, please use the following Guides:&lt;br /&gt;
 &lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_Debian_6.0|Update Guide for Debian GNU/Linux 6.0 (Squeeze)]]&lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_for_SLES11|Update Guide for SUSE Linux Enterprise Server 11]]&lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_for_RHEL6|Update Guide for RedHat Enterprise Linux 6]]&lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_for_CentOS6 |Update Guide for CentOS 6]]&lt;br /&gt;
&lt;br /&gt;
==  Parallel Setup of OX App Suite UI and OX 6 UI ==&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Parallel_UISupport_OX6_AppSuite_Debian_6.0|Parallel Setup Guide for Debian GNU/Linux 6.0 (Squeeze)]]&lt;br /&gt;
* [[AppSuite:Parallel_UISupport_OX6_AppSuite_RHEL_6_CentOS_6|Parallel Setup Guide for Red Hat Enterprise Linux 6 and CentOS 6]]&lt;br /&gt;
* [[AppSuite:Parallel_UISupport_OX6_AppSuite_SLES_11|Parallel Setup Guide for SUSE Linux Enterprise Server 11]]&lt;br /&gt;
&lt;br /&gt;
== OX App Suite deployment tutorials ==&lt;br /&gt;
&lt;br /&gt;
A complete guide of necessary tasks with a hardware and setup recommendation for different Open-Xchange Hosting environments:&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:OX_Tutorial_10K|OX App Suite deployment tutorial for up to 10.000 Users]]&lt;br /&gt;
* [[AppSuite:OX_Tutorial_100K|OX App Suite deployment tutorial for up to 100.000 Users]]&lt;br /&gt;
* [[AppSuite:OX_Tutorial_1M|OX App Suite deployment tutorial for up to 1.000.000 Users]]&lt;br /&gt;
&lt;br /&gt;
== Reporting Tool (Mandatory for Maintenance) ==&lt;br /&gt;
&lt;br /&gt;
To receive maintenance in the future, the installation of the Open-Xchange Reporting Tool is mandatory. It documents the current state of your system installation. Furthermore, the tool runs a validity check for your current maintenance. Based on the reported detail information Open-Xchange will then be able to improve its own support and maintenance offerings for you. This article explains how that can be done:&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:OXReportClient|OX App Suite Reporting Client]]&lt;br /&gt;
&lt;br /&gt;
= Open-Xchange Additional Tools and Configurations =&lt;br /&gt;
&lt;br /&gt;
== Open-Xchange Document Viewer ==&lt;br /&gt;
The OX Document Viewer will choose the best preview format depending on the users device on the OX App Suite Web Interface (valid Open-Xchange license required).&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:DocumentViewer |Download &amp;amp; Install Document Viewer]]&lt;br /&gt;
&lt;br /&gt;
== Open-Xchange Calendar synchronization with CalDAV == &lt;br /&gt;
&lt;br /&gt;
The Mac OS X, iOS and Thunderbird Lightning integration makes Open-Xchange appointments available to end users through their native applications.&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:CalDAVClients | Configuration CalDAV with Open-Xchange]]&lt;br /&gt;
* [[AppSuite:Caldav_carddav_Bundles| Installation CalDAV with Open-Xchange]]&lt;br /&gt;
&lt;br /&gt;
== Open-Xchange Contact Synchronization with CardDAV ==&lt;br /&gt;
&lt;br /&gt;
The Mac OS X and iOS integration makes Open-Xchange contacts available to end users through their native applications.&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:CardDAVClients | Configuration CardDAV with Open-Xchange]]&lt;br /&gt;
* [[AppSuite:Caldav_carddav_Bundles| Installation CardDAV with Open-Xchange]]&lt;br /&gt;
&lt;br /&gt;
== Cluster-Setup ==&lt;br /&gt;
Multiple Open-Xchange servers can form a cluster with inter-OX-communication over a network. &lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Running_a_cluster| Configuration Cluster-Setup]]&lt;br /&gt;
&lt;br /&gt;
== HTTP based Connector via Grizzly ==&lt;br /&gt;
OX App Suite offers a second HTTP based connector for the communication between the HTTP server and the backend. This new connector is based on Oracle's Project Grizzly - a NIO and Web framework.&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Grizzly| Configuration Connector based on Grizzly]]&lt;br /&gt;
&lt;br /&gt;
== LDAP Contact Storage ==&lt;br /&gt;
Open-Xchange provides a new LDAP Contact Storage Integration Bundle. The new solution is available together with the current LDAP bundle. &lt;br /&gt;
&lt;br /&gt;
* [[ContactStorageLDAP| LDAP Contact Storage]]&lt;br /&gt;
&lt;br /&gt;
= Open-Xchange Additional Software =&lt;br /&gt;
&lt;br /&gt;
== OX Text  ==&lt;br /&gt;
&lt;br /&gt;
OX Text, is a web-based word processor. Its main focus is on reducing the complexities of text editing while promoting collaborative document creation.&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Text_Installation_Guide|Download &amp;amp; Installation of OX Text]]&lt;br /&gt;
&lt;br /&gt;
== OX Spreadsheet ==&lt;br /&gt;
&lt;br /&gt;
OX Spreadsheet is a cloud based spreadsheet product that can work with Microsoft Excel documents. You can also edit shared spreadsheets on various devices. OX Spreadsheet is the first browser-based spreadsheet application that reads and writes native Microsoft Excel files without loss of format or detail (&amp;quot;Round-trip editing&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Spreadsheet_Installation_Guide|Download &amp;amp; Installation of OX Spreadsheet]]&lt;br /&gt;
&lt;br /&gt;
== Open-Xchange Updater  ==&lt;br /&gt;
&lt;br /&gt;
The Open-Xchange Updater is a software tool by Open-Xchange that installs the latest version of Open-Xchange client software on computers running Windows (valid Open-Xchange license required).&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Open-Xchange_Updater|Installation of the Open-Xchange Updater]]&lt;br /&gt;
&lt;br /&gt;
== Connector for Microsoft Outlook ==&lt;br /&gt;
&lt;br /&gt;
The Open-Xchange Connector for Microsoft Outlook® lets users keep their Outlook client even if the organization moves to an Open-Xchange Server. Users feel right at home working with their Outlook interface while in the background the Connector synchronizes E-Mails, Calendar, Contacts and Tasks, along with Public, Shared and System Folders. Real-time synchronization enables fast response times, so teams can work as efficiently as possible (valid Open-Xchange license required).&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Connector_for_Microsoft_Outlook|Installation &amp;amp; Configuration of the Open-Xchange Connector for Microsoft Outlook]]&lt;br /&gt;
&lt;br /&gt;
== Connector for Business Mobility (ActiveSync) ==&lt;br /&gt;
&lt;br /&gt;
Connector for Business Mobility enables you to securely manage emails, contacts, calendar and tasks on a mobile device. It is based on Microsoft Exchange Active Sync (EAS) standard (valid Open-Xchange license required).&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Connector_for_Business_Mobility_Installation_Guide|Installation and information of the Connector for Business Mobility]]&lt;br /&gt;
&lt;br /&gt;
== OX Drive ==&lt;br /&gt;
&lt;br /&gt;
The OX Drive client lets you store and share your photos, files, documents and videos, anytime, anywhere. Access any file you save to OX Drive from all your computers, iPhone, iPad or from within OX App Suite itself.&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:OX_Drive|Installation and information of OX Drive]]&lt;br /&gt;
&lt;br /&gt;
== OX Guard ==&lt;br /&gt;
&lt;br /&gt;
OX Guard is a fully integrated security add-on to OX App Suite that provides end users with a flexible email and file encryption solution. OX Guard is a highly scalable, multi server, feature rich solution that is so simple-to-use that end users will actually use it.&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:OX_Guard|Installation and information of OX Guard]]&lt;br /&gt;
&lt;br /&gt;
==Open-Xchange Notifier==&lt;br /&gt;
&lt;br /&gt;
OX Notifier informs the user about the current status of E-Mails and appointments without having to display the user interface or another clients such as Outlook. Additional the new tool will provide the possibility to mount the personal InfoStore directly in the OX Notifier settings (valid Open-Xchange license required).&lt;br /&gt;
&lt;br /&gt;
* [[Open-Xchange_Installation_Guide_for_OX_Notifier|Installation &amp;amp; Configuration of the Open-Xchange Notifier]]&lt;br /&gt;
&lt;br /&gt;
==Microsoft Outlook® Uploader==&lt;br /&gt;
&lt;br /&gt;
Open-Xchange provides Open-Xchange Microsoft Outlook® Uploader (short: OXUploader), a migration tool to export data from Microsoft Outlook® or from a Microsoft Exchange Server® to the Open-Xchange Server.&lt;br /&gt;
&lt;br /&gt;
* [[OX_Outlook_Uploader|Download &amp;amp; Installation of the Open-Xchange Microsoft Outlook® Uploader]]&lt;br /&gt;
&lt;br /&gt;
== OX Connector for cPanel ==&lt;br /&gt;
&lt;br /&gt;
Integration of Open-Xchange with cPanel makes deployment and billing of Open-Xchange simple for service providers. Web hosters can offer Open-Xchange to their shared-hosting customers as well as to users of Virtual Private Servers - just by installing a software package together with cPanel.&lt;br /&gt;
&lt;br /&gt;
* [[Open-Xchange_cPanel_Installation|Download &amp;amp; Installation of the Connector for cPanel]]&lt;br /&gt;
&lt;br /&gt;
== OX Connector for WHMCS ==&lt;br /&gt;
&lt;br /&gt;
Integration of OX App Suite with WHMCS/cPanel makes the deployment of OX App Suite simple for service providers and their customers. Web hosters can easily replace their existing webmail system on WHMCS/cPanel and provide customers a state-of-the-art, web based user interface with the benefits of a best in class, full-featured mobile web application – optimized for smartphones! The combination of OX App Suite, the provisioning of cPanel and the billing system WHMCS provides the perfect package for cPanel Hosting Provider and Reseller&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Connector_for_WHMCS_Installation_Guide|Download &amp;amp; Installation of the OX Connector for WHMCS]]&lt;br /&gt;
&lt;br /&gt;
== OX APS package for Parallels Operation Automation System and Plesk Panel ==&lt;br /&gt;
&lt;br /&gt;
Parallels Operations Automation (POA) is an operations support system (OSS) for service providers, who want to differentiate their offerings in order to reduce customer churn and attract new customers. Additional, the APS package adds a high performance, best in class email service to Parallels Plesk Panel customers.&lt;br /&gt;
&lt;br /&gt;
* [[Parallels_Integration|Integrate Open-Xchange with Parallels]]&lt;br /&gt;
&lt;br /&gt;
= Installation Information =&lt;br /&gt;
&lt;br /&gt;
== Information ==&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Backend_API_changes_extensions|OX App Suite - API Changes &amp;amp; Extensions]]&lt;br /&gt;
&lt;br /&gt;
== Installation Requirements ==&lt;br /&gt;
&lt;br /&gt;
* The [[AppSuite:OX_System_Requirements|Open-Xchange software requirements page]] provides an overview about the supported components at the OX User Front-End, Connector for Microsoft Outlook, Connector for Business Mobility and OX Notifier. This overview makes no claim to be complete.&lt;br /&gt;
* [[AppSuite:Importing_OX_Buildkey|Importing the Open-Xchange public buildkey]]&lt;br /&gt;
&lt;br /&gt;
[[Category: OX7]]&lt;br /&gt;
[[Category: AppSuite]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Main_Page_Quickinstall&amp;diff=18583</id>
		<title>AppSuite:Main Page Quickinstall</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Main_Page_Quickinstall&amp;diff=18583"/>
		<updated>2014-09-24T11:37:43Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= OX App Suite =&lt;br /&gt;
&lt;br /&gt;
== Quick Installation Guide ==&lt;br /&gt;
&lt;br /&gt;
To download and install the software, please use the following Installation Guides:&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_Debian_6.0|Download and Installation Guide for Debian GNU/Linux 6.0 (Squeeze)]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_Debian_7.0|Download and Installation Guide for Debian GNU/Linux 7.0 (Wheezy)]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_SLES11|Download and Installation Guide for SUSE Linux Enterprise Server 11]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_RHEL6|Download and Installation Guide for RedHat Enterprise Linux 6]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_CentOS_6|Download and Installation Guide for CentOS 6]]&lt;br /&gt;
* [[OXSE4UCS_Installation_en|Download and Installation Guide for Univention Corporate Server]]&lt;br /&gt;
* [[AppSuite:Demoinstallation|Download and Installation Guide for Open-Xchange SE / App Suite for UCS VMware© Demo]]&lt;br /&gt;
&lt;br /&gt;
== Installing the latest Updates for OX App Suite ==&lt;br /&gt;
&lt;br /&gt;
To get the latest features and bugfixes for OX App Suite, you need to have a valid license. The following article explains how that can be done:&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:UpdatingOXPackages|Updating OX App Suite packages]]&lt;br /&gt;
* [[UpdateTasks|Update Task Management in Open-Xchange]]&lt;br /&gt;
&lt;br /&gt;
== Update from 6.22.x to OX App Suite ==&lt;br /&gt;
&lt;br /&gt;
To update the software, please use the following Guides:&lt;br /&gt;
 &lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_Debian_6.0|Update Guide for Debian GNU/Linux 6.0 (Squeeze)]]&lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_for_SLES11|Update Guide for SUSE Linux Enterprise Server 11]]&lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_for_RHEL6|Update Guide for RedHat Enterprise Linux 6]]&lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_for_CentOS6 |Update Guide for CentOS 6]]&lt;br /&gt;
&lt;br /&gt;
==  Parallel Setup of OX App Suite UI and OX 6 UI ==&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Parallel_UISupport_OX6_AppSuite_Debian_6.0|Parallel Setup Guide for Debian GNU/Linux 6.0 (Squeeze)]]&lt;br /&gt;
* [[AppSuite:Parallel_UISupport_OX6_AppSuite_RHEL_6_CentOS_6|Parallel Setup Guide for Red Hat Enterprise Linux 6 and CentOS 6]]&lt;br /&gt;
* [[AppSuite:Parallel_UISupport_OX6_AppSuite_SLES_11|Parallel Setup Guide for SUSE Linux Enterprise Server 11]]&lt;br /&gt;
&lt;br /&gt;
= OX App Suite deployment tutorials =&lt;br /&gt;
&lt;br /&gt;
A complete guide of necessary tasks with a hardware and setup recommendation for different Open-Xchange Hosting environments:&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:OX_Tutorial_10K|OX App Suite deployment tutorial for up to 10.000 Users]]&lt;br /&gt;
* [[AppSuite:OX_Tutorial_100K|OX App Suite deployment tutorial for up to 100.000 Users]]&lt;br /&gt;
* [[AppSuite:OX_Tutorial_1M|OX App Suite deployment tutorial for up to 1.000.000 Users]]&lt;br /&gt;
&lt;br /&gt;
== Reporting Tool (Mandatory for Maintenance) ==&lt;br /&gt;
&lt;br /&gt;
To receive maintenance in the future, the installation of the Open-Xchange Reporting Tool is mandatory. It documents the current state of your system installation. Furthermore, the tool runs a validity check for your current maintenance. Based on the reported detail information Open-Xchange will then be able to improve its own support and maintenance offerings for you. This article explains how that can be done:&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:OXReportClient|OX App Suite Reporting Client]]&lt;br /&gt;
&lt;br /&gt;
= Open-Xchange Additional Tools and Configurations =&lt;br /&gt;
&lt;br /&gt;
== Open-Xchange Document Viewer ==&lt;br /&gt;
The OX Document Viewer will choose the best preview format depending on the users device on the OX App Suite Web Interface (valid Open-Xchange license required).&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:DocumentViewer |Download &amp;amp; Install Document Viewer]]&lt;br /&gt;
&lt;br /&gt;
== Open-Xchange Calendar synchronization with CalDAV == &lt;br /&gt;
&lt;br /&gt;
The Mac OS X, iOS and Thunderbird Lightning integration makes Open-Xchange appointments available to end users through their native applications.&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:CalDAVClients | Configuration CalDAV with Open-Xchange]]&lt;br /&gt;
* [[AppSuite:Caldav_carddav_Bundles| Installation CalDAV with Open-Xchange]]&lt;br /&gt;
&lt;br /&gt;
== Open-Xchange Contact Synchronization with CardDAV ==&lt;br /&gt;
&lt;br /&gt;
The Mac OS X and iOS integration makes Open-Xchange contacts available to end users through their native applications.&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:CardDAVClients | Configuration CardDAV with Open-Xchange]]&lt;br /&gt;
* [[AppSuite:Caldav_carddav_Bundles| Installation CardDAV with Open-Xchange]]&lt;br /&gt;
&lt;br /&gt;
== Cluster-Setup ==&lt;br /&gt;
Multiple Open-Xchange servers can form a cluster with inter-OX-communication over a network. &lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Running_a_cluster| Configuration Cluster-Setup]]&lt;br /&gt;
&lt;br /&gt;
== HTTP based Connector via Grizzly ==&lt;br /&gt;
OX App Suite offers a second HTTP based connector for the communication between the HTTP server and the backend. This new connector is based on Oracle's Project Grizzly - a NIO and Web framework.&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Grizzly| Configuration Connector based on Grizzly]]&lt;br /&gt;
&lt;br /&gt;
== LDAP Contact Storage ==&lt;br /&gt;
Open-Xchange provides a new LDAP Contact Storage Integration Bundle. The new solution is available together with the current LDAP bundle. &lt;br /&gt;
&lt;br /&gt;
* [[ContactStorageLDAP| LDAP Contact Storage]]&lt;br /&gt;
&lt;br /&gt;
= Open-Xchange Additional Software =&lt;br /&gt;
&lt;br /&gt;
== OX Text  ==&lt;br /&gt;
&lt;br /&gt;
OX Text, is a web-based word processor. Its main focus is on reducing the complexities of text editing while promoting collaborative document creation.&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Text_Installation_Guide|Download &amp;amp; Installation of OX Text]]&lt;br /&gt;
&lt;br /&gt;
== OX Spreadsheet ==&lt;br /&gt;
&lt;br /&gt;
OX Spreadsheet is a cloud based spreadsheet product that can work with Microsoft Excel documents. You can also edit shared spreadsheets on various devices. OX Spreadsheet is the first browser-based spreadsheet application that reads and writes native Microsoft Excel files without loss of format or detail (&amp;quot;Round-trip editing&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Spreadsheet_Installation_Guide|Download &amp;amp; Installation of OX Spreadsheet]]&lt;br /&gt;
&lt;br /&gt;
== Open-Xchange Updater  ==&lt;br /&gt;
&lt;br /&gt;
The Open-Xchange Updater is a software tool by Open-Xchange that installs the latest version of Open-Xchange client software on computers running Windows (valid Open-Xchange license required).&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Open-Xchange_Updater|Installation of the Open-Xchange Updater]]&lt;br /&gt;
&lt;br /&gt;
== Connector for Microsoft Outlook ==&lt;br /&gt;
&lt;br /&gt;
The Open-Xchange Connector for Microsoft Outlook® lets users keep their Outlook client even if the organization moves to an Open-Xchange Server. Users feel right at home working with their Outlook interface while in the background the Connector synchronizes E-Mails, Calendar, Contacts and Tasks, along with Public, Shared and System Folders. Real-time synchronization enables fast response times, so teams can work as efficiently as possible (valid Open-Xchange license required).&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Connector_for_Microsoft_Outlook|Installation &amp;amp; Configuration of the Open-Xchange Connector for Microsoft Outlook]]&lt;br /&gt;
&lt;br /&gt;
== Connector for Business Mobility (ActiveSync) ==&lt;br /&gt;
&lt;br /&gt;
Connector for Business Mobility enables you to securely manage emails, contacts, calendar and tasks on a mobile device. It is based on Microsoft Exchange Active Sync (EAS) standard (valid Open-Xchange license required).&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Connector_for_Business_Mobility_Installation_Guide|Installation and information of the Connector for Business Mobility]]&lt;br /&gt;
&lt;br /&gt;
== OX Drive ==&lt;br /&gt;
&lt;br /&gt;
The OX Drive client lets you store and share your photos, files, documents and videos, anytime, anywhere. Access any file you save to OX Drive from all your computers, iPhone, iPad or from within OX App Suite itself.&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:OX_Drive|Installation and information of OX Drive]]&lt;br /&gt;
&lt;br /&gt;
== OX Guard ==&lt;br /&gt;
&lt;br /&gt;
OX Guard is a fully integrated security add-on to OX App Suite that provides end users with a flexible email and file encryption solution. OX Guard is a highly scalable, multi server, feature rich solution that is so simple-to-use that end users will actually use it.&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:OX_Guard|Installation and information of OX Guard]]&lt;br /&gt;
&lt;br /&gt;
==Open-Xchange Notifier==&lt;br /&gt;
&lt;br /&gt;
OX Notifier informs the user about the current status of E-Mails and appointments without having to display the user interface or another clients such as Outlook. Additional the new tool will provide the possibility to mount the personal InfoStore directly in the OX Notifier settings (valid Open-Xchange license required).&lt;br /&gt;
&lt;br /&gt;
* [[Open-Xchange_Installation_Guide_for_OX_Notifier|Installation &amp;amp; Configuration of the Open-Xchange Notifier]]&lt;br /&gt;
&lt;br /&gt;
==Microsoft Outlook® Uploader==&lt;br /&gt;
&lt;br /&gt;
Open-Xchange provides Open-Xchange Microsoft Outlook® Uploader (short: OXUploader), a migration tool to export data from Microsoft Outlook® or from a Microsoft Exchange Server® to the Open-Xchange Server.&lt;br /&gt;
&lt;br /&gt;
* [[OX_Outlook_Uploader|Download &amp;amp; Installation of the Open-Xchange Microsoft Outlook® Uploader]]&lt;br /&gt;
&lt;br /&gt;
== OX Connector for cPanel ==&lt;br /&gt;
&lt;br /&gt;
Integration of Open-Xchange with cPanel makes deployment and billing of Open-Xchange simple for service providers. Web hosters can offer Open-Xchange to their shared-hosting customers as well as to users of Virtual Private Servers - just by installing a software package together with cPanel.&lt;br /&gt;
&lt;br /&gt;
* [[Open-Xchange_cPanel_Installation|Download &amp;amp; Installation of the Connector for cPanel]]&lt;br /&gt;
&lt;br /&gt;
== OX Connector for WHMCS ==&lt;br /&gt;
&lt;br /&gt;
Integration of OX App Suite with WHMCS/cPanel makes the deployment of OX App Suite simple for service providers and their customers. Web hosters can easily replace their existing webmail system on WHMCS/cPanel and provide customers a state-of-the-art, web based user interface with the benefits of a best in class, full-featured mobile web application – optimized for smartphones! The combination of OX App Suite, the provisioning of cPanel and the billing system WHMCS provides the perfect package for cPanel Hosting Provider and Reseller&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Connector_for_WHMCS_Installation_Guide|Download &amp;amp; Installation of the OX Connector for WHMCS]]&lt;br /&gt;
&lt;br /&gt;
== OX APS package for Parallels Operation Automation System and Plesk Panel ==&lt;br /&gt;
&lt;br /&gt;
Parallels Operations Automation (POA) is an operations support system (OSS) for service providers, who want to differentiate their offerings in order to reduce customer churn and attract new customers. Additional, the APS package adds a high performance, best in class email service to Parallels Plesk Panel customers.&lt;br /&gt;
&lt;br /&gt;
* [[Parallels_Integration|Integrate Open-Xchange with Parallels]]&lt;br /&gt;
&lt;br /&gt;
= Installation Information =&lt;br /&gt;
&lt;br /&gt;
== Information ==&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Backend_API_changes_extensions|OX App Suite - API Changes &amp;amp; Extensions]]&lt;br /&gt;
&lt;br /&gt;
== Installation Requirements ==&lt;br /&gt;
&lt;br /&gt;
* The [[AppSuite:OX_System_Requirements|Open-Xchange software requirements page]] provides an overview about the supported components at the OX User Front-End, Connector for Microsoft Outlook, Connector for Business Mobility and OX Notifier. This overview makes no claim to be complete.&lt;br /&gt;
* [[AppSuite:Importing_OX_Buildkey|Importing the Open-Xchange public buildkey]]&lt;br /&gt;
&lt;br /&gt;
[[Category: OX7]]&lt;br /&gt;
[[Category: AppSuite]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Template:YUMRepo&amp;diff=18452</id>
		<title>Template:YUMRepo</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Template:YUMRepo&amp;diff=18452"/>
		<updated>2014-09-15T11:57:06Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[open-xchange-{{#replace:{{{reponame}}}|/|-}}]&lt;br /&gt;
 name=Open-Xchange-{{#replace:{{{reponame}}}|/|-}}&lt;br /&gt;
 baseurl=http://{{#if:{{{ldbaccount|}}}|{{{ldbaccount}}}@|}}software.open-xchange.com/{{{path}}}/{{{reponame}}}/{{{rhelname}}}/&lt;br /&gt;
 gpgkey=http://software.open-xchange.com/oxbuildkey.pub&lt;br /&gt;
 enabled=1&lt;br /&gt;
 gpgcheck=1&lt;br /&gt;
 metadata_expire=0m&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Template:YUMRepo&amp;diff=18451</id>
		<title>Template:YUMRepo</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Template:YUMRepo&amp;diff=18451"/>
		<updated>2014-09-15T11:55:04Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[open-xchange-{{#replace:{{{reponame}}}|/|-}}]&lt;br /&gt;
 name=Open-Xchange-{{#replace:{{{reponame}}}|/|-}}&lt;br /&gt;
 baseurl=https://{{#if:{{{ldbaccount|}}}|{{{ldbaccount}}}@|}}software.open-xchange.com/{{{path}}}/{{{reponame}}}/{{{rhelname}}}/&lt;br /&gt;
 gpgkey=http://software.open-xchange.com/oxbuildkey.pub&lt;br /&gt;
 enabled=1&lt;br /&gt;
 gpgcheck=1&lt;br /&gt;
 metadata_expire=0m&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Product_FAQ&amp;diff=18380</id>
		<title>Product FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Product_FAQ&amp;diff=18380"/>
		<updated>2014-09-03T08:04:12Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* Under what license do you release your products? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How does OX App Suite compare to OX6? ==&lt;br /&gt;
&lt;br /&gt;
While the web frontend of OX App Suite is completely different from OX 6, the 7.2.0 release of OX App Suite is broadly comparable to OX6 in terms of features and functionality.&lt;br /&gt;
&lt;br /&gt;
Note: When there is no direct equivalent there is often an alternative in the form of a similar or enhanced option. &lt;br /&gt;
&lt;br /&gt;
== When will the OX App Store be ready? ==&lt;br /&gt;
&lt;br /&gt;
Open-Xchange has not formally announced when OX App Store will be available.&lt;br /&gt;
&lt;br /&gt;
== What other up-sell functionality does OX App Suite Offer? ==&lt;br /&gt;
&lt;br /&gt;
Currently OX App Suite offers a number of upsell possibilities, these include: &lt;br /&gt;
* In-app upselling – greyed out items in the menu are clickable and bring up a customizable window – for example allowing automatic upgrade or customer defined promotions. &lt;br /&gt;
* In email advertising. &lt;br /&gt;
* Portal based advertising and promotions.  (Widgets)&lt;br /&gt;
&lt;br /&gt;
For those interested a technical description of upsell capabilities can be found: [http://oxpedia.org/wiki/index.php?title=AppSuite:Upsell#Enable_upsell Here]&lt;br /&gt;
&lt;br /&gt;
== Can I download packages for test and evaluation purposes? ==&lt;br /&gt;
&lt;br /&gt;
A free version of OX App Suite is available for anybody to download. [http://oxpedia.org/wiki/index.php?title=AppSuite:Main_Page_AppSuite#quickinstall See here]. A time-limited key is available to those people wishing to evaluate the features and functionality that are only available in the commercial version. &lt;br /&gt;
&lt;br /&gt;
== How do I get the mobile UI? ==&lt;br /&gt;
&lt;br /&gt;
The mobile UI is available as standard and does not require a separate url. Just open the normal url on your device browser.&lt;br /&gt;
&lt;br /&gt;
== Is there a separate mobile for UI for OX App Suite? ==&lt;br /&gt;
&lt;br /&gt;
No, OX App Suite does not need a separate mobile app as it has a responsive design, which has been enhanced and optimized for mobile use with the release of 7.4.0.&lt;br /&gt;
&lt;br /&gt;
Please note: The &amp;quot;Mobile Web Interface&amp;quot; that was available for OX 6 is not supported for OX App Suite.&lt;br /&gt;
&lt;br /&gt;
== Which UI runs with which backend? ==&lt;br /&gt;
&lt;br /&gt;
There are many possible combinations, however the only supported and tested option is on the current released version.&lt;br /&gt;
&lt;br /&gt;
== What exactly is the community version and how does it differ from the commercial version? ==&lt;br /&gt;
The community version of OX App Suite is a fully functioning version of the OX App Suite, but differs in three key ways:&lt;br /&gt;
* It does not come with support&lt;br /&gt;
* It does not come with commercial packages&lt;br /&gt;
* No public patches&lt;br /&gt;
* Packages for unsupported platforms will be available soon&lt;br /&gt;
&lt;br /&gt;
== Why can I not get the Document Viewer with the free version?==&lt;br /&gt;
OX Document Viewer is not available as part of the free version of OX App Suite. If you wish to use OX Document Viewer you will need to upgrade to the commercial version. &lt;br /&gt;
&lt;br /&gt;
== What is OX Text? == &lt;br /&gt;
OX Text is a text editor which enables web-based, collaborative word processing. Uniquely OX Text provides a seamless document Round-trip. It is compatible with MS Office and OpenOffice. More detailed information on the features and functionality of OX Text can be found: [http://www.open-xchange.com/fileadmin/user_upload/open-xchange/document/datasheet/Datasheet_OX_Text.pdf Here]&lt;br /&gt;
&lt;br /&gt;
== What are the key benefits of OX Text? ==&lt;br /&gt;
* Online word processing &lt;br /&gt;
* More efficient collaboration &lt;br /&gt;
* Reduced complexity &lt;br /&gt;
* Increased productivity &lt;br /&gt;
* Greater focus on content &lt;br /&gt;
* Fully integrated with OX App Suite &lt;br /&gt;
* Anytime, anywhere access &lt;br /&gt;
* Compatible with Microsoft Office and OpenOffice &lt;br /&gt;
* Lower software licensing costs&lt;br /&gt;
&lt;br /&gt;
== What file formats are supported? ==&lt;br /&gt;
OX Text supports the following file formats for text import: doc, dot, rtf, docx, docm, dotx, dotm, odt. &lt;br /&gt;
&lt;br /&gt;
We then convert them into HTML and SVG for your viewing pleasure on all devices and most browsers. &lt;br /&gt;
&lt;br /&gt;
== Why does OX Text not support a specific feature such as “xyz”?==&lt;br /&gt;
&lt;br /&gt;
It was not a design goal of OX Text to copy all the features available in other office suites. If a feature is missing in OX Text, that you love, feel free to use it in your Desktop product. We believe user experience is key, not feature-richness.&lt;br /&gt;
&lt;br /&gt;
Also please keep in mind that OX Text is a new product. Some features have not yet been implemented but that does not mean you cannot include things like headers and footers in your documents. These elements might not be visible (or might appear as an placeholder) in OX Text but when you download the document back to your Desktop editor, all elements will be visible again.&lt;br /&gt;
&lt;br /&gt;
== What does interoperability mean for the user?==&lt;br /&gt;
All Desktop word processors have problems to work with a foreign file format. Although open document standards like OOXML and ODF did a great job in giving users back information ownership and long-term access to their documents, they have not solved the interoperability problem, the ability to work together with different office products. The document Round-trip between two different word processors is still a problem. Documents don't look the same when they are imported and exported to another product. OX Text solved this problem.&lt;br /&gt;
&lt;br /&gt;
== Does OX Text come with a new file format? ==&lt;br /&gt;
No, we have not introduced a new format the files remain unchanged. What are your plans for Spreadsheets and Presentations? These products are an integral part of Ox Documents. OX Spreadsheet and OX Presentations are under development at the moment, please check the roadmap for more information.&lt;br /&gt;
&lt;br /&gt;
== Can end users exchange documents with other users using Microsoft Office?==&lt;br /&gt;
Yes. OX Text is file-compatible with Microsoft Office and OpenOffice&lt;br /&gt;
&lt;br /&gt;
== Which devices can be used?==&lt;br /&gt;
End users can use any device, including rich clients (Windows desktops and notebooks), thin clients and even tablets and smartphones. The only requirement is an HTML5 compatible browser and – at least today – a network connection&lt;br /&gt;
&lt;br /&gt;
== What is Round-Trip editing?==&lt;br /&gt;
&lt;br /&gt;
Legacy documents created with some editors often embed power features not recognized by many other text editors. This is not a problem for OX Text as it has been designed with “round trip” functionality.&lt;br /&gt;
&lt;br /&gt;
Round trip lets you upload any document into OX Text and start working with it.&lt;br /&gt;
When a document contains features such as Smart Art or Charts, they might not appear or are simply replaced with a placeholder. The document can then be worked upon, even in teams and online. Later, when finished, the document can again be downloaded. When it is then reopened in its native editor you find nothing is lost: the new edits are there, the power functions are also still there and working, even the formatting is completely intact. OX Text never damages your valuable work even if it does not understand it.&lt;br /&gt;
&lt;br /&gt;
[[File:round_trip.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Note: Round-trip editing only works with modern OOXML (.docx) or ODF (.odt) file formats. All old Microsoft Office Binary Formats (.doc) are converted to one of the modern XML formats first.&lt;br /&gt;
&lt;br /&gt;
== What is OX Documents and when will it be available? ==&lt;br /&gt;
&lt;br /&gt;
OX Documents comprises of: &lt;br /&gt;
* OX Text&lt;br /&gt;
* OX Spreadsheet&lt;br /&gt;
* OX Presentation&lt;br /&gt;
&lt;br /&gt;
OX Text and OX Spreadsheets have already launched and are available as an integral part of OX App Suite. OX Presentations is expected to launch in 2015.&lt;br /&gt;
&lt;br /&gt;
== Is OX Text available as a stand-alone product for use outside of OX App Suite?==&lt;br /&gt;
No. There are no plans to do this at the moment.&lt;br /&gt;
&lt;br /&gt;
== How do I get OX Text?== &lt;br /&gt;
You need to buy OX Text separately as an upgrade to OX App Suite. A download key is available on request. OX Text for OX App Suite for UCS is available in the Univention App Center. Please check the UMC module App Center for the installation of the OX Text at your already available environment.&lt;br /&gt;
&lt;br /&gt;
'''Further technical FAQ's are available here [http://sdb.open-xchange.com/faq http://sdb.open-xchange.com/faq]!'''&lt;br /&gt;
&lt;br /&gt;
== Is Open-Xchange an Open Source company? ==&lt;br /&gt;
&lt;br /&gt;
Open-Xchange is an Open-Source company. We distribute our software openly, including usage rights and source code.&lt;br /&gt;
&lt;br /&gt;
At the same time we are a commercial entity and need to protect both our partners' and our own business against competition (this is the reason for the non-commercial use clause in the CC license). We think we do a great job of balancing the sometimes-conflicting requirements, but we realize that we will not be able to please everybody all the time.&lt;br /&gt;
&lt;br /&gt;
== Under what license do you release your products?==&lt;br /&gt;
&lt;br /&gt;
We have licensed our backend under a GPL2 license and our frontend under a CC BY-SA-NC license. In addition we use some 3rd Party components in the backend and frontend. Further information about the different licenses for these components can be found here: http://www.open-xchange.com/agb&lt;br /&gt;
&lt;br /&gt;
This means that our software is free for non-commercial use – you can look at our source code, customize it if you like and even redistribute it as long as you do not sell it. For commercial use, and for service and support, you require a license key to download and install OX App Suite packages. Packages for both supported (commercial) and unsupported (non-commercial) platforms are available for download from Open-Xchange. Instructions on how to download and install OX App Suite can be found here: http://oxpedia.org/wiki/index.php?title=AppSuite:Main_Page_AppSuite#quickinstall&lt;br /&gt;
&lt;br /&gt;
Our source code is available for anybody to download from GIT: http://git.open-xchange.com/&lt;br /&gt;
&lt;br /&gt;
== What does this mean for OX Text?==&lt;br /&gt;
&lt;br /&gt;
OX Text is also available under a CC BY-SA-NC license.&lt;br /&gt;
&lt;br /&gt;
Details of how to download and install OX Text source code can be found here: http://oxpedia.org/wiki/index.php?title=AppSuite:Text_Installation_Guide&lt;br /&gt;
&lt;br /&gt;
Packages for major platforms can be downloaded from software.open-xchange.com as they become available.&lt;br /&gt;
&lt;br /&gt;
'''Please note:''' OX Text packages for commercial use, (i.e. for re-distribution for a fee) and for service and support, are only available with a valid license key. Although OX Text is an integral part of OX App Suite it is not available as part of the standard OX App Suite offering. Customers should contact their Open-Xchange Account Manager for further information and pricing.&lt;br /&gt;
&lt;br /&gt;
== Is CC BY-SA-NC an Open Source license accepted by the OSI?==&lt;br /&gt;
&lt;br /&gt;
No. As we mentioned we use a CC BY-SA-NC license for our front end and the limitation set by “NC” is not compatible with the OSI definition of Open Source.&lt;br /&gt;
&lt;br /&gt;
The back end GPL2 license has no such restrictions.&lt;br /&gt;
&lt;br /&gt;
== What is OX Drive? ==&lt;br /&gt;
&lt;br /&gt;
OX Drive allows users to synchronize and share files and folders from the desktop and from their mobile devices.&lt;br /&gt;
  &lt;br /&gt;
OX Drive is available through the browser as part of OX App Suite. OX Drive clients are available for Windows, OSX, iOS and Android and allow users to synchronize files between their PC’s, Notebooks and Mobile Devices and OX App Suite.&lt;br /&gt;
 &lt;br /&gt;
== What are the requirements for OX Drive clients? ==&lt;br /&gt;
&lt;br /&gt;
* OX Drive for Windows requires the latest Versions of Windows 7, Windows 8. &lt;br /&gt;
* OX Drive for Mac OS requires at OS X 10.8 (Mountain Lion) or Mac OS X 10.9 (Mavericks) &lt;br /&gt;
* OX Drive for iOS requires an Apple iPhone on iOS 6 / iOS 7 or an Apple iPad on iOS 6 / iOS 7 &lt;br /&gt;
* OX Drive for Android requires a Smartphone on Android Jelly Bean (4.1 - 4.2) or Tablets on Android Jelly Bean (4.1 - 4.2)&lt;br /&gt;
 &lt;br /&gt;
== How do I install OX Drive? ==&lt;br /&gt;
&lt;br /&gt;
Download and install the correct OX Drive client for your mobile device and follow the instructions in the Wizard. Be prepared to enter the server URL and your credentials for the server.&lt;br /&gt;
  &lt;br /&gt;
== How do I share a file or folder? ==&lt;br /&gt;
&lt;br /&gt;
This is currently only possible from the web UI of OX App Suite. In the windows client (if the shell extension is installed) you can right click on a file/folder and click &amp;quot;Open in OX AppSuite&amp;quot; which opens the web UI of OX App Suite for you. In the web UI of OX App Suite you have the option &amp;quot;Share folder&amp;quot; or &amp;quot;Share this file option&amp;quot; - both will create a unique link that can be sent out to any external user.&lt;br /&gt;
  &lt;br /&gt;
== I installed OX Drive ... what's next? ==&lt;br /&gt;
&lt;br /&gt;
On Windows you can easily enter the OX Drive folder by right clicking on the OX Drive tray icon and choosing &amp;quot;Open OX Drive folder&amp;quot;. This opens the windows explorer. Maybe you can already see some files and folders that are synchronized. You can now add, change or remove files and folders normally.&lt;br /&gt;
&lt;br /&gt;
== I deleted a file, how to get it back? ==&lt;br /&gt;
&lt;br /&gt;
If the version of OX App Suite supports versioning you can just open earlier version in the OX App Suite web UI. Click on a file and in the detailed view you can click on &amp;quot;Show version history&amp;quot; where you have the option to download earlier versions.&lt;br /&gt;
&lt;br /&gt;
== Some files are missing, where can I find them? ==&lt;br /&gt;
&lt;br /&gt;
Technically speaking, there are some cases when a file does not get synchronized immediately because it's still being modified. This is normally true for office documents. As soon as the document gets released it will be synchronized. But there are also some cases that the file is ignored by OX Drive because of the filename contains one or of the following reserved characters:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt; (less than)&lt;br /&gt;
* &amp;gt; (greater than)&lt;br /&gt;
* : (colon)&lt;br /&gt;
* ” (double quote)&lt;br /&gt;
* / (forward slash)&lt;br /&gt;
* \ (backslash)&lt;br /&gt;
* | (vertical bar or pipe)&lt;br /&gt;
* ? (question mark)&lt;br /&gt;
* * (asterisk)&lt;br /&gt;
* Characters whose integer representations are in the range from 0 through 31&lt;br /&gt;
* The last character is a . (dot) or ' ' (space)&lt;br /&gt;
* It's case-invariant name without an optional extension matches one of the reserved names CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, or LPT9&lt;br /&gt;
* It consists solely of whitespace characters&lt;br /&gt;
&lt;br /&gt;
In addition folders have some more reserved conditions: &lt;br /&gt;
* The last character of any subpath (i.e. the last part of the whole path or the part preceding the separator character /) is a . (dot) or ' ' (space) &lt;br /&gt;
* It not equals the root path /, but ends with a / (forward slash) character &lt;br /&gt;
* It contains two or more consecutive / (forward slash) characters &lt;br /&gt;
&lt;br /&gt;
Unfortunately there are more constraints: The maximum allowed length for some path segments, i.e. the parts between forward slashes (/) in directory and filenames, is restricted to 255 characters. Synchronizing a file or directory version that contains path segments longer than this limit leads to those versions being put into quarantine.&lt;br /&gt;
&lt;br /&gt;
== What’s new in OX App Suite v7.6.0? ==&lt;br /&gt;
&lt;br /&gt;
OX App Suite v7.6.0 contains many changes and improvements. Most noticeable is the redesign of the user interface to give an attractive, easy-to-use, contemporary look and feel. This includes improved handling of different drop down menus, an updated toolbar concept, new color schemes, the introduction of new email views (Horizontal, list and compact), new search functionality, new attachment preview, improved thread view and OX calendar improvements.&lt;br /&gt;
&lt;br /&gt;
This is just a small sampling of the many new and improved features of OX App Suite v7.6.0, to find out more please see this detailed list of changes: http://software.open-xchange.com/products/appsuite/doc/Feature_Overview_OXAppSuite_OXDocuments_7_6_0.pdf&lt;br /&gt;
&lt;br /&gt;
== What’s new in OX Text and OX Spreadsheets? ==&lt;br /&gt;
&lt;br /&gt;
OX Text and OX Spreadsheets reflect the new UI design of OX App Suite and direct links to both the apps are now part of the top menu bar. Also new is the landing page for both apps which provides a document oriented view of recently used documents and templates. There are many other changes including charts and performance enhancements for OX Spreadsheets and a new page view and collaboration enhancements for OX Text.&lt;br /&gt;
For a full list please see here: http://software.open-xchange.com/products/appsuite/doc/Feature_Overview_OXAppSuite_OXDocuments_7_6_0.pdf&lt;br /&gt;
&lt;br /&gt;
== When will OX Messenger be available? ==&lt;br /&gt;
OX Messenger v1.0 will be available in July for OXaaS customers in the US and Europe and later as a hybrid solution for selected OX App Suite customers. The official launch of OX Messenger is in September and no public announcements will be made before this date.&lt;br /&gt;
&lt;br /&gt;
The key features of OX Messenger v1.0 are:&lt;br /&gt;
* Chat, Voice, Video&lt;br /&gt;
* Integrated in the OX App Suite UI&lt;br /&gt;
* SSO &amp;amp; Auto Provisioning&lt;br /&gt;
* Cluster-wide communication&lt;br /&gt;
* Invite System&lt;br /&gt;
* Link based communication&lt;br /&gt;
&lt;br /&gt;
== When will OX Guard be available? ==&lt;br /&gt;
&lt;br /&gt;
OX Guard will be available in Q3 2014. The main features of OX Guard are:&lt;br /&gt;
* Security protection against opportunistic access&lt;br /&gt;
* Email and Files&lt;br /&gt;
* Optional local private key storage and encryption/decryption for advanced users&lt;br /&gt;
* Cross deployment key management services&lt;br /&gt;
&lt;br /&gt;
Version 1.2 will be available in November.&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:AdminGuide_7.6.0&amp;diff=18290</id>
		<title>AppSuite:AdminGuide 7.6.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:AdminGuide_7.6.0&amp;diff=18290"/>
		<updated>2014-08-19T08:26:42Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* Statistics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Older versions: [[AppSuite:AdminGuide_7.4.2|7.4.2]], [[AppSuite:AdminGuide_7.4.0|7.4.0]], [[AppSuite:AdminGuide_7_2|7.2.0]], [[AppSuite:AdminGuide_7_0_1|7.0.1]]&lt;br /&gt;
&lt;br /&gt;
= Open-Xchange Installation and Update =&lt;br /&gt;
&lt;br /&gt;
== OX App Suite ==&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_Debian_6.0|Download and Installation Guide for Debian GNU/Linux 6.0 (Squeeze)]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_Debian_7.0|Download and Installation Guide for Debian GNU/Linux 7.0 (Wheezy)]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_SLES11|Download and Installation Guide for SUSE Linux Enterprise Server 11]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_RHEL6|Download and Installation Guide for RedHat Enterprise Linux 6]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_CentOS_6|Download and Installation Guide for CentOS 6]]&lt;br /&gt;
* [[OXSE4UCS_Installation_en|Download and Installation Guide for Univention Corporate Server]]&lt;br /&gt;
&lt;br /&gt;
== Open-Xchange Update ==&lt;br /&gt;
* [[AppSuite:UpdatingOXPackages|Updating Open-Xchange AppSuite v7.0.0 to v7.4]]&lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_Debian_6.0|Update Guide v6.22 to v7.4 for Debian GNU/Linux 6.0 (Squeeze)]]&lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_for_SLES11|Update Guide v6.22 to v7.4  for SUSE Linux Enterprise Server 11]]&lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_for_RHEL6|Update Guide v6.22 to v7.4  for RedHat Enterprise Linux 6]]&lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_for_CentOS6 |Update Guide v6.22 to v7.4  for CentOS 6]]&lt;br /&gt;
* [[UpdateTasks|Update Task Management in Open-Xchange]]&lt;br /&gt;
&lt;br /&gt;
==  Parallel Setup of OX App Suite UI and OX 6 UI ==&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Parallel_UISupport_OX6_AppSuite_Debian_6.0|Parallel Setup Guide for Debian GNU/Linux 6.0 (Squeeze)]]&lt;br /&gt;
* [[AppSuite:Parallel_UISupport_OX6_AppSuite_RHEL_6_CentOS_6|Parallel Setup Guide for Red Hat Enterprise Linux 6 and CentOS 6]]&lt;br /&gt;
* [[AppSuite:Parallel_UISupport_OX6_AppSuite_SLES_11|Parallel Setup Guide for SUSE Linux Enterprise Server 11]]&lt;br /&gt;
&lt;br /&gt;
== Additional Software ==&lt;br /&gt;
* [[AppSuite:Text_Installation_Guide |Download &amp;amp; Install OX Text]]&lt;br /&gt;
* [[AppSuite:Spreadsheet_Installation_Guide |Download &amp;amp; Install OX Spreadsheet]]&lt;br /&gt;
* [[AppSuite:DocumentViewer |Download &amp;amp; Install Document Viewer]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Updater|Installation of the Open-Xchange Updater]]&lt;br /&gt;
* [[AppSuite:Connector_for_Microsoft_Outlook|Installation &amp;amp; Configuration of the Open-Xchange Connector for Microsoft Outlook]]&lt;br /&gt;
* [[AppSuite:Connector_for_Business_Mobility_Installation_Guide|Installation and information of the Connector for Business Mobility]]&lt;br /&gt;
* [[AppSuite:OX_Drive|Installation and information of OX Drive for Client]]&lt;br /&gt;
* [[AppSuite:OX_Mobile_Web_Interface|Installation of the Open-Xchange Mobile Web Interface]]&lt;br /&gt;
* [[Open-Xchange_Installation_Guide_for_OX_Notifier|Installation &amp;amp; Configuration of the Open-Xchange Notifier]]&lt;br /&gt;
* [[Open-Xchange_cPanel_Installation|Download &amp;amp; Installation of the OX Connector for cPanel]]&lt;br /&gt;
* [[AppSuite:Connector_for_WHMCS_Installation_Guide|Download &amp;amp; Installation of the OX Connector for WHMCS]]&lt;br /&gt;
* [[Parallels_Integration|Integrate Open-Xchange with Parallels]]&lt;br /&gt;
&lt;br /&gt;
= OX App Suite Configuration =&lt;br /&gt;
&lt;br /&gt;
== Advanced Configuration ==&lt;br /&gt;
* [[AppSuite:CalDAVClients | Configuration CalDAV with Open-Xchange]]&lt;br /&gt;
* [[AppSuite:CardDAVClients | Configuration CardDAV with Open-Xchange]]&lt;br /&gt;
* [[AppSuite:Caldav_carddav_Bundles| Installation CardDAV/CalDAV with Open-Xchange]]&lt;br /&gt;
* [[AppSuite:Running_a_cluster| Configuration Cluster-Setup]]&lt;br /&gt;
* [[AppSuite:Grizzly| Configuration Connector based on Grizzly]]&lt;br /&gt;
* [[ContactStorageLDAP| LDAP Contact Storage]]&lt;br /&gt;
* [[AppSuite:Setup_CIFS | Setup a CIFS Account as primary/additional FileStorage Account]]&lt;br /&gt;
* [[Filtering_templates | Filtering publication templates according to their purpose]]&lt;br /&gt;
&lt;br /&gt;
== OX App Suite Configuration Parameter ==&lt;br /&gt;
* [[AppSuite:Configuration_properties_7.4| Configuration properties]] - everything you ever wanted to change about the AppSuite&lt;br /&gt;
&lt;br /&gt;
== OX App Suite Management (CLT)==&lt;br /&gt;
* [[AppSuite:Context management|Context management]]&lt;br /&gt;
* [[AppSuite:User management|User management]]&lt;br /&gt;
* [[AppSuite:Group management|Group management]]&lt;br /&gt;
* [[AppSuite:Resource management|Resource management]]&lt;br /&gt;
* [[AppSuite:Data management|Data management]]&lt;br /&gt;
&lt;br /&gt;
= Advanced Documentation =&lt;br /&gt;
&lt;br /&gt;
== Architecture Overview ==&lt;br /&gt;
*[[AppSuite:Architecture_Overview|Architecture Overview]]&lt;br /&gt;
&lt;br /&gt;
== Importing and exporting data ==&lt;br /&gt;
* General [[restrictions on importing data]]&lt;br /&gt;
* Migrate a batch of users and contexts at once. Check the CSV Batch Import documentation [[Csv_import|page]].&lt;br /&gt;
* Documentation for the [[data import format|data import format]]&lt;br /&gt;
* [[VCard and ICal support]]&lt;br /&gt;
* [[Using the export servlet]]&lt;br /&gt;
* [[Using the import servlet]]&lt;br /&gt;
* [[export ical/vcard|Example in bash to extract private contacts, tasks or appointments in ical/vcard format]]&lt;br /&gt;
* [[CrawlerArchitecture|Architecture of the crawler bundle]]&lt;br /&gt;
&lt;br /&gt;
== Configuration and Tweaks ==&lt;br /&gt;
* [[Open_Xchange_Configuration|Open-Xchange Configuration]]&lt;br /&gt;
* [[Open-Xchange_Lighttpd|Open-Xchange and Lighttpd]]&lt;br /&gt;
* [[On_The_Fly_Configuration_Update|On The Fly Configuration Update (experimental)]]&lt;br /&gt;
* [[Session_Migration|Session migration]]&lt;br /&gt;
* [[MailNotify_Bundle|Mail Notification (Push) with Open-Xchange]]&lt;br /&gt;
* [[Tune_apache2_for_more_concurrent_connections|Apache2 tuning]]&lt;br /&gt;
&lt;br /&gt;
== Statistics ==&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Logincounter|logincounter]]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
* [http://www.open-xchange.com/forum/ Open-Xchange Forum]&lt;br /&gt;
* Check the [http://sdb.open-xchange.com/ Open-Xchange Support Database]&lt;br /&gt;
* FAQs can be found in the [http://sdb.open-xchange.com/faq SDB FAQ section].&lt;br /&gt;
* [[Passwords in Open-Xchange]]&lt;br /&gt;
* [[Outlook_OXtender2_Best_Practice| Outlook Connector best practice]]&lt;br /&gt;
* [[AppSuite:OX_Logging|Logging]] - configuring and understanding the LOGBACK logging system&lt;br /&gt;
* [[AppSuite:Oxsysreport | Creating an OX Support Tarball]]&lt;br /&gt;
&lt;br /&gt;
== Integration Scenarios ==&lt;br /&gt;
* [http://oxpedia.org/wiki/index.php?title=Category:Config Open-Xchange configuration options summary]&lt;br /&gt;
* [[OX_Permission_Level | OX Permission Level Matrix]]&lt;br /&gt;
* [[Load_balancing_and_clustering | Load balancing and OX clustering]]&lt;br /&gt;
* [[Open-Xchange-RHEL-AD-Integration|Integration of Open-Xchange into MS Active Directory and Exchange ]]&lt;br /&gt;
* [[ContextRestore_Bundle|Restoring contexts using the context restore bundle]]&lt;br /&gt;
* [[Lawful_Interception|Lawful Interception (Telekommunikationsüberwachung)]]&lt;br /&gt;
* [[OX_EMail_Push_Introduction|Introduction to EMail Push in Open-Xchange]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: OX7]]&lt;br /&gt;
[[Category: AppSuite]]&lt;br /&gt;
[[Category: Administrator]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Logincounter&amp;diff=18161</id>
		<title>AppSuite:Logincounter</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Logincounter&amp;diff=18161"/>
		<updated>2014-07-21T10:32:10Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Login Counter =&lt;br /&gt;
&lt;br /&gt;
Whenever a user is logged in through the login servlet, the context id, user id, client identification string and a time stamp is saved to the database. If a database entry for this combination of context, user and client is already present, only the timestamp is updated. This means that the database holds the information for the '''last''' login of a specific user with a specific client. This data can be retrieved again with the &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; tool to show how many users logged in through which client(s) in a given timeframe.&lt;br /&gt;
&lt;br /&gt;
Please note that only '''logins''' are counted. Depending on the server configuration and the client, sessions may be reused when a user re-accesses the system even after a few hours or days. In this case the login timestamp is not updated. This means that &amp;lt;tt&amp;gt;logincounter&amp;lt;/tt&amp;gt; does not necessarily show the number of active users, especially if the request only covers a short timeframe.&lt;br /&gt;
&lt;br /&gt;
The clients provided by Open-Xchange use the following client identification strings:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!Client&lt;br /&gt;
!client identification string&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange AppSuite (Web UI)&lt;br /&gt;
|&amp;lt;tt&amp;gt;open-xchange-appsuite&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange Server 6 (Web UI)&lt;br /&gt;
|&amp;lt;tt&amp;gt;com.openexchange.ox.gui.dhtml&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Connector for Business Mobility (Active Sync)&lt;br /&gt;
|&amp;lt;tt&amp;gt;USM-EAS&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Connector 2 for Microsoft Outlook &lt;br /&gt;
|&amp;lt;tt&amp;gt;USM-JSON&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Notifier&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.HTTPClient.OXNotifier&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|CardDAV&lt;br /&gt;
|&amp;lt;tt&amp;gt;CARDDAV&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|CalDAV&lt;br /&gt;
|&amp;lt;tt&amp;gt;CALDAV&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Mobile Web App (legacy, OX6 generation)&lt;br /&gt;
|&amp;lt;tt&amp;gt;com.openexchange.mobileapp&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native iOS client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.iosClient.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native Android client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.Android.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native Mac OS X client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OSX.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native Windows client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.HTTPClient.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A custom login page (see [[Open-Xchange_servlet_for_external_login_masks]]) may (and should) set a custom client identification string.&lt;br /&gt;
&lt;br /&gt;
The output of &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; can be filtered by client identification strings with the &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;--regex&amp;lt;/code&amp;gt; parameter followed by a regular expression matching the desired string(s).&lt;br /&gt;
&lt;br /&gt;
== Using the &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; tool ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  # logincounter --help&lt;br /&gt;
  usage: logincounter&lt;br /&gt;
   -a,--aggregate     Optional. Aggregates the counts by users. Only the&lt;br /&gt;
                      total number of logins without duplicate counts&lt;br /&gt;
                      (caused by multiple clients per user) is returned.&lt;br /&gt;
   -e,--end &amp;lt;arg&amp;gt;     Required. Sets the end date for the detecting range.&lt;br /&gt;
                      Example: 2010-01-1 23:59:59&lt;br /&gt;
   -h,--help          Prints a help text&lt;br /&gt;
   -r,--regex &amp;lt;arg&amp;gt;   Optional. Limits the counter to login devices that&lt;br /&gt;
                      match regex.&lt;br /&gt;
   -s,--start &amp;lt;arg&amp;gt;   Required. Sets the start date for the detecting range.&lt;br /&gt;
                      Example: 2009-12-31 00:00:00&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
Show all logins in the month of June 2014 by clients:&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Show all logins in the month of June 2014, but remove duplicate logins from the &amp;quot;Total&amp;quot; count. (This means a user who logged in with two different clients is only counted once in the total count.)&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -a&lt;br /&gt;
&lt;br /&gt;
Restrict output to logins through any OX Drive client:&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;.*OXDrive&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Same as above, but remove duplicates in the total count (i.e. users using OX Drive on two platforms are only counted once):&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;.*OXDrive&amp;quot; -a&lt;br /&gt;
&lt;br /&gt;
Show all logins through the App Suite Web UI:&lt;br /&gt;
&lt;br /&gt;
  $ logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;open-xchange-appsuite&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Show all logins through either the App Suite or the Open-Xchange Server 6 Web UI:&lt;br /&gt;
&lt;br /&gt;
  $ logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;(open-xchange-appsuite|com.openexchange.ox.gui.dhtml)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Logincounter&amp;diff=18160</id>
		<title>AppSuite:Logincounter</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Logincounter&amp;diff=18160"/>
		<updated>2014-07-21T10:30:34Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Login Counter =&lt;br /&gt;
&lt;br /&gt;
Whenever a user is logged in through the login servlet, the context id, user id, client identification string and a time stamp is saved to the database. If a database entry for this combination of context, user and client is already present, only the timestamp is updated. This means that the database holds the information for the '''last''' login of a specific user with a specific client. This data can be retrieved again with the &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; tool to show how many users logged in through which client(s) in a given timeframe.&lt;br /&gt;
&lt;br /&gt;
Please note that only '''logins''' are counted. Depending on the server configuration and the client, sessions may be reused when a user re-accesses the system even after a few hours or days. In this case the login timestamp is not updated. This means that &amp;lt;tt&amp;gt;logincounter&amp;lt;/tt&amp;gt; does not necessarily show the number of active users, especially if the request only covers a short timeframe.&lt;br /&gt;
&lt;br /&gt;
The clients provided by Open-Xchange use the following client identification strings:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!Client&lt;br /&gt;
!client identification string&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange AppSuite (Web UI)&lt;br /&gt;
|&amp;lt;tt&amp;gt;open-xchange-appsuite&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange Server 6 (Web UI)&lt;br /&gt;
|&amp;lt;tt&amp;gt;com.openexchange.ox.gui.dhtml&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Connector for Business Mobility (Active Sync)&lt;br /&gt;
|&amp;lt;tt&amp;gt;USM-EAS&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Connector 2 for Microsoft Outlook &lt;br /&gt;
|&amp;lt;tt&amp;gt;USM-JSON&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|CardDAV&lt;br /&gt;
|&amp;lt;tt&amp;gt;CARDDAV&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|CalDAV&lt;br /&gt;
|&amp;lt;tt&amp;gt;CALDAV&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Mobile Web App (legacy, OX6 generation)&lt;br /&gt;
|&amp;lt;tt&amp;gt;com.openexchange.mobileapp&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native iOS client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.iosClient.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native Android client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.Android.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native Mac OS X client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OSX.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native Windows client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.HTTPClient.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A custom login page (see [[Open-Xchange_servlet_for_external_login_masks]]) may (and should) set a custom client identification string.&lt;br /&gt;
&lt;br /&gt;
The output of &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; can be filtered by client identification strings with the &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;--regex&amp;lt;/code&amp;gt; parameter followed by a regular expression matching the desired string(s).&lt;br /&gt;
&lt;br /&gt;
== Using the &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; tool ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  # logincounter --help&lt;br /&gt;
  usage: logincounter&lt;br /&gt;
   -a,--aggregate     Optional. Aggregates the counts by users. Only the&lt;br /&gt;
                      total number of logins without duplicate counts&lt;br /&gt;
                      (caused by multiple clients per user) is returned.&lt;br /&gt;
   -e,--end &amp;lt;arg&amp;gt;     Required. Sets the end date for the detecting range.&lt;br /&gt;
                      Example: 2010-01-1 23:59:59&lt;br /&gt;
   -h,--help          Prints a help text&lt;br /&gt;
   -r,--regex &amp;lt;arg&amp;gt;   Optional. Limits the counter to login devices that&lt;br /&gt;
                      match regex.&lt;br /&gt;
   -s,--start &amp;lt;arg&amp;gt;   Required. Sets the start date for the detecting range.&lt;br /&gt;
                      Example: 2009-12-31 00:00:00&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
Show all logins in the month of June 2014 by clients:&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Show all logins in the month of June 2014, but remove duplicate logins from the &amp;quot;Total&amp;quot; count. (This means a user who logged in with two different clients is only counted once in the total count.)&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -a&lt;br /&gt;
&lt;br /&gt;
Restrict output to logins through any OX Drive client:&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;.*OXDrive&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Same as above, but remove duplicates in the total count (i.e. users using OX Drive on two platforms are only counted once):&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;.*OXDrive&amp;quot; -a&lt;br /&gt;
&lt;br /&gt;
Show all logins through the App Suite Web UI:&lt;br /&gt;
&lt;br /&gt;
  $ logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;open-xchange-appsuite&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Show all logins through either the App Suite or the Open-Xchange Server 6 Web UI:&lt;br /&gt;
&lt;br /&gt;
  $ logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;(open-xchange-appsuite|com.openexchange.ox.gui.dhtml)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Logincounter&amp;diff=18156</id>
		<title>AppSuite:Logincounter</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Logincounter&amp;diff=18156"/>
		<updated>2014-07-18T09:06:42Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Login Counter =&lt;br /&gt;
&lt;br /&gt;
Whenever a user is logged in through the login servlet, the context id, user id, client identification string and a time stamp is saved to the database. If a database entry for this combination of context, user and client is already present, only the timestamp is updated. This means that the database holds the information for the '''last''' login of a specific user with a specific client. This data can be retrieved again with the &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; tool to show how many users logged in through which client(s) in a given timeframe.&lt;br /&gt;
&lt;br /&gt;
Please note that only '''logins''' are counted. Depending on the server configuration and the client, sessions may be reused when a user re-accesses the system even after a few hours or days. In this case the login timestamp is not updated. This means that &amp;lt;tt&amp;gt;logincounter&amp;lt;/tt&amp;gt; does not necessarily show the number of active users, especially if the request only covers a short timeframe.&lt;br /&gt;
&lt;br /&gt;
The clients provided by Open-Xchange use the following client identification strings:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!Client&lt;br /&gt;
!client identification string&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange AppSuite (Web UI)&lt;br /&gt;
|&amp;lt;tt&amp;gt;open-xchange-appsuite&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange Server 6 (Web UI)&lt;br /&gt;
|&amp;lt;tt&amp;gt;com.openexchange.ox.gui.dhtml&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Connector for Business Mobility (Active Sync)&lt;br /&gt;
|&amp;lt;tt&amp;gt;USM-EAS&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Connector 2 for Microsoft Outlook &lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.HTTPClient.OXAddIn&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|CardDAV&lt;br /&gt;
|&amp;lt;tt&amp;gt;CARDDAV&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|CalDAV&lt;br /&gt;
|&amp;lt;tt&amp;gt;CALDAV&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Mobile Web App (legacy, OX6 generation)&lt;br /&gt;
|&amp;lt;tt&amp;gt;com.openexchange.mobileapp&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native iOS client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.iosClient.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native Android client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.Android.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native Mac OS X client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OSX.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native Windows client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.HTTPClient.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A custom login page (see [[Open-Xchange_servlet_for_external_login_masks]]) may (and should) set a custom client identification string.&lt;br /&gt;
&lt;br /&gt;
The output of &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; can be filtered by client identification strings with the &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;--regex&amp;lt;/code&amp;gt; parameter followed by a regular expression matching the desired string(s).&lt;br /&gt;
&lt;br /&gt;
== Using the &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; tool ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  # logincounter --help&lt;br /&gt;
  usage: logincounter&lt;br /&gt;
   -a,--aggregate     Optional. Aggregates the counts by users. Only the&lt;br /&gt;
                      total number of logins without duplicate counts&lt;br /&gt;
                      (caused by multiple clients per user) is returned.&lt;br /&gt;
   -e,--end &amp;lt;arg&amp;gt;     Required. Sets the end date for the detecting range.&lt;br /&gt;
                      Example: 2010-01-1 23:59:59&lt;br /&gt;
   -h,--help          Prints a help text&lt;br /&gt;
   -r,--regex &amp;lt;arg&amp;gt;   Optional. Limits the counter to login devices that&lt;br /&gt;
                      match regex.&lt;br /&gt;
   -s,--start &amp;lt;arg&amp;gt;   Required. Sets the start date for the detecting range.&lt;br /&gt;
                      Example: 2009-12-31 00:00:00&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
Show all logins in the month of June 2014 by clients:&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Show all logins in the month of June 2014, but remove duplicate logins from the &amp;quot;Total&amp;quot; count. (This means a user who logged in with two different clients is only counted once in the total count.)&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -a&lt;br /&gt;
&lt;br /&gt;
Restrict output to logins through any OX Drive client:&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;.*OXDrive&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Same as above, but remove duplicates in the total count (i.e. users using OX Drive on two platforms are only counted once):&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;.*OXDrive&amp;quot; -a&lt;br /&gt;
&lt;br /&gt;
Show all logins through the App Suite Web UI:&lt;br /&gt;
&lt;br /&gt;
  $ logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;open-xchange-appsuite&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Show all logins through either the App Suite or the Open-Xchange Server 6 Web UI:&lt;br /&gt;
&lt;br /&gt;
  $ logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;(open-xchange-appsuite|com.openexchange.ox.gui.dhtml)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Logincounter&amp;diff=18155</id>
		<title>AppSuite:Logincounter</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Logincounter&amp;diff=18155"/>
		<updated>2014-07-18T09:05:06Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* Login Counter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Login Counter =&lt;br /&gt;
&lt;br /&gt;
Whenever a user is logged in through the login servlet, the context id, user id, client identification string and a time stamp is saved to the database. If a database entry for this combination of context, user and client is already present, only the timestamp is updated. This means that the database holds the information for the '''last''' login of a specific user with a specific client. This data can be retrieved again with the &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; tool to show how many users logged in through which client(s) in a given timeframe.&lt;br /&gt;
&lt;br /&gt;
Please note that only '''logins''' are counted. Depending on the server configuration and the client, sessions may be reused when a user re-accesses the system even after a few hours or days. In this case the login timestamp is not updated. This means that &amp;lt;tt&amp;gt;logincounter&amp;lt;/tt&amp;gt; does not necessarily show the number of active users, especially if the request only covers a short timeframe.&lt;br /&gt;
&lt;br /&gt;
The clients provided by Open-Xchange use the following client identification strings:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!Client&lt;br /&gt;
!client identification string&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange AppSuite (Web UI)&lt;br /&gt;
|&amp;lt;tt&amp;gt;open-xchange-appsuite&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange Server 6 (Web UI)&lt;br /&gt;
|&amp;lt;tt&amp;gt;com.openexchange.ox.gui.dhtml&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Connector for Business Mobility (Active Sync)&lt;br /&gt;
|&amp;lt;tt&amp;gt;USM-EAS&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Connector 2 for Microsoft Outlook &lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.HTTPClient.OXAddIn&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|CardDAV&lt;br /&gt;
|&amp;lt;tt&amp;gt;CARDDAV&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|CalDAV&lt;br /&gt;
|&amp;lt;tt&amp;gt;CALDAV&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Mobile Web App (legacy, OX6 generation)&lt;br /&gt;
|&amp;lt;tt&amp;gt;com.openexchange.mobileapp&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native iOS client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.iosClient.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native Android client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.Android.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native Mac OS X client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OSX.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native Windows client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.HTTPClient.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A custom login page (see [[Open-Xchange_servlet_for_external_login_masks]]) may (and should) set a custom client identification string.&lt;br /&gt;
&lt;br /&gt;
The output of &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; can be filtered by client identification strings with the &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;--regex&amp;lt;/code&amp;gt; parameter followed by a regular expression matching the desired string(s).&lt;br /&gt;
&lt;br /&gt;
== Using the &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; tool ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  # logincounter --help&lt;br /&gt;
  usage: logincounter&lt;br /&gt;
   -a,--aggregate     Optional. Aggregates the counts by users. Only the&lt;br /&gt;
                      total number of logins without duplicate counts&lt;br /&gt;
                      (caused by multiple clients per user) is returned.&lt;br /&gt;
   -e,--end &amp;lt;arg&amp;gt;     Required. Sets the end date for the detecting range.&lt;br /&gt;
                      Example: 2010-01-1 23:59:59&lt;br /&gt;
   -h,--help          Prints a help text&lt;br /&gt;
   -r,--regex &amp;lt;arg&amp;gt;   Optional. Limits the counter to login devices that&lt;br /&gt;
                      match regex.&lt;br /&gt;
   -s,--start &amp;lt;arg&amp;gt;   Required. Sets the start date for the detecting range.&lt;br /&gt;
                      Example: 2009-12-31 00:00:00&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
Show all logins in the month of June 2014 by clients:&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Show all logins in the month of June 2014, but remove duplicate logins from the &amp;quot;Total&amp;quot; count. (This means a user who logged in with two different clients is only counted once in the total count.)&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -a&lt;br /&gt;
&lt;br /&gt;
Restrict output to logins through any OX Drive client:&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;.*OXDrive.*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Same as above, but remove duplicates in the total count (i.e. users using OX Drive on two platforms are only counted once):&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;.*OXDrive.*&amp;quot; -a&lt;br /&gt;
&lt;br /&gt;
Show all logins through the App Suite Web UI:&lt;br /&gt;
&lt;br /&gt;
  $ logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;open-xchange-appsuite&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Show all logins through either the App Suite or the Open-Xchange Server 6 Web UI:&lt;br /&gt;
&lt;br /&gt;
  $ logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;(open-xchange-appsuite|com.openexchange.ox.gui.dhtml)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Logincounter&amp;diff=18154</id>
		<title>AppSuite:Logincounter</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Logincounter&amp;diff=18154"/>
		<updated>2014-07-18T09:04:38Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Login Counter =&lt;br /&gt;
&lt;br /&gt;
Whenever a user is logged in through the login servlet, the context id, user id, client identification string and a time stamp is saved to the database. If a database entry for this combination of context, user and client is already present, only the timestamp is updated. This means that the database holds the information for the '''last''' login of a specific user with a specific client. This data can be retrieved again with the &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; tool to show how many users logged in through which client(s) in a given timeframe.&lt;br /&gt;
&lt;br /&gt;
Please note: Only logins are counted. Depending on the server configuration and the client, sessions may be reused when a user re-accesses the system even after a few hours or days. In this case the login timestamp is not updated. This means that &amp;lt;tt&amp;gt;logincounter&amp;lt;/tt&amp;gt; does not necessarily show the number of active users, especially if the request only covers a short timeframe.&lt;br /&gt;
&lt;br /&gt;
The clients provided by Open-Xchange use the following client identification strings:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!Client&lt;br /&gt;
!client identification string&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange AppSuite (Web UI)&lt;br /&gt;
|&amp;lt;tt&amp;gt;open-xchange-appsuite&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Open-Xchange Server 6 (Web UI)&lt;br /&gt;
|&amp;lt;tt&amp;gt;com.openexchange.ox.gui.dhtml&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Connector for Business Mobility (Active Sync)&lt;br /&gt;
|&amp;lt;tt&amp;gt;USM-EAS&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Connector 2 for Microsoft Outlook &lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.HTTPClient.OXAddIn&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|CardDAV&lt;br /&gt;
|&amp;lt;tt&amp;gt;CARDDAV&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|CalDAV&lt;br /&gt;
|&amp;lt;tt&amp;gt;CALDAV&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Mobile Web App (legacy, OX6 generation)&lt;br /&gt;
|&amp;lt;tt&amp;gt;com.openexchange.mobileapp&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native iOS client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.iosClient.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native Android client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.Android.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native Mac OS X client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OSX.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|OX Drive (native Windows client)&lt;br /&gt;
|&amp;lt;tt&amp;gt;OpenXchange.HTTPClient.OXDrive&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A custom login page (see [[Open-Xchange_servlet_for_external_login_masks]]) may (and should) set a custom client identification string.&lt;br /&gt;
&lt;br /&gt;
The output of &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; can be filtered by client identification strings with the &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;--regex&amp;lt;/code&amp;gt; parameter followed by a regular expression matching the desired string(s).&lt;br /&gt;
&lt;br /&gt;
== Using the &amp;lt;code&amp;gt;logincounter&amp;lt;/code&amp;gt; tool ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  # logincounter --help&lt;br /&gt;
  usage: logincounter&lt;br /&gt;
   -a,--aggregate     Optional. Aggregates the counts by users. Only the&lt;br /&gt;
                      total number of logins without duplicate counts&lt;br /&gt;
                      (caused by multiple clients per user) is returned.&lt;br /&gt;
   -e,--end &amp;lt;arg&amp;gt;     Required. Sets the end date for the detecting range.&lt;br /&gt;
                      Example: 2010-01-1 23:59:59&lt;br /&gt;
   -h,--help          Prints a help text&lt;br /&gt;
   -r,--regex &amp;lt;arg&amp;gt;   Optional. Limits the counter to login devices that&lt;br /&gt;
                      match regex.&lt;br /&gt;
   -s,--start &amp;lt;arg&amp;gt;   Required. Sets the start date for the detecting range.&lt;br /&gt;
                      Example: 2009-12-31 00:00:00&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
Show all logins in the month of June 2014 by clients:&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Show all logins in the month of June 2014, but remove duplicate logins from the &amp;quot;Total&amp;quot; count. (This means a user who logged in with two different clients is only counted once in the total count.)&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -a&lt;br /&gt;
&lt;br /&gt;
Restrict output to logins through any OX Drive client:&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;.*OXDrive.*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Same as above, but remove duplicates in the total count (i.e. users using OX Drive on two platforms are only counted once):&lt;br /&gt;
&lt;br /&gt;
  $ /opt/open-xchange/sbin/logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;.*OXDrive.*&amp;quot; -a&lt;br /&gt;
&lt;br /&gt;
Show all logins through the App Suite Web UI:&lt;br /&gt;
&lt;br /&gt;
  $ logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;open-xchange-appsuite&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Show all logins through either the App Suite or the Open-Xchange Server 6 Web UI:&lt;br /&gt;
&lt;br /&gt;
  $ logincounter -s &amp;quot;2014-06-01 00:00:00&amp;quot; -e &amp;quot;2014-06-30 23:59:59&amp;quot; -r &amp;quot;(open-xchange-appsuite|com.openexchange.ox.gui.dhtml)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=OXSessionFormLogin&amp;diff=18153</id>
		<title>OXSessionFormLogin</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=OXSessionFormLogin&amp;diff=18153"/>
		<updated>2014-07-18T09:03:32Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Form Login =&lt;br /&gt;
&lt;br /&gt;
The form login is a mechanism, that allows you to create a custom login form, by which way a user may enter the OX frontend. All you need to do, is have the form POST the necessary login information and the location of the OX frontend. The OX server will create a session, set all necessary cookies and forward the browser to the frontend. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
The parameters that the OX servers login process expects are:&lt;br /&gt;
&lt;br /&gt;
; login&lt;br /&gt;
: The login name. This will usually be a text input.&lt;br /&gt;
; password&lt;br /&gt;
: The users password. This will usually be a password input field.&lt;br /&gt;
; client&lt;br /&gt;
: The client parameter used to distinguish between programs using the same cookie store. Since we want the new session to be used by the AJAX frontend, we'll set this to '''com.openexchange.ox.gui.dhtml''' for the OX6 frontend, to '''open-xchange-appsuite''' for App Suite and '''com.openexchange.mobileapp''' for the Mobile UI. This is a hidden field. See also [[OXSessionHandlingGlossary ]]. This parameter can be given to the [[AppSuite:Logincounter|logincounter]] tool to retrieve statistics about how (and how often) end users are logging in to the system.&lt;br /&gt;
; version&lt;br /&gt;
: A version string. The content is not really relevant, but it will be logged, so we can later find out, where a login request came from. The UI will usually send its version, we'll send '''Form Login''' so we can see in the logfile when our spiffy new form was used to log in. This will also be a hidden field.&lt;br /&gt;
; autologin&lt;br /&gt;
: This tells the frontend whether to attempt to store the session data for a later autologin. This can only be true if server configuration parameter '''com.openexchange.sessiond.autologin''' is enabled as well, otherwise the UI will attempt to store the session and trigger a server error. See [[OXSessionAutologin]] for more details about the autologin process.&lt;br /&gt;
; uiWebPath&lt;br /&gt;
: Tells the server where to find the frontend, so it can redirect the browser there. This will usually be a relative URL, since the backend and frontend are usually accessible using the same host (they have to be to allow for the same source policy in javascript). '''Make sure to always send the browser to the index.html and NOT the ox.html'''. The index.html contains some browser checks that have to be done before entering the UI. You'll save yourself headaches by always sending the user to the index.html. Usually this will point to '''/ox6/index.html''' for the OX6 frontend or '''/appsuite/''' (note the trailing slash) for App Suite. This also is a hidden field.&lt;br /&gt;
; authId&lt;br /&gt;
: A random string used for tracking a login requests way through your apache / OX setup.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
So, in essence, what we need is a form for POSTing to the backend with the above parameters. This is pretty basic HTML stuff:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='html4strict'&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;cache-control&amp;quot; content=&amp;quot;no-cache&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Login&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
function uuid() {&lt;br /&gt;
    function hex(len, x) {&lt;br /&gt;
        if (x === undefined) x = Math.random();&lt;br /&gt;
        var s = new Array(len);&lt;br /&gt;
        for (var i = 0; i &amp;lt; len; i++) {&lt;br /&gt;
            x *= 16;&lt;br /&gt;
            var digit = x &amp;amp; 15;&lt;br /&gt;
            s[i] = digit + (digit &amp;lt; 10 ? 48 : 87); // '0' and 'a' - 10&lt;br /&gt;
        }&lt;br /&gt;
        return String.fromCharCode.apply(String, s);&lt;br /&gt;
    }&lt;br /&gt;
    return [hex(8), &amp;quot;-&amp;quot;, hex(4), &amp;quot;-4&amp;quot;, hex(3), &amp;quot;-&amp;quot;, hex(4, 0.5 + Math.random() / 4), &amp;quot;-&amp;quot;, hex(12)].join(&amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;/ajax/login?action=formlogin&amp;amp;authId=&amp;quot; method=&amp;quot;post&amp;quot; onSubmit=&amp;quot;this.action += uuid();&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&lt;br /&gt;
            &amp;lt;label for=&amp;quot;login&amp;quot;&amp;gt;Username: &amp;lt;/label&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;login&amp;quot; id=&amp;quot;login&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
            &amp;lt;label for=&amp;quot;password&amp;quot;&amp;gt;Password:  &amp;lt;/label&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;password&amp;quot; name=&amp;quot;password&amp;quot; id=&amp;quot;password&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Login&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;version&amp;quot; value=&amp;quot;Form Login&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;autologin&amp;quot; value=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- When using OX App Suite --&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;client&amp;quot; value=&amp;quot;open-xchange-appsuite&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;!-- Important: value of uiWebPath MUST be terminated by a trailing slash &amp;quot;/&amp;quot; --&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;uiWebPath&amp;quot; value=&amp;quot;/appsuite/&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
            &amp;lt;!-- When using OX6 --&amp;gt;&lt;br /&gt;
            &amp;lt;!-- &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;client&amp;quot; value=&amp;quot;com.openexchange.ox.gui.dhtml&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
            &amp;lt;!-- &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;uiWebPath&amp;quot; value=&amp;quot;/ox6/index.html&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- When using Mobile Web Interface --&amp;gt;&lt;br /&gt;
            &amp;lt;!-- &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;client&amp;quot; value=&amp;quot;com.openexchange.mobileapp&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
            &amp;lt;!-- &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;uiWebPath&amp;quot; value=&amp;quot;/mobile/index.html&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
        &amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Notice the form sends its entries to '''/ajax/login?action=formlogin'''. This relative URL will only work if the form is accessed using the same host name as the OX server. If you want to send the user to the OX server from a different host, specify the whole address in the forms action attribute, e.g. '''https://ox.mydomain.com/ajax/login?action=formlogin'''. The '''uiWebPath''' though is always considered relative to the OX server (regardless of where the form resides), so you're usually good when using a relative link there. &lt;br /&gt;
&lt;br /&gt;
Now back to the '''authId'''. In order to generate a unique String we'll define a javascript function in the head of the document.&lt;br /&gt;
&lt;br /&gt;
We won't worry about the details here, only one thing matters to us at this point: This bit of javascript generates a random UUID that we can use for our authId parameter. Since we want to see that parameter in the apache log files, we have to pass this as part of the URL. This means, when the user submits the form, we'll append a generated authId to the URL.&lt;br /&gt;
&lt;br /&gt;
If you're uncomfortable using javascript for this, you might opt for having the form page generated by a server side script and just include the random UUID in the form definition. The only thing to remember about this is: You need the '''authId''' parameter, it must be part of the URL, so it shows up in logfiles and it must be unique so that it makes sense when later tracking what happens to a login request. In total our form page looks like this:&lt;br /&gt;
&lt;br /&gt;
== Login Errors ==&lt;br /&gt;
&lt;br /&gt;
What happens if an error occurs during the login process? For example, the user might have entered the wrong password? In that case the OX Server uses an error template, you may override, to display an error message. It's basic, but functional:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='html4strict'&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Display normal HTML for 5 seconds, then redirect via referrer.&lt;br /&gt;
setTimeout(redirect,5000);&lt;br /&gt;
function redirect(){&lt;br /&gt;
 var referrer=document.referrer;&lt;br /&gt;
 var redirect_url;&lt;br /&gt;
 // If referrer already contains failed parameter, we don't add a 2nd one.&lt;br /&gt;
 if(referrer.indexOf(&amp;quot;login=failed&amp;quot;)&amp;gt;=0){&lt;br /&gt;
  redirect_url=referrer;&lt;br /&gt;
 }else{&lt;br /&gt;
  // Check if referrer contains multiple parameter&lt;br /&gt;
  if(referrer.indexOf(&amp;quot;?&amp;quot;)&amp;lt;0){&lt;br /&gt;
   redirect_url=referrer+&amp;quot;?login=failed&amp;quot;;&lt;br /&gt;
  }else{&lt;br /&gt;
   redirect_url=referrer+&amp;quot;&amp;amp;login=failed&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 // Redirect to referrer&lt;br /&gt;
 window.location.href=redirect_url;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;ERROR_MESSAGE&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What does it do? It displays the error message for 5 seconds and the redirects back to the referrer, meaning: Your form. It adds a login=failed parameter to the URL, so your form may react when something went wrong. If you think (like myself) this form lacks the, ah well, je-ne-sais-quoi of a nice error page, then fret not! You can provide your own custom template. To do that, open up the file '''/opt/openexchange/etc/login.properties''' and set the '''com.openexchange.ajax.login.errorPageTemplate''' to point to a file on the OX system that contains your template. For example:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.ajax.login.errorPageTemplate=/opt/openexchange/local/loginErrors.html&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
Then write the template. Keep in mind, that ERROR_MESSAGE will be replaced by the actual error message of the login attempt (say &amp;quot;Your password was not valid&amp;quot; or somesuch). The template above might be a good starting point for you to start experimenting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: OX6]]&lt;br /&gt;
[[Category: AppSuite]]&lt;br /&gt;
[[Category: v6.22]]&lt;br /&gt;
[[Category: HTTP API]]&lt;br /&gt;
[[Category: Details]]&lt;br /&gt;
[[Category: Frontend]]&lt;br /&gt;
[[Category: Adminstrator]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=OXSessionFormLogin&amp;diff=18152</id>
		<title>OXSessionFormLogin</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=OXSessionFormLogin&amp;diff=18152"/>
		<updated>2014-07-18T09:03:01Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Form Login =&lt;br /&gt;
&lt;br /&gt;
The form login is a mechanism, that allows you to create a custom login form, by which way a user may enter the OX frontend. All you need to do, is have the form POST the necessary login information and the location of the OX frontend. The OX server will create a session, set all necessary cookies and forward the browser to the frontend. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
The parameters that the OX servers login process expects are:&lt;br /&gt;
&lt;br /&gt;
; login&lt;br /&gt;
: The login name. This will usually be a text input.&lt;br /&gt;
; password&lt;br /&gt;
: The users password. This will usually be a password input field.&lt;br /&gt;
; client&lt;br /&gt;
: The client parameter used to distinguish between programs using the same cookie store. Since we want the new session to be used by the AJAX frontend, we'll set this to '''com.openexchange.ox.gui.dhtml''' for the OX6 frontend, to '''open-xchange-appsuite''' for App Suite and '''com.openexchange.mobileapp''' for the Mobile UI. This is a hidden field. See also [[OXSessionHandlingGlossary ]]. This parameter can be given to the [[AppSuite:Logincounter|logincounter]] tool to retrieve statistics about how end users are using the system.&lt;br /&gt;
; version&lt;br /&gt;
: A version string. The content is not really relevant, but it will be logged, so we can later find out, where a login request came from. The UI will usually send its version, we'll send '''Form Login''' so we can see in the logfile when our spiffy new form was used to log in. This will also be a hidden field.&lt;br /&gt;
; autologin&lt;br /&gt;
: This tells the frontend whether to attempt to store the session data for a later autologin. This can only be true if server configuration parameter '''com.openexchange.sessiond.autologin''' is enabled as well, otherwise the UI will attempt to store the session and trigger a server error. See [[OXSessionAutologin]] for more details about the autologin process.&lt;br /&gt;
; uiWebPath&lt;br /&gt;
: Tells the server where to find the frontend, so it can redirect the browser there. This will usually be a relative URL, since the backend and frontend are usually accessible using the same host (they have to be to allow for the same source policy in javascript). '''Make sure to always send the browser to the index.html and NOT the ox.html'''. The index.html contains some browser checks that have to be done before entering the UI. You'll save yourself headaches by always sending the user to the index.html. Usually this will point to '''/ox6/index.html''' for the OX6 frontend or '''/appsuite/''' (note the trailing slash) for App Suite. This also is a hidden field.&lt;br /&gt;
; authId&lt;br /&gt;
: A random string used for tracking a login requests way through your apache / OX setup.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
So, in essence, what we need is a form for POSTing to the backend with the above parameters. This is pretty basic HTML stuff:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='html4strict'&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;cache-control&amp;quot; content=&amp;quot;no-cache&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Login&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
function uuid() {&lt;br /&gt;
    function hex(len, x) {&lt;br /&gt;
        if (x === undefined) x = Math.random();&lt;br /&gt;
        var s = new Array(len);&lt;br /&gt;
        for (var i = 0; i &amp;lt; len; i++) {&lt;br /&gt;
            x *= 16;&lt;br /&gt;
            var digit = x &amp;amp; 15;&lt;br /&gt;
            s[i] = digit + (digit &amp;lt; 10 ? 48 : 87); // '0' and 'a' - 10&lt;br /&gt;
        }&lt;br /&gt;
        return String.fromCharCode.apply(String, s);&lt;br /&gt;
    }&lt;br /&gt;
    return [hex(8), &amp;quot;-&amp;quot;, hex(4), &amp;quot;-4&amp;quot;, hex(3), &amp;quot;-&amp;quot;, hex(4, 0.5 + Math.random() / 4), &amp;quot;-&amp;quot;, hex(12)].join(&amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;/ajax/login?action=formlogin&amp;amp;authId=&amp;quot; method=&amp;quot;post&amp;quot; onSubmit=&amp;quot;this.action += uuid();&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&lt;br /&gt;
            &amp;lt;label for=&amp;quot;login&amp;quot;&amp;gt;Username: &amp;lt;/label&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;login&amp;quot; id=&amp;quot;login&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
            &amp;lt;label for=&amp;quot;password&amp;quot;&amp;gt;Password:  &amp;lt;/label&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;password&amp;quot; name=&amp;quot;password&amp;quot; id=&amp;quot;password&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Login&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;version&amp;quot; value=&amp;quot;Form Login&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;autologin&amp;quot; value=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- When using OX App Suite --&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;client&amp;quot; value=&amp;quot;open-xchange-appsuite&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;!-- Important: value of uiWebPath MUST be terminated by a trailing slash &amp;quot;/&amp;quot; --&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;uiWebPath&amp;quot; value=&amp;quot;/appsuite/&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
            &amp;lt;!-- When using OX6 --&amp;gt;&lt;br /&gt;
            &amp;lt;!-- &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;client&amp;quot; value=&amp;quot;com.openexchange.ox.gui.dhtml&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
            &amp;lt;!-- &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;uiWebPath&amp;quot; value=&amp;quot;/ox6/index.html&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- When using Mobile Web Interface --&amp;gt;&lt;br /&gt;
            &amp;lt;!-- &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;client&amp;quot; value=&amp;quot;com.openexchange.mobileapp&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
            &amp;lt;!-- &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;uiWebPath&amp;quot; value=&amp;quot;/mobile/index.html&amp;quot;&amp;gt; --&amp;gt;&lt;br /&gt;
        &amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Notice the form sends its entries to '''/ajax/login?action=formlogin'''. This relative URL will only work if the form is accessed using the same host name as the OX server. If you want to send the user to the OX server from a different host, specify the whole address in the forms action attribute, e.g. '''https://ox.mydomain.com/ajax/login?action=formlogin'''. The '''uiWebPath''' though is always considered relative to the OX server (regardless of where the form resides), so you're usually good when using a relative link there. &lt;br /&gt;
&lt;br /&gt;
Now back to the '''authId'''. In order to generate a unique String we'll define a javascript function in the head of the document.&lt;br /&gt;
&lt;br /&gt;
We won't worry about the details here, only one thing matters to us at this point: This bit of javascript generates a random UUID that we can use for our authId parameter. Since we want to see that parameter in the apache log files, we have to pass this as part of the URL. This means, when the user submits the form, we'll append a generated authId to the URL.&lt;br /&gt;
&lt;br /&gt;
If you're uncomfortable using javascript for this, you might opt for having the form page generated by a server side script and just include the random UUID in the form definition. The only thing to remember about this is: You need the '''authId''' parameter, it must be part of the URL, so it shows up in logfiles and it must be unique so that it makes sense when later tracking what happens to a login request. In total our form page looks like this:&lt;br /&gt;
&lt;br /&gt;
== Login Errors ==&lt;br /&gt;
&lt;br /&gt;
What happens if an error occurs during the login process? For example, the user might have entered the wrong password? In that case the OX Server uses an error template, you may override, to display an error message. It's basic, but functional:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='html4strict'&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Display normal HTML for 5 seconds, then redirect via referrer.&lt;br /&gt;
setTimeout(redirect,5000);&lt;br /&gt;
function redirect(){&lt;br /&gt;
 var referrer=document.referrer;&lt;br /&gt;
 var redirect_url;&lt;br /&gt;
 // If referrer already contains failed parameter, we don't add a 2nd one.&lt;br /&gt;
 if(referrer.indexOf(&amp;quot;login=failed&amp;quot;)&amp;gt;=0){&lt;br /&gt;
  redirect_url=referrer;&lt;br /&gt;
 }else{&lt;br /&gt;
  // Check if referrer contains multiple parameter&lt;br /&gt;
  if(referrer.indexOf(&amp;quot;?&amp;quot;)&amp;lt;0){&lt;br /&gt;
   redirect_url=referrer+&amp;quot;?login=failed&amp;quot;;&lt;br /&gt;
  }else{&lt;br /&gt;
   redirect_url=referrer+&amp;quot;&amp;amp;login=failed&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 // Redirect to referrer&lt;br /&gt;
 window.location.href=redirect_url;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;ERROR_MESSAGE&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What does it do? It displays the error message for 5 seconds and the redirects back to the referrer, meaning: Your form. It adds a login=failed parameter to the URL, so your form may react when something went wrong. If you think (like myself) this form lacks the, ah well, je-ne-sais-quoi of a nice error page, then fret not! You can provide your own custom template. To do that, open up the file '''/opt/openexchange/etc/login.properties''' and set the '''com.openexchange.ajax.login.errorPageTemplate''' to point to a file on the OX system that contains your template. For example:&lt;br /&gt;
&lt;br /&gt;
  com.openexchange.ajax.login.errorPageTemplate=/opt/openexchange/local/loginErrors.html&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
Then write the template. Keep in mind, that ERROR_MESSAGE will be replaced by the actual error message of the login attempt (say &amp;quot;Your password was not valid&amp;quot; or somesuch). The template above might be a good starting point for you to start experimenting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: OX6]]&lt;br /&gt;
[[Category: AppSuite]]&lt;br /&gt;
[[Category: v6.22]]&lt;br /&gt;
[[Category: HTTP API]]&lt;br /&gt;
[[Category: Details]]&lt;br /&gt;
[[Category: Frontend]]&lt;br /&gt;
[[Category: Adminstrator]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Main_Page_Advanced&amp;diff=18151</id>
		<title>AppSuite:Main Page Advanced</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Main_Page_Advanced&amp;diff=18151"/>
		<updated>2014-07-18T08:45:48Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Overview =&lt;br /&gt;
*[[AppSuite:Architecture_Overview|Architecture Overview]]&lt;br /&gt;
&lt;br /&gt;
= OX App Suite UI Development =&lt;br /&gt;
This page contains all the information you need to get started with UI development.&lt;br /&gt;
&lt;br /&gt;
This covers how-to articles including server communication, extension points and how to write widgets, applications and plugins:&lt;br /&gt;
&lt;br /&gt;
[[AppSuite:UI | Frontend development articles]]&lt;br /&gt;
&lt;br /&gt;
= Groupware Server customization =&lt;br /&gt;
* [[Automatic_Delete_OXObjects_Per_User|Automatically delete users OX-Objects and OX-Folders]]&lt;br /&gt;
* [[Login_variations|Background Information about Login Variation]]&lt;br /&gt;
* Auto login, session handling, single sign on&lt;br /&gt;
** [http://www.open-xchange.com/fileadmin/user_upload/open-xchange/document/presentation/OX-HE-Authentication-Sessionhandling-en-6.18.pdf Authentication and Sessionhandling white paper (EasyLogin)]&lt;br /&gt;
** Custom login masks&lt;br /&gt;
*** [[Open-Xchange servlet for external login masks]]&lt;br /&gt;
&lt;br /&gt;
= Programming Interfaces =&lt;br /&gt;
* The [[AppSuite:HTTP_API|HTTP API]] is used by the Open-Xchange GUI and various 3rd party applications. It consists mainly of messages in JavaScript Object Notation ([http://json.org JSON]) sent over HTTP. Here is a general [[AppSuite:Introduction to the HTTP API|Introduction to the HTTP API]].&lt;br /&gt;
* Provisioning API to access the Open-Xchange Admin Daemon&lt;br /&gt;
** The [http://java.sun.com/javase/technologies/core/basic/rmi/index.jsp RMI] API is used for data provisioning of Contexts, Users, Groups and Resources as well as for configuring Databases, Filestores and OX Servers. It is currently split into two parts,&lt;br /&gt;
*** a {{DocLink|docpath=RMI/admin-core/|name=core}} and&lt;br /&gt;
*** a {{DocLink|docpath=RMI/admin-hosting/|name=hosting}} component.&lt;br /&gt;
** The {{DocLink|docpath=OX6-Provisioning/|name=Open-Xchange CLT}} are shell scripts that simplify groupware and service administration&lt;br /&gt;
** Create contexts/users with with [[Csv_import]]&lt;br /&gt;
** [[Open-Xchange-SOAP|Provisioning using SOAP]]&lt;br /&gt;
* The [[Oxmapi|Oxmapi]] is a windows library for programmers needed to communicate with the OX server&lt;br /&gt;
* {{DocLink|docpath=mal/|name=Open-Xchange Mail Abstraction Layer}}&lt;br /&gt;
* The Plugin API for extending the GUI is described in two documents: [[Plugin API|an overview]] and {{DocLink|docpath=gui-plugin-api|name=the reference}}&lt;br /&gt;
* [[UDPPush]] Open-Xchange PUSH Interface for Groupware Objects&lt;br /&gt;
&lt;br /&gt;
= Testing and QA =&lt;br /&gt;
* [[Automated GUI Tests]]&lt;br /&gt;
* [[Jmeter profile for performance tests|JMeter profile for performance tests]]&lt;br /&gt;
* [[Gatling Performance Tests]]&lt;br /&gt;
&lt;br /&gt;
= Statistics =&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Logincounter|logincounter]]&lt;br /&gt;
&lt;br /&gt;
= Translations =&lt;br /&gt;
* [[AppSuite:Available_Translations| Available Language Translations]]&lt;br /&gt;
* [[GUI Translation|Translate Open-Xchange to your community language]]&lt;br /&gt;
* [[AppSuite:Translate_Open-Xchange_to_supported_language|Translate Open-Xchange to supported language]]&lt;br /&gt;
&lt;br /&gt;
= Installation based on source code =&lt;br /&gt;
* [[SourceCodeAccess|Download the sourcecode]]&lt;br /&gt;
* [[AppSuite:ISV_Development_Environment_Setup_AppSuite_backend|Backend Development via Eclipse IDE]]&lt;br /&gt;
&lt;br /&gt;
= Integration =&lt;br /&gt;
* {{DocLink|docpath=whitepaper/OX-Directory-Integration-Whitepaper-English.pdf|name=Directory Integration Whitepaper}}&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:AdminGuide_7.6.0&amp;diff=18150</id>
		<title>AppSuite:AdminGuide 7.6.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:AdminGuide_7.6.0&amp;diff=18150"/>
		<updated>2014-07-18T08:41:29Z</updated>

		<summary type="html">&lt;p&gt;Sonja.krause-harder: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Older versions: [[AppSuite:AdminGuide_7.4.2|7.4.2]], [[AppSuite:AdminGuide_7.4.0|7.4.0]], [[AppSuite:AdminGuide_7_2|7.2.0]], [[AppSuite:AdminGuide_7_0_1|7.0.1]]&lt;br /&gt;
&lt;br /&gt;
= Open-Xchange Installation and Update =&lt;br /&gt;
&lt;br /&gt;
== OX App Suite ==&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_Debian_6.0|Download and Installation Guide for Debian GNU/Linux 6.0 (Squeeze)]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_Debian_7.0|Download and Installation Guide for Debian GNU/Linux 7.0 (Wheezy)]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_SLES11|Download and Installation Guide for SUSE Linux Enterprise Server 11]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_RHEL6|Download and Installation Guide for RedHat Enterprise Linux 6]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Installation_Guide_for_CentOS_6|Download and Installation Guide for CentOS 6]]&lt;br /&gt;
* [[OXSE4UCS_Installation_en|Download and Installation Guide for Univention Corporate Server]]&lt;br /&gt;
&lt;br /&gt;
== Open-Xchange Update ==&lt;br /&gt;
* [[AppSuite:UpdatingOXPackages|Updating Open-Xchange AppSuite v7.0.0 to v7.4]]&lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_Debian_6.0|Update Guide v6.22 to v7.4 for Debian GNU/Linux 6.0 (Squeeze)]]&lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_for_SLES11|Update Guide v6.22 to v7.4  for SUSE Linux Enterprise Server 11]]&lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_for_RHEL6|Update Guide v6.22 to v7.4  for RedHat Enterprise Linux 6]]&lt;br /&gt;
* [[AppSuite:Upgrade_from_6.22_for_CentOS6 |Update Guide v6.22 to v7.4  for CentOS 6]]&lt;br /&gt;
* [[UpdateTasks|Update Task Management in Open-Xchange]]&lt;br /&gt;
&lt;br /&gt;
==  Parallel Setup of OX App Suite UI and OX 6 UI ==&lt;br /&gt;
&lt;br /&gt;
* [[AppSuite:Parallel_UISupport_OX6_AppSuite_Debian_6.0|Parallel Setup Guide for Debian GNU/Linux 6.0 (Squeeze)]]&lt;br /&gt;
* [[AppSuite:Parallel_UISupport_OX6_AppSuite_RHEL_6_CentOS_6|Parallel Setup Guide for Red Hat Enterprise Linux 6 and CentOS 6]]&lt;br /&gt;
* [[AppSuite:Parallel_UISupport_OX6_AppSuite_SLES_11|Parallel Setup Guide for SUSE Linux Enterprise Server 11]]&lt;br /&gt;
&lt;br /&gt;
== Additional Software ==&lt;br /&gt;
* [[AppSuite:Text_Installation_Guide |Download &amp;amp; Install OX Text]]&lt;br /&gt;
* [[AppSuite:Spreadsheet_Installation_Guide |Download &amp;amp; Install OX Spreadsheet]]&lt;br /&gt;
* [[AppSuite:DocumentViewer |Download &amp;amp; Install Document Viewer]]&lt;br /&gt;
* [[AppSuite:Open-Xchange_Updater|Installation of the Open-Xchange Updater]]&lt;br /&gt;
* [[AppSuite:Connector_for_Microsoft_Outlook|Installation &amp;amp; Configuration of the Open-Xchange Connector for Microsoft Outlook]]&lt;br /&gt;
* [[AppSuite:Connector_for_Business_Mobility_Installation_Guide|Installation and information of the Connector for Business Mobility]]&lt;br /&gt;
* [[AppSuite:OX_Drive|Installation and information of OX Drive for Client]]&lt;br /&gt;
* [[AppSuite:OX_Mobile_Web_Interface|Installation of the Open-Xchange Mobile Web Interface]]&lt;br /&gt;
* [[Open-Xchange_Installation_Guide_for_OX_Notifier|Installation &amp;amp; Configuration of the Open-Xchange Notifier]]&lt;br /&gt;
* [[Open-Xchange_cPanel_Installation|Download &amp;amp; Installation of the OX Connector for cPanel]]&lt;br /&gt;
* [[AppSuite:Connector_for_WHMCS_Installation_Guide|Download &amp;amp; Installation of the OX Connector for WHMCS]]&lt;br /&gt;
* [[Parallels_Integration|Integrate Open-Xchange with Parallels]]&lt;br /&gt;
&lt;br /&gt;
= OX App Suite Configuration =&lt;br /&gt;
&lt;br /&gt;
== Advanced Configuration ==&lt;br /&gt;
* [[AppSuite:CalDAVClients | Configuration CalDAV with Open-Xchange]]&lt;br /&gt;
* [[AppSuite:CardDAVClients | Configuration CardDAV with Open-Xchange]]&lt;br /&gt;
* [[AppSuite:Caldav_carddav_Bundles| Installation CardDAV/CalDAV with Open-Xchange]]&lt;br /&gt;
* [[AppSuite:Running_a_cluster| Configuration Cluster-Setup]]&lt;br /&gt;
* [[AppSuite:Grizzly| Configuration Connector based on Grizzly]]&lt;br /&gt;
* [[ContactStorageLDAP| LDAP Contact Storage]]&lt;br /&gt;
* [[AppSuite:Setup_CIFS | Setup a CIFS Account as primary/additional FileStorage Account]]&lt;br /&gt;
* [[Filtering_templates | Filtering publication templates according to their purpose]]&lt;br /&gt;
&lt;br /&gt;
== OX App Suite Configuration Parameter ==&lt;br /&gt;
* [[AppSuite:Configuration_properties_7.4| Configuration properties]] - everything you ever wanted to change about the AppSuite&lt;br /&gt;
&lt;br /&gt;
== OX App Suite Management (CLT)==&lt;br /&gt;
* [[AppSuite:Context management|Context management]]&lt;br /&gt;
* [[AppSuite:User management|User management]]&lt;br /&gt;
* [[AppSuite:Group management|Group management]]&lt;br /&gt;
* [[AppSuite:Resource management|Resource management]]&lt;br /&gt;
* [[AppSuite:Data management|Data management]]&lt;br /&gt;
&lt;br /&gt;
= Advanced Documentation =&lt;br /&gt;
&lt;br /&gt;
== Architecture Overview ==&lt;br /&gt;
*[[AppSuite:Architecture_Overview|Architecture Overview]]&lt;br /&gt;
&lt;br /&gt;
== Importing and exporting data ==&lt;br /&gt;
* General [[restrictions on importing data]]&lt;br /&gt;
* Migrate a batch of users and contexts at once. Check the CSV Batch Import documentation [[Csv_import|page]].&lt;br /&gt;
* Documentation for the [[data import format|data import format]]&lt;br /&gt;
* [[VCard and ICal support]]&lt;br /&gt;
* [[Using the export servlet]]&lt;br /&gt;
* [[Using the import servlet]]&lt;br /&gt;
* [[export ical/vcard|Example in bash to extract private contacts, tasks or appointments in ical/vcard format]]&lt;br /&gt;
* [[CrawlerArchitecture|Architecture of the crawler bundle]]&lt;br /&gt;
&lt;br /&gt;
== Configuration and Tweaks ==&lt;br /&gt;
* [[Open_Xchange_Configuration|Open-Xchange Configuration]]&lt;br /&gt;
* [[Open-Xchange_Lighttpd|Open-Xchange and Lighttpd]]&lt;br /&gt;
* [[On_The_Fly_Configuration_Update|On The Fly Configuration Update (experimental)]]&lt;br /&gt;
* [[Session_Migration|Session migration]]&lt;br /&gt;
* [[MailNotify_Bundle|Mail Notification (Push) with Open-Xchange]]&lt;br /&gt;
* [[Tune_apache2_for_more_concurrent_connections|Apache2 tuning]]&lt;br /&gt;
&lt;br /&gt;
== Statistics ==&lt;br /&gt;
&lt;br /&gt;
 * [[AppSuite:Logincounter|logincounter]]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
* [http://www.open-xchange.com/forum/ Open-Xchange Forum]&lt;br /&gt;
* Check the [http://sdb.open-xchange.com/ Open-Xchange Support Database]&lt;br /&gt;
* FAQs can be found in the [http://sdb.open-xchange.com/faq SDB FAQ section].&lt;br /&gt;
* [[Passwords in Open-Xchange]]&lt;br /&gt;
* [[Outlook_OXtender2_Best_Practice| Outlook Connector best practice]]&lt;br /&gt;
* [[AppSuite:OX_Logging|Logging]] - configuring and understanding the LOGBACK logging system&lt;br /&gt;
* [[AppSuite:Oxsysreport | Creating an OX Support Tarball]]&lt;br /&gt;
&lt;br /&gt;
== Integration Scenarios ==&lt;br /&gt;
* [http://oxpedia.org/wiki/index.php?title=Category:Config Open-Xchange configuration options summary]&lt;br /&gt;
* [[OX_Permission_Level | OX Permission Level Matrix]]&lt;br /&gt;
* [[Load_balancing_and_clustering | Load balancing and OX clustering]]&lt;br /&gt;
* [[Open-Xchange-RHEL-AD-Integration|Integration of Open-Xchange into MS Active Directory and Exchange ]]&lt;br /&gt;
* [[ContextRestore_Bundle|Restoring contexts using the context restore bundle]]&lt;br /&gt;
* [[Lawful_Interception|Lawful Interception (Telekommunikationsüberwachung)]]&lt;br /&gt;
* [[OX_EMail_Push_Introduction|Introduction to EMail Push in Open-Xchange]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: OX7]]&lt;br /&gt;
[[Category: AppSuite]]&lt;br /&gt;
[[Category: Administrator]]&lt;/div&gt;</summary>
		<author><name>Sonja.krause-harder</name></author>
	</entry>
</feed>