mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-10-23 08:49:04 +00:00
feat: 支持 virtual app (#12199)
* feat: 支持 virtual app * perf: 增加 virtual host * perf: 新增 virtual app 上传接口 * perf: 更名为 app provider * perf: 优化代码 --------- Co-authored-by: Eric <xplzv@126.com>
This commit is contained in:
@@ -113,6 +113,26 @@ class AppletMethod:
|
||||
return methods
|
||||
|
||||
|
||||
class VirtualAppMethod:
|
||||
|
||||
@classmethod
|
||||
def get_methods(cls):
|
||||
from .models import VirtualApp
|
||||
methods = defaultdict(list)
|
||||
if not getattr(settings, 'VIRTUAL_APP_ENABLED'):
|
||||
return methods
|
||||
virtual_apps = VirtualApp.objects.filter(is_active=True)
|
||||
for virtual_app in virtual_apps:
|
||||
for protocol in virtual_app.protocols:
|
||||
methods[protocol].append({
|
||||
'value': virtual_app.name,
|
||||
'label': virtual_app.name,
|
||||
'type': 'virtual_app',
|
||||
'disabled': not virtual_app.is_active,
|
||||
})
|
||||
return methods
|
||||
|
||||
|
||||
class ConnectMethodUtil:
|
||||
_all_methods = {}
|
||||
|
||||
@@ -243,6 +263,7 @@ class ConnectMethodUtil:
|
||||
methods = defaultdict(list)
|
||||
spec_web_methods = WebMethod.get_spec_methods()
|
||||
applet_methods = AppletMethod.get_methods()
|
||||
virtual_app_methods = VirtualAppMethod.get_methods()
|
||||
native_methods = NativeClient.get_methods(os=os)
|
||||
|
||||
for component, component_protocol in cls.components().items():
|
||||
@@ -295,5 +316,12 @@ class ConnectMethodUtil:
|
||||
method['component'] = TerminalType.tinker.value
|
||||
methods[asset_protocol].extend(applet_methods)
|
||||
|
||||
# 虚拟应用方式,这个只有 panda 提供,并且协议可能是自定义的
|
||||
for protocol, virtual_app_methods in virtual_app_methods.items():
|
||||
for method in virtual_app_methods:
|
||||
method['listen'] = Protocol.http
|
||||
method['component'] = TerminalType.panda.value
|
||||
methods[protocol].extend(virtual_app_methods)
|
||||
|
||||
cls._all_methods[os] = methods
|
||||
return methods
|
||||
|
Reference in New Issue
Block a user