Files
website/themes/after-dark/docs/content/validate.md
2021-04-26 18:26:42 +01:00

83 lines
3.3 KiB
Markdown

+++
title = "Validate Release"
description = "Complete the included form to validate the release."
noindex = true
[[copyright]]
owner = "Josh Habdas"
date = "2019"
license = "agpl-3.0-or-later"
+++
{{< hackcss-form name="validate" action="/validate/" >}}
{{< hackcss-formgroup name="integrity" >}}
{{< hackcss-label for="digest" >}}
<abbr title="Secure Hash Algorithm">SHA-512</abbr> Digest:
{{< /hackcss-label >}}
{{< hackcss-textinput
required="true"
autocomplete="off"
spellcheck="false"
type="text" id="digest" name="digest"
pattern="^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
placeholder="whUlqT0w6vfvTzd12LpU5kst/Cz3yt9j3ncIHcB4CDQFFiMVPlfX/I+vKl3Y98faqBLlgh6M4pyhiYzZNIPUPA=="
>}}
{{< hackcss-helpblock >}}
Submit with 9.2.3 <a href="/feature/release-hashes">Release Hash</a> to validate.
<noscript>JavaScript required for proper validation.</noscript>
{{< /hackcss-helpblock >}}
{{< /hackcss-formgroup >}}
{{< /hackcss-form >}}
<small>Valid installations use the [Quick Install](/feature/quick-install) or [Upgrade Script](/feature/upgrade-script) and may be checked offline. See [Release Hashes](/feature/release-hashes) for a more thorough approach to validation.</small>
<script>
(function (window, document, undefined) {
"use strict";
const digest = 'KxMbfuJ2nWTL3HOwBj/h34eF+l4t1EG56docvU4ENooyht2NXEiBWZzKhPue5liWNtKOPu21LQHiup8rc6enOw==';
const confirm = form => {
form.digest.readOnly = true;
form.digest.value = digest;
form.integrity.classList.add('form-success');
const message = "Hash verified. Valid installation detected."
form.querySelector('.help-block').innerHTML = message;
};
const validate = (search, form) => {
search.includes(encodeURIComponent(digest)) ? confirm(form) : challenge(form);
};
const challenge = form => {
form.digest.value = digest;
const check = () => {
const classes = form.integrity.classList;
if (form.checkValidity()) {
classes.add('form-success');
classes.remove('form-warning');
} else {
classes.add('form-warning');
classes.remove('form-success');
}
};
form.oninput = check;
document.location.search && (() => {
form.integrity.classList.add('form-error');
document.title = "Invalid Hash | After Dark";
const help = form.querySelector('.help-block');
help.innerHTML = help.innerText = "Unexpected hash. Please try again.";
const alert = document.createElement('div');
alert.classList.add('alert');
alert.classList.add('alert-warning');
alert.innerHTML = '<strong>WARNING:</strong> Your installation is invalid or has been tampered with. Please run the <a href="/feature/upgrade-script">Upgrade Script</a> to download the latest version.';
document.querySelector('main').appendChild(alert);
})();
};
const initialize = () => {
const form = document.forms.validate;
(document.location.search.replace('?digest=','').length)
? validate(location.search, form)
: challenge(form);
};
document.onreadystatechange = () => {
document.readyState === 'interactive' && initialize();
};
})(window, document);
</script>