mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-07-06 11:36:32 +00:00
perf: 创建内置 platforms
This commit is contained in:
parent
68ed3ac1a8
commit
a35e0c5efa
@ -16,14 +16,8 @@ class HostTypes(BaseType):
|
|||||||
'domain_enabled': True,
|
'domain_enabled': True,
|
||||||
'su_enabled': True,
|
'su_enabled': True,
|
||||||
'su_methods': [
|
'su_methods': [
|
||||||
{
|
{'name': 'sudo su', 'id': 'sudo su'},
|
||||||
'name': 'sudo su',
|
{'name': 'su -', 'id': 'su -'}
|
||||||
'id': 'sudo su'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name': 'su -',
|
|
||||||
'id': 'su -'
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
cls.WINDOWS: {
|
cls.WINDOWS: {
|
||||||
@ -72,10 +66,10 @@ class HostTypes(BaseType):
|
|||||||
],
|
],
|
||||||
cls.WINDOWS: [
|
cls.WINDOWS: [
|
||||||
{'name': 'Windows'},
|
{'name': 'Windows'},
|
||||||
{'name': 'Windows-TLS', 'protocol_settings': {
|
{'name': 'Windows-TLS', 'protocols_setting': {
|
||||||
'rdp': {'security': 'tls'},
|
'rdp': {'security': 'tls'},
|
||||||
}},
|
}},
|
||||||
{'name': 'Windows-RDP', 'protocol_settings': {
|
{'name': 'Windows-RDP', 'protocols_setting': {
|
||||||
'rdp': {'security': 'rdp'},
|
'rdp': {'security': 'rdp'},
|
||||||
}}
|
}}
|
||||||
],
|
],
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
from copy import deepcopy
|
||||||
|
|
||||||
from common.db.models import IncludesTextChoicesMeta, ChoicesMixin
|
from common.db.models import IncludesTextChoicesMeta, ChoicesMixin
|
||||||
from common.tree import TreeNode
|
from common.tree import TreeNode
|
||||||
|
|
||||||
@ -161,14 +163,47 @@ class AllTypes(ChoicesMixin, metaclass=IncludesTextChoicesMeta):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_or_update_internal_platforms(cls):
|
def create_or_update_internal_platforms(cls):
|
||||||
from assets.models import Platform
|
from assets.models import Platform, PlatformAutomation, PlatformProtocol
|
||||||
|
print("Create internal platforms")
|
||||||
for category, type_cls in cls.category_types():
|
for category, type_cls in cls.category_types():
|
||||||
|
print("## Category: {}".format(category.label))
|
||||||
data = type_cls.internal_platforms()
|
data = type_cls.internal_platforms()
|
||||||
|
|
||||||
for tp, platform_datas in data.items():
|
for tp, platform_datas in data.items():
|
||||||
|
print(" >> Type: {}".format(tp.label))
|
||||||
|
default_platform_data = cls.get_type_default_platform(category, tp)
|
||||||
|
default_automation = default_platform_data.pop('automation', {})
|
||||||
|
default_protocols = default_platform_data.pop('protocols', [])
|
||||||
|
|
||||||
for d in platform_datas:
|
for d in platform_datas:
|
||||||
platform_data = {
|
name = d['name']
|
||||||
**d, 'category': category.value, 'type': tp.value,
|
print(" - Platform: {}".format(name))
|
||||||
'internal': True, 'charset': 'utf-8'
|
_automation = d.pop('automation', {})
|
||||||
}
|
_protocols = d.pop('_protocols', [])
|
||||||
|
_protocols_setting = d.pop('protocols_setting', {})
|
||||||
|
|
||||||
|
protocols_data = deepcopy(default_protocols)
|
||||||
|
if _protocols:
|
||||||
|
protocols_data = [p for p in protocols_data if p['name'] in _protocols]
|
||||||
|
for p in protocols_data:
|
||||||
|
p['setting'] = {**_protocols_setting.get(p['name'], {}), **p.get('setting', {})}
|
||||||
|
|
||||||
|
platform_data = {**default_platform_data, **d}
|
||||||
|
automation_data = {**default_automation, **_automation}
|
||||||
|
platform, created = Platform.objects.update_or_create(
|
||||||
|
defaults=platform_data, name=platform_data['name']
|
||||||
|
)
|
||||||
|
|
||||||
|
if not platform.automation:
|
||||||
|
automation = PlatformAutomation.objects.create()
|
||||||
|
platform.automation = automation
|
||||||
|
platform.save()
|
||||||
|
else:
|
||||||
|
automation = platform.automation
|
||||||
|
for k, v in automation_data.items():
|
||||||
|
setattr(automation, k, v)
|
||||||
|
automation.save()
|
||||||
|
|
||||||
|
platform.protocols.all().delete()
|
||||||
|
[PlatformProtocol.objects.create(**p, platform=platform) for p in protocols_data]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user