let messages; var language = "AUTO"; let index_info; ///Change language/// let currentLangFile = ''; function loadLanguage(language) { const langFile = `/js/langu/${language === "AUTO" ? checkUserLang() : language}.js`; sessionStorage.setItem("lang", language === "AUTO" ? "AUTO" : language); const langURL = window.location.origin + langFile; if (currentLangFile !== langURL) { if (currentLangFile) removeOldLanguageFile(currentLangFile); loadScript(langURL).then( ()=>{ messages = langObj; console.log('loadLanguage done'); login_changeLanguage(); }); } else { login_changeLanguage(); } } function loadScript(url) { return new Promise((resolve, reject) => { const script = document.createElement("script"); script.src = url; script.type = "text/javascript"; script.async = true; script.onload = () => resolve(`Script loaded: ${url}`); script.onerror = () => reject(new Error(`Failed to load script: ${url}`)); document.head.appendChild(script); }); } function checkUserLang() { const userLangMap = { "zh-TW": "TCH", "zh-CN": "SCH", "cs": "CZE", "da": "DAN", "nl": "DUT", "fi": "FIN", "fr": "FRE", "de": "GER", "el": "GRK", "hu": "HUN", "it": "ITA", "ja": "JPN", "ko": "KOR", "no": "NOR", "pl": "POL", "pt": "POR", "ro": "ROM", "ru": "RUS", "sv": "SWE", "th": "THA", "tr": "TUR" }; const langCode = userLangMap[navigator.language] || userLangMap[navigator.language.split('-')[0]] || "EN"; return langCode; } function login_changeLanguage() { const elementsToTranslate = document.querySelectorAll('[langId]'); const languageData = messages; elementsToTranslate.forEach(element => { const key = element.getAttribute('langId'); if (languageData[key]) element.innerHTML = languageData[key]; }); $(".account-user-password").attr("placeholder", messages['login__passwordText']); } ///End Change language/// function checkLoginStatus(count) { if(count-- < 0 ) { $(".div-err-msg").removeClass("hide").text(messages['login__authorizedError']); return ; } $.ajax({ url: './cgi/get.cgi?cmd=home_loginStatus', type: 'GET', dataType: 'json', timeout:5000, success: (response) => { if (response.data.status == "fail") { $(".div-err-msg").removeClass("hide").text(messages['login__authorizedError']); } else if (response.data.status == "ok") { response.data.default?$('.popup_dialog.syspassword').removeClass('hide'):window.location.href = './home.html'; } else { setTimeout(checkLoginStatus, 1000,count); } }, error: () => { console.log("get login status failed"); setTimeout(checkLoginStatus, 1000,count); } }); } function loginClick() { let str = "" let oldPwd = $('#loginForm input#password')[0].value; str = paramAppend("", "username", "admin"); str = paramAppend(str, "password", encodeURIComponent(oldPwd)); str = paramAppend(str, "priv", 15); let formData = genPOST_FormData(str); $.ajax({ url: "/cgi/set.cgi?cmd=home_loginAuth", type: 'POST', data: JSON.stringify(formData), dataType: "json", success: (res) => { //console.log(res); //console.log("sent login success"); setTimeout(checkLoginStatus, 200 ,3); }, error: () => { console.log("sent login failed"); }, complete: () => { }, }); } function get_basicInfo() { function get_basicInfo_cb(jsonObj) { if(jsonObj.data.hostname) document.title = jsonObj.data.hostname else if(jsonObj.data.modelName) document.title = jsonObj.data.modelName if (jsonObj.data.fwVer) { if (localStorage.index_info == JSON.stringify(jsonObj.data)) { index_info = jsonObj.data; return; } else { localStorage.index_info = JSON.stringify(jsonObj.data); } } //window.location.reload(true); }//get_basicInfo_cb $.ajax({ url: '/cgi/get.cgi?cmd=sys_sysinfo_non_Login', type: 'GET', dataType: 'json', success: (response) => { get_basicInfo_cb(response); }, error: () => { console.log("get sys_sysinfo_non_Login failed"); } }); }//get_basicInfo function add_index_loading(e, type, msg) { let div; switch (type) { case "other_msg": div = '
\
\
\ \ \
\
' + '
\
\
'; break; } $(e).find('div.loading_bg').length==0?$(e).prepend(div):null; msg?$(e).find('div.loading_bg').find('div.loading_text').html(msg):null; } function remove_loading(div) { $(div).find(".loading_bg").remove(); } function varify_new_password(){ function password_test(string) { //const pwd_regex = new RegExp("^[A-Za-z\d~!@#$%^&*()_+=\-`[\]\\{}|;':",./<>? ]{8,20}$"); //return/^ [A - Za - z\d~!@#$ %^&* ()_ +=\-`[\]\\{}|;':",./<>? ]{0,20}$/ return /^[A-Za-z\d~!@#$%^&*()_+=\-`[\]\\{} |; ':",./<>? ]{8,20}$/.test(string) }//password_test let anyError = 0; let errMsg = messages.errorMessage__password;//default error string let newPwd = $('.syspassword [name="new_pwd"]')[0].value; let cfmPwd = $('.syspassword [name="Password2"]')[0].value; $('.syspassword .new_pwd .errorMessage').addClass("invisible"); $('.syspassword .new_pwd_comfirm .errorMessage').addClass("invisible"); /* new pwd */ if (password_test(newPwd) != true) { anyError = 1; $('.syspassword .new_pwd .errorMessage').text(errMsg); $('.syspassword .new_pwd .errorMessage').removeClass("invisible") } /* comfirm pwd */ if (password_test(cfmPwd) != true) { anyError = 1; $('.syspassword .new_pwd_comfirm .errorMessage').text(errMsg); $('.syspassword .new_pwd_comfirm .errorMessage').removeClass("invisible") } else if (newPwd != cfmPwd) { anyError = 1; $('.syspassword .new_pwd_comfirm .errorMessage').text(messages.systemPwd__notMatch); $('.syspassword .new_pwd_comfirm .errorMessage').removeClass("invisible") } /* apply button */ if (anyError) { $('.syspassword .modal-footer .q-button').attr("disabled", "disabled"); } else { $('.syspassword .modal-footer .q-button').removeAttr("disabled"); } return anyError; } function set_index_new_pwd() { function set_index_new_pwd_add_loading(countdownSec){ if(countdownSec === 0) return remove_loading("#app", "other_msg"); let msg = messages.header__logout + " " + countdownSec; add_index_loading("#app", "other_msg" , msg ); setTimeout( set_index_new_pwd_add_loading , 1000 , countdownSec-1 ); } let str = "" let oldPwd = $('#loginForm input#password')[0].value; let newPwd = $('.syspassword [name="new_pwd"]')[0].value; str = paramAppend("", "userName", "admin"); if(varify_new_password() != 0 ) return ; str = paramAppend(str, "old_password", encodeURIComponent(oldPwd)); str = paramAppend(str, "password", encodeURIComponent(newPwd)); str = paramAppend(str, "priv", 15); let formData = genPOST_FormData(str); $.ajax({ url: '/cgi/set.cgi?cmd=sys_acctEdit', type: 'POST', data: JSON.stringify(formData), processData: false, contentType: false, dataType: "json", success: (res) => { console.log(res); if (res.status == "ok") { set_index_new_pwd_add_loading(5); setTimeout(index_logout, 5000) } else if(res.msg) { $('.syspassword .new_pwd_comfirm .errorMessage').text(res.msg); $('.syspassword .new_pwd_comfirm .errorMessage').removeClass("invisible"); } }, error: () => { $('.syspassword .new_pwd_comfirm .errorMessage').text("set_index_new_pwd fail"); $('.syspassword .new_pwd_comfirm .errorMessage').removeClass("invisible"); }, complete: () => { }, }); }//set_index_new_pwd function index_logout(new_ip) { function logout_cb(new_ip) { if(new_ip){ //console.log("goto :" + new_ip ); window.location = new_ip; } else{ window.location.href = "/"; } } let str = "" let formData = genPOST_FormData(str); $.ajax({ url: '/cgi/set.cgi?cmd=home_logout', type: 'POST', data: JSON.stringify(formData), processData: false, contentType: false, timeout: 20000, success: (res) => { let jsonObj = JSON.parse(res); if (jsonObj["status"] == "ok") { console.log("logout ok"); } }, error: () => { console.log("logout fail"); }, complete: () => { logout_cb(new_ip); }, }); }//index_logout function ready_init(){ //history.pushState({}, "", "/"); get_basicInfo(); langObj?(messages=langObj):null; if (localStorage.language) { language = localStorage.language; } loadLanguage(language); localStorage.removeItem('chek_fw_new_when_doc_ready'); } function varify_login_password() { const regex = /^[A-Za-z\d~!@#$%^&*()_+=\-`[\]\\{} |; ':",./<>? ]{8,20}$/; el = $('[name="password"]'); if( el && regex.test(el.val()) ){ $('#loginForm .div-err-msg').addClass('hide'); return true; } else{ $('#loginForm .div-err-msg').html(messages.login__authorizedError); $('#loginForm .div-err-msg').removeClass('hide'); return false; } }//varify_login_password $(document).ready(function () { ready_init(); /* Login */ $('.content').on('click', '#btnLogin', function () { varify_login_password()?loginClick():null; }); $('.content').on("keydown", '[name="password"]', function (event) { //console.log("event.keyCode: " + event.keyCode); if (event.keyCode == 13 ) { varify_login_password()?loginClick():null; } else { $('#loginForm .div-err-msg').addClass('hide'); } }); $('.content').on('click', '.checkbox', function () { if ($('.content .checkbox').hasClass('checked') === false) { $('.content .checkbox').addClass('checked'); } else { //default $('.content .checkbox').removeClass('checked'); } }); $('.syspassword, .login_pwd').on('click', '.div-password-eye.icon-view', function (e) { let inputField = $(this).closest('div').find(".form-control, .account-user-password"); if (inputField.attr("type") === "text") { inputField.attr("type", "password"); } else { inputField.attr("type", "text"); } $(this).toggleClass("active"); }); $('.syspassword').on("input propertychange", 'input', function () { varify_new_password(); }); $('.syspassword').on('click', '.modal-footer .q-button', function (e) { console.log("click") if(varify_new_password) set_index_new_pwd(); }); $('.account-user-password').on('focus', function() { $(".div-password-eye.icon-view").removeClass("hide"); }); $('.account-user-password').on('blur', function() { setTimeout(function() { if (!$(".div-password-eye.icon-view").is(":focus")) { $(".div-password-eye.icon-view").addClass("hide"); }else{ $(this).addClass("hide"); } }, 0); }); $('.div-password-eye.icon-view').on('mousedown', function(e) { let LogInPwdInput = $('.account-user-password'); LogInPwdInput.onblur = null; setTimeout(function() { LogInPwdInput.focus(); LogInPwdInput.onblur = blur; }, 1); }); })//document.ready