summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Radovanovic <74266147+IgorWounds@users.noreply.github.com>2024-05-02 13:21:48 +0200
committerGitHub <noreply@github.com>2024-05-02 11:21:48 +0000
commit18115e4e91adb6632dabee7bd8577f08798efa08 (patch)
treead98eb2c7258d0777ec6f2e89a8936f07e92bc58
parent409703387bd37e4ed16101d2e31e7a31cf84de46 (diff)
[Enhancement] - Sanitize sensitive data from `.cli.his` (#6361)
* Sanitize sensitive data from .cli.his * fix long command providers --------- Co-authored-by: Diogo Sousa <montezdesousa@gmail.com>
-rw-r--r--cli/openbb_cli/config/completer.py24
-rw-r--r--cli/openbb_cli/config/menu_text.py2
-rw-r--r--cli/openbb_cli/session.py4
3 files changed, 27 insertions, 3 deletions
diff --git a/cli/openbb_cli/config/completer.py b/cli/openbb_cli/config/completer.py
index f084c821478..9cc50a9b7eb 100644
--- a/cli/openbb_cli/config/completer.py
+++ b/cli/openbb_cli/config/completer.py
@@ -16,6 +16,7 @@ from typing import (
from prompt_toolkit.completion import CompleteEvent, Completer, Completion
from prompt_toolkit.document import Document
from prompt_toolkit.formatted_text import AnyFormattedText
+from prompt_toolkit.history import FileHistory
NestedDict = Mapping[str, Union[Any, Set[str], None, Completer]]
@@ -401,3 +402,26 @@ class NestedCompleter(Completer):
# This is a WordCompleter
yield from completer.get_completions(document, complete_event)
+
+
+class CustomFileHistory(FileHistory):
+ """Filtered file history."""
+
+ def sanitize_input(self, string: str) -> str:
+ """Sanitize sensitive information from the input string by parsing arguments."""
+ keywords = ["--password", "--email", "--pat"]
+ string_list = string.split(" ")
+
+ for kw in keywords:
+ if kw in string_list:
+ index = string_list.index(kw)
+ if len(string_list) > index + 1:
+ string_list[index + 1] = "********"
+
+ result = " ".join(string_list)
+ return result
+
+ def store_string(self, string: str) -> None:
+ """Store string in history."""
+ string = self.sanitize_input(string)
+ super().store_string(string)
diff --git a/cli/openbb_cli/config/menu_text.py b/cli/openbb_cli/config/menu_text.py
index d9bdc59656c..0902e72bb69 100644
--- a/cli/openbb_cli/config/menu_text.py
+++ b/cli/openbb_cli/config/menu_text.py
@@ -204,7 +204,7 @@ class MenuText:
"""
formatted_name = self._format_cmd_name(name)
name_padding = (self.CMD_NAME_LENGTH - len(formatted_name)) * " "
- providers = get_ordered_providers(f"{self.menu_path}{formatted_name}")
+ providers = get_ordered_providers(f"{self.menu_path}{name}")
formatted_description = self._format_cmd_description(
formatted_name,
description,
diff --git a/cli/openbb_cli/session.py b/cli/openbb_cli/session.py
index 96b63f10da9..ef63fd6e7f0 100644
--- a/cli/openbb_cli/session.py
+++ b/cli/openbb_cli/session.py
@@ -8,8 +8,8 @@ from openbb import obb
from openbb_core.app.model.abstract.singleton import SingletonMeta
from openbb_core.app.model.user_settings import UserSettings as User
from prompt_toolkit import PromptSession
-from prompt_toolkit.history import FileHistory
+from openbb_cli.config.completer import CustomFileHistory
from openbb_cli.config.console import Console
from openbb_cli.config.constants import HIST_FILE_PROMPT
from openbb_cli.config.style import Style
@@ -62,7 +62,7 @@ class Session(metaclass=SingletonMeta):
try:
if sys.stdin.isatty():
prompt_session: Optional[PromptSession] = PromptSession(
- history=FileHistory(str(HIST_FILE_PROMPT))
+ history=CustomFileHistory(str(HIST_FILE_PROMPT))
)
else:
prompt_session = None