$(function () { var ed = 'ed' in window ? window.ed : {}; var info = { devicename : null, vaultUrl : "https://github.com/RiV-chain/RiV-mesh" }; var basicEDWebsite = "https://github.com/RiV-chain/RiV-mesh"; var authNASScreen = '#authNASScreen'; var isLoggedInMode = false; $.ajaxSetup({cache: false}); var fillAjax = function (url, ajax) { ajax.url = "api/" + url; ajax.contentType = 'application/json'; if ('fillAjax' in ed) { ed.fillAjax(ajax); } return ajax; }; var loadingMode = function (message) { $('#signupScreen').hide(); $('#statusScreen').hide(); $('#loginScreen').hide(); $(authNASScreen).hide(); $('#loadingMessage').text(message); $('#loadingScreen').show(); }; var signupMode = function () { $('#signupScreen').show(); $('#loadingScreen').hide(); $('#statusScreen').hide(); $('#loginScreen').hide(); $('#signupAlert').hide(); $('#inputPeerIPS').val(''); $('#inputPeerPortS').val(''); $('#inputPortConfirm').val(''); }; var statusMode = function () { $('#signupScreen').hide(); $('#loadingScreen').hide(); $('#statusScreen').show(); $('#loginScreen').hide(); }; var errorHandler = function (httpObj) { if (httpObj.status > 300) { $('#loadingScreen').hide(); if (httpObj.status === 401) { $('#signupScreen').hide(); $('#statusScreen').hide(); $('#loginScreen').hide(); $('#loginToYourNAS').prop("href", ed.getNasAuthUrl()); $(authNASScreen).show(); $("#nasLogoutBlock").hide(); } else { console.error(httpObj); } } }; var loginMode = function () { $('#loadingScreen').hide(); $('#statusScreen').hide(); $('#signupScreen').hide(); $('#loginScreen').show(); }; var infoErrorCheckerScheduled = false; var updateInfo = function (response) { info = {}; for (var key in response) { info[key] = response[key]; } for (var key in ed) { info[key] = ed[key]; } }; var checkInfoError = function (response, forceSchedule) { forceSchedule = typeof (forceSchedule) !== "undefined" ? forceSchedule : true; if(isLoggedInMode) { if (response.isAuthenticated === false) { $('#statusAlert').html('Login failed: ' + response.authStatus); $('#statusAlert').addClass("nas-apps-config-form-message-error"); $('#statusAlert').show(); } else { $('#statusAlert').hide(); } } if (response.appStatus === 'error') { $('#applicationAlert').html(response.errorMessage + '

Please resolve error before continue'); $('#applicationAlert').show(); $('#loginBtn').prop('disabled', true); $('#signupBtn').prop('disabled', true); $('#inputPeerIP').prop('disabled', true); $('#inputPeerPort').prop('disabled', true); $('#inputPeerIPS').prop('disabled', true); $('#inputPeerPortS').prop('disabled', true); $('#inputPortConfirm').prop('disabled', true); } else { $('#applicationAlert').hide(); $('#loginBtn').prop('disabled', false); $('#signupBtn').prop('disabled', false); $('#inputPeerIP').prop('disabled', false); $('#inputPeerPort').prop('disabled', false); $('#inputPeerIPS').prop('disabled', false); $('#inputPeerPortS').prop('disabled', false); $('#inputPortConfirm').prop('disabled', false); } if(infoErrorCheckerScheduled !== true || forceSchedule === true) { $.ajax(fillAjax('getself', {})).done(function (response) { updateInfo(response); setTimeout(function(){checkInfoError(response, true);}, 1000); }); infoErrorCheckerScheduled = true; } }; var startMode = function () { $('#loginAlert').hide(); $('#inputPeerIP').val(''); $('#inputPeerPort').val(''); $.ajax(fillAjax('getself', {})).done(function (response) { if (ed.useAuthNASRichScreen) { $("#nasLogoutBlock").show(); $('.nas-user-name').text(ed.getNasUser()); } loginMode(); if (response.size !== 0) { isLoggedInMode = true; statusMode(); } var self = response; checkInfoError(response); $('#version').html((self.build_version !== null ? self.build_version : ' ') + (self.build_name !== null ? (' (' + self.build_name + ')') : '')); $('.nas-apps-config-form-app-version').show(); $('#username').text(self.address); updateInfo(response); }).fail(errorHandler); $('#nasLoginAlert').hide(); $('#nasInputPassword').val(''); }; var waitForEvent = function (eventType, onSuccess, onError, timeout, startTime) { startTime = typeof (startTime) === "undefined" ? new Date() : startTime; timeout = typeof (timeout) === "undefined" ? Infinity : timeout; setTimeout(function () { if (((new Date()) - startTime) > timeout) { onError("timeout"); } else { $.ajax(fillAjax('events', { method: 'GET' })).done(function (response) { for (var k in response) { if (response[k].sourceType === eventType) { $.ajax(fillAjax('event/' + k, { method: 'DELETE' })); if (response[k].type === 'success') onSuccess(); else if (response[k].type === 'error') onError(response[k].errorMessage); return; } } waitForEvent(eventType, onSuccess, onError, timeout, startTime); }).fail(function (httpObj) { if (httpObj.status === 0) { waitForEvent(eventType, onSuccess, onError, timeout, startTime); } else { errorHandler(httpObj); } }); } }, 500); }; var loginDoneHandler = function () { function onSuccess() { //Show logged in screen $('#username').text(($('#inputPeerIPS').val() === "") ? $('#inputPeerIP').val() : $('#inputPeerIPS').val()); statusMode(); $('#statusAlert').html($('#loginSuccess').html()); $('#statusAlert').removeClass("nas-apps-config-form-message-error"); $('#statusAlert').show(); } function onError(message) { if (message === "timeout") { $.ajax(fillAjax('info', {})).done(function (response) { if (response.isAuthenticated === false) { waitForEvent("login", onSuccess, onError, 30000); } else { onSuccess(); } }).fail(errorHandler); } else { if (message === "PEER_UNAVAILABLE" || message === "DN_UNRESOLVED") { message = "Unable to connect to a peer"; } $('#loginAlert').html(message); $('#loginAlert').show(); loginMode(); } } waitForEvent("login", onSuccess, onError, 30000); }; $('#loginBtn').click(function (e) { e.preventDefault(); if ($('#loadingScreen').is(":visible")) return; $('#inputPeerIP').val($('#inputPeerIP').val().trim()); if ($('#inputPeerIP').val().length === 0 || $('#inputPeerPort').val().trim().length === 0) { return; } $('#loginAlert').hide(); loadingMode($('#loginLoadingMessage').text()); $.ajax(fillAjax('user', { method: 'POST', data: JSON.stringify({user: $('#inputPeerIP').val(), pass: $('#inputPeerPort').val()}) })).done(loginDoneHandler).statusCode({202: loginDoneHandler}).fail(errorHandler); }); $("#inputPeerIP, #inputPeerPort").keypress(function (e) { if (e.which === 13) { $("#loginBtn").trigger("click"); } }); $('#logoutBtn').click(function (e) { e.preventDefault(); if ($('#loadingScreen').is(":visible")) return; loadingMode($('#logoutLoadingMessage').text()); var doneHandler = function () { $('#inputPeerIP').val(''); $('#inputPeerPort').val(''); setTimeout(function () { location.reload(); }, 5000); }; $.ajax(fillAjax('user', { method: 'DELETE' })).done(doneHandler).statusCode({202: doneHandler}).fail(errorHandler); }); $('#manageBackups').click(function (e) { e.preventDefault(); $.ajax(fillAjax('autologin', { async: false })).done(function (response) { var params = response.autologinToken; params["tab"] = "naswizard"; params["dname"] = info.devicename; window.open(info.vaultUrl + "/account/login.aspx?" + $.param(params), "_blank"); }).fail(errorHandler); }); var currentLocation = function () { var url = location.href; // http://xxx// -> http://xxx// if (url.slice(-1) === "/") { return url; // http://xxx//index.html -> http://xxx// } else if (url.lastIndexOf("/") < url.lastIndexOf(".")) { return url.substring(0, url.lastIndexOf("/") + 1); // http://xxx/ -> http://xxx// } else { return url + "/"; } }; $('#logFileBtn').click(function (e) { e.preventDefault(); window.open(currentLocation().split("#")[0] + 'log', "_blank"); }); $('#getDiagFileBtn').click(function (e) { e.preventDefault(); window.open(currentLocation().split("#")[0] + 'diagnostics.zip'); }); $('#checkPeerBtn').click(function (e) { e.preventDefault(); window.open(info.vaultUrl + "/account/check_peer?UName=" + encodeURIComponent($('#inputPeerIP').val().trim()), "_blank"); }); $('#goToSignupBtn').click(function (e) { e.preventDefault(); signupMode(); }); $('#signupBackToLoginBtn').click(function (e) { e.preventDefault(); startMode(); }); var signupDoneHandler = function () { waitForEvent("register", loginDoneHandler, function (message) { $('#loadingScreen').hide(); $('#signupScreen').show(); $('#signupAlert').html(message); $('#signupAlert').show(); }); }; $('#signupBtn').click(function (e) { e.preventDefault(); if ($('#loadingScreen').is(":visible")) return; if ($('#inputPeerPortS').val() !== $('#inputPortConfirm').val()) { $('#signupAlert').text($('#hostFormatError').text()); $('#signupAlert').show(); return; } $('#inputPeerIPS').val($('#inputPeerIPS').val().trim()); loadingMode($('#signupLoadingMessage').text()); $.ajax(fillAjax('user', { method: 'PUT', data: JSON.stringify({user: $('#inputPeerIPS').val(), pass: $('#inputPeerPortS').val(), c: ed.partnerId}) })).done(signupDoneHandler).statusCode({202: signupDoneHandler}).fail(errorHandler); }); //signupBtn.click $("#inputPeerIPS, #inputPeerPortS, #inputPortConfirm").keypress(function (e) { if (e.which === 13) { $("#signupBtn").trigger("click"); } }); var nasLoginSuccess = function () { $('.nas-user-name').text(ed.getNasUser()); }; var nasLoginFailure = function (message) { //Show notification: IP/DN errors if (typeof message !== 'undefined') { $('#nasLoginAlert').html(message); } else { $('#nasLoginAlert').text($('#ipOrDNError').text()); } $(authNASScreen).show(); $('#nasInputPassword').val(''); $('#nasLoginAlert').show(); $('#loadingScreen').hide(); }; $('#nasLoginBtn').click(function (e) { e.preventDefault(); $('#nasInputUser').val($('#nasInputUser').val().trim()); if ($('#nasInputUser').val().length === 0 || $('#nasInputPassword').val().trim().length === 0) { return; } $('#nasLoginAlert').hide(); loadingMode($('#loginLoadingMessage').text()); ed.nasLoginCall(nasLoginSuccess, nasLoginFailure); }); $("#nasInputUser, #nasInputPassword").keypress(function (e) { if (e.which === 13) { $("#nasLoginBtn").trigger("click"); return false; } }); $('#nasLogoutBtn').click(function (e) { e.preventDefault(); ed.nasLogoutCall(); $("#nasLogoutBlock").hide(); window.location.reload(); }); var main = function () { document.getElementById("dynamic_body").style.display = "block"; $('title').text(ed.applicationName); $('.nas-os-name').text(ed.nasOSName); if ('nasVisitEDWebsiteLogin' in ed) { $('.nas-visit-ed-website-login').prop("href", ed.nasVisitEDWebsiteLogin); } else { $('.nas-visit-ed-website-login').prop("href", basicEDWebsite); } if ('nasVisitEDWebsiteSignup' in ed) { $('.nas-visit-ed-website-signup').prop("href", ed.nasVisitEDWebsiteSignup); } else { $('.nas-visit-ed-website-signup').prop("href", basicEDWebsite); } if ('nasVisitEDWebsiteLoggedin' in ed) { $('.nas-visit-ed-website-loggedin').prop("href", ed.nasVisitEDWebsiteLoggedin); } else { $('.nas-visit-ed-website-loggedin').prop("href", basicEDWebsite); } if ('signingUpMessageHtml' in ed) { $('#signingUpMessage').html(ed.signingUpMessageHtml); } if ('signingUpPropositionMessageHtml' in ed) { $('#signingUpPropositionMessage').html(ed.signingUpPropositionMessageHtml); } if ('useAuthNASRichScreen' in ed && ed.useAuthNASRichScreen) { authNASScreen = '#authNASRichScreen'; } else { ed.useAuthNASRichScreen = false; } startMode(); }; main(); });