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

dns_modal.html « xui « html « web - github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 3035e9e1f43cf541528ddf969747db1bf48db384 (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
{{define "dnsModal"}}
<a-modal id="dns-modal" v-model="dnsModal.visible" :title="dnsModal.title" @ok="dnsModal.ok"
         :closable="true" :mask-closable="false"
         :ok-text="dnsModal.okText" cancel-text='{{ i18n "close" }}' :class="themeSwitcher.currentTheme">
    <a-form :colon="false" :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }">
        <a-form-item label='{{ i18n "pages.xray.outbound.address" }}'>
            <a-input v-model.trim="dnsModal.dnsServer.address"></a-input>
        </a-form-item>
        <a-form-item label='{{ i18n "pages.xray.dns.domains" }}'>
          <a-button size="small" type="primary" @click="dnsModal.dnsServer.domains.push('')">+</a-button>
            <template v-for="(domain, index) in dnsModal.dnsServer.domains">
              <a-input v-model.trim="dnsModal.dnsServer.domains[index]">
                  <a-button size="small" slot="addonAfter" @click="dnsModal.dnsServer.domains.splice(index,1)">-</a-button>
              </a-input>
          </template>
        </a-form-item>
        <a-form-item label='{{ i18n "pages.xray.dns.strategy" }}' v-if="isAdvanced">
          <a-select
            v-model="dnsModal.dnsServer.queryStrategy"
            style="width: 100%"
            :dropdown-class-name="themeSwitcher.currentTheme">
            <a-select-option :value="l" :label="l" v-for="l in ['UseIP', 'UseIPv4', 'UseIPv6']">
                [[ l ]]
            </a-select-option>
          </a-select>
        </a-form-item>
    </a-form>
</a-modal>
<script>
    const dnsModal = {
        title: '',
        visible: false,
        okText: '{{ i18n "confirm" }}',
        isEdit: false,
        confirm: null,
        dnsServer: {
          address: "localhost",
          domains: [],
          queryStrategy: 'UseIP',
        },
        ok() {
          domains = dnsModal.dnsServer.domains.filter(d => d.length>0);
          dnsModal.dnsServer.domains = domains;
          newDnsServer = domains.length > 0 ? dnsModal.dnsServer : dnsModal.dnsServer.address;
          ObjectUtil.execute(dnsModal.confirm, newDnsServer);
        },
        show({ title='', okText='{{ i18n "confirm" }}', dnsServer, confirm=(dnsServer)=>{}, isEdit=false  }) {
            this.title = title;
            this.okText = okText;
            this.confirm = confirm;
            this.visible = true;
            if(isEdit) {
              if (typeof dnsServer == 'object'){
                this.dnsServer = dnsServer;
              } else {
                this.dnsServer.address = dnsServer?? '';
              }
            } else {
              this.dnsServer = {
                address: "localhost",
                domains: [],
                queryStrategy: 'UseIP',
              }
            }
            this.isEdit = isEdit;
        },
        close() {
            dnsModal.visible = false;
        },
    };

    new Vue({
        delimiters: ['[[', ']]'],
        el: '#dns-modal',
        data: {
            dnsModal: dnsModal,
        },
        computed: {
          isAdvanced: {
            get: function () { return dnsModal.dnsServer.domains.length>0 }
          }
        }
    });

</script>
{{end}}