#!/usr/bin/env bash # -*- coding: utf-8; mode: sh indent-tabs-mode: nil -*- # SPDX-License-Identifier: AGPL-3.0-or-later # shellcheck disable=SC2119,SC2001 # shellcheck source=utils/lib.sh source "$(dirname "${BASH_SOURCE[0]}")/lib.sh" source_dot_config # ---------------------------------------------------------------------------- # config # ---------------------------------------------------------------------------- FILTRON_URL_PATH="${FILTRON_URL_PATH:-$(echo "${PUBLIC_URL}" \ | sed -e 's,^.*://[^/]*\(/.*\),\1,g')}" [[ "${FILTRON_URL_PATH}" == "${PUBLIC_URL}" ]] && FILTRON_URL_PATH=/ FILTRON_ETC="/etc/filtron" FILTRON_RULES="$FILTRON_ETC/rules.json" FILTRON_API="127.0.0.1:4005" FILTRON_LISTEN="127.0.0.1:4004" FILTRON_TARGET="127.0.0.1:8888" SERVICE_NAME="filtron" SERVICE_USER="${SERVICE_NAME}" SERVICE_HOME="/home/${SERVICE_USER}" SERVICE_SYSTEMD_UNIT="${SYSTEMD_UNITS}/${SERVICE_NAME}.service" # shellcheck disable=SC2034 SERVICE_GROUP="${SERVICE_USER}" GO_ENV="${SERVICE_HOME}/.go_env" GO_PKG_URL="https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz" GO_TAR=$(basename "$GO_PKG_URL") # Apache Settings APACHE_FILTRON_SITE="searx.conf" # shellcheck disable=SC2034 CONFIG_FILES=( "${FILTRON_RULES}" "${SERVICE_SYSTEMD_UNIT}" ) # ---------------------------------------------------------------------------- usage() { # ---------------------------------------------------------------------------- # shellcheck disable=SC1117 cat <&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 tee_stderr 1 < "$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 CTRL-D" 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 ]] } install_filtron() { rst_title "Install filtron in user's ~/go-apps" section echo tee_stderr <&1 | prefix_stdout "$_service_prefix" go get -v -u github.com/asciimoo/filtron EOF install_template --no-eval "$FILTRON_RULES" root root 644 } update_filtron() { rst_title "Update filtron" section echo tee_stderr <&1 | prefix_stdout "$_service_prefix" go get -v -u github.com/asciimoo/filtron EOF } inspect_service() { rst_title "service status & log" cat <