Browse Source

[mod] utils/searx.sh - add command 'inspect settings'

Inspect YAML setting <key> from SearXNG instance (${SEARX_SRC})::

  utils/searx.sh inspect settings server.base_url

utils/lib_install.sh
  should not log on stdout which is used for the output of function
  prompt_installation_setting().  Turned build_msg (stdout) into
  info_msg (stderr).

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Markus Heiser 3 years ago
parent
commit
57b8f340a6
2 changed files with 61 additions and 12 deletions
  1. 6 6
      utils/lib_install.sh
  2. 55 6
      utils/searx.sh

+ 6 - 6
utils/lib_install.sh

@@ -55,18 +55,18 @@ source_dot_config() {
         SEARX_PYENV=$("${REPO_ROOT}/utils/searx.sh" --getenv SEARX_PYENV)
         SEARX_PYENV=$("${REPO_ROOT}/utils/searx.sh" --getenv SEARX_PYENV)
         SEARX_SETTINGS_PATH=$("${REPO_ROOT}/utils/searx.sh" --getenv SEARX_SETTINGS_PATH)
         SEARX_SETTINGS_PATH=$("${REPO_ROOT}/utils/searx.sh" --getenv SEARX_SETTINGS_PATH)
         if [ ! -r "${SEARX_SRC}" ]; then
         if [ ! -r "${SEARX_SRC}" ]; then
-            build_msg INSTANCE "not yet cloned: ${SEARX_SRC}"
+            info_msg "not yet cloned: ${SEARX_SRC}"
             orig_source_dot_config
             orig_source_dot_config
             return 0
             return 0
         fi
         fi
-        build_msg INSTANCE "using instance at: ${SEARX_SRC}"
+        info_msg "using instance at: ${SEARX_SRC}"
 
 
         # set and log DOT_CONFIG
         # set and log DOT_CONFIG
         if [ -r "${SEARX_SRC}/.config.sh" ]; then
         if [ -r "${SEARX_SRC}/.config.sh" ]; then
-            build_msg INSTANCE "switching to ${SEARX_SRC}/.config.sh"
+            info_msg "switching to ${SEARX_SRC}/.config.sh"
             DOT_CONFIG="${SEARX_SRC}/.config.sh"
             DOT_CONFIG="${SEARX_SRC}/.config.sh"
         else
         else
-            build_msg INSTANCE "using local config: ${DOT_CONFIG}"
+            info_msg "using local config: ${DOT_CONFIG}"
         fi
         fi
         init_SEARX_SRC_INIT_FILES
         init_SEARX_SRC_INIT_FILES
     fi
     fi
@@ -104,12 +104,12 @@ init_SEARX_SRC_INIT_FILES(){
             # diff  "${REPO_ROOT}/${fname}" "${SEARX_SRC}/${fname}"
             # diff  "${REPO_ROOT}/${fname}" "${SEARX_SRC}/${fname}"
             if ! cmp --silent "${REPO_ROOT}/${fname}" "${SEARX_SRC}/${fname}"; then
             if ! cmp --silent "${REPO_ROOT}/${fname}" "${SEARX_SRC}/${fname}"; then
                 SEARX_SRC_INIT_FILES+=("${fname}")
                 SEARX_SRC_INIT_FILES+=("${fname}")
-                build_msg INSTANCE "local clone (workingtree), modified file: ./$fname"
+                info_msg "local clone (workingtree), modified file: ./$fname"
                 msg="to update use:  sudo -H ./utils/searx.sh install init-src"
                 msg="to update use:  sudo -H ./utils/searx.sh install init-src"
             fi
             fi
         fi
         fi
     done <<< "$(git diff --name-only)"
     done <<< "$(git diff --name-only)"
-    [ -n "$msg" ] &&  build_msg INSTANCE "$msg"
+    [ -n "$msg" ] &&  info_msg "$msg"
 }
 }
 
 
 install_log_searx_instance() {
 install_log_searx_instance() {

+ 55 - 6
utils/searx.sh

@@ -146,7 +146,7 @@ usage::
   $(basename "$0") remove     [all|user|pyenv|searx-src]
   $(basename "$0") remove     [all|user|pyenv|searx-src]
   $(basename "$0") activate   [service]
   $(basename "$0") activate   [service]
   $(basename "$0") deactivate [service]
   $(basename "$0") deactivate [service]
-  $(basename "$0") inspect    [service]
+  $(basename "$0") inspect    [service|settings <key>]
   $(basename "$0") option     [debug-[on|off]|image-proxy-[on|off]|result-proxy <url> <key>]
   $(basename "$0") option     [debug-[on|off]|image-proxy-[on|off]|result-proxy <url> <key>]
   $(basename "$0") apache     [install|remove]
   $(basename "$0") apache     [install|remove]
 
 
@@ -169,8 +169,9 @@ activate service
   activate and start service daemon (systemd unit)
   activate and start service daemon (systemd unit)
 deactivate service
 deactivate service
   stop and deactivate service daemon (systemd unit)
   stop and deactivate service daemon (systemd unit)
-inspect service
-  run some small tests and inspect service's status and log
+inspect
+  :service:    run some small tests and inspect service's status and log
+  :settings:   inspect YAML setting <key> from SearXNG instance (${SEARX_SRC})
 option
 option
   set one of the available options
   set one of the available options
 apache
 apache
@@ -205,6 +206,10 @@ main() {
                     sudo_or_exit
                     sudo_or_exit
                     inspect_service
                     inspect_service
                     ;;
                     ;;
+                settings)
+                    prompt_installation_setting "$3"
+                    dump_return $?
+                    ;;
                 *) usage "$_usage"; exit 42;;
                 *) usage "$_usage"; exit 42;;
             esac ;;
             esac ;;
         install)
         install)
@@ -425,9 +430,14 @@ EOF
 }
 }
 
 
 prompt_installation_status(){
 prompt_installation_status(){
-    local _state
-    _state="$(install_searx_get_state)"
-    case $_state in
+
+    local state branch remote remote_url instance_setting
+    state="$(install_searx_get_state)"
+    branch="$(git name-rev --name-only HEAD)"
+    remote="$(git config branch."${branch}".remote)"
+    remote_url="$(git config remote."${remote}".url)"
+
+    case $state in
         missing-searx-clone)
         missing-searx-clone)
             info_msg "${_BBlue}(status: $(install_searx_get_state))${_creset}"
             info_msg "${_BBlue}(status: $(install_searx_get_state))${_creset}"
             return 0
             return 0
@@ -435,6 +445,16 @@ prompt_installation_status(){
         *)
         *)
             warn_msg "SearXNG instance already installed at: $SEARX_SRC"
             warn_msg "SearXNG instance already installed at: $SEARX_SRC"
             warn_msg "status:  ${_BBlue}$(install_searx_get_state)${_creset} "
             warn_msg "status:  ${_BBlue}$(install_searx_get_state)${_creset} "
+            instance_setting="$(prompt_installation_setting brand.git_url)"
+            if ! [ "$instance_setting" = "$remote_url" ]; then
+                warn_msg "instance's brand.git_url: '${instance_setting}'" \
+                         "differs from local clone's remote URL: ${remote_url}"
+            fi
+            instance_setting="$(prompt_installation_setting brand.git_branch)"
+            if ! [ "$instance_setting" = "$branch" ]; then
+                warn_msg "instance brand.git_branch: ${instance_setting}" \
+                         "differs from local clone's branch: ${branch}"
+            fi
             return 42
             return 42
             ;;
             ;;
     esac
     esac
@@ -447,6 +467,35 @@ verify_continue_install(){
     fi
     fi
 }
 }
 
 
+prompt_installation_setting(){
+
+    # usage:  prompt_installation_setting brand.git_url
+    #
+    # Prompts the value of the (YAML) setting in the SearXNG instance.
+
+    local _state
+    _state="$(install_searx_get_state)"
+    case $_state in
+        python-installed|installer-modified)
+            sudo -H -u "${SERVICE_USER}" "${SEARX_PYENV}/bin/python" <<EOF
+import sys
+from searx import get_setting
+name = "${1}"
+unset = object()
+value = get_setting(name, unset)
+if value is unset:
+    sys.stderr.write("error: setting '%s' does not exists\n" % name)
+    sys.exit(42)
+print(value)
+sys.exit(0)
+EOF
+            ;;
+        *)
+            return 42
+            ;;
+    esac
+}
+
 init_SEARX_SRC(){
 init_SEARX_SRC(){
     rst_title "Update instance: ${SEARX_SRC}/" section
     rst_title "Update instance: ${SEARX_SRC}/" section