diff --git a/apps/jumpserver/conf.py b/apps/jumpserver/conf.py index 28ee9d8e9..ec35ae6e5 100644 --- a/apps/jumpserver/conf.py +++ b/apps/jumpserver/conf.py @@ -313,7 +313,7 @@ class Config(dict): 'TERMINAL_HOST_KEY': '', 'TERMINAL_TELNET_REGEX': '', 'TERMINAL_COMMAND_STORAGE': {}, - # 未来废弃(当下迁移会用) + # 未来废弃(目前迁移会用) 'TERMINAL_RDP_ADDR': '', # 保留(Luna还在用) 'TERMINAL_MAGNUS_ENABLED': True, diff --git a/apps/terminal/migrations/0048_endpoint_endpointrule.py b/apps/terminal/migrations/0048_endpoint_endpointrule.py index 9e75823e2..6400f710a 100644 --- a/apps/terminal/migrations/0048_endpoint_endpointrule.py +++ b/apps/terminal/migrations/0048_endpoint_endpointrule.py @@ -1,5 +1,6 @@ # Generated by Django 3.1.14 on 2022-04-12 07:39 +import copy import common.fields.model import django.core.validators from django.db import migrations, models @@ -9,7 +10,9 @@ from django.conf import settings def migrate_endpoints(apps, schema_editor): - endpoint_data = { + Endpoint = apps.get_model("terminal", "Endpoint") + # migrate default + default_data = { 'id': '00000000-0000-0000-0000-000000000001', 'name': 'Default', 'host': '', @@ -17,19 +20,50 @@ def migrate_endpoints(apps, schema_editor): 'http_port': 0, 'created_by': 'System' } + default_endpoint = Endpoint.objects.create(**default_data) - if settings.XRDP_ENABLED: - xrdp_addr = settings.TERMINAL_RDP_ADDR - if ':' in xrdp_addr: - hostname, port = xrdp_addr.strip().split(':') - else: - hostname, port = xrdp_addr, 3389 - endpoint_data.update({ - 'host': '' if hostname.strip() in ['localhost', '127.0.0.1'] else hostname.strip(), - 'rdp_port': int(port) - }) - Endpoint = apps.get_model("terminal", "Endpoint") - Endpoint.objects.create(**endpoint_data) + if not settings.XRDP_ENABLED: + return + # migrate xrdp + xrdp_addr = settings.TERMINAL_RDP_ADDR + if ':' in xrdp_addr: + host, rdp_port = xrdp_addr.strip().split(':') + else: + host, rdp_port = xrdp_addr, 3389 + host = host.strip() + if host in ['localhost', '127.0.0.1']: + host = '' + if not host: + return + if isinstance(rdp_port, str) and rdp_port.isdigit(): + rdp_port = int(rdp_port) + elif isinstance(rdp_port, int) and (0 <= rdp_port <= 65535): + rdp_port = rdp_port + else: + rdp_port = 3389 + xrdp_data = { + 'name': 'XRDP', + 'host': host, + 'https_port': 0, + 'http_port': 0, + 'ssh_port': 0, + 'rdp_port': rdp_port, + 'mysql_port': 0, + 'mariadb_port': 0, + 'postgresql_port': 0, + 'created_by': 'System' + } + xrdp_endpoint = Endpoint.objects.create(**xrdp_data) + + EndpointRule = apps.get_model("terminal", "EndpointRule") + xrdp_rule_data = { + 'name': 'XRDP', + 'ip_group': ['*'], + 'priority': 20, + 'endpoint': xrdp_endpoint, + 'created_by': 'System' + } + EndpointRule.objects.create(**xrdp_rule_data) class Migration(migrations.Migration):