mirror of https://github.com/jumpserver/jumpserver
perf: 修改 connect token
parent
426900145e
commit
6593648554
|
@ -20,7 +20,7 @@ from common.utils.django import get_request_os
|
|||
from orgs.mixins.api import RootOrgViewMixin
|
||||
from perms.models import ActionChoices
|
||||
from terminal.const import NativeClient
|
||||
from terminal.models import EndpointRule
|
||||
from terminal.models import EndpointRule, Applet
|
||||
from ..models import ConnectionToken
|
||||
from ..serializers import (
|
||||
ConnectionTokenSerializer, ConnectionTokenSecretSerializer,
|
||||
|
@ -33,13 +33,34 @@ class RDPFileClientProtocolURLMixin:
|
|||
request: Request
|
||||
get_serializer: callable
|
||||
|
||||
@staticmethod
|
||||
def set_applet_info(token, rdp_options):
|
||||
# remote-app
|
||||
applet = Applet.objects.filter(name=token.connect_method).first()
|
||||
if not applet:
|
||||
return rdp_options
|
||||
|
||||
cmdline = {
|
||||
'app_name': applet.name,
|
||||
'user_id': str(token.user.id),
|
||||
'asset_id': str(token.asset.id),
|
||||
'token_id': token.id
|
||||
}
|
||||
|
||||
app = '||tinker'
|
||||
rdp_options['remoteapplicationmode:i'] = '1'
|
||||
rdp_options['alternate shell:s'] = app
|
||||
rdp_options['remoteapplicationprogram:s'] = app
|
||||
rdp_options['remoteapplicationname:s'] = app
|
||||
|
||||
cmdline_b64 = base64.b64encode(json.dumps(cmdline).encode()).decode()
|
||||
rdp_options['remoteapplicationcmdline:s'] = cmdline_b64
|
||||
return rdp_options
|
||||
|
||||
def get_rdp_file_info(self, token: ConnectionToken):
|
||||
rdp_options = {
|
||||
'full address:s': '',
|
||||
'username:s': '',
|
||||
# 'screen mode id:i': '1',
|
||||
# 'desktopwidth:i': '1280',
|
||||
# 'desktopheight:i': '800',
|
||||
'use multimon:i': '0',
|
||||
'session bpp:i': '32',
|
||||
'audiomode:i': '0',
|
||||
|
@ -60,11 +81,6 @@ class RDPFileClientProtocolURLMixin:
|
|||
'bookmarktype:i': '3',
|
||||
'use redirection server name:i': '0',
|
||||
'smart sizing:i': '1',
|
||||
# 'drivestoredirect:s': '*',
|
||||
# 'domain:s': ''
|
||||
# 'alternate shell:s:': '||MySQLWorkbench',
|
||||
# 'remoteapplicationname:s': 'Firefox',
|
||||
# 'remoteapplicationcmdline:s': '',
|
||||
}
|
||||
|
||||
# 设置磁盘挂载
|
||||
|
@ -97,16 +113,11 @@ class RDPFileClientProtocolURLMixin:
|
|||
rdp_options['session bpp:i'] = os.getenv('JUMPSERVER_COLOR_DEPTH', '32')
|
||||
rdp_options['audiomode:i'] = self.parse_env_bool('JUMPSERVER_DISABLE_AUDIO', 'false', '2', '0')
|
||||
|
||||
if token.asset:
|
||||
name = token.asset.name
|
||||
# remote-app
|
||||
# app = '||jmservisor'
|
||||
# rdp_options['remoteapplicationmode:i'] = '1'
|
||||
# rdp_options['alternate shell:s'] = app
|
||||
# rdp_options['remoteapplicationprogram:s'] = app
|
||||
# rdp_options['remoteapplicationname:s'] = name
|
||||
else:
|
||||
name = '*'
|
||||
# 设置远程应用
|
||||
self.set_applet_info(token, rdp_options)
|
||||
|
||||
# 文件名
|
||||
name = token.asset.name
|
||||
prefix_name = f'{token.user.username}-{name}'
|
||||
filename = self.get_connect_filename(prefix_name)
|
||||
|
||||
|
|
Loading…
Reference in New Issue