diff options
-rw-r--r-- | trunk/lib/common.sh | 40 | ||||
-rwxr-xr-x | trunk/src/jail-commit | 6 | ||||
-rwxr-xr-x | trunk/src/jail-update | 63 | ||||
-rwxr-xr-x | trunk/src/mkjail | 38 | ||||
-rwxr-xr-x | trunk/src/templatepkg | 13 |
5 files changed, 118 insertions, 42 deletions
diff --git a/trunk/lib/common.sh b/trunk/lib/common.sh index d0fde3c..5785223 100644 --- a/trunk/lib/common.sh +++ b/trunk/lib/common.sh @@ -334,7 +334,7 @@ function search_default_template { function search_template { # determine the template to be used - # usage: <search-template> <template-name> [--new | --update] + # usage: search-template <template-name> [--new | --update] # # templates can be stored either on @@ -409,3 +409,41 @@ function get_group { } +function copy_template_files { + + # copy template files into jail + # usage: copy_template_files <jail-path> + + if [ -d "$1" ]; then + echo "$BASENAME: copying template files..." + if [ -d "$TEMPLATE_BASE.d" ]; then + if [ "$TEMPLATES_UNDER_SVN" == "1" ]; then + rsync -av --exclude=.svn $TEMPLATE_BASE.d/ $JAIL_ROOT/$server/ + else + rsync -av $TEMPLATE_BASE.d/ $JAIL_ROOT/$server/ + fi + fi + fi + +} + +function set_jail_perms { + + # set template file permissions under a jail + # usage: set_jail_perms <jail-path> + + if [ -s "$TEMPLATE_BASE.perms" ]; then + cat $TEMPLATE_BASE.perms | while read entry; do + file="`echo $entry | cut -d ";" -f 1`" + if [ -a "$TEMPLATE_BASE.d/$file" ] && [ -a "$1/$file" ]; then + owner="`echo entry | cut -d ";" -f 2`" + group="`echo entry | cut -d ";" -f 3`" + perms="`echo entry | cut -d ";" -f 4`" + chmod $perms $1/$file + chown $owner:$group $1/$file + fi + done + fi + +} + diff --git a/trunk/src/jail-commit b/trunk/src/jail-commit index 8de547c..d6e18f3 100755 --- a/trunk/src/jail-commit +++ b/trunk/src/jail-commit @@ -1,13 +1,13 @@ #!/bin/bash # -# jail-update: update config files from a jail to a template +# jail-commit: update config files from a jail to a template # feedback: rhatto@riseup.net | gpl # -# Jail-update is free software; you can redistribute it and/or modify it under the +# Jail-commit is free software; you can redistribute it and/or modify it under the # terms of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or any later version. # -# Jail-update is distributed in the hope that it will be useful, but WITHOUT ANY +# Jail-commit is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU General Public License for more details. # diff --git a/trunk/src/jail-update b/trunk/src/jail-update new file mode 100755 index 0000000..09d1555 --- /dev/null +++ b/trunk/src/jail-update @@ -0,0 +1,63 @@ +#!/bin/bash +# +# jail-update: update config files from a jail to a template +# feedback: rhatto@riseup.net | gpl +# +# Jail-update is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or any later version. +# +# Jail-update is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 59 Temple +# Place - Suite 330, Boston, MA 02111-1307, USA +# + +COMMON="/usr/libexec/simplepkg/common.sh" +BASENAME="`basename $0`" + +if [ -f "$COMMON" ]; then + source $COMMON +else + echo "error: file $COMMON found, check your $BASENAME installation" + exit 1 +fi + +function usage { + + echo $BASENAME: update a jail configuration from a template + echo usage: $BASENAME <jail-path> [template] + +} + +if [ -z "$1" ]; then + usage + exit 1 +fi + +if [ -z "$2" ]; then + template_name="`basename $1`" +else + template_name="$2" +fi + +search_template `basename $1` --update + +if [ "$?" != "0" ]; then + exit 1 +fi + +if [ -d "$TEMPLATE_BASE.d" ]; then + true +fi + +if [ -s "$TEMPLATE_BASE.perms" ]; then + +fi + +copy_template_files $1 +set_jail_perms $1 + diff --git a/trunk/src/mkjail b/trunk/src/mkjail index 14b50c9..37bb4ba 100755 --- a/trunk/src/mkjail +++ b/trunk/src/mkjail @@ -34,44 +34,6 @@ function usage { } -function copy_template_files { - - # copy template files into jail - # usage: copy_template_files <jail-path> - - if [ -d "$1" ]; then - echo "$BASENAME: copying template files..." - if [ -d "$TEMPLATE_BASE.d" ]; then - if [ "$TEMPLATES_UNDER_SVN" == "1" ]; then - rsync -av --exclude=.svn $TEMPLATE_BASE.d/ $JAIL_ROOT/$server/ - else - rsync -av $TEMPLATE_BASE.d/ $JAIL_ROOT/$server/ - fi - fi - fi - -} - -function set_jail_perms { - - # set template file permissions under a jail - # usage: set_jail_perms <jail-path> - - if [ -s "$TEMPLATE_BASE.perms" ]; then - cat $TEMPLATE_BASE.perms | while read entry; do - file="`echo $entry | cut -d ";" -f 1`" - if [ -a "$TEMPLATE_BASE.d/$file" ] && [ -a "$1/$file" ]; then - owner="`echo entry | cut -d ";" -f 2`" - group="`echo entry | cut -d ";" -f 3`" - perms="`echo entry | cut -d ";" -f 4`" - chmod $perms $1/$file - chown $owner:$group $1/$file - fi - done - fi - -} - function exec_post_install_scripts { # exec post installation scripts diff --git a/trunk/src/templatepkg b/trunk/src/templatepkg index 1382759..0a48406 100755 --- a/trunk/src/templatepkg +++ b/trunk/src/templatepkg @@ -51,6 +51,10 @@ function usage { echo "" echo " $BASENAME -d <template> <file-name>" echo "" + echo " -s | --sync: sync a template working copy; arguments are:" + echo "" + echo " $BASENAME -d <template>" + echo "" echo " in all cases (-c, -u and -a), jail-root defaults to /, if ommited" echo "" exit 1 @@ -214,6 +218,15 @@ elif [ "$1" == "-d" ] || [ "$1" == "--delete" ]; then fi +elif [ "$1" == "-s" ] || [ "$1" == "--sync" ]; then + + if [ "$TEMPLATES_UNDER_SVN" == "1" ]; then + if [ -d "$TEMPLATE_BASE.d/.svn" ]; then + ( cd $TEMPLATE_BASE.d && svn update ) + true + fi + fi + else usage fi |