'use strict';
function decryptAES(password) {
try {
var decryptionError = String(document.getElementById('decryptionError').innerHTML);
var noContentError = String(document.getElementById('noContentError').innerHTML);
} catch (e) {
decryptionError = 'Incorrect Password!';
noContentError = 'No content to display!';
}
try {
let content = CryptoJS.AES.decrypt(document.getElementById('encrypt-blog').innerHTML.trim(), password);
content = content.toString(CryptoJS.enc.Utf8);
content = decodeBase64(content);
content = unescape(content);
if (content === '') {
throw new Error(noContentError); // ???
} else {
document.getElementById('encrypt-blog').style.display = 'inline';
document.getElementById('encrypt-blog').innerHTML = '';
// Use jquery to load some js code
try {
$('#encrypt-blog').html(content);
// NO Style Change here
// NO Style Change here
} catch (e) {
const errorInfo = '
'
+ 'Some errors occurred, check the original file please.'
+ 'Detailed exceptions are shown in console.'
+ '
';
console.error(e);
$('#encrypt-blog').html(errorInfo);
}
document.getElementById('hbe-security').style.display = 'none';
if (document.getElementById('toc-div')) {
document.getElementById('toc-div').style.display = 'inline';
}
}
// Call MathJax to render
if (typeof MathJax !== 'undefined') {
try {
MathJax.Hub.Queue(
['resetEquationNumbers', MathJax.InputJax.TeX,],
['PreProcess', MathJax.Hub,],
['Reprocess', MathJax.Hub,]
);
} catch (e) {
console.log('Can\'t render with MathJax');
}
}
} catch (e) {
alert(decryptionError);
console.log(e);
return false;
}
return true;
}
function htmlDecode(str) {
let s = '';
if (str.length == 0) {
return '';
}
s = str.replace(/>/g, '&');
s = s.replace(/</g, '<');
s = s.replace(/>/g, '>');
s = s.replace(/ /g, ' '); // ??? why not ' '
s = s.replace(/'/g, '\'');
s = s.replace(/"/g, '"');
s = s.replace(/
/g, '\n');
return s;
}
function decodeBase64(content) {
content = CryptoJS.enc.Base64.parse(content);
content = CryptoJS.enc.Utf8.stringify(content);
return content;
}
function setCookie(cookieName, cookieValue, expireMinutes) {
const expireTime = new Date(new Date().getTime() + 1000 * 60 * expireMinutes);
document.cookie = `${cookieName}=${escape(cookieValue)}${expireMinutes == null ? '' : `;expires=${expireTime.toGMTString()}`}`;
}
function getCookie(cookieName) {
if (document.cookie.length > 0) {
let idx = document.cookie.indexOf(`${cookieName}=`);
if (idx != -1) {
idx = idx + cookieName.length + 1;
let idy = document.cookie.indexOf(';', idx);
if (idy == -1) {
idy = document.cookie.length;
}
return unescape(document.cookie.substring(idx, idy));
}
}
return '';
}
function GetUrlRelativePath() {
const url = document.location.toString();
const arrUrl = url.split('//');
const start = arrUrl[1].indexOf('/');
let relUrl = arrUrl[1].substring(start);
if (relUrl.indexOf('?') != -1) {
relUrl = relUrl.split('?')[0];
}
return relUrl;
}
function GenerateCookieName() {
const COOKIE_NAME = 'HBE-PASSWORD';
return COOKIE_NAME + GetUrlRelativePath();
}
// Since you decided to use jQuery.
$(document).ready(
function () {
let password = String(getCookie(GenerateCookieName()));
console.log(`Get password from Cookie:${password}`);
if (password != '') {
if (!decryptAES(password)) {
// Delete cookie
setCookie(COOKIE_NAME, password, -5);
} else {
document.getElementById('encrypt-blog').removeAttribute('style');
$("#encrypt-blog").justifiedGallery({margins: 5, rowHeight: 150});
}
}
document.getElementById('pass').onkeypress = function (keyPressEvent) {
password = String(document.getElementById('pass').value);
if (keyPressEvent.keyCode === 13) {
const result = decryptAES(password);
if (result) {
document.getElementById('encrypt-blog').removeAttribute('style');
$("#encrypt-blog").justifiedGallery({margins: 5, rowHeight: 150});
setCookie(GenerateCookieName(), password, 30);
}
}
};
$('#btn_decrypt').on('click', function () {
password = String(document.getElementById('pass').value);
const result = decryptAES(password);
if (result) {
document.getElementById('encrypt-blog').removeAttribute('style');
$("#encrypt-blog").justifiedGallery({margins: 5, rowHeight: 150});
setCookie(GenerateCookieName(), password, 30);
}
});
}
);