2007-10-30 Marek Habersack <mhabersack@novell.com>

* tools/mono-asp-apps/mono-asp-apps: added

svn path=/trunk/xsp/; revision=88440
This commit is contained in:
Marek Habersack 2007-10-30 10:03:06 +00:00
Родитель 1e3727fd3d
Коммит 08c6b2fa12
2 изменённых файлов: 210 добавлений и 0 удалений

Просмотреть файл

@ -1,3 +1,7 @@
2007-10-30 Marek Habersack <mhabersack@novell.com>
* tools/mono-asp-apps/mono-asp-apps: added
2007-10-26 Wade Berrier <wberrier@novell.com>
* configure.in:

206
tools/mono-asp-apps/mono-asp-apps Executable file
Просмотреть файл

@ -0,0 +1,206 @@
#!/bin/bash
ASP_APPS_ROOT=/usr/share/mono/asp.net
ASP_APPS_APPS=$ASP_APPS_ROOT/apps
ASP_APPS_DATA=$ASP_APPS_ROOT/data
XSP_CONFIGS_ROOT=/etc/xsp/2.0
XSP_ENABLED_APPS=$XSP_CONFIGS_ROOT/applications-enabled
XSP_AVAILABLE_APPS=$XSP_CONFIGS_ROOT/applications-available
PG_HBA_LOCATIONS="/var/lib/pgsql/data"
APP_NAME=""
APP_INFO=""
APP_ROOT=""
APP_DATA=""
COMMAND=""
function die ()
{
echo Error executing the script:
echo $*
echo
exit 1
}
function findApplication ()
{
if [ -z "$1" ]; then
die "Missing application name on the command line"
fi
if [ ! -f "$ASP_APPS_DATA/$1/info" -o ! -d "$ASP_APPS_APPS/$1" ]; then
die "Application '$1' not found"
fi
APP_NAME="$1"
APP_DATA="$ASP_APPS_DATA/$1"
APP_INFO="$APP_DATA/info"
APP_ROOT="$ASP_APPS_APPS/$1"
}
function load_app_info ()
{
. "$APP_INFO"
APP_NEEDS_INIT="`echo ${NeedsInit:-false} | tr A-Z a-z`"
APP_INITIALIZED="`echo ${Initialized:-false} | tr A-Z a-z`"
if [ "$COMMAND" != "init" -a "$APP_NEEDS_INIT" = "true" -a "$APP_INITIALIZED" = "false" ]; then
die -e "Application '$APP_NAME' needs to be initialized with command:\n\t/usr/bin/mono-asp-apps init $APP_NAME"
fi
if [ -z "$WebappFile" -o ! -f "$WebappFile" ]; then
die "Missing webapp file for application '$1'"
fi
if [ -z "$Version" ]; then
die "Missing application '$1' version information"
fi
}
function check_postgres_access ()
{
local ok=0
local hbaloc
for l in $PG_HBA_LOCATIONS; do
if [ ! -f "$l/pg_hba.conf" ]; then
continue
fi
hbaloc="$l/pg_hba.conf"
if egrep "^host[[:space:]]+all[[:space:]]+test[[:space:]]+127\.0\.0\.1/32[[:space:]]+md5" "$hbaloc" > /dev/null 2>&1; then
ok=1
break
fi
done
if [ $ok -ne 1 ]; then
if [ -z "$hbaloc" ]; then
cat <<EOF
PostgreSQL configuration does not exist. Typically, it means that you haven't
ran your PostgreSQL RDBMS for the first time yet. Please start the server
process by issuing the following command as root:
/etc/init.d/postgresql start
and then try runing $0 again.
EOF
die Missing PostgreSQL configuration
else
cat <<EOF
Your PostgreSQL configuration at $hbaloc is not ready for this application.
Please add the following code in the first line of the above file:
host all test 127.0.0.1/32 md5
And issue the following command:
/etc/init.d/postgresql restart
EOF
die Invalid PostgreSQL configuration
fi
fi
}
function command_init ()
{
local initfile
load_app_info
if [ "$APP_NEEDS_INIT" = "false" ]; then
exit 0
fi
if [ "$APP_INITIALIZED" = "true" ]; then
exit 0
fi
initfile="$APP_DATA/init"
if [ ! -x "$initfile" ]; then
die "Application '$APP_NAME' requires initialization, but init script '$initfile' is missing"
fi
check_postgres_access
pushd > /dev/null 2>&1
cd "$APP_DATA"
su -c "$initfile" -p postgres
popd > /dev/null 2>&1
sed -e 's/^Initialized="\(.*\)"/Initialized="true"/g' < "$APP_INFO" > "$APP_INFO".new
mv "$APP_INFO".new "$APP_INFO"
}
function command_enable ()
{
load_app_info
ln -sf "$WebappFile" "$XSP_ENABLED_APPS/`basename $WebappFile`"
}
function command_disable ()
{
local linkfile
load_app_info
linkfile="$XSP_ENABLED_APPS/`basename $WebappFile`"
if [ -L "$linkfile" ]; then
rm "$linkfile"
fi
}
function command_start ()
{
load_app_info
export MONO_IOMAP=all
if [ -x "$APP_DATA/start" ]; then
cd "$APP_DATA"
exec "$APP_DATA/start" $*
fi
exec xsp2 --appconfigfile "$WebappFile" $*
}
function command_list ()
{
local appname
local appversion
echo "Installed apps:"
for d in "$ASP_APPS_DATA"/*; do
if [ ! -d "$d" ]; then
continue
fi
if [ ! -f "$d"/info ]; then
continue
fi
appname="`cat \"$d\"/info | grep ^Name= | cut -d '\"' -f 2`"
appversion="`cat \"$d\"/info | grep ^Version= | cut -d '\"' -f 2`"
echo $appname-$appversion
done
}
function show_commands ()
{
cat <<EOF
Available commands:
init
enable
disable
start
list
EOF
exit 1
}
case $1 in
init|enable|disable|start|list) COMMAND="$1" ;;
*) if [ -z "$1" ]; then
show_commands
else
$die "Uknown command: $1"
fi ;;
esac
if [ "$COMMAND" != "list" ]; then
findApplication "$2"
shift 2
else
shift 1
fi
eval command_$COMMAND "$*"