Skip to content

Commit

Permalink
新增环境编排功能
Browse files Browse the repository at this point in the history
  • Loading branch information
xxxxbxxxxx committed Dec 23, 2020
1 parent 295bb36 commit a911d61
Show file tree
Hide file tree
Showing 59 changed files with 2,335 additions and 155 deletions.
Binary file modified vulfocus-api/db.sqlite3
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
networks:
"\u7F51\u5361001":
external: true
"\u7F51\u5361002":
external: true
services:
4ufr60aq7ee0:
image: vulfocus/struts2-cve_2016_0785:latest
networks:
- "\u7F51\u5361002"
50hgia2qw7c0:
image: vulfocus/struts2-cnvd_2016_04656:latest
networks:
- "\u7F51\u5361001"
- "\u7F51\u5361002"
5g61uafbyso0:
image: hello-node_hello:latest
networks:
- "\u7F51\u5361001"
ports:
- ${VULFOCUS4E5763324D5856685A6D4A35633238774C54457A4D7A633D}:1337
version: '3.2'
2 changes: 1 addition & 1 deletion vulfocus-api/dockerapi/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class ContainerVul(models.Model):
"""
container_id = models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, verbose_name='漏洞容器创建ID')
docker_container_id = models.CharField(max_length=255, verbose_name='Docker容器运行进ID')
image_id = models.ForeignKey(ImageInfo, on_delete=models.CASCADE, verbose_name='Docker ID')
image_id = models.ForeignKey(ImageInfo, on_delete=models.CASCADE, verbose_name='镜像ID')
user_id = models.IntegerField(verbose_name='用户ID')
vul_host = models.CharField(max_length=255, verbose_name='容器漏洞URL')
container_status = models.CharField(max_length=255, verbose_name='容器当前状态')
Expand Down
5 changes: 4 additions & 1 deletion vulfocus-api/dockerapi/serializers.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# coding:utf-8
from django.db.models import Q
from rest_framework import serializers
from dockerapi.models import ImageInfo, ContainerVul, SysLog
from user.models import UserProfile
Expand All @@ -25,8 +26,8 @@ def statusck(self, obj):
检测是否在时间模式中
'''
time_model_id = ''
# 排出已经删除数据 Q(docker_container_id__isnull=False), ~Q(docker_container_id=''),
data = ContainerVul.objects.all().filter(user_id=id, image_id=obj.image_id, time_model_id=time_model_id).first()

status["status"] = ""
status["is_check"] = False
status["container_id"] = ""
Expand All @@ -39,6 +40,8 @@ def statusck(self, obj):
if data:
status["start_date"] = ""
status["end_date"] = ""
if not data.docker_container_id:
data.container_status = "delete"
if data.container_status == "running":
status["host"] = data.vul_host
status["port"] = data.vul_port
Expand Down
12 changes: 9 additions & 3 deletions vulfocus-api/dockerapi/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -306,7 +306,7 @@ def get_queryset(self):
else:
container_vul_list = ContainerVul.objects.all().order_by('-create_date')
else:
container_vul_list = ContainerVul.objects.all().filter(user_id=self.request.user.id, time_model_id="")
container_vul_list = ContainerVul.objects.filter(user_id=self.request.user.id, time_model_id="")
return container_vul_list

@action(methods=["get"], detail=True, url_path='start')
Expand Down Expand Up @@ -345,8 +345,14 @@ def delete_container(self, request, pk=None):
:param pk:
:return:
"""
if not pk:
return JsonResponse(R.build(msg="id不能为空"))
container_vul = ContainerVul.objects.filter(Q(docker_container_id__isnull=False), ~Q(docker_container_id=''),
container_id=pk).first()
if not container_vul:
return JsonResponse(R.build(msg="环境不存在"))
user_info = request.user
container_vul = self.get_object()
# container_vul = self.get_object()
task_id = tasks.delete_container_task(container_vul=container_vul, user_info=user_info,
request_ip=get_request_ip(request))
return JsonResponse(R.ok(task_id))
Expand Down Expand Up @@ -404,7 +410,7 @@ def get_queryset(self):
@api_view(http_method_names=["GET"])
def get_setting(request):
"""
获取
获取配置信息
:param request:
:return:
"""
Expand Down
69 changes: 69 additions & 0 deletions vulfocus-api/layout_image/migrations/0002_auto_20201210_1845.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Generated by Django 2.2.10 on 2020-12-10 18:45

from django.db import migrations, models
import django.db.models.deletion
import uuid


class Migration(migrations.Migration):

dependencies = [
('layout_image', '0001_initial'),
]

operations = [
migrations.RemoveField(
model_name='layoutservice',
name='exposed_port',
),
migrations.AddField(
model_name='layout',
name='layout_desc',
field=models.TextField(null=True, verbose_name='描述'),
),
migrations.AddField(
model_name='layout',
name='raw_content',
field=models.TextField(default='', verbose_name='原json内容'),
),
migrations.AddField(
model_name='layoutdata',
name='file_path',
field=models.TextField(default='', verbose_name='启动目录'),
),
migrations.AddField(
model_name='layoutservice',
name='service_name',
field=models.TextField(default='', verbose_name='服务环境名称'),
),
migrations.AlterField(
model_name='layout',
name='layout_id',
field=models.UUIDField(default=uuid.UUID('e92ded99-d4ae-47f1-9dce-02bed6064a55'), editable=False, primary_key=True, serialize=False, verbose_name='编排UUID'),
),
migrations.AlterField(
model_name='layoutdata',
name='layout_user_id',
field=models.UUIDField(default=uuid.UUID('57a01a3d-a7e6-49c8-881a-c92a1dbfd7af'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='layoutservice',
name='image_id',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='dockerapi.ImageInfo', verbose_name='镜像ID'),
),
migrations.AlterField(
model_name='layoutservice',
name='service_id',
field=models.UUIDField(default=uuid.UUID('7d1ccae2-3b00-465f-bdc6-e6a323e70efa'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='layoutservicecontainer',
name='service_container_id',
field=models.UUIDField(default=uuid.UUID('1df7e992-665e-401e-a9dd-ab9241c97666'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='layoutservicenetwork',
name='layout_service_network_id',
field=models.UUIDField(default=uuid.UUID('647cab36-7179-4268-856c-37350f7f0899'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
]
44 changes: 44 additions & 0 deletions vulfocus-api/layout_image/migrations/0003_auto_20201214_1645.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Generated by Django 2.2.10 on 2020-12-14 16:45

from django.db import migrations, models
import uuid


class Migration(migrations.Migration):

dependencies = [
('layout_image', '0002_auto_20201210_1845'),
]

operations = [
migrations.AddField(
model_name='layout',
name='image_name',
field=models.TextField(default='', verbose_name='图片名称'),
),
migrations.AlterField(
model_name='layout',
name='layout_id',
field=models.UUIDField(default=uuid.UUID('653c0591-b530-4dda-ad2e-8cf9b4592522'), editable=False, primary_key=True, serialize=False, verbose_name='编排UUID'),
),
migrations.AlterField(
model_name='layoutdata',
name='layout_user_id',
field=models.UUIDField(default=uuid.UUID('667c2dd2-c30b-49d0-aa85-578e6a4e25cf'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='layoutservice',
name='service_id',
field=models.UUIDField(default=uuid.UUID('8813b4e1-bce4-4083-9066-a1796693e161'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='layoutservicecontainer',
name='service_container_id',
field=models.UUIDField(default=uuid.UUID('fb1f2003-47aa-4d24-ab95-e1290685e40e'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='layoutservicenetwork',
name='layout_service_network_id',
field=models.UUIDField(default=uuid.UUID('968e1ca8-ba88-480d-be35-1df405831857'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
]
44 changes: 44 additions & 0 deletions vulfocus-api/layout_image/migrations/0004_auto_20201215_1846.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Generated by Django 2.2.10 on 2020-12-15 18:46

from django.db import migrations, models
import uuid


class Migration(migrations.Migration):

dependencies = [
('layout_image', '0003_auto_20201214_1645'),
]

operations = [
migrations.AddField(
model_name='layout',
name='is_release',
field=models.BooleanField(default=False, verbose_name='是否发布,默认否'),
),
migrations.AlterField(
model_name='layout',
name='layout_id',
field=models.UUIDField(default=uuid.UUID('56de0b5b-0442-422b-8d37-57f8a6a8f89a'), editable=False, primary_key=True, serialize=False, verbose_name='编排UUID'),
),
migrations.AlterField(
model_name='layoutdata',
name='layout_user_id',
field=models.UUIDField(default=uuid.UUID('dcba0fb6-1411-4d61-80a1-4b327f587745'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='layoutservice',
name='service_id',
field=models.UUIDField(default=uuid.UUID('27b28489-316e-48b6-b6d9-0dfd8b64e3a7'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='layoutservicecontainer',
name='service_container_id',
field=models.UUIDField(default=uuid.UUID('a095269c-515a-4f4f-8cdc-285d4d504229'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='layoutservicenetwork',
name='layout_service_network_id',
field=models.UUIDField(default=uuid.UUID('a0723689-2d27-439e-a13e-53b58a675b59'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
]
47 changes: 47 additions & 0 deletions vulfocus-api/layout_image/migrations/0005_auto_20201217_1734.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Generated by Django 2.2.10 on 2020-12-17 17:34

from django.db import migrations, models
import uuid


class Migration(migrations.Migration):

dependencies = [
('layout_image', '0004_auto_20201215_1846'),
]

operations = [
migrations.RemoveField(
model_name='layoutservicecontainer',
name='is_check',
),
migrations.RemoveField(
model_name='layoutservicecontainer',
name='is_check_date',
),
migrations.AlterField(
model_name='layout',
name='layout_id',
field=models.UUIDField(default=uuid.UUID('c191a745-0323-459f-9564-5044726118d5'), editable=False, primary_key=True, serialize=False, verbose_name='编排UUID'),
),
migrations.AlterField(
model_name='layoutdata',
name='layout_user_id',
field=models.UUIDField(default=uuid.UUID('e4c67565-5e78-4f21-b30b-23b640e08bde'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='layoutservice',
name='service_id',
field=models.UUIDField(default=uuid.UUID('4f91a2f4-4da8-4c76-ae0a-9c6e9dd16885'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='layoutservicecontainer',
name='service_container_id',
field=models.UUIDField(default=uuid.UUID('4e9cab49-b122-4511-bc60-659d353fcac1'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='layoutservicenetwork',
name='layout_service_network_id',
field=models.UUIDField(default=uuid.UUID('2b266c98-5c97-48ef-9c8a-84e5e1cbab57'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
]
56 changes: 56 additions & 0 deletions vulfocus-api/layout_image/migrations/0006_auto_20201217_1920.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Generated by Django 2.2.10 on 2020-12-17 19:20

from django.db import migrations, models
import django.db.models.deletion
import uuid


class Migration(migrations.Migration):

dependencies = [
('layout_image', '0005_auto_20201217_1734'),
]

operations = [
migrations.AlterField(
model_name='layout',
name='layout_id',
field=models.UUIDField(default=uuid.UUID('5ffabb95-6a0e-4f88-a98c-625e0d730e2e'), editable=False, primary_key=True, serialize=False, verbose_name='编排UUID'),
),
migrations.AlterField(
model_name='layoutdata',
name='layout_user_id',
field=models.UUIDField(default=uuid.UUID('9234521a-9e3f-478d-8119-94690c318ca7'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='layoutservice',
name='service_id',
field=models.UUIDField(default=uuid.UUID('33ecb5ec-ddbd-474b-a6ca-2e8b587aa92b'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='layoutservicecontainer',
name='service_container_id',
field=models.UUIDField(default=uuid.UUID('89d3791c-ef1a-4f65-bdd3-24093c53274e'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='layoutservicenetwork',
name='layout_service_network_id',
field=models.UUIDField(default=uuid.UUID('64338057-0b26-4500-a290-74389511a422'), editable=False, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.CreateModel(
name='LayoutServiceContainerScore',
fields=[
('layout_service_container_score_id', models.UUIDField(default=uuid.UUID('af22864c-5eca-466b-a94d-70698fc111b4'), editable=False, primary_key=True, serialize=False, verbose_name='ID')),
('user_id', models.IntegerField(verbose_name='用户ID')),
('flag', models.CharField(max_length=255, verbose_name='flag')),
('create_date', models.DateTimeField(auto_now_add=True, verbose_name='创建时间,默认为当前时间')),
('update_date', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
('layout_data_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='layout_image.LayoutData', verbose_name='编排 ID')),
('layout_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='layout_image.Layout', verbose_name='编排 ID')),
('service_container_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='layout_image.LayoutServiceContainer', verbose_name='编排 ID')),
],
options={
'db_table': 'layout_service_container_score',
},
),
]
Loading

0 comments on commit a911d61

Please sign in to comment.