diff --git a/apps/terminal/applets/dbeaver/app.py b/apps/terminal/applets/dbeaver/app.py index 39d953926..ff2d4fd4c 100644 --- a/apps/terminal/applets/dbeaver/app.py +++ b/apps/terminal/applets/dbeaver/app.py @@ -1,14 +1,13 @@ import os -import time -import win32api import shutil import subprocess - +import time from xml.etree import ElementTree from xml.sax import SAXException -from common import wait_pid, BaseApplication +import win32api +from common import wait_pid, BaseApplication _default_path = r'C:\Program Files\DBeaver\dbeaver-cli.exe' @@ -22,6 +21,10 @@ class AppletApplication(BaseApplication): self.privileged = self.account.privileged self.host = self.asset.address self.port = self.asset.get_protocol_port(self.protocol) + if self.tinker_forward: + self.host = self.tinker_forward.host + self.port = self.tinker_forward.port + self.db = self.asset.spec_info.db_name self.name = '%s-%s-%s' % (self.host, self.db, int(time.time())) self.app_work_path = self.get_app_work_path() diff --git a/apps/terminal/applets/dbeaver/common.py b/apps/terminal/applets/dbeaver/common.py index 010347fe0..53d46f06a 100644 --- a/apps/terminal/applets/dbeaver/common.py +++ b/apps/terminal/applets/dbeaver/common.py @@ -152,6 +152,20 @@ class Platform(DictObj): type: LabelValue +class Gateway(DictObj): + id: str + name: str + address: str + port: int + protocols: list[Protocol] + account: Account + + +class TinkerForward(DictObj): + host: str + port: int + + class Manifest(DictObj): name: str version: str @@ -199,6 +213,14 @@ class BaseApplication(abc.ABC): self.asset = Asset(kwargs.get('asset', {})) self.account = Account(kwargs.get('account', {})) self.platform = Platform(kwargs.get('platform', {})) + self.gateway = None + self.tinker_forward = None + gateway = kwargs.get('gateway') + tinker_forward = kwargs.get('tinker_forward') + if gateway: + self.gateway = Gateway(gateway) + if tinker_forward: + self.tinker_forward = TinkerForward(tinker_forward) @abc.abstractmethod def run(self): diff --git a/apps/terminal/applets/dbeaver/manifest.yml b/apps/terminal/applets/dbeaver/manifest.yml index 5b834cf99..8b2713ee6 100644 --- a/apps/terminal/applets/dbeaver/manifest.yml +++ b/apps/terminal/applets/dbeaver/manifest.yml @@ -1,7 +1,7 @@ name: dbeaver display_name: "{{ 'DBeaver Community' | trans }}" comment: "{{ 'Free multi-platform database tool for developers, database administrators, analysts and all people who need to work with databases.' | trans }}" -version: 0.1 +version: 0.2 exec_type: python author: JumpServer Team type: general