mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2025-04-19 13:32:24 +00:00
119 lines
6.4 KiB
HTML
119 lines
6.4 KiB
HTML
![]() |
{{define "settings/xray/routing"}}
|
||
|
<a-space direction="vertical" size="middle">
|
||
|
<a-button type="primary" icon="plus" @click="addRule">{{ i18n "pages.xray.rules.add" }}</a-button>
|
||
|
<a-table-sortable :columns="isMobile ? rulesMobileColumns : rulesColumns" bordered :row-key="r => r.key"
|
||
|
:data-source="routingRuleData" :scroll="isMobile ? {} : { x: 1000 }" :pagination="false" :indent-size="0"
|
||
|
v-on:onSort="replaceRule">
|
||
|
<template slot="action" slot-scope="text, rule, index">
|
||
|
<a-table-sort-trigger :item-index="index"></a-table-sort-trigger>
|
||
|
<span class="ant-table-row-index"> [[ index+1 ]] </span>
|
||
|
<a-dropdown :trigger="['click']">
|
||
|
<a-icon @click="e => e.preventDefault()" type="more"
|
||
|
style="font-size: 16px; text-decoration: bold;"></a-icon>
|
||
|
<a-menu slot="overlay" :theme="themeSwitcher.currentTheme">
|
||
|
<a-menu-item v-if="index>0" @click="replaceRule(index,0)">
|
||
|
<a-icon type="vertical-align-top"></a-icon>
|
||
|
{{ i18n "pages.xray.rules.first"}}
|
||
|
</a-menu-item>
|
||
|
<a-menu-item v-if="index>0" @click="replaceRule(index,index-1)">
|
||
|
<a-icon type="arrow-up"></a-icon>
|
||
|
{{ i18n "pages.xray.rules.up"}}
|
||
|
</a-menu-item>
|
||
|
<a-menu-item v-if="index<routingRuleData.length-1" @click="replaceRule(index,index+1)">
|
||
|
<a-icon type="arrow-down"></a-icon>
|
||
|
{{ i18n "pages.xray.rules.down"}}
|
||
|
</a-menu-item>
|
||
|
<a-menu-item v-if="index<routingRuleData.length-1"
|
||
|
@click="replaceRule(index,routingRuleData.length-1)">
|
||
|
<a-icon type="vertical-align-bottom"></a-icon>
|
||
|
{{ i18n "pages.xray.rules.last"}}
|
||
|
</a-menu-item>
|
||
|
<a-menu-item @click="editRule(index)">
|
||
|
<a-icon type="edit"></a-icon>
|
||
|
{{ i18n "edit" }}
|
||
|
</a-menu-item>
|
||
|
<a-menu-item @click="deleteRule(index)">
|
||
|
<span style="color: #FF4D4F">
|
||
|
<a-icon type="delete"></a-icon> {{ i18n "delete"}}
|
||
|
</span>
|
||
|
</a-menu-item>
|
||
|
</a-menu>
|
||
|
</a-dropdown>
|
||
|
</template>
|
||
|
<template slot="inbound" slot-scope="text, rule, index">
|
||
|
<a-popover :overlay-class-name="themeSwitcher.currentTheme">
|
||
|
<template slot="content">
|
||
|
<p v-if="rule.inboundTag">Inbound Tag: [[ rule.inboundTag ]]</p>
|
||
|
<p v-if="rule.user">User email: [[ rule.user ]]</p>
|
||
|
</template>
|
||
|
[[ [rule.inboundTag,rule.user].join('\n') ]]
|
||
|
</a-popover>
|
||
|
</template>
|
||
|
<template slot="outbound" slot-scope="text, rule, index">
|
||
|
<a-popover :overlay-class-name="themeSwitcher.currentTheme">
|
||
|
<template slot="content">
|
||
|
<p v-if="rule.outboundTag">Outbound Tag: [[ rule.outboundTag ]]</p>
|
||
|
</template>
|
||
|
[[ rule.outboundTag ]]
|
||
|
</a-popover>
|
||
|
</template>
|
||
|
<template slot="balancer" slot-scope="text, rule, index">
|
||
|
<a-popover :overlay-class-name="themeSwitcher.currentTheme">
|
||
|
<template slot="content">
|
||
|
<p v-if="rule.balancerTag">Balancer Tag: [[ rule.balancerTag ]]</p>
|
||
|
</template>
|
||
|
[[ rule.balancerTag ]]
|
||
|
</a-popover>
|
||
|
</template>
|
||
|
<template slot="info" slot-scope="text, rule, index">
|
||
|
<a-popover placement="bottomRight"
|
||
|
v-if="(rule.source+rule.sourcePort+rule.network+rule.protocol+rule.attrs+rule.ip+rule.domain+rule.port).length>0"
|
||
|
:overlay-class-name="themeSwitcher.currentTheme" trigger="click">
|
||
|
<template slot="content">
|
||
|
<table cellpadding="2" style="max-width: 300px;">
|
||
|
<tr v-if="rule.source">
|
||
|
<td>Source</td>
|
||
|
<td><a-tag color="blue" v-for="r in rule.source.split(',')">[[ r ]]</a-tag></td>
|
||
|
</tr>
|
||
|
<tr v-if="rule.sourcePort">
|
||
|
<td>Source Port</td>
|
||
|
<td><a-tag color="green" v-for="r in rule.sourcePort.split(',')">[[ r ]]</a-tag></td>
|
||
|
</tr>
|
||
|
<tr v-if="rule.network">
|
||
|
<td>Network</td>
|
||
|
<td><a-tag color="blue" v-for="r in rule.network.split(',')">[[ r ]]</a-tag></td>
|
||
|
</tr>
|
||
|
<tr v-if="rule.protocol">
|
||
|
<td>Protocol</td>
|
||
|
<td><a-tag color="green" v-for="r in rule.protocol.split(',')">[[ r ]]</a-tag></td>
|
||
|
</tr>
|
||
|
<tr v-if="rule.attrs">
|
||
|
<td>Attrs</td>
|
||
|
<td><a-tag color="blue" v-for="r in rule.attrs.split(',')">[[ r ]]</a-tag></td>
|
||
|
</tr>
|
||
|
<tr v-if="rule.ip">
|
||
|
<td>IP</td>
|
||
|
<td><a-tag color="green" v-for="r in rule.ip.split(',')">[[ r ]]</a-tag></td>
|
||
|
</tr>
|
||
|
<tr v-if="rule.domain">
|
||
|
<td>Domain</td>
|
||
|
<td><a-tag color="blue" v-for="r in rule.domain.split(',')">[[ r ]]</a-tag></td>
|
||
|
</tr>
|
||
|
<tr v-if="rule.port">
|
||
|
<td>Port</td>
|
||
|
<td><a-tag color="green" v-for="r in rule.port.split(',')">[[ r ]]</a-tag></td>
|
||
|
</tr>
|
||
|
<tr v-if="rule.balancerTag">
|
||
|
<td>Balancer Tag</td>
|
||
|
<td><a-tag color="blue">[[ rule.balancerTag ]]</a-tag></td>
|
||
|
</tr>
|
||
|
</table>
|
||
|
</template>
|
||
|
<a-button shape="round" size="small" style="font-size: 14px; padding: 0 10px;">
|
||
|
<a-icon type="info"></a-icon>
|
||
|
</a-button>
|
||
|
</a-popover>
|
||
|
</template>
|
||
|
</a-table-sortable>
|
||
|
</a-space>
|
||
|
{{end}}
|