diff --git a/.gitignore b/.gitignore
index 46891e5..ec80c4d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,7 +7,7 @@ revsuit.db-shm
revsuit.db-wal
# local config
-config.yaml
+config.yaml*
# binary
revsuit
@@ -19,4 +19,4 @@ revsuit
*.ntvs*
*.njsproj
*.sln
-*.sw?
\ No newline at end of file
+*.sw?
diff --git a/frontend/dist/css/app.css b/frontend/dist/css/app.css
index 73c8db5..d6873d1 100644
--- a/frontend/dist/css/app.css
+++ b/frontend/dist/css/app.css
@@ -1 +1 @@
-.custom-icons-list[data-v-05a908c2] .anticon{margin-right:6px}body[data-v-171364ce],html[data-v-171364ce]{height:100%;margin:0}.fade-transform-enter-active[data-v-171364ce],.fade-transform-leave-active[data-v-171364ce]{transition:all .3s;opacity:0}.fade-transform-enter[data-v-171364ce],.fade-transform-leave[data-v-171364ce]{opacity:0}.fade-transform-enter-to[data-v-171364ce]{opacity:0}.ant-menu-item>span>a[data-v-171364ce]{color:hsla(0,0%,100%,.65)}.ant-menu-item-selected>span>a[data-v-171364ce]{color:#fff}#nav[data-v-171364ce]{height:100%}#nav .trigger[data-v-171364ce]{font-size:18px;line-height:64px;padding:0 24px;cursor:pointer;transition:color .3s}#nav .trigger[data-v-171364ce]:hover{color:#1890ff}#nav .logo[data-v-171364ce]{height:32px;background:#0a1d2d;margin:16px;text-align:center;font-size:1.2rem;color:#fff;padding-bottom:5px;border-bottom:2px solid #b6befa}.copyright[data-v-171364ce]{color:#888;text-align:right;margin-right:1rem}
\ No newline at end of file
+.custom-icons-list[data-v-05a908c2] .anticon{margin-right:6px}body[data-v-4ae4fda9],html[data-v-4ae4fda9]{height:100%;margin:0}.fade-transform-enter-active[data-v-4ae4fda9],.fade-transform-leave-active[data-v-4ae4fda9]{transition:all .3s;opacity:0}.fade-transform-enter[data-v-4ae4fda9],.fade-transform-leave[data-v-4ae4fda9]{opacity:0}.fade-transform-enter-to[data-v-4ae4fda9]{opacity:0}.ant-menu-item>span>a[data-v-4ae4fda9]{color:hsla(0,0%,100%,.65)}.ant-menu-item-selected>span>a[data-v-4ae4fda9]{color:#fff}#nav[data-v-4ae4fda9]{height:100%}#nav .trigger[data-v-4ae4fda9]{font-size:18px;line-height:64px;padding:0 24px;cursor:pointer;transition:color .3s}#nav .trigger[data-v-4ae4fda9]:hover{color:#1890ff}#nav .logo[data-v-4ae4fda9]{height:32px;background:#0a1d2d;margin:16px;text-align:center;font-size:1.2rem;color:#fff;padding-bottom:5px;border-bottom:2px solid #b6befa}.copyright[data-v-4ae4fda9]{color:#888;text-align:right;margin-right:1rem}
\ No newline at end of file
diff --git a/frontend/dist/css/chunk-0155152b.css b/frontend/dist/css/chunk-0155152b.css
deleted file mode 100644
index 397cd47..0000000
--- a/frontend/dist/css/chunk-0155152b.css
+++ /dev/null
@@ -1 +0,0 @@
-#add-rule[data-v-2586daf9]{margin-bottom:10px}
\ No newline at end of file
diff --git a/frontend/dist/css/chunk-2e835d68.css b/frontend/dist/css/chunk-2e835d68.css
deleted file mode 100644
index a214f4c..0000000
--- a/frontend/dist/css/chunk-2e835d68.css
+++ /dev/null
@@ -1 +0,0 @@
-#add-rule[data-v-487bb706]{margin-bottom:10px}
\ No newline at end of file
diff --git a/frontend/dist/css/chunk-36391b77.css b/frontend/dist/css/chunk-36391b77.css
new file mode 100644
index 0000000..5e9af07
--- /dev/null
+++ b/frontend/dist/css/chunk-36391b77.css
@@ -0,0 +1 @@
+#add-rule[data-v-ae6501fc]{margin-bottom:10px}
\ No newline at end of file
diff --git a/frontend/dist/css/chunk-42105840.css b/frontend/dist/css/chunk-42105840.css
new file mode 100644
index 0000000..ae122f5
--- /dev/null
+++ b/frontend/dist/css/chunk-42105840.css
@@ -0,0 +1 @@
+#add-rule[data-v-5aa75eae]{margin-bottom:10px}
\ No newline at end of file
diff --git a/frontend/dist/css/chunk-5840ae94.css b/frontend/dist/css/chunk-5840ae94.css
deleted file mode 100644
index 63e9440..0000000
--- a/frontend/dist/css/chunk-5840ae94.css
+++ /dev/null
@@ -1 +0,0 @@
-#add-rule[data-v-f1cd719a]{margin-bottom:10px}
\ No newline at end of file
diff --git a/frontend/dist/css/chunk-65a35ecf.css b/frontend/dist/css/chunk-65a35ecf.css
new file mode 100644
index 0000000..e74e925
--- /dev/null
+++ b/frontend/dist/css/chunk-65a35ecf.css
@@ -0,0 +1 @@
+#add-rule[data-v-4bcc6b83]{margin-bottom:10px}
\ No newline at end of file
diff --git a/frontend/dist/css/chunk-7bcb83e6.css b/frontend/dist/css/chunk-7bcb83e6.css
new file mode 100644
index 0000000..aa4ca44
--- /dev/null
+++ b/frontend/dist/css/chunk-7bcb83e6.css
@@ -0,0 +1 @@
+#add-rule[data-v-79ad429e]{margin-bottom:10px}.full-screen-icon[data-v-79ad429e]{position:absolute;z-index:5;color:#9e9e9e;right:1px;font-size:1rem;cursor:pointer;transition:font-size .1s}.full-screen-icon[data-v-79ad429e]:hover{font-size:1.1rem;transition:font-size .1s}
\ No newline at end of file
diff --git a/frontend/dist/css/chunk-b8f538aa.css b/frontend/dist/css/chunk-b8f538aa.css
new file mode 100644
index 0000000..b93ce12
--- /dev/null
+++ b/frontend/dist/css/chunk-b8f538aa.css
@@ -0,0 +1 @@
+#add-rule[data-v-376729b6]{margin-bottom:10px}
\ No newline at end of file
diff --git a/frontend/dist/css/chunk-d4730ae2.css b/frontend/dist/css/chunk-d4730ae2.css
deleted file mode 100644
index 4b77c81..0000000
--- a/frontend/dist/css/chunk-d4730ae2.css
+++ /dev/null
@@ -1 +0,0 @@
-#add-rule[data-v-169b853c]{margin-bottom:10px}.full-screen-icon[data-v-169b853c]{position:absolute;z-index:5;color:#9e9e9e;right:1px;font-size:1rem;cursor:pointer;transition:font-size .1s}.full-screen-icon[data-v-169b853c]:hover{font-size:1.1rem;transition:font-size .1s}
\ No newline at end of file
diff --git a/frontend/dist/css/chunk-e00d17cc.css b/frontend/dist/css/chunk-e00d17cc.css
deleted file mode 100644
index ae7083b..0000000
--- a/frontend/dist/css/chunk-e00d17cc.css
+++ /dev/null
@@ -1 +0,0 @@
-#add-rule[data-v-98f944a6]{margin-bottom:10px}
\ No newline at end of file
diff --git a/frontend/dist/index.html b/frontend/dist/index.html
index db8b1ff..56d7804 100644
--- a/frontend/dist/index.html
+++ b/frontend/dist/index.html
@@ -1 +1 @@
-
RevSuit Control Panel
\ No newline at end of file
+RevSuit Control Panel
\ No newline at end of file
diff --git a/frontend/dist/js/app.js b/frontend/dist/js/app.js
index 39cde03..dc8ae17 100644
--- a/frontend/dist/js/app.js
+++ b/frontend/dist/js/app.js
@@ -1 +1 @@
-(function(e){function t(t){for(var s,a,i=t[0],c=t[1],u=t[2],l=0,f=[];l=200&&e<300}});t["a"]=r},4678:function(e,t,n){var s={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn-bd":"9686","./bn-bd.js":"9686","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"7333","./en-il.js":"7333","./en-in":"ec2e","./en-in.js":"ec2e","./en-nz":"6f50","./en-nz.js":"6f50","./en-sg":"b7e9","./en-sg.js":"b7e9","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-mx":"b5b7","./es-mx.js":"b5b7","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df4","./fa.js":"8df4","./fi":"81e9","./fi.js":"81e9","./fil":"d69a","./fil.js":"d69a","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b4","./gd.js":"f6b4","./gl":"8840","./gl.js":"8840","./gom-deva":"aaf2","./gom-deva.js":"aaf2","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./oc-lnc":"167b","./oc-lnc.js":"167b","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tk":"5aff","./tk.js":"5aff","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf75","./tlh.js":"cf75","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-mo":"3a6c","./zh-mo.js":"3a6c","./zh-tw":"90ea","./zh-tw.js":"90ea"};function a(e){var t=r(e);return n(t)}function r(e){if(!n.o(s,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return s[e]}a.keys=function(){return Object.keys(s)},a.resolve=r,e.exports=a,a.id="4678"},"56d7":function(e,t,n){"use strict";n.r(t),n.d(t,"store",(function(){return E}));n("e260"),n("e6cf"),n("cca6"),n("a79d");var s=n("a026"),a=n("f23d"),r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-layout",{attrs:{id:"nav"}},[n("a-layout-sider",{attrs:{trigger:null,collapsible:""},model:{value:e.collapsed,callback:function(t){e.collapsed=t},expression:"collapsed"}},[n("div",{staticClass:"logo"},[n("b",[e._v("R")]),e.collapsed?e._e():n("span",[n("b",[e._v("ev")]),e._v("Suit")])]),n("a-menu",{attrs:{theme:"dark",mode:"inline",selectedKeys:[this.$route.path],openKeys:e.openKeys},on:{"update:openKeys":function(t){e.openKeys=t},"update:open-keys":function(t){e.openKeys=t}}},[n("a-sub-menu",{key:"logs"},[n("span",{attrs:{slot:"title"},slot:"title"},[n("a-icon",{attrs:{type:"bar-chart"}}),n("span",[e._v("Logs")])],1),n("a-menu-item",{key:"/logs/http"},[n("router-link",{attrs:{to:"/logs/http"}},[e._v("HTTP Logs")])],1),n("a-menu-item",{key:"/logs/dns"},[n("router-link",{attrs:{to:"/logs/dns"}},[e._v("DNS Logs")])],1),n("a-menu-item",{key:"/logs/rmi"},[n("router-link",{attrs:{to:"/logs/rmi"}},[e._v("RMI Logs")])],1),n("a-menu-item",{key:"/logs/mysql"},[n("router-link",{attrs:{to:"/logs/mysql"}},[e._v("MySQL Logs")])],1),n("a-menu-item",{key:"/logs/ftp"},[n("router-link",{attrs:{to:"/logs/ftp"}},[e._v("FTP Logs")])],1)],1),n("a-sub-menu",{key:"rules"},[n("span",{attrs:{slot:"title"},slot:"title"},[n("rule-icon"),n("span",[e._v("Rules")])],1),n("a-menu-item",{key:"/rules/http"},[n("router-link",{attrs:{to:"/rules/http"}},[e._v("HTTP Rules")])],1),n("a-menu-item",{key:"/rules/dns"},[n("router-link",{attrs:{to:"/rules/dns"}},[e._v("DNS Rules")])],1),n("a-menu-item",{key:"/rules/rmi"},[n("router-link",{attrs:{to:"/rules/rmi"}},[e._v("RMI Rules")])],1),n("a-menu-item",{key:"/rules/mysql"},[n("router-link",{attrs:{to:"/rules/mysql"}},[e._v("MySQL Rules")])],1),n("a-menu-item",{key:"/rules/ftp"},[n("router-link",{attrs:{to:"/rules/ftp"}},[e._v("FTP Rules")])],1)],1),n("a-menu-item",{key:"/settings"},[n("router-link",{attrs:{to:"/settings"}},[n("a-icon",{attrs:{type:"setting"}}),n("span",[e._v("Settings")])],1)],1)],1)],1),n("a-layout",[n("a-layout-header",{staticStyle:{background:"#fff",padding:"0"}},[n("a-icon",{staticClass:"trigger",attrs:{type:e.collapsed?"menu-unfold":"menu-fold"},on:{click:function(){return e.collapsed=!e.collapsed}}}),e.isLogMode?n("div",{staticStyle:{float:"right","min-width":"60%",padding:"12px 0","line-height":"24px"}},[n("a-row",{attrs:{gutter:24,type:"flex"}},[n("a-col",{attrs:{span:21}},[n("a-form-model",{directives:[{name:"show",rawName:"v-show",value:e.showSettings,expression:"showSettings"}],ref:"settings",attrs:{layout:"inline"}},[n("a-row",{attrs:{gutter:24,type:"flex"}},[n("a-col",{attrs:{span:9,offset:2}},[n("a-form-model-item",{attrs:{label:"Auto Refresh"}},[n("a-switch",{attrs:{id:"auto-refresh"},model:{value:e.autoRefresh,callback:function(t){e.autoRefresh=t},expression:"autoRefresh"}})],1)],1),n("a-col",{attrs:{span:13}},[n("a-form-model-item",{attrs:{label:"Refresh Interval"}},[n("a-input-number",{staticStyle:{"margin-right":"-3rem"},attrs:{id:"refresh-interval",disabled:!e.autoRefresh},model:{value:e.refreshInterval,callback:function(t){e.refreshInterval=t},expression:"refreshInterval"}})],1)],1)],1)],1)],1),n("a-col",{attrs:{span:3}},[n("a-icon",{style:"font-size: 18px;padding: 12px 0;"+(e.showSettings?"color: #1b90ff;":""),attrs:{type:"setting"},on:{click:function(t){e.showSettings=!e.showSettings}}})],1)],1)],1):e._e()],1),n("a-layout-content",{style:{margin:"24px 16px",padding:"24px",borderRadius:"20px",background:"#fff",minHeight:"initial"}},[n("transition",{attrs:{name:"fade-transform"}},[n("router-view",{ref:"content"})],1)],1),n("div",{staticClass:"copyright"},[n("p",{},[e._v(" RevSuit Current Version: "+e._s(this.version)+" ©2021 "),n("a",{attrs:{href:"https://github.com/Li4n0"}},[e._v("Li4n0")]),e._v(". "),n("a",{attrs:{href:"https://github.com/Li4n0/revsuit"}},[e._v("GitHub")])])])],1),n("Auth")],1)},o=[],i=(n("caad"),n("2532"),n("1276"),n("ac1f"),n("d3b7"),n("25f0"),function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("a-modal",{attrs:{title:"Auth with token",visible:e.visible,"confirm-loading":e.confirmLoading},on:{cancel:e.cancel,ok:e.auth}},[n("a-input",{attrs:{placeholder:"Your token"},on:{pressEnter:e.auth},model:{value:e.token,callback:function(t){e.token=t},expression:"token"}})],1)],1)}),c=[],u=n("365c");function l(e){return Object(u["a"])({url:"/auth",method:"get",headers:{Token:e},validateStatus:function(e){return e>=200&&e<300}})}function f(){return Object(u["a"])({url:"/version",method:"get",validateStatus:function(e){return e>=200&&e<300}})}var d={data:function(){return{confirmLoading:!1,token:""}},computed:{visible:function(){return!E.authed}},methods:{auth:function(){var e=this;this.confirmLoading=!0,l(this.token).then((function(){E.authed=!0,e.confirmLoading=!1,e.token=""})).catch((function(t){403===t.response.status&&e.$notification.error({message:"Wrong token",description:"Your token is wrong, please check your server config file.",style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:2.5}),e.confirmLoading=!1}))},cancel:function(){E.authed=!0}}},h=d,p=n("2877"),m=Object(p["a"])(h,i,c,!1,null,null,null),g=m.exports,b=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-icon",{attrs:{component:e.RuleSvg}})},j=[],v={template:'\n \n'},k={name:"RuleIcon",data:function(){return{RuleSvg:v}}},y=k,S=(n("912e"),Object(p["a"])(y,b,j,!1,null,"05a908c2",null)),w=S.exports,z={data:function(){return{store:E,autoRefresh:"true"===localStorage.getItem("autoRefresh"),refreshInterval:localStorage.getItem("refreshInterval")?localStorage.getItem("refreshInterval"):5,pageSize:E.pageSize,collapsed:!1,showSettings:!1,openKeys:[],version:""}},computed:{isLogMode:function(){return this.$route.path.includes("logs")}},methods:{timing:function(){var e=this;null!==this.timer&&clearInterval(this.timer),this.timer=setInterval((function(){e.$refs.content.fetch()}),1e3*this.refreshInterval)},GetVersion:function(){var e=this;f().then((function(t){e.version=t.data.result}))}},mounted:function(){this.autoRefresh&&this.isLogMode&&this.timing(),this.GetVersion()},created:function(){var e=this.$watch("$route",(function(t,n){"/"===n.path&&0===this.openKeys.length&&(this.openKeys.push(t.path.split("/")[1]),e())}))},destroyed:function(){clearInterval(this.timer)},watch:{autoRefresh:function(e){e?this.timing():clearInterval(this.timer),localStorage.setItem("autoRefresh",e)},isLogMode:function(e){e?this.timing():clearInterval(this.timer),localStorage.setItem("autoRefresh",e)},refreshInterval:function(e){clearInterval(this.timer),this.timing(),localStorage.setItem("refreshInterval",e)},pageSize:function(e){(e<=0||e>100)&&(e=10),E.pageSize=e,localStorage.setItem("pageSize",e)},"store.authed":function(){this.$refs.content.fetch()},"store.pageSize":function(){this.$refs.content.pagination.pageSize=E.pageSize,localStorage.setItem("pageSize",E.pageSize.toString()),this.$refs.content.fetch()}},components:{RuleIcon:w,Auth:g}},R=z,_=(n("1ad3"),Object(p["a"])(R,r,o,!1,null,"171364ce",null)),x=_.exports,L=(n("3ca3"),n("ddb0"),n("8c4f"));s["a"].use(L["a"]);var I=[{path:"/",name:"Home",redirect:"/logs/http"},{path:"/logs/http",name:"HttpLogs",component:function(){return n.e("chunk-1da7f23b").then(n.bind(null,"f889"))}},{path:"/logs/dns",name:"DnsLogs",component:function(){return n.e("chunk-e039e75a").then(n.bind(null,"5ea0"))}},{path:"/logs/mysql",name:"MysqlLogs",component:function(){return n.e("chunk-fef965c2").then(n.bind(null,"2e9f"))}},{path:"/logs/rmi",name:"RmiLogs",component:function(){return n.e("chunk-330a7e95").then(n.bind(null,"975e"))}},{path:"/logs/ftp",name:"FtpLogs",component:function(){return n.e("chunk-3d13e56e").then(n.bind(null,"c5bf"))}},{path:"/rules/http",name:"HttpRules",component:function(){return Promise.all([n.e("chunk-08f9fbe8"),n.e("chunk-d4730ae2")]).then(n.bind(null,"9520c"))}},{path:"/rules/dns",name:"DnsRules",component:function(){return Promise.all([n.e("chunk-08f9fbe8"),n.e("chunk-0155152b")]).then(n.bind(null,"2e08"))}},{path:"/rules/mysql",name:"MysqlRules",component:function(){return Promise.all([n.e("chunk-08f9fbe8"),n.e("chunk-5840ae94")]).then(n.bind(null,"05cd"))}},{path:"/rules/rmi",name:"RmiRules",component:function(){return Promise.all([n.e("chunk-08f9fbe8"),n.e("chunk-e00d17cc")]).then(n.bind(null,"ac60"))}},{path:"/rules/ftp",name:"FtpRules",component:function(){return Promise.all([n.e("chunk-08f9fbe8"),n.e("chunk-2e835d68")]).then(n.bind(null,"f832"))}},{path:"/settings",name:"Settings",component:function(){return n.e("chunk-b241c712").then(n.bind(null,"ee09"))}}],M=new L["a"]({routes:I}),O=M;n("202f"),n("ed08");s["a"].config.productionTip=!1,s["a"].use(a["a"]);var E=s["a"].observable({authed:!0,pageSize:localStorage.getItem("pageSize")?parseInt(localStorage.getItem("pageSize")):10});new s["a"]({router:O,render:function(e){return e(x)}}).$mount("#app")},7674:function(e,t,n){},"912e":function(e,t,n){"use strict";n("e805")},e805:function(e,t,n){},ed08:function(e,t,n){n("5319"),n("ac1f"),n("4d63"),n("25f0"),Date.prototype.format=function(e){var t={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),S:this.getMilliseconds()};for(var n in/(y+)/.test(e)&&(e=e.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length))),t)new RegExp("("+n+")").test(e)&&(e=e.replace(RegExp.$1,1==RegExp.$1.length?t[n]:("00"+t[n]).substr((""+t[n]).length)));return e}}});
\ No newline at end of file
+(function(e){function t(t){for(var s,a,i=t[0],c=t[1],l=t[2],u=0,f=[];u=200&&e<300}});t["a"]=o},4678:function(e,t,n){var s={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn-bd":"9686","./bn-bd.js":"9686","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"7333","./en-il.js":"7333","./en-in":"ec2e","./en-in.js":"ec2e","./en-nz":"6f50","./en-nz.js":"6f50","./en-sg":"b7e9","./en-sg.js":"b7e9","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-mx":"b5b7","./es-mx.js":"b5b7","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df4","./fa.js":"8df4","./fi":"81e9","./fi.js":"81e9","./fil":"d69a","./fil.js":"d69a","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b4","./gd.js":"f6b4","./gl":"8840","./gl.js":"8840","./gom-deva":"aaf2","./gom-deva.js":"aaf2","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./oc-lnc":"167b","./oc-lnc.js":"167b","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tk":"5aff","./tk.js":"5aff","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf75","./tlh.js":"cf75","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-mo":"3a6c","./zh-mo.js":"3a6c","./zh-tw":"90ea","./zh-tw.js":"90ea"};function a(e){var t=r(e);return n(t)}function r(e){if(!n.o(s,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return s[e]}a.keys=function(){return Object.keys(s)},a.resolve=r,e.exports=a,a.id="4678"},"56d7":function(e,t,n){"use strict";n.r(t),n.d(t,"store",(function(){return E}));n("e260"),n("e6cf"),n("cca6"),n("a79d");var s=n("a026"),a=n("f23d"),r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-layout",{attrs:{id:"nav"}},[n("a-layout-sider",{attrs:{trigger:null,collapsible:""},model:{value:e.collapsed,callback:function(t){e.collapsed=t},expression:"collapsed"}},[n("div",{staticClass:"logo"},[n("b",[e._v("R")]),e.collapsed?e._e():n("span",[n("b",[e._v("ev")]),e._v("Suit")])]),n("a-menu",{attrs:{theme:"dark",mode:"inline",selectedKeys:[this.$route.path],openKeys:e.openKeys},on:{"update:openKeys":function(t){e.openKeys=t},"update:open-keys":function(t){e.openKeys=t}}},[n("a-sub-menu",{key:"logs"},[n("span",{attrs:{slot:"title"},slot:"title"},[n("a-icon",{attrs:{type:"bar-chart"}}),n("span",[e._v("Logs")])],1),n("a-menu-item",{key:"/logs/http"},[n("router-link",{attrs:{to:"/logs/http"}},[e._v("HTTP Logs")])],1),n("a-menu-item",{key:"/logs/dns"},[n("router-link",{attrs:{to:"/logs/dns"}},[e._v("DNS Logs")])],1),n("a-menu-item",{key:"/logs/rmi"},[n("router-link",{attrs:{to:"/logs/rmi"}},[e._v("RMI Logs")])],1),n("a-menu-item",{key:"/logs/mysql"},[n("router-link",{attrs:{to:"/logs/mysql"}},[e._v("MySQL Logs")])],1),n("a-menu-item",{key:"/logs/ftp"},[n("router-link",{attrs:{to:"/logs/ftp"}},[e._v("FTP Logs")])],1)],1),n("a-sub-menu",{key:"rules"},[n("span",{attrs:{slot:"title"},slot:"title"},[n("rule-icon"),n("span",[e._v("Rules")])],1),n("a-menu-item",{key:"/rules/http"},[n("router-link",{attrs:{to:"/rules/http"}},[e._v("HTTP Rules")])],1),n("a-menu-item",{key:"/rules/dns"},[n("router-link",{attrs:{to:"/rules/dns"}},[e._v("DNS Rules")])],1),n("a-menu-item",{key:"/rules/rmi"},[n("router-link",{attrs:{to:"/rules/rmi"}},[e._v("RMI Rules")])],1),n("a-menu-item",{key:"/rules/mysql"},[n("router-link",{attrs:{to:"/rules/mysql"}},[e._v("MySQL Rules")])],1),n("a-menu-item",{key:"/rules/ftp"},[n("router-link",{attrs:{to:"/rules/ftp"}},[e._v("FTP Rules")])],1)],1),n("a-menu-item",{key:"/settings"},[n("router-link",{attrs:{to:"/settings"}},[n("a-icon",{attrs:{type:"setting"}}),n("span",[e._v("Settings")])],1)],1)],1)],1),n("a-layout",[n("a-layout-header",{staticStyle:{background:"#fff",padding:"0"}},[n("a-icon",{staticClass:"trigger",attrs:{type:e.collapsed?"menu-unfold":"menu-fold"},on:{click:function(){return e.collapsed=!e.collapsed}}}),e.isLogMode?n("div",{staticStyle:{float:"right","min-width":"60%",padding:"12px 0","line-height":"24px"}},[n("a-row",{attrs:{gutter:24,type:"flex"}},[n("a-col",{attrs:{span:21}},[n("a-form-model",{directives:[{name:"show",rawName:"v-show",value:e.showSettings,expression:"showSettings"}],ref:"settings",attrs:{layout:"inline"}},[n("a-row",{attrs:{gutter:24,type:"flex"}},[n("a-col",{attrs:{span:9,offset:2}},[n("a-form-model-item",{attrs:{label:"Auto Refresh"}},[n("a-switch",{attrs:{id:"auto-refresh"},model:{value:e.autoRefresh,callback:function(t){e.autoRefresh=t},expression:"autoRefresh"}})],1)],1),n("a-col",{attrs:{span:13}},[n("a-form-model-item",{attrs:{label:"Refresh Interval"}},[n("a-input-number",{staticStyle:{"margin-right":"-3rem"},attrs:{id:"refresh-interval",disabled:!e.autoRefresh},model:{value:e.refreshInterval,callback:function(t){e.refreshInterval=t},expression:"refreshInterval"}})],1)],1)],1)],1)],1),n("a-col",{attrs:{span:3}},[n("a-icon",{style:"font-size: 18px;padding: 12px 0;"+(e.showSettings?"color: #1b90ff;":""),attrs:{type:"setting"},on:{click:function(t){e.showSettings=!e.showSettings}}})],1)],1)],1):e._e()],1),n("a-layout-content",{style:{margin:"24px 16px",padding:"24px",borderRadius:"20px",background:"#fff",minHeight:"initial"}},[n("transition",{attrs:{name:"fade-transform"}},[n("router-view",{ref:"content"})],1)],1),n("div",{staticClass:"copyright"},[n("p",{},[e._v(" RevSuit Current Version: "+e._s(this.version)+" ©2021 "),n("a",{attrs:{href:"https://github.com/Li4n0"}},[e._v("Li4n0")]),e._v(". "),n("a",{attrs:{href:"https://github.com/Li4n0/revsuit"}},[e._v("GitHub")])])])],1),n("Auth")],1)},o=[],i=(n("caad"),n("2532"),n("1276"),n("ac1f"),n("d3b7"),n("25f0"),function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("a-modal",{attrs:{title:"Auth with token",visible:e.visible,"confirm-loading":e.confirmLoading},on:{cancel:e.cancel,ok:e.auth}},[n("a-input",{attrs:{placeholder:"Your token"},on:{pressEnter:e.auth},model:{value:e.token,callback:function(t){e.token=t},expression:"token"}})],1)],1)}),c=[],l=n("365c");function u(e){return Object(l["a"])({url:"/auth",method:"get",headers:{Token:e}})}function f(){return Object(l["a"])({url:"/version",method:"get"})}var h={data:function(){return{confirmLoading:!1,token:""}},computed:{visible:function(){return!E.authed}},methods:{auth:function(){var e=this;this.confirmLoading=!0,u(this.token).then((function(){E.authed=!0,e.confirmLoading=!1,e.token=""})).catch((function(t){403===t.response.status&&e.$notification.error({message:"Wrong token",description:"Your token is wrong, please check your server config file.",style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:2.5}),e.confirmLoading=!1}))},cancel:function(){E.authed=!0}}},d=h,p=n("2877"),m=Object(p["a"])(d,i,c,!1,null,null,null),b=m.exports,g=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-icon",{attrs:{component:e.RuleSvg}})},j=[],v={template:'\n \n'},k={name:"RuleIcon",data:function(){return{RuleSvg:v}}},y=k,S=(n("912e"),Object(p["a"])(y,g,j,!1,null,"05a908c2",null)),w=S.exports,z={data:function(){return{store:E,autoRefresh:"true"===localStorage.getItem("autoRefresh"),refreshInterval:localStorage.getItem("refreshInterval")?localStorage.getItem("refreshInterval"):5,pageSize:E.pageSize,collapsed:!1,showSettings:!1,openKeys:[],version:""}},computed:{isLogMode:function(){return this.$route.path.includes("logs")}},methods:{timing:function(){var e=this;null!==this.timer&&clearInterval(this.timer),this.timer=setInterval((function(){e.$refs.content.fetch()}),1e3*this.refreshInterval)},GetVersion:function(){var e=this;f().then((function(t){e.version=t.data.result}))}},mounted:function(){this.autoRefresh&&this.isLogMode&&this.timing(),this.GetVersion()},created:function(){var e=this.$watch("$route",(function(t,n){"/"===n.path&&0===this.openKeys.length&&(this.openKeys.push(t.path.split("/")[1]),e())}))},destroyed:function(){clearInterval(this.timer)},watch:{autoRefresh:function(e){e?this.timing():clearInterval(this.timer),localStorage.setItem("autoRefresh",e)},isLogMode:function(e){e?this.timing():clearInterval(this.timer)},refreshInterval:function(e){clearInterval(this.timer),this.timing(),localStorage.setItem("refreshInterval",e)},pageSize:function(e){(e<=0||e>100)&&(e=10),E.pageSize=e,localStorage.setItem("pageSize",e)},"store.authed":function(e){e&&(this.$refs.content.fetch(),this.GetVersion())},"store.pageSize":function(){this.$refs.content.pagination.pageSize=E.pageSize,localStorage.setItem("pageSize",E.pageSize.toString()),this.$refs.content.fetch()}},components:{RuleIcon:w,Auth:b}},_=z,x=(n("e0bf"),Object(p["a"])(_,r,o,!1,null,"4ae4fda9",null)),R=x.exports,L=(n("3ca3"),n("ddb0"),n("8c4f"));s["a"].use(L["a"]);var I=[{path:"/",name:"Home",redirect:"/logs/http"},{path:"/logs/http",name:"HttpLogs",component:function(){return n.e("chunk-1da7f23b").then(n.bind(null,"f889"))}},{path:"/logs/dns",name:"DnsLogs",component:function(){return n.e("chunk-e039e75a").then(n.bind(null,"5ea0"))}},{path:"/logs/mysql",name:"MysqlLogs",component:function(){return n.e("chunk-fef965c2").then(n.bind(null,"2e9f"))}},{path:"/logs/rmi",name:"RmiLogs",component:function(){return n.e("chunk-330a7e95").then(n.bind(null,"975e"))}},{path:"/logs/ftp",name:"FtpLogs",component:function(){return n.e("chunk-3d13e56e").then(n.bind(null,"c5bf"))}},{path:"/rules/http",name:"HttpRules",component:function(){return Promise.all([n.e("chunk-08f9fbe8"),n.e("chunk-7bcb83e6")]).then(n.bind(null,"9520c"))}},{path:"/rules/dns",name:"DnsRules",component:function(){return Promise.all([n.e("chunk-08f9fbe8"),n.e("chunk-b8f538aa")]).then(n.bind(null,"2e08"))}},{path:"/rules/mysql",name:"MysqlRules",component:function(){return Promise.all([n.e("chunk-08f9fbe8"),n.e("chunk-42105840")]).then(n.bind(null,"05cd"))}},{path:"/rules/rmi",name:"RmiRules",component:function(){return Promise.all([n.e("chunk-08f9fbe8"),n.e("chunk-36391b77")]).then(n.bind(null,"ac60"))}},{path:"/rules/ftp",name:"FtpRules",component:function(){return Promise.all([n.e("chunk-08f9fbe8"),n.e("chunk-65a35ecf")]).then(n.bind(null,"f832"))}},{path:"/settings",name:"Settings",component:function(){return n.e("chunk-b241c712").then(n.bind(null,"ee09"))}}],M=new L["a"]({routes:I}),O=M;n("202f"),n("ed08");s["a"].config.productionTip=!1,s["a"].use(a["a"]);var E=s["a"].observable({authed:!0,pageSize:localStorage.getItem("pageSize")?parseInt(localStorage.getItem("pageSize")):10});new s["a"]({router:O,render:function(e){return e(R)}}).$mount("#app")},"912e":function(e,t,n){"use strict";n("e805")},c723:function(e,t,n){},e0bf:function(e,t,n){"use strict";n("c723")},e805:function(e,t,n){},ed08:function(e,t,n){n("5319"),n("ac1f"),n("4d63"),n("25f0"),Date.prototype.format=function(e){var t={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),S:this.getMilliseconds()};for(var n in/(y+)/.test(e)&&(e=e.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length))),t)new RegExp("("+n+")").test(e)&&(e=e.replace(RegExp.$1,1==RegExp.$1.length?t[n]:("00"+t[n]).substr((""+t[n]).length)));return e}}});
\ No newline at end of file
diff --git a/frontend/dist/js/chunk-08f9fbe8.js b/frontend/dist/js/chunk-08f9fbe8.js
index 2944748..821d88c 100644
--- a/frontend/dist/js/chunk-08f9fbe8.js
+++ b/frontend/dist/js/chunk-08f9fbe8.js
@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-08f9fbe8"],{"057f":function(t,e,r){var n=r("fc6a"),o=r("241c").f,a={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],u=function(t){try{return o(t)}catch(e){return i.slice()}};t.exports.f=function(t){return i&&"[object Window]"==a.call(t)?u(t):o(n(t))}},"159b":function(t,e,r){var n=r("da84"),o=r("fdbc"),a=r("17c2"),i=r("9112");for(var u in o){var c=n[u],f=c&&c.prototype;if(f&&f.forEach!==a)try{i(f,"forEach",a)}catch(s){f.forEach=a}}},"17c2":function(t,e,r){"use strict";var n=r("b727").forEach,o=r("a640"),a=o("forEach");t.exports=a?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},"1dde":function(t,e,r){var n=r("d039"),o=r("b622"),a=r("2d00"),i=o("species");t.exports=function(t){return a>=51||!n((function(){var e=[],r=e.constructor={};return r[i]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},2084:function(t,e,r){"use strict";var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",[r("a-row",{attrs:{gutter:24}},[r("a-col",{attrs:{span:24}},[r("a-form-model-item",{attrs:{label:"Name",rules:t.rules.name,prop:"name"}},[r("a-input",{attrs:{placeholder:"Please enter rule name",readOnly:t.readOnly},model:{value:t.form.name,callback:function(e){t.$set(t.form,"name",e)},expression:"form.name"}})],1)],1)],1),r("a-row",{attrs:{gutter:24}},[r("a-col",{attrs:{span:24}},[r("a-form-model-item",{attrs:{rules:t.rules.flagFormat,prop:"flag_format"}},[r("span",{attrs:{slot:"label"},slot:"label"},[t._v(" Flag Format "),r("a-tooltip",{attrs:{title:"Basic usage:\n 1. Only when the request's "+t.flagField+" contains content that satisfies the flag format, the request will be captured.\n 2. Use regular expression syntax.\n 3. The character '*' means to capture all requests.\n Advanced usage:\n 1. When the regex uses grouping without group name, the platform will only notify the user or push to the client when the first group appears for the first time.\n 2. When the regex uses grouping with group name, you can get these submatches through template variables and use them in other fields of the rule."}},[r("a-icon",{attrs:{type:"question-circle-o"}})],1)],1),r("a-input",{staticStyle:{width:"100%"},attrs:{placeholder:"please enter flag format",readOnly:t.readOnly},model:{value:t.form.flag_format,callback:function(e){t.$set(t.form,"flag_format",e)},expression:"form.flag_format"}})],1)],1)],1),r("a-row",{attrs:{gutter:24}},[r("a-col",{attrs:{span:24}},[r("a-form-model-item",{attrs:{prop:"rank"}},[r("span",{attrs:{slot:"label"},slot:"label"},[t._v(" Rank "),r("a-tooltip",{attrs:{title:"When request match multiple rules, high-rank rules will be matched first"}},[r("a-icon",{attrs:{type:"question-circle-o"}})],1)],1),r("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["rank"],expression:"['rank']"}],staticStyle:{width:"100%"},attrs:{disabled:t.readOnly,placeholder:"0"},model:{value:t.form.rank,callback:function(e){t.$set(t.form,"rank",e)},expression:"form.rank"}})],1)],1)],1),r("a-row",{attrs:{gutter:16}},[r("a-col",{attrs:{span:12}},[r("a-form-model-item",[r("div",{staticClass:"ant-form-item-label"},[r("label",{attrs:{for:"push-to-client"}},[t._v("Push to Client "),r("a-tooltip",{attrs:{placement:"topLeft",title:"Whether push to client when capture flag with this rule."}},[r("a-icon",{attrs:{type:"question-circle"}})],1)],1)]),r("a-switch",{attrs:{id:"push-to-client",disabled:t.readOnly},model:{value:t.form.push_to_client,callback:function(e){t.$set(t.form,"push_to_client",e)},expression:"form.push_to_client"}})],1)],1),r("a-col",{attrs:{span:12}},[r("a-form-model-item",[r("div",{staticClass:"ant-form-item-label"},[r("label",{attrs:{for:"notice"}},[t._v("Notice "),r("a-tooltip",{attrs:{placement:"topLeft",title:"Whether notice with bot when capture flag with this rule."}},[r("a-icon",{attrs:{type:"question-circle"}})],1)],1)]),r("a-switch",{attrs:{id:"notice",disabled:t.readOnly},model:{value:t.form.notice,callback:function(e){t.$set(t.form,"notice",e)},expression:"form.notice"}})],1)],1)],1)],1)},o=[],a={name:"BasicRule",data:function(){return{rules:{name:[{required:!0,message:"Please input rule name",trigger:"blur"}],flagFormat:[{required:!0,message:"Please input flag format",trigger:"blur"}]}}},props:["form","readOnly","flagField"]},i=a,u=r("2877"),c=Object(u["a"])(i,n,o,!1,null,"78ea39b6",null);e["a"]=c.exports},"34c6":function(t,e,r){"use strict";r.d(e,"h",(function(){return o})),r.d(e,"m",(function(){return a})),r.d(e,"c",(function(){return i})),r.d(e,"f",(function(){return u})),r.d(e,"k",(function(){return c})),r.d(e,"a",(function(){return f})),r.d(e,"i",(function(){return s})),r.d(e,"n",(function(){return l})),r.d(e,"d",(function(){return d})),r.d(e,"j",(function(){return p})),r.d(e,"o",(function(){return h})),r.d(e,"e",(function(){return m})),r.d(e,"g",(function(){return b})),r.d(e,"l",(function(){return g})),r.d(e,"b",(function(){return y}));var n=r("365c");function o(t){return Object(n["a"])({url:"/rule/http",params:t,method:"get"})}function a(t){return Object(n["a"])({url:"/rule/http",data:t,method:"post"})}function i(t){return Object(n["a"])({url:"/rule/http",data:t,method:"delete"})}function u(t){return Object(n["a"])({url:"/rule/dns",params:t,method:"get"})}function c(t){return Object(n["a"])({url:"/rule/dns",data:t,method:"post"})}function f(t){return Object(n["a"])({url:"/rule/dns",data:t,method:"delete"})}function s(t){return Object(n["a"])({url:"/rule/mysql",params:t,method:"get"})}function l(t){return Object(n["a"])({url:"/rule/mysql",data:t,method:"post"})}function d(t){return Object(n["a"])({url:"/rule/mysql",data:t,method:"delete"})}function p(t){return Object(n["a"])({url:"/rule/rmi",params:t,method:"get"})}function h(t){return Object(n["a"])({url:"/rule/rmi",data:t,method:"post"})}function m(t){return Object(n["a"])({url:"/rule/rmi",data:t,method:"delete"})}function b(t){return Object(n["a"])({url:"/rule/ftp",params:t,method:"get"})}function g(t){return Object(n["a"])({url:"/rule/ftp",data:t,method:"post"})}function y(t){return Object(n["a"])({url:"/rule/ftp",data:t,method:"delete"})}},"4de4":function(t,e,r){"use strict";var n=r("23e7"),o=r("b727").filter,a=r("1dde"),i=a("filter");n({target:"Array",proto:!0,forced:!i},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},5530:function(t,e,r){"use strict";r.d(e,"a",(function(){return a}));r("b64b"),r("a4d3"),r("4de4"),r("e439"),r("159b"),r("dbb4");function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function a(t){for(var e=1;eh)throw TypeError(m);for(s=c(y,n),l=0;lv-n+r;l--)delete y[l-1]}else if(r>n)for(l=v-n;l>O;l--)b=l+n-1,g=l+r-1,b in y?y[g]=y[b]:delete y[g];for(l=0;la)o.push(arguments[a++]);if(n=e,(p(e)||void 0!==t)&&!ut(t))return d(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!ut(e))return e}),o[1]=e,G.apply(null,o)}})}z[I][L]||_(z[I],L,z[I].valueOf),C(z,M),F[B]=!0},a640:function(t,e,r){"use strict";var n=r("d039");t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){throw 1},1)}))}},b64b:function(t,e,r){var n=r("23e7"),o=r("7b0b"),a=r("df75"),i=r("d039"),u=i((function(){a(1)}));n({target:"Object",stat:!0,forced:u},{keys:function(t){return a(o(t))}})},b727:function(t,e,r){var n=r("0366"),o=r("44ad"),a=r("7b0b"),i=r("50c4"),u=r("65f0"),c=[].push,f=function(t){var e=1==t,r=2==t,f=3==t,s=4==t,l=6==t,d=7==t,p=5==t||l;return function(h,m,b,g){for(var y,v,O=a(h),w=o(O),j=n(m,b,3),x=i(w.length),P=0,k=g||u,S=e?k(h,x):r||d?k(h,0):void 0;x>P;P++)if((p||P in w)&&(y=w[P],v=j(y,P,O),t))if(e)S[P]=v;else if(v)switch(t){case 3:return!0;case 5:return y;case 6:return P;case 2:c.call(S,y)}else switch(t){case 4:return!1;case 7:c.call(S,y)}return l?-1:f||s?s:S}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6),filterOut:f(7)}},dbb4:function(t,e,r){var n=r("23e7"),o=r("83ab"),a=r("56ef"),i=r("fc6a"),u=r("06cf"),c=r("8418");n({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){var e,r,n=i(t),o=u.f,f=a(n),s={},l=0;while(f.length>l)r=o(n,e=f[l++]),void 0!==r&&c(s,e,r);return s}})},e439:function(t,e,r){var n=r("23e7"),o=r("d039"),a=r("fc6a"),i=r("06cf").f,u=r("83ab"),c=o((function(){i(1)})),f=!u||c;n({target:"Object",stat:!0,forced:f,sham:!u},{getOwnPropertyDescriptor:function(t,e){return i(a(t),e)}})},e5383:function(t,e,r){var n=r("b622");e.f=n},e8b5:function(t,e,r){var n=r("c6b6");t.exports=Array.isArray||function(t){return"Array"==n(t)}}}]);
\ No newline at end of file
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-08f9fbe8"],{"057f":function(t,e,r){var n=r("fc6a"),o=r("241c").f,a={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],u=function(t){try{return o(t)}catch(e){return i.slice()}};t.exports.f=function(t){return i&&"[object Window]"==a.call(t)?u(t):o(n(t))}},"159b":function(t,e,r){var n=r("da84"),o=r("fdbc"),a=r("17c2"),i=r("9112");for(var u in o){var c=n[u],f=c&&c.prototype;if(f&&f.forEach!==a)try{i(f,"forEach",a)}catch(s){f.forEach=a}}},"17c2":function(t,e,r){"use strict";var n=r("b727").forEach,o=r("a640"),a=o("forEach");t.exports=a?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},"1dde":function(t,e,r){var n=r("d039"),o=r("b622"),a=r("2d00"),i=o("species");t.exports=function(t){return a>=51||!n((function(){var e=[],r=e.constructor={};return r[i]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},2084:function(t,e,r){"use strict";var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",[r("a-row",{attrs:{gutter:24}},[r("a-col",{attrs:{span:24}},[r("a-form-model-item",{attrs:{label:"Name",rules:t.rules.name,prop:"name"}},[r("a-input",{attrs:{placeholder:"Please enter rule name",readOnly:t.readOnly},model:{value:t.form.name,callback:function(e){t.$set(t.form,"name",e)},expression:"form.name"}})],1)],1)],1),r("a-row",{attrs:{gutter:24}},[r("a-col",{attrs:{span:24}},[r("a-form-model-item",{attrs:{rules:t.rules.flagFormat,prop:"flag_format"}},[r("span",{attrs:{slot:"label"},slot:"label"},[t._v(" Flag Format "),r("a-tooltip",{attrs:{title:"Basic usage:\n 1. Only when the request's "+t.flagField+" contains content that satisfies the flag format, the request will be captured.\n 2. Use regular expression syntax.\n 3. The character '*' means to capture all requests.\n Advanced usage:\n 1. When the regex uses grouping without group name, the platform will only notify the user or push to the client when the first group appears for the first time.\n 2. When the regex uses grouping with group name, you can get these submatches through template variables and use them in other fields of the rule."}},[r("a-icon",{attrs:{type:"question-circle-o"}})],1)],1),r("a-input",{staticStyle:{width:"100%"},attrs:{placeholder:"Please enter flag format",readOnly:t.readOnly},model:{value:t.form.flag_format,callback:function(e){t.$set(t.form,"flag_format",e)},expression:"form.flag_format"}})],1)],1)],1),r("a-row",{attrs:{gutter:24}},[r("a-col",{attrs:{span:24}},[r("a-form-model-item",{attrs:{prop:"rank"}},[r("span",{attrs:{slot:"label"},slot:"label"},[t._v(" Rank "),r("a-tooltip",{attrs:{title:"When request match multiple rules, high-rank rules will be matched first"}},[r("a-icon",{attrs:{type:"question-circle-o"}})],1)],1),r("a-input-number",{directives:[{name:"decorator",rawName:"v-decorator",value:["rank"],expression:"['rank']"}],staticStyle:{width:"100%"},attrs:{disabled:t.readOnly,placeholder:"0"},model:{value:t.form.rank,callback:function(e){t.$set(t.form,"rank",e)},expression:"form.rank"}})],1)],1)],1),r("a-row",{attrs:{gutter:16}},[r("a-col",{attrs:{span:12}},[r("a-form-model-item",[r("div",{staticClass:"ant-form-item-label"},[r("label",{attrs:{for:"push-to-client"}},[t._v("Push to Client "),r("a-tooltip",{attrs:{placement:"topLeft",title:"Whether push to client when capture flag with this rule."}},[r("a-icon",{attrs:{type:"question-circle"}})],1)],1)]),r("a-switch",{attrs:{id:"push-to-client",disabled:t.readOnly},model:{value:t.form.push_to_client,callback:function(e){t.$set(t.form,"push_to_client",e)},expression:"form.push_to_client"}})],1)],1),r("a-col",{attrs:{span:12}},[r("a-form-model-item",[r("div",{staticClass:"ant-form-item-label"},[r("label",{attrs:{for:"notice"}},[t._v("Notice "),r("a-tooltip",{attrs:{placement:"topLeft",title:"Whether notice with bot when capture flag with this rule."}},[r("a-icon",{attrs:{type:"question-circle"}})],1)],1)]),r("a-switch",{attrs:{id:"notice",disabled:t.readOnly},model:{value:t.form.notice,callback:function(e){t.$set(t.form,"notice",e)},expression:"form.notice"}})],1)],1)],1)],1)},o=[],a={name:"BasicRule",data:function(){return{rules:{name:[{required:!0,message:"Please input rule name",trigger:"blur"}],flagFormat:[{required:!0,message:"Please input flag format",trigger:"blur"}]}}},props:["form","readOnly","flagField"]},i=a,u=r("2877"),c=Object(u["a"])(i,n,o,!1,null,"a62f3176",null);e["a"]=c.exports},"34c6":function(t,e,r){"use strict";r.d(e,"h",(function(){return o})),r.d(e,"m",(function(){return a})),r.d(e,"c",(function(){return i})),r.d(e,"f",(function(){return u})),r.d(e,"k",(function(){return c})),r.d(e,"a",(function(){return f})),r.d(e,"i",(function(){return s})),r.d(e,"n",(function(){return l})),r.d(e,"d",(function(){return d})),r.d(e,"j",(function(){return p})),r.d(e,"o",(function(){return h})),r.d(e,"e",(function(){return m})),r.d(e,"g",(function(){return b})),r.d(e,"l",(function(){return g})),r.d(e,"b",(function(){return y}));var n=r("365c");function o(t){return Object(n["a"])({url:"/rule/http",params:t,method:"get"})}function a(t){return Object(n["a"])({url:"/rule/http",data:t,method:"post"})}function i(t){return Object(n["a"])({url:"/rule/http",data:t,method:"delete"})}function u(t){return Object(n["a"])({url:"/rule/dns",params:t,method:"get"})}function c(t){return Object(n["a"])({url:"/rule/dns",data:t,method:"post"})}function f(t){return Object(n["a"])({url:"/rule/dns",data:t,method:"delete"})}function s(t){return Object(n["a"])({url:"/rule/mysql",params:t,method:"get"})}function l(t){return Object(n["a"])({url:"/rule/mysql",data:t,method:"post"})}function d(t){return Object(n["a"])({url:"/rule/mysql",data:t,method:"delete"})}function p(t){return Object(n["a"])({url:"/rule/rmi",params:t,method:"get"})}function h(t){return Object(n["a"])({url:"/rule/rmi",data:t,method:"post"})}function m(t){return Object(n["a"])({url:"/rule/rmi",data:t,method:"delete"})}function b(t){return Object(n["a"])({url:"/rule/ftp",params:t,method:"get"})}function g(t){return Object(n["a"])({url:"/rule/ftp",data:t,method:"post"})}function y(t){return Object(n["a"])({url:"/rule/ftp",data:t,method:"delete"})}},"4de4":function(t,e,r){"use strict";var n=r("23e7"),o=r("b727").filter,a=r("1dde"),i=a("filter");n({target:"Array",proto:!0,forced:!i},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},5530:function(t,e,r){"use strict";r.d(e,"a",(function(){return a}));r("b64b"),r("a4d3"),r("4de4"),r("e439"),r("159b"),r("dbb4");function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function a(t){for(var e=1;eh)throw TypeError(m);for(s=c(y,n),l=0;lv-n+r;l--)delete y[l-1]}else if(r>n)for(l=v-n;l>O;l--)b=l+n-1,g=l+r-1,b in y?y[g]=y[b]:delete y[g];for(l=0;la)o.push(arguments[a++]);if(n=e,(p(e)||void 0!==t)&&!ut(t))return d(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!ut(e))return e}),o[1]=e,G.apply(null,o)}})}z[I][L]||_(z[I],L,z[I].valueOf),C(z,M),F[B]=!0},a640:function(t,e,r){"use strict";var n=r("d039");t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){throw 1},1)}))}},b64b:function(t,e,r){var n=r("23e7"),o=r("7b0b"),a=r("df75"),i=r("d039"),u=i((function(){a(1)}));n({target:"Object",stat:!0,forced:u},{keys:function(t){return a(o(t))}})},b727:function(t,e,r){var n=r("0366"),o=r("44ad"),a=r("7b0b"),i=r("50c4"),u=r("65f0"),c=[].push,f=function(t){var e=1==t,r=2==t,f=3==t,s=4==t,l=6==t,d=7==t,p=5==t||l;return function(h,m,b,g){for(var y,v,O=a(h),w=o(O),j=n(m,b,3),P=i(w.length),x=0,k=g||u,S=e?k(h,P):r||d?k(h,0):void 0;P>x;x++)if((p||x in w)&&(y=w[x],v=j(y,x,O),t))if(e)S[x]=v;else if(v)switch(t){case 3:return!0;case 5:return y;case 6:return x;case 2:c.call(S,y)}else switch(t){case 4:return!1;case 7:c.call(S,y)}return l?-1:f||s?s:S}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6),filterOut:f(7)}},dbb4:function(t,e,r){var n=r("23e7"),o=r("83ab"),a=r("56ef"),i=r("fc6a"),u=r("06cf"),c=r("8418");n({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){var e,r,n=i(t),o=u.f,f=a(n),s={},l=0;while(f.length>l)r=o(n,e=f[l++]),void 0!==r&&c(s,e,r);return s}})},e439:function(t,e,r){var n=r("23e7"),o=r("d039"),a=r("fc6a"),i=r("06cf").f,u=r("83ab"),c=o((function(){i(1)})),f=!u||c;n({target:"Object",stat:!0,forced:f,sham:!u},{getOwnPropertyDescriptor:function(t,e){return i(a(t),e)}})},e5383:function(t,e,r){var n=r("b622");e.f=n},e8b5:function(t,e,r){var n=r("c6b6");t.exports=Array.isArray||function(t){return"Array"==n(t)}}}]);
\ No newline at end of file
diff --git a/frontend/dist/js/chunk-1da7f23b.js b/frontend/dist/js/chunk-1da7f23b.js
index c26b187..598b9fd 100644
--- a/frontend/dist/js/chunk-1da7f23b.js
+++ b/frontend/dist/js/chunk-1da7f23b.js
@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-1da7f23b"],{"057f":function(t,e,r){var n=r("fc6a"),o=r("241c").f,i={}.toString,c="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return o(t)}catch(e){return c.slice()}};t.exports.f=function(t){return c&&"[object Window]"==i.call(t)?a(t):o(n(t))}},"159b":function(t,e,r){var n=r("da84"),o=r("fdbc"),i=r("17c2"),c=r("9112");for(var a in o){var f=n[a],s=f&&f.prototype;if(s&&s.forEach!==i)try{c(s,"forEach",i)}catch(u){s.forEach=i}}},"17c2":function(t,e,r){"use strict";var n=r("b727").forEach,o=r("a640"),i=o("forEach");t.exports=i?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},"1dde":function(t,e,r){var n=r("d039"),o=r("b622"),i=r("2d00"),c=o("species");t.exports=function(t){return i>=51||!n((function(){var e=[],r=e.constructor={};return r[c]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},"30d9":function(t,e,r){},"4de4":function(t,e,r){"use strict";var n=r("23e7"),o=r("b727").filter,i=r("1dde"),c=i("filter");n({target:"Array",proto:!0,forced:!c},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},5530:function(t,e,r){"use strict";r.d(e,"a",(function(){return i}));r("b64b"),r("a4d3"),r("4de4"),r("e439"),r("159b"),r("dbb4");function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t){for(var e=1;ei)o.push(arguments[i++]);if(n=e,(p(e)||void 0!==t)&&!at(t))return d(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!at(e))return e}),o[1]=e,W.apply(null,o)}})}G[q][H]||D(G[q],H,G[q].valueOf),K(G,U),T[M]=!0},a640:function(t,e,r){"use strict";var n=r("d039");t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){throw 1},1)}))}},b64b:function(t,e,r){var n=r("23e7"),o=r("7b0b"),i=r("df75"),c=r("d039"),a=c((function(){i(1)}));n({target:"Object",stat:!0,forced:a},{keys:function(t){return i(o(t))}})},b727:function(t,e,r){var n=r("0366"),o=r("44ad"),i=r("7b0b"),c=r("50c4"),a=r("65f0"),f=[].push,s=function(t){var e=1==t,r=2==t,s=3==t,u=4==t,l=6==t,d=7==t,p=5==t||l;return function(b,h,y,g){for(var m,v,w=i(b),O=o(w),S=n(h,y,3),j=c(O.length),x=0,E=g||a,I=e?E(b,j):r||d?E(b,0):void 0;j>x;x++)if((p||x in O)&&(m=O[x],v=S(m,x,w),t))if(e)I[x]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return x;case 2:f.call(I,m)}else switch(t){case 4:return!1;case 7:f.call(I,m)}return l?-1:s||u?u:I}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterOut:s(7)}},db40:function(t,e,r){"use strict";var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticStyle:{padding:"8px"},attrs:{slot:"filterDropdown"},slot:"filterDropdown"},[r("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+t.column.dataIndex,value:t.selectedKeys[0]},on:{change:function(e){return t.setSelectedKeys(e.target.value?[e.target.value]:[])},pressEnter:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}}),r("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}},[t._v(" Search ")]),r("a-button",{staticStyle:{width:"90px"},attrs:{size:"small"},on:{click:function(){t.clearFilters(),delete t.filters[t.column.dataIndex],t.fetch()}}},[t._v(" Reset ")])],1)},o=[],i={name:"FilterDropdown",props:["setSelectedKeys","selectedKeys","clearFilters","column","filters","fetch"]},c=i,a=r("2877"),f=Object(a["a"])(c,n,o,!1,null,"5e6f101e",null);e["a"]=f.exports},dbb4:function(t,e,r){var n=r("23e7"),o=r("83ab"),i=r("56ef"),c=r("fc6a"),a=r("06cf"),f=r("8418");n({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){var e,r,n=c(t),o=a.f,s=i(n),u={},l=0;while(s.length>l)r=o(n,e=s[l++]),void 0!==r&&f(u,e,r);return u}})},dbbc:function(t,e,r){"use strict";r("30d9")},e439:function(t,e,r){var n=r("23e7"),o=r("d039"),i=r("fc6a"),c=r("06cf").f,a=r("83ab"),f=o((function(){c(1)})),s=!a||f;n({target:"Object",stat:!0,forced:s,sham:!a},{getOwnPropertyDescriptor:function(t,e){return c(i(t),e)}})},e5383:function(t,e,r){var n=r("b622");e.f=n},e5bf:function(t,e,r){"use strict";r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return i})),r.d(e,"d",(function(){return c})),r.d(e,"e",(function(){return a})),r.d(e,"b",(function(){return f}));var n=r("365c");function o(t){return Object(n["a"])({url:"/record/http",params:t,method:"get"})}function i(t){return Object(n["a"])({url:"/record/dns",params:t,method:"get"})}function c(t){return Object(n["a"])({url:"/record/mysql",params:t,method:"get"})}function a(t){return Object(n["a"])({url:"/record/rmi",params:t,method:"get"})}function f(t){return Object(n["a"])({url:"/record/ftp",params:t,method:"get"})}},e8b5:function(t,e,r){var n=r("c6b6");t.exports=Array.isArray||function(t){return"Array"==n(t)}},f889:function(t,e,r){"use strict";r.r(e);var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("a-table",{attrs:{columns:t.columns,"data-source":t.data,loading:t.loading,pagination:t.pagination,rowClassName:function(t,e){return e%2===0?"":"gray-table-row"}},on:{change:t.handleTableChange},scopedSlots:t._u([{key:"filterDropdown",fn:function(e){var n=e.setSelectedKeys,o=e.selectedKeys,i=e.clearFilters,c=e.column;return r("filter-dropdown",{attrs:{"set-selected-keys":n,"selected-keys":o,"clear-filters":i,column:c,filters:t.filters,fetch:t.fetch}})}},{key:"filterIcon",fn:function(t){return r("a-icon",{style:{color:t?"#108ee9":void 0},attrs:{type:"search"}})}},{key:"time",fn:function(e){return r("span",{},[t._v(" "+t._s(new Date(e).format("yyyy-MM-dd hh:mm:ss"))+" ")])}},{key:"method",fn:function(e){return r("span",{},[r("a-tag",{attrs:{color:t.colors[e]}},[t._v(" "+t._s(e.toUpperCase())+" ")])],1)}},{key:"expandedRowRender",fn:function(e){return r("code",{staticStyle:{margin:"0"}},[r("b",{staticStyle:{color:"gray"}},[t._v("RAW REQUEST:")]),r("br"),r("hr"),r("span",{staticStyle:{"white-space":"pre-line"}},[t._v(t._s(e.raw_request))])])}}])})},o=[],i=r("5530"),c=r("e5bf"),a=r("56d7"),f=r("db40"),s={GET:"#52c41a",POST:"#f5222d",PUT:"#eb2f96",HEAD:"#02a7ff",OPTIONS:"#13c2c2",DELETE:"#722ed1"},u=[{title:"ID",dataIndex:"id",key:"id",sorter:!0,sortDirections:["descend","ascend"]},{title:"REQUEST TIME",dataIndex:"request_time",key:"request_time",scopedSlots:{customRender:"time"}},{title:"RULE",dataIndex:"rule_name",key:"rule_name",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"FLAG",dataIndex:"flag",key:"flag",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"METHOD",dataIndex:"method",key:"method",scopedSlots:{customRender:"method",filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"PATH",dataIndex:"path",key:"path",ellipsis:!0,scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"REMOTE IP",key:"remote_ip",dataIndex:"remote_ip",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"IP AREA",key:"ip_area",dataIndex:"ip_area"}],l={name:"HttpLogs",data:function(){return{store:a["store"],data:[],pagination:{current:1,showSizeChanger:!0,pageSize:a["store"].pageSize,onShowSizeChange:function(t,e){a["store"].pageSize=e}},filters:{},order:"desc",loading:!1,columns:u,colors:s}},methods:{handleTableChange:function(t,e,r){var n=Object(i["a"])({},this.pagination);n.current=t.current,this.pagination=n,this.order="ascend"===r.order?"asc":"desc",this.fetch()},fetch:function(){var t=this,e=Object(i["a"])(Object(i["a"])({},this.filters),{},{page:this.pagination.current,pageSize:this.pagination.pageSize,order:this.order});this.loading=!0,Object(c["c"])(e).then((function(e){var r=e.data.result;t.data=r.data;var n=Object(i["a"])({},t.pagination);n.total=r.count,t.pagination=n,t.loading=!1})).catch((function(t){if(403===t.response.status)return a["store"].authed=!1,[];console.error(t)}))}},mounted:function(){this.fetch()},components:{FilterDropdown:f["a"]}},d=l,p=(r("dbbc"),r("2877")),b=Object(p["a"])(d,n,o,!1,null,null,null);e["default"]=b.exports}}]);
\ No newline at end of file
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-1da7f23b"],{"057f":function(t,e,r){var n=r("fc6a"),o=r("241c").f,i={}.toString,c="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return o(t)}catch(e){return c.slice()}};t.exports.f=function(t){return c&&"[object Window]"==i.call(t)?a(t):o(n(t))}},"159b":function(t,e,r){var n=r("da84"),o=r("fdbc"),i=r("17c2"),c=r("9112");for(var a in o){var f=n[a],s=f&&f.prototype;if(s&&s.forEach!==i)try{c(s,"forEach",i)}catch(u){s.forEach=i}}},"17c2":function(t,e,r){"use strict";var n=r("b727").forEach,o=r("a640"),i=o("forEach");t.exports=i?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},"1dde":function(t,e,r){var n=r("d039"),o=r("b622"),i=r("2d00"),c=o("species");t.exports=function(t){return i>=51||!n((function(){var e=[],r=e.constructor={};return r[c]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},"30d9":function(t,e,r){},"4de4":function(t,e,r){"use strict";var n=r("23e7"),o=r("b727").filter,i=r("1dde"),c=i("filter");n({target:"Array",proto:!0,forced:!c},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},5530:function(t,e,r){"use strict";r.d(e,"a",(function(){return i}));r("b64b"),r("a4d3"),r("4de4"),r("e439"),r("159b"),r("dbb4");function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t){for(var e=1;ei)o.push(arguments[i++]);if(n=e,(p(e)||void 0!==t)&&!at(t))return d(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!at(e))return e}),o[1]=e,G.apply(null,o)}})}$[M][q]||D($[M],q,$[M].valueOf),K($,L),T[U]=!0},a640:function(t,e,r){"use strict";var n=r("d039");t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){throw 1},1)}))}},b64b:function(t,e,r){var n=r("23e7"),o=r("7b0b"),i=r("df75"),c=r("d039"),a=c((function(){i(1)}));n({target:"Object",stat:!0,forced:a},{keys:function(t){return i(o(t))}})},b727:function(t,e,r){var n=r("0366"),o=r("44ad"),i=r("7b0b"),c=r("50c4"),a=r("65f0"),f=[].push,s=function(t){var e=1==t,r=2==t,s=3==t,u=4==t,l=6==t,d=7==t,p=5==t||l;return function(b,h,y,g){for(var m,v,w=i(b),O=o(w),S=n(h,y,3),j=c(O.length),x=0,E=g||a,I=e?E(b,j):r||d?E(b,0):void 0;j>x;x++)if((p||x in O)&&(m=O[x],v=S(m,x,w),t))if(e)I[x]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return x;case 2:f.call(I,m)}else switch(t){case 4:return!1;case 7:f.call(I,m)}return l?-1:s||u?u:I}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterOut:s(7)}},db40:function(t,e,r){"use strict";var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticStyle:{padding:"8px"},attrs:{slot:"filterDropdown"},slot:"filterDropdown"},[r("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+t.column.dataIndex,value:t.selectedKeys[0]},on:{change:function(e){return t.setSelectedKeys(e.target.value?[e.target.value]:[])},pressEnter:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}}),r("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}},[t._v(" Search ")]),r("a-button",{staticStyle:{width:"90px"},attrs:{size:"small"},on:{click:function(){t.clearFilters(),delete t.filters[t.column.dataIndex],t.fetch()}}},[t._v(" Reset ")])],1)},o=[],i={name:"FilterDropdown",props:["setSelectedKeys","selectedKeys","clearFilters","column","filters","fetch"]},c=i,a=r("2877"),f=Object(a["a"])(c,n,o,!1,null,"5e6f101e",null);e["a"]=f.exports},dbb4:function(t,e,r){var n=r("23e7"),o=r("83ab"),i=r("56ef"),c=r("fc6a"),a=r("06cf"),f=r("8418");n({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){var e,r,n=c(t),o=a.f,s=i(n),u={},l=0;while(s.length>l)r=o(n,e=s[l++]),void 0!==r&&f(u,e,r);return u}})},dbbc:function(t,e,r){"use strict";r("30d9")},e439:function(t,e,r){var n=r("23e7"),o=r("d039"),i=r("fc6a"),c=r("06cf").f,a=r("83ab"),f=o((function(){c(1)})),s=!a||f;n({target:"Object",stat:!0,forced:s,sham:!a},{getOwnPropertyDescriptor:function(t,e){return c(i(t),e)}})},e5383:function(t,e,r){var n=r("b622");e.f=n},e5bf:function(t,e,r){"use strict";r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return i})),r.d(e,"d",(function(){return c})),r.d(e,"e",(function(){return a})),r.d(e,"b",(function(){return f}));var n=r("365c");function o(t){return Object(n["a"])({url:"/record/http",params:t,method:"get"})}function i(t){return Object(n["a"])({url:"/record/dns",params:t,method:"get"})}function c(t){return Object(n["a"])({url:"/record/mysql",params:t,method:"get"})}function a(t){return Object(n["a"])({url:"/record/rmi",params:t,method:"get"})}function f(t){return Object(n["a"])({url:"/record/ftp",params:t,method:"get"})}},e8b5:function(t,e,r){var n=r("c6b6");t.exports=Array.isArray||function(t){return"Array"==n(t)}},f889:function(t,e,r){"use strict";r.r(e);var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("a-table",{attrs:{columns:t.columns,"data-source":t.data,loading:t.loading,pagination:t.pagination,rowClassName:function(t,e){return e%2===0?"":"gray-table-row"}},on:{change:t.handleTableChange},scopedSlots:t._u([{key:"filterDropdown",fn:function(e){var n=e.setSelectedKeys,o=e.selectedKeys,i=e.clearFilters,c=e.column;return r("filter-dropdown",{attrs:{"set-selected-keys":n,"selected-keys":o,"clear-filters":i,column:c,filters:t.filters,fetch:t.fetch}})}},{key:"filterIcon",fn:function(t){return r("a-icon",{style:{color:t?"#108ee9":void 0},attrs:{type:"search"}})}},{key:"time",fn:function(e){return r("span",{},[t._v(" "+t._s(new Date(e).format("yyyy-MM-dd hh:mm:ss"))+" ")])}},{key:"method",fn:function(e){return r("span",{},[r("a-tag",{attrs:{color:t.colors[e]}},[t._v(" "+t._s(e.toUpperCase())+" ")])],1)}},{key:"expandedRowRender",fn:function(e){return r("code",{staticStyle:{margin:"0"}},[r("b",{staticStyle:{color:"gray"}},[t._v("RAW REQUEST:")]),r("br"),r("hr"),r("span",{staticStyle:{"white-space":"pre-line"}},[t._v(t._s(e.raw_request))])])}}])})},o=[],i=r("5530"),c=r("e5bf"),a=r("56d7"),f=r("db40"),s={GET:"#52c41a",POST:"#f5222d",PUT:"#eb2f96",HEAD:"#02a7ff",OPTIONS:"#13c2c2",DELETE:"#722ed1"},u=[{title:"ID",dataIndex:"id",key:"id",sorter:!0,sortDirections:["descend","ascend"]},{title:"REQUEST TIME",dataIndex:"request_time",key:"request_time",scopedSlots:{customRender:"time"}},{title:"RULE",dataIndex:"rule_name",key:"rule_name",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"FLAG",dataIndex:"flag",key:"flag",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"METHOD",dataIndex:"method",key:"method",scopedSlots:{customRender:"method",filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"PATH",dataIndex:"path",key:"path",ellipsis:!0,scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"REMOTE IP",key:"remote_ip",dataIndex:"remote_ip",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"IP AREA",key:"ip_area",dataIndex:"ip_area"}],l={name:"HttpLogs",data:function(){return{store:a["store"],data:[],pagination:{current:1,showSizeChanger:!0,pageSize:a["store"].pageSize,onShowSizeChange:function(t,e){a["store"].pageSize=e}},filters:{},order:"desc",loading:!1,columns:u,colors:s}},methods:{handleTableChange:function(t,e,r){var n=Object(i["a"])({},this.pagination);n.current=t.current,this.pagination=n,this.order="ascend"===r.order?"asc":"desc",this.fetch()},fetch:function(){var t=this,e=Object(i["a"])(Object(i["a"])({},this.filters),{},{page:this.pagination.current,pageSize:this.pagination.pageSize,order:this.order});this.loading=!0,Object(c["c"])(e).then((function(e){var r=e.data.result;t.data=r.data;var n=Object(i["a"])({},t.pagination);n.total=r.count,t.pagination=n,t.loading=!1})).catch((function(e){t.$notification.error({message:"Unknown error: "+e.response.status,style:{width:"100px",marginLeft:"".concat(-265,"px")},duration:4})}))}},mounted:function(){this.fetch()},components:{FilterDropdown:f["a"]}},d=l,p=(r("dbbc"),r("2877")),b=Object(p["a"])(d,n,o,!1,null,null,null);e["default"]=b.exports}}]);
\ No newline at end of file
diff --git a/frontend/dist/js/chunk-2e835d68.js b/frontend/dist/js/chunk-2e835d68.js
deleted file mode 100644
index ceb4348..0000000
--- a/frontend/dist/js/chunk-2e835d68.js
+++ /dev/null
@@ -1 +0,0 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2e835d68"],{3014:function(t,e,a){"use strict";a("41c6")},"41c6":function(t,e,a){},f832:function(t,e,a){"use strict";a.r(e);var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("a-button",{attrs:{id:"add-rule",type:"primary"},on:{click:t.addRule}},[a("a-icon",{attrs:{type:"plus"}}),t._v(" New Rule ")],1),a("a-drawer",{attrs:{title:t.formAction+" FTP rule",width:490,visible:t.formVisible,"body-style":{paddingBottom:"80px"}},on:{close:t.closeDrawer}},[a("a-form-model",{ref:"form",attrs:{model:t.form,layout:"vertical"},on:{submit:t.handleSubmit}},[a("BasicRule",{attrs:{form:t.form,readOnly:t.formReadOnly}}),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:24}},[a("a-form-model-item",[a("span",{attrs:{slot:"label"},slot:"label"},[t._v(" Pasv Address "),a("a-tooltip",{attrs:{title:"1. Support template such as ${user}/${password}/${varname}.\n2.For setting the rebind mode, please use ',' to separate addresses."}},[a("a-icon",{attrs:{type:"question-circle-o"}})],1)],1),a("a-input",{staticStyle:{width:"100%"},attrs:{placeholder:"use default value in the config",readOnly:t.formReadOnly},model:{value:t.form.pasv_address,callback:function(e){t.$set(t.form,"pasv_address",e)},expression:"form.pasv_address"}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:24}},[a("a-form-model-item",[a("span",{attrs:{slot:"label"},slot:"label"},[t._v(" Data "),a("a-tooltip",{attrs:{title:"1. The data to be returned when the client executes the download request.\n 2. Please use base64 encoding.\n 3. Support template such as ${user}/${password}/${varname}"}},[a("a-icon",{attrs:{type:"question-circle-o"}})],1)],1),a("a-textarea",{attrs:{placeholder:"The data to be returned when the client executes the download request. Please use base64 encoding.",readOnly:t.formReadOnly,"auto-size":{minRows:10,maxRows:30}},model:{value:t.form.data,callback:function(e){t.$set(t.form,"data",e)},expression:"form.data"}})],1)],1)],1)],1),a("div",{style:{position:"absolute",right:0,bottom:0,width:"100%",borderTop:"1px solid #e9e9e9",padding:"10px 16px",background:"#fff",textAlign:"right",zIndex:1}},[a("a-button",{style:{marginRight:"8px"},on:{click:t.handleCancel}},[t._v(" Cancel ")]),a("a-button",{attrs:{type:"primary",disabled:t.formReadOnly},on:{click:t.handleSubmit}},[t._v(" Submit ")])],1)],1),a("a-table",{attrs:{columns:t.columns,"data-source":t.data,loading:t.loading,pagination:t.pagination},on:{change:t.handleTableChange},scopedSlots:t._u([{key:"filterDropdown",fn:function(e){var n=e.setSelectedKeys,o=e.selectedKeys,r=(e.clearFilters,e.column);return a("div",{staticStyle:{padding:"8px"}},[a("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+r.dataIndex,value:o[0]},on:{change:function(t){return n(t.target.value?[t.target.value]:[])},pressEnter:function(){t.filters[r.dataIndex]=o[0],t.fetch()}}}),a("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){t.filters[r.dataIndex]=o[0],t.fetch()}}},[t._v(" Search ")])],1)}},{key:"filterIcon",fn:function(t){return a("a-icon",{style:{color:t?"#108ee9":void 0},attrs:{type:"search"}})}},{key:"rank",fn:function(e){return a("span",{},[a("a-tag",{attrs:{color:"#"+(2996213+80*e).toString(16)}},[t._v(" "+t._s(e)+" ")])],1)}},{key:"switchRender",fn:function(e,n,o,r){return a("span",{},[a("a-switch",{attrs:{checked:e},on:{click:function(e){return t.clickSwitch(n,r.dataIndex)}}})],1)}},{key:"valueRender",fn:function(e){return a("span",{},t._l(e.split(","),(function(e){return a("span",{key:e},[t._v(t._s(e)),a("br")])})),0)}},{key:"action",fn:function(e,n,o){return a("span",{},[a("a-button",{staticStyle:{color:"#67C23A","background-color":"transparent","border-color":"#67C23A","text-shadow":"none",margin:"0 10px 3px 0"},attrs:{size:"small",ghost:""},on:{click:function(e){return t.viewRule(n)}}},[t._v("View")]),a("a-button",{staticStyle:{color:"#909399","background-color":"transparent","border-color":"#909399","text-shadow":"none",margin:"0 10px 3px 0"},attrs:{size:"small",ghost:""},on:{click:function(e){return t.editRule(n,o)}}},[t._v("Edit")]),a("a-popconfirm",{attrs:{title:"Are you sure delete this task?","ok-text":"Yes","cancel-text":"No"},on:{confirm:function(e){return t.deleteRule(n,o)}}},[a("a-button",{attrs:{type:"danger",size:"small",ghost:""}},[t._v("Delete")])],1)],1)}}])})],1)},o=[],r=a("5530"),i=(a("a434"),a("34c6")),s=a("56d7"),c=a("2084"),l="View",d="Edit",u="Create",p=[{title:"ID",dataIndex:"id",key:"id",sorter:!0,sortDirections:["descend","ascend"]},{title:"NAME",dataIndex:"name",key:"name",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"FLAG FORMAT",dataIndex:"flag_format",key:"flag_format",ellipsis:!0},{title:"RANK",dataIndex:"rank",key:"rank",scopedSlots:{customRender:"rank"}},{title:"PASV ADDRESS",dataIndex:"pasv_address",key:"pasv_address",ellipsis:!0},{title:"PUSH TO CLIENT",dataIndex:"push_to_client",key:"push_to_client",scopedSlots:{customRender:"switchRender"}},{title:"NOTICE",dataIndex:"notice",key:"notice",scopedSlots:{customRender:"switchRender"}},{title:"Action",key:"action",scopedSlots:{customRender:"action"}}],f={name:"FtpRules",data:function(){return{store:s["store"],data:[],formVisible:!1,pagination:{current:1,showSizeChanger:!0,pageSize:s["store"].pageSize,onShowSizeChange:function(t,e){s["store"].pageSize=e}},filters:{},loading:!1,columns:p,form:{},formReadOnly:!1,formAction:""}},methods:{handleTableChange:function(t,e,a){var n=Object(r["a"])({},this.pagination);n.current=t.current,this.pagination=n,this.order="ascend"===a.order?"asc":"desc",this.fetch()},fetch:function(){var t=this,e=Object(r["a"])(Object(r["a"])({},this.filters),{},{page:this.pagination.current,pageSize:this.pagination.pageSize,order:this.order});this.loading=!0,Object(i["g"])(e).then((function(e){var a=e.data.result;t.data=a.data;var n=Object(r["a"])({},t.pagination);n.total=a.count,t.pagination=n,t.loading=!1})).catch((function(e){if(403===e.response.status)return s["store"].authed=!1,[];t.$notification.error({message:"Unknown error: "+e.response.status,style:{width:"100px",marginLeft:"".concat(-265,"px")},duration:4})}))},clickSwitch:function(t,e){var a=this;t[e]=!t[e],Object(i["l"])(t).then().catch((function(t){a.$notification.error({message:"Edit failed",description:t.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))},addRule:function(){this.form={},this.showForm(u)},viewRule:function(t){this.form=t,this.showForm(l)},editRule:function(t){this.form=JSON.parse(JSON.stringify(t)),this.showForm(d)},deleteRule:function(t,e){var a=this;Object(i["b"])(t).then((function(){a.data.splice(e,1)})).catch((function(t){a.$notification.error({message:"Error",description:t.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))},showForm:function(t){this.formAction=t,this.formReadOnly=t===l,this.formVisible=!0},closeDrawer:function(){this.formVisible=!1},handleSubmit:function(){var t=this;this.$refs.form.validate((function(e){e&&Object(i["l"])(t.form).then((function(){t.closeDrawer(),t.fetch({page:t.pagination.current}),t.$notification.info({message:"Success",style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:2.5})})).catch((function(e){t.$notification.error({message:t.formAction+" failed",description:e.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))}))},handleCancel:function(){this.form={},this.closeDrawer()}},mounted:function(){this.fetch({page:"1"})},components:{BasicRule:c["a"]}},h=f,m=(a("3014"),a("2877")),g=Object(m["a"])(h,n,o,!1,null,"487bb706",null);e["default"]=g.exports}}]);
\ No newline at end of file
diff --git a/frontend/dist/js/chunk-330a7e95.js b/frontend/dist/js/chunk-330a7e95.js
index 5140a24..efa4b76 100644
--- a/frontend/dist/js/chunk-330a7e95.js
+++ b/frontend/dist/js/chunk-330a7e95.js
@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-330a7e95"],{"057f":function(t,e,r){var n=r("fc6a"),o=r("241c").f,i={}.toString,c="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return o(t)}catch(e){return c.slice()}};t.exports.f=function(t){return c&&"[object Window]"==i.call(t)?a(t):o(n(t))}},"159b":function(t,e,r){var n=r("da84"),o=r("fdbc"),i=r("17c2"),c=r("9112");for(var a in o){var f=n[a],s=f&&f.prototype;if(s&&s.forEach!==i)try{c(s,"forEach",i)}catch(u){s.forEach=i}}},"17c2":function(t,e,r){"use strict";var n=r("b727").forEach,o=r("a640"),i=o("forEach");t.exports=i?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},"1dde":function(t,e,r){var n=r("d039"),o=r("b622"),i=r("2d00"),c=o("species");t.exports=function(t){return i>=51||!n((function(){var e=[],r=e.constructor={};return r[c]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},"4de4":function(t,e,r){"use strict";var n=r("23e7"),o=r("b727").filter,i=r("1dde"),c=i("filter");n({target:"Array",proto:!0,forced:!c},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},5530:function(t,e,r){"use strict";r.d(e,"a",(function(){return i}));r("b64b"),r("a4d3"),r("4de4"),r("e439"),r("159b"),r("dbb4");function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t){for(var e=1;ei)o.push(arguments[i++]);if(n=e,(p(e)||void 0!==t)&&!at(t))return d(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!at(e))return e}),o[1]=e,G.apply(null,o)}})}B[q][L]||E(B[q],L,B[q].valueOf),R(B,M),A[J]=!0},a640:function(t,e,r){"use strict";var n=r("d039");t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){throw 1},1)}))}},b64b:function(t,e,r){var n=r("23e7"),o=r("7b0b"),i=r("df75"),c=r("d039"),a=c((function(){i(1)}));n({target:"Object",stat:!0,forced:a},{keys:function(t){return i(o(t))}})},b727:function(t,e,r){var n=r("0366"),o=r("44ad"),i=r("7b0b"),c=r("50c4"),a=r("65f0"),f=[].push,s=function(t){var e=1==t,r=2==t,s=3==t,u=4==t,l=6==t,d=7==t,p=5==t||l;return function(b,h,y,g){for(var m,v,w=i(b),O=o(w),S=n(h,y,3),j=c(O.length),x=0,I=g||a,D=e?I(b,j):r||d?I(b,0):void 0;j>x;x++)if((p||x in O)&&(m=O[x],v=S(m,x,w),t))if(e)D[x]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return x;case 2:f.call(D,m)}else switch(t){case 4:return!1;case 7:f.call(D,m)}return l?-1:s||u?u:D}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterOut:s(7)}},db40:function(t,e,r){"use strict";var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticStyle:{padding:"8px"},attrs:{slot:"filterDropdown"},slot:"filterDropdown"},[r("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+t.column.dataIndex,value:t.selectedKeys[0]},on:{change:function(e){return t.setSelectedKeys(e.target.value?[e.target.value]:[])},pressEnter:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}}),r("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}},[t._v(" Search ")]),r("a-button",{staticStyle:{width:"90px"},attrs:{size:"small"},on:{click:function(){t.clearFilters(),delete t.filters[t.column.dataIndex],t.fetch()}}},[t._v(" Reset ")])],1)},o=[],i={name:"FilterDropdown",props:["setSelectedKeys","selectedKeys","clearFilters","column","filters","fetch"]},c=i,a=r("2877"),f=Object(a["a"])(c,n,o,!1,null,"5e6f101e",null);e["a"]=f.exports},dbb4:function(t,e,r){var n=r("23e7"),o=r("83ab"),i=r("56ef"),c=r("fc6a"),a=r("06cf"),f=r("8418");n({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){var e,r,n=c(t),o=a.f,s=i(n),u={},l=0;while(s.length>l)r=o(n,e=s[l++]),void 0!==r&&f(u,e,r);return u}})},e439:function(t,e,r){var n=r("23e7"),o=r("d039"),i=r("fc6a"),c=r("06cf").f,a=r("83ab"),f=o((function(){c(1)})),s=!a||f;n({target:"Object",stat:!0,forced:s,sham:!a},{getOwnPropertyDescriptor:function(t,e){return c(i(t),e)}})},e5383:function(t,e,r){var n=r("b622");e.f=n},e5bf:function(t,e,r){"use strict";r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return i})),r.d(e,"d",(function(){return c})),r.d(e,"e",(function(){return a})),r.d(e,"b",(function(){return f}));var n=r("365c");function o(t){return Object(n["a"])({url:"/record/http",params:t,method:"get"})}function i(t){return Object(n["a"])({url:"/record/dns",params:t,method:"get"})}function c(t){return Object(n["a"])({url:"/record/mysql",params:t,method:"get"})}function a(t){return Object(n["a"])({url:"/record/rmi",params:t,method:"get"})}function f(t){return Object(n["a"])({url:"/record/ftp",params:t,method:"get"})}},e8b5:function(t,e,r){var n=r("c6b6");t.exports=Array.isArray||function(t){return"Array"==n(t)}}}]);
\ No newline at end of file
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-330a7e95"],{"057f":function(t,e,r){var n=r("fc6a"),o=r("241c").f,i={}.toString,c="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return o(t)}catch(e){return c.slice()}};t.exports.f=function(t){return c&&"[object Window]"==i.call(t)?a(t):o(n(t))}},"159b":function(t,e,r){var n=r("da84"),o=r("fdbc"),i=r("17c2"),c=r("9112");for(var a in o){var f=n[a],s=f&&f.prototype;if(s&&s.forEach!==i)try{c(s,"forEach",i)}catch(u){s.forEach=i}}},"17c2":function(t,e,r){"use strict";var n=r("b727").forEach,o=r("a640"),i=o("forEach");t.exports=i?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},"1dde":function(t,e,r){var n=r("d039"),o=r("b622"),i=r("2d00"),c=o("species");t.exports=function(t){return i>=51||!n((function(){var e=[],r=e.constructor={};return r[c]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},"4de4":function(t,e,r){"use strict";var n=r("23e7"),o=r("b727").filter,i=r("1dde"),c=i("filter");n({target:"Array",proto:!0,forced:!c},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},5530:function(t,e,r){"use strict";r.d(e,"a",(function(){return i}));r("b64b"),r("a4d3"),r("4de4"),r("e439"),r("159b"),r("dbb4");function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t){for(var e=1;ei)o.push(arguments[i++]);if(n=e,(p(e)||void 0!==t)&&!at(t))return d(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!at(e))return e}),o[1]=e,G.apply(null,o)}})}B[M][q]||D(B[M],q,B[M].valueOf),R(B,L),A[J]=!0},a640:function(t,e,r){"use strict";var n=r("d039");t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){throw 1},1)}))}},b64b:function(t,e,r){var n=r("23e7"),o=r("7b0b"),i=r("df75"),c=r("d039"),a=c((function(){i(1)}));n({target:"Object",stat:!0,forced:a},{keys:function(t){return i(o(t))}})},b727:function(t,e,r){var n=r("0366"),o=r("44ad"),i=r("7b0b"),c=r("50c4"),a=r("65f0"),f=[].push,s=function(t){var e=1==t,r=2==t,s=3==t,u=4==t,l=6==t,d=7==t,p=5==t||l;return function(b,h,y,g){for(var m,v,w=i(b),O=o(w),S=n(h,y,3),j=c(O.length),x=0,I=g||a,k=e?I(b,j):r||d?I(b,0):void 0;j>x;x++)if((p||x in O)&&(m=O[x],v=S(m,x,w),t))if(e)k[x]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return x;case 2:f.call(k,m)}else switch(t){case 4:return!1;case 7:f.call(k,m)}return l?-1:s||u?u:k}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterOut:s(7)}},db40:function(t,e,r){"use strict";var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticStyle:{padding:"8px"},attrs:{slot:"filterDropdown"},slot:"filterDropdown"},[r("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+t.column.dataIndex,value:t.selectedKeys[0]},on:{change:function(e){return t.setSelectedKeys(e.target.value?[e.target.value]:[])},pressEnter:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}}),r("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}},[t._v(" Search ")]),r("a-button",{staticStyle:{width:"90px"},attrs:{size:"small"},on:{click:function(){t.clearFilters(),delete t.filters[t.column.dataIndex],t.fetch()}}},[t._v(" Reset ")])],1)},o=[],i={name:"FilterDropdown",props:["setSelectedKeys","selectedKeys","clearFilters","column","filters","fetch"]},c=i,a=r("2877"),f=Object(a["a"])(c,n,o,!1,null,"5e6f101e",null);e["a"]=f.exports},dbb4:function(t,e,r){var n=r("23e7"),o=r("83ab"),i=r("56ef"),c=r("fc6a"),a=r("06cf"),f=r("8418");n({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){var e,r,n=c(t),o=a.f,s=i(n),u={},l=0;while(s.length>l)r=o(n,e=s[l++]),void 0!==r&&f(u,e,r);return u}})},e439:function(t,e,r){var n=r("23e7"),o=r("d039"),i=r("fc6a"),c=r("06cf").f,a=r("83ab"),f=o((function(){c(1)})),s=!a||f;n({target:"Object",stat:!0,forced:s,sham:!a},{getOwnPropertyDescriptor:function(t,e){return c(i(t),e)}})},e5383:function(t,e,r){var n=r("b622");e.f=n},e5bf:function(t,e,r){"use strict";r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return i})),r.d(e,"d",(function(){return c})),r.d(e,"e",(function(){return a})),r.d(e,"b",(function(){return f}));var n=r("365c");function o(t){return Object(n["a"])({url:"/record/http",params:t,method:"get"})}function i(t){return Object(n["a"])({url:"/record/dns",params:t,method:"get"})}function c(t){return Object(n["a"])({url:"/record/mysql",params:t,method:"get"})}function a(t){return Object(n["a"])({url:"/record/rmi",params:t,method:"get"})}function f(t){return Object(n["a"])({url:"/record/ftp",params:t,method:"get"})}},e8b5:function(t,e,r){var n=r("c6b6");t.exports=Array.isArray||function(t){return"Array"==n(t)}}}]);
\ No newline at end of file
diff --git a/frontend/dist/js/chunk-36391b77.js b/frontend/dist/js/chunk-36391b77.js
new file mode 100644
index 0000000..0c7eb0e
--- /dev/null
+++ b/frontend/dist/js/chunk-36391b77.js
@@ -0,0 +1 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-36391b77"],{"69a3":function(t,e,n){},"952a":function(t,e,n){"use strict";n("69a3")},ac60:function(t,e,n){"use strict";n.r(e);var a=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("a-button",{attrs:{id:"add-rule",type:"primary"},on:{click:t.addRule}},[n("a-icon",{attrs:{type:"plus"}}),t._v(" New Rule ")],1),n("a-drawer",{attrs:{title:t.formAction+" RMI rule",width:490,visible:t.formVisible,"body-style":{paddingBottom:"80px"}},on:{close:t.closeDrawer}},[n("a-form-model",{ref:"form",attrs:{model:t.form,layout:"vertical"},on:{submit:t.handleSubmit}},[n("BasicRule",{attrs:{form:t.form,readOnly:t.formReadOnly}})],1),n("div",{style:{position:"absolute",right:0,bottom:0,width:"100%",borderTop:"1px solid #e9e9e9",padding:"10px 16px",background:"#fff",textAlign:"right",zIndex:1}},[n("a-button",{style:{marginRight:"8px"},on:{click:t.handleCancel}},[t._v(" Cancel ")]),n("a-button",{attrs:{type:"primary",disabled:t.formReadOnly},on:{click:t.handleSubmit}},[t._v(" Submit ")])],1)],1),n("a-table",{attrs:{columns:t.columns,"data-source":t.data,loading:t.loading,pagination:t.pagination},on:{change:t.handleTableChange},scopedSlots:t._u([{key:"filterDropdown",fn:function(e){var a=e.setSelectedKeys,o=e.selectedKeys,i=(e.clearFilters,e.column);return n("div",{staticStyle:{padding:"8px"}},[n("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+i.dataIndex,value:o[0]},on:{change:function(t){return a(t.target.value?[t.target.value]:[])},pressEnter:function(){t.filters[i.dataIndex]=o[0],t.fetch()}}}),n("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){t.filters[i.dataIndex]=o[0],t.fetch()}}},[t._v(" Search ")])],1)}},{key:"filterIcon",fn:function(t){return n("a-icon",{style:{color:t?"#108ee9":void 0},attrs:{type:"search"}})}},{key:"rank",fn:function(e){return n("span",{},[n("a-tag",{attrs:{color:"#"+(2996213+80*e).toString(16)}},[t._v(" "+t._s(e)+" ")])],1)}},{key:"switchRender",fn:function(e,a,o,i){return n("span",{},[n("a-switch",{attrs:{checked:e},on:{click:function(e){return t.clickSwitch(a,i.dataIndex)}}})],1)}},{key:"valueRender",fn:function(e){return n("span",{},t._l(e.split(","),(function(e){return n("span",{key:e},[t._v(t._s(e)),n("br")])})),0)}},{key:"action",fn:function(e,a,o){return n("span",{},[n("a-button",{staticStyle:{color:"#67C23A","background-color":"transparent","border-color":"#67C23A","text-shadow":"none",margin:"0 10px 3px 0"},attrs:{size:"small",ghost:""},on:{click:function(e){return t.viewRule(a)}}},[t._v("View")]),n("a-button",{staticStyle:{color:"#909399","background-color":"transparent","border-color":"#909399","text-shadow":"none",margin:"0 10px 3px 0"},attrs:{size:"small",ghost:""},on:{click:function(e){return t.editRule(a,o)}}},[t._v("Edit")]),n("a-popconfirm",{attrs:{title:"Are you sure delete this task?","ok-text":"Yes","cancel-text":"No"},on:{confirm:function(e){return t.deleteRule(a,o)}}},[n("a-button",{attrs:{type:"danger",size:"small",ghost:""}},[t._v("Delete")])],1)],1)}}])})],1)},o=[],i=n("5530"),r=(n("a434"),n("34c6")),c=n("56d7"),s=n("2084"),l="View",d="Edit",u="Create",f=[{title:"ID",dataIndex:"id",key:"id",sorter:!0,sortDirections:["descend","ascend"]},{title:"NAME",dataIndex:"name",key:"name",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"FLAG FORMAT",dataIndex:"flag_format",key:"flag_format",ellipsis:!0},{title:"RANK",dataIndex:"rank",key:"rank",scopedSlots:{customRender:"rank"}},{title:"PUSH TO CLIENT",dataIndex:"push_to_client",key:"push_to_client",scopedSlots:{customRender:"switchRender"}},{title:"NOTICE",dataIndex:"notice",key:"notice",scopedSlots:{customRender:"switchRender"}},{title:"Action",key:"action",scopedSlots:{customRender:"action"}}],p={name:"RmiRules",data:function(){return{store:c["store"],data:[],formVisible:!1,pagination:{current:1,showSizeChanger:!0,pageSize:c["store"].pageSize,onShowSizeChange:function(t,e){c["store"].pageSize=e}},filters:{},loading:!1,columns:f,form:{},formReadOnly:!1,formAction:""}},methods:{handleTableChange:function(t,e,n){var a=Object(i["a"])({},this.pagination);a.current=t.current,this.pagination=a,this.order="ascend"===n.order?"asc":"desc",this.fetch()},fetch:function(){var t=this,e=Object(i["a"])(Object(i["a"])({},this.filters),{},{page:this.pagination.current,pageSize:this.pagination.pageSize,order:this.order});this.loading=!0,Object(r["j"])(e).then((function(e){var n=e.data.result;t.data=n.data;var a=Object(i["a"])({},t.pagination);a.total=n.count,t.pagination=a,t.loading=!1})).catch((function(e){t.$notification.error({message:"Unknown error: "+e.response.status,style:{width:"100px",marginLeft:"".concat(-265,"px")},duration:4})}))},clickSwitch:function(t,e){var n=this;t[e]=!t[e],Object(r["o"])(t).then().catch((function(t){n.$notification.error({message:"Edit failed",description:t.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))},addRule:function(){this.form={},this.showForm(u)},viewRule:function(t){this.form=t,this.showForm(l)},editRule:function(t){this.form=JSON.parse(JSON.stringify(t)),this.showForm(d)},deleteRule:function(t,e){var n=this;Object(r["e"])(t).then((function(){n.data.splice(e,1)})).catch((function(t){n.$notification.error({message:"Error",description:t.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))},showForm:function(t){this.formAction=t,this.formReadOnly=t===l,this.formVisible=!0},closeDrawer:function(){this.formVisible=!1},handleSubmit:function(){var t=this;this.$refs.form.validate((function(e){e&&Object(r["o"])(t.form).then((function(){t.closeDrawer(),t.fetch({page:t.pagination.current}),t.$notification.info({message:"Success",style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:2.5})})).catch((function(e){t.$notification.error({message:t.formAction+" failed",description:e.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))}))},handleCancel:function(){this.form={},this.closeDrawer()}},mounted:function(){this.fetch({page:"1"})},components:{BasicRule:s["a"]}},h=p,m=(n("952a"),n("2877")),g=Object(m["a"])(h,a,o,!1,null,"ae6501fc",null);e["default"]=g.exports}}]);
\ No newline at end of file
diff --git a/frontend/dist/js/chunk-3d13e56e.js b/frontend/dist/js/chunk-3d13e56e.js
index 90bcfb7..eb45743 100644
--- a/frontend/dist/js/chunk-3d13e56e.js
+++ b/frontend/dist/js/chunk-3d13e56e.js
@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-3d13e56e"],{"057f":function(t,e,r){var n=r("fc6a"),o=r("241c").f,i={}.toString,c="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return o(t)}catch(e){return c.slice()}};t.exports.f=function(t){return c&&"[object Window]"==i.call(t)?a(t):o(n(t))}},"159b":function(t,e,r){var n=r("da84"),o=r("fdbc"),i=r("17c2"),c=r("9112");for(var a in o){var s=n[a],f=s&&s.prototype;if(f&&f.forEach!==i)try{c(f,"forEach",i)}catch(u){f.forEach=i}}},"17c2":function(t,e,r){"use strict";var n=r("b727").forEach,o=r("a640"),i=o("forEach");t.exports=i?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},"1dde":function(t,e,r){var n=r("d039"),o=r("b622"),i=r("2d00"),c=o("species");t.exports=function(t){return i>=51||!n((function(){var e=[],r=e.constructor={};return r[c]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},"382b":function(t,e,r){},"430c":function(t,e,r){"use strict";r("382b")},"4de4":function(t,e,r){"use strict";var n=r("23e7"),o=r("b727").filter,i=r("1dde"),c=i("filter");n({target:"Array",proto:!0,forced:!c},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},5530:function(t,e,r){"use strict";r.d(e,"a",(function(){return i}));r("b64b"),r("a4d3"),r("4de4"),r("e439"),r("159b"),r("dbb4");function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t){for(var e=1;ei)o.push(arguments[i++]);if(n=e,(p(e)||void 0!==t)&&!at(t))return d(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!at(e))return e}),o[1]=e,$.apply(null,o)}})}W[U][M]||k(W[U],M,W[U].valueOf),H(W,L),A[z]=!0},a640:function(t,e,r){"use strict";var n=r("d039");t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){throw 1},1)}))}},b64b:function(t,e,r){var n=r("23e7"),o=r("7b0b"),i=r("df75"),c=r("d039"),a=c((function(){i(1)}));n({target:"Object",stat:!0,forced:a},{keys:function(t){return i(o(t))}})},b727:function(t,e,r){var n=r("0366"),o=r("44ad"),i=r("7b0b"),c=r("50c4"),a=r("65f0"),s=[].push,f=function(t){var e=1==t,r=2==t,f=3==t,u=4==t,l=6==t,d=7==t,p=5==t||l;return function(h,b,y,g){for(var m,v,w=i(h),S=o(w),O=n(b,y,3),I=c(S.length),x=0,D=g||a,j=e?D(h,I):r||d?D(h,0):void 0;I>x;x++)if((p||x in S)&&(m=S[x],v=O(m,x,w),t))if(e)j[x]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return x;case 2:s.call(j,m)}else switch(t){case 4:return!1;case 7:s.call(j,m)}return l?-1:f||u?u:j}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6),filterOut:f(7)}},c5bf:function(t,e,r){"use strict";r.r(e);var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("a-table",{attrs:{columns:t.columns,"data-source":t.data,loading:t.loading,pagination:t.pagination,rowClassName:function(t,e){return e%2===0?"":"gray-table-row"}},on:{change:t.handleTableChange},scopedSlots:t._u([{key:"selectDropdown",fn:function(e){e.setSelectedKeys,e.selectedKeys,e.clearFilters;var n=e.column;return r("div",{staticStyle:{padding:"8px"}},[r("a-checkbox",{attrs:{checked:"CRASHED"===t.filters[n.dataIndex]},on:{change:function(e){e.target.checked?t.filters[n.dataIndex]="CRASHED":t.filters[n.dataIndex]="",t.fetch()}}},[t._v(" CRASHED ")]),r("br"),r("a-checkbox",{attrs:{checked:"FINISHED"===t.filters[n.dataIndex]},on:{change:function(e){e.target.checked?t.filters[n.dataIndex]="FINISHED":t.filters[n.dataIndex]="",t.fetch()}}},[t._v(" FINISHED ")])],1)}},{key:"filterDropdown",fn:function(e){var n=e.setSelectedKeys,o=e.selectedKeys,i=e.clearFilters,c=e.column;return r("filter-dropdown",{attrs:{"set-selected-keys":n,"selected-keys":o,"clear-filters":i,column:c,filters:t.filters,fetch:t.fetch}})}},{key:"filterIcon",fn:function(t){return r("a-icon",{style:{color:t?"#108ee9":void 0},attrs:{type:"search"}})}},{key:"method",fn:function(e){return r("span",{},[e?r("a-tag",{attrs:{color:"UPLOAD"===e?"#eb2f96":"#02a7ff"}},[t._v(t._s(e))]):t._e()],1)}},{key:"file",fn:function(e){return r("span",{},[e?r("a-tag",{attrs:{color:"#f5222d"}},[r("a",{attrs:{target:"_blank",href:"/revsuit/api/file/ftp/"+e.id}},[t._v("TRUE")])]):r("a-tag",{attrs:{color:"#722ed1"}},[t._v(" FALSE ")])],1)}},{key:"time",fn:function(e){return r("span",{},[t._v(" "+t._s(new Date(e).format("yyyy-MM-dd hh:mm:ss"))+" ")])}},{key:"status",fn:function(e){return r("span",{},[r("a-tag",{attrs:{color:t.colors[e]}},[t._v(" "+t._s(e)+" ")])],1)}}])})},o=[],i=r("5530"),c=r("e5bf"),a=r("56d7"),s=r("db40"),f={CRASHED:"#f50",FINISHED:"#52c41a"},u=[{title:"ID",dataIndex:"id",key:"id",sorter:!0,sortDirections:["descend","ascend"]},{title:"REQUEST TIME",dataIndex:"request_time",key:"request_time",scopedSlots:{customRender:"time"}},{title:"RULE",dataIndex:"rule_name",key:"rule_name",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"FLAG",dataIndex:"flag",key:"flag",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"USER",dataIndex:"user",key:"user",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"PASSWORD",dataIndex:"password",key:"password",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"PATH",dataIndex:"path",key:"path",ellipsis:!0,scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"METHOD",dataIndex:"method",key:"method",scopedSlots:{customRender:"method",filterDropdown:"selectDropdown",filterIcon:"filterIcon"}},{title:"FILE",dataIndex:"file",key:"file",scopedSlots:{customRender:"file"}},{title:"STATUS",dataIndex:"status",key:"status",scopedSlots:{customRender:"status",filterDropdown:"selectDropdown",filterIcon:"filterIcon"}},{title:"REMOTE IP",key:"remote_ip",dataIndex:"remote_ip",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"IP AREA",key:"ip_area",dataIndex:"ip_area"}],l={name:"FtpLogs",data:function(){return{store:a["store"],data:[],pagination:{current:1,showSizeChanger:!0,pageSize:a["store"].pageSize,onShowSizeChange:function(t,e){a["store"].pageSize=e}},filters:{},order:"desc",loading:!1,columns:u,colors:f}},methods:{handleTableChange:function(t,e,r){var n=Object(i["a"])({},this.pagination);n.current=t.current,this.pagination=n,this.order="ascend"===r.order?"asc":"desc",this.fetch()},fetch:function(){var t=this,e=Object(i["a"])(Object(i["a"])({},this.filters),{},{page:this.pagination.current,pageSize:this.pagination.pageSize,order:this.order});this.loading=!0,Object(c["b"])(e).then((function(e){var r=e.data.result;t.data=r.data;var n=Object(i["a"])({},t.pagination);n.total=r.count,t.pagination=n,t.loading=!1})).catch((function(t){if(403===t.response.status)return a["store"].authed=!1,[];console.error(t)}))}},mounted:function(){this.fetch()},components:{FilterDropdown:s["a"]}},d=l,p=(r("430c"),r("2877")),h=Object(p["a"])(d,n,o,!1,null,null,null);e["default"]=h.exports},db40:function(t,e,r){"use strict";var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticStyle:{padding:"8px"},attrs:{slot:"filterDropdown"},slot:"filterDropdown"},[r("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+t.column.dataIndex,value:t.selectedKeys[0]},on:{change:function(e){return t.setSelectedKeys(e.target.value?[e.target.value]:[])},pressEnter:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}}),r("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}},[t._v(" Search ")]),r("a-button",{staticStyle:{width:"90px"},attrs:{size:"small"},on:{click:function(){t.clearFilters(),delete t.filters[t.column.dataIndex],t.fetch()}}},[t._v(" Reset ")])],1)},o=[],i={name:"FilterDropdown",props:["setSelectedKeys","selectedKeys","clearFilters","column","filters","fetch"]},c=i,a=r("2877"),s=Object(a["a"])(c,n,o,!1,null,"5e6f101e",null);e["a"]=s.exports},dbb4:function(t,e,r){var n=r("23e7"),o=r("83ab"),i=r("56ef"),c=r("fc6a"),a=r("06cf"),s=r("8418");n({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){var e,r,n=c(t),o=a.f,f=i(n),u={},l=0;while(f.length>l)r=o(n,e=f[l++]),void 0!==r&&s(u,e,r);return u}})},e439:function(t,e,r){var n=r("23e7"),o=r("d039"),i=r("fc6a"),c=r("06cf").f,a=r("83ab"),s=o((function(){c(1)})),f=!a||s;n({target:"Object",stat:!0,forced:f,sham:!a},{getOwnPropertyDescriptor:function(t,e){return c(i(t),e)}})},e5383:function(t,e,r){var n=r("b622");e.f=n},e5bf:function(t,e,r){"use strict";r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return i})),r.d(e,"d",(function(){return c})),r.d(e,"e",(function(){return a})),r.d(e,"b",(function(){return s}));var n=r("365c");function o(t){return Object(n["a"])({url:"/record/http",params:t,method:"get"})}function i(t){return Object(n["a"])({url:"/record/dns",params:t,method:"get"})}function c(t){return Object(n["a"])({url:"/record/mysql",params:t,method:"get"})}function a(t){return Object(n["a"])({url:"/record/rmi",params:t,method:"get"})}function s(t){return Object(n["a"])({url:"/record/ftp",params:t,method:"get"})}},e8b5:function(t,e,r){var n=r("c6b6");t.exports=Array.isArray||function(t){return"Array"==n(t)}}}]);
\ No newline at end of file
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-3d13e56e"],{"057f":function(t,e,r){var n=r("fc6a"),o=r("241c").f,i={}.toString,c="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return o(t)}catch(e){return c.slice()}};t.exports.f=function(t){return c&&"[object Window]"==i.call(t)?a(t):o(n(t))}},"159b":function(t,e,r){var n=r("da84"),o=r("fdbc"),i=r("17c2"),c=r("9112");for(var a in o){var s=n[a],f=s&&s.prototype;if(f&&f.forEach!==i)try{c(f,"forEach",i)}catch(u){f.forEach=i}}},"17c2":function(t,e,r){"use strict";var n=r("b727").forEach,o=r("a640"),i=o("forEach");t.exports=i?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},"1dde":function(t,e,r){var n=r("d039"),o=r("b622"),i=r("2d00"),c=o("species");t.exports=function(t){return i>=51||!n((function(){var e=[],r=e.constructor={};return r[c]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},"382b":function(t,e,r){},"430c":function(t,e,r){"use strict";r("382b")},"4de4":function(t,e,r){"use strict";var n=r("23e7"),o=r("b727").filter,i=r("1dde"),c=i("filter");n({target:"Array",proto:!0,forced:!c},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},5530:function(t,e,r){"use strict";r.d(e,"a",(function(){return i}));r("b64b"),r("a4d3"),r("4de4"),r("e439"),r("159b"),r("dbb4");function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t){for(var e=1;ei)o.push(arguments[i++]);if(n=e,(p(e)||void 0!==t)&&!at(t))return d(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!at(e))return e}),o[1]=e,W.apply(null,o)}})}Q[U][M]||j(Q[U],M,Q[U].valueOf),H(Q,L),A[z]=!0},a640:function(t,e,r){"use strict";var n=r("d039");t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){throw 1},1)}))}},b64b:function(t,e,r){var n=r("23e7"),o=r("7b0b"),i=r("df75"),c=r("d039"),a=c((function(){i(1)}));n({target:"Object",stat:!0,forced:a},{keys:function(t){return i(o(t))}})},b727:function(t,e,r){var n=r("0366"),o=r("44ad"),i=r("7b0b"),c=r("50c4"),a=r("65f0"),s=[].push,f=function(t){var e=1==t,r=2==t,f=3==t,u=4==t,l=6==t,d=7==t,p=5==t||l;return function(h,b,y,g){for(var m,v,w=i(h),S=o(w),O=n(b,y,3),I=c(S.length),x=0,D=g||a,k=e?D(h,I):r||d?D(h,0):void 0;I>x;x++)if((p||x in S)&&(m=S[x],v=O(m,x,w),t))if(e)k[x]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return x;case 2:s.call(k,m)}else switch(t){case 4:return!1;case 7:s.call(k,m)}return l?-1:f||u?u:k}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6),filterOut:f(7)}},c5bf:function(t,e,r){"use strict";r.r(e);var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("a-table",{attrs:{columns:t.columns,"data-source":t.data,loading:t.loading,pagination:t.pagination,rowClassName:function(t,e){return e%2===0?"":"gray-table-row"}},on:{change:t.handleTableChange},scopedSlots:t._u([{key:"selectDropdown",fn:function(e){e.setSelectedKeys,e.selectedKeys,e.clearFilters;var n=e.column;return r("div",{staticStyle:{padding:"8px"}},[r("a-checkbox",{attrs:{checked:"CRASHED"===t.filters[n.dataIndex]},on:{change:function(e){e.target.checked?t.filters[n.dataIndex]="CRASHED":t.filters[n.dataIndex]="",t.fetch()}}},[t._v(" CRASHED ")]),r("br"),r("a-checkbox",{attrs:{checked:"FINISHED"===t.filters[n.dataIndex]},on:{change:function(e){e.target.checked?t.filters[n.dataIndex]="FINISHED":t.filters[n.dataIndex]="",t.fetch()}}},[t._v(" FINISHED ")])],1)}},{key:"filterDropdown",fn:function(e){var n=e.setSelectedKeys,o=e.selectedKeys,i=e.clearFilters,c=e.column;return r("filter-dropdown",{attrs:{"set-selected-keys":n,"selected-keys":o,"clear-filters":i,column:c,filters:t.filters,fetch:t.fetch}})}},{key:"filterIcon",fn:function(t){return r("a-icon",{style:{color:t?"#108ee9":void 0},attrs:{type:"search"}})}},{key:"method",fn:function(e){return r("span",{},[e?r("a-tag",{attrs:{color:"UPLOAD"===e?"#eb2f96":"#02a7ff"}},[t._v(t._s(e))]):t._e()],1)}},{key:"file",fn:function(e){return r("span",{},[e?r("a-tag",{attrs:{color:"#f5222d"}},[r("a",{attrs:{target:"_blank",href:"/revsuit/api/file/ftp/"+e.id}},[t._v("TRUE")])]):r("a-tag",{attrs:{color:"#722ed1"}},[t._v(" FALSE ")])],1)}},{key:"time",fn:function(e){return r("span",{},[t._v(" "+t._s(new Date(e).format("yyyy-MM-dd hh:mm:ss"))+" ")])}},{key:"status",fn:function(e){return r("span",{},[r("a-tag",{attrs:{color:t.colors[e]}},[t._v(" "+t._s(e)+" ")])],1)}}])})},o=[],i=r("5530"),c=r("e5bf"),a=r("56d7"),s=r("db40"),f={CRASHED:"#f50",FINISHED:"#52c41a"},u=[{title:"ID",dataIndex:"id",key:"id",sorter:!0,sortDirections:["descend","ascend"]},{title:"REQUEST TIME",dataIndex:"request_time",key:"request_time",scopedSlots:{customRender:"time"}},{title:"RULE",dataIndex:"rule_name",key:"rule_name",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"FLAG",dataIndex:"flag",key:"flag",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"USER",dataIndex:"user",key:"user",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"PASSWORD",dataIndex:"password",key:"password",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"PATH",dataIndex:"path",key:"path",ellipsis:!0,scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"METHOD",dataIndex:"method",key:"method",scopedSlots:{customRender:"method",filterDropdown:"selectDropdown",filterIcon:"filterIcon"}},{title:"FILE",dataIndex:"file",key:"file",scopedSlots:{customRender:"file"}},{title:"STATUS",dataIndex:"status",key:"status",scopedSlots:{customRender:"status",filterDropdown:"selectDropdown",filterIcon:"filterIcon"}},{title:"REMOTE IP",key:"remote_ip",dataIndex:"remote_ip",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"IP AREA",key:"ip_area",dataIndex:"ip_area"}],l={name:"FtpLogs",data:function(){return{store:a["store"],data:[],pagination:{current:1,showSizeChanger:!0,pageSize:a["store"].pageSize,onShowSizeChange:function(t,e){a["store"].pageSize=e}},filters:{},order:"desc",loading:!1,columns:u,colors:f}},methods:{handleTableChange:function(t,e,r){var n=Object(i["a"])({},this.pagination);n.current=t.current,this.pagination=n,this.order="ascend"===r.order?"asc":"desc",this.fetch()},fetch:function(){var t=this,e=Object(i["a"])(Object(i["a"])({},this.filters),{},{page:this.pagination.current,pageSize:this.pagination.pageSize,order:this.order});this.loading=!0,Object(c["b"])(e).then((function(e){var r=e.data.result;t.data=r.data;var n=Object(i["a"])({},t.pagination);n.total=r.count,t.pagination=n,t.loading=!1})).catch((function(e){t.$notification.error({message:"Unknown error: "+e.response.status,style:{width:"100px",marginLeft:"".concat(-265,"px")},duration:4})}))}},mounted:function(){this.fetch()},components:{FilterDropdown:s["a"]}},d=l,p=(r("430c"),r("2877")),h=Object(p["a"])(d,n,o,!1,null,null,null);e["default"]=h.exports},db40:function(t,e,r){"use strict";var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticStyle:{padding:"8px"},attrs:{slot:"filterDropdown"},slot:"filterDropdown"},[r("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+t.column.dataIndex,value:t.selectedKeys[0]},on:{change:function(e){return t.setSelectedKeys(e.target.value?[e.target.value]:[])},pressEnter:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}}),r("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}},[t._v(" Search ")]),r("a-button",{staticStyle:{width:"90px"},attrs:{size:"small"},on:{click:function(){t.clearFilters(),delete t.filters[t.column.dataIndex],t.fetch()}}},[t._v(" Reset ")])],1)},o=[],i={name:"FilterDropdown",props:["setSelectedKeys","selectedKeys","clearFilters","column","filters","fetch"]},c=i,a=r("2877"),s=Object(a["a"])(c,n,o,!1,null,"5e6f101e",null);e["a"]=s.exports},dbb4:function(t,e,r){var n=r("23e7"),o=r("83ab"),i=r("56ef"),c=r("fc6a"),a=r("06cf"),s=r("8418");n({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){var e,r,n=c(t),o=a.f,f=i(n),u={},l=0;while(f.length>l)r=o(n,e=f[l++]),void 0!==r&&s(u,e,r);return u}})},e439:function(t,e,r){var n=r("23e7"),o=r("d039"),i=r("fc6a"),c=r("06cf").f,a=r("83ab"),s=o((function(){c(1)})),f=!a||s;n({target:"Object",stat:!0,forced:f,sham:!a},{getOwnPropertyDescriptor:function(t,e){return c(i(t),e)}})},e5383:function(t,e,r){var n=r("b622");e.f=n},e5bf:function(t,e,r){"use strict";r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return i})),r.d(e,"d",(function(){return c})),r.d(e,"e",(function(){return a})),r.d(e,"b",(function(){return s}));var n=r("365c");function o(t){return Object(n["a"])({url:"/record/http",params:t,method:"get"})}function i(t){return Object(n["a"])({url:"/record/dns",params:t,method:"get"})}function c(t){return Object(n["a"])({url:"/record/mysql",params:t,method:"get"})}function a(t){return Object(n["a"])({url:"/record/rmi",params:t,method:"get"})}function s(t){return Object(n["a"])({url:"/record/ftp",params:t,method:"get"})}},e8b5:function(t,e,r){var n=r("c6b6");t.exports=Array.isArray||function(t){return"Array"==n(t)}}}]);
\ No newline at end of file
diff --git a/frontend/dist/js/chunk-5840ae94.js b/frontend/dist/js/chunk-42105840.js
similarity index 73%
rename from frontend/dist/js/chunk-5840ae94.js
rename to frontend/dist/js/chunk-42105840.js
index 399fcf3..5c95911 100644
--- a/frontend/dist/js/chunk-5840ae94.js
+++ b/frontend/dist/js/chunk-42105840.js
@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-5840ae94"],{"05cd":function(e,t,a){"use strict";a.r(t);var o=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("a-button",{attrs:{id:"add-rule",type:"primary"},on:{click:e.addRule}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" New Rule ")],1),a("a-drawer",{attrs:{title:e.formAction+" MySQL rule",width:490,visible:e.formVisible,"body-style":{paddingBottom:"80px"}},on:{close:e.closeDrawer}},[a("a-form-model",{ref:"form",attrs:{model:e.form,layout:"vertical"},on:{submit:e.handleSubmit}},[a("BasicRule",{attrs:{form:e.form,readOnly:e.formReadOnly,flagField:"user or schema"}}),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:24}},[a("a-form-model-item",{attrs:{label:"Files",rules:e.rules.files}},[a("a-input",{staticStyle:{width:"100%"},attrs:{placeholder:"please enter file name,use ';' to split multiple file names",readOnly:e.formReadOnly,disabled:e.form.exploit_jdbc_client},model:{value:e.form.files,callback:function(t){e.$set(e.form,"files",t)},expression:"form.files"}})],1)],1)],1),a("a-row",[a("a-form-model-item",[a("div",{staticClass:"ant-form-item-label"},[a("label",{attrs:{for:"exploit-jdbc-client"}},[e._v("Exploit Jdbc Client "),a("a-tooltip",{attrs:{placement:"topLeft",title:"Whether test to exploit jdbc client."}},[a("a-icon",{attrs:{type:"question-circle"}})],1)],1)]),a("a-switch",{attrs:{id:"exploit-jdbc-client",disabled:e.formReadOnly},model:{value:e.form.exploit_jdbc_client,callback:function(t){e.$set(e.form,"exploit_jdbc_client",t)},expression:"form.exploit_jdbc_client"}})],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:24}},[a("a-form-model-item",[a("label",{attrs:{for:"payload"}},[e._v("Payload "),a("a-tooltip",{attrs:{placement:"topLeft",title:"Need to set ${payload} variable by flag format first. Payload which key is same as ${payload} will be used."}},[a("a-icon",{attrs:{type:"question-circle"}})],1)],1),e._l(e.payloadKeys,(function(t){return a("a-input-group",{key:t,attrs:{id:"payload",compact:""}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["Key-"+t],expression:"['Key-'+payloadKey,]"}],staticStyle:{width:"47%","margin-bottom":"5px"},attrs:{defaultOpen:!1,placeholder:"Key",disabled:!e.form.exploit_jdbc_client,readOnly:e.formReadOnly},model:{value:e.form["Key-"+t],callback:function(a){e.$set(e.form,"Key-"+t,a)},expression:"form['Key-'+payloadKey]"}}),a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["Value-"+t],expression:"['Value-'+payloadKey,]"}],staticStyle:{width:"53%"},attrs:{placeholder:"Base64 encoded payload Value",disabled:!e.form.exploit_jdbc_client,readOnly:e.formReadOnly},on:{focus:function(){!e.formReadOnly&&t===e.payloadKeys[e.payloadKeys.length-1]&&e.form["Key-"+t]&&e.addPayload()}},model:{value:e.form["Value-"+t],callback:function(a){e.$set(e.form,"Value-"+t,a)},expression:"form['Value-'+payloadKey]"}},[a("a-icon",{staticClass:"dynamic-delete-button",attrs:{slot:"addonAfter",type:"minus-circle-o"},on:{click:function(){return e.form.exploit_jdbc_client?e.removePayload(t):null}},slot:"addonAfter"})],1)],1)}))],2)],1)],1)],1),a("div",{style:{position:"absolute",right:0,bottom:0,width:"100%",borderTop:"1px solid #e9e9e9",padding:"10px 16px",background:"#fff",textAlign:"right",zIndex:1}},[a("a-button",{style:{marginRight:"8px"},on:{click:e.handleCancel}},[e._v(" Cancel ")]),a("a-button",{attrs:{type:"primary",disabled:e.formReadOnly},on:{click:e.handleSubmit}},[e._v(" Submit ")])],1)],1),a("a-table",{attrs:{columns:e.columns,"data-source":e.data,loading:e.loading,pagination:e.pagination},on:{change:e.handleTableChange},scopedSlots:e._u([{key:"filterDropdown",fn:function(t){var o=t.setSelectedKeys,i=t.selectedKeys,n=(t.clearFilters,t.column);return a("div",{staticStyle:{padding:"8px"}},[a("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+n.dataIndex,value:i[0]},on:{change:function(e){return o(e.target.value?[e.target.value]:[])},pressEnter:function(){e.filters[n.dataIndex]=i[0],e.fetch()}}}),a("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){e.filters[n.dataIndex]=i[0],e.fetch()}}},[e._v(" Search ")])],1)}},{key:"filterIcon",fn:function(e){return a("a-icon",{style:{color:e?"#108ee9":void 0},attrs:{type:"search"}})}},{key:"rank",fn:function(t){return a("span",{},[a("a-tag",{attrs:{color:"#"+(2996213+80*t).toString(16)}},[e._v(" "+e._s(t)+" ")])],1)}},{key:"switchRender",fn:function(t,o,i,n){return a("span",{},[a("a-switch",{attrs:{checked:t},on:{click:function(t){return e.clickSwitch(o,n.dataIndex)}}})],1)}},{key:"action",fn:function(t,o,i){return a("span",{},[a("a-button",{staticStyle:{color:"#67C23A","background-color":"transparent","border-color":"#67C23A","text-shadow":"none",margin:"0 10px 3px 0"},attrs:{size:"small",ghost:""},on:{click:function(t){return e.viewRule(o)}}},[e._v("View")]),a("a-button",{staticStyle:{color:"#909399","background-color":"transparent","border-color":"#909399","text-shadow":"none",margin:"0 10px 3px 0"},attrs:{size:"small",ghost:""},on:{click:function(t){return e.editRule(o,i)}}},[e._v("Edit")]),a("a-popconfirm",{attrs:{title:"Are you sure delete this task?","ok-text":"Yes","cancel-text":"No"},on:{confirm:function(t){return e.deleteRule(o,i)}}},[a("a-button",{attrs:{type:"danger",size:"small",ghost:""}},[e._v("Delete")])],1)],1)}}])})],1)},i=[],n=a("5530"),r=(a("a434"),a("34c6")),l=a("56d7"),s=a("2084"),c="View",d="Edit",f="Create",u=[{title:"ID",dataIndex:"id",key:"id",sorter:!0,sortDirections:["descend","ascend"]},{title:"NAME",dataIndex:"name",key:"name",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"FLAG FORMAT",dataIndex:"flag_format",key:"flag_format",ellipsis:!0},{title:"RANK",dataIndex:"rank",key:"rank",scopedSlots:{customRender:"rank"}},{title:"FILES",dataIndex:"files",key:"files",ellipsis:!0},{title:"PUSH TO CLIENT",dataIndex:"push_to_client",key:"push_to_client",scopedSlots:{customRender:"switchRender"}},{title:"NOTICE",dataIndex:"notice",key:"notice",scopedSlots:{customRender:"switchRender"}},{title:"Action",key:"action",scopedSlots:{customRender:"action"}}],p={files:[{required:!1,message:"please enter file name"}]},m={name:"MysqlRules",data:function(){return{store:l["store"],data:[],formVisible:!1,pagination:{current:1,showSizeChanger:!0,pageSize:l["store"].pageSize,onShowSizeChange:function(e,t){l["store"].pageSize=t}},filters:{},loading:!1,columns:u,form:{},rules:p,payloadKeys:[1],formReadOnly:!1,formAction:""}},methods:{handleTableChange:function(e,t,a){var o=Object(n["a"])({},this.pagination);o.current=e.current,this.pagination=o,this.order="ascend"===a.order?"asc":"desc",this.fetch()},fetch:function(){var e=this,t=Object(n["a"])(Object(n["a"])({},this.filters),{},{page:this.pagination.current,pageSize:this.pagination.pageSize,order:this.order});this.loading=!0,Object(r["i"])(t).then((function(t){var a=t.data.result;e.data=a.data;var o=Object(n["a"])({},e.pagination);o.total=a.count,e.pagination=o,e.loading=!1})).catch((function(t){if(403===t.response.status)return l["store"].authed=!1,[];e.$notification.error({message:"Unknown error: "+t.response.status,style:{width:"100px",marginLeft:"".concat(-265,"px")},duration:4})}))},clickSwitch:function(e,t){var a=this;e[t]=!e[t],Object(r["n"])(e).then().catch((function(e){a.$notification.error({message:"Edit failed",description:e.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))},addRule:function(){this.form={},this.showForm(f)},viewRule:function(e){this.form=e,this.showForm(c)},editRule:function(e){this.form=JSON.parse(JSON.stringify(e)),this.showForm(d)},deleteRule:function(e,t){var a=this;Object(r["d"])(e).then((function(){a.data.splice(t,1)})).catch((function(e){a.$notification.error({message:"Error",description:e.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))},showForm:function(e){for(var t in this.formAction=e,this.formReadOnly=e===c,this.formVisible=!0,this.form.payloads)this.form["Key-"+this.payloadKeys.length]=t,this.form["Value-"+this.payloadKeys.length]=this.form.payloads[t],this.addPayload();this.formReadOnly&&this.removePayload(this.payloadKeys.length)},closeDrawer:function(){this.formVisible=!1,this.payloadKeys=[1]},addPayload:function(){this.payloadKeys.push(this.payloadKeys[this.payloadKeys.length-1]+1)},removePayload:function(e){this.payloadKeys.length>1&&this.payloadKeys.splice(this.payloadKeys.indexOf(e),1)},handleSubmit:function(){var e=this;this.$refs.form.validate((function(t){if(t){var a={},o={};for(var i in e.form)if(0===i.indexOf("Key-")){var n=i.substr("Key-".length);e.form["Value-"+n]&&(a[e.form[i]]=e.form["Value-"+n])}else-1===i.indexOf("Value-")&&(o[i]=e.form[i]);o.payloads=a,Object(r["n"])(o).then((function(){e.closeDrawer(),e.fetch({page:e.pagination.current}),e.$notification.info({message:"Success",style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:2.5})})).catch((function(t){e.$notification.error({message:e.formAction+" failed",description:t.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))}}))},handleCancel:function(){this.form={},this.closeDrawer()}},mounted:function(){this.fetch({page:"1"})},components:{BasicRule:s["a"]}},h=m,y=(a("3e20"),a("2877")),g=Object(y["a"])(h,o,i,!1,null,"f1cd719a",null);t["default"]=g.exports},2322:function(e,t,a){},"3e20":function(e,t,a){"use strict";a("2322")}}]);
\ No newline at end of file
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-42105840"],{"05cd":function(e,t,a){"use strict";a.r(t);var o=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("a-button",{attrs:{id:"add-rule",type:"primary"},on:{click:e.addRule}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" New Rule ")],1),a("a-drawer",{attrs:{title:e.formAction+" MySQL rule",width:490,visible:e.formVisible,"body-style":{paddingBottom:"80px"}},on:{close:e.closeDrawer}},[a("a-form-model",{ref:"form",attrs:{model:e.form,layout:"vertical"},on:{submit:e.handleSubmit}},[a("BasicRule",{attrs:{form:e.form,readOnly:e.formReadOnly,flagField:"user or schema"}}),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:24}},[a("a-form-model-item",{attrs:{label:"Files",rules:e.rules.files}},[a("a-input",{staticStyle:{width:"100%"},attrs:{placeholder:"please enter file name,use ';' to split multiple file names",readOnly:e.formReadOnly,disabled:e.form.exploit_jdbc_client},model:{value:e.form.files,callback:function(t){e.$set(e.form,"files",t)},expression:"form.files"}})],1)],1)],1),a("a-row",[a("a-form-model-item",[a("div",{staticClass:"ant-form-item-label"},[a("label",{attrs:{for:"exploit-jdbc-client"}},[e._v("Exploit Jdbc Client "),a("a-tooltip",{attrs:{placement:"topLeft",title:"Whether test to exploit jdbc client."}},[a("a-icon",{attrs:{type:"question-circle"}})],1)],1)]),a("a-switch",{attrs:{id:"exploit-jdbc-client",disabled:e.formReadOnly},model:{value:e.form.exploit_jdbc_client,callback:function(t){e.$set(e.form,"exploit_jdbc_client",t)},expression:"form.exploit_jdbc_client"}})],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:24}},[a("a-form-model-item",[a("label",{attrs:{for:"payload"}},[e._v("Payload "),a("a-tooltip",{attrs:{placement:"topLeft",title:"Need to set ${payload} variable by flag format first. Payload which key is same as ${payload} will be used."}},[a("a-icon",{attrs:{type:"question-circle"}})],1)],1),e._l(e.payloadKeys,(function(t){return a("a-input-group",{key:t,attrs:{id:"payload",compact:""}},[a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["Key-"+t],expression:"['Key-'+payloadKey,]"}],staticStyle:{width:"47%","margin-bottom":"5px"},attrs:{defaultOpen:!1,placeholder:"Key",disabled:!e.form.exploit_jdbc_client,readOnly:e.formReadOnly},model:{value:e.form["Key-"+t],callback:function(a){e.$set(e.form,"Key-"+t,a)},expression:"form['Key-'+payloadKey]"}}),a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["Value-"+t],expression:"['Value-'+payloadKey,]"}],staticStyle:{width:"53%"},attrs:{placeholder:"Base64 encoded payload Value",disabled:!e.form.exploit_jdbc_client,readOnly:e.formReadOnly},on:{focus:function(){!e.formReadOnly&&t===e.payloadKeys[e.payloadKeys.length-1]&&e.form["Key-"+t]&&e.addPayload()}},model:{value:e.form["Value-"+t],callback:function(a){e.$set(e.form,"Value-"+t,a)},expression:"form['Value-'+payloadKey]"}},[a("a-icon",{staticClass:"dynamic-delete-button",attrs:{slot:"addonAfter",type:"minus-circle-o"},on:{click:function(){return e.form.exploit_jdbc_client?e.removePayload(t):null}},slot:"addonAfter"})],1)],1)}))],2)],1)],1)],1),a("div",{style:{position:"absolute",right:0,bottom:0,width:"100%",borderTop:"1px solid #e9e9e9",padding:"10px 16px",background:"#fff",textAlign:"right",zIndex:1}},[a("a-button",{style:{marginRight:"8px"},on:{click:e.handleCancel}},[e._v(" Cancel ")]),a("a-button",{attrs:{type:"primary",disabled:e.formReadOnly},on:{click:e.handleSubmit}},[e._v(" Submit ")])],1)],1),a("a-table",{attrs:{columns:e.columns,"data-source":e.data,loading:e.loading,pagination:e.pagination},on:{change:e.handleTableChange},scopedSlots:e._u([{key:"filterDropdown",fn:function(t){var o=t.setSelectedKeys,i=t.selectedKeys,n=(t.clearFilters,t.column);return a("div",{staticStyle:{padding:"8px"}},[a("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+n.dataIndex,value:i[0]},on:{change:function(e){return o(e.target.value?[e.target.value]:[])},pressEnter:function(){e.filters[n.dataIndex]=i[0],e.fetch()}}}),a("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){e.filters[n.dataIndex]=i[0],e.fetch()}}},[e._v(" Search ")])],1)}},{key:"filterIcon",fn:function(e){return a("a-icon",{style:{color:e?"#108ee9":void 0},attrs:{type:"search"}})}},{key:"rank",fn:function(t){return a("span",{},[a("a-tag",{attrs:{color:"#"+(2996213+80*t).toString(16)}},[e._v(" "+e._s(t)+" ")])],1)}},{key:"switchRender",fn:function(t,o,i,n){return a("span",{},[a("a-switch",{attrs:{checked:t},on:{click:function(t){return e.clickSwitch(o,n.dataIndex)}}})],1)}},{key:"action",fn:function(t,o,i){return a("span",{},[a("a-button",{staticStyle:{color:"#67C23A","background-color":"transparent","border-color":"#67C23A","text-shadow":"none",margin:"0 10px 3px 0"},attrs:{size:"small",ghost:""},on:{click:function(t){return e.viewRule(o)}}},[e._v("View")]),a("a-button",{staticStyle:{color:"#909399","background-color":"transparent","border-color":"#909399","text-shadow":"none",margin:"0 10px 3px 0"},attrs:{size:"small",ghost:""},on:{click:function(t){return e.editRule(o,i)}}},[e._v("Edit")]),a("a-popconfirm",{attrs:{title:"Are you sure delete this task?","ok-text":"Yes","cancel-text":"No"},on:{confirm:function(t){return e.deleteRule(o,i)}}},[a("a-button",{attrs:{type:"danger",size:"small",ghost:""}},[e._v("Delete")])],1)],1)}}])})],1)},i=[],n=a("5530"),r=(a("a434"),a("34c6")),l=a("56d7"),s=a("2084"),c="View",d="Edit",f="Create",u=[{title:"ID",dataIndex:"id",key:"id",sorter:!0,sortDirections:["descend","ascend"]},{title:"NAME",dataIndex:"name",key:"name",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"FLAG FORMAT",dataIndex:"flag_format",key:"flag_format",ellipsis:!0},{title:"RANK",dataIndex:"rank",key:"rank",scopedSlots:{customRender:"rank"}},{title:"FILES",dataIndex:"files",key:"files",ellipsis:!0},{title:"PUSH TO CLIENT",dataIndex:"push_to_client",key:"push_to_client",scopedSlots:{customRender:"switchRender"}},{title:"NOTICE",dataIndex:"notice",key:"notice",scopedSlots:{customRender:"switchRender"}},{title:"Action",key:"action",scopedSlots:{customRender:"action"}}],p={files:[{required:!1,message:"please enter file name"}]},m={name:"MysqlRules",data:function(){return{store:l["store"],data:[],formVisible:!1,pagination:{current:1,showSizeChanger:!0,pageSize:l["store"].pageSize,onShowSizeChange:function(e,t){l["store"].pageSize=t}},filters:{},loading:!1,columns:u,form:{},rules:p,payloadKeys:[1],formReadOnly:!1,formAction:""}},methods:{handleTableChange:function(e,t,a){var o=Object(n["a"])({},this.pagination);o.current=e.current,this.pagination=o,this.order="ascend"===a.order?"asc":"desc",this.fetch()},fetch:function(){var e=this,t=Object(n["a"])(Object(n["a"])({},this.filters),{},{page:this.pagination.current,pageSize:this.pagination.pageSize,order:this.order});this.loading=!0,Object(r["i"])(t).then((function(t){var a=t.data.result;e.data=a.data;var o=Object(n["a"])({},e.pagination);o.total=a.count,e.pagination=o,e.loading=!1})).catch((function(t){e.$notification.error({message:"Unknown error: "+t.response.status,style:{width:"100px",marginLeft:"".concat(-265,"px")},duration:4})}))},clickSwitch:function(e,t){var a=this;e[t]=!e[t],Object(r["n"])(e).then().catch((function(e){a.$notification.error({message:"Edit failed",description:e.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))},addRule:function(){this.form={},this.showForm(f)},viewRule:function(e){this.form=e,this.showForm(c)},editRule:function(e){this.form=JSON.parse(JSON.stringify(e)),this.showForm(d)},deleteRule:function(e,t){var a=this;Object(r["d"])(e).then((function(){a.data.splice(t,1)})).catch((function(e){a.$notification.error({message:"Error",description:e.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))},showForm:function(e){for(var t in this.formAction=e,this.formReadOnly=e===c,this.formVisible=!0,this.form.payloads)this.form["Key-"+this.payloadKeys.length]=t,this.form["Value-"+this.payloadKeys.length]=this.form.payloads[t],this.addPayload();this.formReadOnly&&this.removePayload(this.payloadKeys.length)},closeDrawer:function(){this.formVisible=!1,this.payloadKeys=[1]},addPayload:function(){this.payloadKeys.push(this.payloadKeys[this.payloadKeys.length-1]+1)},removePayload:function(e){this.payloadKeys.length>1&&this.payloadKeys.splice(this.payloadKeys.indexOf(e),1)},handleSubmit:function(){var e=this;this.$refs.form.validate((function(t){if(t){var a={},o={};for(var i in e.form)if(0===i.indexOf("Key-")){var n=i.substr("Key-".length);e.form["Value-"+n]&&(a[e.form[i]]=e.form["Value-"+n])}else-1===i.indexOf("Value-")&&(o[i]=e.form[i]);o.payloads=a,Object(r["n"])(o).then((function(){e.closeDrawer(),e.fetch({page:e.pagination.current}),e.$notification.info({message:"Success",style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:2.5})})).catch((function(t){e.$notification.error({message:e.formAction+" failed",description:t.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))}}))},handleCancel:function(){this.form={},this.closeDrawer()}},mounted:function(){this.fetch({page:"1"})},components:{BasicRule:s["a"]}},h=m,y=(a("4e1e"),a("2877")),g=Object(y["a"])(h,o,i,!1,null,"5aa75eae",null);t["default"]=g.exports},1135:function(e,t,a){},"4e1e":function(e,t,a){"use strict";a("1135")}}]);
\ No newline at end of file
diff --git a/frontend/dist/js/chunk-65a35ecf.js b/frontend/dist/js/chunk-65a35ecf.js
new file mode 100644
index 0000000..48df0a0
--- /dev/null
+++ b/frontend/dist/js/chunk-65a35ecf.js
@@ -0,0 +1 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-65a35ecf"],{"19f6":function(t,e,a){"use strict";a("d6fc")},d6fc:function(t,e,a){},f832:function(t,e,a){"use strict";a.r(e);var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("a-button",{attrs:{id:"add-rule",type:"primary"},on:{click:t.addRule}},[a("a-icon",{attrs:{type:"plus"}}),t._v(" New Rule ")],1),a("a-drawer",{attrs:{title:t.formAction+" FTP rule",width:490,visible:t.formVisible,"body-style":{paddingBottom:"80px"}},on:{close:t.closeDrawer}},[a("a-form-model",{ref:"form",attrs:{model:t.form,layout:"vertical"},on:{submit:t.handleSubmit}},[a("BasicRule",{attrs:{form:t.form,readOnly:t.formReadOnly}}),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:24}},[a("a-form-model-item",[a("span",{attrs:{slot:"label"},slot:"label"},[t._v(" Pasv Address "),a("a-tooltip",{attrs:{title:"1. Support template such as ${user}/${password}/${varname}.\n2.For setting the rebind mode, please use ',' to separate addresses."}},[a("a-icon",{attrs:{type:"question-circle-o"}})],1)],1),a("a-input",{staticStyle:{width:"100%"},attrs:{placeholder:"Use external IP by default",readOnly:t.formReadOnly},model:{value:t.form.pasv_address,callback:function(e){t.$set(t.form,"pasv_address",e)},expression:"form.pasv_address"}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:24}},[a("a-form-model-item",[a("span",{attrs:{slot:"label"},slot:"label"},[t._v(" Data "),a("a-tooltip",{attrs:{title:"1. The data to be returned when the client executes the download request.\n 2. Please use base64 encoding.\n 3. Support template such as ${user}/${password}/${varname}"}},[a("a-icon",{attrs:{type:"question-circle-o"}})],1)],1),a("a-textarea",{attrs:{placeholder:"The data to be returned when the client executes the download request. Please use base64 encoding.",readOnly:t.formReadOnly,"auto-size":{minRows:10,maxRows:30}},model:{value:t.form.data,callback:function(e){t.$set(t.form,"data",e)},expression:"form.data"}})],1)],1)],1)],1),a("div",{style:{position:"absolute",right:0,bottom:0,width:"100%",borderTop:"1px solid #e9e9e9",padding:"10px 16px",background:"#fff",textAlign:"right",zIndex:1}},[a("a-button",{style:{marginRight:"8px"},on:{click:t.handleCancel}},[t._v(" Cancel ")]),a("a-button",{attrs:{type:"primary",disabled:t.formReadOnly},on:{click:t.handleSubmit}},[t._v(" Submit ")])],1)],1),a("a-table",{attrs:{columns:t.columns,"data-source":t.data,loading:t.loading,pagination:t.pagination},on:{change:t.handleTableChange},scopedSlots:t._u([{key:"filterDropdown",fn:function(e){var n=e.setSelectedKeys,o=e.selectedKeys,r=(e.clearFilters,e.column);return a("div",{staticStyle:{padding:"8px"}},[a("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+r.dataIndex,value:o[0]},on:{change:function(t){return n(t.target.value?[t.target.value]:[])},pressEnter:function(){t.filters[r.dataIndex]=o[0],t.fetch()}}}),a("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){t.filters[r.dataIndex]=o[0],t.fetch()}}},[t._v(" Search ")])],1)}},{key:"filterIcon",fn:function(t){return a("a-icon",{style:{color:t?"#108ee9":void 0},attrs:{type:"search"}})}},{key:"rank",fn:function(e){return a("span",{},[a("a-tag",{attrs:{color:"#"+(2996213+80*e).toString(16)}},[t._v(" "+t._s(e)+" ")])],1)}},{key:"switchRender",fn:function(e,n,o,r){return a("span",{},[a("a-switch",{attrs:{checked:e},on:{click:function(e){return t.clickSwitch(n,r.dataIndex)}}})],1)}},{key:"valueRender",fn:function(e){return a("span",{},t._l(e.split(","),(function(e){return a("span",{key:e},[t._v(t._s(e)),a("br")])})),0)}},{key:"action",fn:function(e,n,o){return a("span",{},[a("a-button",{staticStyle:{color:"#67C23A","background-color":"transparent","border-color":"#67C23A","text-shadow":"none",margin:"0 10px 3px 0"},attrs:{size:"small",ghost:""},on:{click:function(e){return t.viewRule(n)}}},[t._v("View")]),a("a-button",{staticStyle:{color:"#909399","background-color":"transparent","border-color":"#909399","text-shadow":"none",margin:"0 10px 3px 0"},attrs:{size:"small",ghost:""},on:{click:function(e){return t.editRule(n,o)}}},[t._v("Edit")]),a("a-popconfirm",{attrs:{title:"Are you sure delete this task?","ok-text":"Yes","cancel-text":"No"},on:{confirm:function(e){return t.deleteRule(n,o)}}},[a("a-button",{attrs:{type:"danger",size:"small",ghost:""}},[t._v("Delete")])],1)],1)}}])})],1)},o=[],r=a("5530"),i=(a("a434"),a("34c6")),s=a("56d7"),c=a("2084"),l="View",d="Edit",u="Create",f=[{title:"ID",dataIndex:"id",key:"id",sorter:!0,sortDirections:["descend","ascend"]},{title:"NAME",dataIndex:"name",key:"name",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"FLAG FORMAT",dataIndex:"flag_format",key:"flag_format",ellipsis:!0},{title:"RANK",dataIndex:"rank",key:"rank",scopedSlots:{customRender:"rank"}},{title:"PASV ADDRESS",dataIndex:"pasv_address",key:"pasv_address",ellipsis:!0},{title:"PUSH TO CLIENT",dataIndex:"push_to_client",key:"push_to_client",scopedSlots:{customRender:"switchRender"}},{title:"NOTICE",dataIndex:"notice",key:"notice",scopedSlots:{customRender:"switchRender"}},{title:"Action",key:"action",scopedSlots:{customRender:"action"}}],p={name:"FtpRules",data:function(){return{store:s["store"],data:[],formVisible:!1,pagination:{current:1,showSizeChanger:!0,pageSize:s["store"].pageSize,onShowSizeChange:function(t,e){s["store"].pageSize=e}},filters:{},loading:!1,columns:f,form:{},formReadOnly:!1,formAction:""}},methods:{handleTableChange:function(t,e,a){var n=Object(r["a"])({},this.pagination);n.current=t.current,this.pagination=n,this.order="ascend"===a.order?"asc":"desc",this.fetch()},fetch:function(){var t=this,e=Object(r["a"])(Object(r["a"])({},this.filters),{},{page:this.pagination.current,pageSize:this.pagination.pageSize,order:this.order});this.loading=!0,Object(i["g"])(e).then((function(e){var a=e.data.result;t.data=a.data;var n=Object(r["a"])({},t.pagination);n.total=a.count,t.pagination=n,t.loading=!1})).catch((function(e){t.$notification.error({message:"Unknown error: "+e.response.status,style:{width:"100px",marginLeft:"".concat(-265,"px")},duration:4})}))},clickSwitch:function(t,e){var a=this;t[e]=!t[e],Object(i["l"])(t).then().catch((function(t){a.$notification.error({message:"Edit failed",description:t.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))},addRule:function(){this.form={},this.showForm(u)},viewRule:function(t){this.form=t,this.showForm(l)},editRule:function(t){this.form=JSON.parse(JSON.stringify(t)),this.showForm(d)},deleteRule:function(t,e){var a=this;Object(i["b"])(t).then((function(){a.data.splice(e,1)})).catch((function(t){a.$notification.error({message:"Error",description:t.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))},showForm:function(t){this.formAction=t,this.formReadOnly=t===l,this.formVisible=!0},closeDrawer:function(){this.formVisible=!1},handleSubmit:function(){var t=this;this.$refs.form.validate((function(e){e&&Object(i["l"])(t.form).then((function(){t.closeDrawer(),t.fetch({page:t.pagination.current}),t.$notification.info({message:"Success",style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:2.5})})).catch((function(e){t.$notification.error({message:t.formAction+" failed",description:e.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))}))},handleCancel:function(){this.form={},this.closeDrawer()}},mounted:function(){this.fetch({page:"1"})},components:{BasicRule:c["a"]}},h=p,m=(a("19f6"),a("2877")),g=Object(m["a"])(h,n,o,!1,null,"4bcc6b83",null);e["default"]=g.exports}}]);
\ No newline at end of file
diff --git a/frontend/dist/js/chunk-7bcb83e6.js b/frontend/dist/js/chunk-7bcb83e6.js
new file mode 100644
index 0000000..dd97e9b
--- /dev/null
+++ b/frontend/dist/js/chunk-7bcb83e6.js
@@ -0,0 +1 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-7bcb83e6"],{"3c77":function(e,t,a){},"882b":function(e,t,a){"use strict";a("3c77")},"9520c":function(e,t,a){"use strict";a.r(t);var o=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("a-button",{attrs:{id:"add-rule",type:"primary"},on:{click:e.addRule}},[a("a-icon",{attrs:{type:"plus"}}),e._v(" New Rule ")],1),a("a-drawer",{attrs:{title:e.formAction+" HTTP rule",width:490,visible:e.formVisible,"body-style":{paddingBottom:"80px"}},on:{close:e.closeDrawer}},[a("a-form-model",{ref:"form",attrs:{model:e.form,layout:"vertical"},on:{submit:e.handleSubmit}},[a("BasicRule",{attrs:{form:e.form,readOnly:e.formReadOnly}}),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:24}},[a("a-form-model-item",{attrs:{rules:e.rules.response_status_code,prop:"response_status_code"}},[a("span",{attrs:{slot:"label"},slot:"label"},[e._v(" Response Status Code "),a("a-tooltip",{attrs:{title:"Number between 100-600, or template such as ${query.varname}/${body.varname}/${header.varname}"}},[a("a-icon",{attrs:{type:"question-circle-o"}})],1)],1),a("a-input",{staticStyle:{width:"100%"},attrs:{placeholder:"200",disabled:e.formReadOnly},model:{value:e.form.response_status_code,callback:function(t){e.$set(e.form,"response_status_code",t)},expression:"form.response_status_code"}})],1)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:24}},[a("a-form-model-item",[a("span",{attrs:{slot:"label"},slot:"label"},[e._v(" Response Headers "),a("a-tooltip",{attrs:{title:"Support template such as ${query.varname}/${body.varname}/${header.varname}"}},[a("a-icon",{attrs:{type:"question-circle-o"}})],1)],1),e._l(e.headerKeys,(function(t){return a("a-input-group",{key:t,attrs:{compact:""}},[a("a-auto-complete",{directives:[{name:"decorator",rawName:"v-decorator",value:["Header-"+t],expression:"['Header-'+headerKey,]"}],staticStyle:{width:"47%","margin-bottom":"5px"},attrs:{dataSource:e.headerSet,filterOption:e.filterOption,defaultOpen:!1,placeholder:"Header",disabled:e.formReadOnly},model:{value:e.form["Header-"+t],callback:function(a){e.$set(e.form,"Header-"+t,a)},expression:"form['Header-'+headerKey]"}}),a("a-input",{directives:[{name:"decorator",rawName:"v-decorator",value:["Value-"+t],expression:"['Value-'+headerKey,]"}],staticStyle:{width:"53%"},attrs:{placeholder:"Value",disabled:e.formReadOnly},on:{focus:function(){!e.formReadOnly&&t===e.headerKeys[e.headerKeys.length-1]&&e.form["Header-"+t]&&e.addHeader()}},model:{value:e.form["Value-"+t],callback:function(a){e.$set(e.form,"Value-"+t,a)},expression:"form['Value-'+headerKey]"}},[a("a-icon",{staticClass:"dynamic-delete-button",attrs:{slot:"addonAfter",type:"minus-circle-o"},on:{click:function(){return e.formReadOnly?null:e.removeHeader(t)}},slot:"addonAfter"})],1)],1)}))],2)],1)],1),a("a-row",{attrs:{gutter:24}},[a("a-col",{attrs:{span:24}},[a("a-form-model-item",[a("span",{attrs:{slot:"label"},slot:"label"},[e._v(" Response Body "),a("a-tooltip",{attrs:{title:"Support template such as ${query.varname}/${body.varname}/${header.varname}"}},[a("a-icon",{attrs:{type:"question-circle-o"}})],1)],1),a("a-icon",{staticClass:"full-screen-icon",attrs:{type:"fullscreen"},on:{click:function(t){e.fullScreenTextarea=!0}}}),a("a-textarea",{attrs:{placeholder:"Hello RevSuit!",readOnly:e.formReadOnly,"auto-size":{minRows:10,maxRows:30}},model:{value:e.form.response_body,callback:function(t){e.$set(e.form,"response_body",t)},expression:"form.response_body"}}),a("a-modal",{attrs:{"dialog-style":{top:"40px",bottom:"20px"},width:"80rem",visible:e.fullScreenTextarea,title:"Response Body",okText:""},on:{ok:function(t){e.fullScreenTextarea=!1},cancel:function(t){e.fullScreenTextarea=!1}}},[a("a-textarea",{staticStyle:{height:"100%"},attrs:{placeholder:"Hello RevSuit!",readOnly:e.formReadOnly,"auto-size":{minRows:e.fullScreenTextareaMinRows(),maxRows:1.5*e.fullScreenTextareaMinRows()}},model:{value:e.form.response_body,callback:function(t){e.$set(e.form,"response_body",t)},expression:"form.response_body"}})],1)],1)],1)],1)],1),a("div",{style:{position:"absolute",right:0,bottom:0,width:"100%",borderTop:"1px solid #e9e9e9",padding:"10px 16px",background:"#fff",textAlign:"right",zIndex:1}},[a("a-button",{style:{marginRight:"8px"},on:{click:e.handleCancel}},[e._v(" Cancel ")]),a("a-button",{attrs:{type:"primary",disabled:e.formReadOnly},on:{click:e.handleSubmit}},[e._v(" Submit ")])],1)],1),a("a-table",{attrs:{columns:e.columns,"data-source":e.data,loading:e.loading,pagination:e.pagination},on:{change:e.handleTableChange},scopedSlots:e._u([{key:"filterDropdown",fn:function(t){var o=t.setSelectedKeys,r=t.selectedKeys,n=(t.clearFilters,t.column);return a("div",{staticStyle:{padding:"8px"}},[a("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+n.dataIndex,value:r[0]},on:{change:function(e){return o(e.target.value?[e.target.value]:[])},pressEnter:function(){e.filters[n.dataIndex]=r[0],e.fetch()}}}),a("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){e.filters[n.dataIndex]=r[0],e.fetch()}}},[e._v(" Search ")])],1)}},{key:"filterIcon",fn:function(e){return a("a-icon",{style:{color:e?"#108ee9":void 0},attrs:{type:"search"}})}},{key:"rank",fn:function(t){return a("span",{},[a("a-tag",{attrs:{color:"#"+(2996213+80*t).toString(16)}},[e._v(" "+e._s(t)+" ")])],1)}},{key:"switchRender",fn:function(t,o,r,n){return a("span",{},[a("a-switch",{attrs:{checked:t},on:{click:function(t){return e.clickSwitch(o,n.dataIndex)}}})],1)}},{key:"action",fn:function(t,o,r){return a("span",{},[a("a-button",{staticStyle:{color:"#67C23A","background-color":"transparent","border-color":"#67C23A","text-shadow":"none",margin:"0 10px 3px 0"},attrs:{size:"small",ghost:""},on:{click:function(t){return e.viewRule(o)}}},[e._v("View")]),a("a-button",{staticStyle:{color:"#909399","background-color":"transparent","border-color":"#909399","text-shadow":"none",margin:"0 10px 3px 0"},attrs:{size:"small",ghost:""},on:{click:function(t){return e.editRule(o,r)}}},[e._v("Edit")]),a("a-popconfirm",{attrs:{title:"Are you sure delete this task?","ok-text":"Yes","cancel-text":"No"},on:{confirm:function(t){return e.deleteRule(o,r)}}},[a("a-button",{attrs:{type:"danger",size:"small",ghost:""}},[e._v("Delete")])],1)],1)}}])})],1)},r=[],n=a("5530"),i=(a("a434"),a("fb6a"),a("34c6")),s=a("56d7"),c=a("2084"),l="View",d="Edit",u="Create",f=[{title:"ID",dataIndex:"id",key:"id",sorter:!0,sortDirections:["descend","ascend"]},{title:"NAME",dataIndex:"name",key:"name",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"FLAG FORMAT",dataIndex:"flag_format",key:"flag_format",ellipsis:!0},{title:"RANK",dataIndex:"rank",key:"rank",scopedSlots:{customRender:"rank"}},{title:"PUSH TO CLIENT",dataIndex:"push_to_client",key:"push_to_client",scopedSlots:{customRender:"switchRender"}},{title:"NOTICE",dataIndex:"notice",key:"notice",scopedSlots:{customRender:"switchRender"}},{title:"Action",key:"action",scopedSlots:{customRender:"action"}}],p={response_status_code:[{validator:function(e,t,a){return void 0===t||!isNaN(t)&&1001&&this.headerKeys.splice(this.headerKeys.indexOf(e),1)},filterOption:function(e,t){return t.componentOptions.children[0].text.toUpperCase().indexOf(e.toUpperCase())>=0},handleSubmit:function(){var e=this;this.$refs.form.validate((function(t){if(!t)return!1;var a={},o={};for(var r in e.form)if(0===r.indexOf("Header-")){var n=r.substr("Header-".length);e.form["Value-"+n]&&(o[e.form[r]]=e.form["Value-"+n])}else-1===r.indexOf("Value-")&&(a[r]=e.form[r]);a.response_headers=o,Object(i["m"])(a).then((function(){e.closeDrawer(),e.fetch({page:e.pagination.current}),e.$notification.info({message:"Success",style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:2.5})})).catch((function(t){e.$notification.error({message:e.formAction+" failed",description:t.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))}))},handleCancel:function(){this.form={},this.closeDrawer()},fullScreenTextareaMinRows:function(){return document.body.clientHeight/window.getComputedStyle(document.body)["fontSize"].slice(0,-2)*.5}},mounted:function(){this.fetch({page:"1"})},components:{BasicRule:c["a"]}},m=h,y=(a("882b"),a("2877")),g=Object(y["a"])(m,o,r,!1,null,"79ad429e",null);t["default"]=g.exports},fb6a:function(e,t,a){"use strict";var o=a("23e7"),r=a("861d"),n=a("e8b5"),i=a("23cb"),s=a("50c4"),c=a("fc6a"),l=a("8418"),d=a("b622"),u=a("1dde"),f=u("slice"),p=d("species"),h=[].slice,m=Math.max;o({target:"Array",proto:!0,forced:!f},{slice:function(e,t){var a,o,d,u=c(this),f=s(u.length),y=i(e,f),g=i(void 0===t?f:t,f);if(n(u)&&(a=u.constructor,"function"!=typeof a||a!==Array&&!n(a.prototype)?r(a)&&(a=a[p],null===a&&(a=void 0)):a=void 0,a===Array||void 0===a))return h.call(u,y,g);for(o=new(void 0===a?Array:a)(m(g-y,0)),d=0;y1&&this.headerKeys.splice(this.headerKeys.indexOf(e),1)},filterOption:function(e,t){return t.componentOptions.children[0].text.toUpperCase().indexOf(e.toUpperCase())>=0},handleSubmit:function(){var e=this;this.$refs.form.validate((function(t){if(!t)return!1;var a={},o={};for(var r in e.form)if(0===r.indexOf("Header-")){var n=r.substr("Header-".length);e.form["Value-"+n]&&(o[e.form[r]]=e.form["Value-"+n])}else-1===r.indexOf("Value-")&&(a[r]=e.form[r]);a.response_headers=o,Object(i["m"])(a).then((function(){e.closeDrawer(),e.fetch({page:e.pagination.current}),e.$notification.info({message:"Success",style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:2.5})})).catch((function(t){e.$notification.error({message:e.formAction+" failed",description:t.response.data.error,style:{width:"600px",marginLeft:"".concat(-265,"px")},duration:4})}))}))},handleCancel:function(){this.form={},this.closeDrawer()},fullScreenTextareaMinRows:function(){return document.body.clientHeight/window.getComputedStyle(document.body)["fontSize"].slice(0,-2)*.5}},mounted:function(){this.fetch({page:"1"})},components:{BasicRule:c["a"]}},m=h,y=(a("fd6e"),a("2877")),g=Object(y["a"])(m,o,r,!1,null,"169b853c",null);t["default"]=g.exports},"9cee":function(e,t,a){},fb6a:function(e,t,a){"use strict";var o=a("23e7"),r=a("861d"),n=a("e8b5"),i=a("23cb"),s=a("50c4"),c=a("fc6a"),l=a("8418"),d=a("b622"),u=a("1dde"),f=u("slice"),p=d("species"),h=[].slice,m=Math.max;o({target:"Array",proto:!0,forced:!f},{slice:function(e,t){var a,o,d,u=c(this),f=s(u.length),y=i(e,f),g=i(void 0===t?f:t,f);if(n(u)&&(a=u.constructor,"function"!=typeof a||a!==Array&&!n(a.prototype)?r(a)&&(a=a[p],null===a&&(a=void 0)):a=void 0,a===Array||void 0===a))return h.call(u,y,g);for(o=new(void 0===a?Array:a)(m(g-y,0)),d=0;y1?arguments[1]:void 0)}},"1dde":function(t,e,r){var n=r("d039"),o=r("b622"),i=r("2d00"),c=o("species");t.exports=function(t){return i>=51||!n((function(){var e=[],r=e.constructor={};return r[c]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},"333e":function(t,e,r){"use strict";r("db2e")},"4de4":function(t,e,r){"use strict";var n=r("23e7"),o=r("b727").filter,i=r("1dde"),c=i("filter");n({target:"Array",proto:!0,forced:!c},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},5530:function(t,e,r){"use strict";r.d(e,"a",(function(){return i}));r("b64b"),r("a4d3"),r("4de4"),r("e439"),r("159b"),r("dbb4");function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t){for(var e=1;ei)o.push(arguments[i++]);if(n=e,(p(e)||void 0!==t)&&!at(t))return d(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!at(e))return e}),o[1]=e,G.apply(null,o)}})}B[q][L]||E(B[q],L,B[q].valueOf),T(B,J),A[M]=!0},a640:function(t,e,r){"use strict";var n=r("d039");t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){throw 1},1)}))}},b64b:function(t,e,r){var n=r("23e7"),o=r("7b0b"),i=r("df75"),c=r("d039"),a=c((function(){i(1)}));n({target:"Object",stat:!0,forced:a},{keys:function(t){return i(o(t))}})},b727:function(t,e,r){var n=r("0366"),o=r("44ad"),i=r("7b0b"),c=r("50c4"),a=r("65f0"),f=[].push,s=function(t){var e=1==t,r=2==t,s=3==t,u=4==t,l=6==t,d=7==t,p=5==t||l;return function(b,h,y,g){for(var m,v,w=i(b),O=o(w),S=n(h,y,3),j=c(O.length),x=0,I=g||a,D=e?I(b,j):r||d?I(b,0):void 0;j>x;x++)if((p||x in O)&&(m=O[x],v=S(m,x,w),t))if(e)D[x]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return x;case 2:f.call(D,m)}else switch(t){case 4:return!1;case 7:f.call(D,m)}return l?-1:s||u?u:D}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterOut:s(7)}},db2e:function(t,e,r){},db40:function(t,e,r){"use strict";var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticStyle:{padding:"8px"},attrs:{slot:"filterDropdown"},slot:"filterDropdown"},[r("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+t.column.dataIndex,value:t.selectedKeys[0]},on:{change:function(e){return t.setSelectedKeys(e.target.value?[e.target.value]:[])},pressEnter:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}}),r("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}},[t._v(" Search ")]),r("a-button",{staticStyle:{width:"90px"},attrs:{size:"small"},on:{click:function(){t.clearFilters(),delete t.filters[t.column.dataIndex],t.fetch()}}},[t._v(" Reset ")])],1)},o=[],i={name:"FilterDropdown",props:["setSelectedKeys","selectedKeys","clearFilters","column","filters","fetch"]},c=i,a=r("2877"),f=Object(a["a"])(c,n,o,!1,null,"5e6f101e",null);e["a"]=f.exports},dbb4:function(t,e,r){var n=r("23e7"),o=r("83ab"),i=r("56ef"),c=r("fc6a"),a=r("06cf"),f=r("8418");n({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){var e,r,n=c(t),o=a.f,s=i(n),u={},l=0;while(s.length>l)r=o(n,e=s[l++]),void 0!==r&&f(u,e,r);return u}})},e439:function(t,e,r){var n=r("23e7"),o=r("d039"),i=r("fc6a"),c=r("06cf").f,a=r("83ab"),f=o((function(){c(1)})),s=!a||f;n({target:"Object",stat:!0,forced:s,sham:!a},{getOwnPropertyDescriptor:function(t,e){return c(i(t),e)}})},e5383:function(t,e,r){var n=r("b622");e.f=n},e5bf:function(t,e,r){"use strict";r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return i})),r.d(e,"d",(function(){return c})),r.d(e,"e",(function(){return a})),r.d(e,"b",(function(){return f}));var n=r("365c");function o(t){return Object(n["a"])({url:"/record/http",params:t,method:"get"})}function i(t){return Object(n["a"])({url:"/record/dns",params:t,method:"get"})}function c(t){return Object(n["a"])({url:"/record/mysql",params:t,method:"get"})}function a(t){return Object(n["a"])({url:"/record/rmi",params:t,method:"get"})}function f(t){return Object(n["a"])({url:"/record/ftp",params:t,method:"get"})}},e8b5:function(t,e,r){var n=r("c6b6");t.exports=Array.isArray||function(t){return"Array"==n(t)}}}]);
\ No newline at end of file
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-e039e75a"],{"057f":function(t,e,r){var n=r("fc6a"),o=r("241c").f,i={}.toString,c="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return o(t)}catch(e){return c.slice()}};t.exports.f=function(t){return c&&"[object Window]"==i.call(t)?a(t):o(n(t))}},"159b":function(t,e,r){var n=r("da84"),o=r("fdbc"),i=r("17c2"),c=r("9112");for(var a in o){var f=n[a],s=f&&f.prototype;if(s&&s.forEach!==i)try{c(s,"forEach",i)}catch(u){s.forEach=i}}},"17c2":function(t,e,r){"use strict";var n=r("b727").forEach,o=r("a640"),i=o("forEach");t.exports=i?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},"1dde":function(t,e,r){var n=r("d039"),o=r("b622"),i=r("2d00"),c=o("species");t.exports=function(t){return i>=51||!n((function(){var e=[],r=e.constructor={};return r[c]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},"333e":function(t,e,r){"use strict";r("db2e")},"4de4":function(t,e,r){"use strict";var n=r("23e7"),o=r("b727").filter,i=r("1dde"),c=i("filter");n({target:"Array",proto:!0,forced:!c},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},5530:function(t,e,r){"use strict";r.d(e,"a",(function(){return i}));r("b64b"),r("a4d3"),r("4de4"),r("e439"),r("159b"),r("dbb4");function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t){for(var e=1;ei)o.push(arguments[i++]);if(n=e,(p(e)||void 0!==t)&&!at(t))return d(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!at(e))return e}),o[1]=e,G.apply(null,o)}})}B[L][q]||k(B[L],q,B[L].valueOf),T(B,J),A[M]=!0},a640:function(t,e,r){"use strict";var n=r("d039");t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){throw 1},1)}))}},b64b:function(t,e,r){var n=r("23e7"),o=r("7b0b"),i=r("df75"),c=r("d039"),a=c((function(){i(1)}));n({target:"Object",stat:!0,forced:a},{keys:function(t){return i(o(t))}})},b727:function(t,e,r){var n=r("0366"),o=r("44ad"),i=r("7b0b"),c=r("50c4"),a=r("65f0"),f=[].push,s=function(t){var e=1==t,r=2==t,s=3==t,u=4==t,l=6==t,d=7==t,p=5==t||l;return function(b,h,y,g){for(var m,v,w=i(b),O=o(w),S=n(h,y,3),j=c(O.length),x=0,I=g||a,D=e?I(b,j):r||d?I(b,0):void 0;j>x;x++)if((p||x in O)&&(m=O[x],v=S(m,x,w),t))if(e)D[x]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return x;case 2:f.call(D,m)}else switch(t){case 4:return!1;case 7:f.call(D,m)}return l?-1:s||u?u:D}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterOut:s(7)}},db2e:function(t,e,r){},db40:function(t,e,r){"use strict";var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticStyle:{padding:"8px"},attrs:{slot:"filterDropdown"},slot:"filterDropdown"},[r("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+t.column.dataIndex,value:t.selectedKeys[0]},on:{change:function(e){return t.setSelectedKeys(e.target.value?[e.target.value]:[])},pressEnter:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}}),r("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}},[t._v(" Search ")]),r("a-button",{staticStyle:{width:"90px"},attrs:{size:"small"},on:{click:function(){t.clearFilters(),delete t.filters[t.column.dataIndex],t.fetch()}}},[t._v(" Reset ")])],1)},o=[],i={name:"FilterDropdown",props:["setSelectedKeys","selectedKeys","clearFilters","column","filters","fetch"]},c=i,a=r("2877"),f=Object(a["a"])(c,n,o,!1,null,"5e6f101e",null);e["a"]=f.exports},dbb4:function(t,e,r){var n=r("23e7"),o=r("83ab"),i=r("56ef"),c=r("fc6a"),a=r("06cf"),f=r("8418");n({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){var e,r,n=c(t),o=a.f,s=i(n),u={},l=0;while(s.length>l)r=o(n,e=s[l++]),void 0!==r&&f(u,e,r);return u}})},e439:function(t,e,r){var n=r("23e7"),o=r("d039"),i=r("fc6a"),c=r("06cf").f,a=r("83ab"),f=o((function(){c(1)})),s=!a||f;n({target:"Object",stat:!0,forced:s,sham:!a},{getOwnPropertyDescriptor:function(t,e){return c(i(t),e)}})},e5383:function(t,e,r){var n=r("b622");e.f=n},e5bf:function(t,e,r){"use strict";r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return i})),r.d(e,"d",(function(){return c})),r.d(e,"e",(function(){return a})),r.d(e,"b",(function(){return f}));var n=r("365c");function o(t){return Object(n["a"])({url:"/record/http",params:t,method:"get"})}function i(t){return Object(n["a"])({url:"/record/dns",params:t,method:"get"})}function c(t){return Object(n["a"])({url:"/record/mysql",params:t,method:"get"})}function a(t){return Object(n["a"])({url:"/record/rmi",params:t,method:"get"})}function f(t){return Object(n["a"])({url:"/record/ftp",params:t,method:"get"})}},e8b5:function(t,e,r){var n=r("c6b6");t.exports=Array.isArray||function(t){return"Array"==n(t)}}}]);
\ No newline at end of file
diff --git a/frontend/dist/js/chunk-fef965c2.js b/frontend/dist/js/chunk-fef965c2.js
index 0d427c7..eb2bec6 100644
--- a/frontend/dist/js/chunk-fef965c2.js
+++ b/frontend/dist/js/chunk-fef965c2.js
@@ -1 +1 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-fef965c2"],{"057f":function(t,e,r){var n=r("fc6a"),o=r("241c").f,a={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(t){try{return o(t)}catch(e){return i.slice()}};t.exports.f=function(t){return i&&"[object Window]"==a.call(t)?c(t):o(n(t))}},"159b":function(t,e,r){var n=r("da84"),o=r("fdbc"),a=r("17c2"),i=r("9112");for(var c in o){var f=n[c],s=f&&f.prototype;if(s&&s.forEach!==a)try{i(s,"forEach",a)}catch(l){s.forEach=a}}},"17c2":function(t,e,r){"use strict";var n=r("b727").forEach,o=r("a640"),a=o("forEach");t.exports=a?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},"1dde":function(t,e,r){var n=r("d039"),o=r("b622"),a=r("2d00"),i=o("species");t.exports=function(t){return a>=51||!n((function(){var e=[],r=e.constructor={};return r[i]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},"2e9f":function(t,e,r){"use strict";r.r(e);var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("a-table",{attrs:{columns:t.columns,"data-source":t.data,loading:t.loading,pagination:t.pagination,rowClassName:function(t,e){return e%2===0?"":"gray-table-row"}},on:{change:t.handleTableChange},scopedSlots:t._u([{key:"expandedRowRender",fn:function(e){return e.files.length?r("div",{staticStyle:{margin:"0"}},[e.files.length?r("b",{staticStyle:{color:"gray"}},[t._v("FILES:")]):t._e(),r("br"),t._l(e.files,(function(n){return r("a",{key:n.name+e.id,attrs:{href:"/revsuit/api/file/mysql/"+n.id,target:"_blank"}},[t._v(t._s(n.name)+" ")])}))],2):t._e()}},{key:"selectDropdown",fn:function(e){e.setSelectedKeys,e.selectedKeys,e.clearFilters;var n=e.column;return r("div",{staticStyle:{padding:"8px"}},[r("a-checkbox",{attrs:{checked:"true"===t.filters[n.dataIndex]},on:{change:function(e){e.target.checked?t.filters[n.dataIndex]="true":t.filters[n.dataIndex]="",t.fetch()}}},[t._v(" True ")]),r("br"),r("a-checkbox",{attrs:{checked:"false"===t.filters[n.dataIndex]},on:{change:function(e){e.target.checked?t.filters[n.dataIndex]="false":t.filters[n.dataIndex]="",t.fetch()}}},[t._v(" False ")])],1)}},{key:"filterDropdown",fn:function(e){var n=e.setSelectedKeys,o=e.selectedKeys,a=e.clearFilters,i=e.column;return r("filter-dropdown",{attrs:{"set-selected-keys":n,"selected-keys":o,"clear-filters":a,column:i,filters:t.filters,fetch:t.fetch}})}},{key:"filterIcon",fn:function(t){return r("a-icon",{style:{color:t?"#108ee9":void 0},attrs:{type:"search"}})}},{key:"time",fn:function(e){return r("span",{},[t._v(" "+t._s(new Date(e).format("yyyy-MM-dd hh:mm:ss"))+" ")])}},{key:"loadData",fn:function(e){return r("span",{},[e?r("a-tag",{attrs:{color:"#eb2f96"}},[t._v("TRUE")]):r("a-tag",{attrs:{color:"#f5222d"}},[t._v("FALSE")])],1)}},{key:"fileNum",fn:function(e){return r("span",{},[e.length>=3?r("a-tag",{attrs:{color:"#722ed1"}},[t._v(t._s(e.length))]):r("a-tag",{attrs:{color:t.colors[e.length]}},[t._v(" "+t._s(e.length)+" ")])],1)}}],null,!0)})},o=[],a=r("5530"),i=r("e5bf"),c=r("56d7"),f=r("db40"),s=["#13c2c2","#52c41a","#02a7ff"],l=[{title:"ID",dataIndex:"id",key:"id",sorter:!0,sortDirections:["descend","ascend"]},{title:"REQUEST TIME",dataIndex:"request_time",key:"request_time",scopedSlots:{customRender:"time"}},{title:"RULE",dataIndex:"rule_name",key:"rule_name",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"FLAG",dataIndex:"flag",key:"flag",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"USER",dataIndex:"username",key:"username",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"LOAD DATA",dataIndex:"load_local_data",key:"load_local_data",scopedSlots:{filterDropdown:"selectDropdown",filterIcon:"filterIcon",customRender:"loadData"}},{title:"FILE NUM",dataIndex:"files",key:"files",scopedSlots:{customRender:"fileNum"}},{title:"CLIENT NAME",dataIndex:"client_name",key:"client_name",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"CLIENT OS",dataIndex:"client_os",key:"client_os",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"REMOTE IP",key:"remote_ip",dataIndex:"remote_ip",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"IP AREA",key:"ip_area",dataIndex:"ip_area"}],u={name:"MysqlLogs",data:function(){return{store:c["store"],data:[],pagination:{current:1,showSizeChanger:!0,pageSize:c["store"].pageSize,onShowSizeChange:function(t,e){c["store"].pageSize=e}},filters:{},order:"desc",loading:!1,columns:l,colors:s}},methods:{handleTableChange:function(t,e,r){var n=Object(a["a"])({},this.pagination);n.current=t.current,this.pagination=n,this.order="ascend"===r.order?"asc":"desc",this.fetch()},fetch:function(){var t=this,e=Object(a["a"])(Object(a["a"])({},this.filters),{},{page:this.pagination.current,pageSize:this.pagination.pageSize,order:this.order});this.loading=!0,Object(i["d"])(e).then((function(e){var r=e.data.result;t.data=r.data;var n=Object(a["a"])({},t.pagination);n.total=r.count,t.pagination=n,t.loading=!1})).catch((function(t){if(403===t.response.status)return c["store"].authed=!1,[];console.error(t)}))}},mounted:function(){this.fetch()},components:{FilterDropdown:f["a"]}},d=u,p=(r("6aae"),r("2877")),h=Object(p["a"])(d,n,o,!1,null,null,null);e["default"]=h.exports},"4de4":function(t,e,r){"use strict";var n=r("23e7"),o=r("b727").filter,a=r("1dde"),i=a("filter");n({target:"Array",proto:!0,forced:!i},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},"50ec":function(t,e,r){},5530:function(t,e,r){"use strict";r.d(e,"a",(function(){return a}));r("b64b"),r("a4d3"),r("4de4"),r("e439"),r("159b"),r("dbb4");function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function a(t){for(var e=1;ea)o.push(arguments[a++]);if(n=e,(p(e)||void 0!==t)&&!ct(t))return d(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!ct(e))return e}),o[1]=e,G.apply(null,o)}})}B[q][U]||k(B[q],U,B[q].valueOf),K(B,M),A[C]=!0},a640:function(t,e,r){"use strict";var n=r("d039");t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){throw 1},1)}))}},b64b:function(t,e,r){var n=r("23e7"),o=r("7b0b"),a=r("df75"),i=r("d039"),c=i((function(){a(1)}));n({target:"Object",stat:!0,forced:c},{keys:function(t){return a(o(t))}})},b727:function(t,e,r){var n=r("0366"),o=r("44ad"),a=r("7b0b"),i=r("50c4"),c=r("65f0"),f=[].push,s=function(t){var e=1==t,r=2==t,s=3==t,l=4==t,u=6==t,d=7==t,p=5==t||u;return function(h,b,y,g){for(var m,v,w=a(h),O=o(w),S=n(b,y,3),I=i(O.length),x=0,_=g||c,j=e?_(h,I):r||d?_(h,0):void 0;I>x;x++)if((p||x in O)&&(m=O[x],v=S(m,x,w),t))if(e)j[x]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return x;case 2:f.call(j,m)}else switch(t){case 4:return!1;case 7:f.call(j,m)}return u?-1:s||l?l:j}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterOut:s(7)}},db40:function(t,e,r){"use strict";var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticStyle:{padding:"8px"},attrs:{slot:"filterDropdown"},slot:"filterDropdown"},[r("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+t.column.dataIndex,value:t.selectedKeys[0]},on:{change:function(e){return t.setSelectedKeys(e.target.value?[e.target.value]:[])},pressEnter:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}}),r("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}},[t._v(" Search ")]),r("a-button",{staticStyle:{width:"90px"},attrs:{size:"small"},on:{click:function(){t.clearFilters(),delete t.filters[t.column.dataIndex],t.fetch()}}},[t._v(" Reset ")])],1)},o=[],a={name:"FilterDropdown",props:["setSelectedKeys","selectedKeys","clearFilters","column","filters","fetch"]},i=a,c=r("2877"),f=Object(c["a"])(i,n,o,!1,null,"5e6f101e",null);e["a"]=f.exports},dbb4:function(t,e,r){var n=r("23e7"),o=r("83ab"),a=r("56ef"),i=r("fc6a"),c=r("06cf"),f=r("8418");n({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){var e,r,n=i(t),o=c.f,s=a(n),l={},u=0;while(s.length>u)r=o(n,e=s[u++]),void 0!==r&&f(l,e,r);return l}})},e439:function(t,e,r){var n=r("23e7"),o=r("d039"),a=r("fc6a"),i=r("06cf").f,c=r("83ab"),f=o((function(){i(1)})),s=!c||f;n({target:"Object",stat:!0,forced:s,sham:!c},{getOwnPropertyDescriptor:function(t,e){return i(a(t),e)}})},e5383:function(t,e,r){var n=r("b622");e.f=n},e5bf:function(t,e,r){"use strict";r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return a})),r.d(e,"d",(function(){return i})),r.d(e,"e",(function(){return c})),r.d(e,"b",(function(){return f}));var n=r("365c");function o(t){return Object(n["a"])({url:"/record/http",params:t,method:"get"})}function a(t){return Object(n["a"])({url:"/record/dns",params:t,method:"get"})}function i(t){return Object(n["a"])({url:"/record/mysql",params:t,method:"get"})}function c(t){return Object(n["a"])({url:"/record/rmi",params:t,method:"get"})}function f(t){return Object(n["a"])({url:"/record/ftp",params:t,method:"get"})}},e8b5:function(t,e,r){var n=r("c6b6");t.exports=Array.isArray||function(t){return"Array"==n(t)}}}]);
\ No newline at end of file
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-fef965c2"],{"057f":function(t,e,r){var n=r("fc6a"),o=r("241c").f,a={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(t){try{return o(t)}catch(e){return i.slice()}};t.exports.f=function(t){return i&&"[object Window]"==a.call(t)?c(t):o(n(t))}},"159b":function(t,e,r){var n=r("da84"),o=r("fdbc"),a=r("17c2"),i=r("9112");for(var c in o){var f=n[c],s=f&&f.prototype;if(s&&s.forEach!==a)try{i(s,"forEach",a)}catch(l){s.forEach=a}}},"17c2":function(t,e,r){"use strict";var n=r("b727").forEach,o=r("a640"),a=o("forEach");t.exports=a?[].forEach:function(t){return n(this,t,arguments.length>1?arguments[1]:void 0)}},"1dde":function(t,e,r){var n=r("d039"),o=r("b622"),a=r("2d00"),i=o("species");t.exports=function(t){return a>=51||!n((function(){var e=[],r=e.constructor={};return r[i]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},"2e9f":function(t,e,r){"use strict";r.r(e);var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("a-table",{attrs:{columns:t.columns,"data-source":t.data,loading:t.loading,pagination:t.pagination,rowClassName:function(t,e){return e%2===0?"":"gray-table-row"}},on:{change:t.handleTableChange},scopedSlots:t._u([{key:"expandedRowRender",fn:function(e){return e.files.length?r("div",{staticStyle:{margin:"0"}},[e.files.length?r("b",{staticStyle:{color:"gray"}},[t._v("FILES:")]):t._e(),r("br"),t._l(e.files,(function(n){return r("a",{key:n.name+e.id,attrs:{href:"/revsuit/api/file/mysql/"+n.id,target:"_blank"}},[t._v(t._s(n.name)+" ")])}))],2):t._e()}},{key:"selectDropdown",fn:function(e){e.setSelectedKeys,e.selectedKeys,e.clearFilters;var n=e.column;return r("div",{staticStyle:{padding:"8px"}},[r("a-checkbox",{attrs:{checked:"true"===t.filters[n.dataIndex]},on:{change:function(e){e.target.checked?t.filters[n.dataIndex]="true":t.filters[n.dataIndex]="",t.fetch()}}},[t._v(" True ")]),r("br"),r("a-checkbox",{attrs:{checked:"false"===t.filters[n.dataIndex]},on:{change:function(e){e.target.checked?t.filters[n.dataIndex]="false":t.filters[n.dataIndex]="",t.fetch()}}},[t._v(" False ")])],1)}},{key:"filterDropdown",fn:function(e){var n=e.setSelectedKeys,o=e.selectedKeys,a=e.clearFilters,i=e.column;return r("filter-dropdown",{attrs:{"set-selected-keys":n,"selected-keys":o,"clear-filters":a,column:i,filters:t.filters,fetch:t.fetch}})}},{key:"filterIcon",fn:function(t){return r("a-icon",{style:{color:t?"#108ee9":void 0},attrs:{type:"search"}})}},{key:"time",fn:function(e){return r("span",{},[t._v(" "+t._s(new Date(e).format("yyyy-MM-dd hh:mm:ss"))+" ")])}},{key:"loadData",fn:function(e){return r("span",{},[e?r("a-tag",{attrs:{color:"#eb2f96"}},[t._v("TRUE")]):r("a-tag",{attrs:{color:"#f5222d"}},[t._v("FALSE")])],1)}},{key:"fileNum",fn:function(e){return r("span",{},[e.length>=3?r("a-tag",{attrs:{color:"#722ed1"}},[t._v(t._s(e.length))]):r("a-tag",{attrs:{color:t.colors[e.length]}},[t._v(" "+t._s(e.length)+" ")])],1)}}],null,!0)})},o=[],a=r("5530"),i=r("e5bf"),c=r("56d7"),f=r("db40"),s=["#13c2c2","#52c41a","#02a7ff"],l=[{title:"ID",dataIndex:"id",key:"id",sorter:!0,sortDirections:["descend","ascend"]},{title:"REQUEST TIME",dataIndex:"request_time",key:"request_time",scopedSlots:{customRender:"time"}},{title:"RULE",dataIndex:"rule_name",key:"rule_name",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"FLAG",dataIndex:"flag",key:"flag",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"USER",dataIndex:"username",key:"username",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"LOAD DATA",dataIndex:"load_local_data",key:"load_local_data",scopedSlots:{filterDropdown:"selectDropdown",filterIcon:"filterIcon",customRender:"loadData"}},{title:"FILE NUM",dataIndex:"files",key:"files",scopedSlots:{customRender:"fileNum"}},{title:"CLIENT NAME",dataIndex:"client_name",key:"client_name",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"CLIENT OS",dataIndex:"client_os",key:"client_os",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"REMOTE IP",key:"remote_ip",dataIndex:"remote_ip",scopedSlots:{filterDropdown:"filterDropdown",filterIcon:"filterIcon"}},{title:"IP AREA",key:"ip_area",dataIndex:"ip_area"}],u={name:"MysqlLogs",data:function(){return{store:c["store"],data:[],pagination:{current:1,showSizeChanger:!0,pageSize:c["store"].pageSize,onShowSizeChange:function(t,e){c["store"].pageSize=e}},filters:{},order:"desc",loading:!1,columns:l,colors:s}},methods:{handleTableChange:function(t,e,r){var n=Object(a["a"])({},this.pagination);n.current=t.current,this.pagination=n,this.order="ascend"===r.order?"asc":"desc",this.fetch()},fetch:function(){var t=this,e=Object(a["a"])(Object(a["a"])({},this.filters),{},{page:this.pagination.current,pageSize:this.pagination.pageSize,order:this.order});this.loading=!0,Object(i["d"])(e).then((function(e){var r=e.data.result;t.data=r.data;var n=Object(a["a"])({},t.pagination);n.total=r.count,t.pagination=n,t.loading=!1})).catch((function(e){t.$notification.error({message:"Unknown error: "+e.response.status,style:{width:"100px",marginLeft:"".concat(-265,"px")},duration:4})}))}},mounted:function(){this.fetch()},components:{FilterDropdown:f["a"]}},d=u,p=(r("6aae"),r("2877")),h=Object(p["a"])(d,n,o,!1,null,null,null);e["default"]=h.exports},"4de4":function(t,e,r){"use strict";var n=r("23e7"),o=r("b727").filter,a=r("1dde"),i=a("filter");n({target:"Array",proto:!0,forced:!i},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},"50ec":function(t,e,r){},5530:function(t,e,r){"use strict";r.d(e,"a",(function(){return a}));r("b64b"),r("a4d3"),r("4de4"),r("e439"),r("159b"),r("dbb4");function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function a(t){for(var e=1;ea)o.push(arguments[a++]);if(n=e,(p(e)||void 0!==t)&&!ct(t))return d(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!ct(e))return e}),o[1]=e,G.apply(null,o)}})}B[U][q]||j(B[U],q,B[U].valueOf),K(B,M),A[C]=!0},a640:function(t,e,r){"use strict";var n=r("d039");t.exports=function(t,e){var r=[][t];return!!r&&n((function(){r.call(null,e||function(){throw 1},1)}))}},b64b:function(t,e,r){var n=r("23e7"),o=r("7b0b"),a=r("df75"),i=r("d039"),c=i((function(){a(1)}));n({target:"Object",stat:!0,forced:c},{keys:function(t){return a(o(t))}})},b727:function(t,e,r){var n=r("0366"),o=r("44ad"),a=r("7b0b"),i=r("50c4"),c=r("65f0"),f=[].push,s=function(t){var e=1==t,r=2==t,s=3==t,l=4==t,u=6==t,d=7==t,p=5==t||u;return function(h,b,y,g){for(var m,v,w=a(h),O=o(w),S=n(b,y,3),I=i(O.length),x=0,_=g||c,k=e?_(h,I):r||d?_(h,0):void 0;I>x;x++)if((p||x in O)&&(m=O[x],v=S(m,x,w),t))if(e)k[x]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return x;case 2:f.call(k,m)}else switch(t){case 4:return!1;case 7:f.call(k,m)}return u?-1:s||l?l:k}};t.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterOut:s(7)}},db40:function(t,e,r){"use strict";var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticStyle:{padding:"8px"},attrs:{slot:"filterDropdown"},slot:"filterDropdown"},[r("a-input",{staticStyle:{width:"188px","margin-bottom":"8px",display:"block"},attrs:{placeholder:"Search "+t.column.dataIndex,value:t.selectedKeys[0]},on:{change:function(e){return t.setSelectedKeys(e.target.value?[e.target.value]:[])},pressEnter:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}}),r("a-button",{staticStyle:{width:"90px","margin-right":"8px"},attrs:{type:"primary",icon:"search",size:"small"},on:{click:function(){t.filters[t.column.dataIndex]=t.selectedKeys[0],t.fetch()}}},[t._v(" Search ")]),r("a-button",{staticStyle:{width:"90px"},attrs:{size:"small"},on:{click:function(){t.clearFilters(),delete t.filters[t.column.dataIndex],t.fetch()}}},[t._v(" Reset ")])],1)},o=[],a={name:"FilterDropdown",props:["setSelectedKeys","selectedKeys","clearFilters","column","filters","fetch"]},i=a,c=r("2877"),f=Object(c["a"])(i,n,o,!1,null,"5e6f101e",null);e["a"]=f.exports},dbb4:function(t,e,r){var n=r("23e7"),o=r("83ab"),a=r("56ef"),i=r("fc6a"),c=r("06cf"),f=r("8418");n({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){var e,r,n=i(t),o=c.f,s=a(n),l={},u=0;while(s.length>u)r=o(n,e=s[u++]),void 0!==r&&f(l,e,r);return l}})},e439:function(t,e,r){var n=r("23e7"),o=r("d039"),a=r("fc6a"),i=r("06cf").f,c=r("83ab"),f=o((function(){i(1)})),s=!c||f;n({target:"Object",stat:!0,forced:s,sham:!c},{getOwnPropertyDescriptor:function(t,e){return i(a(t),e)}})},e5383:function(t,e,r){var n=r("b622");e.f=n},e5bf:function(t,e,r){"use strict";r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return a})),r.d(e,"d",(function(){return i})),r.d(e,"e",(function(){return c})),r.d(e,"b",(function(){return f}));var n=r("365c");function o(t){return Object(n["a"])({url:"/record/http",params:t,method:"get"})}function a(t){return Object(n["a"])({url:"/record/dns",params:t,method:"get"})}function i(t){return Object(n["a"])({url:"/record/mysql",params:t,method:"get"})}function c(t){return Object(n["a"])({url:"/record/rmi",params:t,method:"get"})}function f(t){return Object(n["a"])({url:"/record/ftp",params:t,method:"get"})}},e8b5:function(t,e,r){var n=r("c6b6");t.exports=Array.isArray||function(t){return"Array"==n(t)}}}]);
\ No newline at end of file
diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index 24e4516..dbc86b5 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -179,7 +179,6 @@ export default {
} else {
this.timing()
}
- localStorage.setItem('autoRefresh', val)
},
refreshInterval(val) {
clearInterval(this.timer)
@@ -193,8 +192,11 @@ export default {
store.pageSize = val
localStorage.setItem('pageSize', val)
},
- 'store.authed'() {
- this.$refs.content.fetch()
+ 'store.authed'(val) {
+ if (val) {
+ this.$refs.content.fetch()
+ this.GetVersion()
+ }
},
'store.pageSize'() {
this.$refs.content.pagination.pageSize = store.pageSize
diff --git a/frontend/src/api/auth.js b/frontend/src/api/auth.js
index 0263476..a9ecf5a 100644
--- a/frontend/src/api/auth.js
+++ b/frontend/src/api/auth.js
@@ -5,9 +5,6 @@ export function auth(token) {
url: '/auth',
method: 'get',
headers: {"Token": token},
- validateStatus: function (status) {
- return status >= 200 && status < 300
- }
})
}
@@ -15,8 +12,5 @@ export function getVersion() {
return request({
url: '/version',
method: 'get',
- validateStatus: function (status) {
- return status >= 200 && status < 300
- }
})
}
\ No newline at end of file
diff --git a/frontend/src/api/index.js b/frontend/src/api/index.js
index ead5342..b287415 100644
--- a/frontend/src/api/index.js
+++ b/frontend/src/api/index.js
@@ -1,9 +1,13 @@
import axios from 'axios'
+import {store} from "@/main";
const service = axios.create({
baseURL: '/revsuit/api/', // api的base_url
timeout: 5000, // request timeout
validateStatus: function (status) {
+ if (status === 403) {
+ store.authed = false
+ }
return status >= 200 && status < 300 // 默认的
}
})
diff --git a/frontend/src/api/settings.js b/frontend/src/api/settings.js
index bfef1fb..74a52eb 100644
--- a/frontend/src/api/settings.js
+++ b/frontend/src/api/settings.js
@@ -1,14 +1,14 @@
import request from './index'
-export function getHttpConfig() {
+export function getPlatformConfig() {
return request({
- url: '/setting/getHttpConfig',
+ url: '/setting/getPlatformConfig',
})
}
-export function updateHttpConfig(data) {
+export function updatePlatformConfig(data) {
return request({
- url: '/setting/updateHttpConfig',
+ url: '/setting/updatePlatformConfig',
method: "post",
data: data
})
diff --git a/frontend/src/components/BasicRule.vue b/frontend/src/components/BasicRule.vue
index 460afa6..0803a63 100644
--- a/frontend/src/components/BasicRule.vue
+++ b/frontend/src/components/BasicRule.vue
@@ -28,7 +28,7 @@
diff --git a/frontend/src/views/logs/Dns.vue b/frontend/src/views/logs/Dns.vue
index b4224c0..1845db4 100644
--- a/frontend/src/views/logs/Dns.vue
+++ b/frontend/src/views/logs/Dns.vue
@@ -139,12 +139,14 @@ export default {
this.pagination = pagination;
this.loading = false
}).catch(e => {
- if (e.response.status === 403) {
- store.authed = false
- return []
- } else {
- console.error(e)
- }
+ this.$notification.error({
+ message: 'Unknown error: ' + e.response.status,
+ style: {
+ width: '100px',
+ marginLeft: `${335 - 600}px`,
+ },
+ duration: 4
+ });
})
},
},
diff --git a/frontend/src/views/logs/Ftp.vue b/frontend/src/views/logs/Ftp.vue
index 9a1f1d8..fb5c388 100644
--- a/frontend/src/views/logs/Ftp.vue
+++ b/frontend/src/views/logs/Ftp.vue
@@ -228,12 +228,14 @@ export default {
this.pagination = pagination;
this.loading = false
}).catch(e => {
- if (e.response.status === 403) {
- store.authed = false
- return []
- } else {
- console.error(e)
- }
+ this.$notification.error({
+ message: 'Unknown error: ' + e.response.status,
+ style: {
+ width: '100px',
+ marginLeft: `${335 - 600}px`,
+ },
+ duration: 4
+ });
})
},
},
diff --git a/frontend/src/views/logs/Http.vue b/frontend/src/views/logs/Http.vue
index 9d3e1cf..bc1af9f 100644
--- a/frontend/src/views/logs/Http.vue
+++ b/frontend/src/views/logs/Http.vue
@@ -173,12 +173,14 @@ export default {
this.pagination = pagination;
this.loading = false
}).catch(e => {
- if (e.response.status === 403) {
- store.authed = false
- return []
- } else {
- console.error(e)
- }
+ this.$notification.error({
+ message: 'Unknown error: ' + e.response.status,
+ style: {
+ width: '100px',
+ marginLeft: `${335 - 600}px`,
+ },
+ duration: 4
+ });
})
},
},
diff --git a/frontend/src/views/logs/Mysql.vue b/frontend/src/views/logs/Mysql.vue
index 19bd762..cb20310 100644
--- a/frontend/src/views/logs/Mysql.vue
+++ b/frontend/src/views/logs/Mysql.vue
@@ -216,12 +216,14 @@ export default {
this.pagination = pagination;
this.loading = false
}).catch(e => {
- if (e.response.status === 403) {
- store.authed = false
- return []
- } else {
- console.error(e)
- }
+ this.$notification.error({
+ message: 'Unknown error: ' + e.response.status,
+ style: {
+ width: '100px',
+ marginLeft: `${335 - 600}px`,
+ },
+ duration: 4
+ });
})
},
},
diff --git a/frontend/src/views/logs/Rmi.vue b/frontend/src/views/logs/Rmi.vue
index 201e264..3c429f2 100644
--- a/frontend/src/views/logs/Rmi.vue
+++ b/frontend/src/views/logs/Rmi.vue
@@ -140,12 +140,14 @@ export default {
this.pagination = pagination;
this.loading = false
}).catch(e => {
- if (e.response.status === 403) {
- store.authed = false
- return []
- } else {
- console.error(e)
- }
+ this.$notification.error({
+ message: 'Unknown error: ' + e.response.status,
+ style: {
+ width: '100px',
+ marginLeft: `${335 - 600}px`,
+ },
+ duration: 4
+ });
})
},
},
diff --git a/frontend/src/views/rules/Dns.vue b/frontend/src/views/rules/Dns.vue
index 69cae65..76622ee 100644
--- a/frontend/src/views/rules/Dns.vue
+++ b/frontend/src/views/rules/Dns.vue
@@ -332,11 +332,7 @@ export default {
this.pagination = pagination;
this.loading = false
}).catch(e => {
- if (e.response.status === 403) {
- store.authed = false
- return []
- } else {
- this.$notification.error({
+ this.$notification.error({
message: 'Unknown error: ' + e.response.status,
style: {
width: '100px',
@@ -344,7 +340,6 @@ export default {
},
duration: 4
});
- }
})
},
clickSwitch(record, prop) {
diff --git a/frontend/src/views/rules/Ftp.vue b/frontend/src/views/rules/Ftp.vue
index 98b0d94..851563c 100644
--- a/frontend/src/views/rules/Ftp.vue
+++ b/frontend/src/views/rules/Ftp.vue
@@ -28,7 +28,7 @@
@@ -267,11 +267,7 @@ export default {
this.pagination = pagination;
this.loading = false
}).catch(e => {
- if (e.response.status === 403) {
- store.authed = false
- return []
- } else {
- this.$notification.error({
+ this.$notification.error({
message: 'Unknown error: ' + e.response.status,
style: {
width: '100px',
@@ -279,7 +275,6 @@ export default {
},
duration: 4
});
- }
})
},
clickSwitch(record, prop) {
diff --git a/frontend/src/views/rules/Http.vue b/frontend/src/views/rules/Http.vue
index 47c3c81..6f1b576 100644
--- a/frontend/src/views/rules/Http.vue
+++ b/frontend/src/views/rules/Http.vue
@@ -374,11 +374,7 @@ export default {
this.pagination = pagination;
this.loading = false
}).catch(e => {
- if (e.response.status === 403) {
- store.authed = false
- return []
- } else {
- this.$notification.error({
+ this.$notification.error({
message: 'Unknown error: ' + e.response.status,
style: {
width: '100px',
@@ -386,7 +382,6 @@ export default {
},
duration: 4
});
- }
})
},
clickSwitch(record, prop) {
diff --git a/frontend/src/views/rules/Mysql.vue b/frontend/src/views/rules/Mysql.vue
index 1f14926..7534626 100644
--- a/frontend/src/views/rules/Mysql.vue
+++ b/frontend/src/views/rules/Mysql.vue
@@ -297,11 +297,7 @@ export default {
this.pagination = pagination;
this.loading = false
}).catch(e => {
- if (e.response.status === 403) {
- store.authed = false
- return []
- } else {
- this.$notification.error({
+ this.$notification.error({
message: 'Unknown error: ' + e.response.status,
style: {
width: '100px',
@@ -309,7 +305,6 @@ export default {
},
duration: 4
});
- }
})
},
clickSwitch(record, prop) {
diff --git a/frontend/src/views/rules/Rmi.vue b/frontend/src/views/rules/Rmi.vue
index a0b2f06..cefe3a9 100644
--- a/frontend/src/views/rules/Rmi.vue
+++ b/frontend/src/views/rules/Rmi.vue
@@ -225,11 +225,7 @@ export default {
this.pagination = pagination;
this.loading = false
}).catch(e => {
- if (e.response.status === 403) {
- store.authed = false
- return []
- } else {
- this.$notification.error({
+ this.$notification.error({
message: 'Unknown error: ' + e.response.status,
style: {
width: '100px',
@@ -237,7 +233,6 @@ export default {
},
duration: 4
});
- }
})
},
clickSwitch(record, prop) {
diff --git a/frontend/src/views/settings/Http.vue b/frontend/src/views/settings/Http.vue
index d3136b8..ded4b57 100644
--- a/frontend/src/views/settings/Http.vue
+++ b/frontend/src/views/settings/Http.vue
@@ -20,7 +20,7 @@