move functions to a common directory to avoid code duplication

This commit is contained in:
Antoine Beaupré 2007-09-09 18:18:19 +00:00
parent a0b2eda9bd
commit 4b68e501bb
3 changed files with 61 additions and 55 deletions

1
.gitattributes vendored
View File

@ -335,6 +335,7 @@ src/Makefile -text
src/basedir_prot.sh -text
src/du.pl -text
src/fixperms.sh -text
src/functions.sh -text
src/mail_add -text
src/mail_del -text
src/mem_add -text

View File

@ -16,66 +16,13 @@ override_f=${override_d}/override_php.conf
extra_paths="/var/alternc/dns/redir:/usr/share/php/:/var/alternc/tmp/:/tmp/"
. /etc/alternc/local.sh
. /usr/lib/alternc/functions.sh
if [ -z "$MYSQL_HOST" ]
then
MYSQL_HOST="localhost"
fi
# imprime le nom d'usager associé au domaine
get_account_by_domain() {
# les admintools ne sont peut-être pas là
if [ -x "/usr/bin/get_account_by_domain" ]
then
# only first field, only first line
/usr/bin/get_account_by_domain "$1" | cut -d\ -f1 | cut -d'
' -f 1
else
# implantons localement ce que nous avons besoin, puisque admintools
# n'est pas là
mysql -h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PASS -D$MYSQL_DATABASE -B -N -e \
'SELECT a.login FROM membres a, sub_domaines b WHERE a.uid = b.compte AND \
CONCAT(IF(sub="", "", CONCAT(sub, ".")), domaine) = "'"$1"'" LIMIT 1;'
fi
}
# add the standard input to a given file, only if not already present
append_no_dupe() {
realfile="$1"
tmpfile=`mktemp`
trap "rm -f $tmpfile; exit 1" 1 2 15
cat > $tmpfile
if [ -r "$realfile" ] &&
(diff -q "$tmpfile" "$realfile" > /dev/null || \
diff -u "$tmpfile" "$realfile" | grep '^ ' | sed 's/^ //' | diff -q - "$tmpfile" > /dev/null)
then
ret=0
else
ret=1
cat "$tmpfile" >> "$realfile"
fi
rm -f "$tmpfile"
return "$ret"
}
add_dom_entry() {
# protect ourselves from interrupts
trap "rm -f ${override_f}.new; exit 1" 1 2 15
# ajouter une entrée, seulement s'il n'y en pas déjà, pour ce domaine
(echo "$1"; [ -r $override_f ] && cat $override_f) | \
sort -u > ${override_f}.new && \
cp ${override_f}.new ${override_f} && \
rm ${override_f}.new
}
# la première lettre de l'avant-dernière partie du domaine (e.g.
# www.alternc.org -> a)
#
# argument: le domaine
# imprime: la lettre
init_dom_letter() {
echo "$1" | awk '{z=split($NF, a, ".") ; print substr(a[z-1], 1, 1)}'
}
echo -n "adding open_base_dir protection for:"
# boucle sur tous les domaines hébergés, ou sur les arguments de la
# ligne de commande

58
src/functions.sh Normal file
View File

@ -0,0 +1,58 @@
# some miscellaneous shell functions
# imprime le nom d'usager associé au domaine
get_account_by_domain() {
# les admintools ne sont peut-être pas là
if [ -x "/usr/bin/get_account_by_domain" ]
then
# only first field, only first line
/usr/bin/get_account_by_domain "$1" | cut -d\ -f1 | cut -d'
' -f 1
else
# implantons localement ce que nous avons besoin, puisque admintools
# n'est pas là
mysql -h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PASS -D$MYSQL_DATABASE -B -N -e \
'SELECT a.login FROM membres a, sub_domaines b WHERE a.uid = b.compte AND \
CONCAT(IF(sub="", "", CONCAT(sub, ".")), domaine) = "'"$1"'" LIMIT 1;'
fi
}
# add the standard input to a given file, only if not already present
append_no_dupe() {
realfile="$1"
tmpfile=`mktemp`
trap "rm -f $tmpfile; exit 1" 1 2 15
cat > $tmpfile
if [ -r "$realfile" ] &&
(diff -q "$tmpfile" "$realfile" > /dev/null || \
diff -u "$tmpfile" "$realfile" | grep '^ ' | sed 's/^ //' | diff -q - "$tmpfile" > /dev/null)
then
ret=0
else
ret=1
cat "$tmpfile" >> "$realfile"
fi
rm -f "$tmpfile"
return "$ret"
}
add_dom_entry() {
# protect ourselves from interrupts
trap "rm -f ${override_f}.new; exit 1" 1 2 15
# ajouter une entrée, seulement s'il n'y en pas déjà, pour ce domaine
(echo "$1"; [ -r $override_f ] && cat $override_f) | \
sort -u > ${override_f}.new && \
cp ${override_f}.new ${override_f} && \
rm ${override_f}.new
}
# la première lettre de l'avant-dernière partie du domaine (e.g.
# www.alternc.org -> a)
#
# argument: le domaine
# imprime: la lettre
init_dom_letter() {
echo "$1" | awk '{z=split($NF, a, ".") ; print substr(a[z-1], 1, 1)}'
}