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_SETTINGS_PATH=$("${REPO_ROOT}/utils/searx.sh" --getenv SEARX_SETTINGS_PATH)
         if [ ! -r "${SEARX_SRC}" ]; then
-            build_msg INSTANCE "not yet cloned: ${SEARX_SRC}"
+            info_msg "not yet cloned: ${SEARX_SRC}"
             orig_source_dot_config
             return 0
         fi
-        build_msg INSTANCE "using instance at: ${SEARX_SRC}"
+        info_msg "using instance at: ${SEARX_SRC}"
 
         # set and log DOT_CONFIG
         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"
         else
-            build_msg INSTANCE "using local config: ${DOT_CONFIG}"
+            info_msg "using local config: ${DOT_CONFIG}"
         fi
         init_SEARX_SRC_INIT_FILES
     fi
@@ -104,12 +104,12 @@ init_SEARX_SRC_INIT_FILES(){
             # diff  "${REPO_ROOT}/${fname}" "${SEARX_SRC}/${fname}"
             if ! cmp --silent "${REPO_ROOT}/${fname}" "${SEARX_SRC}/${fname}"; then
                 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"
             fi
         fi
     done <<< "$(git diff --name-only)"
-    [ -n "$msg" ] &&  build_msg INSTANCE "$msg"
+    [ -n "$msg" ] &&  info_msg "$msg"
 }
 
 install_log_searx_instance() {

+ 55 - 6
utils/searx.sh

@@ -146,7 +146,7 @@ usage::
   $(basename "$0") remove     [all|user|pyenv|searx-src]
   $(basename "$0") activate   [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") apache     [install|remove]
 
@@ -169,8 +169,9 @@ activate service
   activate and start service daemon (systemd unit)
 deactivate service
   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
   set one of the available options
 apache
@@ -205,6 +206,10 @@ main() {
                     sudo_or_exit
                     inspect_service
                     ;;
+                settings)
+                    prompt_installation_setting "$3"
+                    dump_return $?
+                    ;;
                 *) usage "$_usage"; exit 42;;
             esac ;;
         install)
@@ -425,9 +430,14 @@ EOF
 }
 
 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)
             info_msg "${_BBlue}(status: $(install_searx_get_state))${_creset}"
             return 0
@@ -435,6 +445,16 @@ prompt_installation_status(){
         *)
             warn_msg "SearXNG instance already installed at: $SEARX_SRC"
             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
             ;;
     esac
@@ -447,6 +467,35 @@ verify_continue_install(){
     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(){
     rst_title "Update instance: ${SEARX_SRC}/" section