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.
101 lines
3.4 KiB
101 lines
3.4 KiB
# Generated by Django 3.2.17 on 2023-03-21 08:33
|
|
|
|
from django.db import migrations, models
|
|
|
|
|
|
def migrate_platform_charset(apps, schema_editor):
|
|
platform_model = apps.get_model('assets', 'Platform')
|
|
platform_model.objects.filter(charset='utf8').update(charset='utf-8')
|
|
|
|
|
|
def migrate_platform_protocol_primary(apps, schema_editor):
|
|
platform_model = apps.get_model('assets', 'Platform')
|
|
platforms = platform_model.objects.all()
|
|
|
|
for platform in platforms:
|
|
p = platform.protocols.filter(primary=True).first()
|
|
if p:
|
|
continue
|
|
p = platform.protocols.first()
|
|
if not p:
|
|
continue
|
|
p.primary = True
|
|
p.save()
|
|
|
|
|
|
def migrate_winrm_for_win(apps, *args):
|
|
platform_cls = apps.get_model('assets', 'Platform')
|
|
windows_name = ['Windows', 'Windows-TLS', 'Windows-RDP']
|
|
windows = platform_cls.objects.filter(name__in=windows_name)
|
|
for platform in windows:
|
|
if platform.protocols.filter(name='winrm').exists():
|
|
continue
|
|
data = {
|
|
'name': 'winrm',
|
|
'port': 5985,
|
|
'primary': False,
|
|
'public': False,
|
|
'required': False,
|
|
'default': False,
|
|
'setting': {"use_ssl": False}
|
|
}
|
|
platform.protocols.create(**data)
|
|
|
|
|
|
def migrate_device_platform_automation(apps, *args):
|
|
platform_cls = apps.get_model('assets', 'Platform')
|
|
names = ['General', 'Cisco', 'H3C', 'Huawei']
|
|
platforms = platform_cls.objects.filter(name__in=names, category='device')
|
|
|
|
for platform in platforms:
|
|
automation = getattr(platform, 'automation', None)
|
|
if not automation:
|
|
continue
|
|
automation.ansible_config = {
|
|
"ansible_connection": "local",
|
|
"first_connect_delay": 0.5,
|
|
}
|
|
automation.ansible_enabled = True
|
|
automation.change_secret_enabled = True
|
|
automation.change_secret_method = "change_secret_by_ssh"
|
|
automation.ping_enabled = True
|
|
automation.ping_method = "ping_by_ssh"
|
|
automation.verify_account_enabled = True
|
|
automation.verify_account_method = "verify_account_by_ssh"
|
|
automation.save()
|
|
|
|
|
|
def migrate_web_login_button_error(apps, *args):
|
|
protocol_cls = apps.get_model('assets', 'PlatformProtocol')
|
|
protocols = protocol_cls.objects.filter(name='http')
|
|
|
|
for protocol in protocols:
|
|
submit_selector = protocol.setting.get('submit_selector', '')
|
|
submit_selector = submit_selector.replace('id=longin_button', 'id=login_button')
|
|
protocol.setting['submit_selector'] = submit_selector
|
|
protocol.save()
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
dependencies = [
|
|
('assets', '0110_auto_20230315_1741'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.AddField(
|
|
model_name='platformprotocol',
|
|
name='primary',
|
|
field=models.BooleanField(default=False, verbose_name='Primary'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='platformprotocol',
|
|
name='public',
|
|
field=models.BooleanField(default=True, verbose_name='Public'),
|
|
),
|
|
migrations.RunPython(migrate_platform_charset),
|
|
migrations.RunPython(migrate_platform_protocol_primary),
|
|
migrations.RunPython(migrate_winrm_for_win),
|
|
migrations.RunPython(migrate_device_platform_automation),
|
|
migrations.RunPython(migrate_web_login_button_error),
|
|
]
|