Files
EdgeAdmin/web/public/js/components/server/http-access-log-config-box.js

152 lines
4.6 KiB
JavaScript
Raw Normal View History

2020-09-20 11:56:49 +08:00
Vue.component("http-access-log-config-box", {
2020-09-23 18:43:38 +08:00
props: ["v-access-log-config", "v-fields", "v-default-field-codes", "v-access-log-policies", "v-is-location"],
2020-09-20 11:56:49 +08:00
data: function () {
let that = this
// 初始化
setTimeout(function () {
that.changeFields()
that.changePolicy()
}, 100)
let accessLog = {
2020-09-23 18:43:38 +08:00
isPrior: false,
2020-09-20 11:56:49 +08:00
isOn: true,
fields: [],
status1: true,
status2: true,
status3: true,
status4: true,
status5: true,
storageOnly: false,
storagePolicies: [],
firewallOnly: false
2020-09-20 11:56:49 +08:00
}
if (this.vAccessLogConfig != null) {
accessLog = this.vAccessLogConfig
}
this.vFields.forEach(function (v) {
if (that.vAccessLogConfig == null) { // 初始化默认值
v.isChecked = that.vDefaultFieldCodes.$contains(v.code)
} else {
v.isChecked = accessLog.fields.$contains(v.code)
}
})
this.vAccessLogPolicies.forEach(function (v) {
v.isChecked = accessLog.storagePolicies.$contains(v.id)
})
return {
accessLog: accessLog
}
},
methods: {
changeFields: function () {
this.accessLog.fields = this.vFields.filter(function (v) {
return v.isChecked
}).map(function (v) {
return v.code
})
},
changePolicy: function () {
this.accessLog.storagePolicies = this.vAccessLogPolicies.filter(function (v) {
return v.isChecked
}).map(function (v) {
return v.id
})
}
},
template: `<div>
<input type="hidden" name="accessLogJSON" :value="JSON.stringify(accessLog)"/>
<table class="ui table definition selectable">
2020-09-23 18:43:38 +08:00
<prior-checkbox :v-config="accessLog" v-if="vIsLocation"></prior-checkbox>
<tbody v-show="!vIsLocation || accessLog.isPrior">
2020-09-20 11:56:49 +08:00
<tr>
<td class="title">是否开启访问日志存储</td>
<td>
<div class="ui checkbox">
<input type="checkbox" v-model="accessLog.isOn"/>
<label></label>
</div>
<p class="comment">关闭访问日志并不影响统计的运行</p>
</td>
</tr>
</tbody>
2020-09-23 18:43:38 +08:00
<tbody v-show="(!vIsLocation || accessLog.isPrior) && accessLog.isOn">
2020-09-20 11:56:49 +08:00
<tr>
<td>要存储的访问日志字段</td>
<td>
<div class="ui checkbox" v-for="field in vFields" style="width:10em;margin-bottom:0.8em">
<input type="checkbox" v-model="field.isChecked" @change="changeFields"/>
<label>{{field.name}}</label>
</div>
</td>
</tr>
<tr>
<td>要存储的访问日志状态码</td>
<td>
<div class="ui checkbox" style="width:3.5em">
<input type="checkbox" v-model="accessLog.status1"/>
<label>1xx</label>
</div>
<div class="ui checkbox" style="width:3.5em">
<input type="checkbox" v-model="accessLog.status2"/>
<label>2xx</label>
</div>
<div class="ui checkbox" style="width:3.5em">
<input type="checkbox" v-model="accessLog.status3"/>
<label>3xx</label>
</div>
<div class="ui checkbox" style="width:3.5em">
<input type="checkbox" v-model="accessLog.status4"/>
<label>4xx</label>
</div>
<div class="ui checkbox" style="width:3.5em">
<input type="checkbox" v-model="accessLog.status5"/>
<label>5xx</label>
</div>
</td>
</tr>
2020-10-10 11:48:07 +08:00
<tr v-show="vAccessLogPolicies.length > 0">
2020-09-20 11:56:49 +08:00
<td>选择输出的日志策略</td>
<td>
<span class="disabled" v-if="vAccessLogPolicies.length == 0">暂时还没有缓存策略</span>
<div v-if="vAccessLogPolicies.length > 0">
<div class="ui checkbox" v-for="policy in vAccessLogPolicies" style="width:10em;margin-bottom:0.8em">
<input type="checkbox" v-model="policy.isChecked" @change="changePolicy" />
<label>{{policy.name}}</label>
</div>
</div>
</td>
</tr>
2020-10-10 11:48:07 +08:00
<tr v-show="vAccessLogPolicies.length > 0">
2020-09-20 11:56:49 +08:00
<td>是否只输出到日志策略</td>
<td>
<div class="ui checkbox">
<input type="checkbox" v-model="accessLog.storageOnly"/>
<label></label>
</div>
<p class="comment">选中表示只输出日志到日志策略而停止默认的日志存储</p>
</td>
</tr>
</tbody>
</table>
2021-02-25 19:07:58 +08:00
<div v-show="(!vIsLocation || accessLog.isPrior) && accessLog.isOn">
<h4>WAF相关</h4>
<table class="ui table definition selectable">
<tr>
<td class="title">是否只记录WAF相关日志</td>
<td>
<checkbox v-model="accessLog.firewallOnly"></checkbox>
<p class="comment">选中后只记录WAF相关的日志通过此选项可有效减少访问日志数量降低网络带宽和存储压力</p>
</td>
</tr>
</table>
</div>
2020-09-20 11:56:49 +08:00
<div class="margin"></div>
</div>`
})