Commit 9b487467 authored by benedikt.kroening's avatar benedikt.kroening
Browse files

Initial commit

parents
# Open-Xchange App Suite Installer script collection
This collection contains several scripts for letting you install a fully fledged Open-Xchange environment.
By default this will install a singlenode environment consititing of:
- Database (mysql or mariadb)
- Open-Xchange middleware
- Apache2 Frontend
## Configuration
Basic Configuration is located inside the file `config/config`.
TBD
## Versions
Versions can be configured at `setup/versions`
Check that file for more information.
## Good to know
This script collection has its roots in the old ox-quickinstall (or installer). Much of the install logic for the different distros was simply taken from there and still can be found at `lib/common.bash`
## How to use
Simple cli examples of how to use this
It is always a good idea to read documentation or help texts!
`./ox-installer --help`
## Install singlenode with everything you need
Right now only frontend (apache), middleware and a database are installed.
It uses dovecot.qa.open-xchange.com as mail backend.
`$ ./ox-installer --singlenode`
You can supply each component individually. Read the help text for more information.
## Docker
This installer supports creation of Open-Xchange docker images. These images will use supervisord as process monitor.
Right now it creates a simple groupware image (apache2, ox frontend, ox middleware). Seperate mail and database services are required.
Take a look at the docker-compose.yml at the root level of this repo.
### Build images
`$ ./ox-installer --build-docker`
### Start it
If you have docker-compose available you can use it to start the provided compose-environment
`$ docker-compose up`
### Stop it
`$ docker-compose down -v`
### Clean it up
`$ rm -fr .runtime/`
# This file contains default configuration variables
# todo: rename variables with propper prefixes
# The "export" parameter is required, do not remove it!!
# Options are: mariadb, mysql
DATABASE_TYPE=mariadb
DATABASE_ROOT_USER=root
DATABASE_ROOT_PASS=secret
DATABASE_HOST_NAME=localhost
DATABASE_HOST_PORT=3306
OX_ADMINMASTER_USER=oxadminmaster
OX_ADMINMASTER_PASS=secret
OX_MAIL_HOST=localhost
OX_MAIL_DOMAIN=singlenode
OX_SERVER_NAME=singlenode
OX_CLUSTER_NAME=singlenode
OX_HAZELCAST_ENABLED=false
OX_CONFIGDB_USER=openexchange
OX_CONFIGDB_PASS=secret
OX_CONFIGDB_NAME=configdb
OX_ENV_QA=true
# To get rid of the export parameter change to this:
# To ignore lines that start with #, use this (thanks to Pete's comment):
# export $(grep -v '^#' <file> | xargs)
# And if you want to unset all of the variables defined in the file, use this:
# unset $(grep -v '^#' <file> | sed -E 's/(.*)=.*/\1/' | xargs)
\ No newline at end of file
#!/bin/bash
#
# Copyright (C) 2019 OX Software GmbH
#
# This file is part of OX Automation.
#
# OX Automation is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OX Automation is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OX Automation. If not, see <http://www.gnu.org/licenses/>.
#
# Authors:
# Martin Heiland <martin.heiland@open-xchange.com>
#
# -o: Overwrite existing context
# -r: Create reseller account, users
# -d: Override the default mail domain
# -s: Override the default mail server
# -l: Override the default login domain
# -c: Override the default context id
# -a: Override the default access combination name
# -v: Enables virtual attachments for context
AS_BIN=/opt/open-xchange/sbin
CTX_ID=10
AS_ADMINMASTER_PASS=secret
AS_ADMIN_PASS=secret
MAIL_DOMAIN=qa.open-xchange.com
MAIL_SERVER=dovecot.qa.open-xchange.com
LOGIN_DOMAIN=defaultcontext
RESELLER=false
OVERWRITE=false
ACN=all
EXTRAS=false
VIRTUAL_ATTACHMENTS=false
CAPABILITIES=""
while getopts "ord:l:c:s:a:ev" opt; do
case ${opt} in
o)
OVERWRITE=true
;;
r)
RESELLER=true
;;
d)
MAIL_DOMAIN=${OPTARG}
;;
l)
LOGIN_DOMAIN=${OPTARG}
;;
c)
CTX_ID=${OPTARG}
;;
s)
MAIL_SERVER=${OPTARG}
;;
a)
ACN=${OPTARG}
;;
e)
EXTRAS=true
;;
v)
VIRTUAL_ATTACHMENTS=true
;;
esac
done
if [ "${RESELLER}" = true ]; then
CONTEXTID_FILE=ctxid.txt
"${AS_BIN}"/createadmin -A oxadminmaster -P "${AS_ADMINMASTER_PASS}" -u reseller -d "Reseller" -p "${AS_ADMIN_PASS}"
"${AS_BIN}"/createcontext -A reseller -P "${AS_ADMIN_PASS}" -u oxadmin -d "Context Admin" -g Admin -s User -p "${AS_ADMIN_PASS}" -L "${LOGIN_DOMAIN}" -e oxadmin@"${MAIL_DOMAIN}" -q 1024 --access-combination-name="${ACN}" 1>"$CONTEXTID_FILE"
CTX_ID=$(awk -F " " '{print $2}' "$CONTEXTID_FILE")
rm -f "$CONTEXTID_FILE"
else
if [[ "${OVERWRITE}" = true ]]; then
"${AS_BIN}"/deletecontext -c "$CTX_ID" -A oxadminmaster -P "${AS_ADMINMASTER_PASS}" 2>/dev/null
fi
"${AS_BIN}"/createcontext -A oxadminmaster -P "${AS_ADMINMASTER_PASS}" -c "$CTX_ID" -u oxadmin -d "Context Admin" -g Admin -s User -p "${AS_ADMIN_PASS}" -L "${LOGIN_DOMAIN}" -e oxadmin@"${MAIL_DOMAIN}" -q 1024 --access-combination-name="${ACN}"
if [[ $? != 0 ]]; then
echo "Context could not be created, aborting."
exit 1
fi
fi
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u mheiland -d "Martin Heiland" -g Martin -s Heiland -p secret -e mheiland@"${MAIL_DOMAIN}" --imaplogin mheiland --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u mwagner -d "Markus Wagner" -g Markus -s Wagner -p secret -e mwagner@"${MAIL_DOMAIN}" --imaplogin mwagner --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u bkroening -d "Benedikt Kröning" -g Benedikt -s Kröning -p secret -e bkroening@"${MAIL_DOMAIN}" --imaplogin bkroening --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u tthamm -d "Tobias Thamm" -g Tobias -s Thamm -p secret -e tthamm@"${MAIL_DOMAIN}" --imaplogin tthamm --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u ntsapanidis -d "Nikolaos Tsapanidis" -g Nikolaos -s Tsapanidis -p secret -e ntsapanidis@"${MAIL_DOMAIN}" --imaplogin ntsapanidis --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u ofelka -d "Olaf Felka" -g Olaf -s Felka -p secret -e ofelka@"${MAIL_DOMAIN}" --imaplogin ofelka --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u mhenschel -d "Maike Henschel" -g Maike -s Henschel -p secret -e mhenschel@"${MAIL_DOMAIN}" --imaplogin mhenschel --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u pschumacher -d "Philipp Schumacher" -g Philipp -s Schumacher -p secret -e pschumacher@"${MAIL_DOMAIN}" --imaplogin pschumacher --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u ostute -d "Olena Stute" -g Olena -s Stute -p secret -e ostute@"${MAIL_DOMAIN}" --imaplogin ostute --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u eahmed -d "Ejaz Ahmed" -g Ejaz -s Ahmed -p secret -e eahmed@"${MAIL_DOMAIN}" --imaplogin eahmed --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u jlaatsch -d "Jorin Laatsch" -g Jorin -s Laatsch -p secret -e jlaatsch@"${MAIL_DOMAIN}" --imaplogin jlaatsch --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u jswitalski -d "Jarek Switalski" -g Jarek -s Switalski -p secret -e jswitalski@"${MAIL_DOMAIN}" --imaplogin jswitalski --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u dpondruff -d "Daniel Pondruff" -g Daniel -s Pondruff -p secret -e dpondruff@"${MAIL_DOMAIN}" --imaplogin dpondruff --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u hnambalirwa -d "Harriet Nambalirwa" -g Harriet -s Nambalirwa -p secret -e hnambalirwa@"${MAIL_DOMAIN}" --imaplogin hnambalirwa --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u greg -d "Greg Hill" -g Greg -s Hill -p secret -e greg@"${MAIL_DOMAIN}" --imaplogin greg --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/createuser -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -u mdrnovsek -d "Matthias Drnovsek" -g Matthias -s Drnovsek -p secret -e mdrnovsek@"${MAIL_DOMAIN}" --imaplogin mdrnovsek --imapserver "${MAIL_SERVER}" --smtpserver "${MAIL_SERVER}"
${AS_BIN}/creategroup -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -d "Test Group 01" -n test_group_01 -a 3,4,5
${AS_BIN}/creategroup -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -d "My Users" -n my_users -a 3,4
${AS_BIN}/createresource -c "$CTX_ID" -A oxadmin -P "${AS_ADMIN_PASS}" -d "Resource 01" -n resource_01 -e resource_01@"${MAIL_DOMAIN}"
${AS_BIN}/changecontext -c "$CTX_ID" -A oxadminmaster -P "${AS_ADMINMASTER_PASS}" --access-combination-name="${ACN}"
if [[ "${EXTRAS}" == true ]]; then
if [[ true == "${HAS_USERFEEDBACK}" ]]; then
CAPABILITIES="${CAPABILITIES},feedback"
fi
if [[ -n "${AS_REPO_DEALS}" ]]; then
CAPABILITIES="${CAPABILITIES},deals-user,deals-admin"
fi
if [[ -n "${AS_REPO_MESSENGER}" ]]; then
CAPABILITIES="${CAPABILITIES},messenger,messenger-phone,messenger-group,messenger-call,messenger-group-call,messenger-guestmode,messenger-screensharing,messenger-conference"
fi
if [[ -n "${AS_REPO_GUARD}" ]]; then
CAPABILITIES="${CAPABILITIES},guard"
fi
${AS_BIN}/changecontext -c "$CTX_ID" -A oxadminmaster -P "${AS_ADMINMASTER_PASS}" --capabilities-to-add "${CAPABILITIES}"
fi
if [[ "${VIRTUAL_ATTACHMENTS}" == true ]]; then
${AS_BIN}/changecontext -c "$CTX_ID" -A oxadminmaster -P "${AS_ADMINMASTER_PASS}" --config/com.openexchange.file.storage.mail.enabled=true
fi
-config/com.openexchange.file.storage.mail.enabled=true
fi
#!/bin/bash
#
# Copyright (C) 2019 OX Software GmbH
#
# This file is part of OX Automation.
#
# OX Automation is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OX Automation is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OX Automation. If not, see <http://www.gnu.org/licenses/>.
#
#
# Authors:
# Benedikt Kroening <benedikt.kroening@open-xchange.com>
#
set -e
SCRIPT_DIR="$( cd "$(dirname "$0")" ; pwd -P)"
# sourcing some commonly used functions and executing basic checks
source ${SCRIPT_DIR}/../../lib/common.bash
checkRootPrivileges
detectDistribution
# sourcing the default configuration to use
#source ${SCRIPT_DIR}/config/config
exportProperties ${SCRIPT_DIR}/../config
BALANCER_NAME=oxcluster
BALANCER_HOST="https://localhost:8009"
BALANCER_ROUTE=singlenode
## Help text
show_usage() {
echo -n "
$0 [OPTIONS]
"
}
### reading config from command line; overriding defaults
POSITIONAL=()
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
-h|--help)
show_usage
exit 0
shift
;;
--debug)
echo "WARNING: Debug flag set (--debug)"
set -x
shift
;;
-n|--name)
BALANCER_NAME="$2"
shift
shift
;;
-b|--balancer)
BALANCER_HOST="$2"
shift
shift
;;
-r|--route)
BALANCER_ROUTE="$2"
shift
shift
;;
# -f|--file)
# FILE_NAME="$2"
# shift
# shift
# ;;
*) # unknown option
echo "Unknonwn option: $1"
POSITIONAL+=("$1") # save it in an array for later
shift
;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters
FILE_NAME="20_${BALANCER_NAME}-balancer.conf"
echo "Creating balancer at $FILE_NAME with following config:"
set | grep BALANCER_
echo "
<Proxy balancer://${BALANCER_NAME}>
Order Deny,Allow
Allow from all
BalancerMember ${BALANCER_HOST} timeout=100 smax=0 ttl=60 retry=60 loadfactor=50 keepalive=On route=${BALANCER_ROUTE}
ProxySet stickysession=JSESSIONID|jsessionid scolonpathdelim=On
SetEnv proxy-initial-not-pooled
SetEnv proxy-sendchunked
</Proxy>
" > "${HTTPD_CONF_PATH}/${FILE_NAME}"
apachectl restart
\ No newline at end of file
ProxyRequests Off
ProxyStatus On
ProxyPreserveHost On
Header unset Server
<Proxy balancer://oxcluster>
Order Deny,Allow
Allow from all
BalancerMember http://localhost:8009 timeout=100 smax=0 ttl=60 retry=60 loadfactor=50 keepalive=On route=singlenode
ProxySet stickysession=JSESSIONID|jsessionid scolonpathdelim=On
SetEnv proxy-initial-not-pooled
SetEnv proxy-sendchunked
</Proxy>
<Location /webservices>
Order Allow,Deny
Allow from all
</Location>
#ProxyPass /appsuite/api/oxguard balancer://oxguard/oxguard
#ProxyPass /pks balancer://oxguard/pgp
#ProxyPass /preliminary balancer://oxcluster/preliminary
ProxyPass /ajax balancer://oxcluster/appsuite/api
ProxyPass /appsuite/api balancer://oxcluster/appsuite/api
#ProxyPass /realtime balancer://oxcluster/realtime
ProxyPass /drive balancer://oxcluster/drive
ProxyPass /infostore balancer://oxcluster/infostore
ProxyPass /publications balancer://oxcluster/publications
ProxyPass /servlet balancer://oxcluster/servlet
ProxyPass /webservices balancer://oxcluster/webservices
#ProxyPass /documentconverterws balancer://oxcluster_doc/documentconverterws
#ProxyPass /socket.io balancer://oxcluster_ws/socket.io
#ProxyPass /appsuite/rt2 balancer://oxcluster_ws/rt2
# TODO: Review ProxyPasses
#ProxyPass /usm-json balancer://oxcluster/usm-json
#ProxyPass /Microsoft-Server-ActiveSync balancer://oxcluster_eas/Microsoft-Server-ActiveSync
#ProxyPass /preliminary balancer://oxcluster/preliminary
#ProxyPass /socket.io balancer://oxcluster_ws/socket.io
\ No newline at end of file
<VirtualHost _default_:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# Directory permissions and options
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/html>
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
<Directory /var/www/html/appsuite>
Options None +SymLinksIfOwnerMatch
AllowOverride Indexes FileInfo
</Directory>
# Rewrite
RewriteEngine On
# Redirect HTTP Requests to HTTPS
# Uncomment the next line to enable redirection of unencrypted HTTP access
# RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# Redirect requests from /
RedirectMatch ^/$ /appsuite/
# Security related headers
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Download-Options "noopen"
Header always set X-Permitted-Cross-Domain-Policies "none"
Header unset Server
# Allow requests from anywhere ... if security is required do it outside of docker-apache containers !
Header set Access-Control-Allow-Origin "*"
# GZip compression is enabled by default for faster content transfer. Consider disabling mod_deflate to mitigate BREACH
<Directory "/var/www/html/">
# Rewrite DAV Client requests to DAV servlet
RewriteCond %{HTTP_USER_AGENT} Calendar [OR]
RewriteCond %{HTTP_USER_AGENT} Reminders [OR]
RewriteCond %{HTTP_USER_AGENT} DataAccess [OR]
RewriteCond %{HTTP_USER_AGENT} DAVKit [OR]
RewriteCond %{HTTP_USER_AGENT} Lightning [OR]
RewriteCond %{HTTP_USER_AGENT} Adresboek [OR]
RewriteCond %{HTTP_USER_AGENT} dataaccessd [OR]
RewriteCond %{HTTP_USER_AGENT} Preferences [OR]
RewriteCond %{HTTP_USER_AGENT} Adressbuch [OR]
RewriteCond %{HTTP_USER_AGENT} AddressBook [OR]
RewriteCond %{HTTP_USER_AGENT} Address\ Book [OR]
RewriteCond %{HTTP_USER_AGENT} CalendarStore [OR]
RewriteCond %{HTTP_USER_AGENT} CalendarAgent [OR]
RewriteCond %{HTTP_USER_AGENT} accountsd [OR]
RewriteCond %{HTTP_USER_AGENT} eM\ Client [OR]
RewriteCond %{HTTP_USER_AGENT} OX\ Sync [OR]
RewriteCond %{HTTP_USER_AGENT} CoreDAV
RewriteRule (.*) http://localhost:8009/servlet/dav/$1 [P]
</Directory>
# Logging
LogLevel info
#ErrorLog ${APACHE_LOG_DIR}/ox-http-error.log
#CustomLog ${APACHE_LOG_DIR}/ox-http-access.log combined
</VirtualHost>
\ No newline at end of file
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# Directory permissions and options
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/html>
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
<Directory /var/www/html/appsuite>
Options None +SymLinksIfOwnerMatch
AllowOverride Indexes FileInfo
</Directory>
# Rewrite
RewriteEngine On
# Redirect requests from /
RedirectMatch ^/$ /appsuite/
# TLS
SSLEngine on
# Consider deploying a trusted TLS certificate
# SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
# SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
SSLCertificateFile {{env "APACHE_SSL_CRT"}}
SSLCertificateKeyFile {{env "APACHE_SSL_KEY"}}
SSLHonorCipherOrder on
SSLCipherSuite ECDH+AESGCM:ECDH+AES256:ECDH+AES128:!aNULL
SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2
# Security related headers
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Download-Options "noopen"
Header always set X-Permitted-Cross-Domain-Policies "none"
Header unset Server
# GZip compression is enabled by default for faster content transfer. Consider disabling mod_deflate to mitigate BREACH
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
# Add HPKP PINs here
#Header always set Public-Key-Pins "pin-sha256="PIN1"; pin-sha256="PIN2"; max-age=2592000; includeSubDomains"
# OCSP Staping requires a TLS certificate with issuer information, consider getting a trusted certificate
#SSLUseStapling On
# Setting ECDH Parameters requires OpenSSL 1.0.2 or later, uncomment if available
#SSLOpenSSLConfCmd ECDHParameters secp384r1
<Directory "/var/www/html/">
# Rewrite DAV Client requests to DAV servlet
RewriteCond %{HTTP_USER_AGENT} Calendar [OR]
RewriteCond %{HTTP_USER_AGENT} Reminders [OR]
RewriteCond %{HTTP_USER_AGENT} DataAccess [OR]
RewriteCond %{HTTP_USER_AGENT} DAVKit [OR]
RewriteCond %{HTTP_USER_AGENT} Lightning [OR]
RewriteCond %{HTTP_USER_AGENT} Adresboek [OR]
RewriteCond %{HTTP_USER_AGENT} dataaccessd [OR]
RewriteCond %{HTTP_USER_AGENT} Preferences [OR]
RewriteCond %{HTTP_USER_AGENT} Adressbuch [OR]
RewriteCond %{HTTP_USER_AGENT} AddressBook [OR]
RewriteCond %{HTTP_USER_AGENT} Address\ Book [OR]
RewriteCond %{HTTP_USER_AGENT} CalendarStore [OR]
RewriteCond %{HTTP_USER_AGENT} CalendarAgent [OR]
RewriteCond %{HTTP_USER_AGENT} accountsd [OR]
RewriteCond %{HTTP_USER_AGENT} eM\ Client [OR]
RewriteCond %{HTTP_USER_AGENT} OX\ Sync [OR]
RewriteCond %{HTTP_USER_AGENT} CoreDAV
RewriteRule (.*) http://localhost:8009/servlet/dav/$1 [P]
</Directory>
# Logging
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/ox-https-error.log
CustomLog ${APACHE_LOG_DIR}/ox-https-access.log combined
</VirtualHost>
\ No newline at end of file
#!/bin/bash
#
# Copyright (C) 2019 OX Software GmbH
#
# This file is part of OX Automation.
#
# OX Automation is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OX Automation is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OX Automation. If not, see <http://www.gnu.org/licenses/>.
#
#
# Authors:
# Benedikt Kroening <benedikt.kroening@open-xchange.com>
# </