mirror of https://github.com/jumpserver/jumpserver
89 lines
2.4 KiB
Python
89 lines
2.4 KiB
Python
# Generated by Django 2.2.5 on 2019-11-25 01:31
|
|
|
|
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',
|
|
defaults={
|
|
'name': 'null', 'type': 'null',
|
|
'comment': "Do not save",
|
|
'meta': '{}'
|
|
}
|
|
)
|
|
model.objects.update_or_create(
|
|
name='default', type='server',
|
|
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)
|
|
|
|
setting = get_setting(apps, schema_editor, "TERMINAL_COMMAND_STORAGE")
|
|
if not setting:
|
|
return
|
|
values = get_storage_data(setting)
|
|
for name, meta in values.items():
|
|
tp = meta.pop("TYPE")
|
|
if not tp or name in ['default', 'null']:
|
|
continue
|
|
print("- command storage Meta: ", meta)
|
|
model.objects.create(name=name, type=tp, meta=meta)
|
|
|
|
|
|
def migrate_replay_storage(apps, schema_editor):
|
|
model = apps.get_model("terminal", "ReplayStorage")
|
|
init_storage_data(model)
|
|
|
|
setting = get_setting(apps, schema_editor, "TERMINAL_REPLAY_STORAGE")
|
|
if not setting:
|
|
return
|
|
values = get_storage_data(setting)
|
|
for name, meta in values.items():
|
|
tp = meta.pop("TYPE", None)
|
|
if not tp or name in ['default', 'null']:
|
|
continue
|
|
model.objects.create(name=name, type=tp, meta=meta)
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
dependencies = [
|
|
('settings', '0001_initial'),
|
|
('terminal', '0016_commandstorage_replaystorage'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.RunPython(migrate_command_storage),
|
|
migrations.RunPython(migrate_replay_storage),
|
|
]
|