mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-02-07 17:10:07 +08:00
fix: 优化主机测试连接逻辑 (#3211)
This commit is contained in:
parent
2fdca95255
commit
02f41ba45d
@ -86,6 +86,7 @@ func Start() {
|
|||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
global.LOG.Infof("listen at http://%s:%s [%s]", global.CONF.System.BindAddress, global.CONF.System.Port, tcpItem)
|
||||||
if err := server.Serve(tcpKeepAliveListener{ln.(*net.TCPListener)}); err != nil {
|
if err := server.Serve(tcpKeepAliveListener{ln.(*net.TCPListener)}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@ -11,13 +11,13 @@
|
|||||||
<span v-if="dialogData.rowData!.addr === '127.0.0.1' && dialogData.title === 'edit'">
|
<span v-if="dialogData.rowData!.addr === '127.0.0.1' && dialogData.title === 'edit'">
|
||||||
{{ dialogData.rowData!.addr }}
|
{{ dialogData.rowData!.addr }}
|
||||||
</span>
|
</span>
|
||||||
<el-input v-else clearable v-model.trim="dialogData.rowData!.addr" />
|
<el-input @change="isOK = false" v-else clearable v-model.trim="dialogData.rowData!.addr" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('commons.login.username')" prop="user">
|
<el-form-item :label="$t('commons.login.username')" prop="user">
|
||||||
<el-input clearable v-model="dialogData.rowData!.user" />
|
<el-input @change="isOK = false" clearable v-model="dialogData.rowData!.user" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('terminal.authMode')" prop="authMode">
|
<el-form-item :label="$t('terminal.authMode')" prop="authMode">
|
||||||
<el-radio-group v-model="dialogData.rowData!.authMode">
|
<el-radio-group @change="isOK = false" v-model="dialogData.rowData!.authMode">
|
||||||
<el-radio label="password">{{ $t('terminal.passwordMode') }}</el-radio>
|
<el-radio label="password">{{ $t('terminal.passwordMode') }}</el-radio>
|
||||||
<el-radio label="key">{{ $t('terminal.keyMode') }}</el-radio>
|
<el-radio label="key">{{ $t('terminal.keyMode') }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
@ -27,14 +27,25 @@
|
|||||||
v-if="dialogData.rowData!.authMode === 'password'"
|
v-if="dialogData.rowData!.authMode === 'password'"
|
||||||
prop="password"
|
prop="password"
|
||||||
>
|
>
|
||||||
<el-input clearable show-password type="password" v-model="dialogData.rowData!.password" />
|
<el-input
|
||||||
|
@change="isOK = false"
|
||||||
|
clearable
|
||||||
|
show-password
|
||||||
|
type="password"
|
||||||
|
v-model="dialogData.rowData!.password"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
:label="$t('terminal.key')"
|
:label="$t('terminal.key')"
|
||||||
v-if="dialogData.rowData!.authMode === 'key'"
|
v-if="dialogData.rowData!.authMode === 'key'"
|
||||||
prop="privateKey"
|
prop="privateKey"
|
||||||
>
|
>
|
||||||
<el-input clearable type="textarea" v-model="dialogData.rowData!.privateKey" />
|
<el-input
|
||||||
|
@change="isOK = false"
|
||||||
|
clearable
|
||||||
|
type="textarea"
|
||||||
|
v-model="dialogData.rowData!.privateKey"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
:label="$t('terminal.keyPassword')"
|
:label="$t('terminal.keyPassword')"
|
||||||
@ -42,6 +53,7 @@
|
|||||||
prop="passPhrase"
|
prop="passPhrase"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
|
@change="isOK = false"
|
||||||
type="password"
|
type="password"
|
||||||
show-password
|
show-password
|
||||||
clearable
|
clearable
|
||||||
@ -52,7 +64,7 @@
|
|||||||
{{ $t('terminal.rememberPassword') }}
|
{{ $t('terminal.rememberPassword') }}
|
||||||
</el-checkbox>
|
</el-checkbox>
|
||||||
<el-form-item style="margin-top: 10px" :label="$t('commons.table.port')" prop="port">
|
<el-form-item style="margin-top: 10px" :label="$t('commons.table.port')" prop="port">
|
||||||
<el-input clearable v-model.number="dialogData.rowData!.port" />
|
<el-input @change="isOK = false" clearable v-model.number="dialogData.rowData!.port" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('commons.table.group')" prop="groupID">
|
<el-form-item :label="$t('commons.table.group')" prop="groupID">
|
||||||
<el-select filterable v-model="dialogData.rowData!.groupID" clearable style="width: 100%">
|
<el-select filterable v-model="dialogData.rowData!.groupID" clearable style="width: 100%">
|
||||||
@ -89,7 +101,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, reactive, watch } from 'vue';
|
import { ref, reactive } from 'vue';
|
||||||
import type { ElForm } from 'element-plus';
|
import type { ElForm } from 'element-plus';
|
||||||
import { Rules } from '@/global/form-rules';
|
import { Rules } from '@/global/form-rules';
|
||||||
import { addHost, editHost, testByInfo } from '@/api/modules/host';
|
import { addHost, editHost, testByInfo } from '@/api/modules/host';
|
||||||
@ -111,14 +123,6 @@ const dialogData = ref<DialogProps>({
|
|||||||
title: '',
|
title: '',
|
||||||
});
|
});
|
||||||
|
|
||||||
watch(
|
|
||||||
() => dialogData.value.rowData,
|
|
||||||
() => {
|
|
||||||
isOK.value = false;
|
|
||||||
},
|
|
||||||
{ deep: true },
|
|
||||||
);
|
|
||||||
|
|
||||||
const groupList = ref();
|
const groupList = ref();
|
||||||
const acceptParams = (params: DialogProps): void => {
|
const acceptParams = (params: DialogProps): void => {
|
||||||
dialogData.value = params;
|
dialogData.value = params;
|
||||||
|
@ -16,16 +16,16 @@
|
|||||||
type="warning"
|
type="warning"
|
||||||
/>
|
/>
|
||||||
<el-form-item :label="$t('terminal.ip')" prop="addr">
|
<el-form-item :label="$t('terminal.ip')" prop="addr">
|
||||||
<el-input v-if="!isLocal" clearable v-model.trim="hostInfo.addr" />
|
<el-input @change="isOK = false" v-if="!isLocal" clearable v-model.trim="hostInfo.addr" />
|
||||||
<div style="margin-left: 12px">
|
<div style="margin-left: 12px">
|
||||||
<span v-if="isLocal">{{ hostInfo.addr }}</span>
|
<span v-if="isLocal">{{ hostInfo.addr }}</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('commons.login.username')" prop="user">
|
<el-form-item :label="$t('commons.login.username')" prop="user">
|
||||||
<el-input clearable v-model="hostInfo.user" />
|
<el-input @change="isOK = false" clearable v-model="hostInfo.user" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('terminal.authMode')" prop="authMode">
|
<el-form-item :label="$t('terminal.authMode')" prop="authMode">
|
||||||
<el-radio-group v-model="hostInfo.authMode">
|
<el-radio-group @change="isOK = false" v-model="hostInfo.authMode">
|
||||||
<el-radio label="password">{{ $t('terminal.passwordMode') }}</el-radio>
|
<el-radio label="password">{{ $t('terminal.passwordMode') }}</el-radio>
|
||||||
<el-radio label="key">{{ $t('terminal.keyMode') }}</el-radio>
|
<el-radio label="key">{{ $t('terminal.keyMode') }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
@ -35,23 +35,35 @@
|
|||||||
v-if="hostInfo.authMode === 'password'"
|
v-if="hostInfo.authMode === 'password'"
|
||||||
prop="password"
|
prop="password"
|
||||||
>
|
>
|
||||||
<el-input clearable show-password type="password" v-model="hostInfo.password" />
|
<el-input
|
||||||
|
@change="isOK = false"
|
||||||
|
clearable
|
||||||
|
show-password
|
||||||
|
type="password"
|
||||||
|
v-model="hostInfo.password"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('terminal.key')" v-if="hostInfo.authMode === 'key'" prop="privateKey">
|
<el-form-item :label="$t('terminal.key')" v-if="hostInfo.authMode === 'key'" prop="privateKey">
|
||||||
<el-input clearable type="textarea" v-model="hostInfo.privateKey" />
|
<el-input @change="isOK = false" clearable type="textarea" v-model="hostInfo.privateKey" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
:label="$t('terminal.keyPassword')"
|
:label="$t('terminal.keyPassword')"
|
||||||
v-if="hostInfo.authMode === 'key'"
|
v-if="hostInfo.authMode === 'key'"
|
||||||
prop="passPhrase"
|
prop="passPhrase"
|
||||||
>
|
>
|
||||||
<el-input type="password" show-password clearable v-model="hostInfo.passPhrase" />
|
<el-input
|
||||||
|
@change="isOK = false"
|
||||||
|
type="password"
|
||||||
|
show-password
|
||||||
|
clearable
|
||||||
|
v-model="hostInfo.passPhrase"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-checkbox clearable v-model.number="hostInfo.rememberPassword">
|
<el-checkbox clearable v-model.number="hostInfo.rememberPassword">
|
||||||
{{ $t('terminal.rememberPassword') }}
|
{{ $t('terminal.rememberPassword') }}
|
||||||
</el-checkbox>
|
</el-checkbox>
|
||||||
<el-form-item style="margin-top: 10px" :label="$t('commons.table.port')" prop="port">
|
<el-form-item style="margin-top: 10px" :label="$t('commons.table.port')" prop="port">
|
||||||
<el-input clearable v-model.number="hostInfo.port" />
|
<el-input @change="isOK = false" clearable v-model.number="hostInfo.port" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('commons.table.title')" prop="name">
|
<el-form-item :label="$t('commons.table.title')" prop="name">
|
||||||
<el-input clearable v-model="hostInfo.name" />
|
<el-input clearable v-model="hostInfo.name" />
|
||||||
@ -84,7 +96,7 @@ import { Rules } from '@/global/form-rules';
|
|||||||
import { addHost, testByInfo } from '@/api/modules/host';
|
import { addHost, testByInfo } from '@/api/modules/host';
|
||||||
import DrawerHeader from '@/components/drawer-header/index.vue';
|
import DrawerHeader from '@/components/drawer-header/index.vue';
|
||||||
import i18n from '@/lang';
|
import i18n from '@/lang';
|
||||||
import { reactive, ref, watch } from 'vue';
|
import { reactive, ref } from 'vue';
|
||||||
import { MsgError, MsgSuccess } from '@/utils/message';
|
import { MsgError, MsgSuccess } from '@/utils/message';
|
||||||
|
|
||||||
const dialogVisible = ref();
|
const dialogVisible = ref();
|
||||||
@ -107,14 +119,6 @@ let hostInfo = reactive<Host.HostOperate>({
|
|||||||
description: '',
|
description: '',
|
||||||
});
|
});
|
||||||
|
|
||||||
watch(
|
|
||||||
() => hostInfo,
|
|
||||||
() => {
|
|
||||||
isOK.value = false;
|
|
||||||
},
|
|
||||||
{ deep: true },
|
|
||||||
);
|
|
||||||
|
|
||||||
const rules = reactive({
|
const rules = reactive({
|
||||||
addr: [Rules.ipV4V6OrDomain],
|
addr: [Rules.ipV4V6OrDomain],
|
||||||
port: [Rules.requiredInput, Rules.port],
|
port: [Rules.requiredInput, Rules.port],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user