Example #1
0
def assets_view(request, aid):
	try:
		assets = Assets.objects.get(id=aid)
		userList = User.objects.all()
	except:
		return render(request, '404.html', {"user": request.user},
					  )
	if assets.assets_type in ['server', 'vmser']:
		try:
			asset_body = assets.server_assets
		except:
			return render(request, 'assets/assets_view.html', {"user": request.user},
						  )
		return render(request, 'assets/assets_view.html', {"user": request.user, "asset_type": assets.assets_type,
														   "asset_main": assets, "asset_body": asset_body,
														   "baseAssets": getBaseAssets(), 'userList': userList,})
	else:
		try:
			asset_body = assets.network_assets
		except Exception as ex:
			logger.debug(msg=ex)
			return render(request, 'assets/assets_view.html', {"user": request.user})
		return render(request, 'assets/assets_view.html', {"user": request.user, "asset_type": assets.assets_type,
														   "asset_main": assets, "asset_body": asset_body,
														   "baseAssets": getBaseAssets(), 'userList': userList})
Example #2
0
def assets_line(request):
	if request.method == "GET":
		return render(request, 'assets/assets_line.html', {"user": request.user, "baseAssets": getBaseAssets()}, )
	elif request.method == "POST":
		if request.POST.get('op') == 'add':
			line_name = request.POST.get('line_name')
			line_ip = request.POST.get('line_ip')
			line_is_master = request.POST.get('line_is_master')
			serializer = serializers.LineAssetsSerializer(data={'line_name':line_name, 'line_ip':line_ip, 'line_is_master':line_is_master})
			if  serializer.is_valid():
				print(serializer.errors)
			if not line_ip or not line_is_master or not line_name:
				return JsonResponse({'msg': "必选项不许为空~", "code": 502})
			elif serializer.is_valid():
				serializer.save()
				return JsonResponse({'msg': "添加成功~", "code": 400})
			else:
				return JsonResponse({'msg': str(serializer.errors), "code": 502})

		elif request.POST.get('op') == 'mod':
			line_id = request.POST.get('line_id')
			line_name = request.POST.get('line_name')
			line_ip = request.POST.get('line_ip')
			line_is_master = request.POST.get('line_is_master')
			if not line_ip or not line_is_master or not line_name:
				return JsonResponse({'msg': "必选项不许为空~", "code":502})
			else:
				try:
					line_snippet = Line_Assets.objects.get(id=line_id)
					line = serializers.LineAssetsSerializer(line_snippet,data={'line_name':line_name, 'line_ip':line_ip, 'line_is_master':line_is_master})
				except line_snippet.DoesNotExist:
					return JsonResponse({'msg': '线路不存在', "code": 502})
					logger.debug('删除的线路不存在%s',line_name)
				if line.is_valid():
					line.save()
					return JsonResponse({'msg': "修改成功~", "code": 400})
				else:
					print(line.errors)
					return JsonResponse({'msg': '修改失败', "code": 502})
		elif request.POST.get('op') == 'del':
			line_id = request.POST.get('id')
			try:
				Line_Assets.objects.get(id=line_id).delete()
			except Exception as ex:
				logger.debug(msg=ex)
				return JsonResponse({'msg': "删除失败~", "code": 502})
			return JsonResponse({'msg': "删除成功~", "code": 400})
Example #3
0
def assets_list(request):
	if request.method == 'GET':
		userList = User.objects.all()
		assetsList = Assets.objects.all().order_by("-id")
		assetsNumber = Assets.objects.values('assets_type').annotate(dcount=Count('assets_type'))
		return render(request, 'assets/assets_list.html', dict(user=request.user, totalAssets=assetsList.count(),
								baseAssets=getBaseAssets(), assetsList=assetsList,
								assetsNumber=assetsNumber, userList=userList),
					  )
	elif request.method == 'POST':
		assets_id = request.POST.get('assets_id')
		if request.POST.get('op') == 'del':
			try:
				assets_type = Assets.objects.get(id=assets_id).assets_type
			except Exception as ex:
				logger.debug(msg=ex)
			if assets_type in ['switch','route','firewall']:
				try:
					Network_Assets.objects.get(assets_id= assets_id).delete()
					Assets.objects.get(id=assets_id).delete()
				except Exception as ex:
					logger.debug(msg=ex)
					return JsonResponse({'msg': "删除失败~", "code": '502'})
				return JsonResponse({'msg': "删除成功~", "code": '400'})
			elif assets_type in ['server', 'vmser','storage']:
				try:
					Server_Assets.objects.get(assets_id= assets_id).delete()
					Assets.objects.get(id=assets_id).delete()
				except Exception as ex:
					logger.debug(msg=ex)
					return JsonResponse({'msg': "删除失败~", "code": '502'})
				return JsonResponse({'msg': "删除成功~", "code": '400'})
Example #4
0
    def connect(self):
        self.assetid = self.scope['url_route']['kwargs']['id']
        # 创建channels group, 命名为:用户名,并使用channel_layer写入到redis
        async_to_sync(self.channel_layer.group_add)(
            self.scope['user'].username, self.channel_name)
        # 返回给receive方法处理
        self.accept()

        try:
            netasset = Network_Assets.objects.get(id=self.assetid)
        except Exception as ex:
            logger.debug(msg=ex)
        if not netasset.ip or not netasset.passwd or not netasset.username:
            self.send("密码不存在")
            self.disconnect()

        else:
            if not netasset.port:
                ssh_port = 22
            else:
                ssh_port = int(netasset.port)
            self.sshclient = paramiko.SSHClient()
            self.sshclient.load_system_host_keys()
            self.sshclient.set_missing_host_key_policy(
                paramiko.AutoAddPolicy())
            try:
                self.send("连接中--------\r\n")
                self.sshclient.connect(netasset.ip,
                                       ssh_port,
                                       netasset.username,
                                       netasset.passwd,
                                       timeout=10)
            except:
                self.send("连接失败")
            self.chan = self.sshclient.invoke_shell(term='xterm')
            self.chan.settimeout(0)
            t1 = MyThread(999, self)
            t1.setDaemon(True)
            t1.start()
Example #5
0
def assets_modf(request, aid):
	if request.method == 'GET':
		try:
			assets = Assets.objects.get(id=aid)
			userList = User.objects.all()
		except:
			return render(request, 'assets/assets_modf.html', {"user": request.user},
						  )
		if assets.assets_type in ['server', 'vmser']:
			try:
				asset_body = assets.server_assets
			except Exception as ex:
				logger.error(msg="修改资产失败: {ex}".format(ex=str(ex)))
				return render(request, '404.html', {"user": request.user},
							  )
			return render(request, 'assets/assets_modf.html', {"user": request.user, "asset_type": assets.assets_type,
															   "asset_main": assets, "asset_body": asset_body,
															   "assets_data": getBaseAssets(), 'userList': userList},
						  )
		else:
			try:
				asset_body = assets.network_assets
			except:
				return render(request, 'assets/assets_modf.html', {"user": request.user},
							  )
			return render(request, 'assets/assets_modf.html', {"user": request.user, "asset_type": assets.assets_type,
															   "asset_main": assets, "asset_body": asset_body,
															   "assets_data": getBaseAssets(), 'userList': userList},
						  )
	elif request.method == 'POST':
		assets_type = json.loads(request.body)['assets_type']
		asset = json.loads(request.body)['data']['assets']
		dic = json.loads(request.body)['data']
		del dic['assets']
		del asset['name']
		del asset['id']
		del asset['assets_type']
		del asset['sn']
		try:
			Assets.objects.filter(id=aid).update(**asset)
		except Exception as ex:
			logger.debug(msg=ex)
			return JsonResponse({'msg': "修改失败~", "code": '502'})
		if assets_type == 'server':
			try:
				Server_Assets.objects.filter(assets_id=aid).update(**dic)
			except Exception as ex:
				logger.debug(msg=ex)
				return JsonResponse({'msg': "修改失败~", "code": '502'})
			return JsonResponse({'msg': "修改成功~", "code": '502'})
		elif assets_type == 'net':
			try:
				Network_Assets.objects.filter(assets_id=aid).update(**dic)
			except Exception as ex:
				logger.debug(msg=ex)
				return JsonResponse({'msg': "修改失败~", "code": '502'})
			return JsonResponse({'msg': "修改成功~", "code": '502'})
Example #6
0
def topo_edge(request):
    if request.method == 'GET':
        edges = Edges.objects.all()
        seredges = Server_Edges.objects.all()
        netedges = Network_Edges.objects.all()
        lineedges = Line_Edges.objects.all()

        edgesdic = []
        if edges:
            for edge in edges:
                edgeid = edge.id
                edgetype = edge.edges_type
                if edgetype == "net":
                    for netedge in netedges:
                        if edge.id == netedge.Edges_id:
                            srcdev = Network_Assets.objects.get(
                                id=netedge.src_id).hostname
                            dstdev = Network_Assets.objects.get(
                                id=netedge.dst_id).hostname
                elif edge.edges_type == "line":
                    for lineedge in lineedges:
                        if edge.id == lineedge.Edges_id:
                            srcdev = Network_Assets.objects.get(
                                id=lineedge.src_id).hostname
                            dstdev = Line_Assets.objects.get(
                                id=lineedge.dst_id).line_name
                elif edge.edges_type == "server":
                    for seredge in seredges:
                        if edge.id == seredge.Edges_id:
                            srcdev = Network_Assets.objects.get(
                                id=seredge.src_id).hostname
                            dstdev = Server_Assets.objects.get(
                                id=seredge.dst_id).hostname
                edgesdic.append({
                    'id': str(edgeid),
                    'type': edgetype,
                    'srcdev': srcdev,
                    'dstdev': dstdev
                })
        return render(request, 'topo/topo_edge.html', {'edges': edgesdic})
    elif request.method == 'POST':
        if request.POST.get('op') == 'type_select':
            srcdic = []
            dstdic = []
            link_type = request.POST.get('link_type')
            netasset = Network_Assets.objects.filter(is_master=True)
            for net in netasset:
                srcdic.append({'id': net.id, 'name': net.hostname})
            if link_type == "server":
                serverasset = Server_Assets.objects.all()
                for server in serverasset:
                    dstdic.append({'id': server.id, 'name': server.hostname})
                return JsonResponse({'src': srcdic, 'dst': dstdic})
            elif link_type == "net":
                return JsonResponse({'src': srcdic, 'dst': srcdic})
            elif link_type == "line":
                lineasset = Line_Assets.objects.filter(line_is_master=True)
                for line in lineasset:
                    dstdic.append({'id': line.id, 'name': line.line_name})
                return JsonResponse({'src': srcdic, 'dst': dstdic})
        elif request.POST.get('op') == 'add_link':
            link_type = request.POST.get('link_type')
            src = request.POST.get('src')
            dst = request.POST.get('dst')
            try:
                srcasset = Network_Assets.objects.get(id=src)
            except Exception as e:
                logger.warn("查询资产错误,错误原因:%s", e)
            try:
                edge = Edges.objects.create(edges_type=link_type)
            except Exception as ex:
                logger.warn("增加edge错误,错误原因:%s", e)
            if link_type == "server":
                dstasset = Server_Assets.objects.get(id=dst)
                try:
                    Server_Edges.objects.create(Edges=edge,
                                                src=srcasset,
                                                dst=dstasset)
                except Exception as e:
                    logger.warn("增加edge错误,错误原因:%s", e)
                    edge.delete()
                return JsonResponse({'msg': '添加成功'})
            elif link_type == "net":
                dstasset = Network_Assets.objects.get(id=dst)
                try:
                    Network_Edges.objects.create(Edges=edge,
                                                 src=srcasset,
                                                 dst=dstasset)
                except Exception as ex:
                    logger.warn("增加edge错误,错误原因:%s", e)
                    edge.delete()
                return JsonResponse({'msg': '添加成功'})
            elif link_type == "line":
                dstasset = Line_Assets.objects.get(id=dst)
                try:
                    Line_Edges.objects.create(Edges=edge,
                                              src=srcasset,
                                              dst=dstasset)
                except Exception as ex:
                    logger.warn("增加edge错误,错误原因:%s", e)
                    edge.delete()
                return JsonResponse({'msg': '添加成功'})
        elif request.POST.get('op') == 'del_edge':
            id = request.POST.get('id')
            edge = Edges.objects.get(id=id)
            if edge.edges_type == "net":
                try:
                    with transaction.atomic():
                        Network_Edges.objects.get(Edges_id=id).delete()
                        edge.delete()
                except Exception as e:
                    logger.debug("删除Edge错误,错误原因:%s", e)
                    return JsonResponse({'msg': "删除失败~", "code": '500'})
                return JsonResponse({'msg': "删除成功~", "code": '400'})
            elif edge.edges_type == "line":
                try:
                    with transaction.atomic():
                        Line_Edges.objects.get(Edges_id=id).delete()
                        edge.delete()
                except Exception as e:
                    logger.debug("删除Edge错误,错误原因:%s", e)
                    return JsonResponse({'msg': "删除失败~", "code": '500'})
                return JsonResponse({'msg': "删除成功~", "code": '400'})
            elif edge.edges_type == "server":
                try:
                    with transaction.atomic():
                        Server_Edges.objects.get(Edges_id=id).delete()
                        edge.delete()
                except Exception as e:
                    logger.debug("删除Edge错误,错误原因:%s", e)
                    return JsonResponse({'msg': "删除失败~", "code": '500'})
                return JsonResponse({'msg': "删除成功~", "code": '400'})