mirror of https://github.com/jumpserver/jumpserver
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
3.3 KiB
134 lines
3.3 KiB
6 months ago
|
# Generated by Django 2.2.5 on 2019-11-25 01:31
|
||
|
|
||
|
from django.conf import settings
|
||
|
from django.db import migrations
|
||
|
|
||
|
|
||
|
def get_storage_data(s):
|
||
|
from common.utils import signer
|
||
|
import json
|
||
|
|
||
|
value = s.value
|
||
|
encrypted = s.encrypted
|
||
|
if encrypted:
|
||
|
value = signer.unsign(value)
|
||
|
try:
|
||
|
value = json.loads(value)
|
||
|
except:
|
||
|
value = {}
|
||
|
return value
|
||
|
|
||
|
|
||
|
def get_setting(apps, schema_editor, key):
|
||
|
model = apps.get_model("settings", "Setting")
|
||
|
db_alias = schema_editor.connection.alias
|
||
|
setting = model.objects.using(db_alias).filter(name=key)
|
||
|
if not setting:
|
||
|
return
|
||
|
return setting[0]
|
||
|
|
||
|
|
||
|
def init_storage_data(model):
|
||
|
model.objects.update_or_create(
|
||
|
name="null",
|
||
|
type="null",
|
||
|
is_default=False,
|
||
|
defaults={
|
||
|
"name": "null",
|
||
|
"type": "null",
|
||
|
"comment": "Do not save",
|
||
|
"meta": "{}",
|
||
|
},
|
||
|
)
|
||
|
model.objects.update_or_create(
|
||
|
name="default",
|
||
|
type="server",
|
||
|
is_default=True,
|
||
|
defaults={
|
||
|
"name": "default",
|
||
|
"type": "server",
|
||
|
"comment": "Store locally",
|
||
|
"meta": "{}",
|
||
|
},
|
||
|
)
|
||
|
|
||
|
|
||
|
def migrate_command_storage(apps, schema_editor):
|
||
|
model = apps.get_model("terminal", "CommandStorage")
|
||
|
init_storage_data(model)
|
||
|
|
||
|
|
||
|
def migrate_replay_storage(apps, schema_editor):
|
||
|
model = apps.get_model("terminal", "ReplayStorage")
|
||
|
init_storage_data(model)
|
||
|
|
||
|
|
||
|
def migrate_endpoints(apps, schema_editor):
|
||
|
Endpoint = apps.get_model("terminal", "Endpoint")
|
||
|
# migrate default
|
||
|
default_data = {
|
||
|
"id": "00000000-0000-0000-0000-000000000001",
|
||
|
"name": "Default",
|
||
|
"host": "",
|
||
|
"https_port": 0,
|
||
|
"http_port": 0,
|
||
|
"created_by": "System",
|
||
|
}
|
||
|
Endpoint.objects.create(**default_data)
|
||
|
|
||
|
if not settings.TERMINAL_RAZOR_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": "Razor",
|
||
|
"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": "Razor",
|
||
|
"ip_group": ["*"],
|
||
|
"priority": 20,
|
||
|
"endpoint": xrdp_endpoint,
|
||
|
"created_by": "System",
|
||
|
}
|
||
|
EndpointRule.objects.create(**xrdp_rule_data)
|
||
|
|
||
|
|
||
|
class Migration(migrations.Migration):
|
||
|
dependencies = [
|
||
|
("settings", "0001_initial"),
|
||
|
("terminal", "0002_auto_20171228_0025"),
|
||
|
]
|
||
|
|
||
|
operations = [
|
||
|
migrations.RunPython(migrate_command_storage),
|
||
|
migrations.RunPython(migrate_replay_storage),
|
||
|
migrations.RunPython(migrate_endpoints),
|
||
|
]
|