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})
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})
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'})
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()
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'})
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'})