mirror of https://github.com/jumpserver/jumpserver
perf: 修改 terminal session
parent
dca1388a67
commit
063c42b94d
|
@ -9,7 +9,7 @@ class Migration(migrations.Migration):
|
|||
('applications', '0022_auto_20220817_1346'),
|
||||
('perms', '0031_auto_20220816_1600'),
|
||||
('ops', '0022_auto_20220817_1346'),
|
||||
('assets', '0109_auto_20220817_1544'),
|
||||
('assets', '0105_auto_20220817_1544'),
|
||||
('tickets', '0020_auto_20220817_1346'),
|
||||
]
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ from common.tree import TreeNode
|
|||
|
||||
|
||||
__all__ = [
|
||||
'Category', 'HostTypes', 'NetworkTypes', 'DatabaseTypes',
|
||||
'Category', 'HostTypes', 'NetworkingTypes', 'DatabaseTypes',
|
||||
'WebTypes', 'CloudTypes', 'Protocol', 'AllTypes',
|
||||
]
|
||||
|
||||
|
@ -26,7 +26,7 @@ class PlatformMixin:
|
|||
|
||||
class Category(PlatformMixin, ChoicesMixin, models.TextChoices):
|
||||
HOST = 'host', _('Host')
|
||||
NETWORK = 'network', _("NetworkDevice")
|
||||
NETWORKING = 'networking', _("NetworkDevice")
|
||||
DATABASE = 'database', _("Database")
|
||||
CLOUD = 'cloud', _("Clouding")
|
||||
WEB = 'web', _("Web")
|
||||
|
@ -42,7 +42,7 @@ class Category(PlatformMixin, ChoicesMixin, models.TextChoices):
|
|||
'has_create_account': True,
|
||||
'_protocols': ['ssh', 'telnet']
|
||||
},
|
||||
cls.NETWORK: {
|
||||
cls.NETWORKING: {
|
||||
'has_domain': True,
|
||||
'_protocols': ['ssh', 'telnet']
|
||||
},
|
||||
|
@ -84,7 +84,7 @@ class HostTypes(PlatformMixin, ChoicesMixin, models.TextChoices):
|
|||
}
|
||||
|
||||
|
||||
class NetworkTypes(PlatformMixin, ChoicesMixin, models.TextChoices):
|
||||
class NetworkingTypes(PlatformMixin, ChoicesMixin, models.TextChoices):
|
||||
SWITCH = 'switch', _("Switch")
|
||||
ROUTER = 'router', _("Router")
|
||||
FIREWALL = 'firewall', _("Firewall")
|
||||
|
@ -121,7 +121,7 @@ class CloudTypes(PlatformMixin, ChoicesMixin, models.TextChoices):
|
|||
class AllTypes(ChoicesMixin, metaclass=IncludesTextChoicesMeta):
|
||||
choices: list
|
||||
includes = [
|
||||
HostTypes, NetworkTypes, DatabaseTypes,
|
||||
HostTypes, NetworkingTypes, DatabaseTypes,
|
||||
WebTypes, CloudTypes
|
||||
]
|
||||
|
||||
|
@ -150,7 +150,7 @@ class AllTypes(ChoicesMixin, metaclass=IncludesTextChoicesMeta):
|
|||
def category_types(cls):
|
||||
return (
|
||||
(Category.HOST, HostTypes),
|
||||
(Category.NETWORK, NetworkTypes),
|
||||
(Category.NETWORKING, NetworkingTypes),
|
||||
(Category.DATABASE, DatabaseTypes),
|
||||
(Category.WEB, WebTypes),
|
||||
(Category.CLOUD, CloudTypes)
|
||||
|
@ -217,6 +217,8 @@ class Protocol(ChoicesMixin, models.TextChoices):
|
|||
mongodb = 'mongodb', 'MongoDB'
|
||||
|
||||
k8s = 'k8s', 'K8S'
|
||||
http = 'http', 'HTTP'
|
||||
https = 'https', 'HTTPS'
|
||||
|
||||
@classmethod
|
||||
def host_protocols(cls):
|
||||
|
@ -245,6 +247,9 @@ class Protocol(ChoicesMixin, models.TextChoices):
|
|||
cls.mongodb: 27017,
|
||||
cls.redis: 6379,
|
||||
|
||||
cls.k8s: 0
|
||||
cls.k8s: 0,
|
||||
|
||||
cls.http: 80,
|
||||
cls.https: 443
|
||||
}
|
||||
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
# Generated by Django 3.1.14 on 2022-04-06 07:41
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0094_auto_20220402_1736'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='asset',
|
||||
name='category',
|
||||
field=models.CharField(choices=[('host', 'Host'), ('network', 'Networking'), ('database', 'Database'), ('remote_app', 'Remote app'), ('cloud', 'Clouding')], default='host', max_length=16, verbose_name='Category'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='asset',
|
||||
name='type',
|
||||
field=models.CharField(choices=[('linux', 'Linux'), ('windows', 'Windows'), ('unix', 'Unix'), ('bsd', 'BSD'), ('macos', 'MacOS'), ('mainframe', 'Mainframe'), ('other_host', 'Other host'), ('switch', 'Switch'), ('router', 'Router'), ('firewall', 'Firewall'), ('other_network', 'Other device'), ('mysql', 'MySQL'), ('mariadb', 'MariaDB'), ('postgresql', 'PostgreSQL'), ('oracle', 'Oracle'), ('sqlserver', 'SQLServer'), ('mongodb', 'MongoDB'), ('redis', 'Redis'), ('chrome', 'Chrome'), ('vmware_client', 'vSphere client'), ('mysql_workbench', 'MySQL workbench'), ('general_remote_app', 'Custom'), ('k8s', 'Kubernetes')], max_length=128, verbose_name='Type'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
|
@ -14,7 +14,7 @@ def migrate_platform_type_to_lower(apps, *args):
|
|||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0096_auto_20220406_1546'),
|
||||
('assets', '0094_auto_20220402_1736'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
@ -26,8 +26,7 @@ class Migration(migrations.Migration):
|
|||
migrations.AddField(
|
||||
model_name='platform',
|
||||
name='category',
|
||||
field=models.CharField(default='host', max_length=16, verbose_name='Category'),
|
||||
preserve_default=False,
|
||||
field=models.CharField(default='host', max_length=32, verbose_name='Category'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='platform',
|
|
@ -1,15 +0,0 @@
|
|||
# Generated by Django 3.1.14 on 2022-04-06 07:46
|
||||
from itertools import groupby
|
||||
|
||||
from django.db import migrations
|
||||
from django.db.models import F
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0095_auto_20220406_1541'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
]
|
|
@ -7,7 +7,7 @@ import django.db.models.deletion
|
|||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0097_auto_20220407_1726'),
|
||||
('assets', '0095_auto_20220407_1726'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
@ -23,7 +23,7 @@ class Migration(migrations.Migration):
|
|||
bases=('assets.asset',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Network',
|
||||
name='Networking',
|
||||
fields=[
|
||||
('asset_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='assets.asset')),
|
||||
],
|
||||
|
@ -32,19 +32,6 @@ class Migration(migrations.Migration):
|
|||
},
|
||||
bases=('assets.asset',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='RemoteApp',
|
||||
fields=[
|
||||
('asset_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='assets.asset')),
|
||||
('connect_host', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='assets.host')),
|
||||
('app_path', models.CharField(max_length=1024, verbose_name='App path')),
|
||||
('attrs', models.JSONField(default=dict, verbose_name='Attrs')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('assets.asset',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Cloud',
|
||||
fields=[
|
||||
|
@ -56,4 +43,15 @@ class Migration(migrations.Migration):
|
|||
},
|
||||
bases=('assets.asset',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Web',
|
||||
fields=[
|
||||
('asset_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='assets.asset')),
|
||||
('url', models.CharField(max_length=1024, verbose_name='url')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('assets.asset',),
|
||||
),
|
||||
]
|
|
@ -57,7 +57,6 @@ def migrate_database_to_asset(apps, *args):
|
|||
db = db_model(
|
||||
id=app.id, hostname=app.name, ip=attrs['host'],
|
||||
protocols='{}/{}'.format(app.type, attrs['port']),
|
||||
category='database', type=app.type,
|
||||
db_name=attrs['database'] or '',
|
||||
platform=platforms_map[app.type],
|
||||
org_id=app.org_id
|
||||
|
@ -69,48 +68,48 @@ def migrate_database_to_asset(apps, *args):
|
|||
failed_apps.append(app)
|
||||
pass
|
||||
|
||||
|
||||
def migrate_remote_app_to_asset(apps, *args):
|
||||
app_model = apps.get_model('applications', 'Application')
|
||||
remote_app_model = apps.get_model('assets', 'RemoteApp')
|
||||
host_model = apps.get_model('assets', 'Host')
|
||||
platform_model = apps.get_model('assets', 'Platform')
|
||||
applications = app_model.objects.filter(category='remote_app')
|
||||
platforms = platform_model.objects.filter(category='remote_app')
|
||||
platforms_map = {p.type: p for p in platforms}
|
||||
|
||||
connect_host_map = {}
|
||||
|
||||
for app in applications:
|
||||
attrs = app.attrs
|
||||
connect_host = attrs.pop('asset')
|
||||
if connect_host:
|
||||
connect_host = host_model.objects.filter(asset_ptr_id=connect_host).first()
|
||||
connect_host_map[app.id] = connect_host
|
||||
|
||||
for app in applications:
|
||||
tp = app.type
|
||||
app_path = attrs.pop('path', '')
|
||||
if tp == 'custom':
|
||||
tp = 'general_remote_app'
|
||||
|
||||
print("Create remote app: {}".format(app.name))
|
||||
remote_app = remote_app_model(
|
||||
id=app.id, hostname=app.name, ip='',
|
||||
protocols='',
|
||||
category='remote_app', type=tp,
|
||||
platform=platforms_map[tp],
|
||||
org_id=app.org_id,
|
||||
|
||||
app_path=app_path,
|
||||
connect_host=connect_host_map.get(app.id),
|
||||
attrs=attrs,
|
||||
)
|
||||
try:
|
||||
remote_app.save()
|
||||
except Exception as e:
|
||||
print("Error: ", e)
|
||||
# remote_app.hostname = 'RemoteApp-' + remote_app.hostname
|
||||
#
|
||||
# def migrate_remote_app_to_asset(apps, *args):
|
||||
# app_model = apps.get_model('applications', 'Application')
|
||||
# remote_app_model = apps.get_model('assets', 'Web')
|
||||
# host_model = apps.get_model('assets', 'Host')
|
||||
# platform_model = apps.get_model('assets', 'Platform')
|
||||
# applications = app_model.objects.filter(category='remote_app')
|
||||
# platforms = platform_model.objects.filter(category='remote_app')
|
||||
# platforms_map = {p.type: p for p in platforms}
|
||||
#
|
||||
# connect_host_map = {}
|
||||
#
|
||||
# for app in applications:
|
||||
# attrs = app.attrs
|
||||
# connect_host = attrs.pop('asset')
|
||||
# if connect_host:
|
||||
# connect_host = host_model.objects.filter(asset_ptr_id=connect_host).first()
|
||||
# connect_host_map[app.id] = connect_host
|
||||
#
|
||||
# for app in applications:
|
||||
# tp = app.type
|
||||
# attrs = app.attrs
|
||||
# app_path = attrs.pop('path', '')
|
||||
# if tp == 'custom':
|
||||
# tp = 'general_remote_app'
|
||||
#
|
||||
# print("Create remote app: {}".format(app.name))
|
||||
# remote_app = remote_app_model(
|
||||
# id=app.id, hostname=app.name, ip='',
|
||||
# protocols='',
|
||||
# platform=platforms_map[tp],
|
||||
# org_id=app.org_id,
|
||||
# app_path=app_path,
|
||||
# connect_host=connect_host_map.get(app.id),
|
||||
# attrs=attrs,
|
||||
# )
|
||||
# try:
|
||||
# remote_app.save()
|
||||
# except Exception as e:
|
||||
# print("Error: ", e)
|
||||
# # remote_app.hostname = 'RemoteApp-' + remote_app.hostname
|
||||
#
|
||||
|
||||
|
||||
def migrate_cloud_to_asset(apps, *args):
|
||||
|
@ -126,7 +125,6 @@ def migrate_cloud_to_asset(apps, *args):
|
|||
print("Create cloud: {}".format(app.name))
|
||||
cloud = cloud_model(
|
||||
id=app.id, hostname=app.name, ip='',
|
||||
category='remote_app', type='k8s',
|
||||
protocols='',
|
||||
platform=platform,
|
||||
org_id=app.org_id,
|
||||
|
@ -176,7 +174,7 @@ def migrate_to_nodes(apps, *args):
|
|||
for org in orgs:
|
||||
node = create_app_nodes(apps, org.id)
|
||||
assets = asset_model.objects.filter(
|
||||
category__in=['remote_app', 'database', 'cloud'],
|
||||
platform__category__in=['remote_app', 'database', 'cloud'],
|
||||
org_id=org.id
|
||||
)
|
||||
if not node:
|
||||
|
@ -192,14 +190,13 @@ def migrate_to_nodes(apps, *args):
|
|||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
('assets', '0098_auto_20220426_1550'),
|
||||
('assets', '0096_auto_20220426_1550'),
|
||||
('applications', '0020_auto_20220316_2028')
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(create_app_platform),
|
||||
migrations.RunPython(migrate_database_to_asset),
|
||||
migrations.RunPython(migrate_remote_app_to_asset),
|
||||
migrations.RunPython(migrate_cloud_to_asset),
|
||||
migrations.RunPython(migrate_to_nodes)
|
||||
]
|
|
@ -7,7 +7,7 @@ import django.db.models.deletion
|
|||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0099_auto_20220426_1558'),
|
||||
('assets', '0097_auto_20220426_1558'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
@ -73,7 +73,7 @@ class Migration(migrations.Migration):
|
|||
migrations.AddField(
|
||||
model_name='platform',
|
||||
name='su_enabled',
|
||||
field=models.BooleanField(default=False),
|
||||
field=models.BooleanField(default=False, verbose_name='Su enabled'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='platform',
|
||||
|
@ -90,14 +90,4 @@ class Migration(migrations.Migration):
|
|||
name='verify_account_method',
|
||||
field=models.TextField(blank=True, max_length=32, null=True, verbose_name='Verify account method'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='asset',
|
||||
name='category',
|
||||
field=models.CharField(choices=[('host', 'Host'), ('network', 'NetworkDevice'), ('database', 'Database'), ('remote_app', 'Remote app'), ('cloud', 'Clouding')], max_length=16, verbose_name='Category'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='platform',
|
||||
name='category',
|
||||
field=models.CharField(choices=[('host', 'Host'), ('network', 'NetworkDevice'), ('database', 'Database'), ('remote_app', 'Remote app'), ('cloud', 'Clouding')], max_length=16, verbose_name='Category'),
|
||||
),
|
||||
]
|
|
@ -13,7 +13,7 @@ class Migration(migrations.Migration):
|
|||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('assets', '0100_auto_20220430_2126'),
|
||||
('assets', '0098_auto_20220430_2126'),
|
||||
]
|
||||
|
||||
operations = [
|
|
@ -55,7 +55,7 @@ def migrate_accounts(apps, schema_editor):
|
|||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0101_auto_20220711_1409'),
|
||||
('assets', '0099_auto_20220711_1409'),
|
||||
]
|
||||
|
||||
operations = [
|
|
@ -6,7 +6,7 @@ from django.db import migrations, models
|
|||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0102_auto_20220711_1413'),
|
||||
('assets', '0100_auto_20220711_1413'),
|
||||
]
|
||||
|
||||
operations = [
|
|
@ -44,7 +44,7 @@ def migrate_asset_protocols(apps, schema_editor):
|
|||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0103_auto_20220803_1448'),
|
||||
('assets', '0101_auto_20220803_1448'),
|
||||
]
|
||||
|
||||
operations = [
|
|
@ -1,15 +1,37 @@
|
|||
# Generated by Django 3.2.14 on 2022-08-11 07:11
|
||||
|
||||
import assets.models.platform
|
||||
import django.db.models
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0106_auto_20220811_1449'),
|
||||
('assets', '0102_auto_20220803_1859'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='asset',
|
||||
name='platform',
|
||||
field=models.ForeignKey(default=assets.models.platform.Platform.default, on_delete=django.db.models.deletion.PROTECT, related_name='assets', to='assets.platform', verbose_name='Platform'),
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='asset',
|
||||
name='_protocols',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='asset',
|
||||
name='admin_user',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='asset',
|
||||
name='number',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='asset',
|
||||
name='public_ip',
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='asset',
|
||||
options={'ordering': ['name'], 'permissions': [('refresh_assethardwareinfo', 'Can refresh asset hardware info'), ('test_assetconnectivity', 'Can test asset connectivity'), ('push_assetsystemuser', 'Can push system user to asset'), ('match_asset', 'Can match asset'), ('add_assettonode', 'Add asset to node'), ('move_assettonode', 'Move asset to node')], 'verbose_name': 'Asset'},
|
|
@ -46,7 +46,7 @@ def migrate_command_filter_apps(apps, schema_editor):
|
|||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0107_auto_20220811_1511'),
|
||||
('assets', '0103_auto_20220811_1511'),
|
||||
]
|
||||
|
||||
operations = [
|
|
@ -1,46 +0,0 @@
|
|||
# Generated by Django 3.2.14 on 2022-08-10 06:49
|
||||
|
||||
import assets.models.platform
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0104_auto_20220803_1859'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='asset',
|
||||
name='category',
|
||||
field=models.CharField(choices=[('host', 'Host'), ('network', 'NetworkDevice'), ('database', 'Database'), ('cloud', 'Clouding'), ('web', 'Web')], max_length=16, verbose_name='Category'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='asset',
|
||||
name='platform',
|
||||
field=models.ForeignKey(default=assets.models.platform.Platform.default, on_delete=django.db.models.deletion.PROTECT, related_name='assets', to='assets.platform', verbose_name='Platform'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='asset',
|
||||
name='type',
|
||||
field=models.CharField(choices=[('linux', 'Linux'), ('windows', 'Windows'), ('unix', 'Unix'), ('bsd', 'BSD'), ('macos', 'MacOS'), ('mainframe', 'Mainframe'), ('other_host', 'Other host'), ('switch', 'Switch'), ('router', 'Router'), ('firewall', 'Firewall'), ('other_network', 'Other device'), ('mysql', 'MySQL'), ('mariadb', 'MariaDB'), ('postgresql', 'PostgreSQL'), ('oracle', 'Oracle'), ('sqlserver', 'SQLServer'), ('mongodb', 'MongoDB'), ('redis', 'Redis'), ('general', 'General'), ('k8s', 'Kubernetes')], max_length=128, verbose_name='Type'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='platform',
|
||||
name='category',
|
||||
field=models.CharField(choices=[('host', 'Host'), ('network', 'NetworkDevice'), ('database', 'Database'), ('cloud', 'Clouding'), ('web', 'Web')], default='host', max_length=16, verbose_name='Category'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='platform',
|
||||
name='type',
|
||||
field=models.CharField(choices=[('linux', 'Linux'), ('windows', 'Windows'), ('unix', 'Unix'), ('bsd', 'BSD'), ('macos', 'MacOS'), ('mainframe', 'Mainframe'), ('other_host', 'Other host'), ('switch', 'Switch'), ('router', 'Router'), ('firewall', 'Firewall'), ('other_network', 'Other device'), ('mysql', 'MySQL'), ('mariadb', 'MariaDB'), ('postgresql', 'PostgreSQL'), ('oracle', 'Oracle'), ('sqlserver', 'SQLServer'), ('mongodb', 'MongoDB'), ('redis', 'Redis'), ('general', 'General'), ('k8s', 'Kubernetes')], default='Linux', max_length=32, verbose_name='Type'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='platform',
|
||||
name='su_enabled',
|
||||
field=models.BooleanField(default=False, verbose_name='Su enabled'),
|
||||
),
|
||||
]
|
|
@ -6,7 +6,7 @@ from django.db import migrations
|
|||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0108_auto_20220816_1022'),
|
||||
('assets', '0104_auto_20220816_1022'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
@ -41,4 +41,22 @@ class Migration(migrations.Migration):
|
|||
model_name='systemuser',
|
||||
name='users',
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='authbook',
|
||||
unique_together=None,
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='authbook',
|
||||
name='asset',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='authbook',
|
||||
name='systemuser',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='HistoricalAuthBook',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='AuthBook',
|
||||
),
|
||||
]
|
|
@ -1,37 +0,0 @@
|
|||
# Generated by Django 3.2.14 on 2022-08-11 06:49
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0105_auto_20220810_1449'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='asset',
|
||||
name='_protocols',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='asset',
|
||||
name='admin_user',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='asset',
|
||||
name='category',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='asset',
|
||||
name='number',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='asset',
|
||||
name='public_ip',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='asset',
|
||||
name='type',
|
||||
),
|
||||
]
|
|
@ -9,7 +9,7 @@ import uuid
|
|||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0110_auto_20220817_1716'),
|
||||
('assets', '0105_auto_20220817_1544'),
|
||||
]
|
||||
|
||||
operations = [
|
|
@ -1,32 +0,0 @@
|
|||
# Generated by Django 3.2.14 on 2022-08-17 09:16
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assets', '0109_auto_20220817_1544'),
|
||||
('applications', '0022_auto_20220817_1346'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterUniqueTogether(
|
||||
name='authbook',
|
||||
unique_together=None,
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='authbook',
|
||||
name='asset',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='authbook',
|
||||
name='systemuser',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='HistoricalAuthBook',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='AuthBook',
|
||||
),
|
||||
]
|
|
@ -1,6 +1,6 @@
|
|||
from .common import *
|
||||
from .host import *
|
||||
from .database import *
|
||||
from .network import *
|
||||
from .remote_app import *
|
||||
from .networking import *
|
||||
from .web import *
|
||||
from .cloud import *
|
||||
|
|
|
@ -2,5 +2,5 @@
|
|||
from .common import Asset
|
||||
|
||||
|
||||
class Network(Asset):
|
||||
class Networking(Asset):
|
||||
pass
|
|
@ -1,10 +0,0 @@
|
|||
from django.utils.translation import gettext_lazy as _
|
||||
from django.db import models
|
||||
|
||||
from .common import Asset
|
||||
|
||||
|
||||
class RemoteApp(Asset):
|
||||
app_path = models.CharField(max_length=1024, verbose_name=_("App path"))
|
||||
connect_host = models.ForeignKey('assets.Host', null=True, on_delete=models.SET_NULL)
|
||||
attrs = models.JSONField(default=dict, verbose_name=_('Attrs'))
|
|
@ -0,0 +1,8 @@
|
|||
from django.utils.translation import gettext_lazy as _
|
||||
from django.db import models
|
||||
|
||||
from .common import Asset
|
||||
|
||||
|
||||
class Web(Asset):
|
||||
url = models.CharField(max_length=1024, verbose_name=_("url"))
|
|
@ -24,8 +24,8 @@ class Platform(models.Model):
|
|||
('gbk', 'GBK'),
|
||||
)
|
||||
name = models.SlugField(verbose_name=_("Name"), unique=True, allow_unicode=True)
|
||||
category = models.CharField(max_length=16, choices=Category.choices, default=Category.HOST, verbose_name=_("Category"))
|
||||
type = models.CharField(choices=AllTypes.choices, max_length=32, default='Linux', verbose_name=_("Type"))
|
||||
category = models.CharField(default='host', max_length=32, verbose_name=_("Category"))
|
||||
type = models.CharField(max_length=32, default='linux', verbose_name=_("Type"))
|
||||
charset = models.CharField(default='utf8', choices=CHARSET_CHOICES, max_length=8, verbose_name=_("Charset"))
|
||||
meta = JsonDictTextField(blank=True, null=True, verbose_name=_("Meta"))
|
||||
internal = models.BooleanField(default=False, verbose_name=_("Internal"))
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
from rest_framework import serializers
|
||||
|
||||
from assets.models import DeviceInfo, Host, Database, Network, Cloud
|
||||
from assets.models import DeviceInfo, Host, Database, Networking, Cloud
|
||||
from .common import AssetSerializer
|
||||
|
||||
__all__ = [
|
||||
'DeviceSerializer', 'HostSerializer', 'DatabaseSerializer',
|
||||
'NetworkSerializer', 'CloudSerializer',
|
||||
'NetworkingSerializer', 'CloudSerializer',
|
||||
]
|
||||
|
||||
|
||||
|
@ -34,9 +34,9 @@ class DatabaseSerializer(AssetSerializer):
|
|||
fields = AssetSerializer.Meta.fields + ['db_name']
|
||||
|
||||
|
||||
class NetworkSerializer(AssetSerializer):
|
||||
class NetworkingSerializer(AssetSerializer):
|
||||
class Meta(AssetSerializer.Meta):
|
||||
model = Network
|
||||
model = Networking
|
||||
|
||||
|
||||
class CloudSerializer(AssetSerializer):
|
||||
|
|
|
@ -55,7 +55,7 @@ class SessionViewSet(OrgBulkModelViewSet):
|
|||
'display': serializers.SessionDisplaySerializer,
|
||||
}
|
||||
search_fields = [
|
||||
"user", "asset", "system_user", "remote_addr",
|
||||
"user", "asset", "account", "remote_addr",
|
||||
"protocol", "is_finished", 'login_from',
|
||||
]
|
||||
filterset_fields = search_fields + ['terminal']
|
||||
|
|
|
@ -13,6 +13,20 @@ class Migration(migrations.Migration):
|
|||
migrations.AlterField(
|
||||
model_name='session',
|
||||
name='protocol',
|
||||
field=models.CharField(choices=[('ssh', 'SSH'), ('rdp', 'RDP'), ('telnet', 'Telnet'), ('vnc', 'VNC'), ('mysql', 'MySQL'), ('mariadb', 'MariaDB'), ('oracle', 'Oracle'), ('postgresql', 'PostgreSQL'), ('sqlserver', 'SQLServer'), ('redis', 'Redis'), ('mongodb', 'MongoDB'), ('k8s', 'K8S')], db_index=True, default='ssh', max_length=16),
|
||||
field=models.CharField(db_index=True, default='ssh', max_length=16),
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name='session',
|
||||
old_name='system_user',
|
||||
new_name='account',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='session',
|
||||
name='system_user_id',
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='session',
|
||||
name='account',
|
||||
field=models.CharField(db_index=True, max_length=128, verbose_name='Account'),
|
||||
),
|
||||
]
|
||||
|
|
|
@ -31,8 +31,8 @@ class Session(OrgModelMixin):
|
|||
user_id = models.CharField(blank=True, default='', max_length=36, db_index=True)
|
||||
asset = models.CharField(max_length=128, verbose_name=_("Asset"), db_index=True)
|
||||
asset_id = models.CharField(blank=True, default='', max_length=36, db_index=True)
|
||||
system_user = models.CharField(max_length=128, verbose_name=_("System user"), db_index=True)
|
||||
system_user_id = models.CharField(blank=True, default='', max_length=36, db_index=True)
|
||||
account = models.CharField(max_length=128, verbose_name=_("Account"), db_index=True)
|
||||
protocol = models.CharField(default='ssh', max_length=16, db_index=True)
|
||||
login_from = models.CharField(max_length=2, choices=LOGIN_FROM.choices, default="ST", verbose_name=_("Login from"))
|
||||
remote_addr = models.CharField(max_length=128, verbose_name=_("Remote addr"), blank=True, null=True)
|
||||
is_success = models.BooleanField(default=True, db_index=True)
|
||||
|
@ -40,7 +40,6 @@ class Session(OrgModelMixin):
|
|||
has_replay = models.BooleanField(default=False, verbose_name=_("Replay"))
|
||||
has_command = models.BooleanField(default=False, verbose_name=_("Command"))
|
||||
terminal = models.ForeignKey('terminal.Terminal', null=True, on_delete=models.DO_NOTHING, db_constraint=False)
|
||||
protocol = models.CharField(choices=Protocol.choices, default='ssh', max_length=16, db_index=True)
|
||||
date_start = models.DateTimeField(verbose_name=_("Date start"), db_index=True, default=timezone.now)
|
||||
date_end = models.DateTimeField(verbose_name=_("Date end"), null=True)
|
||||
|
||||
|
@ -123,9 +122,9 @@ class Session(OrgModelMixin):
|
|||
return False
|
||||
if self.login_from == self.LOGIN_FROM.RT:
|
||||
return False
|
||||
if Protocol in [
|
||||
Protocol.SSH, Protocol.VNC, Protocol.RDP,
|
||||
Protocol.TELNET, Protocol.K8S
|
||||
if self.protocol in [
|
||||
Protocol.ssh, Protocol.vnc, Protocol.rdp,
|
||||
Protocol.telnet, Protocol.k8s
|
||||
]:
|
||||
return True
|
||||
else:
|
||||
|
|
|
@ -2,6 +2,8 @@ from rest_framework import serializers
|
|||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from orgs.mixins.serializers import BulkOrgResourceModelSerializer
|
||||
|
||||
from assets.const import Protocol
|
||||
from ..models import Session
|
||||
|
||||
__all__ = [
|
||||
|
@ -13,16 +15,15 @@ __all__ = [
|
|||
class SessionSerializer(BulkOrgResourceModelSerializer):
|
||||
org_id = serializers.CharField(allow_blank=True)
|
||||
terminal_display = serializers.CharField(read_only=True, label=_('Terminal display'))
|
||||
protocol = serializers.ChoiceField(choices=Protocol.choices, label=_("Protocol"))
|
||||
|
||||
class Meta:
|
||||
model = Session
|
||||
fields_mini = ["id"]
|
||||
fields_small = fields_mini + [
|
||||
"user", "asset", "system_user",
|
||||
"user_id", "asset_id", "system_user_id",
|
||||
"login_from", "login_from_display", "remote_addr", "protocol",
|
||||
"is_success", "is_finished", "has_replay",
|
||||
"date_start", "date_end",
|
||||
"user", "asset", "user_id", "asset_id", 'account', "protocol",
|
||||
"login_from", "login_from_display", "remote_addr", "is_success",
|
||||
"is_finished", "has_replay", "date_start", "date_end",
|
||||
]
|
||||
fields_fk = ["terminal", ]
|
||||
fields_custom = ["can_replay", "can_join", "can_terminate", 'terminal_display']
|
||||
|
@ -31,7 +32,6 @@ class SessionSerializer(BulkOrgResourceModelSerializer):
|
|||
"protocol": {'label': _('Protocol')},
|
||||
'user_id': {'label': _('User ID')},
|
||||
'asset_id': {'label': _('Asset ID')},
|
||||
'system_user_id': {'label': _('System user ID')},
|
||||
'login_from_display': {'label': _('Login from display')},
|
||||
'is_success': {'label': _('Is success')},
|
||||
'can_replay': {'label': _('Can replay')},
|
||||
|
|
Loading…
Reference in New Issue