summaryrefslogtreecommitdiff
path: root/docs/admin/engines/command-line-engines.rst
diff options
context:
space:
mode:
authorMarkus Heiser <markus.heiser@darmarIT.de>2021-06-08 10:56:18 +0000
committerGitHub <noreply@github.com>2021-06-08 10:56:18 +0000
commit5c5db719d2039d34aa1426bf7eb3e57055d4a54a (patch)
tree15a7a5e1a811f1366cdb49b69e35633afaf56114 /docs/admin/engines/command-line-engines.rst
parent5f76238d5cd6f9c850d5237fe639ba2900fd3e6c (diff)
parent6f7b0d72c084845ea073a82a357c5e99cd41a85f (diff)
Merge pull request #97 from return42/drop-searx-admin
[docs] reorder blog articles
Diffstat (limited to 'docs/admin/engines/command-line-engines.rst')
-rw-r--r--docs/admin/engines/command-line-engines.rst79
1 files changed, 79 insertions, 0 deletions
diff --git a/docs/admin/engines/command-line-engines.rst b/docs/admin/engines/command-line-engines.rst
new file mode 100644
index 000000000..e9535e74f
--- /dev/null
+++ b/docs/admin/engines/command-line-engines.rst
@@ -0,0 +1,79 @@
+.. _engine command:
+
+====================
+Command Line Engines
+====================
+
+.. sidebar:: info
+
+ - :origin:`command.py <searx/engines/command.py>`
+ - :ref:`offline engines`
+
+With *command engines* administrators can run engines to integrate arbitrary
+shell commands.
+
+When creating and enabling a ``command`` engine on a public instance, you must
+be careful to avoid leaking private data. The easiest solution is to limit the
+access by setting ``tokens`` as described in section :ref:`private engines`.
+
+The engine base is flexible. Only your imagination can limit the power of this
+engine (and maybe security concerns). The following options are available:
+
+``command``:
+ A comma separated list of the elements of the command. A special token
+ ``{{QUERY}}`` tells where to put the search terms of the user. Example:
+
+ .. code:: yaml
+
+ ['ls', '-l', '-h', '{{QUERY}}']
+
+``delimiter``:
+ A mapping containing a delimiter ``char`` and the *titles* of each element in
+ ``keys``.
+
+``parse_regex``:
+ A dict containing the regular expressions for each result key.
+
+``query_type``:
+
+ The expected type of user search terms. Possible values: ``path`` and
+ ``enum``.
+
+ ``path``:
+ Checks if the user provided path is inside the working directory. If not,
+ the query is not executed.
+
+ ``enum``:
+ Is a list of allowed search terms. If the user submits something which is
+ not included in the list, the query returns an error.
+
+``query_enum``:
+ A list containing allowed search terms if ``query_type`` is set to ``enum``.
+
+``working_dir``:
+
+ The directory where the command has to be executed. Default: ``./``
+
+``result_separator``:
+ The character that separates results. Default: ``\n``
+
+The example engine below can be used to find files with a specific name in the
+configured working directory:
+
+.. code:: yaml
+
+ - name: find
+ engine: command
+ command: ['find', '.', '-name', '{{QUERY}}']
+ query_type: path
+ shortcut: fnd
+ delimiter:
+ chars: ' '
+ keys: ['line']
+
+
+Acknowledgment
+==============
+
+This development was sponsored by `Search and Discovery Fund
+<https://nlnet.nl/discovery>`_ of `NLnet Foundation <https://nlnet.nl/>`_.