Merge pull request #633 from digitalgopnik/feat/ssh-keep-alive-interval

feat: customize keep-alive-interval for ssh-tunnel
This commit is contained in:
Fabio Di Stasio 2023-09-04 17:12:39 +02:00 committed by GitHub
commit fe23d86694
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 145 additions and 106 deletions

View File

@ -65,6 +65,7 @@ export interface ConnectionParams {
sshKey?: string;
sshPort?: number;
sshPassphrase?: string;
sshKeepAliveInterval?: number;
}
export interface TypeInformations {

View File

@ -24,6 +24,7 @@ export default (connections: {[key: string]: antares.Client}) => {
port: number;
privateKey: string;
passphrase: string;
keepaliveInterval: number;
}
};
@ -50,7 +51,8 @@ export default (connections: {[key: string]: antares.Client}) => {
password: conn.sshPass,
port: conn.sshPort ? conn.sshPort : 22,
privateKey: conn.sshKey ? fs.readFileSync(conn.sshKey).toString() : null,
passphrase: conn.sshPassphrase
passphrase: conn.sshPassphrase,
keepaliveInterval: conn.sshKeepAliveInterval ?? conn.sshKeepAliveInterval*1000
};
}
@ -99,6 +101,7 @@ export default (connections: {[key: string]: antares.Client}) => {
port: number;
privateKey: string;
passphrase: string;
keepaliveInterval: number;
}
};
@ -128,7 +131,8 @@ export default (connections: {[key: string]: antares.Client}) => {
password: conn.sshPass,
port: conn.sshPort ? conn.sshPort : 22,
privateKey: conn.sshKey ? fs.readFileSync(conn.sshKey).toString() : null,
passphrase: conn.sshPassphrase
passphrase: conn.sshPassphrase,
keepaliveInterval: conn.sshKeepAliveInterval ?? conn.sshKeepAliveInterval*1000
};
}

View File

@ -156,7 +156,6 @@ export class MySQLClient extends AntaresCore {
this._ssh = new SSH2Promise({
...this._params.ssh,
keepaliveInterval: 30*60*1000,
debug: process.env.NODE_ENV !== 'production' ? (s) => console.log(s) : null
});

View File

@ -168,7 +168,6 @@ export class PostgreSQLClient extends AntaresCore {
try {
this._ssh = new SSH2Promise({
...this._params.ssh,
keepaliveInterval: 30*60*1000,
debug: process.env.NODE_ENV !== 'production' ? (s) => console.log(s) : null
});

View File

@ -33,10 +33,10 @@
<form class="form-horizontal">
<fieldset class="m-0" :disabled="isBusy">
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.connectionName') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
ref="firstInput"
v-model="connection.name"
@ -46,10 +46,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.client') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<BaseSelect
v-model="connection.client"
:options="clients"
@ -60,10 +60,10 @@
</div>
</div>
<div v-if="connection.client === 'pg'" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.connectionString') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
ref="pgString"
v-model="connection.pgConnString"
@ -73,10 +73,10 @@
</div>
</div>
<div v-if="!clientCustomizations.fileConnection" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.hostName') }}/IP</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="connection.host"
class="form-input"
@ -85,10 +85,10 @@
</div>
</div>
<div v-if="clientCustomizations.fileConnection" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('database.database') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<BaseUploadInput
:model-value="connection.databasePath"
:message="t('general.browse')"
@ -98,10 +98,10 @@
</div>
</div>
<div v-if="!clientCustomizations.fileConnection" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.port') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="connection.port"
class="form-input"
@ -112,10 +112,10 @@
</div>
</div>
<div v-if="clientCustomizations.database" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('database.database') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="connection.database"
class="form-input"
@ -125,10 +125,10 @@
</div>
</div>
<div v-if="!clientCustomizations.fileConnection" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.user') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="connection.user"
class="form-input"
@ -138,10 +138,10 @@
</div>
</div>
<div v-if="!clientCustomizations.fileConnection" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.password') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="connection.password"
class="form-input"
@ -151,10 +151,10 @@
</div>
</div>
<div v-if="clientCustomizations.connectionSchema" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('database.schema') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="connection.schema"
class="form-input"
@ -164,16 +164,16 @@
</div>
</div>
<div v-if="clientCustomizations.readOnlyMode" class="form-group columns">
<div class="column col-4 col-sm-12" />
<div class="column col-8 col-sm-12">
<div class="column col-5 col-sm-12" />
<div class="column col-7 col-sm-12">
<label class="form-checkbox form-inline">
<input v-model="connection.readonly" type="checkbox"><i class="form-icon" /> {{ t('connection.readOnlyMode') }}
</label>
</div>
</div>
<div v-if="!clientCustomizations.fileConnection" class="form-group columns">
<div class="column col-4 col-sm-12" />
<div class="column col-8 col-sm-12">
<div class="column col-5 col-sm-12" />
<div class="column col-7 col-sm-12">
<label class="form-checkbox form-inline">
<input v-model="connection.ask" type="checkbox"><i class="form-icon" /> {{ t('connection.askCredentials') }}
</label>
@ -187,12 +187,12 @@
<div>
<form class="form-horizontal">
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">
{{ t('connection.enableSsl') }}
</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<label class="form-switch d-inline-block" @click.prevent="toggleSsl">
<input type="checkbox" :checked="connection.ssl">
<i class="form-icon" />
@ -201,10 +201,10 @@
</div>
<fieldset class="m-0" :disabled="isBusy || !connection.ssl">
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.privateKey') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<BaseUploadInput
:model-value="connection.key"
:message="t('general.browse')"
@ -214,10 +214,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.certificate') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<BaseUploadInput
:model-value="connection.cert"
:message="t('general.browse')"
@ -227,10 +227,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.caCertificate') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<BaseUploadInput
:model-value="connection.ca"
:message="t('general.browse')"
@ -240,10 +240,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.ciphers') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
ref="firstInput"
v-model="connection.ciphers"
@ -253,8 +253,8 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12" />
<div class="column col-8 col-sm-12">
<div class="column col-5 col-sm-12" />
<div class="column col-7 col-sm-12">
<label class="form-checkbox form-inline">
<input v-model="connection.untrustedConnection" type="checkbox"><i class="form-icon" /> {{ t('connection.untrustedConnection') }}
</label>
@ -268,12 +268,12 @@
<div>
<form class="form-horizontal">
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">
{{ t('connection.enableSsh') }}
</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<label class="form-switch d-inline-block" @click.prevent="toggleSsh">
<input type="checkbox" :checked="connection.ssh">
<i class="form-icon" />
@ -282,10 +282,10 @@
</div>
<fieldset class="m-0" :disabled="isBusy || !connection.ssh">
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.hostName') }}/IP</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="connection.sshHost"
class="form-input"
@ -294,10 +294,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.user') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="connection.sshUser"
class="form-input"
@ -306,10 +306,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.password') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="connection.sshPass"
class="form-input"
@ -318,10 +318,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.port') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="connection.sshPort"
class="form-input"
@ -332,10 +332,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.privateKey') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<BaseUploadInput
:model-value="connection.sshKey"
:message="t('general.browse')"
@ -345,10 +345,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.passphrase') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="connection.sshPassphrase"
class="form-input"
@ -356,6 +356,22 @@
>
</div>
</div>
<div class="form-group columns">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.keepAliveInterval') }}</label>
</div>
<div class="column col-7 col-sm-12">
<div class="input-group">
<input
v-model="connection.sshKeepAliveInterval"
class="form-input"
type="number"
min="1"
>
<span class="input-group-addon">{{ t('general.seconds') }}</span>
</div>
</div>
</div>
</fieldset>
</form>
</div>
@ -443,8 +459,10 @@ const connection = ref({
sshHost: '',
sshUser: '',
sshPass: '',
sshPassphrase: null,
sshKey: '',
sshPort: 22,
sshKeepAliveInterval: 1800,
pgConnString: ''
}) as Ref<ConnectionParams & { pgConnString: string }>;

View File

@ -33,10 +33,10 @@
<form class="form-horizontal">
<fieldset class="m-0" :disabled="isBusy">
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.connectionName') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
ref="firstInput"
v-model="localConnection.name"
@ -46,10 +46,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.client') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<BaseSelect
v-model="localConnection.client"
:options="clients"
@ -62,10 +62,10 @@
</div>
</div>
<div v-if="localConnection.client === 'pg'" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.connectionString') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
ref="pgString"
v-model="localConnection.pgConnString"
@ -75,10 +75,10 @@
</div>
</div>
<div v-if="!clientCustomizations.fileConnection" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.hostName') }}/IP</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="localConnection.host"
class="form-input"
@ -87,10 +87,10 @@
</div>
</div>
<div v-if="clientCustomizations.fileConnection" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('database.database') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<BaseUploadInput
:model-value="localConnection.databasePath"
:message="t('general.browse')"
@ -100,10 +100,10 @@
</div>
</div>
<div v-if="!clientCustomizations.fileConnection" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.port') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="localConnection.port"
class="form-input"
@ -114,10 +114,10 @@
</div>
</div>
<div v-if="clientCustomizations.database" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('database.database') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="localConnection.database"
class="form-input"
@ -127,10 +127,10 @@
</div>
</div>
<div v-if="!clientCustomizations.fileConnection" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.user') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="localConnection.user"
class="form-input"
@ -140,10 +140,10 @@
</div>
</div>
<div v-if="!clientCustomizations.fileConnection" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.password') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="localConnection.password"
class="form-input"
@ -153,10 +153,10 @@
</div>
</div>
<div v-if="clientCustomizations.connectionSchema" class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('database.schema') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="localConnection.schema"
class="form-input"
@ -166,16 +166,16 @@
</div>
</div>
<div v-if="clientCustomizations.readOnlyMode" class="form-group columns">
<div class="column col-4 col-sm-12" />
<div class="column col-8 col-sm-12">
<div class="column col-5 col-sm-12" />
<div class="column col-7 col-sm-12">
<label class="form-checkbox form-inline">
<input v-model="localConnection.readonly" type="checkbox"><i class="form-icon" /> {{ t('connection.readOnlyMode') }}
</label>
</div>
</div>
<div v-if="!clientCustomizations.fileConnection" class="form-group columns">
<div class="column col-4 col-sm-12" />
<div class="column col-8 col-sm-12">
<div class="column col-5 col-sm-12" />
<div class="column col-7 col-sm-12">
<label class="form-checkbox form-inline">
<input v-model="localConnection.ask" type="checkbox"><i class="form-icon" /> {{ t('connection.askCredentials') }}
</label>
@ -189,12 +189,12 @@
<div>
<form class="form-horizontal">
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">
{{ t('connection.enableSsl') }}
</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<label class="form-switch d-inline-block" @click.prevent="toggleSsl">
<input type="checkbox" :checked="localConnection.ssl">
<i class="form-icon" />
@ -203,10 +203,10 @@
</div>
<fieldset class="m-0" :disabled="isBusy || !localConnection.ssl">
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.privateKey') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<BaseUploadInput
:model-value="localConnection.key"
:message="t('general.browse')"
@ -216,10 +216,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.certificate') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<BaseUploadInput
:model-value="localConnection.cert"
:message="t('general.browse')"
@ -229,10 +229,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.caCertificate') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<BaseUploadInput
:model-value="localConnection.ca"
:message="t('general.browse')"
@ -242,10 +242,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.ciphers') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
ref="firstInput"
v-model="localConnection.ciphers"
@ -255,8 +255,8 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12" />
<div class="column col-8 col-sm-12">
<div class="column col-5 col-sm-12" />
<div class="column col-7 col-sm-12">
<label class="form-checkbox form-inline">
<input v-model="localConnection.untrustedConnection" type="checkbox"><i class="form-icon" /> {{ t('connection.untrustedConnection') }}
</label>
@ -270,12 +270,12 @@
<div>
<form class="form-horizontal">
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">
{{ t('connection.enableSsh') }}
</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<label class="form-switch d-inline-block" @click.prevent="toggleSsh">
<input type="checkbox" :checked="localConnection.ssh">
<i class="form-icon" />
@ -284,10 +284,10 @@
</div>
<fieldset class="m-0" :disabled="isBusy || !localConnection.ssh">
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.hostName') }}/IP</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="localConnection.sshHost"
class="form-input"
@ -296,10 +296,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.user') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="localConnection.sshUser"
class="form-input"
@ -308,10 +308,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.password') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="localConnection.sshPass"
class="form-input"
@ -320,10 +320,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.port') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="localConnection.sshPort"
class="form-input"
@ -334,10 +334,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.privateKey') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<BaseUploadInput
:model-value="localConnection.sshKey"
:message="t('general.browse')"
@ -347,10 +347,10 @@
</div>
</div>
<div class="form-group columns">
<div class="column col-4 col-sm-12">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.passphrase') }}</label>
</div>
<div class="column col-8 col-sm-12">
<div class="column col-7 col-sm-12">
<input
v-model="localConnection.sshPassphrase"
class="form-input"
@ -358,6 +358,22 @@
>
</div>
</div>
<div class="form-group columns">
<div class="column col-5 col-sm-12">
<label class="form-label cut-text">{{ t('connection.keepAliveInterval') }}</label>
</div>
<div class="column col-7 col-sm-12">
<div class="input-group">
<input
v-model="localConnection.sshKeepAliveInterval"
class="form-input"
type="number"
min="1"
>
<span class="input-group-addon">{{ t('general.seconds') }}</span>
</div>
</div>
</div>
</fieldset>
</form>
</div>

View File

@ -67,7 +67,8 @@ export const deDE = {
deleteConnection: 'Verbindung löschen',
connectionSuccessfullyMade: 'Verbindung erfolgreich erstellt!',
enableSsl: 'Aktiviere SSL',
enableSsh: 'Aktiviere SSH'
enableSsh: 'Aktiviere SSH',
keepAliveInterval: 'Keep-Alive-Intervall'
},
database: {
schema: 'Schema',

View File

@ -100,7 +100,8 @@ export const enUS = {
connectionSuccessfullyMade: 'Connection successfully made!',
readOnlyMode: 'Read-only mode',
allConnections: 'All connections',
searchForConnections: 'Search for connections'
searchForConnections: 'Search for connections',
keepAliveInterval: 'Keep alive interval'
},
database: { // Database related terms
schema: 'Schema',