jumpserver/apps/audits/migrations/0001_initial.py
2025-04-08 19:21:37 +08:00

157 lines
8.5 KiB
Python

# Generated by Django 4.1.13 on 2024-05-09 03:16
import uuid
import django.utils.timezone
from django.db import migrations, models
import common.db.encoder
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='ActivityLog',
fields=[
('org_id',
models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Organization')),
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
('type', models.CharField(
choices=[('O', 'Operate log'), ('S', 'Session log'), ('L', 'Login log'), ('T', 'Task')],
default=None, max_length=2, null=True, verbose_name='Activity type')),
('resource_id',
models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Resource')),
('datetime', models.DateTimeField(auto_now=True, db_index=True, verbose_name='Datetime')),
('detail', models.TextField(blank=True, default='', verbose_name='Detail')),
('detail_id', models.CharField(default=None, max_length=36, null=True, verbose_name='Detail ID')),
],
options={
'verbose_name': 'Activity log',
'ordering': ('-datetime',),
},
),
migrations.CreateModel(
name='FTPLog',
fields=[
('org_id',
models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Organization')),
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
('user', models.CharField(max_length=128, verbose_name='User')),
('remote_addr', models.CharField(blank=True, max_length=128, null=True, verbose_name='Remote addr')),
('asset', models.CharField(max_length=1024, verbose_name='Asset')),
('account', models.CharField(max_length=128, verbose_name='Account')),
('operate', models.CharField(
choices=[('mkdir', 'Mkdir'), ('rmdir', 'Rmdir'), ('delete', 'Delete'), ('upload', 'Upload'),
('rename', 'Rename'), ('symlink', 'Symlink'), ('download', 'Download'),
('rename_dir', 'Rename dir')], max_length=16, verbose_name='Operate')),
('filename', models.CharField(max_length=1024, verbose_name='Filename')),
('is_success', models.BooleanField(default=True, verbose_name='Success')),
('date_start', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Date start')),
('has_file', models.BooleanField(default=False, verbose_name='Can Download')),
('session', models.CharField(default=uuid.uuid4, max_length=36, verbose_name='Session')),
],
options={
'verbose_name': 'File transfer log',
},
),
migrations.CreateModel(
name='OperateLog',
fields=[
('org_id',
models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Organization')),
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
('user', models.CharField(max_length=128, verbose_name='User')),
('action', models.CharField(choices=[
("view", "View"),
("update", "Update"),
("delete", "Delete"),
("create", "Create"),
("export", "Export"),
("download", "Download"),
("connect", "Connect"),
("login", "Login"),
("change_password", "Change password"),
("accept", "Accept"),
("review", "Review"),
("notice", "Notifications"),
("reject", "Reject"),
("approve", "Approve"),
("close", "Close"),
("finished", "Finished"),
], max_length=16, verbose_name='Action')),
('resource_type', models.CharField(max_length=64, verbose_name='Resource Type')),
('resource', models.CharField(max_length=128, verbose_name='Resource')),
('resource_id',
models.CharField(blank=True, db_index=True, default='', max_length=128, verbose_name='Resource')),
('remote_addr', models.CharField(blank=True, max_length=128, null=True, verbose_name='Remote addr')),
('datetime', models.DateTimeField(auto_now=True, db_index=True, verbose_name='Datetime')),
('diff', models.JSONField(default=dict, encoder=common.db.encoder.ModelJSONFieldEncoder, null=True)),
],
options={
'verbose_name': 'Operate log',
'ordering': ('-datetime',),
},
),
migrations.CreateModel(
name='PasswordChangeLog',
fields=[
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
('user', models.CharField(max_length=128, verbose_name='User')),
('change_by', models.CharField(max_length=128, verbose_name='Change by')),
('remote_addr', models.CharField(blank=True, max_length=128, null=True, verbose_name='Remote addr')),
('datetime', models.DateTimeField(auto_now=True, verbose_name='Datetime')),
],
options={
'verbose_name': 'Password change log',
},
),
migrations.CreateModel(
name='UserLoginLog',
fields=[
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
('username', models.CharField(max_length=128, verbose_name='Username')),
('type', models.CharField(choices=[('W', 'Web'), ('T', 'Terminal'), ('U', 'Unknown')], max_length=2,
verbose_name='Login type')),
('ip', models.GenericIPAddressField(verbose_name='Login IP')),
('city', models.CharField(blank=True, max_length=254, null=True, verbose_name='Login city')),
('user_agent', models.CharField(blank=True, max_length=254, null=True, verbose_name='User agent')),
('mfa', models.SmallIntegerField(choices=[(0, 'Disabled'), (1, 'Enabled'), (2, '-')], default=2,
verbose_name='MFA')),
('reason', models.CharField(blank=True, default='', max_length=128, verbose_name='Reason')),
('status',
models.BooleanField(choices=[(1, 'Success'), (0, 'Failed')], default=1, verbose_name='Status')),
('datetime',
models.DateTimeField(db_index=True, default=django.utils.timezone.now, verbose_name='Login Date')),
('backend', models.CharField(default='', max_length=32, verbose_name='Auth backend')),
],
options={
'verbose_name': 'User login log',
'ordering': ['-datetime', 'username'],
},
),
migrations.CreateModel(
name='UserSession',
fields=[
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
('ip', models.GenericIPAddressField(verbose_name='Login IP')),
('key', models.CharField(max_length=128, verbose_name='Session key')),
('city', models.CharField(blank=True, max_length=254, null=True, verbose_name='Login city')),
('user_agent', models.CharField(blank=True, max_length=254, null=True, verbose_name='User agent')),
('type', models.CharField(choices=[('W', 'Web'), ('T', 'Terminal'), ('U', 'Unknown')], max_length=2,
verbose_name='Login type')),
('backend', models.CharField(default='', max_length=32, verbose_name='Auth backend')),
('date_created', models.DateTimeField(blank=True, null=True, verbose_name='Login date')),
],
options={
'verbose_name': 'User session',
'ordering': ['-date_created'],
'permissions': [('offline_usersession', 'Offline user session')],
},
),
]