Minor code formatting adjustments
This commit is contained in:
parent
fe3b9e1637
commit
e23ad3b0d5
266
www/js/app.js
266
www/js/app.js
@ -4,28 +4,30 @@
|
|||||||
|
|
||||||
userinfo = null;
|
userinfo = null;
|
||||||
|
|
||||||
document.addEventListener("deviceready", function () {
|
/**
|
||||||
if (cordova.platformId == 'android') {
|
* Switches the app to the given screen.
|
||||||
StatusBar.backgroundColorByHexString("#1976d2");
|
* @param {String} screenname The name of the screen to show.
|
||||||
}
|
* @param {String} effect FADE, SLIDE, or nothing
|
||||||
|
* @returns {undefined}
|
||||||
// Enable/disable jQuery animations depending on user preference
|
*/
|
||||||
$.fx.off = !(localStorage.getItem("animations") === null || localStorage.getItem("animations") === "true");
|
function openscreen(screenname, effect) {
|
||||||
|
if (effect === 'FADE') {
|
||||||
/* Fade out alerts */
|
$('#content-zone').fadeOut(300, function () {
|
||||||
$(".alert .close").click(function (e) {
|
$('#content-zone').load("views/" + screenname + ".html", function () {
|
||||||
$(this).parent().fadeOut("slow");
|
$('#content-zone').fadeIn(300);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
if (localStorage.getItem("setupcomplete")) {
|
} else if (effect === 'SLIDE') {
|
||||||
getuserinfo(function () {
|
$('#content-zone').slideToggle('400', function () {
|
||||||
openscreen("home");
|
$('#content-zone').load("views/" + screenname + ".html", function () {
|
||||||
});
|
$('#content-zone').slideToggle('400');
|
||||||
|
});
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
openscreen("setup1");
|
$('#content-zone').load("views/" + screenname + ".html");
|
||||||
}
|
}
|
||||||
setTimeout(navigator.splashscreen.hide, 1000);
|
currentscreen = screenname;
|
||||||
}, false);
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch user info (name, email, etc) from the server and save to the global
|
* Fetch user info (name, email, etc) from the server and save to the global
|
||||||
@ -36,67 +38,42 @@ document.addEventListener("deviceready", function () {
|
|||||||
function getuserinfo(callback) {
|
function getuserinfo(callback) {
|
||||||
$(".loading-text").text("Loading account...");
|
$(".loading-text").text("Loading account...");
|
||||||
$.post(localStorage.getItem("syncurl"), {
|
$.post(localStorage.getItem("syncurl"), {
|
||||||
username: localStorage.getItem("username"),
|
username: localStorage.getItem("username"),
|
||||||
key: localStorage.getItem("key"),
|
key: localStorage.getItem("key"),
|
||||||
password: localStorage.getItem("password"),
|
password: localStorage.getItem("password"),
|
||||||
action: "user_info"
|
action: "user_info"
|
||||||
}, function (data) {
|
}, function (data) {
|
||||||
if (data.status === 'OK') {
|
if (data.status === 'OK') {
|
||||||
$(".loading-text").text("Loading...");
|
$(".loading-text").text("Loading...");
|
||||||
userinfo = data.info;
|
userinfo = data.info;
|
||||||
if (typeof callback == 'function') {
|
if (typeof callback == 'function') {
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
navigator.notification.alert(data.msg, null, "Error", 'Dismiss');
|
navigator.notification.alert(data.msg, null, "Error", 'Dismiss');
|
||||||
openscreen("homeloaderror");
|
openscreen("homeloaderror");
|
||||||
}
|
}
|
||||||
}, "json").fail(function () {
|
}, "json").fail(function () {
|
||||||
navigator.notification.alert("Could not connect to the server. Try again later.", null, "Error", 'Dismiss');
|
navigator.notification.alert("Could not connect to the server. Try again later.", null, "Error", 'Dismiss');
|
||||||
openscreen("homeloaderror");
|
openscreen("homeloaderror");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Switches the app to the given screen.
|
|
||||||
* @param {String} screenname The name of the screen to show.
|
|
||||||
* @param {String} effect FADE, SLIDE, or nothing
|
|
||||||
* @returns {undefined}
|
|
||||||
*/
|
|
||||||
function openscreen(screenname, effect) {
|
|
||||||
if (effect === 'FADE') {
|
|
||||||
$('#content-zone').fadeOut(300, function () {
|
|
||||||
$('#content-zone').load("views/" + screenname + ".html", function () {
|
|
||||||
$('#content-zone').fadeIn(300);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
} else if (effect === 'SLIDE') {
|
|
||||||
$('#content-zone').slideToggle('400', function () {
|
|
||||||
$('#content-zone').load("views/" + screenname + ".html", function () {
|
|
||||||
$('#content-zone').slideToggle('400');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
$('#content-zone').load("views/" + screenname + ".html");
|
|
||||||
}
|
|
||||||
currentscreen = screenname;
|
|
||||||
}
|
|
||||||
|
|
||||||
function openfragment(fragment, target, effect) {
|
function openfragment(fragment, target, effect) {
|
||||||
if (effect === 'FADE') {
|
if (effect === 'FADE') {
|
||||||
$(target).fadeOut('slow', function () {
|
$(target).fadeOut('slow', function () {
|
||||||
$(target).load("views/" + fragment + ".html", function () {
|
$(target).load("views/" + fragment + ".html", function () {
|
||||||
$(target).fadeIn('slow');
|
$(target).fadeIn('slow');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} else if (effect === 'SLIDE') {
|
} else if (effect === 'SLIDE') {
|
||||||
$(target).slideToggle('400', function () {
|
$(target).slideToggle('400', function () {
|
||||||
$(target).load("views/" + fragment + ".html", function () {
|
$(target).load("views/" + fragment + ".html", function () {
|
||||||
$(target).slideToggle('400');
|
$(target).slideToggle('400');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
$(target).load("views/" + fragment + ".html");
|
$(target).load("views/" + fragment + ".html");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,45 +89,45 @@ function openfragment(fragment, target, effect) {
|
|||||||
function setnavbar(type, title, returnscreen) {
|
function setnavbar(type, title, returnscreen) {
|
||||||
var navbar = $('#navbar-header');
|
var navbar = $('#navbar-header');
|
||||||
if (type == false) {
|
if (type == false) {
|
||||||
$('#navbar').css('display', 'none');
|
$('#navbar').css('display', 'none');
|
||||||
$('#content-zone').css('margin-top', '0px');
|
$('#content-zone').css('margin-top', '0px');
|
||||||
} else {
|
} else {
|
||||||
if (cordova.platformId == 'android') {
|
if (cordova.platformId == 'android') {
|
||||||
StatusBar.backgroundColorByHexString("#1976d2");
|
StatusBar.backgroundColorByHexString("#1976d2");
|
||||||
window.plugins.headerColor.tint("#2196f3");
|
window.plugins.headerColor.tint("#2196f3");
|
||||||
} else {
|
} else {
|
||||||
StatusBar.backgroundColorByHexString("#2196f3");
|
StatusBar.backgroundColorByHexString("#2196f3");
|
||||||
}
|
}
|
||||||
$('#navbar').css('display', 'initial');
|
$('#navbar').css('display', 'initial');
|
||||||
$('#content-zone').css('margin-top', '75px');
|
$('#content-zone').css('margin-top', '75px');
|
||||||
if (returnscreen === undefined) {
|
if (returnscreen === undefined) {
|
||||||
returnscreen = "home";
|
returnscreen = "home";
|
||||||
_returnscreen = null;
|
_returnscreen = null;
|
||||||
} else {
|
} else {
|
||||||
_returnscreen = returnscreen;
|
_returnscreen = returnscreen;
|
||||||
}
|
}
|
||||||
navbar.fadeOut(150, function () {
|
navbar.fadeOut(150, function () {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case "home":
|
case "home":
|
||||||
navbar.html('<span class="navbar-brand" style="color: white;">Business</span><span class="navbar-brand pull-right"><span onclick="openscreen(\'mobilecode\', \'FADE\')"><img src="icons/ic_lock.svg" alt="" /></span> <span onclick="openscreen(\'otp\', \'FADE\')"><img src="icons/ic_vpn_key.svg" alt="" /></span> <span onclick="openscreen(\'settings\', \'FADE\')"><img src="icons/ic_settings.svg" alt="" /></span></span>');
|
navbar.html('<span class="navbar-brand" style="color: white;">Business</span><span class="navbar-brand pull-right"><span onclick="openscreen(\'mobilecode\', \'FADE\')"><img src="icons/ic_lock.svg" alt="" /></span> <span onclick="openscreen(\'otp\', \'FADE\')"><img src="icons/ic_vpn_key.svg" alt="" /></span> <span onclick="openscreen(\'settings\', \'FADE\')"><img src="icons/ic_settings.svg" alt="" /></span></span>');
|
||||||
break;
|
break;
|
||||||
case "setup":
|
case "setup":
|
||||||
navbar.html('<span class="navbar-brand" style="color: white;">Business</span><span class="navbar-brand pull-right"><span onclick="openscreen(\'otp\', \'FADE\')"><img src="icons/ic_vpn_key.svg" alt="" /></span> <span onclick="openscreen(\'settings\', \'FADE\')"><img src="icons/ic_settings.svg" alt="" /></span></span>');
|
navbar.html('<span class="navbar-brand" style="color: white;">Business</span><span class="navbar-brand pull-right"><span onclick="openscreen(\'otp\', \'FADE\')"><img src="icons/ic_vpn_key.svg" alt="" /></span> <span onclick="openscreen(\'settings\', \'FADE\')"><img src="icons/ic_settings.svg" alt="" /></span></span>');
|
||||||
break;
|
break;
|
||||||
case "settings":
|
case "settings":
|
||||||
navbar.html('<span class="navbar-brand pull-left" style="color: white;" onclick="openscreen(\'home\', \'FADE\')"><img src="icons/ic_arrow-back.svg" /></span><span class="navbar-brand navbar-title" style="color: white;" onclick="openscreen(\'home\', \'FADE\')">Settings</span>');
|
navbar.html('<span class="navbar-brand pull-left" style="color: white;" onclick="openscreen(\'home\', \'FADE\')"><img src="icons/ic_arrow-back.svg" /></span><span class="navbar-brand navbar-title" style="color: white;" onclick="openscreen(\'home\', \'FADE\')">Settings</span>');
|
||||||
break;
|
break;
|
||||||
case "otp":
|
case "otp":
|
||||||
navbar.html('<span class="navbar-brand pull-left" style="color: white;" onclick="openscreen(\'home\', \'FADE\')"><img src="icons/ic_arrow-back.svg" /></span><span class="navbar-brand navbar-title" style="color: white;" onclick="openscreen(\'home\', \'FADE\')">Auth Keys</span><span class="navbar-brand pull-right" onclick="openscreen(\'addotp\', \'FADE\')"><img src="icons/ic_add.svg" alt="" /></span>');
|
navbar.html('<span class="navbar-brand pull-left" style="color: white;" onclick="openscreen(\'home\', \'FADE\')"><img src="icons/ic_arrow-back.svg" /></span><span class="navbar-brand navbar-title" style="color: white;" onclick="openscreen(\'home\', \'FADE\')">Auth Keys</span><span class="navbar-brand pull-right" onclick="openscreen(\'addotp\', \'FADE\')"><img src="icons/ic_add.svg" alt="" /></span>');
|
||||||
break;
|
break;
|
||||||
case "app":
|
case "app":
|
||||||
navbar.html('<span class="navbar-brand pull-left" style="color: white;" onclick="openscreen(\'' + returnscreen + '\', \'FADE\')"><img src="icons/ic_arrow-back.svg" /></span><span class="navbar-brand navbar-title" style="color: white;" onclick="openscreen(\'' + returnscreen + '\', \'FADE\')">' + title + '</span>');
|
navbar.html('<span class="navbar-brand pull-left" style="color: white;" onclick="openscreen(\'' + returnscreen + '\', \'FADE\')"><img src="icons/ic_arrow-back.svg" /></span><span class="navbar-brand navbar-title" style="color: white;" onclick="openscreen(\'' + returnscreen + '\', \'FADE\')">' + title + '</span>');
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
navbar.html('<span class="navbar-brand" style="color: white;">Business</span>');
|
navbar.html('<span class="navbar-brand" style="color: white;">Business</span>');
|
||||||
}
|
}
|
||||||
navbar.fadeIn(150);
|
navbar.fadeIn(150);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,11 +144,11 @@ function setnavbar(type, title, returnscreen) {
|
|||||||
*/
|
*/
|
||||||
function openapp(id, api, url, icon, title, injectcode, shownavbar) {
|
function openapp(id, api, url, icon, title, injectcode, shownavbar) {
|
||||||
$('#content-zone').fadeOut(300, function () {
|
$('#content-zone').fadeOut(300, function () {
|
||||||
$('#content-zone').load("views/app.html", function () {
|
$('#content-zone').load("views/app.html", function () {
|
||||||
$('#content-zone').fadeIn(300, function () {
|
$('#content-zone').fadeIn(300, function () {
|
||||||
launchapp(id, api, url, icon, title, injectcode, shownavbar);
|
launchapp(id, api, url, icon, title, injectcode, shownavbar);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,8 +160,8 @@ function openapp(id, api, url, icon, title, injectcode, shownavbar) {
|
|||||||
*/
|
*/
|
||||||
function openmodal(filename, modalselector) {
|
function openmodal(filename, modalselector) {
|
||||||
$('#modal-load-box').load("views/" + filename + ".html", null, function (x) {
|
$('#modal-load-box').load("views/" + filename + ".html", null, function (x) {
|
||||||
$(modalselector).css('z-index', 9999999);
|
$(modalselector).css('z-index', 9999999);
|
||||||
$(modalselector).modal('show');
|
$(modalselector).modal('show');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -201,28 +178,51 @@ function restartApplication() {
|
|||||||
navigator.splashscreen.show();
|
navigator.splashscreen.show();
|
||||||
// We're doing the timeout so we don't run afoul of server-side rate limiting
|
// We're doing the timeout so we don't run afoul of server-side rate limiting
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
window.location = "index.html";
|
window.location = "index.html";
|
||||||
}, 3000);
|
}, 3000);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle back button to close things
|
// Handle back button to close things
|
||||||
document.addEventListener("backbutton", function (event) {
|
document.addEventListener("backbutton", function (event) {
|
||||||
if (localStorage.getItem("setupcomplete")) {
|
if (localStorage.getItem("setupcomplete")) {
|
||||||
if ($("#appframe").length && historyctr > 0) {
|
if ($("#appframe").length && historyctr > 0) {
|
||||||
console.log("going back");
|
console.log("going back");
|
||||||
var iframe = document.getElementById("appframe");
|
var iframe = document.getElementById("appframe");
|
||||||
iframe.contentWindow.postMessage("goback", "*");
|
iframe.contentWindow.postMessage("goback", "*");
|
||||||
historyctr--;
|
historyctr--;
|
||||||
} else if (_returnscreen != null) {
|
} else if (_returnscreen != null) {
|
||||||
openscreen(_returnscreen, "FADE");
|
openscreen(_returnscreen, "FADE");
|
||||||
_returnscreen = null;
|
_returnscreen = null;
|
||||||
} else {
|
} else {
|
||||||
openscreen("home", "FADE");
|
openscreen("home", "FADE");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (_returnscreen != null) {
|
if (_returnscreen != null) {
|
||||||
openscreen(_returnscreen, "FADE");
|
openscreen(_returnscreen, "FADE");
|
||||||
_returnscreen = null;
|
_returnscreen = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
|
document.addEventListener("deviceready", function () {
|
||||||
|
if (cordova.platformId == 'android') {
|
||||||
|
StatusBar.backgroundColorByHexString("#1976d2");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable/disable jQuery animations depending on user preference
|
||||||
|
$.fx.off = !(localStorage.getItem("animations") === null || localStorage.getItem("animations") === "true");
|
||||||
|
|
||||||
|
/* Fade out alerts */
|
||||||
|
$(".alert .close").click(function (e) {
|
||||||
|
$(this).parent().fadeOut("slow");
|
||||||
|
});
|
||||||
|
|
||||||
|
if (localStorage.getItem("setupcomplete")) {
|
||||||
|
getuserinfo(function () {
|
||||||
|
openscreen("home");
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
openscreen("setup1");
|
||||||
|
}
|
||||||
|
setTimeout(navigator.splashscreen.hide, 1000);
|
||||||
|
}, false);
|
@ -9,12 +9,12 @@
|
|||||||
// This code from
|
// This code from
|
||||||
// https://stackoverflow.com/a/6177502
|
// https://stackoverflow.com/a/6177502
|
||||||
$.cssHooks.backgroundColor = {
|
$.cssHooks.backgroundColor = {
|
||||||
get: function(elem) {
|
get: function (elem) {
|
||||||
if (elem.currentStyle)
|
if (elem.currentStyle)
|
||||||
var bg = elem.currentStyle["backgroundColor"];
|
var bg = elem.currentStyle["backgroundColor"];
|
||||||
else if (window.getComputedStyle)
|
else if (window.getComputedStyle)
|
||||||
var bg = document.defaultView.getComputedStyle(elem,
|
var bg = document.defaultView.getComputedStyle(elem,
|
||||||
null).getPropertyValue("background-color");
|
null).getPropertyValue("background-color");
|
||||||
if (bg.search("rgb") == -1)
|
if (bg.search("rgb") == -1)
|
||||||
return bg;
|
return bg;
|
||||||
else {
|
else {
|
||||||
@ -92,10 +92,10 @@ $(document).ready(function () {
|
|||||||
$(ref).trigger("change");
|
$(ref).trigger("change");
|
||||||
console.log("app: received " + event.data);
|
console.log("app: received " + event.data);
|
||||||
} else if (event.data.startsWith("goback")) {
|
} else if (event.data.startsWith("goback")) {
|
||||||
console.log("app: received " + event.data);
|
console.log("app: received " + event.data);
|
||||||
window.history.back();
|
window.history.back();
|
||||||
parent.postMessage('goneback','*');
|
parent.postMessage('goneback', '*');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
setInterval(function () {
|
setInterval(function () {
|
||||||
@ -106,7 +106,7 @@ $(document).ready(function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
function quitapp() {
|
function quitapp() {
|
||||||
parent.postMessage('quit','*');
|
parent.postMessage('quit', '*');
|
||||||
}
|
}
|
||||||
|
|
||||||
function scancode(refstring) {
|
function scancode(refstring) {
|
||||||
|
@ -25,124 +25,124 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
$("#key").on("keyup", function () {
|
$("#key").on("keyup", function () {
|
||||||
if (window.getSelection().toString() !== '') {
|
if (window.getSelection().toString() !== '') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var text = $('#key').val().replace(/\s+/g, '');
|
var text = $('#key').val().replace(/\s+/g, '');
|
||||||
var formatted = "";
|
var formatted = "";
|
||||||
for (var i = 1; i <= text.length; i++) {
|
for (var i = 1; i <= text.length; i++) {
|
||||||
formatted = formatted + text[i - 1];
|
formatted = formatted + text[i - 1];
|
||||||
if (i % 4 == 0 && i > 1 && i < text.length) {
|
if (i % 4 == 0 && i > 1 && i < text.length) {
|
||||||
// add a space every 5 characters,
|
// add a space every 5 characters,
|
||||||
// unless it's the first character
|
// unless it's the first character
|
||||||
// or the last character
|
// or the last character
|
||||||
formatted = formatted + " ";
|
formatted = formatted + " ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$('#key').val(formatted.toUpperCase());
|
$('#key').val(formatted.toUpperCase());
|
||||||
});
|
});
|
||||||
|
|
||||||
function manualadd() {
|
function manualadd() {
|
||||||
var key = $('#key').val().replace(/\s+/g, '');
|
var key = $('#key').val().replace(/\s+/g, '');
|
||||||
var label = $('#label').val();
|
var label = $('#label').val();
|
||||||
var issuer = $('#issuer').val();
|
var issuer = $('#issuer').val();
|
||||||
addOTP(key, label, issuer);
|
addOTP(key, label, issuer);
|
||||||
}
|
}
|
||||||
|
|
||||||
function manualshow() {
|
function manualshow() {
|
||||||
$('#manual_add').css('display', 'block');
|
$('#manual_add').css('display', 'block');
|
||||||
}
|
}
|
||||||
|
|
||||||
function addOTP(key, label, issuer) {
|
function addOTP(key, label, issuer) {
|
||||||
if (key == "") {
|
if (key == "") {
|
||||||
navigator.notification.alert("Missing secret key.", null, "Error", 'Dismiss');
|
navigator.notification.alert("Missing secret key.", null, "Error", 'Dismiss');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
key = key.toUpperCase();
|
key = key.toUpperCase();
|
||||||
/* Thanks to https://stackoverflow.com/a/27362880 for the regex */
|
/* Thanks to https://stackoverflow.com/a/27362880 for the regex */
|
||||||
if (!key.match(/^(?:[A-Z2-7]{8})*(?:[A-Z2-7]{2}={6}|[A-Z2-7]{4}={4}|[A-Z2-7]{5}={3}|[A-Z2-7]{7}=)?$/)) {
|
if (!key.match(/^(?:[A-Z2-7]{8})*(?:[A-Z2-7]{2}={6}|[A-Z2-7]{4}={4}|[A-Z2-7]{5}={3}|[A-Z2-7]{7}=)?$/)) {
|
||||||
navigator.notification.alert("Secret key is not valid base32.", null, "Error", 'Dismiss');
|
navigator.notification.alert("Secret key is not valid base32.", null, "Error", 'Dismiss');
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
if (label == "") {
|
||||||
|
navigator.notification.alert("Missing label.", null, "Error", 'Dismiss');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var ls_text = localStorage.getItem("otp");
|
||||||
|
var keys = [];
|
||||||
|
if (ls_text != null && ls_text != "") {
|
||||||
|
keys = JSON.parse(ls_text || "[]");
|
||||||
}
|
}
|
||||||
if (label == "") {
|
|
||||||
navigator.notification.alert("Missing label.", null, "Error", 'Dismiss');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var ls_text = localStorage.getItem("otp");
|
|
||||||
var keys = [];
|
|
||||||
if (ls_text != null && ls_text != "") {
|
|
||||||
keys = JSON.parse(ls_text || "[]");
|
|
||||||
}
|
|
||||||
|
|
||||||
keys.push({"secret": key, "label": label, "issuer": issuer});
|
keys.push({"secret": key, "label": label, "issuer": issuer});
|
||||||
localStorage.setItem("otp", JSON.stringify(keys));
|
localStorage.setItem("otp", JSON.stringify(keys));
|
||||||
navigator.notification.alert("2-factor key saved.", null, "Key added", 'Dismiss');
|
navigator.notification.alert("2-factor key saved.", null, "Key added", 'Dismiss');
|
||||||
openscreen("otp");
|
openscreen("otp");
|
||||||
}
|
}
|
||||||
|
|
||||||
function scanCode() {
|
function scanCode() {
|
||||||
try {
|
try {
|
||||||
cordova.plugins.barcodeScanner.scan(
|
cordova.plugins.barcodeScanner.scan(
|
||||||
function (result) {
|
function (result) {
|
||||||
if (!result.cancelled) {
|
if (!result.cancelled) {
|
||||||
try {
|
try {
|
||||||
var url = decodeURI(result.text);
|
var url = decodeURI(result.text);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
navigator.notification.alert("Could not decode OTP URI.", null, "Error", 'Dismiss');
|
navigator.notification.alert("Could not decode OTP URI.", null, "Error", 'Dismiss');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!url.startsWith("otpauth://")) {
|
if (!url.startsWith("otpauth://")) {
|
||||||
navigator.notification.alert("Invalid OTP code. Try again.", null, "Error", 'Dismiss');
|
navigator.notification.alert("Invalid OTP code. Try again.", null, "Error", 'Dismiss');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!url.startsWith("otpauth://totp/")) {
|
if (!url.startsWith("otpauth://totp/")) {
|
||||||
navigator.notification.alert("Unsupported key type.", null, "Error", 'Dismiss');
|
navigator.notification.alert("Unsupported key type.", null, "Error", 'Dismiss');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var stripped = url.replace("otpauth://totp/", "");
|
var stripped = url.replace("otpauth://totp/", "");
|
||||||
var params = stripped.split("?")[1].split("&");
|
var params = stripped.split("?")[1].split("&");
|
||||||
var label = stripped.split("?")[0];
|
var label = stripped.split("?")[0];
|
||||||
var secret = "";
|
var secret = "";
|
||||||
var issuer = "";
|
var issuer = "";
|
||||||
for (var i = 0; i < params.length; i++) {
|
for (var i = 0; i < params.length; i++) {
|
||||||
var param = params[i].split("=");
|
var param = params[i].split("=");
|
||||||
if (param[0] == "secret") {
|
if (param[0] == "secret") {
|
||||||
secret = param[1].toUpperCase();
|
secret = param[1].toUpperCase();
|
||||||
} else if (param[0] == "issuer") {
|
} else if (param[0] == "issuer") {
|
||||||
issuer = param[1];
|
issuer = param[1];
|
||||||
} else if (param[0] == "algorithm" && param[1].toLowerCase() != "sha1") {
|
} else if (param[0] == "algorithm" && param[1].toLowerCase() != "sha1") {
|
||||||
navigator.notification.alert("Unsupported hash algorithm.", null, "Error", 'Dismiss');
|
navigator.notification.alert("Unsupported hash algorithm.", null, "Error", 'Dismiss');
|
||||||
return;
|
return;
|
||||||
} else if (param[0] == "digits" && param[1] != "6") {
|
} else if (param[0] == "digits" && param[1] != "6") {
|
||||||
navigator.notification.alert("Unsupported digit count.", null, "Error", 'Dismiss');
|
navigator.notification.alert("Unsupported digit count.", null, "Error", 'Dismiss');
|
||||||
return;
|
return;
|
||||||
} else if (param[0] == "period" && param[1] != "30") {
|
} else if (param[0] == "period" && param[1] != "30") {
|
||||||
navigator.notification.alert("Unsupported period.", null, "Error", 'Dismiss');
|
navigator.notification.alert("Unsupported period.", null, "Error", 'Dismiss');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
secret = decodeURIComponent(secret);
|
secret = decodeURIComponent(secret);
|
||||||
issuer = decodeURIComponent(issuer);
|
issuer = decodeURIComponent(issuer);
|
||||||
label = decodeURIComponent(label);
|
label = decodeURIComponent(label);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
navigator.notification.alert("Could not decode OTP URI.", null, "Error", 'Dismiss');
|
navigator.notification.alert("Could not decode OTP URI.", null, "Error", 'Dismiss');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
addOTP(secret, label, issuer);
|
addOTP(secret, label, issuer);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
function (error) {
|
function (error) {
|
||||||
navigator.notification.alert("Scanning failed: " + error, null, "Error", 'Dismiss');
|
navigator.notification.alert("Scanning failed: " + error, null, "Error", 'Dismiss');
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"showFlipCameraButton": false,
|
"showFlipCameraButton": false,
|
||||||
"prompt": "Scan OTP QR code."
|
"prompt": "Scan OTP QR code."
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
navigator.notification.alert(ex.message, null, "Error", 'Dismiss');
|
navigator.notification.alert(ex.message, null, "Error", 'Dismiss');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setnavbar("app", "Add Auth Key", "otp");
|
setnavbar("app", "Add Auth Key", "otp");
|
||||||
|
@ -19,63 +19,63 @@
|
|||||||
* @returns {undefined}
|
* @returns {undefined}
|
||||||
*/
|
*/
|
||||||
function launchapp(id, api, url, icon, title, injectcode, shownavbar) {
|
function launchapp(id, api, url, icon, title, injectcode, shownavbar) {
|
||||||
if (typeof shownavbar === 'undefined' || shownavbar === false) {
|
if (typeof shownavbar === 'undefined' || shownavbar === false) {
|
||||||
setnavbar(false);
|
setnavbar(false);
|
||||||
} else {
|
} else {
|
||||||
setnavbar("app", title);
|
setnavbar("app", title);
|
||||||
$('#appframe').css('top', '75px');
|
$('#appframe').css('top', '75px');
|
||||||
}
|
}
|
||||||
$.post(url + api, {
|
$.post(url + api, {
|
||||||
username: localStorage.getItem("username"),
|
username: localStorage.getItem("username"),
|
||||||
key: localStorage.getItem("key"),
|
key: localStorage.getItem("key"),
|
||||||
password: localStorage.getItem("password"),
|
password: localStorage.getItem("password"),
|
||||||
action: "start_session"
|
action: "start_session"
|
||||||
}, function (data) {
|
}, function (data) {
|
||||||
if (data.status === 'OK') {
|
if (data.status === 'OK') {
|
||||||
document.getElementById("loadframe").contentWindow.postMessage("loginok", "*");
|
document.getElementById("loadframe").contentWindow.postMessage("loginok", "*");
|
||||||
if (typeof injectcode === 'undefined' || injectcode === true) {
|
if (typeof injectcode === 'undefined' || injectcode === true) {
|
||||||
$('#appframe').on("load", function () {
|
$('#appframe').on("load", function () {
|
||||||
$("#loadframe").fadeOut(300);
|
$("#loadframe").fadeOut(300);
|
||||||
historyctr++;
|
historyctr++;
|
||||||
$.get("css/sidemenu.css", function (style) {
|
$.get("css/sidemenu.css", function (style) {
|
||||||
$('#appframe').contents().find('head').append("<style>" + style + "</style>");
|
$('#appframe').contents().find('head').append("<style>" + style + "</style>");
|
||||||
$.get("js/jquery-ui.min.js", function (script) {
|
$.get("js/jquery-ui.min.js", function (script) {
|
||||||
$('#appframe').contents().find('body').append("<script>" + script + "<\/script>");
|
$('#appframe').contents().find('body').append("<script>" + script + "<\/script>");
|
||||||
$.get("js/hammer.min.js", function (script) {
|
$.get("js/hammer.min.js", function (script) {
|
||||||
$('#appframe').contents().find('body').append("<script>" + script + "<\/script>");
|
$('#appframe').contents().find('body').append("<script>" + script + "<\/script>");
|
||||||
$.get("js/sidemenu.js", function (script) {
|
$.get("js/sidemenu.js", function (script) {
|
||||||
script = script.replace("__JQUERYFXOFF__", !(localStorage.getItem("animations") === null || localStorage.getItem("animations") === "true"));
|
script = script.replace("__JQUERYFXOFF__", !(localStorage.getItem("animations") === null || localStorage.getItem("animations") === "true"));
|
||||||
script = script.replace("__USERNAME__", userinfo.realname);
|
script = script.replace("__USERNAME__", userinfo.realname);
|
||||||
script = script.replace("__LOGO__", icon);
|
script = script.replace("__LOGO__", icon);
|
||||||
$('#appframe').contents().find('body').append("<script>" + script + "<\/script>");
|
$('#appframe').contents().find('body').append("<script>" + script + "<\/script>");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// Only inject minimal CSS
|
// Only inject minimal CSS
|
||||||
$('#appframe').on("load", function () {
|
$('#appframe').on("load", function () {
|
||||||
$.get("css/inject_mini.css", function (style) {
|
$.get("css/inject_mini.css", function (style) {
|
||||||
$('#appframe').contents().find('head').append("<style>" + style + "</style>");
|
$('#appframe').contents().find('head').append("<style>" + style + "</style>");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
$('#appframe').attr('src', url);
|
$('#appframe').attr('src', url);
|
||||||
} else {
|
} else {
|
||||||
navigator.notification.alert(data.msg, null, "Error", 'Dismiss');
|
navigator.notification.alert(data.msg, null, "Error", 'Dismiss');
|
||||||
openscreen("home");
|
openscreen("home");
|
||||||
}
|
}
|
||||||
}, "json").fail(function () {
|
}, "json").fail(function () {
|
||||||
navigator.notification.alert("Could not connect to the server. Try again later.", null, "Error", 'Dismiss');
|
navigator.notification.alert("Could not connect to the server. Try again later.", null, "Error", 'Dismiss');
|
||||||
openscreen("home");
|
openscreen("home");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var scanningactive = false;
|
var scanningactive = false;
|
||||||
var dedup = false;
|
var dedup = false;
|
||||||
window.addEventListener('message', function (event) {
|
window.addEventListener('message', function (event) {
|
||||||
console.log("app event: " + event.data);
|
console.log("app event: " + event.data);
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
dedup = false;
|
dedup = false;
|
||||||
}, 500);
|
}, 500);
|
||||||
@ -83,57 +83,57 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dedup = true;
|
dedup = true;
|
||||||
if (event.data == "quit") {
|
if (event.data == "quit") {
|
||||||
openscreen("home");
|
openscreen("home");
|
||||||
} else if (event.data == "goneback") {
|
} else if (event.data == "goneback") {
|
||||||
historyctr -= 1;
|
historyctr -= 1;
|
||||||
} else if (event.data.startsWith("setcolor ")) {
|
} else if (event.data.startsWith("setcolor ")) {
|
||||||
var color = event.data.split(" ", 2)[1];
|
var color = event.data.split(" ", 2)[1];
|
||||||
if (cordova.platformId == 'android') {
|
if (cordova.platformId == 'android') {
|
||||||
window.plugins.headerColor.tint(color);
|
window.plugins.headerColor.tint(color);
|
||||||
for (var swatch in _PALETTE) {
|
for (var swatch in _PALETTE) {
|
||||||
if (color == _PALETTE[swatch]["shade_500"]) {
|
if (color == _PALETTE[swatch]["shade_500"]) {
|
||||||
StatusBar.backgroundColorByHexString(_PALETTE[swatch]["shade_700"]);
|
StatusBar.backgroundColorByHexString(_PALETTE[swatch]["shade_700"]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
StatusBar.backgroundColorByHexString(color);
|
StatusBar.backgroundColorByHexString(color);
|
||||||
}
|
}
|
||||||
} else if (event.data.startsWith("scancode ")) {
|
} else if (event.data.startsWith("scancode ")) {
|
||||||
var callbackcode = event.data.split(" ").slice(1).join(" ");
|
var callbackcode = event.data.split(" ").slice(1).join(" ");
|
||||||
console.log("got scancode " + callbackcode);
|
console.log("got scancode " + callbackcode);
|
||||||
try {
|
try {
|
||||||
if (scanningactive) {
|
if (scanningactive) {
|
||||||
console.log("Scanner already active, ignoring request.");
|
console.log("Scanner already active, ignoring request.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
scanningactive = true;
|
scanningactive = true;
|
||||||
cordova.plugins.barcodeScanner.scan(
|
cordova.plugins.barcodeScanner.scan(
|
||||||
function (result) {
|
function (result) {
|
||||||
scanningactive = false;
|
scanningactive = false;
|
||||||
if (!result.cancelled) {
|
if (!result.cancelled) {
|
||||||
var iframe = document.getElementById("appframe");
|
var iframe = document.getElementById("appframe");
|
||||||
iframe.contentWindow.postMessage("coderesult~|~" + callbackcode + "~|~" + result.text, "*");
|
iframe.contentWindow.postMessage("coderesult~|~" + callbackcode + "~|~" + result.text, "*");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
function (error) {
|
function (error) {
|
||||||
scanningactive = false;
|
scanningactive = false;
|
||||||
navigator.notification.alert("Scanning failed: " + error, null, "Error", 'Dismiss');
|
navigator.notification.alert("Scanning failed: " + error, null, "Error", 'Dismiss');
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"showFlipCameraButton": true,
|
"showFlipCameraButton": true,
|
||||||
"prompt": "Scan Code"
|
"prompt": "Scan Code"
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
scanningactive = false;
|
scanningactive = false;
|
||||||
navigator.notification.alert(ex.message, null, "Error", 'Dismiss');
|
navigator.notification.alert(ex.message, null, "Error", 'Dismiss');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
if (userinfo == null) {
|
if (userinfo == null) {
|
||||||
getuserinfo();
|
getuserinfo();
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
@ -122,24 +122,24 @@
|
|||||||
<div id="giveup" onclick="parent.postMessage('quit', '*');">Give up</div>
|
<div id="giveup" onclick="parent.postMessage('quit', '*');">Give up</div>
|
||||||
<script>
|
<script>
|
||||||
window.addEventListener('message', function (event) {
|
window.addEventListener('message', function (event) {
|
||||||
if (event.data == "loginok") {
|
if (event.data == "loginok") {
|
||||||
document.getElementById("statustext").innerHTML = "Loading...";
|
document.getElementById("statustext").innerHTML = "Loading...";
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
document.getElementById("statustext").innerHTML = "Still loading...";
|
document.getElementById("statustext").innerHTML = "Still loading...";
|
||||||
}, 5000);
|
}, 5000);
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
document.getElementById("statustext").innerHTML = "Just a moment...";
|
document.getElementById("statustext").innerHTML = "Just a moment...";
|
||||||
document.getElementById("giveup").style.display = "inline-block";
|
document.getElementById("giveup").style.display = "inline-block";
|
||||||
}, 10000);
|
}, 10000);
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
document.getElementById("statustext").innerHTML = "Well this is awkward.";
|
document.getElementById("statustext").innerHTML = "Well this is awkward.";
|
||||||
}, 20000);
|
}, 20000);
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
document.getElementById("statustext").innerHTML = "[fidgets nervously]";
|
document.getElementById("statustext").innerHTML = "[fidgets nervously]";
|
||||||
}, 25000);
|
}, 25000);
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
document.getElementById("statustext").innerHTML = "Either something is broken or your connection is too slow.";
|
document.getElementById("statustext").innerHTML = "Either something is broken or your connection is too slow.";
|
||||||
}, 30000);
|
}, 30000);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
@ -235,7 +235,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||||||
See the License for the specific language governing permissions and
|
See the License for the specific language governing permissions and
|
||||||
limitations under the License.</pre>
|
limitations under the License.</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>catfan/medoo</h2>
|
<h2>catfan/medoo</h2>
|
||||||
<pre>MIT License
|
<pre>MIT License
|
||||||
|
|
||||||
@ -258,9 +258,9 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
SOFTWARE.
|
SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>twbs/bootstrap</h2>
|
<h2>twbs/bootstrap</h2>
|
||||||
<pre>The MIT License (MIT)
|
<pre>The MIT License (MIT)
|
||||||
|
|
||||||
@ -283,9 +283,9 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>bassjobsen/Bootstrap-3-Typeahead</h2>
|
<h2>bassjobsen/Bootstrap-3-Typeahead</h2>
|
||||||
<pre>MIT License
|
<pre>MIT License
|
||||||
|
|
||||||
@ -296,8 +296,8 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</pre>
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>DataTables/DataTables</h2>
|
<h2>DataTables/DataTables</h2>
|
||||||
<pre>Copyright (c) 2008-2015 SpryMedia Limited
|
<pre>Copyright (c) 2008-2015 SpryMedia Limited
|
||||||
http://datatables.net
|
http://datatables.net
|
||||||
@ -319,9 +319,9 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>npm/npm</h2>
|
<h2>npm/npm</h2>
|
||||||
<pre>The npm application
|
<pre>The npm application
|
||||||
Copyright (c) npm, Inc. and Contributors
|
Copyright (c) npm, Inc. and Contributors
|
||||||
@ -558,9 +558,9 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
|
|
||||||
--------
|
--------
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>FortAwesome/Font-Awesome</h2>
|
<h2>FortAwesome/Font-Awesome</h2>
|
||||||
<pre>SIL OPEN FONT LICENSE
|
<pre>SIL OPEN FONT LICENSE
|
||||||
|
|
||||||
@ -620,9 +620,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRES
|
|||||||
|
|
||||||
=================================
|
=================================
|
||||||
|
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>thomaspark/bootswatch</h2>
|
<h2>thomaspark/bootswatch</h2>
|
||||||
<pre>The MIT License (MIT)
|
<pre>The MIT License (MIT)
|
||||||
|
|
||||||
@ -645,9 +645,9 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>composer/composer</h2>
|
<h2>composer/composer</h2>
|
||||||
<pre>Copyright (c) Nils Adermann, Jordi Boggiano
|
<pre>Copyright (c) Nils Adermann, Jordi Boggiano
|
||||||
|
|
||||||
@ -668,9 +668,9 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>nwjs/nw.js</h2>
|
<h2>nwjs/nw.js</h2>
|
||||||
<pre>Copyright (c) 2012-2015 Intel Corp
|
<pre>Copyright (c) 2012-2015 Intel Corp
|
||||||
Copyright (c) 2012-2015 The Chromium Authors
|
Copyright (c) 2012-2015 The Chromium Authors
|
||||||
@ -691,9 +691,9 @@ A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYR
|
|||||||
IGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
IGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||||
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WIT
|
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WIT
|
||||||
H THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
H THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>google/material-design-icons</h2>
|
<h2>google/material-design-icons</h2>
|
||||||
<pre>
|
<pre>
|
||||||
Apache License
|
Apache License
|
||||||
@ -897,8 +897,8 @@ H THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
See the License for the specific language governing permissions and
|
See the License for the specific language governing permissions and
|
||||||
limitations under the License.</pre>
|
limitations under the License.</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>guzzle/guzzle</h2>
|
<h2>guzzle/guzzle</h2>
|
||||||
<pre>Copyright (c) 2011-2016 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
|
<pre>Copyright (c) 2011-2016 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
|
||||||
|
|
||||||
@ -919,9 +919,9 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>ezyang/htmlpurifier</h2>
|
<h2>ezyang/htmlpurifier</h2>
|
||||||
<pre> GNU LESSER GENERAL PUBLIC LICENSE
|
<pre> GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
Version 2.1, February 1999
|
Version 2.1, February 1999
|
||||||
@ -1427,9 +1427,9 @@ necessary. Here is a sample; alter the names:
|
|||||||
That's all there is to it!
|
That's all there is to it!
|
||||||
|
|
||||||
vim: et sw=4 sts=4
|
vim: et sw=4 sts=4
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>endroid/qrcode</h2>
|
<h2>endroid/qrcode</h2>
|
||||||
<pre>Copyright (c) Jeroen van den Enden
|
<pre>Copyright (c) Jeroen van den Enden
|
||||||
|
|
||||||
@ -1450,9 +1450,9 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>ldaptools/ldaptools</h2>
|
<h2>ldaptools/ldaptools</h2>
|
||||||
<pre>Copyright (c) 2015 Chad Sikorra
|
<pre>Copyright (c) 2015 Chad Sikorra
|
||||||
|
|
||||||
@ -1473,8 +1473,8 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.</pre>
|
THE SOFTWARE.</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>phpmailer/phpmailer</h2>
|
<h2>phpmailer/phpmailer</h2>
|
||||||
<pre> GNU LESSER GENERAL PUBLIC LICENSE
|
<pre> GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
Version 2.1, February 1999
|
Version 2.1, February 1999
|
||||||
@ -1978,8 +1978,8 @@ necessary. Here is a sample; alter the names:
|
|||||||
Ty Coon, President of Vice
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
That's all there is to it!</pre>
|
That's all there is to it!</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>spomky-labs/otphp</h2>
|
<h2>spomky-labs/otphp</h2>
|
||||||
<pre>The MIT License (MIT)
|
<pre>The MIT License (MIT)
|
||||||
|
|
||||||
@ -2001,9 +2001,9 @@ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>jquery/jquery</h2>
|
<h2>jquery/jquery</h2>
|
||||||
<pre>Copyright JS Foundation and other contributors, https://js.foundation/
|
<pre>Copyright JS Foundation and other contributors, https://js.foundation/
|
||||||
|
|
||||||
@ -2041,9 +2041,9 @@ All files located in the node_modules and external directories are
|
|||||||
externally maintained libraries used by this software which have their
|
externally maintained libraries used by this software which have their
|
||||||
own licenses; we recommend you read them, as their terms may differ from
|
own licenses; we recommend you read them, as their terms may differ from
|
||||||
the terms above.
|
the terms above.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>pawelczak/EasyAutocomplete</h2>
|
<h2>pawelczak/EasyAutocomplete</h2>
|
||||||
<pre>The MIT License (MIT)
|
<pre>The MIT License (MIT)
|
||||||
|
|
||||||
@ -2066,9 +2066,9 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>jquery/jquery-ui</h2>
|
<h2>jquery/jquery-ui</h2>
|
||||||
<pre>Copyright jQuery Foundation and other contributors, https://jquery.org/
|
<pre>Copyright jQuery Foundation and other contributors, https://jquery.org/
|
||||||
|
|
||||||
@ -2113,9 +2113,9 @@ All files located in the node_modules and external directories are
|
|||||||
externally maintained libraries used by this software which have their
|
externally maintained libraries used by this software which have their
|
||||||
own licenses; we recommend you read them, as their terms may differ from
|
own licenses; we recommend you read them, as their terms may differ from
|
||||||
the terms above.
|
the terms above.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>Eonasdan/bootstrap-datetimepicker</h2>
|
<h2>Eonasdan/bootstrap-datetimepicker</h2>
|
||||||
<pre>The MIT License (MIT)
|
<pre>The MIT License (MIT)
|
||||||
|
|
||||||
@ -2138,9 +2138,9 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
SOFTWARE.
|
SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>moment/moment</h2>
|
<h2>moment/moment</h2>
|
||||||
<pre>Copyright (c) JS Foundation and other contributors
|
<pre>Copyright (c) JS Foundation and other contributors
|
||||||
|
|
||||||
@ -2164,9 +2164,9 @@ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|||||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
OTHER DEALINGS IN THE SOFTWARE.
|
OTHER DEALINGS IN THE SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>becvert/cordova-plugin-zeroconf</h2>
|
<h2>becvert/cordova-plugin-zeroconf</h2>
|
||||||
<pre>The MIT License (MIT)
|
<pre>The MIT License (MIT)
|
||||||
|
|
||||||
@ -2190,9 +2190,9 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
SOFTWARE.
|
SOFTWARE.
|
||||||
|
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>tomloprod/cordova-plugin-headercolor</h2>
|
<h2>tomloprod/cordova-plugin-headercolor</h2>
|
||||||
<pre>The MIT License (MIT)
|
<pre>The MIT License (MIT)
|
||||||
|
|
||||||
@ -2203,9 +2203,9 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>whiteoctober/cordova-plugin-app-version</h2>
|
<h2>whiteoctober/cordova-plugin-app-version</h2>
|
||||||
<pre>Copyright (c) 2013 White October
|
<pre>Copyright (c) 2013 White October
|
||||||
|
|
||||||
@ -2227,9 +2227,9 @@ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>phonegap/phonegap-plugin-barcodescanner</h2>
|
<h2>phonegap/phonegap-plugin-barcodescanner</h2>
|
||||||
<pre>Copyright 2010 Matt Kane
|
<pre>Copyright 2010 Matt Kane
|
||||||
Copyright 2011 IBM Corporation
|
Copyright 2011 IBM Corporation
|
||||||
@ -2253,9 +2253,9 @@ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>apache/cordova-android</h2>
|
<h2>apache/cordova-android</h2>
|
||||||
<pre>
|
<pre>
|
||||||
Apache License
|
Apache License
|
||||||
@ -2571,9 +2571,9 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|||||||
OTHER DEALINGS IN THE SOFTWARE.
|
OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>apache/cordova-ios</h2>
|
<h2>apache/cordova-ios</h2>
|
||||||
<pre>
|
<pre>
|
||||||
Apache License
|
Apache License
|
||||||
@ -2831,9 +2831,9 @@ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>apache/cordova-js</h2>
|
<h2>apache/cordova-js</h2>
|
||||||
<pre>
|
<pre>
|
||||||
Apache License
|
Apache License
|
||||||
@ -3130,8 +3130,8 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.</pre>
|
THE SOFTWARE.</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>thephpleague/csv</h2>
|
<h2>thephpleague/csv</h2>
|
||||||
<pre>The MIT License (MIT)
|
<pre>The MIT License (MIT)
|
||||||
|
|
||||||
@ -3153,9 +3153,9 @@ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>Lapinator/odsPhpGenerator</h2>
|
<h2>Lapinator/odsPhpGenerator</h2>
|
||||||
<pre>GNU LESSER GENERAL PUBLIC LICENSE
|
<pre>GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
Version 3, 29 June 2007
|
Version 3, 29 June 2007
|
||||||
@ -3228,8 +3228,8 @@ Each version is given a distinguishing version number. If the Library as you rec
|
|||||||
|
|
||||||
If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall
|
If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall
|
||||||
apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.</pre>
|
apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>jiangts/JS-OTP</h2>
|
<h2>jiangts/JS-OTP</h2>
|
||||||
<pre>MIT License
|
<pre>MIT License
|
||||||
|
|
||||||
@ -3252,9 +3252,9 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
SOFTWARE.
|
SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h2>hammerjs/hammer.js</h2>
|
<h2>hammerjs/hammer.js</h2>
|
||||||
<pre>The MIT License (MIT)
|
<pre>The MIT License (MIT)
|
||||||
|
|
||||||
@ -3277,5 +3277,5 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
@ -15,37 +15,37 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
function loadapps() {
|
function loadapps() {
|
||||||
$(".loading-text").html("Loading Apps...");
|
$(".loading-text").html("Loading Apps...");
|
||||||
$.post(localStorage.getItem("syncurl"), {
|
$.post(localStorage.getItem("syncurl"), {
|
||||||
username: localStorage.getItem("username"),
|
username: localStorage.getItem("username"),
|
||||||
key: localStorage.getItem("key"),
|
key: localStorage.getItem("key"),
|
||||||
action: "listapps"
|
action: "listapps"
|
||||||
}, function (data) {
|
}, function (data) {
|
||||||
if (data.status === 'OK') {
|
if (data.status === 'OK') {
|
||||||
$("#loading-text").text("One moment...");
|
$("#loading-text").text("One moment...");
|
||||||
$('#app-dock').html("");
|
$('#app-dock').html("");
|
||||||
Object.keys(data.apps).forEach(function (k) {
|
Object.keys(data.apps).forEach(function (k) {
|
||||||
var app = data.apps[k];
|
var app = data.apps[k];
|
||||||
var iconurl = app.icon;
|
var iconurl = app.icon;
|
||||||
if (!app.icon.startsWith("http")) {
|
if (!app.icon.startsWith("http")) {
|
||||||
iconurl = app.url + app.icon;
|
iconurl = app.url + app.icon;
|
||||||
}
|
}
|
||||||
$("<div class=\"app-dock-item\" onclick=\"openapp('" + k + "', '" + app.mobileapi + "', '" + app.url + "', '" + iconurl + "', '" + app.title + "')\"><p><img src=\"" + iconurl + "\" class=\"img-responsive app-icon\" /><span>" + app.title + "</span></p></div>").hide().appendTo("#app-dock").fadeIn(200);
|
$("<div class=\"app-dock-item\" onclick=\"openapp('" + k + "', '" + app.mobileapi + "', '" + app.url + "', '" + iconurl + "', '" + app.title + "')\"><p><img src=\"" + iconurl + "\" class=\"img-responsive app-icon\" /><span>" + app.title + "</span></p></div>").hide().appendTo("#app-dock").fadeIn(200);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
navigator.notification.alert(data.msg, null, "Error", 'Dismiss');
|
navigator.notification.alert(data.msg, null, "Error", 'Dismiss');
|
||||||
openscreen("homeloaderror");
|
openscreen("homeloaderror");
|
||||||
}
|
}
|
||||||
}, "json").fail(function () {
|
}, "json").fail(function () {
|
||||||
navigator.notification.alert("Could not connect to the server. Try again later.", null, "Error", 'Dismiss');
|
navigator.notification.alert("Could not connect to the server. Try again later.", null, "Error", 'Dismiss');
|
||||||
openscreen("homeloaderror");
|
openscreen("homeloaderror");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (localStorage.getItem('setupcomplete')) {
|
if (localStorage.getItem('setupcomplete')) {
|
||||||
setnavbar("home");
|
setnavbar("home");
|
||||||
loadapps();
|
loadapps();
|
||||||
} else {
|
} else {
|
||||||
openscreen("setup1");
|
openscreen("setup1");
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
@ -26,34 +26,34 @@
|
|||||||
var ls_text = localStorage.getItem("otp");
|
var ls_text = localStorage.getItem("otp");
|
||||||
var keys = [];
|
var keys = [];
|
||||||
if (ls_text !== null && ls_text != "") {
|
if (ls_text !== null && ls_text != "") {
|
||||||
var keys = JSON.parse(ls_text || "[]");
|
var keys = JSON.parse(ls_text || "[]");
|
||||||
if (keys.length > 0) {
|
if (keys.length > 0) {
|
||||||
$("#nokeys").css("display", "none");
|
$("#nokeys").css("display", "none");
|
||||||
}
|
}
|
||||||
for (var i = 0; i < keys.length; i++) {
|
for (var i = 0; i < keys.length; i++) {
|
||||||
var code = totp.getOtp(keys[i]["secret"]);
|
var code = totp.getOtp(keys[i]["secret"]);
|
||||||
// Escape HTML characters
|
// Escape HTML characters
|
||||||
var label = $('<div/>').html(keys[i]["label"]).html();
|
var label = $('<div/>').html(keys[i]["label"]).html();
|
||||||
var issuer = $('<div/>').text(keys[i]["issuer"]).html();
|
var issuer = $('<div/>').text(keys[i]["issuer"]).html();
|
||||||
$("#codelist").append("<div class=\"list-group-item\" id=\"codeitem_" + i + "\">"
|
$("#codelist").append("<div class=\"list-group-item\" id=\"codeitem_" + i + "\">"
|
||||||
+ "<span class=\"pull-right\" style=\"color: red;\" onclick=\"deleteCode(" + i + ")\"><i class=\"fa fa-trash-o\"></i></span>"
|
+ "<span class=\"pull-right\" style=\"color: red;\" onclick=\"deleteCode(" + i + ")\"><i class=\"fa fa-trash-o\"></i></span>"
|
||||||
+ "<p class=\"h6\">" + label + "</p>"
|
+ "<p class=\"h6\">" + label + "</p>"
|
||||||
+ "<div class=\"h3 code\" style=\"font-weight: bold;\">" + code + "</div>"
|
+ "<div class=\"h3 code\" style=\"font-weight: bold;\">" + code + "</div>"
|
||||||
+ "<p class=\"small\">" + issuer + "</p>"
|
+ "<p class=\"small\">" + issuer + "</p>"
|
||||||
+ "</div>");
|
+ "</div>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function refreshCountdown() {
|
function refreshCountdown() {
|
||||||
var percent = ((30 - ((new Date).getSeconds() % 30)) / 30) * 100;
|
var percent = ((30 - ((new Date).getSeconds() % 30)) / 30) * 100;
|
||||||
$("#countdown").css("width", percent + "%");
|
$("#countdown").css("width", percent + "%");
|
||||||
}
|
}
|
||||||
|
|
||||||
function refreshCodes() {
|
function refreshCodes() {
|
||||||
for (var i = 0; i < keys.length; i++) {
|
for (var i = 0; i < keys.length; i++) {
|
||||||
var code = totp.getOtp(keys[i]["secret"]);
|
var code = totp.getOtp(keys[i]["secret"]);
|
||||||
$("#codelist #codeitem_" + i + " .code").text(code);
|
$("#codelist #codeitem_" + i + " .code").text(code);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteCode(index) {
|
function deleteCode(index) {
|
||||||
@ -68,8 +68,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
setInterval(function () {
|
setInterval(function () {
|
||||||
refreshCountdown();
|
refreshCountdown();
|
||||||
refreshCodes();
|
refreshCodes();
|
||||||
}, 1000);
|
}, 1000);
|
||||||
|
|
||||||
refreshCountdown();
|
refreshCountdown();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user