diff --git a/utils/filtron.sh b/utils/filtron.sh index 8283c966..2aa8cf4f 100755 --- a/utils/filtron.sh +++ b/utils/filtron.sh @@ -109,7 +109,7 @@ main() { shell) sudo_or_exit - interactive_shell + interactive_shell "${SERVICE_USER}" ;; inspect) case $2 in @@ -136,19 +136,19 @@ main() { sudo_or_exit case $2 in all) remove_all;; - user) remove_user ;; + user) drop_service_account "${SERVICE_USER}" ;; *) usage "$_usage"; exit 42;; esac ;; activate) sudo_or_exit case $2 in - service) activate_service ;; + service) systemd_activate_service "${SERVICE_NAME}" ;; *) usage "$_usage"; exit 42;; esac ;; deactivate) sudo_or_exit case $2 in - service) deactivate_service ;; + service) systemd_deactivate_service "${SERVICE_NAME}" ;; *) usage "$_usage"; exit 42;; esac ;; apache) @@ -174,11 +174,11 @@ install_all() { rst_title "Install $SERVICE_NAME (service)" assert_user wait_key - install_go + install_go "${GO_PKG_URL}" "${GO_TAR}" "${SERVICE_USER}" wait_key install_filtron wait_key - install_service + systemd_install_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}" wait_key echo if ! service_is_available "http://${FILTRON_LISTEN}" ; then @@ -203,56 +203,15 @@ remove_all() { It goes without saying that this script can only be used to remove installations that were installed with this script." - remove_service + systemd_remove_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}" wait_key - remove_user + drop_service_account "${SERVICE_USER}" rm -r "$FILTRON_ETC" 2>&1 | prefix_stdout if service_is_available "${PUBLIC_URL}"; then MSG="** Don't forget to remove your public site! (${PUBLIC_URL}) **" wait_key 10 fi } -install_service() { - rst_title "Install System-D Unit ${SERVICE_NAME}.service" section - echo - install_template "${SERVICE_SYSTEMD_UNIT}" root root 644 - wait_key - activate_service -} - -remove_service() { - if ! ask_yn "Do you really want to deinstall $SERVICE_NAME?"; then - return - fi - deactivate_service - rm "${SERVICE_SYSTEMD_UNIT}" 2>&1 | prefix_stdout -} - -activate_service() { - rst_title "Activate $SERVICE_NAME (service)" section - echo - tee_stderr <&1 -systemctl enable $SERVICE_NAME.service -systemctl restart $SERVICE_NAME.service -EOF - tee_stderr <&1 -systemctl status --no-pager $SERVICE_NAME.service -EOF -} - -deactivate_service() { - rst_title "De-Activate $SERVICE_NAME (service)" section - echo - tee_stderr <&1 | prefix_stdout -systemctl stop $SERVICE_NAME.service -systemctl disable $SERVICE_NAME.service -EOF -} - -user_is_available() { - sudo -i -u "$SERVICE_USER" echo \$HOME &>/dev/null -} - assert_user() { rst_title "user $SERVICE_USER" section echo @@ -277,44 +236,6 @@ grep -qFs -- 'source $GO_ENV' ~/.profile || echo 'source $GO_ENV' >> ~/.profile EOF } -remove_user() { - rst_title "Drop $SERVICE_USER HOME" section - if ask_yn "Do you really want to drop $SERVICE_USER home folder?"; then - userdel -r -f "$SERVICE_USER" 2>&1 | prefix_stdout - else - rst_para "Leave HOME folder $(du -sh "$SERVICE_HOME") unchanged." - fi -} - -interactive_shell(){ - echo "// exit with ${_BCyan}CTRL-D${_creset}" - sudo -H -u ${SERVICE_USER} -i -} - -_service_prefix=" |$SERVICE_USER| " - -go_is_available() { - sudo -i -u "$SERVICE_USER" which go &>/dev/null -} - -install_go() { - rst_title "Install Go in user's HOME" section - - rst_para "download and install go binary .." - cache_download "${GO_PKG_URL}" "${GO_TAR}" - - tee_stderr 0.1 </dev/null && echo "ERROR - Go Installation not found in PATH!?!" -which go >/dev/null && go version && echo "congratulations -- Go installation OK :)" -EOF -} filtron_is_installed() { [[ -f $SERVICE_HOME/go-apps/bin/filtron ]] @@ -356,12 +277,12 @@ EOF apache_is_installed && info_msg "Apache is installed." - if user_is_available; then + if service_account_is_available "$SERVICE_USER"; then info_msg "service account $SERVICE_USER available." else err_msg "service account $SERVICE_USER not available!" fi - if go_is_available; then + if go_is_available "$SERVICE_USER"; then info_msg "~$SERVICE_USER: go is installed" else err_msg "~$SERVICE_USER: go is not installed" diff --git a/utils/lib.sh b/utils/lib.sh index 91335fbb..4a77671a 100755 --- a/utils/lib.sh +++ b/utils/lib.sh @@ -25,10 +25,6 @@ if [[ -z "$CACHE" ]]; then CACHE="${REPO_ROOT}/cache" fi -if [[ -z "$SYSTEMD_UNITS" ]]; then - SYSTEMD_UNITS="/lib/systemd/system" -fi - if [[ -z ${DIFF_CMD} ]]; then DIFF_CMD="diff -u" if command -v colordiff >/dev/null; then @@ -477,6 +473,125 @@ service_is_available() { return "$exit_val" } +# golang +# ------ + +go_is_available() { + + # usage: go_is_available $SERVICE_USER && echo "go is installed!" + + sudo -i -u "${1}" which go &>/dev/null +} + +install_go() { + + # usage: install_go "${GO_PKG_URL}" "${GO_TAR}" "${SERVICE_USER}" + + local _service_prefix=" |${3}| " + + rst_title "Install Go in user's HOME" section + + rst_para "download and install go binary .." + cache_download "${1}" "${2}" + + tee_stderr 0.1 </dev/null && echo "ERROR - Go Installation not found in PATH!?!" +which go >/dev/null && go version && echo "congratulations -- Go installation OK :)" +EOF +} + +# system accounts +# --------------- + +service_account_is_available() { + + # usage: service_account_is_available "$SERVICE_USER" && echo "OK" + + sudo -i -u "$1" echo \$HOME &>/dev/null +} + +drop_service_account() { + + # usage: drop_service_account "${SERVICE_USER}" + + rst_title "Drop ${1} HOME" section + if ask_yn "Do you really want to drop ${1} home folder?"; then + userdel -r -f "${1}" 2>&1 | prefix_stdout + else + rst_para "Leave HOME folder $(du -sh "${1}") unchanged." + fi +} + +interactive_shell(){ + + # usage: interactive_shell "${SERVICE_USER}" + + echo "// exit with ${_BCyan}CTRL-D${_creset}" + sudo -H -u "${1}" -i +} + + +# systemd +# ------- + +SYSTEMD_UNITS="${SYSTEMD_UNITS:-/lib/systemd/system}" + +systemd_install_service() { + + # usage: systemd_install_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}" + + rst_title "Install System-D Unit ${1}" section + echo + install_template "${2}" root root 644 + wait_key + systemd_activate_service "${1}" +} + +systemd_remove_service() { + + # usage: systemd_remove_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}" + + if ! ask_yn "Do you really want to deinstall ${1}?"; then + return + fi + systemd_deactivate_service "${1}" + rm "${2}" 2>&1 | prefix_stdout +} + +systemd_activate_service() { + + # usage: systemd_activate_service "${SERVICE_NAME}"w + + rst_title "Activate ${1} (service)" section + echo + tee_stderr <&1 +systemctl enable ${1}.service +systemctl restart ${1}.service +EOF + tee_stderr <&1 +systemctl status --no-pager ${1}.service +EOF +} + +systemd_deactivate_service() { + + # usage: systemd_deactivate_service "${SERVICE_NAME}" + + rst_title "De-Activate ${1} (service)" section + echo + tee_stderr <&1 | prefix_stdout +systemctl stop ${1}.service +systemctl disable ${1}.service +EOF +} + # Apache # ------ diff --git a/utils/searx.sh b/utils/searx.sh index ad8515d4..47aad286 100755 --- a/utils/searx.sh +++ b/utils/searx.sh @@ -124,7 +124,7 @@ main() { shell) sudo_or_exit - interactive_shell + interactive_shell "${SERVICE_USER}" ;; inspect) case $2 in @@ -153,7 +153,7 @@ main() { sudo_or_exit case $2 in all) remove_all;; - user) remove_user ;; + user) drop_service_account "${SERVICE_USER}";; pyenv) remove_pyenv ;; searx-src) remove_searx ;; *) usage "$_usage"; exit 42;; @@ -250,7 +250,7 @@ cp -f ${SEARX_SETTINGS}.backup ${SEARX_SETTINGS} EOF ;; "start interactiv shell") - interactive_shell + interactive_shell "${SERVICE_USER}" ;; esac chown "${SERVICE_USER}:${SERVICE_USER}" "${SEARX_SETTINGS}" @@ -275,16 +275,12 @@ installations that were installed with this script." fi remove_searx_uwsgi wait_key - remove_user + drop_service_account "${SERVICE_USER}" if service_is_available "${PUBLIC_URL}"; then MSG="** Don't forgett to remove your public site! (${PUBLIC_URL}) **" wait_key 10 fi } -user_is_available() { - sudo -i -u "$SERVICE_USER" echo \$HOME &>/dev/null -} - assert_user() { rst_title "user $SERVICE_USER" section echo @@ -299,15 +295,6 @@ EOF #echo "export SERVICE_HOME=$SERVICE_HOME" } -remove_user() { - rst_title "Drop $SERVICE_USER HOME" section - if ask_yn "Do you really want to drop $SERVICE_USER home folder?"; then - userdel -r -f "$SERVICE_USER" 2>&1 | prefix_stdout - else - rst_para "Leave HOME folder $(du -sh "$SERVICE_HOME") unchanged." - fi -} - clone_is_available() { [[ -f "$SEARX_SETTINGS" ]] } @@ -445,11 +432,6 @@ deactivate_service() { uWSGI_restart } -interactive_shell(){ - echo "// exit with ${_BCyan}CTRL-D${_creset}" - sudo -H -u ${SERVICE_USER} -i -} - git_diff() { sudo -H -u "${SERVICE_USER}" -i <