зеркало из https://github.com/mono/xsp.git
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:
Родитель
1e3727fd3d
Коммит
08c6b2fa12
|
@ -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:
|
||||
|
|
|
@ -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 "$*"
|
Загрузка…
Ссылка в новой задаче