Welcome to mirror list, hosted at ThFree Co, Russian Federation.

outbounds.html « xray « settings « html « web - github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 3995760f64394a55689f2a2829d979cf60dd9fad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
{{define "settings/xray/outbounds"}}
<a-space direction="vertical" size="middle">
    <a-row>
        <a-col :xs="12" :sm="12" :lg="12">
            <a-space direction="horizontal" size="small">
                <a-button type="primary" icon="plus" @click="addOutbound">
                    <span v-if="!isMobile">{{ i18n
                        "pages.xray.outbound.addOutbound" }}</span>
                </a-button>
                <a-button type="primary" icon="cloud"
                    @click="showWarp()">WARP</a-button>
            </a-space>
        </a-col>
        <a-col :xs="12" :sm="12" :lg="12" :style="{ textAlign: 'right' }">
            <a-button-group>
                <a-button icon="sync" @click="refreshOutboundTraffic()"
                    :loading="refreshing"></a-button>
                <a-popconfirm placement="topRight"
                    @confirm="resetOutboundTraffic(-1)"
                    title='{{ i18n "pages.inbounds.resetTrafficContent"}}'
                    :overlay-class-name="themeSwitcher.currentTheme"
                    ok-text='{{ i18n "reset"}}'
                    cancel-text='{{ i18n "cancel"}}'>
                    <a-icon slot="icon" type="question-circle-o"
                        :style="{ color: themeSwitcher.isDarkTheme ? '#008771' : '#008771' }"></a-icon>
                    <a-button icon="retweet"></a-button>
                </a-popconfirm>
            </a-button-group>
        </a-col>
    </a-row>
    <a-table :columns="outboundColumns" bordered :row-key="r => r.key"
        :data-source="outboundData"
        :scroll="isMobile ? {} : { x: 800 }" :pagination="false"
        :indent-size="0"
        :locale='{ filterConfirm: `{{ i18n "confirm" }}`, filterReset: `{{ i18n "reset" }}` }'>
        <template slot="action" slot-scope="text, outbound, index">
            <span>[[ index+1 ]]</span>
            <a-dropdown :trigger="['click']">
                <a-icon @click="e => e.preventDefault()" type="more"
                    :style="{ fontSize: '16px', textDecoration: 'bold' }"></a-icon>
                <a-menu slot="overlay" :theme="themeSwitcher.currentTheme">
                    <a-menu-item v-if="index>0"
                        @click="setFirstOutbound(index)">
                        <a-icon type="vertical-align-top"></a-icon>
                        <span>{{ i18n "pages.xray.rules.first"}}</span>
                    </a-menu-item>
                    <a-menu-item @click="editOutbound(index)">
                        <a-icon type="edit"></a-icon>
                        <span>{{ i18n "edit" }}</span>
                    </a-menu-item>
                    <a-menu-item @click="resetOutboundTraffic(index)">
                        <span>
                            <a-icon type="retweet"></a-icon>
                            <span>{{ i18n "pages.inbounds.resetTraffic"}}</span>
                        </span>
                    </a-menu-item>
                    <a-menu-item @click="deleteOutbound(index)">
                        <span :style="{ color: '#FF4D4F' }">
                            <a-icon type="delete"></a-icon>
                            <span>{{ i18n "delete"}}</span>
                        </span>
                    </a-menu-item>
                </a-menu>
            </a-dropdown>
        </template>
        <template slot="address" slot-scope="text, outbound, index">
            <p :style="{ margin: '0 5px' }"
                v-for="addr in findOutboundAddress(outbound)">[[ addr ]]</p>
        </template>
        <template slot="protocol" slot-scope="text, outbound, index">
            <a-tag :style="{ margin: '0' }" color="purple">[[ outbound.protocol
                ]]</a-tag>
            <template
                v-if="[Protocols.VMess, Protocols.VLESS, Protocols.Trojan, Protocols.Shadowsocks].includes(outbound.protocol)">
                <a-tag :style="{ margin: '0' }" color="blue">[[
                    outbound.streamSettings.network ]]</a-tag>
                <a-tag :style="{ margin: '0' }"
                    v-if="outbound.streamSettings.security=='tls'"
                    color="green">tls</a-tag>
                <a-tag :style="{ margin: '0' }"
                    v-if="outbound.streamSettings.security=='reality'"
                    color="green">reality</a-tag>
            </template>
        </template>
        <template slot="traffic" slot-scope="text, outbound, index">
            <a-tag color="green">[[ findOutboundTraffic(outbound) ]]</a-tag>
        </template>
        <template slot="test" slot-scope="text, outbound, index">
            <a-tooltip>
                <template slot="title">{{ i18n "pages.xray.outbound.test"
                    }}</template>
                <a-button
                    type="primary"
                    shape="circle"
                    icon="thunderbolt"
                    :loading="outboundTestStates[index] && outboundTestStates[index].testing"
                    @click="testOutbound(index)"
                    :disabled="(outbound.protocol === 'blackhole' || outbound.tag === 'blocked') || (outboundTestStates[index] && outboundTestStates[index].testing)">
                </a-button>
            </a-tooltip>
        </template>
        <template slot="testResult" slot-scope="text, outbound, index">
            <div
                v-if="outboundTestStates[index] && outboundTestStates[index].result">
                <a-tag v-if="outboundTestStates[index].result.success"
                    color="green">
                    [[ outboundTestStates[index].result.delay ]]ms
                    <span v-if="outboundTestStates[index].result.statusCode">
                        ([[ outboundTestStates[index].result.statusCode
                        ]])</span>
                </a-tag>
                <a-tooltip v-else
                    :title="outboundTestStates[index].result.error">
                    <a-tag color="red">
                        Failed
                    </a-tag>
                </a-tooltip>
            </div>
            <span
                v-else-if="outboundTestStates[index] && outboundTestStates[index].testing">
                <a-icon type="loading" />
            </span>
            <span v-else>-</span>
        </template>
    </a-table>
</a-space>
{{end}}