mirror of https://github.com/jumpserver/jumpserver
58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
# coding: utf-8
|
|
#
|
|
from rest_framework import serializers
|
|
from common.utils import get_logger
|
|
from ..models import Application
|
|
|
|
|
|
logger = get_logger(__file__)
|
|
|
|
|
|
__all__ = ['RemoteAppConnectionInfoSerializer']
|
|
|
|
|
|
class RemoteAppConnectionInfoSerializer(serializers.ModelSerializer):
|
|
parameter_remote_app = serializers.SerializerMethodField()
|
|
asset = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = Application
|
|
fields = [
|
|
'id', 'name', 'asset', 'parameter_remote_app',
|
|
]
|
|
read_only_fields = ['parameter_remote_app']
|
|
|
|
@staticmethod
|
|
def get_asset(obj):
|
|
return obj.attrs.get('asset')
|
|
|
|
@staticmethod
|
|
def get_parameters(obj):
|
|
"""
|
|
返回Guacamole需要的RemoteApp配置参数信息中的parameters参数
|
|
"""
|
|
from .attrs import get_serializer_class_by_application_type
|
|
serializer_class = get_serializer_class_by_application_type(obj.type)
|
|
fields = serializer_class().get_fields()
|
|
|
|
parameters = [obj.type]
|
|
for field_name in list(fields.keys()):
|
|
if field_name in ['asset']:
|
|
continue
|
|
value = obj.attrs.get(field_name)
|
|
if not value:
|
|
continue
|
|
if field_name == 'path':
|
|
value = '\"%s\"' % value
|
|
parameters.append(str(value))
|
|
|
|
parameters = ' '.join(parameters)
|
|
return parameters
|
|
|
|
def get_parameter_remote_app(self, obj):
|
|
return {
|
|
'program': '||jmservisor',
|
|
'working_directory': '',
|
|
'parameters': self.get_parameters(obj)
|
|
}
|