psa-api-rpc-9.0.demo-cos4.build90081120.18 T > D
, 0 @ 85a4aff8db6b4a316b06f4de0ffc748ee46444b2 }=.G[
OVNV > ; ? d - E 7 = D x Q z@ Q z Q
{ Q | Q Q
h Q Q A Q Q P p B ( > @ B G Q H Q I L Q X Y Z [ \ Q ] 0 Q ^ b d e f k l t Q u d Q v w p Q x Q y >C psa-api-rpc 9.0.demo cos4.build90081120.18 Plesk API RPC interface Plesk API provides the Plesk management interface for applications.
This package provides the HTTP RPC XML interface for controlling Plesk. I%[bcos42.plesk.ru Parallels Commercial license Tools http://www.parallels.com/products/plesk linux noarch #!/bin/sh
#
# Copyright (c) 1999-2008 Parallels
# All rights reserved
#
#
# Plesk script
#
remove_tmp_state()
{
if [ -d "/tmp/.state" ]; then
rm -Rf "/tmp/.state" >> $product_log 2>&1
fi
}
true apache_status_linux_debian apache_stop_BSD
apache_status_linux_debian()
{
get_pid "/usr/sbin/apache2" false
local pid=$common_var
if test "$pid" -ne 1; then
# running
return 0
fi
return 1
}
apache_stop_BSD()
{
local apache_script
if [ "$std_to_pkg" -ne 0 ]; then
apache_script="$PRODUCT_ROOT_D/rc.d/httpd"
else
apache_script="$PRODUCT_RC_D/$apache_service_name"
fi
$apache_script stop 2>/dev/null
}
api_rpc_create_persistent_tables()
{
inten="create persistent database storage"
echo_try $inten
$mysql < ${PRODUCT_ROOT_D}/etc/api-rpc/api-rpc_db.sql
if [ "X$?" = "X0" ]; then
suc
else
warn "database initialization"
fi
}
#
# Upgrade triggers should be clever enough to recognize necessity of upgrade
#
upgrade_api_75()
{
if db_test_table secret_keys; then
# secret_keys was created - at least 8.0 version
return
fi
$mysql < ${PRODUCT_ROOT_D}/etc/api-rpc/api-rpc_db_upgrade_750.sql
}
upgrade_api_800()
{
if db_test_column_enum_value exp_event event_type exceeded; then
# 'exceeded' was added in 8.0.1
return
fi
$mysql < ${PRODUCT_ROOT_D}/etc/api-rpc/api-rpc_db_upgrade_800.sql
}
upgrade_api_801()
{
if db_test_column_enum_value exp_event obj_class domain_alias; then
# domain_alias was added in 8.0.1 update
return
fi
$mysql < ${PRODUCT_ROOT_D}/etc/api-rpc/api-rpc_db_upgrade_801.sql
}
upgrade_api_830()
{
$mysql < ${PRODUCT_ROOT_D}/etc/api-rpc/api-rpc_db_upgrade_830.sql
}
upgrade_api_840()
{
$mysql < ${PRODUCT_ROOT_D}/etc/api-rpc/api-rpc_db_upgrade_840.sql
}
upgrade_api_860()
{
$mysql < ${PRODUCT_ROOT_D}/etc/api-rpc/api-rpc_db_upgrade_860.sql
}
#
# End of upgrade triggers
#
api_rpc_upgrade_persistent_tables()
{
inten="upgrade persistent database storage"
echo_try $inten
# As we don't know previous version of the package (for all packaging systems)
# all available database upgrade scripts should be executed.
upgrade_api_75 && \
upgrade_api_800 && \
upgrade_api_801 && \
upgrade_api_830 && \
upgrade_api_840 && \
upgrade_api_860
if [ "X$?" = "X0" ]; then
suc
else
warn "database upgrade"
fi
}
# db_test test_query awk_script
# Runs test_query and processes it with awk_script. If the output is
# not empty, return 0, otherwise return 1. Hint: supply '1' for
# awk_script to test just for the presence of any output.
db_test()
{
local any_db=
eval `sh_get_args '--any-db) any_db=yes;;'`
local test_query="$1"
local awk_script="$2"
if [ -n "$any_db" ]; then
local output="`mysql_raw_anydb -e \"$test_query\" 2>>\"$product_log\"`"
else
local output="`mysql_raw -e \"$test_query\" 2>>\"$product_log\"`"
fi
local status=$?
if [ "$status" -ne 0 ]; then
p_echo "$output"
die "run the following SQL query: $1"
fi
echo -n "$output" | awk -F '\t' -- "$awk_script" | test `wc -l` -ne 0
}
# db_test_table table
# Returns 0 if the table exists
db_test_table()
{
local table="$1"
db_test "SHOW TABLES LIKE '$table'" 1
}
# db_test_column_enum_value
# Returns O if table.column contains value in enum description
db_test_column_enum_value()
{
local table="$1"
local column="$2"
local value="$3"
db_test "DESC \`$table\` \`$column\`" "/[\'\"]$value[\'\"]/ { print 1 }"
}
db_generate_guids_82()
{
make_guids_script="$PRODUCT_ROOT_D/admin/plib/make_guids.php"
if [ -f "$make_guids_script" ]; then
$PRODUCT_ROOT_D/bin/sw-engine-pleskrun "$make_guids_script" >> "$product_log" 2>&1
fi
}
proftpd_super_server_config()
{
local action="$1"
case "$superserver" in
inetd)
ftp_rec="ftp stream tcp nowait root $PROFTPD_ROOT/sbin/proftpd proftpd -c $PROFTPD_ETC_D/proftpd.conf"
;;
xinetd)
ftp_rec="service ftp
{
socket_type = stream
protocol = tcp
wait = no
disable = no
user = root
instances = UNLIMITED
server = $PROFTPD_ROOT/sbin/proftpd
server_args = -c $PROFTPD_ETC_D/proftpd.conf
}"
;;
*)
die "Super server name unknown"
;;
esac
super_server_action "$action" ftp "$ftp_rec"
}
# Keep for compatibility issue
check_mysql()
{
mysql_test_connection
}
# Usage: pleskrc
pleskrc()
{
[ 2 -le $# ] || die "Not enough arguments"
local service_name=$1
local action=$2
local ret=0
local inten
local service_script
shift
shift
# Now check redefined functions
if test "$machine" = "linux" && is_function "${service_name}_${action}_${machine}_${linux_distr}"; then
"${service_name}_${action}_${machine}_${linux_distr}" $@
return $?
elif is_function "${service_name}_${action}_${machine}"; then
"${service_name}_${action}_${machine}" $@
return $?
elif is_function "${service_name}_${action}"; then
"${service_name}_${action}" $@
return $?
fi
# Not redefined - call default action
eval "service=\$${service_name}_service"
[ -n "$service" ] || die "Empty service name for $service_name"
inten="$action service $service"
[ "$action" = "status" -o "$action" = "exists" ] || echo_try "$inten"
if [ -x "$SYSTEM_RC_D/$service" ]; then
service_script="$SYSTEM_RC_D/$service"
elif [ ! -z ${PRODUCT_RC_D} -a -x "$PRODUCT_RC_D/$service" ]; then
service_script="$PRODUCT_RC_D/$service"
fi
if [ "$action" = "exists" ]; then
[ -n "$service_script" ] && return 0 || return 1
else
[ -z "$service_script" ] && die "Unable to handle $service"
fi
if [ -x "/usr/sbin/invoke-rc.d" ]; then
action_cmd="/usr/sbin/invoke-rc.d $service"
elif [ -x "/sbin/service" ]; then
action_cmd="/sbin/service $service"
elif [ -n ${service_script} ]; then
action_cmd="$service_script"
fi
case "$action" in
start)
pleskrc $service_name status || $action_cmd $action $@
;;
stop)
if pleskrc $service_name status; then
$action_cmd $action $@
else
true
fi
;;
restart)
if pleskrc $service_name status; then
$action_cmd "restart" $@
else
$action_cmd "start" $@
fi
;;
reload)
if pleskrc $service_name status; then
$action_cmd "reload" $@
else
true
fi
;;
status)
$action_cmd "status"
;;
*)
$action_cmd $action $@
;;
esac
ret="$?"
if [ "$action" != "status" ]; then
[ "$ret" -eq 0 ] && suc || warn $inten
fi
return $ret
}
is_function()
{
local type_output="`LANG=C LC_ALL=C LC_MESSAGES=C type \"$1\" 2>/dev/null | head -n 1`"
case "$type_output" in
*function)
return 0
;;
*)
return 1
;;
esac
}
p_echo()
{
[ -z "$product_log" ] || echo "$@" >> "$product_log" 2>&1
echo "$@"
}
pnnl_echo()
{
echo -n "$*" >> "$product_log" 2>&1
echo -n "$*"
}
die()
{
PACKAGE_SCRIPT_FAILED="$*"
if [ "X$trigger_uninstall" != "X1" ]; then
printf "\a\a"
p_echo
p_echo "ERROR while trying to $*"
echo "Check the error reason(see log file: ${product_log}), fix and try again"
p_echo
if [ "X$do_patch" != "X1" -a "X$do_reconfigure" != "X1" ]; then
p_echo "Aborting..."
p_echo
fi
fi
smart_undo_install
selinux_close
exit 1
}
warn()
{
local inten
inten="$1"
p_echo
p_echo "WARNING!"
pnnl_echo "During the $inten found some problems"
echo "(see log file: ${product_log})"
p_echo
p_echo "Continue..."
p_echo
}
echo_try()
{
msg="$*"
pnnl_echo " Trying to $msg... "
}
suc()
{
p_echo "done"
}
mk_backup()
{
target="$1"
dup="$2"
opts="$3"
if [ -L "$target" ]; then
rm "$target"
elif [ -$opts "$target" ]; then
if [ ! -$opts "$target.$product_suffo" ]; then
case "$dup" in
mv)
mv -f $target $target.$product_suffo || die "mv -f $target $target.$product_suff"
;;
cp)
cp -fp $target $target.$product_suffo || die "cp -fp $target $target.$product_suff"
;;
*)
p_echo " mk_backup: wrong option -- must be 'cp' or 'mv'"
die "mk_backup"
;;
esac
else
case "$dup" in
mv)
mv -f $target $target.$product_suff || die "mv -f $target $target.$product_suff"
;;
cp)
cp -fp $target $target.$product_suff || die "cp -fp $target $target.$product_suff"
;;
*)
p_echo " mk_backup: wrong option -- must be 'cp' or 'mv'"
die "mk_backup"
;;
esac
fi
else
case "$opts" in
f|d)
;;
*)
p_echo " mk_backup: wrong option -- must be 'f' or 'd'"
die "mk_backup"
;;
esac
fi
}
detect_vz()
{
local vzcheck_file
PLESK_VZ=0
vzcheck_file="/proc/self/status"
if [ ! -f ${vzcheck_file} ]; then
return 1;
fi
grep -q -E '^envID\:[[:space:]]*([[:digit:]]+)$' < ${vzcheck_file} >/dev/null 2>&1
if [ $? -eq 0 ]; then
PLESK_VZ=1
return 0;
fi
return 1;
}
call_optional_function()
{
export LANG=C LC_MESSAGES=C LC_ALL=C
local type_output="`type \"$1\" 2>/dev/null | head -n 1`"
case "$type_output" in
*function)
"$@"
;;
*)
return 0
;;
esac
}
sh_get_args()
{
echo 'while true; do case "$1" in '"$1"'*) break;; esac; shift; done'
}
sequence()
{
if type seq >/dev/null 2>&1; then
seq $*
elif type jot >/dev/null 2>&1; then
jot $*
else
die "Unable to find seq or jot command"
fi
}
superserver_reconfig()
{
pleskrc superserver reload
}
configure_xinetd_compat()
{
local inten="configure xinetd compatibility mode with $superserver"
if [ "$linux_distr" = "debian" -o "$linux_distr" = "ubuntu" ]; then
[ "$superserver_service" = "xinetd" ] || return 1
[ -f "/etc/default/xinetd" ] || return 1
grep -q 'XINETD_OPTS=.*-inetd_compat' /etc/default/xinetd && return 1
echo_try $inten
if ! grep -q '^\s*XINETD_OPTS' /etc/default/xinetd; then
echo 'XINETD_OPTS="-inetd_compat"' >>/etc/default/xinetd
suc
return 0
fi
eval `grep '^\s*XINETD_OPTS' /etc/default/xinetd`
XINETD_OPTS="$XINETD_OPTS -inetd_compat"
local tmp_file=`mktemp /tmp/xinetdXXXXXX`
sed -e "s/XINETD_OPTS.*/XINETD_OPTS=\"$XINETD_OPTS\"/g" /etc/default/xinetd > $tmp_file && mv -f $tmp_file /etc/default/xinetd
suc
return 0
fi
return 1
}
super_server_action()
{
local in out
local action="$1"
local service="$2"
local template="$3"
inten="$action $service service record for $superserver_service daemon"
case "$action" in
remove) ;;
register)
[ -z "$template" ] && die "Template for super server $action was not defined"
;;
comment|disable)
;;
configure)
case "$superserver_mode" in
native)
register_service $superserver_service defaults defaults
;;
compat)
configure_xinetd_compat && pleskrc superserver restart
;;
*)
die "Mode for $superserver_service was not defined"
;;
esac
return 0
;;
*)
die "Some arguments was not defined or defined incorrect for action with super server"
;;
esac
case "$superserver" in
inetd)
super_server_modify_inetd "$service" "$action" "$template"
;;
xinetd)
super_server_modify_xinetd "$service" "$action" "$template"
;;
*)
die "Unable to define super server type"
;;
esac
if [ $? -ne 0 ]; then
die $inten
fi
}
super_server_modify_inetd()
{
local service="$1"
local action="$2"
local template="$3"
case "$action" in
comment|disable)
grep -q "^$service[[:space:]]" $superserver_conf || return 0
sed -e "s|^$service|#$service|g" < "$superserver_conf" > "$superserver_conf.tmp" && mv -f "$superserver_conf.tmp" "$superserver_conf" || return 1
;;
remove)
if [ -x /usr/sbin/update-inetd ]; then
/usr/sbin/update-inetd --enable "$service"
/usr/sbin/update-inetd --remove "$service"
else
grep -q "^$service[[:space:]]" $superserver_conf || return 0
sed -e "s|^$service[[:space:]].*||g" < "$superserver_conf" > "$superserver_conf.tmp" && mv -f "$superserver_conf.tmp" "$superserver_conf" || return 1
fi
;;
register)
if [ -x /usr/sbin/update-inetd ]; then
/usr/sbin/update-inetd --enable "$service"
/usr/sbin/update-inetd --remove "$service"
/usr/sbin/update-inetd --add "$template"
else
egrep -q "$template" $superserver_conf
if [ "$?" -ne "0" ]; then
super_server_modify_inetd comment $service && echo "$template" >> $superserver_conf || return 1
fi
fi
;;
esac
return 0
}
super_server_modify_xinetd()
{
local file
local service="$1"
local action="$2"
local template="$3"
for file in $superserver_dir/*; do
grep -q "$service" $file 1>$product_log 2>&1 || continue
case "$action" in
remove)
awk "/^[[:space:]]*(#|[[:space:]])*service[[:space:]]+$service($|[[:space:]]+)/,/.*}.*/ {next;} {print}
" <$file >$file.tmp && mv -f $file.tmp $file || return 1
;;
comment)
awk "/^[[:space:]]*service[[:space:]]+$service($|[[:space:]]+)/,/.*}.*/ { print \"#\"\$0; next; }
{print}
" < $file > $file.tmp && mv -f $file.tmp $file || return 1
;;
esac
done
case "$action" in
register)
echo "$template" > "$superserver_dir/${service}_psa" || return 1
;;
disable)
[ -f "$superserver_dir/${service}_psa" ] && mv -f "$superserver_dir/${service}_psa" "$superserver_dir/${service}.psa"
;;
esac
return 0
}
true superserver_status_linux_debian
superserver_status_linux_debian()
{
get_pid "/usr/sbin/xinetd" false
local pid=$common_var
if test "$pid" -ne 1; then
# running
return 0
fi
return 1
}
# here goes functions
package_script_begin_rpm()
{
package_script_begin
}
package_script_end_rpm()
{
package_script_end
}
package_script_begin()
{
local title
if [ "X$process" = "X" ]; then
if [ "X$do_reconfigure" = "X1" ]; then
process="reconfiguration"
elif [ "X$do_upgrade" = "X1" ]; then
process="upgrade"
else
process="installing"
fi
fi
product_log="/tmp/${PACKAGE_NAME}_${PACKAGE_VERSION}_${PACKAGE_RELEASE}_${process}.`date +%y%m%d.%H.%M`.log"
product_problems_log="/tmp/${PACKAGE_NAME}_${PACKAGE_VERSION}_${PACKAGE_RELEASE}_problems.`date +%y%m%d.%H.%M`.log"
title="`package_script_log_title`"
echo "START $title" >>"$product_log" \
&& echo "START $title" >>"$product_problems_log" \
&& chmod 600 "$product_log" "$product_problems_log" \
|| {
echo "Cannot write installation log $product_log, $product_problems_log" >&2
exit 1
}
problems_occured=0
product_default_conf
initial_conf
set_common_params
read_conf
}
package_script_end()
{
local title
title="`package_script_log_title`"
packagemng_set_dirty_flag
echo "STOP $title" >>"$product_log"
echo "STOP $title" >>"$product_problems_log"
}
package_script_log_title()
{
local stage
case "$do_upgrade" in
0) stage="installing";;
1) stage="upgrading";;
*) stage="installing";;
esac
if [ -n "$PACKAGE_DEB_ACTION" ]; then
stage="$stage (deb action: $PACKAGE_DEB_ACTION)"
fi
echo "$PACKAGE_NAME-$PACKAGE_VERSION-$PACKAGE_RELEASE $stage AT `date`"
}
# NAME VERSION RELEASE [DEB_ACTION]
package_script_call_main_function()
{
package_script_call_main_function_begin "$@"
for package_func in $1; do
if ! call_optional_function "$package_func"; then
break
fi
done
package_script_end_handler ok
}
package_script_call_main_function_begin()
{
PACKAGE_NAME="$2"
PACKAGE_VERSION="$3"
PACKAGE_RELEASE="$4"
PACKAGE_DEB_ACTION="$5"
package_script_begin_this_system
trap "package_script_end_handler error" HUP PIPE INT QUIT TERM EXIT
}
package_script_end_handler()
{
case "$1" in
error)
if [ -z "$PACKAGE_SCRIPT_FAILED" ]; then
PACKAGE_SCRIPT_FAILED="Package script failed"
fi
;;
ok) PACKAGE_SCRIPT_FAILED=
;;
esac
trap - EXIT
package_script_end_this_system
}
package_script_begin_this_system()
{
package_script_begin_rpm
}
package_script_end_this_system()
{
package_script_end_rpm
}
get_pid()
{
local i
local ex_f="$1"
local opt="$2"
local owner="$3"
local min_num="1"
# Use pidof by default, bug 121868, except for FreeBSD - 140182
if type pidof >/dev/null 2>&1 && [ "$os" != "BSD" ]; then
for pid in `pidof -o $$ -o $PPID -o %PPID -x $ex_f`; do
# Check for owner
[ "$opt" = "true" -a "$owner" != "`ps -p $pid -o ruser=`" ] && continue
min_num=$pid
break
done
common_var=$min_num
return $min_num
fi
case "$opt" in
false)
for i in `$ps_long | grep $ex_f | grep -v grep | grep -v httpsdctl | grep -v apachectl | awk '{print $2}' -`; do
min_num=$i
break
done
;;
true)
for i in `$ps_long | grep $ex_f | grep -v grep | grep -v httpsdctl | grep -v apachectl | grep "$owner" | awk '{print $2}' -`; do
min_num=$i
break
done
;;
*)
p_echo "get_pid: wrong parameter"
die "get_pid $ex_f $opt $owner"
;;
esac
common_var=$min_num
return $min_num
}
kill_pids()
{
ex_f="$1"
owner="$2"
for i in `$ps_long | grep $ex_f | grep -v grep | grep -v httpsdctl | grep -v apachectl | grep $owner | awk '{print $2}' -`; do
if [ $i -gt 1 ]; then
$K_TERM $i >> $product_log 2>&1
fi
done
}
delete_user()
{
local rm_user
rm_user="$1"
# if it is mailman user, remove its crontab from system
if [ "X${rm_user}" = "X${mailman_user}" ]; then
inten="remove crontab of ${rm_user}"
echo "y" | $crontab -u "${mailman_user}" -r >> $product_log 2>&1 || die "$inten"
fi
inten="remove user $rm_user"
echo_try "$inten"
case "$machine" in
BSD)
echo "y" | pw userdel $rm_user>> $product_log 2>&1 && suc
pwd_mkdb /etc/master.passwd >> $product_log 2>&1
;;
linux|solaris)
userdel $rm_user>> $product_log 2>&1 && suc || die "$inten"
;;
Darwin)
niutil -destroy / /users/"$rm_user" >> $product_log 2>&1 && suc || die "$inten"
reload_darwin_netinfo
;;
esac
}
delete_group()
{
local rm_group
rm_group="$1"
inten="remove group $rm_group"
echo_try "$inten"
case "$machine" in
BSD)
pw groupdel $rm_group>> $product_log 2>&1
pwd_mkdb /etc/master.passwd >> $product_log 2>&1
;;
linux|solaris)
mk_backup "/etc/group" cp f
if [ -f "/etc/group" ]; then
sed -e "/$rm_group/d" < /etc/group > /etc/group.tmp || die $inten
mv -f /etc/group.tmp /etc/group >> $product_log 2>&1
if [ "$?" -ne 0 ]; then
rsr_backup "/etc/group" cp f
die $inten
fi
fi
;;
Darwin)
niutil -destroy / /groups/"$rm_group" >> $product_log 2>&1 && suc || die "$inten"
reload_darwin_netinfo
;;
esac
suc
}
reload_darwin_netinfo()
{
if [ -f /var/run/memberd.pid ]; then
kill -HUP `cat /var/run/memberd.pid`
else
SystemStarter start memberd
fi
return 0
}
initial_conf()
{
DEMO_VERSION="yes"
PRODNAME="psa"
PRODUCT_NAME="Plesk"
product_full="Plesk"
product=${PRODNAME}
PRODUCT_FULL_NAME="Plesk"
product_etc="/etc/${PRODNAME}"
prod_conf_t="/etc/psa/psa.conf"
prodkey="$product_etc/$PRODNAME.key"
minimal_changes="0"
MYSQL_VERS="4.1.18"
POSTGRESQL_VERS="7.4.11"
EXTERNAL_PACKAGES=""
EXTERNAL_PACKAGES_DIR=""
BUILDER_UID="10007"
PERL5LIB=/usr/local/psa/lib/perl5/site_perl/5.8.5:/usr/local/psa/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi
export PERL5LIB
support_contact="http://www.parallels.com/support"
sales_email="sales@parallels.com"
product_version="9.0.demo"
product_db_version="090demo"
product_build="90081120.18"
conceived_os_vendor=CentOS
conceived_os_version="4.2"
osrels="centos4.2"
# This variable contains all versions, which is supported by
# cumulative upgrade
known_product_versions="60 70 71 75 80 81 82 83 84 86 90"
prev_product="plesk"
prev_clients_group="${prev_product}cln"
clients_group="${product}cln"
clients_GID=10001
services_group="${product}serv"
services_GID=10003
product_suff="saved_by_${product}".`date "+%m.%d;%H:%M"`
product_suffo="saved_by_${product}"
PREV_PRODUCT_ROOT_D="/usr/local/${prev_product}"
# plesk default password
if [ "X$DEMO_VERSION" = "Xyes" ]; then
PRODUCT_DEFAULT_PASSWORD="plesk"
else
PRODUCT_DEFAULT_PASSWORD="setup"
fi
}
read_conf()
{
[ -n "$prod_conf_t" ] || prod_conf_t=/etc/psa/psa.conf
if [ -s $prod_conf_t ]; then
tmp_var=`perl -e 'undef $/; $_=<>; s/#.*$//gm;
s/^\s*(\S+)\s*/$1=/mg;
print' $prod_conf_t`
eval $tmp_var
else
if [ "X$do_upgrade" = "X1" ]; then
[ 0$ignore_miss_conf -ne 1 ] && p_echo "Unable to find product configuration file: $prod_conf_t"
return 1
fi
fi
return 0
}
get_my_cnf_param()
{
local my_cnf cnf_files
cnf_files="/etc/my.cnf /etc/mysql/my.cnf /var/db/mysql/my.cnf"
for my_cnf in ${cnf_files}; do
if [ -f ${my_cnf} ]; then
break
fi
done
[ -f ${my_cnf} ] && r=`perl -e '$p="'"$1"'";
undef $/; $_=<>; s/#.*$//gm;
/\[mysqld\](.*?)\[/sg;
$_=substr($1, rindex $1,"$p") and
/$p\s*=(.*)/m and print $1
' ${my_cnf}`
echo $r
}
get_mysql_socket()
{
mysql_socket="/var/lib/mysql/mysql.sock"
local mysqlsock=`get_my_cnf_param socket`
local MYSQL_SOCKETS="/var/lib/mysql/mysql.sock /tmp/mysql.sock /var/run/mysqld/mysqld.sock"
for i in $mysql_socket $mysqlsock $MYSQL_SOCKETS; do
if [ -S "$i" ]; then
MYSQL_UNIX_PORT=$i
export MYSQL_UNIX_PORT
mysql_socket="$i"
break
fi
done
}
#default values
product_default_conf()
{
PRODUCT_ROOT_D=/usr/local/psa
PRODUCT_RC_D=/etc/init.d
PRODUCT_ETC_D=/usr/local/psa/etc
HTTPD_VHOSTS_D=/var/www/vhosts
HTTPD_CONF_D=/etc/httpd/conf
HTTPD_INCLUDE_D=/etc/httpd/conf.d
HTTPD_BIN_D=/usr/bin
HTTPD_LOG_D=/var/log/httpd
HTTPD_SERVICE=httpd
QMAIL_ROOT_D=/var/qmail
PLESK_MAILNAMES_D=/var/qmail/mailnames
RBLSMTPD=/usr/sbin/rblsmtpd
COURIER_IMAP_ROOT_D=/
FTPD_CONF=/etc/proftpd.conf
FTPD_CONF_INC=/etc/proftpd.include
FTPD_BIN_D=/usr/bin
FTPD_VAR_D=/var/run/proftpd
FTPD_SCOREBOARD=/var/run/proftpd/scoreboard
NAMED_RUN_ROOT_D=/var/named/run-root
NAMED_OPTIONS_CONF=
NAMED_ZONES_CONF=
WEB_STAT=/usr/bin/webalizer
LOGROTATE=/usr/local/psa/logrotate/sbin/logrotate
MYSQL_VAR_D=/var/lib/mysql
MYSQL_BIN_D=/usr/bin
PGSQL_DATA_D=/var/lib/pgsql/data
PGSQL_BIN_D=/usr/bin
DUMP_D=/var/lib/psa/dumps
MAILMAN_ROOT_D=/usr/lib/mailman
MAILMAN_VAR_D=/var/lib/mailman
PYTHON_BIN=/usr/bin/python2.3
CATALINA_HOME=/usr/share/tomcat5
DRWEB_ROOT_D=/opt/drweb
DRWEB_ETC_D=/etc/drweb
GPG_BIN=/usr/bin/gpg
TAR_BIN=/bin/tar
AWSTATS_ETC_D=/etc/awstats
AWSTATS_BIN_D=/var/www/cgi-bin/awstats
AWSTATS_TOOLS_D=/usr/share/awstats
AWSTATS_DOC_D=/var/www/html/awstats
OPENSSL_BIN=/usr/bin/openssl
LIB_SSL_PATH=/lib/libssl.so
LIB_CRYPTO_PATH=/lib/libcrypto.so
CLIENT_PHP_BIN=/usr/local/psa/bin/php-cli
CGI_PHP_BIN=dynamic
}
# Warning! use this function only for Linux not for FreeBSD
# This function tries to register service in different ways
# call register_service qmail priority levels_start levels_stop
# Only first parameter is necessessary
register_service_linux(){
local name=$1
local levels_start=$2
local levels_stop=$3
local priority=$4
local updatercd="/usr/sbin/update-rc.d"
local chkconfig="/sbin/chkconfig"
local insserv="/sbin/insserv"
if [ -z "$name" ]; then
return 0
fi
[ -z "$priority" ] && priority=20
local inten="register service $name"
echo_try $inten
if [ -x "$updatercd" ]; then
p_echo " using $updatercd"
if [ "X$levels_start" != "Xdefaults" -a -n "$levels_start" ]; then
start="start 20 $levels_start ."
fi
if [ "X$levels_stop" != "Xdefaults" -a -n "$levels_stop" ]; then
stop="stop 20 $levels_stop ."
fi
if [ -z "$start$stop" ]; then
$updatercd $name defaults 20 || warn $inten
else
$updatercd $name $start $stop || warn $inten
fi
elif [ -x "$insserv" ]; then
p_echo " using $insserv"
$insserv -f $name >/dev/null 2>&1 || warn $inten
elif [ -x "$chkconfig" ]; then
p_echo " using $chkconfig"
$chkconfig --add $name || warn $inten
if [ "X$levels_start" != "Xdefaults" -a -n "$levels_start" ]; then
$chkconfig --level `echo $levels_start | tr -d ' '` $name on || warn $inten
fi
if [ "X$levels_start" != "Xdefaults" -a -n "$levels_stop" ]; then
$chkconfig --level `echo $levels_stop | tr -d ' '` $name off || warn $inten
fi
else
die "Unable to find suitable application for register: $updatercd, $chkconfig or $insserv"
fi
suc
}
#Need for register/unregister services into /etc/rc.conf for BSD OSes.
#Create or change strings such as service_option_variable="variable"
rc_service()
{
local service="$1"
local option="$2"
local variable="$3"
local comment="$4"
local config="/etc/rc.conf"
if [ "X$variable" = "Xdefault" ]; then
remove_option_string "${service}_${option}" "$config"
return 0
fi
if [ ! -f /etc/rc.conf ]; then
die 'File /etc/rc.conf not found!'
fi
if [ "X$service" = "X" -o "X$option" = "X" -o "X$variable" = "X" ]; then
die
fi
local flag="`grep "${service}_${option}" $config`"
if [ "X$flag" = "X" ]; then
if [ "X$comment" = "Xyes" ]; then
echo "#Option for $service created by Plesk installer." >> $config
fi
echo "${service}_${option}=\"${variable}\"" >> $config || die
else
sed -i "" -e 's|\('"${service}_${option}"'.*=\"\).*|\1'"${variable}"'\"|' $config || die
fi
return 0
}
register_service()
{
register_service_linux "$@"
}
remove_option_string()
{
#using: remove_option_string