feat: 优化Endpoint迁移逻辑,增加XRDP规则和Endpoint

fix: 修改Endpoint迁移文件
pull/8079/head
Jiangjie.Bai 2022-04-18 15:17:28 +08:00 committed by Jiangjie.Bai
parent 548a374c6d
commit 3eab621b28
2 changed files with 48 additions and 14 deletions

View File

@ -313,7 +313,7 @@ class Config(dict):
'TERMINAL_HOST_KEY': '',
'TERMINAL_TELNET_REGEX': '',
'TERMINAL_COMMAND_STORAGE': {},
# 未来废弃(当下迁移会用)
# 未来废弃(目前迁移会用)
'TERMINAL_RDP_ADDR': '',
# 保留(Luna还在用)
'TERMINAL_MAGNUS_ENABLED': True,

View File

@ -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):