mirror of
https://github.com/louislam/uptime-kuma.git
synced 2025-03-04 08:25:57 +00:00
tls: pages: Add UI for parametrizing STARTTLS prompt/command/response
This commit is contained in:
parent
2ba7cf72bc
commit
110fde8ac9
2 changed files with 119 additions and 13 deletions
|
@ -590,7 +590,12 @@
|
||||||
"notificationDescription": "Notifications must be assigned to a monitor to function.",
|
"notificationDescription": "Notifications must be assigned to a monitor to function.",
|
||||||
"keywordDescription": "Search keyword in plain HTML or JSON response. The search is case-sensitive.",
|
"keywordDescription": "Search keyword in plain HTML or JSON response. The search is case-sensitive.",
|
||||||
"invertKeywordDescription": "Look for the keyword to be absent rather than present.",
|
"invertKeywordDescription": "Look for the keyword to be absent rather than present.",
|
||||||
"requestDescription": "Request to send to the server after establishing the connection. Note that trailing newlines may be significant.",
|
"tcpRequestDescription": "Request sent to the server after establishing the connection. Trailing newlines may be required. JavaScript escape sequences are allowed.",
|
||||||
|
"tcpStartTlsDescription": "Start unencrypted and upgrade connection using STARTTLS.",
|
||||||
|
"tcpStartTlsPresetDescription": "Select a preset below to auto-fill commonly used values for request, keyword, and STARTTLS prompt/command/response.",
|
||||||
|
"tcpStartTlsPromptDescription": "Server prompt (prefix) indicating readiness for STARTTLS command. JavaScript escape sequences are allowed.",
|
||||||
|
"tcpStartTlsCommandDescription": "Command to initiate the TLS negotiation. Trailing newlines may be required. JavaScript escape sequences are allowed.",
|
||||||
|
"tcpStartTlsResponseDescription": "Server response (prefix) confirming readiness for TLS negotiation. JavaScript escape sequences are allowed.",
|
||||||
"jsonQueryDescription": "Do a json Query against the response and check for expected value (Return value will get converted into string for comparison). Check out {0} for the documentation about the query language. A playground can be found {1}.",
|
"jsonQueryDescription": "Do a json Query against the response and check for expected value (Return value will get converted into string for comparison). Check out {0} for the documentation about the query language. A playground can be found {1}.",
|
||||||
"backupDescription": "You can backup all monitors and notifications into a JSON file.",
|
"backupDescription": "You can backup all monitors and notifications into a JSON file.",
|
||||||
"backupDescription2": "Note: history and event data is not included.",
|
"backupDescription2": "Note: history and event data is not included.",
|
||||||
|
|
|
@ -147,6 +147,17 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Request -->
|
||||||
|
<div v-if="monitor.type === 'port-tls'" class="my-3">
|
||||||
|
<div class="my-3">
|
||||||
|
<label for="tcp-request" class="form-label">{{ $t("Request") }}</label>
|
||||||
|
<input id="tcp-request" v-model="monitor.tcpRequest" class="form-control" />
|
||||||
|
</div>
|
||||||
|
<div class="form-text">
|
||||||
|
{{ $t("tcpRequestDescription") }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Remote Browser -->
|
<!-- Remote Browser -->
|
||||||
<div v-if="monitor.type === 'real-browser'" class="my-3">
|
<div v-if="monitor.type === 'real-browser'" class="my-3">
|
||||||
<!-- Toggle -->
|
<!-- Toggle -->
|
||||||
|
@ -907,22 +918,69 @@
|
||||||
<template v-if="monitor.type === 'port-tls'">
|
<template v-if="monitor.type === 'port-tls'">
|
||||||
<h2 class="mt-5 mb-2">{{ $t("TLS Options") }}</h2>
|
<h2 class="mt-5 mb-2">{{ $t("TLS Options") }}</h2>
|
||||||
|
|
||||||
|
<!-- Enable TLS -->
|
||||||
|
<div class="my-3 form-check">
|
||||||
|
<input id="tcp-enable-tls" v-model="monitor.tcpEnableTls" class="form-check-input" type="checkbox">
|
||||||
|
<label class="form-check-label" for="tcp-enable-tls">
|
||||||
|
{{ $t("Enable TLS") }}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<template v-if="monitor.tcpEnableTls">
|
||||||
<!-- Use STARTTLS -->
|
<!-- Use STARTTLS -->
|
||||||
<div class="my-3 form-check">
|
<div class="my-3 form-check">
|
||||||
<input id="tcp-start-tls" v-model="monitor.tcpStartTls" class="form-check-input" type="checkbox">
|
<input id="tcp-start-tls" v-model="monitor.tcpStartTls" class="form-check-input" type="checkbox">
|
||||||
<label class="form-check-label" for="tcp-start-tls">
|
<label class="form-check-label" for="tcp-start-tls">
|
||||||
{{ $t("Use STARTTLS") }}
|
{{ $t("Use STARTTLS") }}
|
||||||
</label>
|
</label>
|
||||||
|
<div class="form-text">
|
||||||
|
{{ $t("tcpStartTlsDescription") }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Request -->
|
<template v-if="monitor.tcpStartTls">
|
||||||
<div class="my-3">
|
<!-- Common Presets for STARTTLS -->
|
||||||
<label for="tcp-request" class="form-label">{{ $t("Request") }}</label>
|
<label for="tcp-starttls-presets" class="form-label">{{ $t("Common Presets") }}</label>
|
||||||
<textarea id="tcp-request" v-model="monitor.tcpRequest" class="form-control"></textarea>
|
<div id="tcp-starttls-presets">
|
||||||
</div>
|
|
||||||
<div class="form-text">
|
<div class="form-text">
|
||||||
{{ $t("requestDescription") }}
|
{{ $t("tcpStartTlsPresetDescription") }}
|
||||||
</div>
|
</div>
|
||||||
|
<button v-for="preset in startTlsPresets" :key="preset.name" type="button" class="btn btn-outline-normal m-1" @click="applyStartTlsPreset(preset.name)">
|
||||||
|
{{ preset.name }}
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-outline-normal m-1" type="button" @click="applyStartTlsPreset()">
|
||||||
|
{{ $t("Clear") }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- STARTTLS Prompt -->
|
||||||
|
<div class="my-3">
|
||||||
|
<label for="tcp-starttls-prompt" class="form-label">{{ $t("STARTTLS Prompt") }}</label>
|
||||||
|
<input id="tcp-starttls-prompt" v-model="monitor.tcpStartTlsPrompt" type="text" class="form-control" required>
|
||||||
|
<div class="form-text">
|
||||||
|
{{ $t("tcpStartTlsPromptDescription") }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- STARTTLS Command -->
|
||||||
|
<div class="my-3">
|
||||||
|
<label for="tcp-starttls-command" class="form-label">{{ $t("STARTTLS Command") }}</label>
|
||||||
|
<input id="tcp-starttls-command" v-model="monitor.tcpStartTlsCommand" type="text" class="form-control" required>
|
||||||
|
<div class="form-text">
|
||||||
|
{{ $t("tcpStartTlsCommandDescription") }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- STARTTLS Response -->
|
||||||
|
<div class="my-3">
|
||||||
|
<label for="tcp-starttls-response" class="form-label">{{ $t("STARTTLS Response") }}</label>
|
||||||
|
<input id="tcp-starttls-response" v-model="monitor.tcpStartTlsResponse" type="text" class="form-control" required>
|
||||||
|
<div class="form-text">
|
||||||
|
{{ $t("tcpStartTlsResponseDescription") }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1040,6 +1098,32 @@ export default {
|
||||||
},
|
},
|
||||||
draftGroupName: null,
|
draftGroupName: null,
|
||||||
remoteBrowsersEnabled: false,
|
remoteBrowsersEnabled: false,
|
||||||
|
startTlsPresets: [
|
||||||
|
{
|
||||||
|
name: "SMTP",
|
||||||
|
prompt: "220 ",
|
||||||
|
command: String.raw`STARTTLS\n`,
|
||||||
|
response: "220 ",
|
||||||
|
request: String.raw`QUIT\n`,
|
||||||
|
keyword: "221 ",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "POP3",
|
||||||
|
prompt: "+OK",
|
||||||
|
command: String.raw`STLS\r\n`,
|
||||||
|
response: "+OK",
|
||||||
|
request: String.raw`QUIT\r\n`,
|
||||||
|
keyword: "+OK",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "IMAP4",
|
||||||
|
prompt: "* OK",
|
||||||
|
command: String.raw`a001 STARTTLS\r\n`,
|
||||||
|
response: "a001 OK",
|
||||||
|
request: String.raw`a002 CAPABILITY\r\n`,
|
||||||
|
keyword: "* CAPABILITY",
|
||||||
|
},
|
||||||
|
],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1677,6 +1761,23 @@ message HealthCheckResponse {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
applyStartTlsPreset(name) {
|
||||||
|
const preset = name
|
||||||
|
? this.startTlsPresets.find(p => p.name === name)
|
||||||
|
: {
|
||||||
|
prompt: "",
|
||||||
|
command: "",
|
||||||
|
response: "",
|
||||||
|
request: "",
|
||||||
|
keyword: "",
|
||||||
|
};
|
||||||
|
this.monitor.tcpStartTlsPrompt = preset.prompt;
|
||||||
|
this.monitor.tcpStartTlsCommand = preset.command;
|
||||||
|
this.monitor.tcpStartTlsResponse = preset.response;
|
||||||
|
this.monitor.tcpRequest = preset.request;
|
||||||
|
this.monitor.keyword = preset.keyword;
|
||||||
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Add table
Reference in a new issue