mirror of
https://github.com/RobbieHan/sandboxMP.git
synced 2026-04-24 02:40:37 +08:00
natrule
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
from django import forms
|
||||
|
||||
from .models import Code, DeviceInfo, ConnectionInfo, DeviceFile, NetworkAsset
|
||||
from .models import Code, DeviceInfo, ConnectionInfo, DeviceFile, NetworkAsset, NatRule
|
||||
|
||||
|
||||
class CodeCreateForm(forms.ModelForm):
|
||||
@@ -127,4 +127,16 @@ class NetworkAssetUpdateForm(NetworkAssetCreateForm):
|
||||
if self.instance:
|
||||
matching_asset = NetworkAsset.objects.exclude(pk=self.instance.pk)
|
||||
if matching_asset.filter(ip_address=ip_address).exists():
|
||||
raise forms.ValidationError('资产地址已存在:{}已存在'.format(ip_address))
|
||||
raise forms.ValidationError('资产地址已存在:{}已存在'.format(ip_address))
|
||||
|
||||
|
||||
class NatRuleForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = NatRule
|
||||
fields = '__all__'
|
||||
error_messages = {
|
||||
'internet_ip': {'required': '请填写公网IP'},
|
||||
'src_port': {'required': '请填写公网端口'},
|
||||
'lan_ip': {'required': '请填写内网地址'},
|
||||
'dest_port': {'required': '请填写内网端口'}
|
||||
}
|
||||
|
||||
@@ -148,12 +148,13 @@ class NetworkAsset(models.Model):
|
||||
|
||||
|
||||
class NatRule(models.Model):
|
||||
internet_ip = models.CharField(max_length=80, blank=True, default='', verbose_name='互联网IP')
|
||||
src_port = models.IntegerField(blank=True, default='', verbose_name='源端口')
|
||||
lan_ip = models.CharField(max_length=80, blank=True, default='', verbose_name='内网IP')
|
||||
dest_port = models.IntegerField(blank=True, default='', verbose_name='目的端口')
|
||||
internet_ip = models.CharField(max_length=80, verbose_name='互联网IP')
|
||||
src_port = models.IntegerField(verbose_name='源端口')
|
||||
lan_ip = models.CharField(max_length=80, verbose_name='内网IP')
|
||||
dest_port = models.IntegerField(verbose_name='目的端口')
|
||||
state = models.BooleanField(default=True, verbose_name='状态')
|
||||
desc = models.TextField(blank=True, default='', verbose_name='备注信息')
|
||||
dev_cabinet = models.ForeignKey('Cabinet', blank=True, default='', on_delete=models.SET_DEFAULT, verbose_name='机柜信息')
|
||||
desc = models.CharField(max_length=100, verbose_name='规则说明')
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'NAT规则'
|
||||
@@ -164,14 +165,12 @@ 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')
|
||||
addr_resolution = models.ForeignKey('NatRule', blank=True, null=True,
|
||||
on_delete=models.SET_NULL, verbose_name='解析地址')
|
||||
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='解析服务')
|
||||
blank=True, null=True, on_delete=models.SET_NULL, verbose_name='域名服务')
|
||||
state = models.BooleanField(default=True, verbose_name='状态')
|
||||
ssl = models.FileField(upload_to="ssl_file/%Y/%m", null=True, blank=True, verbose_name="SSL证书")
|
||||
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='到保日期')
|
||||
desc = models.TextField(blank=True, default='', verbose_name='备注信息')
|
||||
@@ -181,3 +180,5 @@ class DomainName(AbstractMode):
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -50,4 +50,10 @@ urlpatterns = [
|
||||
path('eam/network_asset/update/', views_eam.NetworkAssetUpdateView.as_view(), name='eam-network_asset-update'),
|
||||
path('eam/network_asset/list/', views_eam.NetworkAssetListView.as_view(), name='eam-network_asset-list'),
|
||||
path('eam/network_asset/delete/', views_eam.NetworkAssetDeleteView.as_view(), name='eam-network_asset-delete'),
|
||||
|
||||
path('eam/natrule/', views_eam.NatRuleView.as_view(), name='eam-natrule'),
|
||||
path('eam/natrule/create/', views_eam.NatRuleCreateView.as_view(), name='eam-natrule-create'),
|
||||
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'),
|
||||
]
|
||||
|
||||
@@ -11,9 +11,10 @@ from system.mixin import LoginRequiredMixin
|
||||
from custom import (BreadcrumbMixin, SandboxDeleteView,
|
||||
SandboxListView, SandboxUpdateView, SandboxCreateView)
|
||||
from .models import (Cabinet, DeviceInfo, Code, ConnectionInfo, DeviceFile,
|
||||
Supplier, NetworkAsset)
|
||||
Supplier, NetworkAsset, NatRule, DomainName)
|
||||
from .forms import (DeviceCreateForm, DeviceUpdateForm, ConnectionInfoForm,
|
||||
DeviceFileUploadForm, NetworkAssetCreateForm, NetworkAssetUpdateForm)
|
||||
DeviceFileUploadForm, NetworkAssetCreateForm,
|
||||
NetworkAssetUpdateForm,NatRuleForm)
|
||||
from utils.db_utils import MongodbDriver
|
||||
from utils.sandbox_utils import LoginExecution
|
||||
|
||||
@@ -314,3 +315,97 @@ class NetworkAssetListView(SandboxListView):
|
||||
class NetworkAssetDeleteView(SandboxDeleteView):
|
||||
model = NetworkAsset
|
||||
|
||||
|
||||
class NatRuleView(LoginRequiredMixin, BreadcrumbMixin, TemplateView):
|
||||
template_name = 'cmdb/natrule.html'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
kwargs['all_cabinet'] = Cabinet.objects.all()
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
class NatRuleCreateView(SandboxCreateView):
|
||||
model = NatRule
|
||||
form_class = NatRuleForm
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
kwargs['all_cabinet'] = Cabinet.objects.all()
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
class NatRuleUpdateView(SandboxUpdateView):
|
||||
model = NatRule
|
||||
form_class = NatRuleForm
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
kwargs['all_cabinet'] = Cabinet.objects.all()
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
class NatRuleListView(SandboxListView):
|
||||
model = NatRule
|
||||
fields = ['id', 'internet_ip', 'src_port', 'lan_ip', 'dest_port', 'state', 'dev_cabinet__number', 'desc']
|
||||
|
||||
def get_filters(self):
|
||||
data = self.request.GET
|
||||
filters = {}
|
||||
if 'internet_ip' in data and data['internet_ip']:
|
||||
filters['internet_ip__icontains'] = data['internet_ip']
|
||||
if 'src_port' in data and data['src_port']:
|
||||
filters['src_port'] = data['src_port']
|
||||
if 'lan_ip' in data and data['lan_ip']:
|
||||
filters['lan_ip__icontains'] = data['lan_ip']
|
||||
if 'dest_port' in data and data['dest_port']:
|
||||
filters['dest_port'] = data['dest_port']
|
||||
if 'dev_cabinet' in data and data['dev_cabinet']:
|
||||
filters['dev_cabinet'] = data['dev_cabinet']
|
||||
if 'desc' in data and data['desc']:
|
||||
filters['desc__icontains'] = data['desc']
|
||||
return filters
|
||||
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user