summaryrefslogtreecommitdiff
path: root/sdnData/fronted/static/js/app.b4b72dfc32782ea363c1.js.map
diff options
context:
space:
mode:
Diffstat (limited to 'sdnData/fronted/static/js/app.b4b72dfc32782ea363c1.js.map')
-rw-r--r--sdnData/fronted/static/js/app.b4b72dfc32782ea363c1.js.map1
1 files changed, 1 insertions, 0 deletions
diff --git a/sdnData/fronted/static/js/app.b4b72dfc32782ea363c1.js.map b/sdnData/fronted/static/js/app.b4b72dfc32782ea363c1.js.map
new file mode 100644
index 0000000..b549ec9
--- /dev/null
+++ b/sdnData/fronted/static/js/app.b4b72dfc32782ea363c1.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///./src/App.vue?e207","webpack:///./src/App.vue","webpack:///src/components/PcapTable.vue","webpack:///./src/components/PcapTable.vue?1767","webpack:///./src/components/PcapTable.vue","webpack:///./src/components/Home.vue?c1b2","webpack:///./src/components/Home.vue","webpack:///src/components/Home.vue","webpack:///src/components/PlayChart.vue","webpack:///./src/components/PlayChart.vue?4bcc","webpack:///./src/components/PlayChart.vue","webpack:///src/components/Chart.vue","webpack:///./src/components/Chart.vue?3ae6","webpack:///./src/components/Chart.vue","webpack:///src/components/RealTime.vue","webpack:///./src/components/RealTime.vue?ea56","webpack:///./src/components/RealTime.vue","webpack:///src/components/AppDetail.vue","webpack:///./src/components/AppDetail.vue?49d8","webpack:///./src/components/AppDetail.vue","webpack:///src/components/Qos.vue","webpack:///./src/components/Qos.vue?51e8","webpack:///./src/components/Qos.vue","webpack:///src/components/Network.vue","webpack:///./src/components/Network.vue?defd","webpack:///./src/components/Network.vue","webpack:///src/components/Introduction.vue","webpack:///./src/components/Introduction.vue?904b","webpack:///./src/components/Introduction.vue","webpack:///./src/router/index.js","webpack:///./src/main.js"],"names":["App","render","_h","this","$createElement","_c","_self","staticRenderFns","src_App","__webpack_require__","normalizeComponent","PcapTable","name","data","tableData","userId","created","getPcapData","methods","tableRowClassName","_ref","row","rowIndex","type","clearTime","clearInterval","timer","_this","$axios","get","then","res","pcapData","forEach","item","index","unshift","catch","error","console","log","start","alert","stop","mounted","setInterval","beforeDestroy","components_PcapTable","_vm","staticStyle","text-align","font-size","staticClass","margin-right","_v","attrs","slot","nativeOn","click","$event","_s","max-height","row-class-name","prop","label","width","src_components_PcapTable","PcapTable_normalizeComponent","ssrContext","components_Home","background-color","router","default-openeds","default-active","$route","path","_l","idx","key","id","src_components_Home","Home_normalizeComponent","appName","PlayChart","fmcharts","appcharts","pktcharts","piecharts","malwareCnt","formalCnt","appCnt","pktSpeed","pieData","getChartData","chartSetOpt","setOption","series","fmChart","echarts_default","a","init","document","getElementById","title","text","tooltip","legend","xAxis","yAxis","barWidth","itemStyle","normal","color","params","colorList","dataIndex","length","appChart","pktChart","from_default","Array","keys","pieChart","trigger","formatter","orient","top","left","radius","avoidLabelOverlap","show","position","emphasis","fontSize","fontWeight","labelLine","$nextTick","components_PlayChart","span","height","Chart","components","Home","PlayChart_normalizeComponent","components_Chart","border","src_components_Chart","Chart_normalizeComponent","RealTime","components_RealTime","src_components_RealTime","RealTime_normalizeComponent","AppDetail","pktchart","avgchart","appAvg","appData","avgcharts","value","avgChart","min","max","detail","_this2","watch","newUrl","oldUrl","_this3","components_AppDetail","src_components_AppDetail","AppDetail_normalizeComponent","Qos","mininetcharts","firstRoad","secondRoad","firstData","secondData","input","options","links","source","target","mininetChart","x","y","animationDurationUpdate","animationEasingUpdate","defineProperty_default","layout","symbolSize","roam","categories","edgeSymbol","edgeSymbolSize","edgeLabel","lineStyle","textStyle","submit","test","post","cnt","app","status","components_Qos","placeholder","model","callback","$$v","expression","clearable","icon","align","Network","Qos_normalizeComponent","components_Network","src_components_Network","Network_normalizeComponent","Introduction","components_Introduction","src_components_Introduction","Introduction_normalizeComponent","Vue","use","Router","routes","component","props","prototype","$qs","Qs","axios","config","productionTip","ElementUI","el","template"],"mappings":"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","file":"static/js/app.b4b72dfc32782ea363c1.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('router-view')],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6763872a\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nvar __vue_script__ = null\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6763872a\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","<template>\r\n <el-container>\r\n <el-header style=\"text-align: right; font-size: 12px\">\r\n <el-dropdown>\r\n <i class=\"el-icon-setting\" style=\"margin-right: 20px\"></i>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item v-on:click.native=\"start\">启动</el-dropdown-item>\r\n <el-dropdown-item v-on:click.native=\"stop\">停止</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n <span>{{userId}}</span>\r\n </el-header>\r\n <!-- </el-container>\r\n <el-container> -->\r\n <el-main>\r\n <el-table :data=\"tableData\" max-height=\"750\" :row-class-name=\"tableRowClassName\">\r\n <el-table-column prop=\"sIP\" label=\"源IP\" width=\"250\">\r\n </el-table-column>\r\n <el-table-column prop=\"dIP\" label=\"目的IP\" width=\"250\">\r\n </el-table-column>\r\n <el-table-column prop=\"sMac\" label=\"源Mac\" width=\"250\">\r\n </el-table-column>\r\n <el-table-column prop=\"dMac\" label=\"目的Mac\" width=\"250\">\r\n </el-table-column>\r\n <el-table-column prop=\"sPort\" label=\"源端口\" width=\"100\">\r\n </el-table-column>\r\n <el-table-column prop=\"dPort\" label=\"目的端口\" width=\"100\">\r\n </el-table-column>\r\n <el-table-column prop=\"protocol\" label=\"协议\" width=\"100\">\r\n </el-table-column>\r\n <el-table-column prop=\"app\" label=\"类型\" width=\"100\">\r\n </el-table-column>\r\n </el-table>\r\n</el-main>\r\n </el-container>\r\n</template>\r\n<style>\r\n.el-header {\r\n background-color: #B3C0D1;\r\n color: #333;\r\n line-height: 60px;\r\n}\r\n\r\n.el-table .warning {\r\n background: #FFA500;\r\n}\r\n\r\n.el-table .success {\r\n background: #f0f9eb;\r\n}\r\n\r\n.el-table .error {\r\n background: #C1232B;\r\n}\r\n</style>\r\n\r\n<script>\r\nexport default {\r\n name: 'PcapTable',\r\n data() {\r\n return {\r\n tableData: [],\r\n userId:'Admin',\r\n }\r\n },\r\n created() {\r\n // this.getData()\r\n this.getPcapData()\r\n },\r\n methods: {\r\n tableRowClassName({\r\n row,\r\n rowIndex\r\n }) {\r\n if (row.type >= 10) {\r\n return 'error';\r\n }\r\n return 'success';\r\n },\r\n clearTime() {\r\n clearInterval(this.timer);\r\n },\r\n getPcapData() {\r\n this.$axios.get('/api/pcap/')\r\n .then(res => {\r\n // this.tableData = [];\r\n res.data.pcapData.forEach((item, index) => {\r\n this.tableData.unshift(item)\r\n })\r\n }).catch((error) => {\r\n console.log(error)\r\n })\r\n },\r\n start(){\r\n // alert(\"系统正在启动,请稍等\");\r\n this.$axios.get('/api/start/').\r\n then(res =>{\r\n alert(\"系统正在启动,请稍等\");\r\n }).catch((error)=>{\r\n alert(\"系统启动失败,请稍后重试\");\r\n console.log(error);\r\n })\r\n },\r\n stop(){\r\n // alert(\"系统正在启动,请稍等\");\r\n this.$axios.get('/api/stop/').\r\n then(res =>{\r\n alert(\"系统正在关闭,请稍等\");\r\n }).catch((error)=>{\r\n alert(\"系统关闭失败,请稍后重试\");\r\n console.log(error);\r\n })\r\n },\r\n },\r\n mounted() {\r\n this.timer = setInterval(this.getPcapData, 1000);\r\n },\r\n beforeDestroy() {\r\n clearInterval(this.timer);\r\n }\r\n};\r\n</script>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/PcapTable.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-container',[_c('el-header',{staticStyle:{\"text-align\":\"right\",\"font-size\":\"12px\"}},[_c('el-dropdown',[_c('i',{staticClass:\"el-icon-setting\",staticStyle:{\"margin-right\":\"20px\"}}),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.start($event)}}},[_vm._v(\"启动\")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.stop($event)}}},[_vm._v(\"停止\")])],1)],1),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.userId))])],1),_vm._v(\" \"),_c('el-main',[_c('el-table',{attrs:{\"data\":_vm.tableData,\"max-height\":\"750\",\"row-class-name\":_vm.tableRowClassName}},[_c('el-table-column',{attrs:{\"prop\":\"sIP\",\"label\":\"源IP\",\"width\":\"250\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"dIP\",\"label\":\"目的IP\",\"width\":\"250\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"sMac\",\"label\":\"源Mac\",\"width\":\"250\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"dMac\",\"label\":\"目的Mac\",\"width\":\"250\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"sPort\",\"label\":\"源端口\",\"width\":\"100\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"dPort\",\"label\":\"目的端口\",\"width\":\"100\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"protocol\",\"label\":\"协议\",\"width\":\"100\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"app\",\"label\":\"类型\",\"width\":\"100\"}})],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-35d5c347\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/PcapTable.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-35d5c347\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PcapTable.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PcapTable.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PcapTable.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-35d5c347\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PcapTable.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/PcapTable.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-aside',{staticStyle:{\"background-color\":\"rgb(238, 241, 246)\"},attrs:{\"width\":\"200px\"}},[_c('el-menu',{attrs:{\"router\":\"\",\"default-openeds\":['1','2','3'],\"default-active\":this.$route.path}},[_c('el-submenu',{attrs:{\"index\":\"1\"}},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"el-icon-sort\"}),_vm._v(\"流量监控\")]),_vm._v(\" \"),_c('el-menu-item-group',[_c('el-menu-item',{attrs:{\"index\":\"/real\"}},[_vm._v(\"实时模式\")]),_vm._v(\" \"),_c('el-menu-item',{attrs:{\"index\":\"/chart\"}},[_vm._v(\"图表模式\")])],1)],2),_vm._v(\" \"),_c('el-submenu',{attrs:{\"index\":\"2\"}},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"el-icon-menu\"}),_vm._v(\"应用分析\")]),_vm._v(\" \"),_c('el-menu-item-group',_vm._l((_vm.appName),function(item,idx){return _c('el-menu-item',{key:idx,attrs:{\"id\":\"appId\",\"index\":'/app/'+idx}},[_vm._v(_vm._s(item))])}),1)],2),_vm._v(\" \"),_c('el-submenu',{attrs:{\"index\":\"3\"}},[_c('template',{slot:\"title\"},[_c('i',{staticClass:\"el-icon-s-promotion\"}),_vm._v(\"网络优化\")]),_vm._v(\" \"),_c('el-menu-item',{attrs:{\"index\":\"/network\"}},[_vm._v(\"QOS优化\")])],2)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-07b28d06\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Home.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-07b28d06\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Home.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Home.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Home.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-07b28d06\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Home.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Home.vue\n// module id = null\n// module chunks = ","<template>\r\n<div>\r\n <el-aside width=\"200px\" style=\"background-color: rgb(238, 241, 246)\">\r\n <el-menu router :default-openeds=\"['1','2','3']\" :default-active=\"this.$route.path\">\r\n <el-submenu index=\"1\">\r\n <template slot=\"title\"><i class=\"el-icon-sort\"></i>流量监控</template>\r\n <el-menu-item-group>\r\n <el-menu-item index=\"/real\">实时模式</el-menu-item>\r\n <el-menu-item index=\"/chart\">图表模式</el-menu-item>\r\n </el-menu-item-group>\r\n </el-submenu>\r\n <el-submenu index=\"2\">\r\n <template slot=\"title\"><i class=\"el-icon-menu\"></i>应用分析</template>\r\n <el-menu-item-group>\r\n <el-menu-item id=\"appId\" v-for=\"(item,idx) in appName\" :index=\"'/app/'+idx\" :key=\"idx\">{{item}}</el-menu-item>\r\n </el-menu-item-group>\r\n </el-submenu>\r\n <el-submenu index=\"3\">\r\n <template slot =\"title\"><i class=\"el-icon-s-promotion\"></i>网络优化</template>\r\n <el-menu-item index=\"/network\">QOS优化</el-menu-item>\r\n </el-submenu>\r\n </el-menu>\r\n </el-aside>\r\n <!-- </el-container> -->\r\n</div>\r\n</template>\r\n<style>\r\n.el-header {\r\n background-color: #B3C0D1;\r\n color: #333;\r\n line-height: 60px;\r\n}\r\n</style>\r\n\r\n<script>\r\nexport default {\r\n name: 'Home',\r\n data() {\r\n return {\r\n appName: [\"Facetime\", \"BitTorrent\", \"WorldOfWarcraft\", \"FTP\", \"MySQL\", \"Skype\", \"SMB\", \"Gmail\", \"Weibo\", \"Outlook\", \"Malware\"]\r\n }\r\n }\r\n};\r\n</script>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Home.vue","<template>\r\n<el-container>\r\n <el-header style=\"text-align: right; font-size: 12px\">\r\n <el-dropdown>\r\n <i class=\"el-icon-setting\" style=\"margin-right: 20px\"></i>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item v-on:click.native=\"start\">启动</el-dropdown-item>\r\n <el-dropdown-item v-on:click.native=\"stop\">停止</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n <span>{{userId}}</span>\r\n </el-header>\r\n <el-main>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-card id=\"fmchart\" style=\"width: 600px;height:400px;\" class=\"box-card\">\r\n </el-card>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-card id=\"appchart\" style=\"width: 600px;height:400px;\" class=\"box-card\">\r\n </el-card>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-card id=\"pktchart\" style=\"width: 600px;height:400px;\" class=\"box-card\">\r\n </el-card>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-card id=\"piechart\" style=\"width: 600px;height:400px;\" class=\"box-card\">\r\n </el-card>\r\n </el-col>\r\n </el-row>\r\n </el-main>\r\n</el-container>\r\n</template>\r\n<style>\r\n.el-header {\r\n background-color: #B3C0D1;\r\n color: #333;\r\n line-height: 60px;\r\n}\r\n</style>\r\n\r\n<script>\r\nimport echarts from 'echarts'\r\nexport default {\r\n name: 'PlayChart',\r\n data() {\r\n return {\r\n fmcharts: '',\r\n appcharts: '',\r\n pktcharts: '',\r\n piecharts: '',\r\n malwareCnt: 0,\r\n formalCnt: 0,\r\n userId: 'Admin',\r\n appCnt: '',\r\n pktSpeed: '',\r\n appName: [\"Facetime\",\"BitTorrent\",\"WorldOfWarcraft\",\"FTP\",\"MySQL\",\"Skype\",\"SMB\",\"Gmail\",\"Weibo\",\"Outlook\",\"Malware\"],\r\n pieData:[]\r\n }\r\n },\r\n created() {\r\n // this.getData()\r\n this.getChartData()\r\n },\r\n methods: {\r\n clearTime() {\r\n clearInterval(this.timer);\r\n },\r\n getChartData() {\r\n this.$axios.get('/api/cnt/')\r\n .then(res => {\r\n this.malwareCnt = res.data.malwareCnt\r\n this.formalCnt = res.data.formalCnt\r\n this.appCnt = res.data.appCnt\r\n this.pktSpeed = res.data.pktSpeed\r\n this.pieData = res.data.pieData\r\n }).catch((error) => {\r\n console.log(error)\r\n })\r\n },\r\n chartSetOpt() {\r\n this.fmcharts.setOption({\r\n series: [{\r\n data: [this.formalCnt, this.malwareCnt]\r\n }]\r\n });\r\n this.appcharts.setOption({\r\n series: [{\r\n data: this.appCnt\r\n }]\r\n });\r\n this.pktcharts.setOption({\r\n series: [{\r\n data: this.pktSpeed\r\n }]\r\n });\r\n this.piecharts.setOption({\r\n series: [{\r\n data: this.pieData\r\n }]\r\n });\r\n // alert(1);\r\n },\r\n fmChart() {\r\n this.fmcharts = echarts.init(document.getElementById('fmchart'));\r\n this.fmcharts.setOption({\r\n title: {\r\n text: '流量总览'\r\n },\r\n tooltip: {},\r\n legend: {\r\n data: ['数据包数量']\r\n },\r\n xAxis: {\r\n data: ['正常流量', '恶意流量']\r\n },\r\n yAxis: {},\r\n series: [{\r\n barWidth: 70,\r\n name: '数据包数量',\r\n type: 'bar',\r\n data: [this.formalCnt, this.malwareCnt],\r\n itemStyle: {\r\n normal: {\r\n color: function(params) {\r\n var colorList = [\"#9BCA63\", \"#C1232B\"];\r\n return colorList[params.dataIndex % colorList.length];\r\n }\r\n }\r\n }\r\n }]\r\n })\r\n },\r\n appChart() {\r\n this.appcharts = echarts.init(document.getElementById('appchart'));\r\n this.appcharts.setOption({\r\n title: {\r\n text: '各应用流量数量'\r\n },\r\n tooltip: {},\r\n legend: {\r\n data: ['数据包数量']\r\n },\r\n xAxis: {\r\n data: this.appName\r\n },\r\n yAxis: {},\r\n series: [{\r\n barWidth: 20,\r\n name: '数据包数量',\r\n type: 'bar',\r\n data: this.appCnt,\r\n itemStyle: {\r\n normal: {\r\n color: function(params) {\r\n var colorList = ['#B5C334', '#FCCE10', '#E87C25', '#27727B',\r\n '#FE8463', '#9BCA63', '#FAD860', '#F3A43B', '#60C0DD',\r\n '#D7504B','#C1232B'\r\n ];\r\n return colorList[params.dataIndex % colorList.length];\r\n }\r\n }\r\n }\r\n }]\r\n })\r\n },\r\n pktChart() {\r\n this.pktcharts = echarts.init(document.getElementById('pktchart'));\r\n this.pktcharts.setOption({\r\n title: {\r\n text: '流量速度'\r\n },\r\n tooltip: {},\r\n legend: {\r\n data: ['每秒数据包数量']\r\n },\r\n xAxis: {\r\n data: Array.from(new Array(60).keys())\r\n },\r\n yAxis: {},\r\n series: [{\r\n barWidth: 20,\r\n type: 'line',\r\n data: this.pktSpeed,\r\n }]\r\n })\r\n },\r\n pieChart() {\r\n this.piecharts = echarts.init(document.getElementById('piechart'));\r\n this.piecharts.setOption({\r\n title: {\r\n text: '应用流量占比'\r\n },\r\n tooltip: {\r\n trigger: 'item',\r\n formatter: '{a} <br/>{b}: {c} ({d}%)'\r\n },\r\n legend: {\r\n orient: 'vertical',\r\n top:'5%',\r\n left: 10,\r\n data: this.appName\r\n },\r\n series: [{\r\n name: '应用数据包数量',\r\n type: 'pie',\r\n radius: ['50%', '70%'],\r\n avoidLabelOverlap: false,\r\n label: {\r\n show: false,\r\n position: 'center'\r\n },\r\n emphasis: {\r\n label: {\r\n show: true,\r\n fontSize: '30',\r\n fontWeight: 'bold'\r\n }\r\n },\r\n labelLine: {\r\n show: false\r\n },\r\n data: [\r\n ],\r\n itemStyle: {\r\n normal: {\r\n color: function(params) {\r\n var colorList = ['#B5C334', '#FCCE10', '#E87C25', '#27727B',\r\n '#FE8463', '#9BCA63', '#FAD860', '#F3A43B', '#60C0DD',\r\n '#D7504B','#C1232B'\r\n ];\r\n return colorList[params.dataIndex % colorList.length];\r\n }\r\n }\r\n }\r\n }]\r\n })\r\n },\r\n start(){\r\n // alert(\"系统正在启动,请稍等\");\r\n this.$axios.get('/api/start/').\r\n then(res =>{\r\n alert(\"系统正在启动,请稍等\");\r\n }).catch((error)=>{\r\n alert(\"系统启动失败,请稍后重试\");\r\n console.log(error);\r\n })\r\n },\r\n stop(){\r\n // alert(\"系统正在启动,请稍等\");\r\n this.$axios.get('/api/stop/').\r\n then(res =>{\r\n alert(\"系统正在关闭,请稍等\");\r\n }).catch((error)=>{\r\n alert(\"系统关闭失败,请稍后重试\");\r\n console.log(error);\r\n })\r\n },\r\n },\r\n mounted() {\r\n this.$nextTick(function() {\r\n this.fmChart();\r\n this.appChart();\r\n this.pktChart();\r\n this.pieChart();\r\n })\r\n // window.addEventListener(\"resize\", function() {\r\n // self.fmchart.resize();\r\n // self.appchart.resize();\r\n // });\r\n this.timer = setInterval(this.chartSetOpt, 1000);\r\n // this.drawChart();\r\n this.timer = setInterval(this.getChartData, 1000);\r\n\r\n },\r\n beforeDestroy() {\r\n clearInterval(this.timer);\r\n },\r\n};\r\n</script>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/PlayChart.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-container',[_c('el-header',{staticStyle:{\"text-align\":\"right\",\"font-size\":\"12px\"}},[_c('el-dropdown',[_c('i',{staticClass:\"el-icon-setting\",staticStyle:{\"margin-right\":\"20px\"}}),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.start($event)}}},[_vm._v(\"启动\")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.stop($event)}}},[_vm._v(\"停止\")])],1)],1),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.userId))])],1),_vm._v(\" \"),_c('el-main',[_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('el-card',{staticClass:\"box-card\",staticStyle:{\"width\":\"600px\",\"height\":\"400px\"},attrs:{\"id\":\"fmchart\"}})],1),_vm._v(\" \"),_c('el-col',{attrs:{\"span\":12}},[_c('el-card',{staticClass:\"box-card\",staticStyle:{\"width\":\"600px\",\"height\":\"400px\"},attrs:{\"id\":\"appchart\"}})],1),_vm._v(\" \"),_c('el-col',{attrs:{\"span\":12}},[_c('el-card',{staticClass:\"box-card\",staticStyle:{\"width\":\"600px\",\"height\":\"400px\"},attrs:{\"id\":\"pktchart\"}})],1),_vm._v(\" \"),_c('el-col',{attrs:{\"span\":12}},[_c('el-card',{staticClass:\"box-card\",staticStyle:{\"width\":\"600px\",\"height\":\"400px\"},attrs:{\"id\":\"piechart\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-7eb734ba\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/PlayChart.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7eb734ba\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PlayChart.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlayChart.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlayChart.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7eb734ba\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PlayChart.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/PlayChart.vue\n// module id = null\n// module chunks = ","<template>\r\n<el-container style=\"height: 100%; border: 1px solid #eee\">\r\n <Home></Home>\r\n <PlayChart></PlayChart>\r\n</el-container>\r\n</template>\r\n\r\n<script>\r\nimport Home from '@/components/Home'\r\nimport PlayChart from '@/components/PlayChart'\r\nexport default{\r\n name:'Chart',\r\n components:{\r\n Home,PlayChart\r\n }\r\n}\r\n</script>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Chart.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-container',{staticStyle:{\"height\":\"100%\",\"border\":\"1px solid #eee\"}},[_c('Home'),_vm._v(\" \"),_c('PlayChart')],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-3d3af6cb\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Chart.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Chart.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Chart.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3d3af6cb\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Chart.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Chart.vue\n// module id = null\n// module chunks = ","<template>\r\n<el-container style=\"height: 100%; border: 1px solid #eee\">\r\n <Home></Home>\r\n <PcapTable></PcapTable>\r\n</el-container>\r\n<!-- </el-container> -->\r\n</template>\r\n\r\n<script>\r\nimport Home from '@/components/Home'\r\nimport PcapTable from '@/components/PcapTable'\r\nexport default{\r\n name:'RealTime',\r\n components:{\r\n Home,PcapTable\r\n }\r\n}\r\n</script>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/RealTime.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-container',{staticStyle:{\"height\":\"100%\",\"border\":\"1px solid #eee\"}},[_c('Home'),_vm._v(\" \"),_c('PcapTable')],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-b4942332\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/RealTime.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./RealTime.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./RealTime.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b4942332\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./RealTime.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/RealTime.vue\n// module id = null\n// module chunks = ","<template>\r\n<el-container style=\"height: 100%; border: 1px solid #eee\">\r\n <Home></Home>\r\n <el-container>\r\n <el-header style=\"text-align: right; font-size: 12px\">\r\n <el-dropdown>\r\n <i class=\"el-icon-setting\" style=\"margin-right: 20px\"></i>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item v-on:click.native=\"start\">启动</el-dropdown-item>\r\n <el-dropdown-item v-on:click.native=\"stop\">停止</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n <span>{{userId}}</span>\r\n </el-header>\r\n <el-main>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-card id=\"pktchart\" style=\"width: 600px;height:400px;\" class=\"box-card\">\r\n </el-card>\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-card id=\"avgchart\" style=\"width: 600px;height:400px;\" class=\"box-card\">\r\n <!-- <i class=\"el-icon-star-on\"></i>{{this.appName}}<br> -->\r\n </el-card>\r\n </el-col>\r\n </el-row>\r\n <el-table :data=\"appData\" max-height=\"450\" :row-class-name=\"tableRowClassName\">\r\n <el-table-column prop=\"sIP\" label=\"源IP\" width=\"250\">\r\n </el-table-column>\r\n <el-table-column prop=\"dIP\" label=\"目的IP\" width=\"250\">\r\n </el-table-column>\r\n <el-table-column prop=\"sMac\" label=\"源Mac\" width=\"250\">\r\n </el-table-column>\r\n <el-table-column prop=\"dMac\" label=\"目的Mac\" width=\"250\">\r\n </el-table-column>\r\n <el-table-column prop=\"sPort\" label=\"源端口\" width=\"100\">\r\n </el-table-column>\r\n <el-table-column prop=\"dPort\" label=\"目的端口\" width=\"100\">\r\n </el-table-column>\r\n <el-table-column prop=\"protocol\" label=\"协议\" width=\"100\">\r\n </el-table-column>\r\n <el-table-column prop=\"app\" label=\"类型\" width=\"100\">\r\n </el-table-column>\r\n </el-table>\r\n </el-main>\r\n </el-container>\r\n</el-container>\r\n</template>\r\n\r\n<style>\r\n.el-header {\r\n background-color: #B3C0D1;\r\n color: #333;\r\n line-height: 60px;\r\n}\r\n</style>\r\n\r\n<script>\r\nimport echarts from 'echarts'\r\nimport Home from '@/components/Home'\r\nexport default {\r\n name: 'AppDetail',\r\n components: {\r\n Home\r\n },\r\n data() {\r\n return {\r\n pktchart: '',\r\n avgchart: '',\r\n userId: 'Admin',\r\n id: this.$route.params.id,\r\n appName: '',\r\n pktSpeed: '',\r\n appCnt: 0,\r\n appAvg:0,\r\n appData:[],\r\n }\r\n },\r\n methods: {\r\n tableRowClassName({\r\n row,\r\n rowIndex\r\n }) {\r\n if (row.type >= 10) {\r\n return 'error';\r\n }\r\n return 'success';\r\n },\r\n clearTime() {\r\n clearInterval(this.timer);\r\n },\r\n getChartData() {\r\n // this.appData = [];\r\n this.$axios.get('/api/app/' + this.id)\r\n .then(res => {\r\n this.pktSpeed = res.data.pktSpeed\r\n this.appCnt = res.data.appCnt\r\n this.appAvg = res.data.appAvg\r\n this.appData = res.data.appData\r\n }).catch((error) => {\r\n console.log(error)\r\n })\r\n },\r\n chartSetOpt() {\r\n this.pktcharts.setOption({\r\n series: [{\r\n data: this.pktSpeed\r\n }]\r\n });\r\n this.avgcharts.setOption({\r\n series: [{\r\n data: [{value:this.appAvg}]\r\n }]\r\n });\r\n },\r\n // clearTime(){\r\n // // alert(this.$route.params.id)\r\n // console.log(\"Clear\");\r\n // },\r\n pktChart() {\r\n this.pktcharts = echarts.init(document.getElementById('pktchart'));\r\n this.pktcharts.setOption({\r\n title: {\r\n text: '流量速度'\r\n },\r\n tooltip: {},\r\n legend: {\r\n data: ['每秒数据包数量']\r\n },\r\n xAxis: {\r\n data: Array.from(new Array(60).keys())\r\n },\r\n yAxis: {},\r\n series: [{\r\n barWidth: 20,\r\n type: 'line',\r\n data: this.pktSpeed,\r\n }]\r\n })\r\n },\r\n avgChart() {\r\n this.avgcharts = echarts.init(document.getElementById('avgchart'));\r\n this.avgcharts.setOption({\r\n title: {\r\n text: '流量均速'\r\n },\r\n tooltip: {\r\n // formatter: '{a} <br/>{b} : {c}%'\r\n },\r\n // toolbox: {\r\n // feature: {\r\n // restore: {},\r\n // saveAsImage: {}\r\n // }\r\n // },\r\n series: [{\r\n min:0,\r\n max:50,\r\n name: '流量均速',\r\n type: 'gauge',\r\n detail: {\r\n formatter: '{value}/s'\r\n },\r\n data: [{\r\n value: this.appAvg,\r\n name: '处理速度'\r\n }]\r\n }]\r\n })\r\n },\r\n start(){\r\n // alert(\"系统正在启动,请稍等\");\r\n this.$axios.get('/api/start/').\r\n then(res =>{\r\n alert(\"系统正在启动,请稍等\");\r\n }).catch((error)=>{\r\n alert(\"系统启动失败,请稍后重试\");\r\n console.log(error);\r\n })\r\n },\r\n stop(){\r\n // alert(\"系统正在启动,请稍等\");\r\n this.$axios.get('/api/stop/').\r\n then(res =>{\r\n alert(\"系统正在关闭,请稍等\");\r\n }).catch((error)=>{\r\n alert(\"系统关闭失败,请稍后重试\");\r\n console.log(error);\r\n })\r\n },\r\n },\r\n created() {\r\n this.$axios.get('/api/app/' + this.id)\r\n .then(res => {\r\n this.pktSpeed = res.data.pktSpeed\r\n this.appName = res.data.appName\r\n this.appCnt = res.data.appCnt\r\n this.appAvg = res.data.appAvg\r\n this.appData = res.data.appData\r\n }).catch((error) => {\r\n console.log(error)\r\n })\r\n },\r\n watch: {\r\n '$route': function(newUrl, oldUrl) {\r\n this.id = this.$route.params.id;\r\n this.$axios.get('/api/app/' + this.id)\r\n .then(res => {\r\n this.pktSpeed = res.data.pktSpeed\r\n this.appName = res.data.appName\r\n this.appCnt = res.data.appCnt\r\n this.appAvg = res.data.appAvg\r\n this.appData = res.data.appData\r\n }).catch((error) => {\r\n console.log(error)\r\n })\r\n }\r\n },\r\n mounted() {\r\n this.$nextTick(function() {\r\n this.pktChart();\r\n this.avgChart();\r\n })\r\n this.timer = setInterval(this.chartSetOpt, 1000);\r\n this.timer = setInterval(this.getChartData, 1000);\r\n\r\n },\r\n beforeDestroy() {\r\n clearInterval(this.timer);\r\n },\r\n}\r\n</script>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/AppDetail.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-container',{staticStyle:{\"height\":\"100%\",\"border\":\"1px solid #eee\"}},[_c('Home'),_vm._v(\" \"),_c('el-container',[_c('el-header',{staticStyle:{\"text-align\":\"right\",\"font-size\":\"12px\"}},[_c('el-dropdown',[_c('i',{staticClass:\"el-icon-setting\",staticStyle:{\"margin-right\":\"20px\"}}),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.start($event)}}},[_vm._v(\"启动\")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.stop($event)}}},[_vm._v(\"停止\")])],1)],1),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.userId))])],1),_vm._v(\" \"),_c('el-main',[_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('el-card',{staticClass:\"box-card\",staticStyle:{\"width\":\"600px\",\"height\":\"400px\"},attrs:{\"id\":\"pktchart\"}})],1),_vm._v(\" \"),_c('el-col',{attrs:{\"span\":12}},[_c('el-card',{staticClass:\"box-card\",staticStyle:{\"width\":\"600px\",\"height\":\"400px\"},attrs:{\"id\":\"avgchart\"}})],1)],1),_vm._v(\" \"),_c('el-table',{attrs:{\"data\":_vm.appData,\"max-height\":\"450\",\"row-class-name\":_vm.tableRowClassName}},[_c('el-table-column',{attrs:{\"prop\":\"sIP\",\"label\":\"源IP\",\"width\":\"250\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"dIP\",\"label\":\"目的IP\",\"width\":\"250\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"sMac\",\"label\":\"源Mac\",\"width\":\"250\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"dMac\",\"label\":\"目的Mac\",\"width\":\"250\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"sPort\",\"label\":\"源端口\",\"width\":\"100\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"dPort\",\"label\":\"目的端口\",\"width\":\"100\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"protocol\",\"label\":\"协议\",\"width\":\"100\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"app\",\"label\":\"类型\",\"width\":\"100\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-dbd94b2e\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/AppDetail.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-dbd94b2e\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./AppDetail.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AppDetail.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AppDetail.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-dbd94b2e\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./AppDetail.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/AppDetail.vue\n// module id = null\n// module chunks = ","<template>\n<el-container style=\"height: 100%; border: 1px solid #eee\">\r\n <el-header style=\"text-align: right; font-size: 12px\">\r\n <!-- <span>应用类型</span> -->\r\n <el-select v-model=\"value\" placeholder=\"请选择应用\">\r\n <el-option v-for=\"item in options\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\">\r\n </el-option>\r\n </el-select>\r\n <el-input style=\"width:130px\" placeholder=\"Qos流量设置\" v-model=\"input\" clearable>\r\n </el-input>\r\n\r\n <el-button type=\"primary\" icon=\"el-icon-upload\" v-on:click.native=\"submit\">提交</el-button>\r\n &nbsp&nbsp&nbsp&nbsp&nbsp\r\n <el-dropdown>\r\n <i class=\"el-icon-setting\" style=\"margin-right: 20px\"></i>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item v-on:click.native=\"start\">启动</el-dropdown-item>\r\n <el-dropdown-item v-on:click.native=\"stop\">停止</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n <span>{{userId}}</span>\r\n </el-header>\r\n <el-main>\r\n <el-row>\r\n <el-col :span=\"24\">\r\n <el-card id=\"mininetchart\" style=\"width: 100%;height:400px;\" align=\"middle\" class=\"box-card\">\r\n </el-card>\r\n </el-col>\r\n </el-row>\r\n <el-row>\r\n <el-col :span=\"12\">\r\n <el-table :data=\"firstData\" max-height=\"600\" :row-class-name=\"tableRowClassName\">\r\n <el-table-column prop=\"sIP\" label=\"源IP\" width=\"220\">\r\n </el-table-column>\r\n <el-table-column prop=\"dIP\" label=\"目的IP\" width=\"220\">\r\n </el-table-column>\r\n <el-table-column prop=\"app\" label=\"类型\" width=\"220\">\r\n </el-table-column>\r\n </el-table>\r\n </el-col>\r\n <el-col :span=\"12 \">\r\n <el-table :data=\"secondData\" max-height=\"600\" :row-class-name=\"tableRowClassName\">\r\n <el-table-column prop=\"sIP\" label=\"源IP\" width=\"220\">\r\n </el-table-column>\r\n <el-table-column prop=\"dIP\" label=\"目的IP\" width=\"220\">\r\n </el-table-column>\r\n <el-table-column prop=\"app\" label=\"类型\" width=\"220\">\r\n </el-table-column>\r\n </el-table>\r\n </el-col>\r\n </el-row>\r\n\r\n </el-main>\n</el-container>\n</template>\r\n<style>\n.el-header {\r\n background-color: #B3C0D1;\r\n color: #333;\r\n line-height: 60px;\r\n}\n</style>\r\n\r\n<script>\nimport echarts from 'echarts'\r\nexport default {\r\n name: 'Qos',\r\n data() {\r\n return {\r\n userId: 'Admin',\r\n mininetcharts: '',\r\n firstRoad: 0,\r\n secondRoad: 0,\r\n firstData: [],\r\n secondData: [],\r\n input: '',\r\n options: [{\r\n value: 0,\r\n label: 'Facetime'\r\n }, {\r\n value: 1,\r\n label: 'BitTorrent'\r\n }, {\r\n value: 2,\r\n label: 'WorldOfWarcraft'\r\n }, {\r\n value: 3,\r\n label: 'FTP'\r\n }, {\r\n value: 4,\r\n label: 'MySQL'\r\n },{\r\n value: 5,\r\n label: 'Skype'\r\n },{\r\n value: 6,\r\n label: 'SMB'\r\n },{\r\n value: 7,\r\n label: 'Gamil'\r\n },{\r\n value:8,\r\n label: 'Weibo'\r\n },{\r\n value:9,\r\n label:'Outlook'\r\n }],\r\n value:''\r\n }\r\n},\r\ncreated() {\r\n this.getChartData();\r\n this.getPcapData()\r\n },\r\n methods: {\r\n tableRowClassName({\r\n row,\r\n rowIndex\r\n }) {},\r\n getPcapData() {\r\n this.$axios.get('/api/qos/')\r\n .then(res => {\r\n // this.firstData = [];\r\n // this.secondData = [];\r\n res.data.firstData.forEach((item, index) => {\r\n this.firstData.unshift(item)\r\n });\r\n res.data.secondData.forEach((item, index) => {\r\n this.secondData.unshift(item)\r\n })\r\n }).catch((error) => {\r\n console.log(error)\r\n })\r\n },\r\n getChartData() {\r\n this.$axios.get('/api/network/')\r\n .then(res => {\r\n // alert(res.firstRoad)\r\n this.firstRoad = res.data.firstRoad\r\n this.secondRoad = res.data.secondRoad\r\n }).catch((error) => {\r\n console.log(error)\r\n })\r\n },\r\n chartSetOpt() {\r\n // alert(this.firstRoad);\r\n // alert(this.secondRoad);\r\n this.mininetcharts.setOption({\r\n series: [{\r\n links: [{\r\n source: 'S1',\r\n target: 'S3',\r\n value: this.firstRoad,\r\n }, {\r\n source: 'S1',\r\n target: 'S4',\r\n value: '',\r\n }, {\r\n source: 'S3',\r\n target: 'S2',\r\n value: '',\r\n }, {\r\n source: 'S4',\r\n target: 'S2',\r\n value: '',\r\n }]\r\n }]\r\n });\r\n },\r\n mininetChart() {\r\n this.mininetcharts = echarts.init(document.getElementById('mininetchart'));\r\n this.mininetcharts.setOption({\r\n title: {\r\n text: '网络拓扑'\r\n },\r\n legend: [{\r\n x: '90%',\r\n y: '5px',\r\n data: [{\r\n name: '交换机'\r\n }]\r\n }],\r\n tooltip: {},\r\n animationDurationUpdate: 1500,\r\n animationEasingUpdate: 'quinticInOut',\r\n series: [{\r\n type: 'graph',\r\n layout: 'none',\r\n symbolSize: 50,\r\n roam: true,\r\n categories: [{\r\n name: '交换机'\r\n }],\r\n\r\n label: {\r\n show: true\r\n },\r\n edgeSymbol: ['circle', 'arrow'],\r\n edgeSymbolSize: [4, 10],\r\n edgeLabel: {\r\n fontSize: 20\r\n },\r\n data: [{\r\n name: 'S1',\r\n x: 300,\r\n y: 300\r\n }, {\r\n name: 'S2',\r\n x: 800,\r\n y: 300\r\n }, {\r\n name: 'S3',\r\n x: 550,\r\n y: 100\r\n }, {\r\n name: 'S4',\r\n x: 550,\r\n y: 500\r\n }],\r\n links: [{\r\n source: 'S1',\r\n target: 'S3',\r\n value: this.firstRoad,\r\n }, {\r\n source: 'S1',\r\n target: 'S4',\r\n value: '',\r\n }, {\r\n source: 'S3',\r\n target: 'S2',\r\n value: '',\r\n }, {\r\n source: 'S4',\r\n target: 'S2',\r\n value: '',\r\n }],\r\n lineStyle: {\r\n normal: {\r\n textStyle: {\r\n fontSize: 20\r\n },\r\n width: 5,\r\n color: '#4b565b',\r\n }\r\n },\r\n // 边的标签样式\r\n edgeLabel: {\r\n normal: {\r\n show: true,\r\n formatter: function(x) {\r\n return x.data.value;\r\n }\r\n }\r\n },\r\n }]\r\n })\r\n },\r\n start() {\r\n // alert(\"系统正在启动,请稍等\");\r\n this.$axios.get('/api/start/').\r\n then(res => {\r\n alert(\"系统正在启动,请稍等\");\r\n }).catch((error) => {\r\n alert(\"系统启动失败,请稍后重试\");\r\n console.log(error);\r\n })\r\n },\r\n stop() {\r\n // alert(\"系统正在启动,请稍等\");\r\n clearInterval(this.timer);\r\n this.$axios.get('/api/stop/').\r\n then(res => {\r\n alert(\"系统正在关闭,请稍等\");\r\n }).catch((error) => {\r\n alert(\"系统关闭失败,请稍后重试\");\r\n console.log(error);\r\n })\r\n },\r\n submit() {\r\n if (this.input == \"\") {\r\n alert(\"请输入QOS大小\");\r\n } else {\r\n var r = /^\\+?[1-9][0-9]*$/;\r\n if (r.test(this.input)) {\r\n this.$axios.post('/api/qoscnt/', {\r\n \"cnt\": this.input,\r\n \"app\":this.value\r\n })\r\n .then(function(res) {\r\n if (res.data.status == \"ok\") {\r\n alert(\"设置成功\");\r\n } else {\r\n alert(\"设置失败,请重新提交\");\r\n }\r\n })\r\n .catch(function(error) {\r\n alert(\"设置失败,请重新提交\");\r\n });\r\n } else {\r\n alert(\"请输入一个正整数\");\r\n }\r\n }\r\n }\r\n },\r\n mounted() {\r\n this.$nextTick(function() {\r\n this.mininetChart()\r\n })\r\n this.timer = setInterval(this.chartSetOpt, 1000);\r\n this.timer = setInterval(this.getChartData, 1000);\r\n this.timer = setInterval(this.getPcapData, 1000);\r\n },\r\n beforeDestroy() {\r\n clearInterval(this.timer);\r\n },\r\n};\n</script>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Qos.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-container',{staticStyle:{\"height\":\"100%\",\"border\":\"1px solid #eee\"}},[_c('el-header',{staticStyle:{\"text-align\":\"right\",\"font-size\":\"12px\"}},[_c('el-select',{attrs:{\"placeholder\":\"请选择应用\"},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_vm._v(\" \"),_c('el-input',{staticStyle:{\"width\":\"130px\"},attrs:{\"placeholder\":\"Qos流量设置\",\"clearable\":\"\"},model:{value:(_vm.input),callback:function ($$v) {_vm.input=$$v},expression:\"input\"}}),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\",\"icon\":\"el-icon-upload\"},nativeOn:{\"click\":function($event){return _vm.submit($event)}}},[_vm._v(\"提交\")]),_vm._v(\"\\r\\n      \\r\\n \"),_c('el-dropdown',[_c('i',{staticClass:\"el-icon-setting\",staticStyle:{\"margin-right\":\"20px\"}}),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.start($event)}}},[_vm._v(\"启动\")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.stop($event)}}},[_vm._v(\"停止\")])],1)],1),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.userId))])],1),_vm._v(\" \"),_c('el-main',[_c('el-row',[_c('el-col',{attrs:{\"span\":24}},[_c('el-card',{staticClass:\"box-card\",staticStyle:{\"width\":\"100%\",\"height\":\"400px\"},attrs:{\"id\":\"mininetchart\",\"align\":\"middle\"}})],1)],1),_vm._v(\" \"),_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('el-table',{attrs:{\"data\":_vm.firstData,\"max-height\":\"600\",\"row-class-name\":_vm.tableRowClassName}},[_c('el-table-column',{attrs:{\"prop\":\"sIP\",\"label\":\"源IP\",\"width\":\"220\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"dIP\",\"label\":\"目的IP\",\"width\":\"220\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"app\",\"label\":\"类型\",\"width\":\"220\"}})],1)],1),_vm._v(\" \"),_c('el-col',{attrs:{\"span\":12}},[_c('el-table',{attrs:{\"data\":_vm.secondData,\"max-height\":\"600\",\"row-class-name\":_vm.tableRowClassName}},[_c('el-table-column',{attrs:{\"prop\":\"sIP\",\"label\":\"源IP\",\"width\":\"220\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"dIP\",\"label\":\"目的IP\",\"width\":\"220\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"prop\":\"app\",\"label\":\"类型\",\"width\":\"220\"}})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2768fb6f\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Qos.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2768fb6f\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Qos.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Qos.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Qos.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2768fb6f\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Qos.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Qos.vue\n// module id = null\n// module chunks = ","<template>\r\n<el-container style=\"height: 100%; border: 1px solid #eee\">\r\n <Home></Home>\r\n <Qos></Qos>\r\n</el-container>\r\n</template>\r\n<style>\r\n.el-header {\r\n background-color: #B3C0D1;\r\n color: #333;\r\n line-height: 60px;\r\n}\r\n</style>\r\n\r\n<script>\r\nimport Home from '@/components/Home'\r\nimport Qos from '@/components/Qos'\r\nexport default {\r\n name: 'Network',\r\n components:{\r\n Home,Qos\r\n },\r\n data() {\r\n return {\r\n // test:'HelloWorld'\r\n }\r\n },\r\n created() {\r\n },\r\n methods: {\r\n start(){\r\n // alert(\"系统正在启动,请稍等\");\r\n this.$axios.get('/api/start/').\r\n then(res =>{\r\n alert(\"系统正在启动,请稍等\");\r\n }).catch((error)=>{\r\n alert(\"系统启动失败,请稍后重试\");\r\n console.log(error);\r\n })\r\n }\r\n },\r\n beforeDestroy() {\r\n clearInterval(this.timer);\r\n },\r\n};\r\n</script>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Network.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-container',{staticStyle:{\"height\":\"100%\",\"border\":\"1px solid #eee\"}},[_c('Home'),_vm._v(\" \"),_c('Qos')],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-38202e2d\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Network.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-38202e2d\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Network.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Network.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Network.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-38202e2d\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Network.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Network.vue\n// module id = null\n// module chunks = ","<template>\r\n <el-container style=\"height: 100%; border: 1px solid #eee\">\r\n<Home></Home>\r\n<el-container style=\"height: 100%; border: 1px solid #eee\">\r\n <el-header style=\"text-align: right; font-size: 12px\">\r\n <span>{{userId}}</span>\r\n </el-header>\r\n <el-main>\r\n\r\n <el-card>\r\n <h1 style=\"fontSize:30px\">MSFlow:SDN流量防御和分流辅助器</h1>\r\n <br>\r\n <h3>系统功能简介</h3>\r\n a)恶意软件流量识别,Cridex、Geodo、Htbot、Miuref、Neris、Nsis-ay、Shifu、Tinba、Virut、Zeus\r\n <br>\r\n b)正常应用流量识别,Facetime、Weibo、BitTorrent、FTP、Gmail、MySQL、Outlook、Skype、SMB、WordOfWarcraft\r\n <br>\r\n c)QoS\r\n <br>\r\n d)DDoS缓解\r\n <br>\r\n <h3>使用说明</h3>\r\n <h5>注:环境中需要有ryu、mininet、mysql、python3、tensorflow、pandas等等,请按运行的错误提示自行补全安装。其中,tensorflow要求2.2版本以上,实验中用的2.3.0;django版本2.2(2版本和3版本不兼容);\r\n openlab实验平台上该环境已配好。</h5>\r\n<br> 1)点击“设置”按钮,选择启动系统,mininet网络的主机终端自动弹出,说明系统启动成功\r\n<br> 2)运行控制器:ryu-manager /home/ucas/ryu3/ryu/app/ryu_predict.py\r\n<br> 3)在主机终端中进行发包:sudo python send.py(脚本内的待发送数据包可以自行修改,默认发送本文件夹下的test.pcap),在界面中观察流量分类运行结果,标记红色的是识别为恶意的流量,无颜色标记的为正常流量,在最后一列可以查看流量的应用类别\r\n<br> 4)如果希望使用QoS功能,需要开启sflow。\r\n<br> 进入sflow_rt/文件夹:sudo ./start.sh,浏览器访问127.0.0.1:8008,查看sflow服务端是否正常开启(具体的sflow配置可参考链接:https://blog.csdn.net/AsNeverBefore/article/details/79098971);\r\n<br> 然后给mininet中的s1交换机设置IP,使其可以监控mininet中的流量:\r\n<br> sudo ifconfig ens33 0 up\r\n<br> sudo ovs-vsctl add-port s1 ens33\r\n<br> sudo ifconfig s1 10.0.1.10 netmask 255.255.254.0\r\n<br> sudo route add default gw 10.0.1.1\r\n<br> sudo ovs-vsctl -- --id=@sflow create sflow agent=s1 target=\\\"10.0.1.10\\\" header=128 sampling=10 polling=1 -- set bridge s1 sflow=@sflow\r\n<br> 点击页面左侧“网络优化——QoS优化“,进入QoS界面,在右上角设置希望进行QoS的应用类型,以及需要进行QoS的带宽阈值x(当检测到当前链路流量大小超过x,就为当前指定应用的流量选择其他路径,进行QoS)\r\n<br> 为了使流量达到进行QoS的阈值,可以选择自行发包到mininet网络,或者更直观的借助iperf打流,在当前网络中产生大量流量,占用链路带宽。\r\n<br> iperf使用方法:\r\n<br> h3主机作为服务端(接收数据):iperf -s -u -i 3\r\n<br> h1主机作为客户端(发送数据):iperf -u -c 10.0.0.3 -t 300 -i 3 -b 12M\r\n</el-card>\r\n</el-main>\r\n</el-container>\r\n</el-container>\r\n</template>\r\n<style>\r\n.el-header {\r\n background-color: #B3C0D1;\r\n color: #333;\r\n line-height: 60px;\r\n}\r\n</style>\r\n\r\n<script>\r\nimport Home from '@/components/Home'\r\nexport default {\r\n name: 'Introduction',\r\n components:{\r\n Home\r\n },\r\n data() {\r\n return {\r\n userId:'Admin',\r\n }\r\n }\r\n};\r\n</script>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Introduction.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-container',{staticStyle:{\"height\":\"100%\",\"border\":\"1px solid #eee\"}},[_c('Home'),_vm._v(\" \"),_c('el-container',{staticStyle:{\"height\":\"100%\",\"border\":\"1px solid #eee\"}},[_c('el-header',{staticStyle:{\"text-align\":\"right\",\"font-size\":\"12px\"}},[_c('span',[_vm._v(_vm._s(_vm.userId))])]),_vm._v(\" \"),_c('el-main',[_c('el-card',[_c('h1',{staticStyle:{\"fontSize\":\"30px\"}},[_vm._v(\"MSFlow:SDN流量防御和分流辅助器\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('h3',[_vm._v(\"系统功能简介\")]),_vm._v(\"\\n a)恶意软件流量识别,Cridex、Geodo、Htbot、Miuref、Neris、Nsis-ay、Shifu、Tinba、Virut、Zeus\\n \"),_c('br'),_vm._v(\"\\n b)正常应用流量识别,Facetime、Weibo、BitTorrent、FTP、Gmail、MySQL、Outlook、Skype、SMB、WordOfWarcraft\\n \"),_c('br'),_vm._v(\"\\n c)QoS\\n \"),_c('br'),_vm._v(\"\\n d)DDoS缓解\\n \"),_c('br'),_vm._v(\" \"),_c('h3',[_vm._v(\"使用说明\")]),_vm._v(\" \"),_c('h5',[_vm._v(\"注:环境中需要有ryu、mininet、mysql、python3、tensorflow、pandas等等,请按运行的错误提示自行补全安装。其中,tensorflow要求2.2版本以上,实验中用的2.3.0;django版本2.2(2版本和3版本不兼容);\\n openlab实验平台上该环境已配好。\")]),_vm._v(\" \"),_c('br'),_vm._v(\" 1)点击“设置”按钮,选择启动系统,mininet网络的主机终端自动弹出,说明系统启动成功\\n\"),_c('br'),_vm._v(\" 2)运行控制器:ryu-manager /home/ucas/ryu3/ryu/app/ryu_predict.py\\n\"),_c('br'),_vm._v(\" 3)在主机终端中进行发包:sudo python send.py(脚本内的待发送数据包可以自行修改,默认发送本文件夹下的test.pcap),在界面中观察流量分类运行结果,标记红色的是识别为恶意的流量,无颜色标记的为正常流量,在最后一列可以查看流量的应用类别\\n\"),_c('br'),_vm._v(\" 4)如果希望使用QoS功能,需要开启sflow。\\n\"),_c('br'),_vm._v(\" 进入sflow_rt/文件夹:sudo ./start.sh,浏览器访问127.0.0.1:8008,查看sflow服务端是否正常开启(具体的sflow配置可参考链接:https://blog.csdn.net/AsNeverBefore/article/details/79098971);\\n\"),_c('br'),_vm._v(\" 然后给mininet中的s1交换机设置IP,使其可以监控mininet中的流量:\\n\"),_c('br'),_vm._v(\" sudo ifconfig ens33 0 up\\n\"),_c('br'),_vm._v(\" sudo ovs-vsctl add-port s1 ens33\\n\"),_c('br'),_vm._v(\" sudo ifconfig s1 10.0.1.10 netmask 255.255.254.0\\n\"),_c('br'),_vm._v(\" sudo route add default gw 10.0.1.1\\n\"),_c('br'),_vm._v(\" sudo ovs-vsctl -- --id=@sflow create sflow agent=s1 target=\\\\\\\"10.0.1.10\\\\\\\" header=128 sampling=10 polling=1 -- set bridge s1 sflow=@sflow\\n\"),_c('br'),_vm._v(\" 点击页面左侧“网络优化——QoS优化“,进入QoS界面,在右上角设置希望进行QoS的应用类型,以及需要进行QoS的带宽阈值x(当检测到当前链路流量大小超过x,就为当前指定应用的流量选择其他路径,进行QoS)\\n\"),_c('br'),_vm._v(\" 为了使流量达到进行QoS的阈值,可以选择自行发包到mininet网络,或者更直观的借助iperf打流,在当前网络中产生大量流量,占用链路带宽。\\n\"),_c('br'),_vm._v(\" iperf使用方法:\\n\"),_c('br'),_vm._v(\" h3主机作为服务端(接收数据):iperf -s -u -i 3\\n\"),_c('br'),_vm._v(\" h1主机作为客户端(发送数据):iperf -u -c 10.0.0.3 -t 300 -i 3 -b 12M\\n\")])],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5a8ff19b\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Introduction.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true,\\\"publicPath\\\":\\\"../../\\\"}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5a8ff19b\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Introduction.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Introduction.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Introduction.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5a8ff19b\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Introduction.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Introduction.vue\n// module id = null\n// module chunks = ","import Vue from 'vue'\nimport Router from 'vue-router'\n// import HelloWorld from '@/components/HelloWorld'\nimport PcapTable from '@/components/PcapTable'\nimport Home from '@/components/Home'\n// import Test from '@/components/Test'\nimport Chart from '@/components/Chart'\nimport RealTime from '@/components/RealTime'\nimport AppDetail from '@/components/AppDetail'\nimport Network from '@/components/Network'\nimport Introduction from '@/components/Introduction'\n\nVue.use(Router)\n\nexport default new Router({\n routes: [\n {\n path: '/',\n name: 'Introduction',\n component: Introduction\n },\n {\n path:'/chart',\n name: 'Chart',\n component:Chart\n },\n {\n path: '/real',\n name: 'RealTime',\n component: RealTime\n },\n {\n path:'/app/:id',\n name: 'AppDetail',\n component: AppDetail,\n props: true\n },\n {\n path:'/network',\n name:'Network',\n component: Network,\n }\n ]\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue'\nimport App from './App'\nimport router from './router'\nimport ElementUI from 'element-ui'\nimport 'element-ui/lib/theme-chalk/index.css'\nimport axios from 'axios'\nimport $ from 'jquery'\nimport Qs from 'qs'\nimport echarts from 'echarts'\n\nVue.prototype.$qs = Qs\nVue.prototype.$axios = axios\nVue.config.productionTip = false\nVue.use(ElementUI)\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n router,\n components: { App },\n template: '<App/>'\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js"],"sourceRoot":""} \ No newline at end of file