mirror of
https://github.com/RobbieHan/sandboxMP.git
synced 2026-07-08 22:46:06 +08:00
domainname
This commit is contained in:
@@ -6,7 +6,8 @@ import re
|
||||
|
||||
from django import forms
|
||||
|
||||
from .models import Code, DeviceInfo, ConnectionInfo, DeviceFile, NetworkAsset, NatRule
|
||||
from .models import (Code, DeviceInfo, ConnectionInfo, DeviceFile,
|
||||
NetworkAsset, NatRule, DomainName)
|
||||
|
||||
|
||||
class CodeCreateForm(forms.ModelForm):
|
||||
@@ -118,8 +119,6 @@ class NetworkAssetForm(forms.ModelForm):
|
||||
memory = cleaned_data.get('memory')
|
||||
disk = cleaned_data.get('disk')
|
||||
show_on_top = cleaned_data.get('show_on_top')
|
||||
# if NetworkAsset.objects.filter(ip_address=ip_address).count():
|
||||
# raise forms.ValidationError('资产地址已存在:{}已存在'.format(ip_address))
|
||||
if memory:
|
||||
me = re.match('(.*)/(.*)', memory)
|
||||
if me:
|
||||
@@ -155,6 +154,18 @@ class NatRuleForm(forms.ModelForm):
|
||||
'internet_ip': {'required': '请填写公网IP'},
|
||||
'src_port': {'required': '请填写公网端口'},
|
||||
'lan_ip': {'required': '请填写内网地址'},
|
||||
'dest_port': {'required': '请填写内网端口'}
|
||||
'dest_port': {'required': '请填写内网端口'},
|
||||
'desc': {'required': '请填写规则说明'}
|
||||
}
|
||||
|
||||
|
||||
class DomainNameForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = DomainName
|
||||
fields = '__all__'
|
||||
error_messages = {
|
||||
'domain': {'required': '域名不能为空'},
|
||||
'buyDate': {'required': '请填写域名购买日期'},
|
||||
'warrantyDate': {'required': '请填写域名到期时间'},
|
||||
'dn_type': {'required': '域名类型不能为空'}
|
||||
}
|
||||
|
||||
@@ -167,14 +167,15 @@ class DomainName(AbstractMode):
|
||||
dn_type_choices = (('1', '主域名'),('2', '二级域名'))
|
||||
domain = models.CharField(max_length=200, verbose_name='域名')
|
||||
dn_type = models.CharField(max_length=20, choices=dn_type_choices, default='1')
|
||||
nat_rule = models.ManyToManyField('NatRule', blank=True)
|
||||
resolution_server = models.ForeignKey('Supplier', related_name='res_server',
|
||||
blank=True, null=True, on_delete=models.SET_NULL, verbose_name='解析服务')
|
||||
domain_provider = models.ForeignKey('Supplier', related_name='do_provider',
|
||||
blank=True, null=True, on_delete=models.SET_NULL, verbose_name='域名服务')
|
||||
operation_type = models.ForeignKey('Code', blank=True, null=True, on_delete=models.SET_NULL, verbose_name='所属项目')
|
||||
state = models.BooleanField(default=True, verbose_name='状态')
|
||||
ssl_cert = models.FileField(upload_to="ssl_cert/%Y/%m", null=True, blank=True, verbose_name="SSL证书")
|
||||
buyDate = models.DateField(default=datetime.now, blank=True, null=True, verbose_name='购买日期')
|
||||
warrantyDate = models.DateField(default=datetime.now, blank=True, null=True, verbose_name='到保日期')
|
||||
buyDate = models.DateField(default=datetime.now, verbose_name='购买日期')
|
||||
warrantyDate = models.DateField(default=datetime.now, verbose_name='到期时间')
|
||||
desc = models.TextField(blank=True, default='', verbose_name='备注信息')
|
||||
|
||||
class Meta:
|
||||
@@ -182,5 +183,13 @@ class DomainName(AbstractMode):
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
|
||||
class SSLCert(TimeAbstract):
|
||||
domain_name = models.ForeignKey('DomainName', blank=True, null=True, on_delete=models.SET_NULL, verbose_name='域名')
|
||||
ssl_cert = models.FileField(upload_to="ssl_cert/", verbose_name="域名证书")
|
||||
buyDate = models.DateField(default=datetime.now, verbose_name='购买日期')
|
||||
warrantyDate = models.DateField(default=datetime.now, verbose_name='到期时间')
|
||||
upload_user = models.CharField(max_length=20, verbose_name="上传人")
|
||||
desc = models.TextField(blank=True, default='', verbose_name='备注信息')
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -56,4 +56,11 @@ urlpatterns = [
|
||||
path('eam/natrule/update/', views_eam.NatRuleUpdateView.as_view(), name='eam-natrule-update'),
|
||||
path('eam/natrule/list/', views_eam.NatRuleListView.as_view(), name='eam-natrule-list'),
|
||||
path('eam/natrule/delete/', views_eam.NatRuleDeleteView.as_view(), name='eam-natrule-delete'),
|
||||
|
||||
path('eam/domain/', views_eam.DomainNameView.as_view(), name='eam-domain'),
|
||||
path('eam/domain/create/', views_eam.DomainNameCreateView.as_view(), name='eam-domain-create'),
|
||||
path('eam/domain/update/', views_eam.DomainNameUpdateView.as_view(), name='eam-domain-update'),
|
||||
path('eam/domain/list/', views_eam.DomainNameListView.as_view(), name='eam-domain-list'),
|
||||
path('eam/domain/delete/', views_eam.DomainNameDeleteView.as_view(), name='eam-domain-delete'),
|
||||
path('eam/domain/dn2nr/', views_eam.DomainName2NatRule.as_view(), name='eam-domain-dn2nr'),
|
||||
]
|
||||
|
||||
@@ -12,7 +12,7 @@ class CmdbView(LoginRequiredMixin, View):
|
||||
ret = dict()
|
||||
cabinet_all = Cabinet.objects.all()
|
||||
operation_type_all = Code.objects.filter(parent__key='operation_type')
|
||||
net_asset=list(NetworkAsset.objects.filter(show_on_top=True).values())
|
||||
# net_asset=list(NetworkAsset.objects.filter(show_on_top=True).values())
|
||||
cabinet_list = []
|
||||
cabinet_count = []
|
||||
for cabinet in cabinet_all:
|
||||
@@ -29,23 +29,23 @@ class CmdbView(LoginRequiredMixin, View):
|
||||
}
|
||||
operations.append(data)
|
||||
|
||||
for asset in net_asset:
|
||||
disk = asset['disk']
|
||||
memory = asset['memory']
|
||||
if disk:
|
||||
di = re.match('(.*)/(.*)', disk)
|
||||
di_used = int(di.group(1))
|
||||
di_total = int(di.group(2))
|
||||
di_percent = '{:.0%}'.format(di_used / di_total)
|
||||
asset['disk'] = {'disk': disk, 'percent': di_percent}
|
||||
if memory:
|
||||
me = re.match('(.*)/(.*)', memory)
|
||||
me_used = int(me.group(1))
|
||||
me_total = int(me.group(2))
|
||||
me_percent = '{:.0%}'.format(me_used / me_total)
|
||||
asset['memory'] = {'memory': memory, 'percent': me_percent}
|
||||
# for asset in net_asset:
|
||||
# disk = asset['disk']
|
||||
# memory = asset['memory']
|
||||
# if disk:
|
||||
# di = re.match('(.*)/(.*)', disk)
|
||||
# di_used = int(di.group(1))
|
||||
# di_total = int(di.group(2))
|
||||
# di_percent = '{:.0%}'.format(di_used / di_total)
|
||||
# asset['disk'] = {'disk': disk, 'percent': di_percent}
|
||||
# if memory:
|
||||
# me = re.match('(.*)/(.*)', memory)
|
||||
# me_used = int(me.group(1))
|
||||
# me_total = int(me.group(2))
|
||||
# me_percent = '{:.0%}'.format(me_used / me_total)
|
||||
# asset['memory'] = {'memory': memory, 'percent': me_percent}
|
||||
ret['cabinet_list'] = cabinet_list
|
||||
ret['cabinet_count'] = cabinet_count
|
||||
ret['operations'] = operations
|
||||
ret['net_asset'] = net_asset
|
||||
# ret['net_asset'] = net_asset
|
||||
return render(request, 'cmdb/cmdb_index.html', ret)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import re
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from django.views.generic import TemplateView, View
|
||||
from django.contrib.auth import get_user_model
|
||||
@@ -13,8 +14,7 @@ from custom import (BreadcrumbMixin, SandboxDeleteView,
|
||||
from .models import (Cabinet, DeviceInfo, Code, ConnectionInfo, DeviceFile,
|
||||
Supplier, NetworkAsset, NatRule, DomainName)
|
||||
from .forms import (DeviceCreateForm, DeviceUpdateForm, ConnectionInfoForm,
|
||||
DeviceFileUploadForm, NetworkAssetForm,
|
||||
NatRuleForm)
|
||||
DeviceFileUploadForm, NetworkAssetForm,NatRuleForm, DomainNameForm)
|
||||
from utils.db_utils import MongodbDriver
|
||||
from utils.sandbox_utils import LoginExecution
|
||||
|
||||
@@ -388,44 +388,73 @@ class NatRuleListView(SandboxListView):
|
||||
class NatRuleDeleteView(SandboxDeleteView):
|
||||
model = NatRule
|
||||
|
||||
# class DomainNameView(LoginRequiredMixin, BreadcrumbMixin, TemplateView):
|
||||
# template_name = 'cmdb/domainname.html'
|
||||
#
|
||||
#
|
||||
# class DomainNameCreateView(SandboxCreateView):
|
||||
# model = DomainName
|
||||
# form_class = NetworkAssetCreateForm
|
||||
#
|
||||
# def get_context_data(self, **kwargs):
|
||||
# kwargs['all_supplier'] = Supplier.objects.all()
|
||||
# return super().get_context_data(**kwargs)
|
||||
#
|
||||
#
|
||||
# class DomainNameUpdateView(SandboxUpdateView):
|
||||
# model = NetworkAsset
|
||||
# form_class = NetworkAssetUpdateForm
|
||||
#
|
||||
# def get_context_data(self, **kwargs):
|
||||
# kwargs['all_provider'] = Supplier.objects.all()
|
||||
# return super().get_context_data(**kwargs)
|
||||
#
|
||||
#
|
||||
# class DomainNameListView(SandboxListView):
|
||||
# model = NetworkAsset
|
||||
# fields = ['id', 'domain', 'resolution_server', 'domain_provider', 'state', 'buyDate', 'warrantyDate', 'desc']
|
||||
#
|
||||
# def get_filters(self):
|
||||
# data = self.request.GET
|
||||
# filters = {'dn_type': '1'}
|
||||
# if 'domain' in data and data['domain']:
|
||||
# filters['domain__icontains'] = data['domain']
|
||||
# if 'resolution_server' in data and data['resolution_server']:
|
||||
# filters['resolution_server'] = data['resolution_server']
|
||||
# if 'domain_provider' in data and data['domain_provider']:
|
||||
# filters['domain_provider'] = data['domain_provider']
|
||||
#
|
||||
# return filters
|
||||
#
|
||||
#
|
||||
# class DomainNameDeleteView(SandboxDeleteView):
|
||||
# model = DomainName
|
||||
|
||||
class DomainNameView(LoginRequiredMixin, BreadcrumbMixin, TemplateView):
|
||||
template_name = 'cmdb/domainname.html'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
kwargs['all_operation'] = Code.objects.filter(parent__key='OPERATION_TYPE')
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
class DomainNameCreateView(SandboxCreateView):
|
||||
model = DomainName
|
||||
form_class = DomainNameForm
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
kwargs['all_supplier'] = Supplier.objects.all()
|
||||
kwargs['all_nat'] = NatRule.objects.all()
|
||||
kwargs['all_operation'] = Code.objects.filter(parent__key='OPERATION_TYPE')
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
class DomainNameUpdateView(SandboxUpdateView):
|
||||
model = DomainName
|
||||
form_class = DomainNameForm
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
kwargs['all_supplier'] = Supplier.objects.all()
|
||||
kwargs['all_nat'] = NatRule.objects.all()
|
||||
kwargs['all_operation'] = Code.objects.filter(parent__key='OPERATION_TYPE')
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
class DomainNameListView(SandboxListView):
|
||||
model = DomainName
|
||||
fields = ['id', 'domain', 'dn_type', 'resolution_server__firm',
|
||||
'domain_provider__firm', 'operation_type__value',
|
||||
'state', 'warrantyDate', 'desc']
|
||||
|
||||
def get_filters(self):
|
||||
data = self.request.GET
|
||||
filters = {}
|
||||
if 'select' in data and data['select']:
|
||||
select = int(data['select'])
|
||||
if select == 0:
|
||||
date_time = datetime.today()
|
||||
filters['warrantyDate__lte'] = date_time
|
||||
if select == 1:
|
||||
now = datetime.today()
|
||||
date_time = now + timedelta(days=30)
|
||||
filters['warrantyDate__range'] = (now, date_time)
|
||||
if 'dn_type' in data and data['dn_type']:
|
||||
filters['dn_type'] = data['dn_type']
|
||||
if 'domain' in data and data['domain']:
|
||||
filters['domain__icontains'] = data['domain']
|
||||
if 'operation_type' in data and data['operation_type']:
|
||||
filters['operation_type'] = data['operation_type']
|
||||
return filters
|
||||
|
||||
class DomainNameDeleteView(SandboxDeleteView):
|
||||
model = DomainName
|
||||
|
||||
|
||||
class DomainName2NatRule(LoginRequiredMixin, View):
|
||||
|
||||
def get(self, request):
|
||||
ret = dict()
|
||||
if 'id' in request.GET and request.GET['id']:
|
||||
domain_name = get_object_or_404(DomainName, pk=int(request.GET['id']))
|
||||
ret['all_nat'] = domain_name.nat_rule.all()
|
||||
return render(request, 'cmdb/domainname2natrule.html', ret)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user