mirror of https://github.com/jumpserver/jumpserver
ibuler
6 years ago
71 changed files with 2204 additions and 1 deletions
@ -0,0 +1,23 @@
|
||||
FROM registry.fit2cloud.com/jumpserver/python:v3 |
||||
MAINTAINER Jumpserver Team <ibuler@qq.com> |
||||
|
||||
WORKDIR /opt/jumpserver |
||||
RUN useradd jumpserver |
||||
|
||||
COPY ./requirements /tmp/requirements |
||||
|
||||
RUN yum -y install epel-release && cd /tmp/requirements && \ |
||||
yum -y install $(cat rpm_requirements.txt) |
||||
|
||||
RUN cd /tmp/requirements && pip install -r requirements.txt |
||||
|
||||
COPY . /opt/jumpserver |
||||
COPY config_docker.py /opt/jumpserver/config.py |
||||
VOLUME /opt/jumpserver/data |
||||
VOLUME /opt/jumpserver/logs |
||||
|
||||
ENV LANG=zh_CN.UTF-8 |
||||
ENV LC_ALL=zh_CN.UTF-8 |
||||
|
||||
EXPOSE 8080 |
||||
ENTRYPOINT ["./entrypoint.sh"] |
@ -0,0 +1,35 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-01-05 10:07 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0001_initial'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterModelOptions( |
||||
name='adminuser', |
||||
options={'ordering': ['name'], 'verbose_name': 'Admin user'}, |
||||
), |
||||
migrations.AlterModelOptions( |
||||
name='asset', |
||||
options={'verbose_name': 'Asset'}, |
||||
), |
||||
migrations.AlterModelOptions( |
||||
name='assetgroup', |
||||
options={'ordering': ['name'], 'verbose_name': 'Asset group'}, |
||||
), |
||||
migrations.AlterModelOptions( |
||||
name='cluster', |
||||
options={'ordering': ['name'], 'verbose_name': 'Cluster'}, |
||||
), |
||||
migrations.AlterModelOptions( |
||||
name='systemuser', |
||||
options={'ordering': ['name'], 'verbose_name': 'System user'}, |
||||
), |
||||
] |
@ -0,0 +1,22 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-01-09 15:31 |
||||
from __future__ import unicode_literals |
||||
|
||||
import assets.models.asset |
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0002_auto_20180105_1807'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='asset', |
||||
name='cluster', |
||||
field=models.ForeignKey(default=assets.models.asset.default_cluster, on_delete=django.db.models.deletion.SET_DEFAULT, related_name='assets', to='assets.Cluster', verbose_name='Cluster'), |
||||
), |
||||
] |
@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-01-25 04:18 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0003_auto_20180109_2331'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='assetgroup', |
||||
name='created_by', |
||||
field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Created by'), |
||||
), |
||||
] |
@ -0,0 +1,40 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-01-26 08:37 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
import uuid |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0004_auto_20180125_1218'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='Label', |
||||
fields=[ |
||||
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), |
||||
('name', models.CharField(max_length=128, verbose_name='Name')), |
||||
('value', models.CharField(max_length=128, verbose_name='Value')), |
||||
('category', models.CharField(choices=[('S', 'System'), ('U', 'User')], default='U', max_length=128, verbose_name='Category')), |
||||
('is_active', models.BooleanField(default=True, verbose_name='Is active')), |
||||
('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), |
||||
('date_created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Date created')), |
||||
], |
||||
options={ |
||||
'db_table': 'assets_label', |
||||
}, |
||||
), |
||||
migrations.AlterUniqueTogether( |
||||
name='label', |
||||
unique_together=set([('name', 'value')]), |
||||
), |
||||
migrations.AddField( |
||||
model_name='asset', |
||||
name='labels', |
||||
field=models.ManyToManyField(blank=True, related_name='assets', to='assets.Label', verbose_name='Labels'), |
||||
), |
||||
] |
@ -0,0 +1,39 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-01-30 07:02 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0005_auto_20180126_1637'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RemoveField( |
||||
model_name='asset', |
||||
name='cabinet_no', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='asset', |
||||
name='cabinet_pos', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='asset', |
||||
name='env', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='asset', |
||||
name='remote_card_ip', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='asset', |
||||
name='status', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='asset', |
||||
name='type', |
||||
), |
||||
] |
@ -0,0 +1,60 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-02-25 10:15 |
||||
from __future__ import unicode_literals |
||||
|
||||
import assets.models.asset |
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
import uuid |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0006_auto_20180130_1502'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='Node', |
||||
fields=[ |
||||
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), |
||||
('key', models.CharField(max_length=64, unique=True, verbose_name='Key')), |
||||
('value', models.CharField(max_length=128, unique=True, verbose_name='Value')), |
||||
('child_mark', models.IntegerField(default=0)), |
||||
('date_create', models.DateTimeField(auto_now_add=True)), |
||||
], |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='asset', |
||||
name='cluster', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='asset', |
||||
name='groups', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='systemuser', |
||||
name='cluster', |
||||
), |
||||
migrations.AlterField( |
||||
model_name='asset', |
||||
name='admin_user', |
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='assets.AdminUser', verbose_name='Admin user'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='systemuser', |
||||
name='protocol', |
||||
field=models.CharField(choices=[('ssh', 'ssh'), ('rdp', 'rdp')], default='ssh', max_length=16, verbose_name='Protocol'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='asset', |
||||
name='nodes', |
||||
field=models.ManyToManyField(default=assets.models.asset.default_node, related_name='assets', to='assets.Node', verbose_name='Nodes'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='systemuser', |
||||
name='nodes', |
||||
field=models.ManyToManyField(blank=True, to='assets.Node', verbose_name='Nodes'), |
||||
), |
||||
] |
@ -0,0 +1,40 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-03-06 10:04 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0007_auto_20180225_1815'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='adminuser', |
||||
name='created_by', |
||||
field=models.CharField(max_length=128, null=True, verbose_name='Created by'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='adminuser', |
||||
name='username', |
||||
field=models.CharField(max_length=128, verbose_name='Username'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='asset', |
||||
name='platform', |
||||
field=models.CharField(choices=[('Linux', 'Linux'), ('Unix', 'Unix'), ('MacOS', 'MacOS'), ('BSD', 'BSD'), ('Windows', 'Windows'), ('Other', 'Other')], default='Linux', max_length=128, verbose_name='Platform'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='systemuser', |
||||
name='created_by', |
||||
field=models.CharField(max_length=128, null=True, verbose_name='Created by'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='systemuser', |
||||
name='username', |
||||
field=models.CharField(max_length=128, verbose_name='Username'), |
||||
), |
||||
] |
@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-03-07 04:12 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0008_auto_20180306_1804'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='node', |
||||
name='value', |
||||
field=models.CharField(max_length=128, verbose_name='Value'), |
||||
), |
||||
] |
@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-03-07 09:49 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0009_auto_20180307_1212'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='node', |
||||
name='value', |
||||
field=models.CharField(max_length=128, unique=True, verbose_name='Value'), |
||||
), |
||||
] |
@ -0,0 +1,55 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-03-26 01:57 |
||||
from __future__ import unicode_literals |
||||
|
||||
import assets.models.utils |
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
import uuid |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0010_auto_20180307_1749'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='Domain', |
||||
fields=[ |
||||
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), |
||||
('name', models.CharField(max_length=128, unique=True, verbose_name='Name')), |
||||
('comment', models.TextField(blank=True, verbose_name='Comment')), |
||||
('date_created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Date created')), |
||||
], |
||||
), |
||||
migrations.CreateModel( |
||||
name='Gateway', |
||||
fields=[ |
||||
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), |
||||
('name', models.CharField(max_length=128, unique=True, verbose_name='Name')), |
||||
('username', models.CharField(max_length=128, verbose_name='Username')), |
||||
('_password', models.CharField(blank=True, max_length=256, null=True, verbose_name='Password')), |
||||
('_private_key', models.TextField(blank=True, max_length=4096, null=True, validators=[assets.models.utils.private_key_validator], verbose_name='SSH private key')), |
||||
('_public_key', models.TextField(blank=True, max_length=4096, verbose_name='SSH public key')), |
||||
('date_created', models.DateTimeField(auto_now_add=True)), |
||||
('date_updated', models.DateTimeField(auto_now=True)), |
||||
('created_by', models.CharField(max_length=128, null=True, verbose_name='Created by')), |
||||
('ip', models.GenericIPAddressField(db_index=True, verbose_name='IP')), |
||||
('port', models.IntegerField(default=22, verbose_name='Port')), |
||||
('protocol', models.CharField(choices=[('ssh', 'ssh'), ('rdp', 'rdp')], default='ssh', max_length=16, verbose_name='Protocol')), |
||||
('comment', models.CharField(blank=True, max_length=128, null=True, verbose_name='Comment')), |
||||
('is_active', models.BooleanField(default=True, verbose_name='Is active')), |
||||
('domain', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='assets.Domain', verbose_name='Domain')), |
||||
], |
||||
options={ |
||||
'abstract': False, |
||||
}, |
||||
), |
||||
migrations.AddField( |
||||
model_name='asset', |
||||
name='domain', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='assets', to='assets.Domain', verbose_name='Domain'), |
||||
), |
||||
] |
@ -0,0 +1,21 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-04-04 05:02 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0011_auto_20180326_0957'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='asset', |
||||
name='domain', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='assets', to='assets.Domain', verbose_name='Domain'), |
||||
), |
||||
] |
@ -0,0 +1,25 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-04-11 03:35 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0012_auto_20180404_1302'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='systemuser', |
||||
name='assets', |
||||
field=models.ManyToManyField(blank=True, to='assets.Asset', verbose_name='Assets'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='systemuser', |
||||
name='sudo', |
||||
field=models.TextField(default='/bin/whoami', verbose_name='Sudo'), |
||||
), |
||||
] |
@ -0,0 +1,31 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-04-27 04:45 |
||||
from __future__ import unicode_literals |
||||
|
||||
import django.core.validators |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0013_auto_20180411_1135'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='adminuser', |
||||
name='username', |
||||
field=models.CharField(max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_-]*$', 'Special char not allowed')], verbose_name='Username'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='gateway', |
||||
name='username', |
||||
field=models.CharField(max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_-]*$', 'Special char not allowed')], verbose_name='Username'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='systemuser', |
||||
name='username', |
||||
field=models.CharField(max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_-]*$', 'Special char not allowed')], verbose_name='Username'), |
||||
), |
||||
] |
@ -0,0 +1,31 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-05-10 04:35 |
||||
from __future__ import unicode_literals |
||||
|
||||
import django.core.validators |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0014_auto_20180427_1245'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='adminuser', |
||||
name='username', |
||||
field=models.CharField(max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_@\\-\\.]*$', 'Special char not allowed')], verbose_name='Username'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='gateway', |
||||
name='username', |
||||
field=models.CharField(max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_@\\-\\.]*$', 'Special char not allowed')], verbose_name='Username'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='systemuser', |
||||
name='username', |
||||
field=models.CharField(max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_@\\-\\.]*$', 'Special char not allowed')], verbose_name='Username'), |
||||
), |
||||
] |
@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-05-11 04:03 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0015_auto_20180510_1235'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='node', |
||||
name='value', |
||||
field=models.CharField(max_length=128, verbose_name='Value'), |
||||
), |
||||
] |
@ -0,0 +1,58 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-07-02 06:15 |
||||
from __future__ import unicode_literals |
||||
|
||||
import django.core.validators |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
def migrate_win_to_ssh_protocol(apps, schema_editor): |
||||
asset_model = apps.get_model("assets", "Asset") |
||||
db_alias = schema_editor.connection.alias |
||||
asset_model.objects.using(db_alias).filter(platform__startswith='Win').update(protocol='rdp') |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0016_auto_20180511_1203'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='asset', |
||||
name='protocol', |
||||
field=models.CharField(choices=[('ssh', 'ssh'), ('rdp', 'rdp'), ('telnet', 'telnet (beta)')], default='ssh', max_length=128, verbose_name='Protocol'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='systemuser', |
||||
name='login_mode', |
||||
field=models.CharField(choices=[('auto', 'Automatic login'), ('manual', 'Manually login')], default='auto', max_length=10, verbose_name='Login mode'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='adminuser', |
||||
name='username', |
||||
field=models.CharField(blank=True, max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_@\\-\\.]*$', 'Special char not allowed')], verbose_name='Username'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='asset', |
||||
name='platform', |
||||
field=models.CharField(choices=[('Linux', 'Linux'), ('Unix', 'Unix'), ('MacOS', 'MacOS'), ('BSD', 'BSD'), ('Windows', 'Windows'), ('Windows2016', 'Windows(2016)'), ('Other', 'Other')], default='Linux', max_length=128, verbose_name='Platform'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='gateway', |
||||
name='username', |
||||
field=models.CharField(blank=True, max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_@\\-\\.]*$', 'Special char not allowed')], verbose_name='Username'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='systemuser', |
||||
name='protocol', |
||||
field=models.CharField(choices=[('ssh', 'ssh'), ('rdp', 'rdp'), ('telnet', 'telnet (beta)')], default='ssh', max_length=16, verbose_name='Protocol'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='systemuser', |
||||
name='username', |
||||
field=models.CharField(blank=True, max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_@\\-\\.]*$', 'Special char not allowed')], verbose_name='Username'), |
||||
), |
||||
migrations.RunPython(migrate_win_to_ssh_protocol), |
||||
] |
@ -0,0 +1,84 @@
|
||||
# Generated by Django 2.0.7 on 2018-08-07 03:16 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0017_auto_20180702_1415'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='adminuser', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default=None, max_length=36, null=True), |
||||
), |
||||
migrations.AddField( |
||||
model_name='asset', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default=None, max_length=36, null=True), |
||||
), |
||||
migrations.AddField( |
||||
model_name='domain', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default=None, max_length=36, null=True), |
||||
), |
||||
migrations.AddField( |
||||
model_name='gateway', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default=None, max_length=36, null=True), |
||||
), |
||||
migrations.AddField( |
||||
model_name='label', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default=None, max_length=36, null=True), |
||||
), |
||||
migrations.AddField( |
||||
model_name='node', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default=None, max_length=36, null=True), |
||||
), |
||||
migrations.AddField( |
||||
model_name='systemuser', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default=None, max_length=36, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='adminuser', |
||||
name='name', |
||||
field=models.CharField(max_length=128, verbose_name='Name'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='asset', |
||||
name='hostname', |
||||
field=models.CharField(max_length=128, verbose_name='Hostname'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='gateway', |
||||
name='name', |
||||
field=models.CharField(max_length=128, verbose_name='Name'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='systemuser', |
||||
name='name', |
||||
field=models.CharField(max_length=128, verbose_name='Name'), |
||||
), |
||||
migrations.AlterUniqueTogether( |
||||
name='adminuser', |
||||
unique_together={('name', 'org_id')}, |
||||
), |
||||
migrations.AlterUniqueTogether( |
||||
name='asset', |
||||
unique_together={('org_id', 'hostname')}, |
||||
), |
||||
migrations.AlterUniqueTogether( |
||||
name='gateway', |
||||
unique_together={('name', 'org_id')}, |
||||
), |
||||
migrations.AlterUniqueTogether( |
||||
name='systemuser', |
||||
unique_together={('name', 'org_id')}, |
||||
), |
||||
] |
@ -0,0 +1,22 @@
|
||||
# Generated by Django 2.0.7 on 2018-08-16 05:20 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0018_auto_20180807_1116'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='asset', |
||||
name='cpu_vcpus', |
||||
field=models.IntegerField(null=True, verbose_name='CPU vcpus'), |
||||
), |
||||
migrations.AlterUniqueTogether( |
||||
name='label', |
||||
unique_together={('name', 'value', 'org_id')}, |
||||
), |
||||
] |
@ -0,0 +1,48 @@
|
||||
# Generated by Django 2.0.7 on 2018-08-16 08:52 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0019_auto_20180816_1320'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='adminuser', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default='', max_length=36, verbose_name='Organization'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='asset', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default='', max_length=36, verbose_name='Organization'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='domain', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default='', max_length=36, verbose_name='Organization'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='gateway', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default='', max_length=36, verbose_name='Organization'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='label', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default='', max_length=36, verbose_name='Organization'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='node', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default='', max_length=36, verbose_name='Organization'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='systemuser', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default='', max_length=36, verbose_name='Organization'), |
||||
), |
||||
] |
@ -0,0 +1,25 @@
|
||||
# Generated by Django 2.1 on 2018-09-03 03:32 |
||||
|
||||
from django.db import migrations |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0020_auto_20180816_1652'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterModelOptions( |
||||
name='domain', |
||||
options={'verbose_name': 'Domain'}, |
||||
), |
||||
migrations.AlterModelOptions( |
||||
name='gateway', |
||||
options={'verbose_name': 'Gateway'}, |
||||
), |
||||
migrations.AlterModelOptions( |
||||
name='node', |
||||
options={'verbose_name': 'Node'}, |
||||
), |
||||
] |
@ -0,0 +1,56 @@
|
||||
# Generated by Django 2.1.1 on 2018-10-12 09:17 |
||||
|
||||
import django.core.validators |
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
import uuid |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0021_auto_20180903_1132'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='CommandFilter', |
||||
fields=[ |
||||
('org_id', models.CharField(blank=True, default='', max_length=36, verbose_name='Organization')), |
||||
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), |
||||
('name', models.CharField(max_length=64, verbose_name='Name')), |
||||
('is_active', models.BooleanField(default=True, verbose_name='Is active')), |
||||
('comment', models.TextField(blank=True, default='', verbose_name='Comment')), |
||||
('date_created', models.DateTimeField(auto_now_add=True)), |
||||
('date_updated', models.DateTimeField(auto_now=True)), |
||||
('created_by', models.CharField(blank=True, default='', max_length=128, verbose_name='Created by')), |
||||
], |
||||
options={ |
||||
'abstract': False, |
||||
}, |
||||
), |
||||
migrations.CreateModel( |
||||
name='CommandFilterRule', |
||||
fields=[ |
||||
('org_id', models.CharField(blank=True, default='', max_length=36, verbose_name='Organization')), |
||||
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), |
||||
('type', models.CharField(choices=[('regex', 'Regex'), ('command', 'Command')], default='command', max_length=16, verbose_name='Type')), |
||||
('priority', models.IntegerField(default=50, help_text='1-100, the lower will be match first', validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(100)], verbose_name='Priority')), |
||||
('content', models.TextField(help_text='One line one command', max_length=1024, verbose_name='Content')), |
||||
('action', models.IntegerField(choices=[(0, 'Deny'), (1, 'Allow')], default=0, verbose_name='Action')), |
||||
('comment', models.CharField(blank=True, default='', max_length=64, verbose_name='Comment')), |
||||
('date_created', models.DateTimeField(auto_now_add=True)), |
||||
('date_updated', models.DateTimeField(auto_now=True)), |
||||
('created_by', models.CharField(blank=True, default='', max_length=128, verbose_name='Created by')), |
||||
('filter', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rules', to='assets.CommandFilter', verbose_name='Filter')), |
||||
], |
||||
options={ |
||||
'ordering': ('priority', 'action'), |
||||
}, |
||||
), |
||||
migrations.AddField( |
||||
model_name='systemuser', |
||||
name='cmd_filters', |
||||
field=models.ManyToManyField(blank=True, related_name='system_users', to='assets.CommandFilter', verbose_name='Command filter'), |
||||
), |
||||
] |
@ -0,0 +1,28 @@
|
||||
# Generated by Django 2.1.1 on 2018-10-16 08:50 |
||||
|
||||
import django.core.validators |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0022_auto_20181012_1717'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterModelOptions( |
||||
name='commandfilterrule', |
||||
options={'ordering': ('-priority', 'action')}, |
||||
), |
||||
migrations.AlterField( |
||||
model_name='commandfilterrule', |
||||
name='priority', |
||||
field=models.IntegerField(default=50, help_text='1-100, the higher will be match first', validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(100)], verbose_name='Priority'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='systemuser', |
||||
name='priority', |
||||
field=models.IntegerField(default=20, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(100)], verbose_name='Priority'), |
||||
), |
||||
] |
@ -0,0 +1,31 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-04-06 04:30 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
import uuid |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
initial = True |
||||
|
||||
dependencies = [ |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='FTPLog', |
||||
fields=[ |
||||
('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=15, null=True, verbose_name='Remote addr')), |
||||
('asset', models.CharField(max_length=1024, verbose_name='Asset')), |
||||
('system_user', models.CharField(max_length=128, verbose_name='System user')), |
||||
('operate', models.CharField(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)), |
||||
], |
||||
), |
||||
] |
@ -0,0 +1,18 @@
|
||||
# Generated by Django 2.0.7 on 2018-08-07 03:16 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('audits', '0001_initial'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='ftplog', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default=None, max_length=36, null=True), |
||||
), |
||||
] |
@ -0,0 +1,18 @@
|
||||
# Generated by Django 2.0.7 on 2018-08-16 08:52 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('audits', '0002_ftplog_org_id'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='ftplog', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default='', max_length=36, verbose_name='Organization'), |
||||
), |
||||
] |
@ -0,0 +1,51 @@
|
||||
# Generated by Django 2.1 on 2018-09-03 03:32 |
||||
|
||||
from django.db import migrations, models |
||||
import uuid |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0014_auto_20180816_1652'), |
||||
('audits', '0003_auto_20180816_1652'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='OperateLog', |
||||
fields=[ |
||||
('org_id', models.CharField(blank=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=[('create', 'Create'), ('update', 'Update'), ('delete', 'Delete')], 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')), |
||||
('remote_addr', models.CharField(blank=True, max_length=15, null=True, verbose_name='Remote addr')), |
||||
('datetime', models.DateTimeField(auto_now=True)), |
||||
], |
||||
options={ |
||||
'abstract': False, |
||||
}, |
||||
), |
||||
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=15, null=True, verbose_name='Remote addr')), |
||||
('datetime', models.DateTimeField(auto_now=True)), |
||||
], |
||||
), |
||||
migrations.CreateModel( |
||||
name='UserLoginLog', |
||||
fields=[ |
||||
], |
||||
options={ |
||||
'proxy': True, |
||||
'indexes': [], |
||||
}, |
||||
bases=('users.loginlog',), |
||||
), |
||||
] |
@ -0,0 +1,30 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-01-11 05:35 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
import django.db.models.manager |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
initial = True |
||||
|
||||
dependencies = [ |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='Settings', |
||||
fields=[ |
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('name', models.CharField(max_length=128, unique=True, verbose_name='Name')), |
||||
('value', models.TextField(verbose_name='Value')), |
||||
('enabled', models.BooleanField(default=True, verbose_name='Enabled')), |
||||
('comment', models.TextField(verbose_name='Comment')), |
||||
], |
||||
managers=[ |
||||
('configs', django.db.models.manager.Manager()), |
||||
], |
||||
), |
||||
] |
@ -0,0 +1,28 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-01-11 06:07 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('common', '0001_initial'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RenameModel( |
||||
old_name='Settings', |
||||
new_name='Setting', |
||||
), |
||||
migrations.AlterModelManagers( |
||||
name='setting', |
||||
managers=[ |
||||
], |
||||
), |
||||
migrations.AlterModelTable( |
||||
name='setting', |
||||
table='settings', |
||||
), |
||||
] |
@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-01-22 03:54 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('common', '0002_auto_20180111_1407'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='setting', |
||||
name='category', |
||||
field=models.CharField(default='default', max_length=128), |
||||
), |
||||
] |
@ -0,0 +1,18 @@
|
||||
# Generated by Django 2.1 on 2018-09-03 03:32 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('common', '0003_setting_category'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='setting', |
||||
name='encrypted', |
||||
field=models.BooleanField(default=False), |
||||
), |
||||
] |
@ -0,0 +1,28 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-04-02 09:45 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
import uuid |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('ops', '0001_initial'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='CeleryTask', |
||||
fields=[ |
||||
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), |
||||
('name', models.CharField(max_length=1024)), |
||||
('status', models.CharField(choices=[('waiting', 'waiting'), ('running', 'running'), ('finished', 'finished')], max_length=128)), |
||||
('log_path', models.CharField(blank=True, max_length=256, null=True)), |
||||
('date_published', models.DateTimeField(auto_now_add=True)), |
||||
('date_start', models.DateTimeField(null=True)), |
||||
('date_finished', models.DateTimeField(null=True)), |
||||
], |
||||
), |
||||
] |
@ -0,0 +1,29 @@
|
||||
# Generated by Django 2.0.7 on 2018-08-07 03:16 |
||||
|
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
import uuid |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
initial = True |
||||
|
||||
dependencies = [ |
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='Organization', |
||||
fields=[ |
||||
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), |
||||
('name', models.CharField(max_length=128, unique=True, verbose_name='Name')), |
||||
('created_by', models.CharField(blank=True, max_length=32, null=True, verbose_name='Created by')), |
||||
('date_created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Date created')), |
||||
('comment', models.TextField(blank=True, default='', max_length=128, verbose_name='Comment')), |
||||
('admins', models.ManyToManyField(blank=True, related_name='admin_orgs', to=settings.AUTH_USER_MODEL)), |
||||
('users', models.ManyToManyField(blank=True, related_name='orgs', to=settings.AUTH_USER_MODEL)), |
||||
], |
||||
), |
||||
] |
@ -0,0 +1,17 @@
|
||||
# Generated by Django 2.1 on 2018-09-03 03:32 |
||||
|
||||
from django.db import migrations |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('orgs', '0001_initial'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterModelOptions( |
||||
name='organization', |
||||
options={'verbose_name': 'Organization'}, |
||||
), |
||||
] |
@ -0,0 +1,28 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2017-12-27 16:25 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0002_auto_20171225_1157'), |
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||
('perms', '0001_initial'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='assetpermission', |
||||
name='user_groups', |
||||
field=models.ManyToManyField(blank=True, related_name='asset_permissions', to='users.UserGroup', verbose_name='User group'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='assetpermission', |
||||
name='users', |
||||
field=models.ManyToManyField(blank=True, related_name='asset_permissions', to=settings.AUTH_USER_MODEL, verbose_name='User'), |
||||
), |
||||
] |
@ -0,0 +1,41 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-02-25 10:15 |
||||
from __future__ import unicode_literals |
||||
|
||||
import common.utils |
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
import uuid |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0004_auto_20180125_1218'), |
||||
('assets', '0007_auto_20180225_1815'), |
||||
('perms', '0002_auto_20171228_0025'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='NodePermission', |
||||
fields=[ |
||||
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), |
||||
('is_active', models.BooleanField(default=True, verbose_name='Active')), |
||||
('date_expired', models.DateTimeField(default=common.utils.date_expired_default, verbose_name='Date expired')), |
||||
('created_by', models.CharField(blank=True, max_length=128, verbose_name='Created by')), |
||||
('date_created', models.DateTimeField(auto_now_add=True, verbose_name='Date created')), |
||||
('comment', models.TextField(blank=True, verbose_name='Comment')), |
||||
('node', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='assets.Node', verbose_name='Node')), |
||||
('system_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='assets.SystemUser', verbose_name='System user')), |
||||
('user_group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.UserGroup', verbose_name='User group')), |
||||
], |
||||
options={ |
||||
'verbose_name': 'Asset permission', |
||||
}, |
||||
), |
||||
migrations.AlterUniqueTogether( |
||||
name='nodepermission', |
||||
unique_together=set([('node', 'user_group', 'system_user')]), |
||||
), |
||||
] |
@ -0,0 +1,31 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-04-11 03:35 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
import django.utils.timezone |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('assets', '0013_auto_20180411_1135'), |
||||
('perms', '0003_auto_20180225_1815'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RemoveField( |
||||
model_name='assetpermission', |
||||
name='asset_groups', |
||||
), |
||||
migrations.AddField( |
||||
model_name='assetpermission', |
||||
name='date_start', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Date start'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='assetpermission', |
||||
name='nodes', |
||||
field=models.ManyToManyField(blank=True, related_name='granted_by_permissions', to='assets.Node', verbose_name='Nodes'), |
||||
), |
||||
] |
@ -0,0 +1,49 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-04-11 03:35 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
import django.utils.timezone |
||||
|
||||
|
||||
def migrate_node_permissions(apps, schema_editor): |
||||
node_perm_model = apps.get_model("perms", "NodePermission") |
||||
asset_perm_model = apps.get_model("perms", "AssetPermission") |
||||
db_alias = schema_editor.connection.alias |
||||
for old in node_perm_model.objects.using(db_alias).all(): |
||||
perm = asset_perm_model.objects.using(db_alias).create( |
||||
name="{}-{}-{}".format( |
||||
old.node.value, |
||||
old.user_group.name, |
||||
old.system_user.name |
||||
), |
||||
is_active=old.is_active, |
||||
date_expired=old.date_expired, |
||||
created_by=old.date_expired, |
||||
date_created=old.date_created, |
||||
comment=old.comment, |
||||
) |
||||
perm.user_groups.add(old.user_group) |
||||
perm.nodes.add(old.node) |
||||
perm.system_users.add(old.system_user) |
||||
|
||||
|
||||
def migrate_system_assets_relation(apps, schema_editor): |
||||
system_user_model = apps.get_model("assets", "SystemUser") |
||||
db_alias = schema_editor.connection.alias |
||||
for s in system_user_model.objects.using(db_alias).all(): |
||||
nodes = list(s.nodes.all()) |
||||
s.nodes.set([]) |
||||
s.nodes.set(nodes) |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('perms', '0004_auto_20180411_1135'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RunPython(migrate_node_permissions), |
||||
migrations.RunPython(migrate_system_assets_relation), |
||||
] |
@ -0,0 +1,27 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-06-06 07:05 |
||||
from __future__ import unicode_literals |
||||
|
||||
import common.utils |
||||
from django.db import migrations, models |
||||
import django.utils.timezone |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('perms', '0005_migrate_data_20180411_1144'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='assetpermission', |
||||
name='date_expired', |
||||
field=models.DateTimeField(db_index=True, default=common.utils.date_expired_default, verbose_name='Date expired'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='assetpermission', |
||||
name='date_start', |
||||
field=models.DateTimeField(db_index=True, default=django.utils.timezone.now, verbose_name='Date start'), |
||||
), |
||||
] |
@ -0,0 +1,37 @@
|
||||
# Generated by Django 2.0.7 on 2018-08-07 03:16 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('perms', '0006_auto_20180606_1505'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='assetpermission', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default=None, max_length=36, null=True), |
||||
), |
||||
migrations.AddField( |
||||
model_name='nodepermission', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default=None, max_length=36, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='assetpermission', |
||||
name='name', |
||||
field=models.CharField(max_length=128, verbose_name='Name'), |
||||
), |
||||
migrations.AlterUniqueTogether( |
||||
name='assetpermission', |
||||
unique_together={('org_id', 'name')}, |
||||
), |
||||
migrations.AlterUniqueTogether( |
||||
name='nodepermission', |
||||
unique_together=set(), |
||||
), |
||||
|
||||
] |
@ -0,0 +1,23 @@
|
||||
# Generated by Django 2.0.7 on 2018-08-16 08:52 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('perms', '0007_auto_20180807_1116'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='assetpermission', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default='', max_length=36, verbose_name='Organization'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='nodepermission', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default='', max_length=36, verbose_name='Organization'), |
||||
), |
||||
] |
@ -0,0 +1,17 @@
|
||||
# Generated by Django 2.1 on 2018-09-03 03:32 |
||||
|
||||
from django.db import migrations |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('perms', '0008_auto_20180816_1652'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterModelOptions( |
||||
name='assetpermission', |
||||
options={'verbose_name': 'Asset permission'}, |
||||
), |
||||
] |
@ -0,0 +1,43 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2017-12-27 16:25 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||
('terminal', '0001_initial'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='session', |
||||
name='terminal', |
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='terminal.Terminal'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='status', |
||||
name='terminal', |
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='terminal.Terminal'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='task', |
||||
name='terminal', |
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='terminal.Terminal'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='terminal', |
||||
name='user', |
||||
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='terminal', to=settings.AUTH_USER_MODEL, verbose_name='Application User'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='terminal', |
||||
name='name', |
||||
field=models.CharField(max_length=32, verbose_name='Name'), |
||||
), |
||||
] |
@ -0,0 +1,30 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2017-12-29 19:08 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('terminal', '0002_auto_20171228_0025'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='command', |
||||
name='asset', |
||||
field=models.CharField(db_index=True, max_length=128, verbose_name='Asset'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='command', |
||||
name='system_user', |
||||
field=models.CharField(db_index=True, max_length=64, verbose_name='System user'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='command', |
||||
name='user', |
||||
field=models.CharField(db_index=True, max_length=64, verbose_name='User'), |
||||
), |
||||
] |
@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-01-05 10:07 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('terminal', '0003_auto_20171230_0308'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='session', |
||||
name='remote_addr', |
||||
field=models.CharField(blank=True, max_length=15, null=True, verbose_name='Remote addr'), |
||||
), |
||||
] |
@ -0,0 +1,25 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-01-22 03:54 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('terminal', '0004_session_remote_addr'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='terminal', |
||||
name='command_storage', |
||||
field=models.CharField(choices=[('default', 'default'), ('elk', 'elk')], default='default', max_length=128, verbose_name='Command storage'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='terminal', |
||||
name='replay_storage', |
||||
field=models.CharField(default='default', max_length=128, verbose_name='Replay storage'), |
||||
), |
||||
] |
@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-01-23 02:37 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('terminal', '0005_auto_20180122_1154'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='terminal', |
||||
name='command_storage', |
||||
field=models.CharField(default='default', max_length=128, verbose_name='Command storage'), |
||||
), |
||||
] |
@ -0,0 +1,21 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-02-27 09:13 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
import django.utils.timezone |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('terminal', '0006_auto_20180123_1037'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='session', |
||||
name='date_last_active', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Date last active'), |
||||
), |
||||
] |
@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-03-07 08:03 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('terminal', '0007_session_date_last_active'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='session', |
||||
name='date_start', |
||||
field=models.DateTimeField(db_index=True, verbose_name='Date start'), |
||||
), |
||||
] |
@ -0,0 +1,26 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-03-26 01:57 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('terminal', '0008_auto_20180307_1603'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='session', |
||||
name='terminal', |
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='terminal.Terminal'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='task', |
||||
name='terminal', |
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='terminal.Terminal'), |
||||
), |
||||
] |
@ -0,0 +1,26 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-04-23 03:40 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
import django.utils.timezone |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('terminal', '0009_auto_20180326_0957'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='session', |
||||
name='protocol', |
||||
field=models.CharField(choices=[('ssh', 'ssh'), ('rdp', 'rdp')], default='ssh', max_length=8), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='session', |
||||
name='date_start', |
||||
field=models.DateTimeField(db_index=True, default=django.utils.timezone.now, verbose_name='Date start'), |
||||
), |
||||
] |
@ -0,0 +1,23 @@
|
||||
# Generated by Django 2.0.7 on 2018-08-07 03:16 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('terminal', '0010_auto_20180423_1140'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='command', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default=None, max_length=36, null=True), |
||||
), |
||||
migrations.AddField( |
||||
model_name='session', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default=None, max_length=36, null=True), |
||||
), |
||||
] |
@ -0,0 +1,23 @@
|
||||
# Generated by Django 2.0.7 on 2018-08-16 08:52 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('terminal', '0011_auto_20180807_1116'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='command', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default='', max_length=36, verbose_name='Organization'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='session', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default='', max_length=36, verbose_name='Organization'), |
||||
), |
||||
] |
@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2017-12-31 16:46 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0002_auto_20171225_1157'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='user', |
||||
name='is_first_login', |
||||
field=models.BooleanField(default=True), |
||||
), |
||||
] |
@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-01-25 04:18 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0003_auto_20180101_0046'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='usergroup', |
||||
name='created_by', |
||||
field=models.CharField(blank=True, max_length=100, null=True), |
||||
), |
||||
] |
@ -0,0 +1,23 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-03-06 10:04 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0004_auto_20180125_1218'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterModelOptions( |
||||
name='user', |
||||
options={'ordering': ['username'], 'verbose_name': 'User'}, |
||||
), |
||||
migrations.AlterModelOptions( |
||||
name='usergroup', |
||||
options={'ordering': ['name'], 'verbose_name': 'User group'}, |
||||
), |
||||
] |
@ -0,0 +1,29 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-04-11 03:35 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0005_auto_20180306_1804'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RenameField( |
||||
model_name='user', |
||||
old_name='secret_key_otp', |
||||
new_name='otp_secret_key', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='user', |
||||
name='enable_otp', |
||||
), |
||||
migrations.AddField( |
||||
model_name='user', |
||||
name='otp_level', |
||||
field=models.SmallIntegerField(choices=[(0, 'Disable'), (1, 'Enable'), (2, 'Force enable')], default=0, verbose_name='Enable OTP'), |
||||
), |
||||
] |
@ -0,0 +1,24 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-04-19 02:36 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0006_auto_20180411_1135'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RemoveField( |
||||
model_name='user', |
||||
name='otp_secret_key', |
||||
), |
||||
migrations.AddField( |
||||
model_name='user', |
||||
name='_otp_secret_key', |
||||
field=models.CharField(blank=True, max_length=128, null=True), |
||||
), |
||||
] |
@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-04-25 07:16 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0007_auto_20180419_1036'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='user', |
||||
name='otp_level', |
||||
field=models.SmallIntegerField(choices=[(0, 'Disable'), (1, 'Enable'), (2, 'Force enable')], default=0, verbose_name='MFA'), |
||||
), |
||||
] |
@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-05-17 07:37 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0008_auto_20180425_1516'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='usergroup', |
||||
name='name', |
||||
field=models.CharField(max_length=128, unique=True, verbose_name='Name'), |
||||
), |
||||
] |
@ -0,0 +1,38 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-06-06 07:05 |
||||
from __future__ import unicode_literals |
||||
|
||||
import common.utils |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
def remove_deleted_group(apps, schema_editor): |
||||
db_alias = schema_editor.connection.alias |
||||
group_model = apps.get_model("users", "UserGroup") |
||||
group_model.objects.using(db_alias).filter(is_discard=True).delete() |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0009_auto_20180517_1537'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RunPython( |
||||
remove_deleted_group |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='usergroup', |
||||
name='discard_time', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='usergroup', |
||||
name='is_discard', |
||||
), |
||||
migrations.AlterField( |
||||
model_name='user', |
||||
name='date_expired', |
||||
field=models.DateTimeField(blank=True, db_index=True, default=common.utils.date_expired_default, null=True, verbose_name='Date expired'), |
||||
), |
||||
] |
@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11 on 2018-06-07 04:58 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0010_auto_20180606_1505'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='user', |
||||
name='source', |
||||
field=models.CharField(choices=[('local', 'Local'), ('ldap', 'LDAP/AD')], default='local', max_length=30, verbose_name='Source'), |
||||
), |
||||
] |
@ -0,0 +1,30 @@
|
||||
# -*- coding: utf-8 -*- |
||||
# Generated by Django 1.11.13 on 2018-07-10 08:41 |
||||
from __future__ import unicode_literals |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0011_user_source'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='loginlog', |
||||
name='mfa', |
||||
field=models.SmallIntegerField(choices=[(0, 'Disabled'), (1, 'Enabled'), (2, '-')], default=2, verbose_name='MFA'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='loginlog', |
||||
name='reason', |
||||
field=models.SmallIntegerField(choices=[(0, '-'), (1, 'Username/password check failed'), (2, 'MFA authentication failed')], default=0, verbose_name='Reason'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='loginlog', |
||||
name='status', |
||||
field=models.BooleanField(choices=[(True, 'Success'), (False, 'Failed')], default=True, max_length=2, verbose_name='Status'), |
||||
), |
||||
] |
@ -0,0 +1,32 @@
|
||||
# Generated by Django 2.0.7 on 2018-08-07 03:16 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0012_auto_20180710_1641'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='usergroup', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default=None, max_length=36, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='user', |
||||
name='last_name', |
||||
field=models.CharField(blank=True, max_length=150, verbose_name='last name'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='usergroup', |
||||
name='name', |
||||
field=models.CharField(max_length=128, verbose_name='Name'), |
||||
), |
||||
migrations.AlterUniqueTogether( |
||||
name='usergroup', |
||||
unique_together={('org_id', 'name')}, |
||||
), |
||||
] |
@ -0,0 +1,18 @@
|
||||
# Generated by Django 2.0.7 on 2018-08-16 08:52 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0013_auto_20180807_1116'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='usergroup', |
||||
name='org_id', |
||||
field=models.CharField(blank=True, default='', max_length=36, verbose_name='Organization'), |
||||
), |
||||
] |
@ -0,0 +1,23 @@
|
||||
# Generated by Django 2.1.1 on 2018-11-05 03:12 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0014_auto_20180816_1652'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='loginlog', |
||||
name='reason', |
||||
field=models.SmallIntegerField(choices=[(0, '-'), (1, 'Username/password check failed'), (2, 'MFA authentication failed'), (3, 'Username does not exist')], default=0, verbose_name='Reason'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='loginlog', |
||||
name='username', |
||||
field=models.CharField(max_length=128, verbose_name='Username'), |
||||
), |
||||
] |
@ -0,0 +1,18 @@
|
||||
# Generated by Django 2.1.1 on 2018-11-09 07:05 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('users', '0015_auto_20181105_1112'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='user', |
||||
name='source', |
||||
field=models.CharField(choices=[('local', 'Local'), ('ldap', 'LDAP/AD'), ('openid', 'OpenID')], default='local', max_length=30, verbose_name='Source'), |
||||
), |
||||
] |
@ -0,0 +1,11 @@
|
||||
#!/bin/bash |
||||
# |
||||
|
||||
version=$1 |
||||
if [ -z "$version" ];then |
||||
echo "Usage: sh build version" |
||||
exit |
||||
fi |
||||
|
||||
|
||||
docker build -t jumpserver/jumpserver:$version . |
@ -0,0 +1,205 @@
|
||||
""" |
||||
jumpserver.config |
||||
~~~~~~~~~~~~~~~~~ |
||||
|
||||
Jumpserver project setting file |
||||
|
||||
:copyright: (c) 2014-2017 by Jumpserver Team |
||||
:license: GPL v2, see LICENSE for more details. |
||||
""" |
||||
import os |
||||
import json |
||||
|
||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__)) |
||||
|
||||
|
||||
class Config: |
||||
# Use it to encrypt or decrypt data |
||||
# SECURITY WARNING: keep the secret key used in production secret! |
||||
SECRET_KEY = os.environ.get('SECRET_KEY') or '2vym+ky!997d5kkcc64mnz06y1mmui3lut#(^wd=%s_qj$1%x' |
||||
|
||||
# How many line display every page if using django pager, default 25 |
||||
DISPLAY_PER_PAGE = 25 |
||||
|
||||
# It's used to identify your site, When we send a create mail to user, we only know login url is /login/ |
||||
# But we should know the absolute url like: http://jms.jumpserver.org/login/, so SITE_URL is |
||||
# HTTP_PROTOCOL://HOST[:PORT] |
||||
SITE_URL = 'http://localhost' |
||||
|
||||
# Django security setting, if your disable debug model, you should setting that |
||||
ALLOWED_HOSTS = ['*'] |
||||
|
||||
# Development env open this, when error occur display the full process track, Production disable it |
||||
DEBUG = True |
||||
|
||||
# DEBUG, INFO, WARNING, ERROR, CRITICAL can set. See https://docs.djangoproject.com/en/1.10/topics/logging/ |
||||
LOG_LEVEL = 'DEBUG' |
||||
LOG_DIR = os.path.join(BASE_DIR, 'logs') |
||||
|
||||
# Database setting, Support sqlite3, mysql, postgres .... |
||||
# See https://docs.djangoproject.com/en/1.10/ref/settings/#databases |
||||
|
||||
# SQLite setting: |
||||
DB_ENGINE = 'sqlite3' |
||||
DB_NAME = os.path.join(BASE_DIR, 'data', 'db.sqlite3') |
||||
|
||||
# MySQL or postgres setting like: |
||||
# DB_ENGINE = 'mysql' |
||||
# DB_HOST = '127.0.0.1' |
||||
# DB_PORT = 3306 |
||||
# DB_USER = 'root' |
||||
# DB_PASSWORD = '' |
||||
# DB_NAME = 'jumpserver' |
||||
|
||||
# When Django start it will bind this host and port |
||||
# ./manage.py runserver 127.0.0.1:8080 |
||||
HTTP_BIND_HOST = '0.0.0.0' |
||||
HTTP_LISTEN_PORT = 8080 |
||||
|
||||
# Use Redis as broker for celery and web socket |
||||
REDIS_HOST = '127.0.0.1' |
||||
REDIS_PORT = 6379 |
||||
REDIS_PASSWORD = '' |
||||
BROKER_URL = 'redis://%(password)s%(host)s:%(port)s/3' % { |
||||
'password': REDIS_PASSWORD, |
||||
'host': REDIS_HOST, |
||||
'port': REDIS_PORT, |
||||
} |
||||
|
||||
# Api token expiration when create, Jumpserver refresh time when request arrive |
||||
TOKEN_EXPIRATION = 3600 |
||||
|
||||
# Session and csrf domain settings |
||||
SESSION_COOKIE_AGE = 3600*24 |
||||
|
||||
# Email SMTP setting, we only support smtp send mail |
||||
EMAIL_HOST = 'smtp.163.com' |
||||
EMAIL_PORT = 25 |
||||
EMAIL_HOST_USER = '' |
||||
EMAIL_HOST_PASSWORD = '' # Caution: Some SMTP server using `Authorization Code` except password |
||||
EMAIL_USE_SSL = True if EMAIL_PORT == 465 else False |
||||
EMAIL_USE_TLS = True if EMAIL_PORT == 587 else False |
||||
EMAIL_SUBJECT_PREFIX = '[Jumpserver] ' |
||||
|
||||
CAPTCHA_TEST_MODE = False |
||||
|
||||
# You can set jumpserver usage url here, that when user submit wizard redirect to |
||||
USER_GUIDE_URL = '' |
||||
|
||||
# LDAP Auth settings |
||||
AUTH_LDAP = False |
||||
AUTH_LDAP_SERVER_URI = 'ldap://localhost:389' |
||||
AUTH_LDAP_BIND_DN = 'cn=admin,dc=jumpserver,dc=org' |
||||
AUTH_LDAP_BIND_PASSWORD = '' |
||||
AUTH_LDAP_SEARCH_OU = 'ou=tech,dc=jumpserver,dc=org' |
||||
AUTH_LDAP_SEARCH_FILTER = '(cn=%(user)s)' |
||||
AUTH_LDAP_USER_ATTR_MAP = { |
||||
"username": "cn", |
||||
"name": "sn", |
||||
"email": "mail" |
||||
} |
||||
AUTH_LDAP_START_TLS = False |
||||
|
||||
def __init__(self): |
||||
pass |
||||
|
||||
def __getattr__(self, item): |
||||
return None |
||||
|
||||
|
||||
class DockerConfig(Config): |
||||
""" |
||||
配置文件默认从环境变量里读取,如果没有会使用后面的默认值 |
||||
""" |
||||
# 用来加密数据的key, 可以修改,但务必保存好这个字符串,丢失它后加密会无法解开 |
||||
# SECRET_KEY = "SOME_KEY_NO_ONE_GUESS" |
||||
SECRET_KEY = os.environ.get("SECRET_KEY") or "MD923lkSDi8213kl),3()&^%aM2q1mz;223lkM0o1" |
||||
# 访问的域名, 格式 http[s]://域名[:端口号] |
||||
# SITE_URL = "http://jumpserver.fit2cloud.com" |
||||
SITE_URL = os.environ.get("SITE_URL") or 'http://localhost' |
||||
# 是否开启DEBUG模式 |
||||
# DEBUG = True, or DEBUG = False, |
||||
DEBUG = bool(os.environ.get("DEBUG")) if os.environ.get("DEBUG") else False |
||||
# 日志级别, 默认 INFO |
||||
# LOG_LEVEL = WARN |
||||
LOG_LEVEL = os.environ.get("LOG_LEVEL") or "INFO" |
||||
# 使用的数据库类型,支持 SQLite, MySQL, PostgreSQL, Oracle |
||||
# 数据库设置, 如果使用外部的mysql请设置,否则不要改动 |
||||
|
||||
# DB_ENGINE = "oracle" | "postgre" | "mysql" | "sqlite3" |
||||
DB_ENGINE = os.environ.get("DB_ENGINE") or 'mysql' |
||||
# DB_HOST = "192.168.1.1" |
||||
DB_HOST = os.environ.get("DB_HOST") or 'mysql' |
||||
# 端口号 |
||||
# DB_PORT = 3306 |
||||
DB_PORT = os.environ.get("DB_PORT") or 3306 |
||||
# 数据库账号 |
||||
# DB_USER = "jumpserver" |
||||
DB_USER = os.environ.get("DB_USER") or 'root' |
||||
# 数据库密码 |
||||
# DB_PASSWORD = "db_jumpserver_password" |
||||
DB_PASSWORD = os.environ.get("DB_PASSWORD") or '' |
||||
# 数据库名称 |
||||
# DB_NAME = "jumpserver" |
||||
DB_NAME = os.environ.get("DB_NAME") or 'jumpserver' |
||||
|
||||
# Redis配置,如果不使用外部redis不要改动 |
||||
# Redis地址 |
||||
# REDIS_HOST = "192.168.1.1" |
||||
REDIS_HOST = os.environ.get("REDIS_HOST") or 'redis' |
||||
# Redis端口号 |
||||
# REDIS_PORT = 6380 |
||||
REDIS_PORT = os.environ.get("REDIS_PORT") or 6379 |
||||
# Redis密码 |
||||
# REDIS_PASSWORD = "redis_password" |
||||
REDIS_PASSWORD = os.environ.get("REDIS_PASSWORD") or '' |
||||
|
||||
# 邮箱SMTP设置, 可以参考各运营商配置文档 |
||||
# SMTP服务器地址 |
||||
# EMAIL_HOST = 'smtp.qq.com' |
||||
EMAIL_HOST = 'smtp.163.com' |
||||
# SMTP端口号 |
||||
# EMAIL_PORT = 465 |
||||
EMAIL_PORT = 25 |
||||
# SMTP连接邮箱地址 |
||||
# EMAIL_HOST_USER = "noreply@jumpserver.org" |
||||
EMAIL_HOST_USER = '' |
||||
# SMTP邮箱的密码, 注意 一些运营商通常要求使用授权码来发SMTP邮件 |
||||
EMAIL_HOST_PASSWORD = '' |
||||
# 是否启用SSL, 如果端口号是 465通常设置为True |
||||
# EMAIL_USE_SSL = True |
||||
EMAIL_USE_SSL = True if EMAIL_PORT == 465 else False |
||||
# 是否启用TLS, 如果端口号是 587通常设置为True |
||||
# EMAIL_USE_TLS = True |
||||
EMAIL_USE_TLS = True if EMAIL_PORT == 587 else False |
||||
# 邮件的主题前缀 |
||||
EMAIL_SUBJECT_PREFIX = '[Jumpserver] ' |
||||
|
||||
# 认证启用LDAP的设置 |
||||
# 是否启用LDAP,默认不启用 |
||||
# AUTH_LDAP = True |
||||
AUTH_LDAP = False |
||||
# LDAP的地址 |
||||
AUTH_LDAP_SERVER_URI = 'ldap://localhost:389' |
||||
# LDAP绑定的查询账户 |
||||
AUTH_LDAP_BIND_DN = 'cn=admin,dc=jumpserver,dc=org' |
||||
# 密码 |
||||
AUTH_LDAP_BIND_PASSWORD = '' |
||||
# 用户所在的ou |
||||
AUTH_LDAP_SEARCH_OU = 'ou=tech,dc=jumpserver,dc=org' |
||||
# 查询时使用的过滤器, 仅可以修改前面的表示符,可能是cn或uid, 也就是登录用户名所在字段 |
||||
# AUTH_LDAP_SEARCH_FILTER = '(uid=%(user)s)' |
||||
AUTH_LDAP_SEARCH_FILTER = '(cn=%(user)s)' |
||||
# LDAP用户信息映射到Jumpserver |
||||
AUTH_LDAP_USER_ATTR_MAP = { |
||||
"username": "cn", # 将LDAP信息中的 `cn` 字段映射为 `username(用户名)` |
||||
"name": "sn", # 将 LDAP信息中的 `sn` 映射为 `name(姓名)` |
||||
"email": "mail" # 将 LDAP信息中的 `mail` 映射为 `email(邮箱地址)` |
||||
} |
||||
# 是否启用TLS加密 |
||||
AUTH_LDAP_START_TLS = False |
||||
|
||||
|
||||
# Default using Config settings, you can write if/else for different env |
||||
config = DockerConfig() |
||||
|
Loading…
Reference in new issue