blob: 1aeeef80c06ec876ef3f6e6b0b983dbf708ffced [file] [log] [blame]
#!/bin/sh
#Licensed to the Apache Software Foundation (ASF) under one
#or more contributor license agreements. See the NOTICE file
#distributed with this work for additional information
#regarding copyright ownership. The ASF licenses this file
#to you under the Apache License, Version 2.0 (the
#"License"); you may not use this file except in compliance
#with the License. You may obtain a copy of the License at
#
#http://www.apache.org/licenses/LICENSE-2.0
#
#Unless required by applicable law or agreed to in writing,
#software distributed under the License is distributed on an
#"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#KIND, either express or implied. See the License for the
#specific language governing permissions and limitations
#under the License.
set -e
: "$0" "$@"
JAVA_HOME=""
JAVA_HOMES="/usr/lib/jvm/java-6-openjdk"
for possible in $JAVA_HOMES; do
if [ -e "$possible/bin/java" ]; then
JAVA_HOME="$possible"
break
fi
done
if ! [ "$JAVA_HOME" ]; then
echo "Couldn't find a java."
echo "Tried $JAVA_HOMES"
exit 1
fi
JAVA="$JAVA_HOME/bin/java"
encrypt_password() {
(
cd /usr/share/ofbiz
"$JAVA" -classpath framework/base/build/lib/ofbiz-base.jar:framework/common/build/lib/ofbiz-common.jar:framework/base/config:framework/entity/build/lib/ofbiz-entity.jar:framework/base/lib/javolution.jar:framework/base/lib/commons/commons-collections.jar:framework/base/lib/jdbm.jar:framework/base/lib/log4j.jar:framework/security/config:support EncryptPassword "$1"
)
}
munge_conffile() {
tmp="$1"
source="$2"
case "$source" in
(framework/entity/config/entityengine.xml)
. /etc/dbconfig-common/ofbiz.conf
xalan \
-xsl "/usr/share/ofbiz/support/entityengine.xslt" \
-in "/usr/share/ofbiz/ucf/$source" \
-param dbtype "'$dbc_dbtype'" \
-param dbuser "'$dbc_dbuser'" \
-param dbpass "'$dbc_dbpass'" \
-param dbserver "'$dbc_dbserver'" \
-param dbport "'$dbc_dbport'" \
-param dbname "'$dbc_dbname'" > $tmp
;;
(*)
echo "Unknown file: $source"
exit 1
;;
esac
}
configure_ofbiz() {
extra=""
: ofbiz_readers "$ofbiz_readers"
: ofbiz_import_readers "$ofbiz_import_readers"
: ofbiz_override_data "$ofbiz_override_data"
if [ "$ofbiz_readers" ]; then
if [ "$ofbiz_import_readers" ]; then
extra="$extra -readers=\"$ofbiz_readers\""
fi
if [ "$ofbiz_override_data" ]; then
trap 'rm -f "$tempfile1" "$tempfile2"' EXIT
tempdir="$(mktemp -d)"
chown ofbiz:ofbiz "$tempdir"
trap 'rm -rf "$tempdir"' EXIT
files=""
{
IFS="," set -- $ofbiz_readers
while [ $# -gt 0 ]; do
if true; then
xalan -q \
-param reader "'$1'" \
-param password "'$ofbiz_password_encrypted'" \
-param ofbizhome "'/usr/share/ofbiz'" \
-xsl "/usr/share/ofbiz/support/override-data.xslt" \
-in "/usr/share/ofbiz/framework/base/config/component-load.xml" \
-out "$tempdir/reader-$1.xml"
chown ofbiz:ofbiz "$tempdir/reader-$1.xml"
fi
if [ "$files" ]; then
files="$files,$tempdir/reader-$1.xml"
else
files="$tempdir/reader-$1.xml"
fi
shift
done
}
trap '' EXIT
if [ "$files" ]; then
extra="$extra -file=\"$files\""
fi
fi
eval /etc/init.d/ofbiz install $extra
fi
#rm -f "$tempfile1" "$tempfile2"
}
fix_readers() {
IFS=", " set -- "$@"
while [ $# -gt 0 ]; do
echo -n "$1"
shift
if [ $# -gt 0 ]; then
echo ','
fi
done
}
get_random_chars() {
(
LANG=C
LC_ALL=C
length="$1"
chars=""
while :; do
needed_length=$((${length} - ${#chars}))
chars="$chars$(dd if=/dev/urandom count="${needed_length}" bs=1 | sed -n -e 's/[^[:alnum:]]//g;p;q')"
if [ "${#chars}" -ge "$length" ]; then
break
fi
done
echo $chars
)
}
get() {
var_name="$1"
debconf_name="$2"
shift 2
if db_get "$debconf_name"; then
if eval ! [ "\"\$$var_name\" = \"\$RET\"" ]; then
while [ $# -gt 0 ]; do
eval $1=1
shift
done
eval $var_name=\"\$RET\"
fi
else
echo "Couldn't fetch '$debconf_name' from debconf!"
exit 1
fi
}
start_ofbiz() {
if [ -x "/etc/init.d/ofbiz" ]; then
if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
invoke-rc.d ofbiz start || exit $?
else
/etc/init.d/ofbiz start || exit $?
fi
fi
}
stop_ofbiz() {
if [ -x "/etc/init.d/ofbiz" ]; then
if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
invoke-rc.d ofbiz stop || exit $?
else
/etc/init.d/ofbiz stop || exit $?
fi
fi
}
. /usr/share/debconf/confmodule
. /usr/share/dbconfig-common/dpkg/postinst
dbc_generate_include=sh:/etc/ofbiz/debconf.cfg
[ "$1" != "triggered" ] && dbc_go ofbiz "$@"
if [ -e /etc/ofbiz/debconf.cfg ]; then
ofbiz_admin_key=""
. /etc/ofbiz/debconf.cfg
else
ofbiz_admin_key="$(get_random_chars 32)"
ofbiz_readers=""
ofbiz_admin_port=""
fi
if [ "$1" = "triggered" ]; then
for trigger in $2; do
case "$trigger" in
(ofbiz-start)
start_ofbiz
;;
(ofbiz-install|ofbiz-upgrade)
ofbiz_reseed=""
if [ "$trigger" = "ofbiz-install" ]; then
ofbiz_reseed=1
ofbiz_import_readers=1
fi
get ofbiz_readers ofbiz/readers ofbiz_import_readers ofbiz_reseed
if [ "z" = "z$ofbiz_readers" ]; then
ofbiz_readers="seed"
else
ofbiz_readers="seed,$ofbiz_readers"
fi
ofbiz_readers="$(fix_readers "$ofbiz_readers")"
get ofbiz_admin_port ofbiz/admin-port
stop_ofbiz
if [ "z" != "z$ofbiz_reseed" ]; then
echo "Need to modify ofbiz data." 1>&2
configure_ofbiz
fi
dpkg-trigger --no-await ofbiz-start
;;
esac
done
db_stop
exit 0
fi
ofbiz_reseed=""
case "$1" in
(configure|reconfigure)
if [ "$2" ]; then
dpkg-trigger --no-await ofbiz-upgrade
else
dpkg-trigger --no-await ofbiz-install
if ! getent passwd ofbiz 2>/dev/null >/dev/null; then
adduser --quiet --group --no-create-home --system --shell /bin/sh --home /var/lib/ofbiz ofbiz
fi
dpkg-statoverride --update --add ofbiz ofbiz 755 /var/lib/ofbiz
fi
;;
esac
#DEBHELPER#
db_stop
exit