diff --git a/docker/roundcube/rootfs/opt/app-root/src/build.sh b/docker/roundcube/rootfs/opt/app-root/src/build.sh index 44d38e8c..34dc3203 100755 --- a/docker/roundcube/rootfs/opt/app-root/src/build.sh +++ b/docker/roundcube/rootfs/opt/app-root/src/build.sh @@ -1,56 +1,56 @@ #!/bin/bash set -e set -x pushd /opt/app-root/src/ # Clone what we don't find (roundcubemail-skin-elastic is not publicly available, so can't be included this way) if [ ! -d roundcubemail ]; then git clone --branch dev/kolab-1.5 https://git.kolab.org/source/roundcubemail.git roundcubemail fi if [ ! -d roundcubemail-plugins-kolab ]; then git clone --branch master https://git.kolab.org/diffusion/RPK/roundcubemail-plugins-kolab.git roundcubemail-plugins-kolab fi if [ ! -d syncroton ]; then git clone --branch master https://git.kolab.org/diffusion/S/syncroton.git syncroton fi if [ ! -d iRony ]; then git clone --branch master https://git.kolab.org/source/iRony.git iRony fi if [ ! -d chwala ]; then - git clone --branch master https://git.kolab.org/diffusion/C/chwala.git chwala + git clone --branch dev/kolabfiles https://git.kolab.org/diffusion/C/chwala.git chwala fi if [ ! -d autoconf ]; then git clone --branch master https://git.kolab.org/diffusion/AC/autoconf.git autoconf fi if [ ! -d freebusy ]; then git clone --branch master https://git.kolab.org/diffusion/F/freebusy.git freebusy fi pushd roundcubemail cp /opt/app-root/src/composer.json composer.json rm -rf vendor/ composer.lock php -dmemory_limit=-1 $(command -v composer) install cd /opt/app-root/src/ ./update.sh cd /opt/app-root/src/roundcubemail # Adjust the configs sed -i -r \ -e "s/'vlv'(\s+)=> false,/'vlv'\1=> true,/g" \ -e "s/'vlv_search'(\s+)=> false,/'vlv_search'\1=> true,/g" \ -e "s/inetOrgPerson/inetorgperson/g" \ -e "s/kolabInetOrgPerson/inetorgperson/g" \ config/*.inc.php sed -i -r -e "s|\$config\['managesieve_host'\] = .*$|\$config['managesieve_host'] = 'kolab';|g" config/managesieve.inc.php popd # Set the php timezone sed -i -r -e 's|^(;*)date\.timezone.*$|date.timezone = Europe/Zurich|g' /etc/php.ini # Allow environment variables from fpm sed -i -e "s/;clear_env/clear_env/" /etc/php-fpm.d/www.conf diff --git a/docker/roundcube/rootfs/opt/app-root/src/update.sh b/docker/roundcube/rootfs/opt/app-root/src/update.sh index 1537206d..399901e7 100755 --- a/docker/roundcube/rootfs/opt/app-root/src/update.sh +++ b/docker/roundcube/rootfs/opt/app-root/src/update.sh @@ -1,213 +1,195 @@ #!/bin/bash set -e set -x # Look for local repositories for repo in roundcubemail roundcubemail-plugins-kolab roundcubemail-skin-elastic syncroton iRony chwala autoconf freebusy do if [ -d /src.orig/$repo ]; then rsync -av \ --exclude=vendor \ --exclude=temp \ --exclude=logs \ --exclude=composer.lock \ /src.orig/$repo/ /opt/app-root/src/$repo fi done pushd /opt/app-root/src/ LESSC=/usr/local/bin/lessc SKINS=(kolab plesk) pushd roundcubemail cp /opt/app-root/src/composer.json composer.json php -dmemory_limit=-1 $(command -v composer) update bin/install-jsdeps.sh # May require an "npm install less" and "npm install less-plugin-clean-css" pushd skins/elastic $LESSC -x styles/styles.less > styles/styles.css $LESSC -x styles/print.less > styles/print.css $LESSC -x styles/embed.less > styles/embed.css popd $LESSC --clean-css="--s1 --advanced" --rewrite-urls=all plugins/libkolab/skins/elastic/libkolab.less > plugins/libkolab/skins/elastic/libkolab.min.css bin/updatecss.sh --dir skins/elastic popd # Install skins for skin in "${SKINS[@]}"; do if [ -d "roundcubemail-skin-elastic/$skin" ]; then cp -r "roundcubemail-skin-elastic/$skin" roundcubemail/skins/ else echo "Skin $skin is not available" fi done pushd roundcubemail for skin in $(ls -1d skins/* | grep -vE '(classic|elastic|larry)'); do skin=$(basename $skin) # Copy elastic skin over $skin (but don't overwrite what already existis) find \ ./skins/elastic/ \ ./plugins/libkolab/skins/elastic/ \ -type f | sort | while read file; do target_dir=$(dirname ${file} | sed -e 's|%{datadir}|.|g' -e 's|./public_html/assets/|./|g' -e 's|./public_html/assets/plugins/libkolab/|./|g' -e "s/elastic/$skin/g") file_name=$(basename ${file}) echo "Target: $target_dir, file $file_name" if [ ! -d ${target_dir} ]; then mkdir -p ${target_dir} fi if [ ! -f "${target_dir}/${file_name}" ]; then cp -av "${file}" "${target_dir}" fi done # Replace elastic references, but don't change the depends value in meta.json sed -i -e "s/\"elastic\"/\"$skin\"/g" \ $(find skins/$skin/ plugins/libkolab/skins/$skin/ -type f -not -name "meta.json") pushd skins/$skin $LESSC -x styles/styles.less > styles/styles.css $LESSC -x styles/print.less > styles/print.css $LESSC -x styles/embed.less > styles/embed.css popd $LESSC --clean-css="--s1 --advanced" --rewrite-urls=all plugins/libkolab/skins/$skin/libkolab.less > plugins/libkolab/skins/$skin/libkolab.min.css # Compile and compress the CSS #for file in `find . -type f -name "styles.less" -o -name "print.less" -o -name "embed.less" -o -name "libkolab.less"`; do # %{_bindir}/lessc --relative-urls ${file} > $(dirname ${file})/$(basename ${file} .less).css # # sed -i \ # -e "s|../../../skins/plesk/images/contactpic.png|../../../../skins/plesk/images/contactpic.png|" \ # -e "s|../../../skins/plesk/images/watermark.jpg|../../../../skins/plesk/images/watermark.jpg|" \ # $(dirname ${file})/$(basename ${file} .less).css # # cat $(dirname ${file})/$(basename ${file} .less).css #done bin/updatecss.sh --dir "skins/$skin" done ## Configs # Install plugin configs for plugin in $(find plugins/ -mindepth 1 -maxdepth 1 -type d -exec basename {} \; | sort); do if [ -f "plugins/${plugin}/config.inc.php.dist" ]; then pushd plugins/${plugin} mv config.inc.php.dist ../../config/${plugin}.inc.php rm -f config.inc.php ln -s ../../config/${plugin}.inc.php config.inc.php popd fi done # Copy our configs over the default ones cp /opt/app-root/src/roundcubemail-config-templates/* config/ DES_KEY=$(openssl rand -base64 24); sed -i -r -e "s|\$config\['des_key'\] = .*$|\$config['des_key'] = \"$DES_KEY\";|g" config/config.inc.php # Update plugins pushd /opt/app-root/src/roundcubemail-plugins-kolab/plugins for plugin in $(ls -1d) do if [ -d plugins/${plugin}/ ]; then rsync -av \ --exclude=vendor \ --exclude=composer.json \ --exclude=config.inc.php \ $plugin/ /opt/app-root/src/roundcubemail/plugins/$plugin fi done popd # Fix permissions chmod 777 -R logs chmod 777 -R temp popd # Maybe redo this in case of updates # Install chwala pushd chwala -# Openshift (I think) doesn't handle urls without a trailing slash well. In this case we end up with a 301 redirect to the http url, which breaks the file viewer. -patch -p1 <<'EOF' -diff --git a/lib/file_api.php b/lib/file_api.php -index a2d8db8..f8fa511 100644 ---- a/lib/file_api.php -+++ b/lib/file_api.php -@@ -369,7 +369,7 @@ class file_api extends file_api_core - */ - public function file_url($file) - { -- return $this->api_url() . '?method=file_get' -+ return $this->api_url() . '/?method=file_get' - . '&file=' . urlencode($file) - . '&token=' . urlencode(session_id()); - } -EOF - - rm -f lib/ext/Roundcube lib/drivers/kolab/plugins vendor mkdir -p lib/ext ln -s ../../../roundcubemail/program/lib/Roundcube lib/ext/Roundcube ln -s ../../../../roundcubemail/plugins lib/drivers/kolab/plugins ln -s ../roundcubemail/vendor vendor rm -R config ln -s ../roundcubemail/config config chmod 777 -R cache chmod 777 -R logs popd # Install iRony pushd iRony rm -f lib/FileAPI lib/Roundcube lib/plugins vendor ln -s ../../chwala/lib lib/FileAPI ln -s ../../roundcubemail/program/lib/Roundcube lib/Roundcube ln -s ../../roundcubemail/plugins lib/plugins ln -s ../roundcubemail/vendor vendor rm -R config ln -s ../roundcubemail/config config mkdir -p logs chmod 777 -R logs mkdir -p temp chmod 777 -R temp popd # Install syncroton pushd syncroton rm -f lib/ext/Roundcube lib/plugins vendor mkdir -p lib/ext ln -s ../../../roundcubemail/program/lib/Roundcube lib/ext/Roundcube ln -s ../../roundcubemail/plugins lib/plugins ln -s ../roundcubemail/vendor vendor rm -R config ln -s ../roundcubemail/config config chmod 777 -R logs popd # Install autoconf pushd autoconf rm -f vendor ln -s ../roundcubemail/vendor vendor chmod 777 -R logs popd # Install freebusy pushd freebusy rm -f vendor ln -s ../roundcubemail/vendor vendor mkdir -p logs chmod 777 -R logs popd