diff options
-rwxr-xr-x | ezjail-admin | 68 |
1 files changed, 47 insertions, 21 deletions
diff --git a/ezjail-admin b/ezjail-admin index d5dffc7..86787dd 100755 --- a/ezjail-admin +++ b/ezjail-admin | |||
@@ -18,7 +18,7 @@ ezjail_jailcfgs="${ezjail_etc}/ezjail" | |||
18 | : ${ezjail_jailbase="${ezjail_jaildir}/basejail"} | 18 | : ${ezjail_jailbase="${ezjail_jaildir}/basejail"} |
19 | : ${ezjail_jailfull="${ezjail_jaildir}/fulljail"} | 19 | : ${ezjail_jailfull="${ezjail_jaildir}/fulljail"} |
20 | : ${ezjail_jailtemp="${ezjail_jaildir}/ezjailtemp"} | 20 | : ${ezjail_jailtemp="${ezjail_jaildir}/ezjailtemp"} |
21 | : ${ezjail_flavours="${ezjail_jaildir}/flavours"} | 21 | : ${ezjail_flavours_dir="${ezjail_jaildir}/flavours"} |
22 | : ${ezjail_portscvsroot="freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs"} | 22 | : ${ezjail_portscvsroot="freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs"} |
23 | : ${ezjail_sourcetree="/usr/src"} | 23 | : ${ezjail_sourcetree="/usr/src"} |
24 | : ${ezjail_uglyperlhack="YES"} | 24 | : ${ezjail_uglyperlhack="YES"} |
@@ -269,7 +269,7 @@ ezjail_splitworld() { | |||
269 | fi | 269 | fi |
270 | 270 | ||
271 | # If the default flavour example has not yet been copied, do it now | 271 | # If the default flavour example has not yet been copied, do it now |
272 | [ -d "${ezjail_flavours}/example" ] || mkdir -p "${ezjail_flavours}" && cp -p -R "${ezjail_examples}/example" "${ezjail_flavours}" | 272 | [ -d "${ezjail_flavours_dir}/example" ] || mkdir -p "${ezjail_flavours_dir}" && cp -p -R "${ezjail_examples}/example" "${ezjail_flavours_dir}" |
273 | 273 | ||
274 | # no /usr/ports? link to /basejail/usr/ports | 274 | # no /usr/ports? link to /basejail/usr/ports |
275 | [ -e "${ezjail_jailtemplate}/usr/ports" ] || ln -s /basejail/usr/ports "${ezjail_jailtemplate}/usr/ports" | 275 | [ -e "${ezjail_jailtemplate}/usr/ports" ] || ln -s /basejail/usr/ports "${ezjail_jailtemplate}/usr/ports" |
@@ -399,7 +399,7 @@ check_for_zfs_exist () { | |||
399 | 399 | ||
400 | ############################# | 400 | ############################# |
401 | # End of function definitions | 401 | # End of function definitions |
402 | # | 402 | # " |
403 | 403 | ||
404 | # check for command | 404 | # check for command |
405 | [ $# -gt 0 ] || exerr ${ezjail_usage_ezjailadmin} | 405 | [ $# -gt 0 ] || exerr ${ezjail_usage_ezjailadmin} |
@@ -408,11 +408,11 @@ case "$1" in | |||
408 | ######################## ezjail-admin CREATE ######################## | 408 | ######################## ezjail-admin CREATE ######################## |
409 | create) | 409 | create) |
410 | # Clean variables, prevent polution | 410 | # Clean variables, prevent polution |
411 | unset ezjail_rootdir ezjail_flavour ezjail_softlink ezjail_image ezjail_imagetype ezjail_imageparams ezjail_imagesize ezjail_device ezjail_devicelink ezjail_config ezjail_attachparams ezjail_exists ezjail_attachblocking ezjail_forceblocking ezjail_sourcedevice ezjail_rootdirempty ezjail_fromarchive ezjail_fromarchive_config | 411 | unset ezjail_rootdir ezjail_flavours ezjail_softlink ezjail_image ezjail_imagetype ezjail_imageparams ezjail_imagesize ezjail_device ezjail_devicelink ezjail_config ezjail_attachparams ezjail_exists ezjail_attachblocking ezjail_forceblocking ezjail_sourcedevice ezjail_rootdirempty ezjail_fromarchive ezjail_fromarchive_config |
412 | shift; while getopts :f:r:s:xbic:C:a:A: arg; do case ${arg} in | 412 | shift; while getopts :f:r:s:xbic:C:a:A: arg; do case ${arg} in |
413 | x) ezjail_exists="YES";; | 413 | x) ezjail_exists="YES";; |
414 | r) ezjail_rootdir=${OPTARG};; | 414 | r) ezjail_rootdir=${OPTARG};; |
415 | f) ezjail_flavour=${OPTARG};; | 415 | f) ezjail_flavours=${OPTARG};; |
416 | a) ezjail_fromarchive=${OPTARG};; | 416 | a) ezjail_fromarchive=${OPTARG};; |
417 | A) ezjail_fromarchive_config=${OPTARG};; | 417 | A) ezjail_fromarchive_config=${OPTARG};; |
418 | c) ezjail_imagetype=${OPTARG};; | 418 | c) ezjail_imagetype=${OPTARG};; |
@@ -490,10 +490,12 @@ create) | |||
490 | fi | 490 | fi |
491 | 491 | ||
492 | # if no flavour specified on command line, use default flavour | 492 | # if no flavour specified on command line, use default flavour |
493 | : ${ezjail_flavour=${ezjail_default_flavour}} | 493 | : ${ezjail_flavours=${ezjail_default_flavour}} |
494 | 494 | ||
495 | # do some sanity checks on the selected flavour (if any) | 495 | # do some sanity checks on the selected flavour (if any) |
496 | [ "${ezjail_flavour}" -a ! -d "${ezjail_flavours}/${ezjail_flavour}" ] && exerr "Error: Flavour config directory ${ezjail_flavours}/${ezjail_flavour} not found.\n Refer to ${ezjail_admin}s man page for details on flavours." | 496 | for ezjail_flavour in ${ezjail_flavours}; do |
497 | [-d "${ezjail_flavours_dir}/${ezjail_flavour}" ] || exerr "Error: Flavour config directory ${ezjail_flavours_dir}/${ezjail_flavour} not found.\n Refer to ${ezjail_admin}s man page for details on flavours." | ||
498 | done | ||
497 | 499 | ||
498 | # check for restore circumstances, normally this is invoked by the restore command | 500 | # check for restore circumstances, normally this is invoked by the restore command |
499 | [ "${ezjail_fromarchive}" -a "${ezjail_exists}" ] && exerr "Error: You can not restore an archive over an existing jail.\n '${ezjail_admin} delete -w ${ezjail_name}' the old version first." | 501 | [ "${ezjail_fromarchive}" -a "${ezjail_exists}" ] && exerr "Error: You can not restore an archive over an existing jail.\n '${ezjail_admin} delete -w ${ezjail_name}' the old version first." |
@@ -637,20 +639,44 @@ create) | |||
637 | writejailinfo "${ezjail_config}" "${ezjail_fromarchive_config}" | 639 | writejailinfo "${ezjail_config}" "${ezjail_fromarchive_config}" |
638 | 640 | ||
639 | # Final steps for flavour installation | 641 | # Final steps for flavour installation |
640 | if [ -z "${ezjail_exists}" -a "${ezjail_flavour}" ]; then | 642 | if [ -z "${ezjail_exists}" ]; then |
641 | # install files and config to new jail | 643 | _installed_flavours=0 |
642 | cd "${ezjail_flavours}/${ezjail_flavour}" && find . | cpio -p -u -v "${ezjail_rootdir}" > /dev/null | 644 | for ezjail_flavour in ${ezjail_flavours}; do |
643 | [ $? -eq 0 ] || echo "Warning: Could not fully install flavour." | 645 | # install files and config to new jail |
644 | 646 | cd "${ezjail_flavours_dir}/${ezjail_flavour}" && find . | cpio -p -u -v "${ezjail_rootdir}" > /dev/null | |
645 | # if the packages are links and not files we have to copy them now | 647 | [ $? -eq 0 ] || echo "Warning: Could not fully install flavour ${ezjail_flavour}." |
646 | find "${ezjail_rootdir}/pkg/" -type l -exec cp -r -f {} {}.ezjail \; -exec mv {}.ezjail {} \; | 648 | |
647 | 649 | # if the packages are links and not files we have to copy them now | |
648 | # If a config is found, make it auto run on jails startup | 650 | find "${ezjail_rootdir}/pkg/" -type l -exec cp -r -f {} {}.ezjail \; -exec mv {}.ezjail {} \; |
649 | if [ -f "${ezjail_rootdir}/ezjail.flavour" ]; then | 651 | |
650 | ln -s /ezjail.flavour "${ezjail_rootdir}/etc/rc.d/ezjail-config" | 652 | # If a config is found, make it auto run on jails startup |
651 | chmod 0700 "${ezjail_rootdir}/ezjail.flavour" | 653 | if [ -f "${ezjail_rootdir}/ezjail.flavour" ]; then |
652 | echo "Note: Shell scripts installed, flavourizing on jails first startup." | 654 | chmod 0755 "${ezjail_rootdir}/ezjail.flavour" |
653 | fi | 655 | mv "${ezjail_rootdir}/ezjail.flavour" "${ezjail_rootdir}/ezjail.flavour".`printf %04d ${_installed_flavours}` |
656 | echo "Note: Shell scripts for flavour ${ezjail_flavour} installed, flavourizing on jails first startup." | ||
657 | fi | ||
658 | |||
659 | echo << "EOF" | ||
660 | #!/bin/sh | ||
661 | # | ||
662 | # BEFORE: DAEMON | ||
663 | # PROVIDES: ezjail-config | ||
664 | # | ||
665 | case "$1" in | ||
666 | start) | ||
667 | rm -f "${0}" | ||
668 | for ezjail_flavour in /ezjail.flavour*; do | ||
669 | [ -x "${ezjail_flavour}" ] && "${ezjail_flavour}" | ||
670 | rm -f "${ezjail_flavour}" | ||
671 | done | ||
672 | ;; | ||
673 | *) | ||
674 | ;; | ||
675 | esac | ||
676 | |||
677 | EOF | ||
678 | > "${ezjail_rootdir}/etc/rc.d/ezjail-config" | ||
679 | done | ||
654 | fi | 680 | fi |
655 | 681 | ||
656 | # Detach (crypto and) memory discs | 682 | # Detach (crypto and) memory discs |