LSP: improved updater
This commit is contained in:
parent
ea443945fe
commit
23cccb1857
2 changed files with 111 additions and 82 deletions
141
lsp/minified.js
141
lsp/minified.js
|
@ -1,11 +1,11 @@
|
|||
var MD5=function(a){function c(a,c){var b,d,k,g,e;k=a&2147483648;g=c&2147483648;b=a&1073741824;d=c&1073741824;e=(a&1073741823)+(c&1073741823);return b&d?e^2147483648^k^g:b|d?e&1073741824?e^3221225472^k^g:e^1073741824^k^g:e^k^g}function d(a,b,d,k,g,e,f){a=c(a,c(c(b&d|~b&k,g),f));return c(a<<e|a>>>32-e,b)}function b(a,b,d,k,g,e,f){a=c(a,c(c(b&k|d&~k,g),f));return c(a<<e|a>>>32-e,b)}function i(a,b,d,k,g,e,f){a=c(a,c(c(b^d^k,g),f));return c(a<<e|a>>>32-e,b)}function m(a,b,d,k,e,g,f){a=c(a,c(c(d^(b|~k),
|
||||
e),f));return c(a<<g|a>>>32-g,b)}function h(a){var b="",c="",d;for(d=0;3>=d;d++)c=a>>>8*d&255,c="0"+c.toString(16),b+=c.substr(c.length-2,2);return b}var f=[],r,j,l,u,g,e,k,n,f=a.replace(/\r\n/g,"\n"),a="";for(r=0;r<f.length;r++)j=f.charCodeAt(r),128>j?a+=String.fromCharCode(j):(127<j&&2048>j?a+=String.fromCharCode(j>>6|192):(a+=String.fromCharCode(j>>12|224),a+=String.fromCharCode(j>>6&63|128)),a+=String.fromCharCode(j&63|128));f=a;a=f.length;r=a+8;j=16*((r-r%64)/64+1);l=Array(j-1);for(g=u=0;g<a;)r=
|
||||
var MD5=function(a){function c(a,c){var b,d,k,g,e;k=a&2147483648;g=c&2147483648;b=a&1073741824;d=c&1073741824;e=(a&1073741823)+(c&1073741823);return b&d?e^2147483648^k^g:b|d?e&1073741824?e^3221225472^k^g:e^1073741824^k^g:e^k^g}function d(a,b,d,k,g,e,f){a=c(a,c(c(b&d|~b&k,g),f));return c(a<<e|a>>>32-e,b)}function b(a,b,d,k,g,e,f){a=c(a,c(c(b&k|d&~k,g),f));return c(a<<e|a>>>32-e,b)}function h(a,b,d,k,g,e,f){a=c(a,c(c(b^d^k,g),f));return c(a<<e|a>>>32-e,b)}function m(a,b,d,k,e,g,f){a=c(a,c(c(d^(b|~k),
|
||||
e),f));return c(a<<g|a>>>32-g,b)}function i(a){var b="",c="",d;for(d=0;3>=d;d++)c=a>>>8*d&255,c="0"+c.toString(16),b+=c.substr(c.length-2,2);return b}var f=[],r,j,l,u,g,e,k,n,f=a.replace(/\r\n/g,"\n"),a="";for(r=0;r<f.length;r++)j=f.charCodeAt(r),128>j?a+=String.fromCharCode(j):(127<j&&2048>j?a+=String.fromCharCode(j>>6|192):(a+=String.fromCharCode(j>>12|224),a+=String.fromCharCode(j>>6&63|128)),a+=String.fromCharCode(j&63|128));f=a;a=f.length;r=a+8;j=16*((r-r%64)/64+1);l=Array(j-1);for(g=u=0;g<a;)r=
|
||||
(g-g%4)/4,u=8*(g%4),l[r]|=f.charCodeAt(g)<<u,g++;r=(g-g%4)/4;l[r]|=128<<8*(g%4);l[j-2]=a<<3;l[j-1]=a>>>29;f=l;g=1732584193;e=4023233417;k=2562383102;n=271733878;for(a=0;a<f.length;a+=16)r=g,j=e,l=k,u=n,g=d(g,e,k,n,f[a+0],7,3614090360),n=d(n,g,e,k,f[a+1],12,3905402710),k=d(k,n,g,e,f[a+2],17,606105819),e=d(e,k,n,g,f[a+3],22,3250441966),g=d(g,e,k,n,f[a+4],7,4118548399),n=d(n,g,e,k,f[a+5],12,1200080426),k=d(k,n,g,e,f[a+6],17,2821735955),e=d(e,k,n,g,f[a+7],22,4249261313),g=d(g,e,k,n,f[a+8],7,1770035416),
|
||||
n=d(n,g,e,k,f[a+9],12,2336552879),k=d(k,n,g,e,f[a+10],17,4294925233),e=d(e,k,n,g,f[a+11],22,2304563134),g=d(g,e,k,n,f[a+12],7,1804603682),n=d(n,g,e,k,f[a+13],12,4254626195),k=d(k,n,g,e,f[a+14],17,2792965006),e=d(e,k,n,g,f[a+15],22,1236535329),g=b(g,e,k,n,f[a+1],5,4129170786),n=b(n,g,e,k,f[a+6],9,3225465664),k=b(k,n,g,e,f[a+11],14,643717713),e=b(e,k,n,g,f[a+0],20,3921069994),g=b(g,e,k,n,f[a+5],5,3593408605),n=b(n,g,e,k,f[a+10],9,38016083),k=b(k,n,g,e,f[a+15],14,3634488961),e=b(e,k,n,g,f[a+4],20,3889429448),
|
||||
g=b(g,e,k,n,f[a+9],5,568446438),n=b(n,g,e,k,f[a+14],9,3275163606),k=b(k,n,g,e,f[a+3],14,4107603335),e=b(e,k,n,g,f[a+8],20,1163531501),g=b(g,e,k,n,f[a+13],5,2850285829),n=b(n,g,e,k,f[a+2],9,4243563512),k=b(k,n,g,e,f[a+7],14,1735328473),e=b(e,k,n,g,f[a+12],20,2368359562),g=i(g,e,k,n,f[a+5],4,4294588738),n=i(n,g,e,k,f[a+8],11,2272392833),k=i(k,n,g,e,f[a+11],16,1839030562),e=i(e,k,n,g,f[a+14],23,4259657740),g=i(g,e,k,n,f[a+1],4,2763975236),n=i(n,g,e,k,f[a+4],11,1272893353),k=i(k,n,g,e,f[a+7],16,4139469664),
|
||||
e=i(e,k,n,g,f[a+10],23,3200236656),g=i(g,e,k,n,f[a+13],4,681279174),n=i(n,g,e,k,f[a+0],11,3936430074),k=i(k,n,g,e,f[a+3],16,3572445317),e=i(e,k,n,g,f[a+6],23,76029189),g=i(g,e,k,n,f[a+9],4,3654602809),n=i(n,g,e,k,f[a+12],11,3873151461),k=i(k,n,g,e,f[a+15],16,530742520),e=i(e,k,n,g,f[a+2],23,3299628645),g=m(g,e,k,n,f[a+0],6,4096336452),n=m(n,g,e,k,f[a+7],10,1126891415),k=m(k,n,g,e,f[a+14],15,2878612391),e=m(e,k,n,g,f[a+5],21,4237533241),g=m(g,e,k,n,f[a+12],6,1700485571),n=m(n,g,e,k,f[a+3],10,2399980690),
|
||||
k=m(k,n,g,e,f[a+10],15,4293915773),e=m(e,k,n,g,f[a+1],21,2240044497),g=m(g,e,k,n,f[a+8],6,1873313359),n=m(n,g,e,k,f[a+15],10,4264355552),k=m(k,n,g,e,f[a+6],15,2734768916),e=m(e,k,n,g,f[a+13],21,1309151649),g=m(g,e,k,n,f[a+4],6,4149444226),n=m(n,g,e,k,f[a+11],10,3174756917),k=m(k,n,g,e,f[a+2],15,718787259),e=m(e,k,n,g,f[a+9],21,3951481745),g=c(g,r),e=c(e,j),k=c(k,l),n=c(n,u);return(h(g)+h(e)+h(k)+h(n)).toLowerCase()};(function(a){a.fn.stupidtable=function(){a(this).on("click","thead th",function(){a(this).stupidsort()})};a.fn.stupidsort=function(){function c(b){var c=0,d;a(b).children("td,th").each(function(){if(c==r)return d=a(this),!1;var b=a(this).attr("colspan");c+=b?Number(b):1});b="undefined"!=typeof d.data("sort-value")?d.data("sort-value"):"undefined"!=typeof d.attr("data-sort-value")?d.attr("data-sort-value"):d.text();switch(h){case "string":case "string-ins":b=String(b).toLowerCase();break;case "int":b=
|
||||
parseInt(Number(b));break;case "float":b=Number(b)}return b}var d=a(this),b=d.closest("table"),i=b.children("tbody"),m=i.children("tr"),h=d.attr("data-sort-type");if(h){var f=!0;d.hasClass("sorting-asc")&&(f=!1);var r=0;d.prevAll().each(function(){var b=a(this).attr("colspan");r+=b?Number(b):1});m.sort(function(a,b){var d=f?1:-1,a=c(a),b=c(b);return a>b?1*d:a<b?-1*d:0});i.append(m);b.find("thead th").removeClass("sorting-asc").removeClass("sorting-desc");d.addClass(f?"sorting-asc":"sorting-desc")}}})(jQuery);$(function(){UI.elements={menu:$("nav > .menu"),main:$("main"),header:$("header"),connection:{status:$("#connection"),user_and_host:$("#user_and_host"),msg:$("#message")}};UI.buildMenu();UI.stored.getOpts();try{if("mistLogin"in sessionStorage){var a=JSON.parse(sessionStorage.mistLogin);mist.user.name=a.name;mist.user.password=a.password;mist.user.host=a.host}}catch(c){}location.hash&&(a=decodeURIComponent(location.hash).substring(1).split("@")[0].split("&"),mist.user.name=a[0],a[1]&&(mist.user.host=
|
||||
g=b(g,e,k,n,f[a+9],5,568446438),n=b(n,g,e,k,f[a+14],9,3275163606),k=b(k,n,g,e,f[a+3],14,4107603335),e=b(e,k,n,g,f[a+8],20,1163531501),g=b(g,e,k,n,f[a+13],5,2850285829),n=b(n,g,e,k,f[a+2],9,4243563512),k=b(k,n,g,e,f[a+7],14,1735328473),e=b(e,k,n,g,f[a+12],20,2368359562),g=h(g,e,k,n,f[a+5],4,4294588738),n=h(n,g,e,k,f[a+8],11,2272392833),k=h(k,n,g,e,f[a+11],16,1839030562),e=h(e,k,n,g,f[a+14],23,4259657740),g=h(g,e,k,n,f[a+1],4,2763975236),n=h(n,g,e,k,f[a+4],11,1272893353),k=h(k,n,g,e,f[a+7],16,4139469664),
|
||||
e=h(e,k,n,g,f[a+10],23,3200236656),g=h(g,e,k,n,f[a+13],4,681279174),n=h(n,g,e,k,f[a+0],11,3936430074),k=h(k,n,g,e,f[a+3],16,3572445317),e=h(e,k,n,g,f[a+6],23,76029189),g=h(g,e,k,n,f[a+9],4,3654602809),n=h(n,g,e,k,f[a+12],11,3873151461),k=h(k,n,g,e,f[a+15],16,530742520),e=h(e,k,n,g,f[a+2],23,3299628645),g=m(g,e,k,n,f[a+0],6,4096336452),n=m(n,g,e,k,f[a+7],10,1126891415),k=m(k,n,g,e,f[a+14],15,2878612391),e=m(e,k,n,g,f[a+5],21,4237533241),g=m(g,e,k,n,f[a+12],6,1700485571),n=m(n,g,e,k,f[a+3],10,2399980690),
|
||||
k=m(k,n,g,e,f[a+10],15,4293915773),e=m(e,k,n,g,f[a+1],21,2240044497),g=m(g,e,k,n,f[a+8],6,1873313359),n=m(n,g,e,k,f[a+15],10,4264355552),k=m(k,n,g,e,f[a+6],15,2734768916),e=m(e,k,n,g,f[a+13],21,1309151649),g=m(g,e,k,n,f[a+4],6,4149444226),n=m(n,g,e,k,f[a+11],10,3174756917),k=m(k,n,g,e,f[a+2],15,718787259),e=m(e,k,n,g,f[a+9],21,3951481745),g=c(g,r),e=c(e,j),k=c(k,l),n=c(n,u);return(i(g)+i(e)+i(k)+i(n)).toLowerCase()};(function(a){a.fn.stupidtable=function(){a(this).on("click","thead th",function(){a(this).stupidsort()})};a.fn.stupidsort=function(){function c(b){var c=0,d;a(b).children("td,th").each(function(){if(c==r)return d=a(this),!1;var b=a(this).attr("colspan");c+=b?Number(b):1});b="undefined"!=typeof d.data("sort-value")?d.data("sort-value"):"undefined"!=typeof d.attr("data-sort-value")?d.attr("data-sort-value"):d.text();switch(i){case "string":case "string-ins":b=String(b).toLowerCase();break;case "int":b=
|
||||
parseInt(Number(b));break;case "float":b=Number(b)}return b}var d=a(this),b=d.closest("table"),h=b.children("tbody"),m=h.children("tr"),i=d.attr("data-sort-type");if(i){var f=!0;d.hasClass("sorting-asc")&&(f=!1);var r=0;d.prevAll().each(function(){var b=a(this).attr("colspan");r+=b?Number(b):1});m.sort(function(a,b){var d=f?1:-1,a=c(a),b=c(b);return a>b?1*d:a<b?-1*d:0});h.append(m);b.find("thead th").removeClass("sorting-asc").removeClass("sorting-desc");d.addClass(f?"sorting-asc":"sorting-desc")}}})(jQuery);$(function(){UI.elements={menu:$("nav > .menu"),main:$("main"),header:$("header"),connection:{status:$("#connection"),user_and_host:$("#user_and_host"),msg:$("#message")}};UI.buildMenu();UI.stored.getOpts();try{if("mistLogin"in sessionStorage){var a=JSON.parse(sessionStorage.mistLogin);mist.user.name=a.name;mist.user.password=a.password;mist.user.host=a.host}}catch(c){}location.hash&&(a=decodeURIComponent(location.hash).substring(1).split("@")[0].split("&"),mist.user.name=a[0],a[1]&&(mist.user.host=
|
||||
a[1]));mist.send(function(){$(window).trigger("hashchange")},{},{timeout:5,hide:!0});var d=0;$("body > div.filler").on("scroll",function(){var a=$(this).scrollLeft();a!=d&&UI.elements.header.css("margin-right",-1*a+"px");d=a})});$(window).on("hashchange",function(){var a=decodeURIComponent(location.hash).substring(1).split("@");a[1]||(a[1]="");a=a[1].split("&");""==a[0]&&(a[0]="Overview");UI.showTab(a[0],a[1])});
|
||||
var MistVideoObject={},otherhost={host:!1,https:!1},UI={debug:!1,elements:{},stored:{getOpts:function(){var a=localStorage.stored;a&&(a=JSON.parse(a));$.extend(!0,this.vars,a);return this.vars},saveOpt:function(a,c){this.vars[a]=c;localStorage.stored=JSON.stringify(this.vars);return this.vars},vars:{helpme:!0}},interval:{clear:function(){"undefined"!=typeof this.opts&&(clearInterval(this.opts.id),delete this.opts)},set:function(a,c){this.opts&&log("[interval]","Set called on interval, but an interval is already active.");
|
||||
this.opts={delay:c,callback:a};this.opts.id=setInterval(a,c)}},returnTab:["Overview"],countrylist:{AF:"Afghanistan",AX:"Åland Islands",AL:"Albania",DZ:"Algeria",AS:"American Samoa",AD:"Andorra",AO:"Angola",AI:"Anguilla",AQ:"Antarctica",AG:"Antigua and Barbuda",AR:"Argentina",AM:"Armenia",AW:"Aruba",AU:"Australia",AT:"Austria",AZ:"Azerbaijan",BS:"Bahamas",BH:"Bahrain",BD:"Bangladesh",BB:"Barbados",BY:"Belarus",BE:"Belgium",BZ:"Belize",BJ:"Benin",BM:"Bermuda",BT:"Bhutan",BO:"Bolivia, Plurinational State of",
|
||||
|
@ -21,47 +21,47 @@ clearTimeout(this.hiding);delete this.hiding;var d=$(document).height()-$tooltip
|
|||
"HLS (TS)";break;case "html5/application/vnd.apple.mpegurl;version=7":c="HLS (CMAF)";break;case "html5/video/webm":c="WebM";break;case "html5/video/mp4":c="MP4";break;case "dash/video/mp4":c="DASH";break;case "flash/11":c="HDS";break;case "flash/10":c="RTMP";break;case "flash/7":c="Progressive";break;case "html5/audio/mp3":c="MP3";break;case "html5/audio/wav":c="WAV";break;case "html5/video/mp2t":case "html5/video/mpeg":c="TS";break;case "html5/application/vnd.ms-sstr+xml":case "html5/application/vnd.ms-ss":c=
|
||||
"Smooth Streaming";break;case "html5/text/vtt":c="VTT Subtitles";break;case "html5/text/plain":c="SRT Subtitles";break;case "html5/text/javascript":c="JSON Subtitles";break;case "rtsp":c="RTSP";break;case "webrtc":c="WebRTC"}return c},popup:{element:null,show:function(a){this.element=$("<div>").attr("id","popup").append($("<button>").text("Close").addClass("close").click(function(){UI.popup.element.fadeOut("fast",function(){UI.popup.element.remove();UI.popup.element=null})})).append(a);$("body").append(this.element)}},
|
||||
menu:[{Overview:{},Protocols:{},Streams:{hiddenmenu:{Edit:{},Preview:{},Embed:{}}},Push:{LTSonly:!0},Triggers:{LTSonly:!1},Logs:{},Statistics:{},"Server Stats":{}},{Disconnect:{classes:["red"]}},{Guides:{link:"http://mistserver.org/documentation#Userdocs"},Tools:{submenu:{"Release notes":{link:"http://mistserver.org/documentation#Devdocs"},"Mist Shop":{link:"http://mistserver.org/products"},"Email for Help":{}}}}],buildMenu:function(){function a(a,b){var c=$("<a>").addClass("button");c.html($("<span>").addClass("plain").text(a)).append($("<span>").addClass("highlighted").text(a));
|
||||
for(var d in b.classes)c.addClass(b.classes[d]);"LTSonly"in b&&c.addClass("LTSonly");"link"in b?c.attr("href",b.link).attr("target","_blank"):"submenu"in b||c.click(function(b){$(this).closest(".menu").hasClass("hide")||(UI.navto(a),b.stopPropagation())});return c}var c=UI.elements.menu,d;for(d in UI.menu){0<d&&c.append($("<br>"));for(var b in UI.menu[d]){var i=UI.menu[d][b],m=a(b,i);c.append(m);if("submenu"in i){var h=$("<span>").addClass("submenu");m.addClass("arrowdown").append(h);for(var f in i.submenu)h.append(a(f,
|
||||
i.submenu[f]))}else if("hiddenmenu"in i)for(f in h=$("<span>").addClass("hiddenmenu"),m.append(h),i.hiddenmenu)h.append(a(f,i.hiddenmenu[f]))}}d=$("<div>").attr("id","ih_button").text("?").click(function(){$("body").toggleClass("helpme");UI.stored.saveOpt("helpme",$("body").hasClass("helpme"))}).attr("title","Click to toggle the display of integrated help");UI.stored.getOpts().helpme&&$("body").addClass("helpme");c.after(d).after($("<div>").addClass("separator"))},findInput:function(a){return this.findInOutput("inputs",
|
||||
a)},findOutput:function(a){return this.findInOutput("connectors",a)},findInOutput:function(a,c){if("capabilities"in mist.data){var d=!1,b=mist.data.capabilities[a];c in b&&(d=b[c]);c+".exe"in b&&(d=b[c+".exe"]);return d}throw"Request capabilities first";},buildUI:function(a){var c=$("<div>").addClass("input_container"),d;for(d in a){var b=a[d];if(b instanceof jQuery)c.append(b);else if("help"==b.type){var i=$("<span>").addClass("text_container").append($("<span>").addClass("description").append(b.help));
|
||||
c.append(i);if("classes"in b)for(var m in b.classes)i.addClass(b.classes[m])}else if("text"==b.type)c.append($("<span>").addClass("text_container").append($("<span>").addClass("text").append(b.text)));else if("custom"==b.type)c.append(b.custom);else if("buttons"==b.type)for(m in i=$("<span>").addClass("button_container").on("keydown",function(a){a.stopPropagation()}),"css"in b&&i.css(b.css),c.append(i),b.buttons){var h=b.buttons[m],f=$("<button>").text(h.label).data("opts",h);"css"in h&&f.css(h.css);
|
||||
if("classes"in h)for(var r in h.classes)f.addClass(h.classes[r]);i.append(f);switch(h.type){case "cancel":f.addClass("cancel").click(h["function"]);break;case "save":f.addClass("save").click(function(){var a=$(this).data("opts").preSave;a&&a.call(this);var b=$(this).closest(".input_container"),c=!1;b.find('.hasValidate:visible, input[type="hidden"].hasValidate').each(function(){if(c=$(this).data("validate")(this,!0))return!1});(a=$(this).data("opts").failedValidate)&&a.call(this);c||(b.find('.isSetting:visible, input[type="hidden"].isSetting').each(function(){var a=
|
||||
$(this).getval(),b=$(this).data("pointer");if(""==a)if("default"in $(this).data("opts"))a=$(this).data("opts")["default"];else return b.main[b.index]=null,!0;b.main[b.index]=a}),(a=$(this).data("opts")["function"])&&a(this))});break;default:f.click(h["function"])}}else{var j=$("<label>").addClass("UIelement");c.append(j);"css"in b&&j.css(b.css);j.append($("<span>").addClass("label").html("label"in b?b.label+":":""));if("classes"in b)for(r in b.classes)j.addClass(b.classes[r]);i=$("<span>").addClass("field_container");
|
||||
j.append(i);var l;switch(b.type){case "password":l=$("<input>").attr("type","password");break;case "int":l=$("<input>").attr("type","number");"min"in b&&l.attr("min",b.min);"max"in b&&l.attr("max",b.max);"validate"in b?b.validate.push("int"):b.validate=["int"];break;case "span":l=$("<span>");break;case "debug":b.select=[["","Default"],[0,"0 - All debugging messages disabled"],[1,"1 - Messages about failed operations"],[2,"2 - Previous level, and error messages"],[3,"3 - Previous level, and warning messages"],
|
||||
for(var d in b.classes)c.addClass(b.classes[d]);"LTSonly"in b&&c.addClass("LTSonly");"link"in b?c.attr("href",b.link).attr("target","_blank"):"submenu"in b||c.click(function(b){$(this).closest(".menu").hasClass("hide")||(UI.navto(a),b.stopPropagation())});return c}var c=UI.elements.menu,d;for(d in UI.menu){0<d&&c.append($("<br>"));for(var b in UI.menu[d]){var h=UI.menu[d][b],m=a(b,h);c.append(m);if("submenu"in h){var i=$("<span>").addClass("submenu");m.addClass("arrowdown").append(i);for(var f in h.submenu)i.append(a(f,
|
||||
h.submenu[f]))}else if("hiddenmenu"in h)for(f in i=$("<span>").addClass("hiddenmenu"),m.append(i),h.hiddenmenu)i.append(a(f,h.hiddenmenu[f]))}}d=$("<div>").attr("id","ih_button").text("?").click(function(){$("body").toggleClass("helpme");UI.stored.saveOpt("helpme",$("body").hasClass("helpme"))}).attr("title","Click to toggle the display of integrated help");UI.stored.getOpts().helpme&&$("body").addClass("helpme");c.after(d).after($("<div>").addClass("separator"))},findInput:function(a){return this.findInOutput("inputs",
|
||||
a)},findOutput:function(a){return this.findInOutput("connectors",a)},findInOutput:function(a,c){if("capabilities"in mist.data){var d=!1,b=mist.data.capabilities[a];c in b&&(d=b[c]);c+".exe"in b&&(d=b[c+".exe"]);return d}throw"Request capabilities first";},buildUI:function(a){var c=$("<div>").addClass("input_container"),d;for(d in a){var b=a[d];if(b instanceof jQuery)c.append(b);else if("help"==b.type){var h=$("<span>").addClass("text_container").append($("<span>").addClass("description").append(b.help));
|
||||
c.append(h);if("classes"in b)for(var m in b.classes)h.addClass(b.classes[m])}else if("text"==b.type)c.append($("<span>").addClass("text_container").append($("<span>").addClass("text").append(b.text)));else if("custom"==b.type)c.append(b.custom);else if("buttons"==b.type)for(m in h=$("<span>").addClass("button_container").on("keydown",function(a){a.stopPropagation()}),"css"in b&&h.css(b.css),c.append(h),b.buttons){var i=b.buttons[m],f=$("<button>").text(i.label).data("opts",i);"css"in i&&f.css(i.css);
|
||||
if("classes"in i)for(var r in i.classes)f.addClass(i.classes[r]);h.append(f);switch(i.type){case "cancel":f.addClass("cancel").click(i["function"]);break;case "save":f.addClass("save").click(function(){var a=$(this).data("opts").preSave;a&&a.call(this);var b=$(this).closest(".input_container"),c=!1;b.find('.hasValidate:visible, input[type="hidden"].hasValidate').each(function(){if(c=$(this).data("validate")(this,!0))return!1});(a=$(this).data("opts").failedValidate)&&a.call(this);c||(b.find('.isSetting:visible, input[type="hidden"].isSetting').each(function(){var a=
|
||||
$(this).getval(),b=$(this).data("pointer");if(""==a)if("default"in $(this).data("opts"))a=$(this).data("opts")["default"];else return b.main[b.index]=null,!0;b.main[b.index]=a}),(a=$(this).data("opts")["function"])&&a(this))});break;default:f.click(i["function"])}}else{var j=$("<label>").addClass("UIelement");c.append(j);"css"in b&&j.css(b.css);j.append($("<span>").addClass("label").html("label"in b?b.label+":":""));if("classes"in b)for(r in b.classes)j.addClass(b.classes[r]);h=$("<span>").addClass("field_container");
|
||||
j.append(h);var l;switch(b.type){case "password":l=$("<input>").attr("type","password");break;case "int":l=$("<input>").attr("type","number");"min"in b&&l.attr("min",b.min);"max"in b&&l.attr("max",b.max);"validate"in b?b.validate.push("int"):b.validate=["int"];break;case "span":l=$("<span>");break;case "debug":b.select=[["","Default"],[0,"0 - All debugging messages disabled"],[1,"1 - Messages about failed operations"],[2,"2 - Previous level, and error messages"],[3,"3 - Previous level, and warning messages"],
|
||||
[4,"4 - Previous level, and status messages for development"],[5,"5 - Previous level, and more status messages for development"],[6,"6 - Previous level, and verbose debugging messages"],[7,"7 - Previous level, and very verbose debugging messages"],[8,"8 - Report everything in extreme detail"],[9,"9 - Report everything in insane detail"],[10,"10 - All messages enabled"]];case "select":l=$("<select>");for(m in b.select)f=$("<option>"),"string"==typeof b.select[m]?f.text(b.select[m]):f.val(b.select[m][0]).text(b.select[m][1]),
|
||||
l.append(f);break;case "textarea":l=$("<textarea>").on("keydown",function(a){a.stopPropagation()});break;case "checkbox":l=$("<input>").attr("type","checkbox");break;case "hidden":l=$("<input>").attr("type","hidden");j.hide();break;case "email":l=$("<input>").attr("type","email").attr("autocomplete","on").attr("required","");break;case "browse":l=$("<input>").attr("type","text");"filetypes"in b&&l.data("filetypes",b.filetypes);break;case "geolimited":case "hostlimited":l=$("<input>").attr("type",
|
||||
"hidden");break;case "radioselect":l=$("<div>").addClass("radioselect");for(d in b.radioselect)if(h=$("<input>").attr("type","radio").val(b.radioselect[d][0]).attr("name",b.label),("LTSonly"in b&&!mist.data.LTS||b.readonly)&&h.prop("disabled",!0),f=$("<label>").append(h).append($("<span>").html(b.radioselect[d][1])),l.append(f),2<b.radioselect[d].length)for(m in h=$("<select>").change(function(){$(this).parent().find("input[type=radio]:enabled").prop("checked","true")}),f.append(h),("LTSonly"in b&&
|
||||
!mist.data.LTS||b.readonly)&&h.prop("disabled",!0),b.radioselect[d][2])f=$("<option>"),h.append(f),b.radioselect[d][2][m]instanceof Array?f.val(b.radioselect[d][2][m][0]).html(b.radioselect[d][2][m][1]):f.html(b.radioselect[d][2][m]);break;case "checklist":l=$("<div>").addClass("checkcontainer");$controls=$("<div>").addClass("controls");$checklist=$("<div>").addClass("checklist");l.append($checklist);for(d in b.checklist)"string"==typeof b.checklist[d]&&(b.checklist[d]=[b.checklist[d],b.checklist[d]]),
|
||||
$checklist.append($("<label>").text(b.checklist[d][1]).prepend($("<input>").attr("type","checkbox").attr("name",b.checklist[d][0])));break;case "DOMfield":l=b.DOMfield;break;case "unix":l=$("<input>").attr("type","datetime-local").attr("step",1);b.unit=$("<button>").text("Now").click(function(){$(this).closest(".field_container").find(".field").setval((new Date).getTime()/1E3)});break;case "selectinput":l=$("<div>").addClass("selectinput");h=$("<select>");l.append(h);h.data("input",!1);"LTSonly"in
|
||||
b&&!mist.data.LTS&&h.prop("disabled",!0);for(d in b.selectinput)f=$("<option>"),h.append(f),"string"==typeof b.selectinput[d]?f.text(b.selectinput[d]):(f.text(b.selectinput[d][1]),"string"==typeof b.selectinput[d][0]?f.val(b.selectinput[d][0]):(f.val("CUSTOM"),h.data("input")||h.data("input",UI.buildUI([b.selectinput[d][0]]).children())));h.data("input")&&l.append(h.data("input"));h.change(function(){"CUSTOM"==$(this).val()?$(this).data("input").css("display","flex"):$(this).data("input").hide()});
|
||||
h.trigger("change");break;case "inputlist":l=$("<div>").addClass("inputlist");l.data("newitem",function(){var a=$("<input>").attr("type","text").addClass("listitem");("LTSonly"in b&&!mist.data.LTS||b.readonly)&&a.prop("disabled",!0);var c=function(b){$(this).is(":last-child")?""!=$(this).val()?$(this).after(a.clone().keyup(c).val("")):8==b.which&&$(this).prev().focus():""==$(this).val()&&($(this).next().focus(),$(this).remove())};a.keyup(c);return a});l.append(l.data("newitem"));break;case "sublist":l=
|
||||
$("<div>").addClass("sublist");h=$("<div>").addClass("curvals");h.append($("<span>").text("None."));var u=$("<div>").addClass("itemsettings"),g=$("<button>").text("New "+b.itemLabel),e=b.sublist;l.data("build",function(a,c){for(var d in b.saveas)d in a||delete b.saveas[d];b.saveas=Object.assign(b.saveas,a);d="New";"undefined"!=typeof c&&(d="Edit");d=UI.buildUI([$("<h4>").text(d+" "+b.itemLabel)].concat(e).concat([{label:"Save first",type:"str",classes:["onlyshowhelp"],validate:[function(){return{msg:"Did you want to save this "+
|
||||
"hidden");break;case "radioselect":l=$("<div>").addClass("radioselect");for(d in b.radioselect)if(i=$("<input>").attr("type","radio").val(b.radioselect[d][0]).attr("name",b.label),("LTSonly"in b&&!mist.data.LTS||b.readonly)&&i.prop("disabled",!0),f=$("<label>").append(i).append($("<span>").html(b.radioselect[d][1])),l.append(f),2<b.radioselect[d].length)for(m in i=$("<select>").change(function(){$(this).parent().find("input[type=radio]:enabled").prop("checked","true")}),f.append(i),("LTSonly"in b&&
|
||||
!mist.data.LTS||b.readonly)&&i.prop("disabled",!0),b.radioselect[d][2])f=$("<option>"),i.append(f),b.radioselect[d][2][m]instanceof Array?f.val(b.radioselect[d][2][m][0]).html(b.radioselect[d][2][m][1]):f.html(b.radioselect[d][2][m]);break;case "checklist":l=$("<div>").addClass("checkcontainer");$controls=$("<div>").addClass("controls");$checklist=$("<div>").addClass("checklist");l.append($checklist);for(d in b.checklist)"string"==typeof b.checklist[d]&&(b.checklist[d]=[b.checklist[d],b.checklist[d]]),
|
||||
$checklist.append($("<label>").text(b.checklist[d][1]).prepend($("<input>").attr("type","checkbox").attr("name",b.checklist[d][0])));break;case "DOMfield":l=b.DOMfield;break;case "unix":l=$("<input>").attr("type","datetime-local").attr("step",1);b.unit=$("<button>").text("Now").click(function(){$(this).closest(".field_container").find(".field").setval((new Date).getTime()/1E3)});break;case "selectinput":l=$("<div>").addClass("selectinput");i=$("<select>");l.append(i);i.data("input",!1);"LTSonly"in
|
||||
b&&!mist.data.LTS&&i.prop("disabled",!0);for(d in b.selectinput)f=$("<option>"),i.append(f),"string"==typeof b.selectinput[d]?f.text(b.selectinput[d]):(f.text(b.selectinput[d][1]),"string"==typeof b.selectinput[d][0]?f.val(b.selectinput[d][0]):(f.val("CUSTOM"),i.data("input")||i.data("input",UI.buildUI([b.selectinput[d][0]]).children())));i.data("input")&&l.append(i.data("input"));i.change(function(){"CUSTOM"==$(this).val()?$(this).data("input").css("display","flex"):$(this).data("input").hide()});
|
||||
i.trigger("change");break;case "inputlist":l=$("<div>").addClass("inputlist");l.data("newitem",function(){var a=$("<input>").attr("type","text").addClass("listitem");("LTSonly"in b&&!mist.data.LTS||b.readonly)&&a.prop("disabled",!0);var c=function(b){$(this).is(":last-child")?""!=$(this).val()?$(this).after(a.clone().keyup(c).val("")):8==b.which&&$(this).prev().focus():""==$(this).val()&&($(this).next().focus(),$(this).remove())};a.keyup(c);return a});l.append(l.data("newitem"));break;case "sublist":l=
|
||||
$("<div>").addClass("sublist");i=$("<div>").addClass("curvals");i.append($("<span>").text("None."));var u=$("<div>").addClass("itemsettings"),g=$("<button>").text("New "+b.itemLabel),e=b.sublist;l.data("build",function(a,c){for(var d in b.saveas)d in a||delete b.saveas[d];b.saveas=Object.assign(b.saveas,a);d="New";"undefined"!=typeof c&&(d="Edit");d=UI.buildUI([$("<h4>").text(d+" "+b.itemLabel)].concat(e).concat([{label:"Save first",type:"str",classes:["onlyshowhelp"],validate:[function(){return{msg:"Did you want to save this "+
|
||||
b.itemLabel+"?",classes:["red"]}}]},{type:"buttons",buttons:[{label:"Cancel",type:"cancel","function":function(){u.html("");g.show();j.show()}},{label:"Save "+b.itemLabel,type:"save",preSave:function(){$(this).closest(".input_container").find(".onlyshowhelp").closest("label").hide()},failedValidate:function(){$(this).closest(".input_container").find(".onlyshowhelp").closest("label").show()},"function":function(){var a=l.getval(),d=Object.assign({},b.saveas),e;for(e in d)null===d[e]&&delete d[e];"undefined"==
|
||||
typeof c?a.push(d):a[c]=d;l.setval(a);u.html("");g.show();j.show()}}]}]));u.html(d);g.hide();j.hide()});g.click(function(){l.data("build")({})});e.unshift({type:"str",label:"Human readable name",placeholder:"none",help:"A convenient name to describe this "+b.itemLabel+". It won't be used by MistServer.",pointer:{main:b.saveas,index:"x-LSP-name"}});l.data("savelist",[]);l.append(h).append(g);c.append(u);break;default:l=$("<input>").attr("type","text")}l.addClass("field").data("opts",b);"pointer"in
|
||||
b&&l.attr("name",b.pointer.index);i.append(l);if("classes"in b)for(m in b.classes)l.addClass(b.classes[m]);"placeholder"in b&&l.attr("placeholder",b.placeholder);"default"in b&&l.attr("placeholder",b["default"]);"unit"in b&&i.append($("<span>").addClass("unit").html(b.unit));"readonly"in b&&(l.attr("readonly","readonly"),l.click(function(){$(this).select()}));"qrcode"in b&&i.append($("<span>").addClass("unit").html($("<button>").text("QR").on("keydown",function(a){a.stopPropagation()}).click(function(){var a=
|
||||
String($(this).closest(".field_container").find(".field").getval()),b=$("<div>").addClass("qrcode");UI.popup.show($("<span>").addClass("qr_container").append($("<p>").text(a)).append(b));b.qrcode({text:a,size:Math.min(b.width(),b.height())})})));"clipboard"in b&&document.queryCommandSupported("copy")&&i.append($("<span>").addClass("unit").html($("<button>").text("Copy").on("keydown",function(a){a.stopPropagation()}).click(function(){var a=String($(this).closest(".field_container").find(".field").getval()),
|
||||
b=document.createElement("textarea");b.value=a;document.body.appendChild(b);b.select();var c=false;try{c=document.execCommand("copy")}catch(d){}if(c){$(this).text("Copied to clipboard!");document.body.removeChild(b);var e=$(this);setTimeout(function(){e.text("Copy")},5E3)}else{document.body.removeChild(b);alert("Failed to copy:\n"+a)}})));"rows"in b&&l.attr("rows",b.rows);"LTSonly"in b&&!mist.data.LTS&&(i.addClass("LTSonly"),l.prop("disabled",!0));if("dependent"in b)for(d in b.dependent)j.attr("data-dependent-"+
|
||||
d,b.dependent[d]);switch(b.type){case "browse":h=$("<div>").addClass("grouper").append(j);c.append(h);h=$("<button>").text("Browse").on("keydown",function(a){a.stopPropagation()});i.append(h);h.click(function(){function a(b){h.text("Loading..");mist.send(function(a){f.text(a.browse.path[0]);mist.data.LTS&&d.setval(a.browse.path[0]+"/");h.html(i.clone(true).text("..").attr("title","Folder up"));if(a.browse.subdirectories){a.browse.subdirectories.sort();for(var b in a.browse.subdirectories){var g=a.browse.subdirectories[b];
|
||||
h.append(i.clone(true).attr("title",f.text()+l+g).text(g))}}if(a.browse.files){a.browse.files.sort();for(b in a.browse.files){var g=a.browse.files[b],k=f.text()+l+g,g=$("<a>").text(g).addClass("file").attr("title",k);h.append(g);if(j){var n=true,m;for(m in j)if(typeof j[m]!="undefined"&&mist.inputMatch(j[m],k)){n=false;break}n&&g.hide()}g.click(function(){var a=$(this).attr("title");d.setval(a).removeAttr("readonly").css("opacity",1);e.show();c.remove()})}}},{browse:b})}var b=$(this).closest(".grouper"),
|
||||
c=$("<div>").addClass("browse_container"),d=b.find(".field").attr("readonly","readonly").css("opacity",0.5),e=$(this),g=$("<button>").text("Stop browsing").click(function(){e.show();c.remove();d.removeAttr("readonly").css("opacity",1)}),f=$("<span>").addClass("field"),h=$("<div>").addClass("browse_contents"),i=$("<a>").addClass("folder"),j=d.data("filetypes");b.append(c);c.append($("<label>").addClass("UIelement").append($("<span>").addClass("label").text("Current folder:")).append($("<span>").addClass("field_container").append(f).append(g))).append(h);
|
||||
var l="/";mist.data.config.version.indexOf("indows")>-1&&(l="\\");i.click(function(){var b=f.text()+l+$(this).text();a(b)});b=d.getval();g=b.split("://");g.length>1&&(b=g[0]=="file"?g[1]:"");b=b.split(l);b.pop();b=b.join(l);e.hide();a(b)});break;case "geolimited":case "hostlimited":h={field:l};h.blackwhite=$("<select>").append($("<option>").val("-").text("Blacklist")).append($("<option>").val("+").text("Whitelist"));h.values=$("<span>").addClass("limit_value_list");switch(b.type){case "geolimited":h.prototype=
|
||||
$("<select>").append($("<option>").val("").text("[Select a country]"));for(d in UI.countrylist)h.prototype.append($("<option>").val(d).html(UI.countrylist[d]));break;case "hostlimited":h.prototype=$("<input>").attr("type","text").attr("placeholder","type a host")}h.prototype.on("change keyup",function(){$(this).closest(".field_container").data("subUI").blackwhite.trigger("change")});h.blackwhite.change(function(){var a=$(this).closest(".field_container").data("subUI"),b=[],c=false;a.values.children().each(function(){c=
|
||||
$(this).val();c!=""?b.push(c):$(this).remove()});a.values.append(a.prototype.clone(true));b.length>0?a.field.val($(this).val()+b.join(" ")):a.field.val("");a.field.trigger("change")});"LTSonly"in b&&!mist.data.LTS&&(h.blackwhite.prop("disabled",!0),h.prototype.prop("disabled",!0));h.values.append(h.prototype.clone(!0));i.data("subUI",h).addClass("limit_list").append(h.blackwhite).append(h.values)}"pointer"in b&&(l.data("pointer",b.pointer).addClass("isSetting"),b.pointer.main&&(h=b.pointer.main[b.pointer.index],
|
||||
"undefined"!=h&&l.setval(h)));(""==l.getval()||null==l.getval())&&"value"in b&&l.setval(b.value);if("datalist"in b)for(d in h="datalist_"+d+MD5(l[0].outerHTML),l.attr("list",h),h=$("<datalist>").attr("id",h),i.append(h),b.datalist)h.append($("<option>").val(b.datalist[d]));i=$("<span>").addClass("help_container");j.append(i);"help"in b&&(i.append($("<span>").addClass("ih_balloon").html(b.help)),l.on("focus mouseover",function(){$(this).closest("label").addClass("active")}).on("blur mouseout",function(){$(this).closest("label").removeClass("active")}));
|
||||
if("validate"in b){h=[];for(m in b.validate){f=b.validate[m];if("function"!=typeof f)switch(f){case "required":f=function(a){return a==""||a==null?{msg:"This is a required field.",classes:["red"]}:false};break;case "int":f=function(a,b){var c=$(b).data("opts");if(!$(b)[0].validity.valid){var d=[];"min"in c&&d.push(" greater than or equal to "+c.min);"max"in c&&d.push(" smaller than or equal to "+c.max);return{msg:"Please enter an integer"+d.join(" and")+".",classes:["red"]}}if(parseInt(Number(a))!=
|
||||
typeof c?a.push(d):a[c]=d;l.setval(a);u.html("");g.show();j.show()}}]}]));u.html(d);g.hide();j.hide()});g.click(function(){l.data("build")({})});e.unshift({type:"str",label:"Human readable name",placeholder:"none",help:"A convenient name to describe this "+b.itemLabel+". It won't be used by MistServer.",pointer:{main:b.saveas,index:"x-LSP-name"}});l.data("savelist",[]);l.append(i).append(g);c.append(u);break;default:l=$("<input>").attr("type","text")}l.addClass("field").data("opts",b);"pointer"in
|
||||
b&&l.attr("name",b.pointer.index);h.append(l);if("classes"in b)for(m in b.classes)l.addClass(b.classes[m]);"placeholder"in b&&l.attr("placeholder",b.placeholder);"default"in b&&l.attr("placeholder",b["default"]);"unit"in b&&h.append($("<span>").addClass("unit").html(b.unit));"readonly"in b&&(l.attr("readonly","readonly"),l.click(function(){$(this).select()}));"qrcode"in b&&h.append($("<span>").addClass("unit").html($("<button>").text("QR").on("keydown",function(a){a.stopPropagation()}).click(function(){var a=
|
||||
String($(this).closest(".field_container").find(".field").getval()),b=$("<div>").addClass("qrcode");UI.popup.show($("<span>").addClass("qr_container").append($("<p>").text(a)).append(b));b.qrcode({text:a,size:Math.min(b.width(),b.height())})})));"clipboard"in b&&document.queryCommandSupported("copy")&&h.append($("<span>").addClass("unit").html($("<button>").text("Copy").on("keydown",function(a){a.stopPropagation()}).click(function(){var a=String($(this).closest(".field_container").find(".field").getval()),
|
||||
b=document.createElement("textarea");b.value=a;document.body.appendChild(b);b.select();var c=false;try{c=document.execCommand("copy")}catch(d){}if(c){$(this).text("Copied to clipboard!");document.body.removeChild(b);var e=$(this);setTimeout(function(){e.text("Copy")},5E3)}else{document.body.removeChild(b);alert("Failed to copy:\n"+a)}})));"rows"in b&&l.attr("rows",b.rows);"LTSonly"in b&&!mist.data.LTS&&(h.addClass("LTSonly"),l.prop("disabled",!0));if("dependent"in b)for(d in b.dependent)j.attr("data-dependent-"+
|
||||
d,b.dependent[d]);switch(b.type){case "browse":i=$("<div>").addClass("grouper").append(j);c.append(i);i=$("<button>").text("Browse").on("keydown",function(a){a.stopPropagation()});h.append(i);i.click(function(){function a(b){i.text("Loading..");mist.send(function(a){f.text(a.browse.path[0]);mist.data.LTS&&d.setval(a.browse.path[0]+"/");i.html(h.clone(true).text("..").attr("title","Folder up"));if(a.browse.subdirectories){a.browse.subdirectories.sort();for(var b in a.browse.subdirectories){var g=a.browse.subdirectories[b];
|
||||
i.append(h.clone(true).attr("title",f.text()+l+g).text(g))}}if(a.browse.files){a.browse.files.sort();for(b in a.browse.files){var g=a.browse.files[b],k=f.text()+l+g,g=$("<a>").text(g).addClass("file").attr("title",k);i.append(g);if(j){var n=true,m;for(m in j)if(typeof j[m]!="undefined"&&mist.inputMatch(j[m],k)){n=false;break}n&&g.hide()}g.click(function(){var a=$(this).attr("title");d.setval(a).removeAttr("readonly").css("opacity",1);e.show();c.remove()})}}},{browse:b})}var b=$(this).closest(".grouper"),
|
||||
c=$("<div>").addClass("browse_container"),d=b.find(".field").attr("readonly","readonly").css("opacity",0.5),e=$(this),g=$("<button>").text("Stop browsing").click(function(){e.show();c.remove();d.removeAttr("readonly").css("opacity",1)}),f=$("<span>").addClass("field"),i=$("<div>").addClass("browse_contents"),h=$("<a>").addClass("folder"),j=d.data("filetypes");b.append(c);c.append($("<label>").addClass("UIelement").append($("<span>").addClass("label").text("Current folder:")).append($("<span>").addClass("field_container").append(f).append(g))).append(i);
|
||||
var l="/";mist.data.config.version.indexOf("indows")>-1&&(l="\\");h.click(function(){var b=f.text()+l+$(this).text();a(b)});b=d.getval();g=b.split("://");g.length>1&&(b=g[0]=="file"?g[1]:"");b=b.split(l);b.pop();b=b.join(l);e.hide();a(b)});break;case "geolimited":case "hostlimited":i={field:l};i.blackwhite=$("<select>").append($("<option>").val("-").text("Blacklist")).append($("<option>").val("+").text("Whitelist"));i.values=$("<span>").addClass("limit_value_list");switch(b.type){case "geolimited":i.prototype=
|
||||
$("<select>").append($("<option>").val("").text("[Select a country]"));for(d in UI.countrylist)i.prototype.append($("<option>").val(d).html(UI.countrylist[d]));break;case "hostlimited":i.prototype=$("<input>").attr("type","text").attr("placeholder","type a host")}i.prototype.on("change keyup",function(){$(this).closest(".field_container").data("subUI").blackwhite.trigger("change")});i.blackwhite.change(function(){var a=$(this).closest(".field_container").data("subUI"),b=[],c=false;a.values.children().each(function(){c=
|
||||
$(this).val();c!=""?b.push(c):$(this).remove()});a.values.append(a.prototype.clone(true));b.length>0?a.field.val($(this).val()+b.join(" ")):a.field.val("");a.field.trigger("change")});"LTSonly"in b&&!mist.data.LTS&&(i.blackwhite.prop("disabled",!0),i.prototype.prop("disabled",!0));i.values.append(i.prototype.clone(!0));h.data("subUI",i).addClass("limit_list").append(i.blackwhite).append(i.values)}"pointer"in b&&(l.data("pointer",b.pointer).addClass("isSetting"),b.pointer.main&&(i=b.pointer.main[b.pointer.index],
|
||||
"undefined"!=i&&l.setval(i)));(""==l.getval()||null==l.getval())&&"value"in b&&l.setval(b.value);if("datalist"in b)for(d in i="datalist_"+d+MD5(l[0].outerHTML),l.attr("list",i),i=$("<datalist>").attr("id",i),h.append(i),b.datalist)i.append($("<option>").val(b.datalist[d]));h=$("<span>").addClass("help_container");j.append(h);"help"in b&&(h.append($("<span>").addClass("ih_balloon").html(b.help)),l.on("focus mouseover",function(){$(this).closest("label").addClass("active")}).on("blur mouseout",function(){$(this).closest("label").removeClass("active")}));
|
||||
if("validate"in b){i=[];for(m in b.validate){f=b.validate[m];if("function"!=typeof f)switch(f){case "required":f=function(a){return a==""||a==null?{msg:"This is a required field.",classes:["red"]}:false};break;case "int":f=function(a,b){var c=$(b).data("opts");if(!$(b)[0].validity.valid){var d=[];"min"in c&&d.push(" greater than or equal to "+c.min);"max"in c&&d.push(" smaller than or equal to "+c.max);return{msg:"Please enter an integer"+d.join(" and")+".",classes:["red"]}}if(parseInt(Number(a))!=
|
||||
a)return{msg:"Please enter an integer.",classes:["red"]}};break;case "streamname":f=function(a,b){if(a!=""){if(!isNaN(a.charAt(0)))return{msg:"The first character may not be a number.",classes:["red"]};if(a.toLowerCase()!=a)return{msg:"Uppercase letters are not allowed.",classes:["red"]};if(a.replace(/[^\da-z_]/g,"")!=a)return{msg:"Special characters (except for underscores) are not allowed.",classes:["red"]};if("streams"in mist.data&&a in mist.data.streams&&$(b).data("pointer").main.name!=a)return{msg:"This streamname already exists.<br>If you want to edit an existing stream, please click edit on the the streams tab.",
|
||||
classes:["red"]}}};break;case "streamname_with_wildcard":f=function(a){if(a!=""){streampart=a.split("+");var b=streampart.slice(1).join("+");streampart=streampart[0];if(!isNaN(streampart.charAt(0)))return{msg:"The first character may not be a number.",classes:["red"]};if(streampart.toLowerCase()!=streampart)return{msg:"Uppercase letters are not allowed in a stream name.",classes:["red"]};if(streampart.replace(/[^\da-z_]/g,"")!=streampart)return{msg:"Special characters (except for underscores) are not allowed in a stream name.",
|
||||
classes:["red"]};if(streampart!=a&&b.replace(/[\00|\0|\/]/g,"")!=b)return{msg:"Slashes or null bytes are not allowed in wildcards.",classes:["red"]}}};break;case "streamname_with_wildcard_and_variables":f=function(a){if(a!=""){streampart=a.split("+");var b=streampart.slice(1).join("+");streampart=streampart[0];if(!isNaN(streampart.charAt(0)))return{msg:"The first character may not be a number.",classes:["red"]};if(streampart.toLowerCase()!=streampart)return{msg:"Uppercase letters are not allowed in a stream name.",
|
||||
classes:["red"]};if(streampart.replace(/[^\da-z_$]/g,"")!=streampart)return{msg:"Special characters (except for underscores) are not allowed in a stream name.",classes:["red"]};if(streampart!=a&&b.replace(/[\00|\0|\/]/g,"")!=b)return{msg:"Slashes or null bytes are not allowed in wildcards.",classes:["red"]}}};break;default:f=function(){}}h.push(f)}l.data("validate_functions",h).data("help_container",i).data("validate",function(a,b){if($(a).is(":visible")||$(a).is('input[type="hidden"]')){var c=$(a).getval(),
|
||||
d=$(a).data("validate_functions"),g=$(a).data("help_container");g.find(".err_balloon").remove();for(var e in d){var f=d[e](c,a);if(f){$err=$("<span>").addClass("err_balloon").html(f.msg);for(var h in f.classes)$err.addClass(f.classes[h]);g.prepend($err);b&&$(a).focus();return typeof f=="object"&&"break"in f?f["break"]:true}}return false}}).addClass("hasValidate").on("change keyup",function(){$(this).data("validate")($(this))});""!=l.getval()&&l.trigger("change")}"function"in b&&(l.on("change keyup",
|
||||
b["function"]),l.trigger("change"))}}c.on("keydown",function(a){var b=!1;switch(a.which){case 13:b=$(this).find("button.save").first();break;case 27:b=$(this).find("button.cancel").first()}b&&b.length&&(b.trigger("click"),a.stopPropagation())});return c},buildVheaderTable:function(a){var c=$("<table>").css("margin","0.2em"),d=$("<tr>").addClass("header").append($("<td>").addClass("vheader").attr("rowspan",a.labels.length+1).append($("<span>").text(a.vheader))),b=[];d.append($("<td>"));for(var i in a.labels)b.push($("<tr>").append($("<td>").html(""==
|
||||
a.labels[i]?" ":a.labels[i]+":")));for(var m in a.content)for(i in d.append($("<td>").html(a.content[m].header)),a.content[m].body)b[i].append($("<td>").html(a.content[m].body[i]));c.append($("<tbody>").append(d).append(b));return c},plot:{addGraph:function(a,c){var d={id:a.id,xaxis:a.xaxis,datasets:[],elements:{cont:$("<div>").addClass("graph"),plot:$("<div>").addClass("plot"),legend:$("<div>").addClass("legend").attr("draggable","true")}};UI.draggable(d.elements.legend);d.elements.cont.append(d.elements.plot).append(d.elements.legend);
|
||||
c.append(d.elements.cont);return d},go:function(a){if(!(1>Object.keys(a).length)){var c={totals:[],clients:[]},d;for(d in a)for(var b in a[d].datasets){var i=a[d].datasets[b];switch(i.datatype){case "clients":case "upbps":case "downbps":switch(i.origin[0]){case "total":c.totals.push({fields:[i.datatype],end:-15});break;case "stream":c.totals.push({fields:[i.datatype],streams:[i.origin[1]],end:-15});break;case "protocol":c.totals.push({fields:[i.datatype],protocols:[i.origin[1]],end:-15})}break;case "cpuload":case "memload":c.capabilities=
|
||||
{}}}0==c.totals.length&&delete c.totals;0==c.clients.length&&delete c.clients;mist.send(function(){for(var b in a){var c=a[b];if(1>c.datasets.length){c.elements.plot.html("");c.elements.legend.html("");break}switch(c.xaxis){case "time":var d=[];c.yaxes={};var i=[],j;for(j in c.datasets){var l=c.datasets[j];l.display&&(l.getdata(),l.yaxistype in c.yaxes||(d.push(UI.plot.yaxes[l.yaxistype]),c.yaxes[l.yaxistype]=d.length),l.yaxis=c.yaxes[l.yaxistype],i.push(l))}d[0]&&(d[0].color=0);c.plot=$.plot(c.elements.plot,
|
||||
i,{legend:{show:!1},xaxis:UI.plot.xaxes[c.xaxis],yaxes:d,grid:{hoverable:!0,borderWidth:{top:0,right:0,bottom:1,left:1},color:"black",backgroundColor:{colors:["rgba(0,0,0,0)","rgba(0,0,0,0.025)"]}},crosshair:{mode:"x"}});d=$("<table>").addClass("legend-list").addClass("nolay").html($("<tr>").html($("<td>").html($("<h3>").text(c.id))).append($("<td>").css("padding-right","2em").css("text-align","right").html($("<span>").addClass("value")).append($("<button>").data("opts",c).text("X").addClass("close").click(function(){var b=
|
||||
$(this).data("opts");if(confirm("Are you sure you want to remove "+b.id+"?")){b.elements.cont.remove();var c=$(".graph_ids option:contains("+b.id+")"),d=c.parent();c.remove();UI.plot.del(b.id);delete a[b.id];d.trigger("change");UI.plot.go(a)}}))));c.elements.legend.html(d);var u=function(a){var b=c.elements.legend.find(".value"),d=1;if(typeof a=="undefined")b.eq(0).html("Latest:");else{var g=c.plot.getXAxes()[0],a=Math.min(g.max,a),a=Math.max(g.min,a);b.eq(0).html(UI.format.time(a/1E3))}for(var f in c.datasets){var i=
|
||||
" ";if(c.datasets[f].display){var g=UI.plot.yaxes[c.datasets[f].yaxistype].tickFormatter,j=c.datasets[f].data;if(a)for(var l in j){if(j[l][0]==a){i=g(j[l][1]);break}if(j[l][0]>a){if(l!=0){i=j[l];j=j[l-1];i=g(i[1]+(a-i[0])*(j[1]-i[1])/(j[0]-i[0]))}break}}else i=g(c.datasets[f].data[c.datasets[f].data.length-1][1])}b.eq(d).html(i);d++}};c.plot.getOptions();for(j in c.datasets)i=$("<input>").attr("type","checkbox").data("index",j).data("graph",c).click(function(){var a=$(this).data("graph");$(this).is(":checked")?
|
||||
a.datasets[$(this).data("index")].display=true:a.datasets[$(this).data("index")].display=false;var b={};b[a.id]=a;UI.plot.go(b)}),c.datasets[j].display&&i.attr("checked","checked"),d.append($("<tr>").html($("<td>").html($("<label>").html(i).append($("<div>").addClass("series-color").css("background-color",c.datasets[j].color)).append(c.datasets[j].label))).append($("<td>").css("padding-right","2em").css("text-align","right").html($("<span>").addClass("value")).append($("<button>").text("X").addClass("close").data("index",
|
||||
classes:["red"]};if(streampart.replace(/[^\da-z_$]/g,"")!=streampart)return{msg:"Special characters (except for underscores) are not allowed in a stream name.",classes:["red"]};if(streampart!=a&&b.replace(/[\00|\0|\/]/g,"")!=b)return{msg:"Slashes or null bytes are not allowed in wildcards.",classes:["red"]}}};break;default:f=function(){}}i.push(f)}l.data("validate_functions",i).data("help_container",h).data("validate",function(a,b){if($(a).is(":visible")||$(a).is('input[type="hidden"]')){var c=$(a).getval(),
|
||||
d=$(a).data("validate_functions"),g=$(a).data("help_container");g.find(".err_balloon").remove();for(var e in d){var f=d[e](c,a);if(f){$err=$("<span>").addClass("err_balloon").html(f.msg);for(var i in f.classes)$err.addClass(f.classes[i]);g.prepend($err);b&&$(a).focus();return typeof f=="object"&&"break"in f?f["break"]:true}}return false}}).addClass("hasValidate").on("change keyup",function(){$(this).data("validate")($(this))});""!=l.getval()&&l.trigger("change")}"function"in b&&(l.on("change keyup",
|
||||
b["function"]),l.trigger("change"))}}c.on("keydown",function(a){var b=!1;switch(a.which){case 13:b=$(this).find("button.save").first();break;case 27:b=$(this).find("button.cancel").first()}b&&b.length&&(b.trigger("click"),a.stopPropagation())});return c},buildVheaderTable:function(a){var c=$("<table>").css("margin","0.2em"),d=$("<tr>").addClass("header").append($("<td>").addClass("vheader").attr("rowspan",a.labels.length+1).append($("<span>").text(a.vheader))),b=[];d.append($("<td>"));for(var h in a.labels)b.push($("<tr>").append($("<td>").html(""==
|
||||
a.labels[h]?" ":a.labels[h]+":")));for(var m in a.content)for(h in d.append($("<td>").html(a.content[m].header)),a.content[m].body)b[h].append($("<td>").html(a.content[m].body[h]));c.append($("<tbody>").append(d).append(b));return c},plot:{addGraph:function(a,c){var d={id:a.id,xaxis:a.xaxis,datasets:[],elements:{cont:$("<div>").addClass("graph"),plot:$("<div>").addClass("plot"),legend:$("<div>").addClass("legend").attr("draggable","true")}};UI.draggable(d.elements.legend);d.elements.cont.append(d.elements.plot).append(d.elements.legend);
|
||||
c.append(d.elements.cont);return d},go:function(a){if(!(1>Object.keys(a).length)){var c={totals:[],clients:[]},d;for(d in a)for(var b in a[d].datasets){var h=a[d].datasets[b];switch(h.datatype){case "clients":case "upbps":case "downbps":switch(h.origin[0]){case "total":c.totals.push({fields:[h.datatype],end:-15});break;case "stream":c.totals.push({fields:[h.datatype],streams:[h.origin[1]],end:-15});break;case "protocol":c.totals.push({fields:[h.datatype],protocols:[h.origin[1]],end:-15})}break;case "cpuload":case "memload":c.capabilities=
|
||||
{}}}0==c.totals.length&&delete c.totals;0==c.clients.length&&delete c.clients;mist.send(function(){for(var b in a){var c=a[b];if(1>c.datasets.length){c.elements.plot.html("");c.elements.legend.html("");break}switch(c.xaxis){case "time":var d=[];c.yaxes={};var h=[],j;for(j in c.datasets){var l=c.datasets[j];l.display&&(l.getdata(),l.yaxistype in c.yaxes||(d.push(UI.plot.yaxes[l.yaxistype]),c.yaxes[l.yaxistype]=d.length),l.yaxis=c.yaxes[l.yaxistype],h.push(l))}d[0]&&(d[0].color=0);c.plot=$.plot(c.elements.plot,
|
||||
h,{legend:{show:!1},xaxis:UI.plot.xaxes[c.xaxis],yaxes:d,grid:{hoverable:!0,borderWidth:{top:0,right:0,bottom:1,left:1},color:"black",backgroundColor:{colors:["rgba(0,0,0,0)","rgba(0,0,0,0.025)"]}},crosshair:{mode:"x"}});d=$("<table>").addClass("legend-list").addClass("nolay").html($("<tr>").html($("<td>").html($("<h3>").text(c.id))).append($("<td>").css("padding-right","2em").css("text-align","right").html($("<span>").addClass("value")).append($("<button>").data("opts",c).text("X").addClass("close").click(function(){var b=
|
||||
$(this).data("opts");if(confirm("Are you sure you want to remove "+b.id+"?")){b.elements.cont.remove();var c=$(".graph_ids option:contains("+b.id+")"),d=c.parent();c.remove();UI.plot.del(b.id);delete a[b.id];d.trigger("change");UI.plot.go(a)}}))));c.elements.legend.html(d);var u=function(a){var b=c.elements.legend.find(".value"),d=1;if(typeof a=="undefined")b.eq(0).html("Latest:");else{var g=c.plot.getXAxes()[0],a=Math.min(g.max,a),a=Math.max(g.min,a);b.eq(0).html(UI.format.time(a/1E3))}for(var f in c.datasets){var h=
|
||||
" ";if(c.datasets[f].display){var g=UI.plot.yaxes[c.datasets[f].yaxistype].tickFormatter,j=c.datasets[f].data;if(a)for(var l in j){if(j[l][0]==a){h=g(j[l][1]);break}if(j[l][0]>a){if(l!=0){h=j[l];j=j[l-1];h=g(h[1]+(a-h[0])*(j[1]-h[1])/(j[0]-h[0]))}break}}else h=g(c.datasets[f].data[c.datasets[f].data.length-1][1])}b.eq(d).html(h);d++}};c.plot.getOptions();for(j in c.datasets)h=$("<input>").attr("type","checkbox").data("index",j).data("graph",c).click(function(){var a=$(this).data("graph");$(this).is(":checked")?
|
||||
a.datasets[$(this).data("index")].display=true:a.datasets[$(this).data("index")].display=false;var b={};b[a.id]=a;UI.plot.go(b)}),c.datasets[j].display&&h.attr("checked","checked"),d.append($("<tr>").html($("<td>").html($("<label>").html(h).append($("<div>").addClass("series-color").css("background-color",c.datasets[j].color)).append(c.datasets[j].label))).append($("<td>").css("padding-right","2em").css("text-align","right").html($("<span>").addClass("value")).append($("<button>").text("X").addClass("close").data("index",
|
||||
j).data("graph",c).click(function(){var b=$(this).data("index"),c=$(this).data("graph");if(confirm("Are you sure you want to remove "+c.datasets[b].label+" from "+c.id+"?")){c.datasets.splice(b,1);if(c.datasets.length==0){c.elements.cont.remove();var b=$(".graph_ids option:contains("+c.id+")"),d=b.parent();b.remove();d.trigger("change");UI.plot.del(c.id);delete a[c.id];UI.plot.go(a)}else{UI.plot.save(c);b={};b[c.id]=c;UI.plot.go(b)}}}))));u();var g=!1;c.elements.plot.on("plothover",function(a,b,c){if(b.x!=
|
||||
g){u(b.x);g=b.x}if(c){a=$("<span>").append($("<h3>").text(c.series.label).prepend($("<div>").addClass("series-color").css("background-color",c.series.color))).append($("<table>").addClass("nolay").html($("<tr>").html($("<td>").text("Time:")).append($("<td>").html(UI.format.dateTime(c.datapoint[0]/1E3,"long")))).append($("<tr>").html($("<td>").text("Value:")).append($("<td>").html(c.series.yaxis.tickFormatter(c.datapoint[1],c.series.yaxis)))));UI.tooltip.show(b,a.children())}else UI.tooltip.hide()}).on("mouseout",
|
||||
function(){u()})}}},c)}},save:function(a){var c={id:a.id,xaxis:a.xaxis,datasets:[]},d;for(d in a.datasets)c.datasets.push({origin:a.datasets[d].origin,datatype:a.datasets[d].datatype});a=mist.stored.get().graphs||{};a[c.id]=c;mist.stored.set("graphs",a)},del:function(a){var c=mist.stored.get().graphs||{};delete c[a];mist.stored.set("graphs",c)},datatype:{getOptions:function(a){var c=$.extend(!0,{},UI.plot.datatype.templates.general),d=$.extend(!0,{},UI.plot.datatype.templates[a.datatype]),a=$.extend(!0,
|
||||
|
@ -69,10 +69,10 @@ d,a),a=$.extend(!0,c,a);switch(a.origin[0]){case "total":switch(a.datatype){case
|
|||
mist.data.totals["stream"==this.origin[0]?this.origin[1]:"all_streams"]["protocol"==this.origin[0]?this.origin[1]:"all_protocols"][this.datatype];return this.data=a}},cpuload:{label:"CPU use",yaxistype:"percentage",basecolor:[237,194,64],cores:1,getdata:function(){var a=!1,c;for(c in this.data)this.data[c][0]<1E3*(mist.data.config.time-600)&&(a=c);!1!==a&&this.data.splice(0,Number(a)+1);this.data.push([1E3*mist.data.config.time,mist.data.capabilities.cpu_use/10]);return this.data}},memload:{label:"Memory load",
|
||||
yaxistype:"percentage",basecolor:[175,216,248],getdata:function(){var a=!1,c;for(c in this.data)this.data[c][0]<1E3*(mist.data.config.time-600)&&(a=c);!1!==a&&this.data.splice(0,Number(a)+1);this.data.push([1E3*mist.data.config.time,mist.data.capabilities.load.memory]);return this.data}},clients:{label:"Connections",basecolor:[203,75,75]},upbps:{label:"Bandwidth up",yaxistype:"bytespersec",basecolor:[77,167,77]},downbps:{label:"Bandwidth down",yaxistype:"bytespersec",basecolor:[148,64,237]}}},yaxes:{percentage:{name:"percentage",
|
||||
color:"black",tickColor:0,tickDecimals:0,tickFormatter:function(a){return UI.format.addUnit(UI.format.number(a),"%")},tickLength:0,min:0,max:100},amount:{name:"amount",color:"black",tickColor:0,tickDecimals:0,tickFormatter:function(a){return UI.format.number(a)},tickLength:0,min:0},bytespersec:{name:"bytespersec",color:"black",tickColor:0,tickDecimals:1,tickFormatter:function(a){return UI.format.bytes(a,!0)},tickLength:0,ticks:function(a){var c=0.3*Math.sqrt($(".graph").first().height()),c=(a.max-
|
||||
a.min)/c,d=Math.floor(Math.log(Math.abs(c))/Math.log(1024)),b=c/Math.pow(1024,d),i=-Math.floor(Math.log(b)/Math.LN10),m=a.tickDecimals;null!=m&&i>m&&(i=m);var h=Math.pow(10,-i),b=b/h,f;if(1.5>b)f=1;else if(3>b){if(f=2,2.25<b&&(null==m||i+1<=m))f=2.5,++i}else f=7.5>b?5:10;f=f*h*Math.pow(1024,d);null!=a.minTickSize&&f<a.minTickSize&&(f=a.minTickSize);a.delta=c;a.tickDecimals=Math.max(0,null!=m?m:i);a.tickSize=f;c=[];d=a.tickSize*Math.floor(a.min/a.tickSize);i=0;m=Number.NaN;do h=m,m=d+i*a.tickSize,
|
||||
c.push(m),++i;while(m<a.max&&m!=h);return c},min:0}},xaxes:{time:{name:"time",mode:"time",timezone:"browser",ticks:5}}},draggable:function(a){a.attr("draggable",!0);a.on("dragstart",function(a){$(this).css("opacity",0.4).data("dragstart",{click:{x:a.originalEvent.pageX,y:a.originalEvent.pageY},ele:{x:this.offsetLeft,y:this.offsetTop}})}).on("dragend",function(a){var d=$(this).data("dragstart"),b=d.ele.x-d.click.x+a.originalEvent.pageX,a=d.ele.y-d.click.y+a.originalEvent.pageY;$(this).css({opacity:1,
|
||||
top:a,left:b,right:"auto",bottom:"auto"})});a.parent().on("dragleave",function(){})},format:{time:function(a,c){var d=new Date(1E3*a),b=[];b.push(("0"+d.getHours()).slice(-2));b.push(("0"+d.getMinutes()).slice(-2));"short"!=c&&b.push(("0"+d.getSeconds()).slice(-2));return b.join(":")},date:function(a,c){var d=new Date(1E3*a),b="Sun Mon Tue Wed Thu Fri Sat".split(" "),i=[];"long"==c&&i.push(b[d.getDay()]);i.push(("0"+d.getDate()).slice(-2));i.push("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ")[d.getMonth()]);
|
||||
"short"!=c&&i.push(d.getFullYear());return i.join(" ")},dateTime:function(a,c){return UI.format.date(a,c)+", "+UI.format.time(a,c)},duration:function(a){var c=[0.001,1E3,60,60,24,7,52,1E9],d="ms sec min hr day week year".split(" "),b={},i;for(i in d){var a=a/c[i],m=Math.round(a%c[Number(i)+1]);b[d[i]]=m;a-=m}var h;for(i=d.length-1;0<=i;i--)if(0<b[d[i]]){h=d[i];break}c=$("<span>");switch(h){case "year":c.append(UI.format.addUnit(b.year,"years, ")).append(UI.format.addUnit(b.week,"wks"));break;case "week":c.append(UI.format.addUnit(b.week,
|
||||
a.min)/c,d=Math.floor(Math.log(Math.abs(c))/Math.log(1024)),b=c/Math.pow(1024,d),h=-Math.floor(Math.log(b)/Math.LN10),m=a.tickDecimals;null!=m&&h>m&&(h=m);var i=Math.pow(10,-h),b=b/i,f;if(1.5>b)f=1;else if(3>b){if(f=2,2.25<b&&(null==m||h+1<=m))f=2.5,++h}else f=7.5>b?5:10;f=f*i*Math.pow(1024,d);null!=a.minTickSize&&f<a.minTickSize&&(f=a.minTickSize);a.delta=c;a.tickDecimals=Math.max(0,null!=m?m:h);a.tickSize=f;c=[];d=a.tickSize*Math.floor(a.min/a.tickSize);h=0;m=Number.NaN;do i=m,m=d+h*a.tickSize,
|
||||
c.push(m),++h;while(m<a.max&&m!=i);return c},min:0}},xaxes:{time:{name:"time",mode:"time",timezone:"browser",ticks:5}}},draggable:function(a){a.attr("draggable",!0);a.on("dragstart",function(a){$(this).css("opacity",0.4).data("dragstart",{click:{x:a.originalEvent.pageX,y:a.originalEvent.pageY},ele:{x:this.offsetLeft,y:this.offsetTop}})}).on("dragend",function(a){var d=$(this).data("dragstart"),b=d.ele.x-d.click.x+a.originalEvent.pageX,a=d.ele.y-d.click.y+a.originalEvent.pageY;$(this).css({opacity:1,
|
||||
top:a,left:b,right:"auto",bottom:"auto"})});a.parent().on("dragleave",function(){})},format:{time:function(a,c){var d=new Date(1E3*a),b=[];b.push(("0"+d.getHours()).slice(-2));b.push(("0"+d.getMinutes()).slice(-2));"short"!=c&&b.push(("0"+d.getSeconds()).slice(-2));return b.join(":")},date:function(a,c){var d=new Date(1E3*a),b="Sun Mon Tue Wed Thu Fri Sat".split(" "),h=[];"long"==c&&h.push(b[d.getDay()]);h.push(("0"+d.getDate()).slice(-2));h.push("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ")[d.getMonth()]);
|
||||
"short"!=c&&h.push(d.getFullYear());return h.join(" ")},dateTime:function(a,c){return UI.format.date(a,c)+", "+UI.format.time(a,c)},duration:function(a){var c=[0.001,1E3,60,60,24,7,52,1E9],d="ms sec min hr day week year".split(" "),b={},h;for(h in d){var a=a/c[h],m=Math.round(a%c[Number(h)+1]);b[d[h]]=m;a-=m}var i;for(h=d.length-1;0<=h;h--)if(0<b[d[h]]){i=d[h];break}c=$("<span>");switch(i){case "year":c.append(UI.format.addUnit(b.year,"years, ")).append(UI.format.addUnit(b.week,"wks"));break;case "week":c.append(UI.format.addUnit(b.week,
|
||||
"wks, ")).append(UI.format.addUnit(b.day,"days"));break;case "day":c.append(UI.format.addUnit(b.day,"days, ")).append(UI.format.addUnit(b.hr,"hrs"));break;default:c.append([("0"+b.hr).slice(-2),("0"+b.min).slice(-2),("0"+b.sec).slice(-2)+(b.ms?"."+b.ms:"")].join(":"))}return c[0].innerHTML},number:function(a){if(isNaN(Number(a))||0==a)return a;var c=Math.pow(10,3-Math.floor(Math.log(a)/Math.LN10)-1),a=Math.round(a*c)/c;if(1E4<a){number=a.toString().split(".");for(a=/(\d+)(\d{3})/;a.test(number[0]);)number[0]=
|
||||
number[0].replace(a,"$1 $2");a=number.join(".")}return a},status:function(a){var c=$("<span>");if("undefined"==typeof a.online)return c.text("Unknown, checking.."),"undefined"!=typeof a.error&&c.text(a.error),c;switch(a.online){case -1:c.text("Enabling");break;case 0:c.text("Unavailable").addClass("red");break;case 1:c.text("Active").addClass("green");break;case 2:c.text("Standby").addClass("orange");break;default:c.text(a.online)}"error"in a&&c.text(a.error);return c},capital:function(a){return a.charAt(0).toUpperCase()+
|
||||
a.substring(1)},addUnit:function(a,c){var d=$("<span>").html(a);d.append($("<span>").addClass("unit").html(c));return d[0].innerHTML},bytes:function(a,c){var d="bytes KiB MiB GiB TiB PiB".split(" ");if(0==a)unit=d[0];else{var b=Math.floor(Math.log(Math.abs(a))/Math.log(1024));0>b?unit=d[0]:(a/=Math.pow(1024,b),unit=d[b])}return UI.format.addUnit(UI.format.number(a),unit+(c?"/s":""))}},navto:function(a,c){var d=location.hash,b=d.split("@");b[0]=[mist.user.name,mist.user.host].join("&");b[1]=[a,c].join("&");
|
||||
|
@ -84,19 +84,20 @@ type:"str",validate:["required"],help:"Enter your desired username. In the futur
|
|||
{label:"Repeat password",type:"password",validate:["required",function(a,b){return a!=$(".match_password.field").not($(b)).val()?{msg:'The fields "Desired password" and "Repeat password" do not match.',classes:["red"]}:false}],help:"Repeat your desired password.",classes:["match_password"]},{type:"buttons",buttons:[{type:"save",label:"Create new account","function":function(){mist.send(function(){UI.navto("Account created")},{authorize:{new_username:mist.user.name,new_password:mist.user.rawpassword}});
|
||||
mist.user.password=MD5(mist.user.rawpassword);delete mist.user.rawpassword}}]}]));break;case "Account created":UI.elements.menu.addClass("hide");d.append($("<p>").text("Your account has been created succesfully.")).append(UI.buildUI([{type:"text",text:"Would you like to enable all (currently) available protocols with their default settings?"},{type:"buttons",buttons:[{label:"Enable protocols",type:"save","function":function(){if(mist.data.config.protocols)d.append("Unable to enable all protocols as protocol settings already exist.<br>");
|
||||
else{d.append("Retrieving available protocols..<br>");mist.send(function(a){var b=[],c;for(c in a.capabilities.connectors)if(a.capabilities.connectors[c].required)d.append('Could not enable protocol "'+c+'" because it has required settings.<br>');else{b.push({connector:c});d.append('Enabled protocol "'+c+'".<br>')}d.append("Saving protocol settings..<br>");mist.send(function(){d.append("Protocols enabled. Redirecting..");setTimeout(function(){UI.navto("Overview")},5E3)},{config:{protocols:b}})},{capabilities:true})}}},
|
||||
{label:"Skip",type:"cancel","function":function(){UI.navto("Overview")}}]}]));break;case "Overview":if("undefined"==typeof mist.data.bandwidth){mist.send(function(){UI.navto(a)},{bandwidth:!0});d.append("Loading..");return}var i=$("<span>").text("Loading.."),m=$("<span>"),h=$("<span>").addClass("logs"),f=$("<span>"),r=$("<span>"),j=$("<span>").text("Unknown"),l=$("<span>"),u=$("<span>"),g={serverid:mist.data.config.serverid,debug:mist.data.config.debug,accesslog:mist.data.config.accesslog,prometheus:mist.data.config.prometheus},
|
||||
{label:"Skip",type:"cancel","function":function(){UI.navto("Overview")}}]}]));break;case "Overview":if("undefined"==typeof mist.data.bandwidth){mist.send(function(){UI.navto(a)},{bandwidth:!0});d.append("Loading..");return}var h=$("<span>").text("Loading.."),m=$("<span>"),i=$("<span>").addClass("logs"),f=$("<span>"),r=$("<span>"),j=$("<span>").text("Unknown"),l=$("<span>"),u=$("<span>"),g={serverid:mist.data.config.serverid,debug:mist.data.config.debug,accesslog:mist.data.config.accesslog,prometheus:mist.data.config.prometheus},
|
||||
e={};"bandwidth"in mist.data&&(e=mist.data.bandwidth,null==e&&(e={}),e.limit||(e.limit=""));var k=$("<select>").html($("<option>").val(1).text("bytes/s")).append($("<option>").val(1024).text("KiB/s")).append($("<option>").val(1048576).text("MiB/s")).append($("<option>").val(1073741824).text("GiB/s")),b=parseURL(mist.user.host),b=b.protocol+b.host+b.port;d.append(UI.buildUI([{type:"help",help:"You can find most basic information about your MistServer here.<br>You can also set the debug level and force a save to the config.json file that MistServer uses to save your settings. "},
|
||||
{type:"span",label:"Version",pointer:{main:mist.data.config,index:"version"}},{type:"span",label:"Version check",value:i,LTSonly:!0},{type:"span",label:"Server time",value:r},{type:"span",label:"Licensed to",value:"license"in mist.data.config?mist.data.config.license.user:"",LTSonly:!0},{type:"span",label:"Active products",value:j,LTSonly:!0},{type:"span",label:"Configured streams",value:mist.data.streams?Object.keys(mist.data.streams).length:0},{type:"span",label:"Active streams",value:m},{type:"span",
|
||||
label:"Current connections",value:f},{type:"span",label:"Enabled protocols",value:l},{type:"span",label:"Disabled protocols",value:u},{type:"span",label:"Recent problems",value:h},$("<br>"),{type:"str",label:"Human readable name",pointer:{main:g,index:"serverid"},help:"You can name your MistServer here for personal use. You'll still need to set host name within your network yourself."},{type:"debug",label:"Debug level",pointer:{main:g,index:"debug"},help:"You can set the amount of debug information MistServer saves in the log. A full reboot of MistServer is required before some components of MistServer can post debug information."},
|
||||
{type:"span",label:"Version",pointer:{main:mist.data.config,index:"version"}},{type:"span",label:"Version check",value:h,LTSonly:!0},{type:"span",label:"Server time",value:r},{type:"span",label:"Licensed to",value:"license"in mist.data.config?mist.data.config.license.user:"",LTSonly:!0},{type:"span",label:"Active products",value:j,LTSonly:!0},{type:"span",label:"Configured streams",value:mist.data.streams?Object.keys(mist.data.streams).length:0},{type:"span",label:"Active streams",value:m},{type:"span",
|
||||
label:"Current connections",value:f},{type:"span",label:"Enabled protocols",value:l},{type:"span",label:"Disabled protocols",value:u},{type:"span",label:"Recent problems",value:i},$("<br>"),{type:"str",label:"Human readable name",pointer:{main:g,index:"serverid"},help:"You can name your MistServer here for personal use. You'll still need to set host name within your network yourself."},{type:"debug",label:"Debug level",pointer:{main:g,index:"debug"},help:"You can set the amount of debug information MistServer saves in the log. A full reboot of MistServer is required before some components of MistServer can post debug information."},
|
||||
{type:"selectinput",label:"Access log",selectinput:[["","Do not track"],["LOG","Log to MistServer log"],[{type:"str",label:"Path",LTSonly:!0},"Log to file"]],pointer:{main:g,index:"accesslog"},help:"Enable access logs.",LTSonly:!0},{type:"selectinput",label:"Prometheus stats output",selectinput:[["","Disabled"],[{type:"str",label:"Passphrase",LTSonly:!0},"Enabled"]],pointer:{main:g,index:"prometheus"},help:"Make stats available in Prometheus format. These can be accessed via "+b+"/PASSPHRASE or "+
|
||||
b+"/PASSPHRASE.json.",LTSonly:!0},{type:"selectinput",label:"Load balancer bandwidth limit",selectinput:[["","Default (1 gbps)"],[{label:"Custom",type:"int",min:0,unit:k},"Custom"]],pointer:{main:e,index:"limit"},help:"This setting only applies when MistServer is combined with a load balancer. This is the amount of traffic this server is willing to handle.",LTSonly:!0},{type:"inputlist",label:"Load balancer bandwidth exceptions",pointer:{main:e,index:"exceptions"},help:"This setting only applies when MistServer is combined with a load balancer. Data sent to the hosts and subnets listed here will not count towards reported bandwidth usage.<br>Examples:<ul><li>192.168.0.0/16</li><li>localhost</li><li>10.0.0.0/8</li><li>fe80::/16</li></ul>",
|
||||
LTSonly:!0},{type:"checkbox",label:"Force configurations save",pointer:{main:g,index:"save"},help:"Tick the box in order to force an immediate save to the config.json MistServer uses to save your settings. Saving will otherwise happen upon closing MistServer. Don't forget to press save after ticking the box."},{type:"buttons",buttons:[{type:"save",label:"Save","function":function(){var a={config:g},b={};b.limit=e.limit?k.val()*e.limit:0;b.exceptions=e.exceptions;if(b.exceptions===null)b.exceptions=
|
||||
[];a.bandwidth=b;if(g.save)a.save=g.save;delete g.save;mist.send(function(){UI.navto("Overview")},a)}}]}]));if(mist.data.LTS){var n=function(a){function b(a){if(a.update){var c="";"progress"in a.update&&(c=" ("+a.update.progress+"%)");i.text("Updating.."+c);setTimeout(function(){mist.send(function(a){b(a)},{update:true})},5E3)}else UI.showTab("Overview")}if(!a.update||!("uptodate"in a.update)){i.text("Unknown, checking..");setTimeout(function(){mist.send(function(a){"update"in a&&n(a)},{checkupdate:true})},
|
||||
5E3)}else if(a.update.error)i.addClass("red").text(a.update.error);else if(a.update.uptodate)i.text("Your version is up to date.").addClass("green");else if(a.update.progress){i.addClass("orange").removeClass("red").text("Updating..");b(a)}else i.addClass("red").text("Version outdated!").append($("<button>").text("Update").css({"font-size":"1em","margin-left":"1em"}).click(function(){if(confirm("Are you sure you want to execute a rolling update?")){i.addClass("orange").removeClass("red").text("Rolling update command sent..");
|
||||
mist.send(function(a){b(a)},{autoupdate:true})}}))};n(mist.data);if("license"in mist.data.config){if("active_products"in mist.data.config.license&&Object.keys(mist.data.config.license.active_products).length){var I=$("<table>").css("text-indent","0");j.html(I);I.append($("<tr>").append($("<th>").append("Product")).append($("<th>").append("Updates until")).append($("<th>").append("Use until")).append($("<th>").append("Max. simul. instances")));for(var o in mist.data.config.license.active_products)b=
|
||||
mist.data.config.license.active_products[o],I.append($("<tr>").append($("<td>").append(b.name)).append($("<td>").append(b.updates_final?b.updates_final:"∞")).append($("<td>").append(b.use_final?b.use_final:"∞")).append($("<td>").append(b.amount?b.amount:"∞")))}else j.text("None. ");j.append($("<a>").text("More details").attr("href","https://shop.mistserver.org/myinvoices").attr("target","_blank"))}}else i.text("");o=function(){var a={totals:{fields:["clients"],start:-10},active_streams:true};
|
||||
if(!("cabailities"in mist.data))a.capabilities=true;mist.send(function(){ga()},a)};var ga=function(){m.text("active_streams"in mist.data?mist.data.active_streams?mist.data.active_streams.length:0:"?");if("totals"in mist.data&&"all_streams"in mist.data.totals)var a=mist.data.totals.all_streams.all_protocols.clients,a=a.length?UI.format.number(a[a.length-1][1]):0;else a="Loading..";f.text(a);r.text(UI.format.dateTime(mist.data.config.time,"long"));h.html("");a=0;"license"in mist.data.config&&"user_msg"in
|
||||
mist.data.config.license&&mist.data.log.unshift([mist.data.config.license.time,"ERROR",mist.data.config.license.user_msg]);for(var b in mist.data.log){var c=mist.data.log[b];if(["FAIL","ERROR"].indexOf(c[1])>-1){a++;var d=$("<span>").addClass("content").addClass("red"),g=c[2].split("|");for(b in g)d.append($("<span>").text(g[b]));h.append($("<div>").append($("<span>").append(UI.format.time(c[0]))).append(d));if(a==5)break}}a==0&&h.html("None.");a=[];c=[];for(b in mist.data.config.protocols){d=mist.data.config.protocols[b];
|
||||
[];a.bandwidth=b;if(g.save)a.save=g.save;delete g.save;mist.send(function(){UI.navto("Overview")},a)}}]}]));if(mist.data.LTS){var n=function(a){function b(a){if(a.update){var d="";"progress"in a.update&&(d=" ("+a.update.progress+"%)");h.text("Updating.."+d);c(a.log);setTimeout(function(){mist.send(function(a){b(a)},{update:true})},1E3)}else UI.showTab("Overview")}function c(a){a=a.filter(function(a){return a[1]=="UPDR"});if(a.length){var b=$("<div>");h.append(b);for(var d in a)b.append($("<div>").text(a[d][2]))}}
|
||||
if(!a.update||!("uptodate"in a.update)){h.text("Unknown, checking..");setTimeout(function(){mist.send(function(a){"update"in a&&n(a)},{checkupdate:true})},5E3)}else if(a.update.error)h.addClass("red").text(a.update.error);else if(a.update.uptodate)h.text("Your version is up to date.").addClass("green");else{if(a.update.progress){h.addClass("orange").removeClass("red").text("Updating..");b(a)}else{h.text("");h.append($("<span>").addClass("red").text("On "+(new Date(a.update.date)).toLocaleDateString()+
|
||||
" version "+a.update.version+" became available."));(!a.update.url||a.update.url.slice(-4)!=".zip")&&h.append($("<button>").text("Rolling update").css({"font-size":"1em","margin-left":"1em"}).click(function(){if(confirm("Are you sure you want to execute a rolling update?")){h.addClass("orange").removeClass("red").text("Rolling update command sent..");mist.send(function(a){b(a)},{autoupdate:true})}}));var d=$("<a>").attr("href",a.update.url).attr("target","_blank").text("Manual download");d[0].protocol=
|
||||
"https:";h.append($("<div>").append(d))}c(a.log)}};n(mist.data);if("license"in mist.data.config){if("active_products"in mist.data.config.license&&Object.keys(mist.data.config.license.active_products).length){var I=$("<table>").css("text-indent","0");j.html(I);I.append($("<tr>").append($("<th>").append("Product")).append($("<th>").append("Updates until")).append($("<th>").append("Use until")).append($("<th>").append("Max. simul. instances")));for(var o in mist.data.config.license.active_products)b=
|
||||
mist.data.config.license.active_products[o],I.append($("<tr>").append($("<td>").append(b.name)).append($("<td>").append(b.updates_final?b.updates_final:"∞")).append($("<td>").append(b.use_final?b.use_final:"∞")).append($("<td>").append(b.amount?b.amount:"∞")))}else j.text("None. ");j.append($("<a>").text("More details").attr("href","https://shop.mistserver.org/myinvoices").attr("target","_blank"))}}else h.text("");o=function(){var a={totals:{fields:["clients"],start:-10},active_streams:true};
|
||||
if(!("cabailities"in mist.data))a.capabilities=true;mist.send(function(){ga()},a)};var ga=function(){m.text("active_streams"in mist.data?mist.data.active_streams?mist.data.active_streams.length:0:"?");if("totals"in mist.data&&"all_streams"in mist.data.totals)var a=mist.data.totals.all_streams.all_protocols.clients,a=a.length?UI.format.number(a[a.length-1][1]):0;else a="Loading..";f.text(a);r.text(UI.format.dateTime(mist.data.config.time,"long"));i.html("");a=0;"license"in mist.data.config&&"user_msg"in
|
||||
mist.data.config.license&&mist.data.log.unshift([mist.data.config.license.time,"ERROR",mist.data.config.license.user_msg]);for(var b in mist.data.log){var c=mist.data.log[b];if(["FAIL","ERROR"].indexOf(c[1])>-1){a++;var d=$("<span>").addClass("content").addClass("red"),g=c[2].split("|");for(b in g)d.append($("<span>").text(g[b]));i.append($("<div>").append($("<span>").append(UI.format.time(c[0]))).append(d));if(a==5)break}}a==0&&i.html("None.");a=[];c=[];for(b in mist.data.config.protocols){d=mist.data.config.protocols[b];
|
||||
a.indexOf(d.connector)>-1||a.push(d.connector)}l.text(a.length?a.join(", "):"None.");if("capabilities"in mist.data){for(b in mist.data.capabilities.connectors)a.indexOf(b)==-1&&c.push(b);u.text(c.length?c.join(", "):"None.")}else u.text("Loading..")};o();ga();UI.interval.set(o,3E4);break;case "Protocols":if("undefined"==typeof mist.data.capabilities){mist.send(function(){UI.navto(a)},{capabilities:!0});d.append("Loading..");return}var A=$("<tbody>");d.append(UI.buildUI([{type:"help",help:"You can find an overview of all the protocols and their relevant information here. You can add, edit or delete protocols."}])).append($("<button>").text("Delete all protocols").click(function(){if(confirm("Are you sure you want to delete all currently configured protocols?")){mist.data.config.protocols=
|
||||
[];mist.send(function(){UI.navto("Protocols")},{config:mist.data.config})}})).append($("<button>").text("Enable default protocols").click(function(){var a=Object.keys(mist.data.capabilities.connectors),b;for(b in mist.data.config.protocols){var c=a.indexOf(mist.data.config.protocols[b].connector);c>-1&&a.splice(c,1)}var d=[];for(b in a)(!("required"in mist.data.capabilities.connectors[a[b]])||Object.keys(mist.data.capabilities.connectors[a[b]].required).length==0)&&d.push(a[b]);c="Click OK to enable disabled protocols with their default settings:\n ";
|
||||
c=d.length?c+d.join(", "):c+"None.";if(d.length!=a.length){a=a.filter(function(a){return d.indexOf(a)<0});c=c+("\n\nThe following protocols can only be set manually:\n "+a.join(", "))}if(confirm(c)&&d.length){if(mist.data.config.protocols===null)mist.data.config.protocols=[];for(b in d)mist.data.config.protocols.push({connector:d[b]});mist.send(function(){UI.navto("Protocols")},{config:mist.data.config})}})).append("<br>").append($("<button>").text("New protocol").click(function(){UI.navto("Edit Protocol")}).css("clear",
|
||||
|
@ -115,9 +116,9 @@ b).attr("data-stream",b))}break;default:var o=$("<tbody>").append($("<tr>").appe
|
|||
d.append(h);h.stupidtable();var m=function(){var a=[],b;for(b in mist.data.active_streams)a.push({streams:[mist.data.active_streams[b]],fields:["clients"],start:-2});mist.send(function(){$.extend(true,z,mist.data.streams);var a=0;o.html("");c.sort();for(var b in c){var d=c[b],g;g=d in mist.data.streams?mist.data.streams[d]:z[d];var f=$("<td>").css("text-align","right").html($("<span>").addClass("description").text("Loading..")),e=0;if(typeof mist.data.totals!="undefined"&&typeof mist.data.totals[d]!=
|
||||
"undefined"){var w=mist.data.totals[d].all_protocols.clients,e=0;if(w.length){for(a in w)e=e+w[a][1];e=Math.round(e/w.length)}}f.html(UI.format.number(e));if(e==0&&g.online==1)g.online=2;e=$("<td>").css("text-align","right").css("white-space","nowrap");(!("ischild"in g)||!g.ischild)&&e.html($("<button>").text("Settings").click(function(){UI.navto("Edit",$(this).closest("tr").data("index"))})).append($("<button>").text("Delete").click(function(){var a=$(this).closest("tr").data("index");if(confirm('Are you sure you want to delete the stream "'+
|
||||
a+'"?')){delete mist.data.streams[a];var b={};mist.data.LTS?b.deletestream=[a]:b.streams=mist.data.streams;mist.send(function(){UI.navto("Streams")},b)}}));w=$("<span>").text(g.name);g.ischild&&w.css("padding-left","1em");var h=UI.format.status(g),i=$("<button>").text("Preview").click(function(){UI.navto("Preview",$(this).closest("tr").data("index"))}),ja=$("<button>").text("Embed").click(function(){UI.navto("Embed",$(this).closest("tr").data("index"))});if("filesfound"in z[d]||g.online<0){h.html("");
|
||||
i="";f.html("");ja=""}o.append($("<tr>").data("index",d).html($("<td>").html(w).attr("title",g.name=="..."?"The results were truncated":g.name).addClass("overflow_ellipsis")).append($("<td>").text(g.source).attr("title",g.source).addClass("description").addClass("overflow_ellipsis").css("max-width","20em")).append($("<td>").data("sort-value",g.online).html(h)).append(f).append($("<td>").css("white-space","nowrap").html(i).append(ja)).append(e));a++}},{totals:a,active_streams:true})};if(mist.data.LTS){var p=
|
||||
0,r=0;for(e in mist.data.streams){h=mist.data.capabilities.inputs.Folder||mist.data.capabilities.inputs["Folder.exe"];if(!h)break;if(mist.inputMatch(h.source_match,mist.data.streams[e].source)){z[e].source=z[e].source+"*";z[e].filesfound=null;mist.send(function(a,b){var c=b.stream,d=0,g;a:for(g in a.browse.files){var f;for(f in mist.data.capabilities.inputs)if(!(f.indexOf("Buffer")>=0||f.indexOf("Buffer.exe")>=0||f.indexOf("Folder")>=0||f.indexOf("Folder.exe")>=0)&&mist.inputMatch(mist.data.capabilities.inputs[f].source_match,
|
||||
"/"+a.browse.files[g])){var e=c+"+"+a.browse.files[g];z[e]=U(e,mist.data.streams[c]);z[e].source=mist.data.streams[c].source+a.browse.files[g];d++;if(d>=500){z[c+"+zzzzzzzzz"]={ischild:true,name:"...",online:-1};break a}}}"files"in a.browse&&a.browse.files.length?z[c].filesfound=true:mist.data.streams[c].filesfound=false;r++;if(p==r){mist.send(function(){m()},{active_streams:true});UI.interval.set(function(){m()},5E3)}},{browse:mist.data.streams[e].source},{stream:e});p++}}if(p==0){mist.send(function(){m()},
|
||||
i="";f.html("");ja=""}o.append($("<tr>").data("index",d).html($("<td>").html(w).attr("title",g.name=="..."?"The results were truncated":g.name).addClass("overflow_ellipsis")).append($("<td>").text(g.source).attr("title",g.source).addClass("description").addClass("overflow_ellipsis").css("max-width","20em")).append($("<td>").data("sort-value",g.online).html(h)).append(f).append($("<td>").css("white-space","nowrap").html(i).append(ja)).append(e));a++}},{totals:a,active_streams:true})};if(mist.data.LTS){var r=
|
||||
0,p=0;for(e in mist.data.streams){h=mist.data.capabilities.inputs.Folder||mist.data.capabilities.inputs["Folder.exe"];if(!h)break;if(mist.inputMatch(h.source_match,mist.data.streams[e].source)){z[e].source=z[e].source+"*";z[e].filesfound=null;mist.send(function(a,b){var c=b.stream,d=0,g;a:for(g in a.browse.files){var f;for(f in mist.data.capabilities.inputs)if(!(f.indexOf("Buffer")>=0||f.indexOf("Buffer.exe")>=0||f.indexOf("Folder")>=0||f.indexOf("Folder.exe")>=0)&&mist.inputMatch(mist.data.capabilities.inputs[f].source_match,
|
||||
"/"+a.browse.files[g])){var e=c+"+"+a.browse.files[g];z[e]=U(e,mist.data.streams[c]);z[e].source=mist.data.streams[c].source+a.browse.files[g];d++;if(d>=500){z[c+"+zzzzzzzzz"]={ischild:true,name:"...",online:-1};break a}}}"files"in a.browse&&a.browse.files.length?z[c].filesfound=true:mist.data.streams[c].filesfound=false;p++;if(r==p){mist.send(function(){m()},{active_streams:true});UI.interval.set(function(){m()},5E3)}},{browse:mist.data.streams[e].source},{stream:e});r++}}if(r==0){mist.send(function(){m()},
|
||||
{active_streams:true});UI.interval.set(function(){m()},5E3)}}else{mist.send(function(){m()},{active_streams:true});UI.interval.set(function(){m()},5E3)}}};if(mist.data.LTS){var W=0,ka=0,s={},la=[];for(g in mist.data.streams)if(mist.inputMatch((mist.data.capabilities.inputs.Folder||mist.data.capabilities.inputs["Folder.exe"]).source_match,mist.data.streams[g].source))la.push(g),mist.send(function(a,b){var d=b.stream,g=0,f;a:for(f in a.browse.files){var e;for(e in mist.data.capabilities.inputs)if(!(e.indexOf("Buffer")>=
|
||||
0||e.indexOf("Folder")>=0)&&mist.inputMatch(mist.data.capabilities.inputs[e].source_match,"/"+a.browse.files[f])){s[d+"+"+a.browse.files[f]]=true;g++;if(g>=500){s[d+"+zzzzzzzzz"]=true;break a}}}ka++;W==ka&&mist.send(function(){for(var a in mist.data.active_streams){var b=mist.data.active_streams[a].split("+");if(b.length>1&&b[0]in mist.data.streams){s[mist.data.active_streams[a]]=true;z[mist.data.active_streams[a]]=U(mist.data.active_streams[a],mist.data.streams[b[0]])}}s=Object.keys(s);s=s.concat(Object.keys(mist.data.streams));
|
||||
s.sort();V(c,s,la)},{active_streams:true})},{browse:mist.data.streams[g].source},{stream:g}),W++;0==W&&mist.send(function(){for(var a in mist.data.active_streams){var b=mist.data.active_streams[a].split("+");if(b.length>1&&b[0]in mist.data.streams){s[mist.data.active_streams[a]]=true;z[mist.data.active_streams[a]]=U(mist.data.active_streams[a],mist.data.streams[b[0]])}}s=Object.keys(s);mist.data.streams&&(s=s.concat(Object.keys(mist.data.streams)));s.sort();V(c,s)},{active_streams:!0})}else V(c,Object.keys(mist.data.streams));
|
||||
|
@ -211,26 +212,26 @@ labels:["CPU use","1 minute","5 minutes","15 minutes"],content:[{header:" "
|
|||
{type:"str",label:"Your name",validate:["required"],pointer:{main:p,index:"name"},value:mist.user.name},{type:"email",label:"Your email address",validate:["required"],pointer:{main:p,index:"email"}},{type:"hidden",value:"Integrated Help",pointer:{main:p,index:"subject"}},{type:"hidden",value:"-",pointer:{main:p,index:"company"}},{type:"textarea",rows:20,label:"Your message",validate:["required"],pointer:{main:p,index:"message"}},{type:"textarea",rows:20,label:"Your config file",readonly:!0,value:o,
|
||||
pointer:{main:p,index:"configfile"}},{type:"buttons",buttons:[{type:"save",label:"Send","function":function(a){$(a).text("Sending..");$.ajax({type:"POST",url:"https://mistserver.org/contact?skin=plain",data:p,success:function(a){a=$("<span>").html(a);a.find("script").remove();d.html(a[0].innerHTML)}})}}]}]));break;case "Disconnect":mist.user.password="";delete mist.user.authstring;delete mist.user.loggedin;sessionStorage.removeItem("mistLogin");UI.navto("Login");break;default:d.append($("<p>").text("This tab does not exist."))}d.find(".field").filter(function(){var a=
|
||||
$(this).getval();return a==""||a==null?true:false}).each(function(){var a=[];$(this).is("input, select, textarea")?a.push($(this)):a=$(this).find("input, select, textarea");if(a.length){$(a[0]).focus();return false}})}};"origin"in location||(location.origin=location.protocol+"//");var host;host="file://"==location.origin?"http://localhost:4242/api":location.origin+location.pathname.replace(/\/+$/,"")+"/api";
|
||||
var mist={data:{},user:{name:"",password:"",host:host},send:function(a,c,d){var c=c||{},d=d||{},d=$.extend(true,{timeOut:3E4,sendData:c},d),b={authorize:{password:mist.user.authstring?MD5(mist.user.password+mist.user.authstring):"",username:mist.user.name}};$.extend(true,b,c);log("Send",$.extend(true,{},c));var i={url:mist.user.host,type:"POST",data:{command:JSON.stringify(b)},dataType:"jsonp",crossDomain:true,timeout:d.timeout*1E3,async:true,error:function(b,f){delete mist.user.loggedin;if(!d.hide){switch(f){case "timeout":f=
|
||||
$("<i>").text("The connection timed out. ");break;case "abort":f=$("<i>").text("The connection was aborted. ");break;default:f=$("<i>").text(f+". ").css("text-transform","capitalize")}$("#message").addClass("red").text("An error occurred while attempting to communicate with MistServer:").append($("<br>")).append($("<span>").text(f)).append($("<a>").text("Send server request again").click(function(){mist.send(a,c,d)}))}UI.navto("Login")},success:function(h){log("Receive",$.extend(true,{},h),"as reply to",
|
||||
d.sendData);delete mist.user.loggedin;switch(h.authorize.status){case "OK":if("streams"in h)if(h.streams)if("incomplete list"in h.streams){delete h.streams["incomplete list"];$.extend(mist.data.streams,h.streams)}else mist.data.streams=h.streams;else mist.data.streams={};var f=$.extend({},h),i=["config","capabilities","ui_settings","LTS","active_streams","browse","log","totals","bandwidth"],j;for(j in f)i.indexOf(j)==-1&&delete f[j];if("bandwidth"in b&&!("bandwidth"in h))f.bandwidth=null;$.extend(mist.data,
|
||||
f);mist.user.loggedin=true;UI.elements.connection.status.text("Connected").removeClass("red").addClass("green");UI.elements.connection.user_and_host.text(mist.user.name+" @ "+mist.user.host);UI.elements.connection.msg.removeClass("red").text("Last communication with the server at "+UI.format.time((new Date).getTime()/1E3));h.LTS&&UI.elements.menu.find(".LTSonly").removeClass("LTSonly");if(h.log){f=h.log[h.log.length-1];UI.elements.connection.msg.append($("<br>")).append($("<span>").text("Last log entry: "+
|
||||
UI.format.time(f[0])+" ["+f[1]+"] "+f[2]))}if("totals"in h){f=function(a,b,c){var d;d=function(){for(var a in c.fields)f[c.fields[a]].push([j,0])};var f={},h;for(h in c.fields)f[c.fields[h]]=[];var i=0,j;if(c.data){if(c.start>mist.data.config.time-600){j=(mist.data.config.time-600)*1E3;d();j=c.start*1E3;d()}else j=c.start*1E3;for(h in c.data){if(h==0){j=c.start*1E3;var m=0}else{j=j+c.interval[m][1]*1E3;c.interval[m][0]--;if(c.interval[m][0]<=0){m++;m<c.interval.length-1&&(i=i+2)}}if(i%2==1){d();i--}for(var r in c.data[h])f[c.fields[r]].push([j,
|
||||
c.data[h][r]]);if(i){d();i--}}if(mist.data.config.time-c.end>20){d();j=(mist.data.config.time-15)*1E3;d()}}else{j=(mist.data.config.time-600)*1E3;d();j=(mist.data.config.time-15)*1E3;d()}d=f;stream=a?a.join(" "):"all_streams";protocol=b?b.join("_"):"all_protocols";stream in mist.data.totals||(mist.data.totals[stream]={});protocol in mist.data.totals[stream]||(mist.data.totals[stream][protocol]={});$.extend(mist.data.totals[stream][protocol],d)};mist.data.totals={};if("fields"in h.totals)f(c.totals.streams,
|
||||
var mist={data:{},user:{name:"",password:"",host:host},send:function(a,c,d){var c=c||{},d=d||{},d=$.extend(true,{timeOut:3E4,sendData:c},d),b={authorize:{password:mist.user.authstring?MD5(mist.user.password+mist.user.authstring):"",username:mist.user.name}};$.extend(true,b,c);log("Send",$.extend(true,{},c));var h={url:mist.user.host,type:"POST",data:{command:JSON.stringify(b)},dataType:"jsonp",crossDomain:true,timeout:d.timeout*1E3,async:true,error:function(b,f,h){console.warn("connection failed :(",
|
||||
h);delete mist.user.loggedin;if(!d.hide){switch(f){case "timeout":f=$("<i>").text("The connection timed out. ");break;case "abort":f=$("<i>").text("The connection was aborted. ");break;default:f=$("<i>").text(f+". ").css("text-transform","capitalize")}$("#message").addClass("red").text("An error occurred while attempting to communicate with MistServer:").append($("<br>")).append($("<span>").text(f)).append($("<a>").text("Send server request again").click(function(){mist.send(a,c,d)}))}UI.navto("Login")},
|
||||
success:function(h){log("Receive",$.extend(true,{},h),"as reply to",d.sendData);delete mist.user.loggedin;switch(h.authorize.status){case "OK":if("streams"in h)if(h.streams)if("incomplete list"in h.streams){delete h.streams["incomplete list"];$.extend(mist.data.streams,h.streams)}else mist.data.streams=h.streams;else mist.data.streams={};var f=$.extend({},h),m=["config","capabilities","ui_settings","LTS","active_streams","browse","log","totals","bandwidth"],j;for(j in f)m.indexOf(j)==-1&&delete f[j];
|
||||
if("bandwidth"in b&&!("bandwidth"in h))f.bandwidth=null;$.extend(mist.data,f);mist.user.loggedin=true;UI.elements.connection.status.text("Connected").removeClass("red").addClass("green");UI.elements.connection.user_and_host.text(mist.user.name+" @ "+mist.user.host);UI.elements.connection.msg.removeClass("red").text("Last communication with the server at "+UI.format.time((new Date).getTime()/1E3));h.LTS&&UI.elements.menu.find(".LTSonly").removeClass("LTSonly");if(h.log){f=h.log[h.log.length-1];UI.elements.connection.msg.append($("<br>")).append($("<span>").text("Last log entry: "+
|
||||
UI.format.time(f[0])+" ["+f[1]+"] "+f[2]))}if("totals"in h){f=function(a,b,c){var d;d=function(){for(var a in c.fields)f[c.fields[a]].push([i,0])};var f={},h;for(h in c.fields)f[c.fields[h]]=[];var j=0,i;if(c.data){if(c.start>mist.data.config.time-600){i=(mist.data.config.time-600)*1E3;d();i=c.start*1E3;d()}else i=c.start*1E3;for(h in c.data){if(h==0){i=c.start*1E3;var m=0}else{i=i+c.interval[m][1]*1E3;c.interval[m][0]--;if(c.interval[m][0]<=0){m++;m<c.interval.length-1&&(j=j+2)}}if(j%2==1){d();j--}for(var r in c.data[h])f[c.fields[r]].push([i,
|
||||
c.data[h][r]]);if(j){d();j--}}if(mist.data.config.time-c.end>20){d();i=(mist.data.config.time-15)*1E3;d()}}else{i=(mist.data.config.time-600)*1E3;d();i=(mist.data.config.time-15)*1E3;d()}d=f;stream=a?a.join(" "):"all_streams";protocol=b?b.join("_"):"all_protocols";stream in mist.data.totals||(mist.data.totals[stream]={});protocol in mist.data.totals[stream]||(mist.data.totals[stream][protocol]={});$.extend(mist.data.totals[stream][protocol],d)};mist.data.totals={};if("fields"in h.totals)f(c.totals.streams,
|
||||
c.totals.protocols,h.totals);else for(j in h.totals)f(c.totals[j].streams,c.totals[j].protocols,h.totals[j])}a&&a(h,d);break;case "CHALL":if(h.authorize.challenge==mist.user.authstring){mist.user.password!=""&&UI.elements.connection.msg.text("The credentials you provided are incorrect.").addClass("red");UI.navto("Login")}else if(mist.user.password=="")UI.navto("Login");else{mist.user.authstring=h.authorize.challenge;mist.send(a,c,d);sessionStorage.setItem("mistLogin",JSON.stringify({host:mist.user.host,
|
||||
name:mist.user.name,password:mist.user.password}))}break;case "NOACC":UI.navto("Create a new account");break;case "ACC_MADE":delete c.authorize;mist.send(a,c,d);break;default:UI.navto("Login")}}};d.hide||UI.elements.connection.msg.removeClass("red").text("Data sent, waiting for a reply..").append($("<br>")).append($("<a>").text("Cancel request").click(function(){m.abort()}));var m=$.ajax(i)},inputMatch:function(a,c){if(typeof a=="undefined")return false;typeof a=="string"&&(a=[a]);for(var d in a){var b=
|
||||
a[d].replace(/[^\w\s]/g,"\\$&"),b=b.replace(/\\\*/g,".*");if(RegExp("^(?:[a-zA-Z]:)?"+b+"(?:\\?[^\\?]*)?$","i").test(c))return true}return false},convertBuildOptions:function(a,c){function d(a,b,d){var e={label:UI.format.capital(d.name?d.name:b),pointer:{main:c,index:b},validate:[]};i[a]=="required"&&(!("default"in d)||d["default"]=="")&&e.validate.push("required");if("default"in d){e.placeholder=d["default"];if(d.type=="select")for(var f in d.select)if(d.select[f][0]==d["default"]){e.placeholder=
|
||||
name:mist.user.name,password:mist.user.password}))}break;case "NOACC":UI.navto("Create a new account");break;case "ACC_MADE":delete c.authorize;mist.send(a,c,d);break;default:UI.navto("Login")}}};d.hide||UI.elements.connection.msg.removeClass("red").text("Data sent, waiting for a reply..").append($("<br>")).append($("<a>").text("Cancel request").click(function(){m.abort()}));var m=$.ajax(h)},inputMatch:function(a,c){if(typeof a=="undefined")return false;typeof a=="string"&&(a=[a]);for(var d in a){var b=
|
||||
a[d].replace(/[^\w\s]/g,"\\$&"),b=b.replace(/\\\*/g,".*");if(RegExp("^(?:[a-zA-Z]:)?"+b+"(?:\\?[^\\?]*)?$","i").test(c))return true}return false},convertBuildOptions:function(a,c){function d(a,b,d){var e={label:UI.format.capital(d.name?d.name:b),pointer:{main:c,index:b},validate:[]};h[a]=="required"&&(!("default"in d)||d["default"]=="")&&e.validate.push("required");if("default"in d){e.placeholder=d["default"];if(d.type=="select")for(var f in d.select)if(d.select[f][0]==d["default"]){e.placeholder=
|
||||
d.select[f][1];break}}if("help"in d)e.help=d.help;if("unit"in d)e.unit=d.unit;if("placeholder"in d)e.placeholder=d.placeholder;if("type"in d)switch(d.type){case "int":e.type="int";if("max"in d)e.max=d.max;if("min"in d)e.min=d.min;break;case "uint":e.type="int";e.min=0;if("max"in d)e.max=d.max;if("min"in d)e.min=Math.max(e.min,d.min);break;case "debug":e.type="debug";break;case "radioselect":e.type="radioselect";e.radioselect=d.radioselect;break;case "select":e.type="select";e.select=d.select.slice(0);
|
||||
e.validate.indexOf("required")>=0&&e.select.unshift(["","placeholder"in e?"Default ("+e.placeholder+")":""]);break;case "sublist":e.type="sublist";e.saveas={};e.itemLabel=d.itemLabel;e.sublist=mist.convertBuildOptions(d,e.saveas);break;default:e.type="str"}else e.type="checkbox";"influences"in d&&(e["function"]=function(){var a=$(this).closest(".UIelement"),c=a.find("style");if(c.length)c=c[0];else{c=$("<style>").addClass("dependencies")[0];a.append(c)}c.innerHTML=".UIelement[data-dependent-"+b+"]:not([data-dependent-"+
|
||||
b+'~="'+$(this).getval()+'"]) { display: none; }\n';$(c).data("content",c.innerHTML);$("style.dependencies.hidden").each(function(){$(this).html($(this).data("content")).removeClass("hidden")});$(".UIelement:not(:visible) style.dependencies:not(.hidden)").each(function(){$(this).addClass("hidden");$(this).html("")})});if("dependent"in d)e.dependent=d.dependent;if("value"in d)e.value=d.value;if("validate"in d)e.validate=e.validate.concat(d.validate);return e}var b=[],i=["required","optional"];"desc"in
|
||||
a&&b.push({type:"help",help:a.desc});if("sort"in a){var m=[],h;for(h in i)if(a[i[h]])for(var f in a[i[h]]){var r=a[i[h]][f];if(Array.isArray(r))for(var j in r){if(!("validate"in r[j]))r[j].validate=[];r[j].validate=i[h];r[j].id=f;m.push(r[j])}else{if(!("validate"in r))r.validate=[];r.validate.push(i[h]);r.id=f;m.push(r)}}m.sort(function(b,c){return(""+b[a.sort]).localeCompare(c[a.sort])});for(f in m){r=m[f];b.push(d(r.validate,r.id,r))}}else for(h in i)if(a[i[h]]){b.push($("<h4>").text(UI.format.capital(i[h])+
|
||||
" parameters"));for(f in a[i[h]]){r=a[i[h]][f];if(Array.isArray(r))for(j in r)b.push(d(h,f,r[j]));else b.push(d(h,f,r))}}return b},stored:{get:function(){return mist.data.ui_settings||{}},set:function(a,c){var d=this.get();d[a]=c;mist.send(function(){},{ui_settings:d})},del:function(a){delete mist.data.ui_settings[a];mist.send(function(){},{ui_settings:mist.data.ui_settings})}}};
|
||||
b+'~="'+$(this).getval()+'"]) { display: none; }\n';$(c).data("content",c.innerHTML);$("style.dependencies.hidden").each(function(){$(this).html($(this).data("content")).removeClass("hidden")});$(".UIelement:not(:visible) style.dependencies:not(.hidden)").each(function(){$(this).addClass("hidden");$(this).html("")})});if("dependent"in d)e.dependent=d.dependent;if("value"in d)e.value=d.value;if("validate"in d)e.validate=e.validate.concat(d.validate);return e}var b=[],h=["required","optional"];"desc"in
|
||||
a&&b.push({type:"help",help:a.desc});if("sort"in a){var m=[],i;for(i in h)if(a[h[i]])for(var f in a[h[i]]){var r=a[h[i]][f];if(Array.isArray(r))for(var j in r){if(!("validate"in r[j]))r[j].validate=[];r[j].validate=h[i];r[j].id=f;m.push(r[j])}else{if(!("validate"in r))r.validate=[];r.validate.push(h[i]);r.id=f;m.push(r)}}m.sort(function(b,c){return(""+b[a.sort]).localeCompare(c[a.sort])});for(f in m){r=m[f];b.push(d(r.validate,r.id,r))}}else for(i in h)if(a[h[i]]){b.push($("<h4>").text(UI.format.capital(h[i])+
|
||||
" parameters"));for(f in a[h[i]]){r=a[h[i]][f];if(Array.isArray(r))for(j in r)b.push(d(i,f,r[j]));else b.push(d(i,f,r))}}return b},stored:{get:function(){return mist.data.ui_settings||{}},set:function(a,c){var d=this.get();d[a]=c;mist.send(function(){},{ui_settings:d})},del:function(a){delete mist.data.ui_settings[a];mist.send(function(){},{ui_settings:mist.data.ui_settings})}}};
|
||||
function log(){try{UI.debug&&[].push.call(arguments,Error().stack);[].unshift.call(arguments,"["+UI.format.time((new Date).getTime()/1E3)+"]");console.log.apply(console,arguments)}catch(a){}}
|
||||
$.fn.getval=function(){var a=$(this).data("opts"),c=$(this).val();if(a&&"type"in a)switch(a.type){case "span":c=$(this).html();break;case "checkbox":c=$(this).prop("checked");break;case "radioselect":a=$(this).find("label > input[type=radio]:checked").parent();if(a.length){c=[];c.push(a.children("input[type=radio]").val());a=a.children("select");a.length&&c.push(a.val())}else c="";break;case "checklist":c=[];$(this).find(".checklist input[type=checkbox]:checked").each(function(){c.push($(this).attr("name"))});
|
||||
break;case "unix":c!=""&&(c=Math.round(new Date($(this).val())/1E3));break;case "selectinput":c=$(this).children("select").first().val();c=="CUSTOM"&&(c=$(this).children("label").first().find(".field_container").children().first().getval());break;case "inputlist":c=[];$(this).children().each(function(){$(this).val()!=""&&c.push($(this).val())});break;case "sublist":c=$(this).data("savelist")}return c};
|
||||
$.fn.setval=function(a){var c=$(this).data("opts");$(this).val(a);if(c&&"type"in c)switch(c.type){case "span":$(this).html(a);break;case "checkbox":$(this).prop("checked",a);break;case "geolimited":case "hostlimited":c=$(this).closest(".field_container").data("subUI");if(typeof a=="undefined"||a.length==0)a="-";c.blackwhite.val(a.charAt(0));var a=a.substr(1).split(" "),d;for(d in a)c.values.append(c.prototype.clone(true).val(a[d]));c.blackwhite.trigger("change");break;case "radioselect":if(typeof a==
|
||||
"undefined")return $(this);d=$(this).find('label > input[type=radio][value="'+a[0]+'"]').prop("checked",true).parent();a.length>1&&d.children("select").val(a[1]);break;case "checklist":c=$(this).find(".checklist input[type=checkbox]").prop("checked",false);for(d in a)c.filter('[name="'+a[d]+'"]').prop("checked",true);break;case "unix":if(typeof a!="undefined"){a=new Date(Math.round(a)*1E3);a.setMinutes(a.getMinutes()-a.getTimezoneOffset());a=a.toISOString();$(this).val(a.split("Z")[0])}break;case "selectinput":a===
|
||||
null&&(a="");var b=false;for(d in c.selectinput){var i;typeof c.selectinput[d]=="string"?i=c.selectinput[d]:typeof c.selectinput[d][0]=="string"&&(i=c.selectinput[d][0]);if(i==a){$(this).children("select").first().val(a);b=true;break}}if(!b){$(this).children("label").first().find(".field_container").children().first().setval(a);$(this).children("select").first().val("CUSTOM").trigger("change")}break;case "inputlist":for(d in a)$(this).append($(this).data("newitem")().val(a[d]));$(this).append($(this).children().first());
|
||||
break;case "sublist":var m=$(this),c=$(this).children(".curvals");c.html("");if(a&&a.length)for(d in a){var b=$.extend(true,{},a[d]),h=function(a){for(var b in a)b.slice(0,6)=="x-LSP-"?delete a[b]:typeof a[b]=="object"&&h(a[b])};h(b);c.append($("<div>").addClass("subitem").append($("<span>").addClass("itemdetails").text(a[d]["x-LSP-name"]?a[d]["x-LSP-name"]:JSON.stringify(b)).attr("title",JSON.stringify(b,null,2))).append($("<button>").addClass("move").text("^").attr("title","Move item up").click(function(){var a=
|
||||
null&&(a="");var b=false;for(d in c.selectinput){var h;typeof c.selectinput[d]=="string"?h=c.selectinput[d]:typeof c.selectinput[d][0]=="string"&&(h=c.selectinput[d][0]);if(h==a){$(this).children("select").first().val(a);b=true;break}}if(!b){$(this).children("label").first().find(".field_container").children().first().setval(a);$(this).children("select").first().val("CUSTOM").trigger("change")}break;case "inputlist":for(d in a)$(this).append($(this).data("newitem")().val(a[d]));$(this).append($(this).children().first());
|
||||
break;case "sublist":var m=$(this),c=$(this).children(".curvals");c.html("");if(a&&a.length)for(d in a){var b=$.extend(true,{},a[d]),i=function(a){for(var b in a)b.slice(0,6)=="x-LSP-"?delete a[b]:typeof a[b]=="object"&&i(a[b])};i(b);c.append($("<div>").addClass("subitem").append($("<span>").addClass("itemdetails").text(a[d]["x-LSP-name"]?a[d]["x-LSP-name"]:JSON.stringify(b)).attr("title",JSON.stringify(b,null,2))).append($("<button>").addClass("move").text("^").attr("title","Move item up").click(function(){var a=
|
||||
$(this).parent().index();if(a!=0){var b=m.getval();b.splice(a-1,0,b.splice(a,1)[0]);m.setval(b)}})).append($("<button>").text("Edit").click(function(){var a=$(this).parent().index(),b=$(this).closest(".field");b.data("build")(Object.assign({},b.getval()[a]),a)})).append($("<button>").text("x").attr("title","Remove item").click(function(a){var b=$(this).parent().index(),c=m.data("savelist");c.splice(b,1);m.setval(c);a.preventDefault()})))}else c.append("None.");m.data("savelist",a)}$(this).trigger("change");
|
||||
return $(this)};function parseURL(a){var c=document.createElement("a");c.href=a;return{protocol:c.protocol+"//",host:c.hostname,port:c.port?":"+c.port:""}}function triggerRewrite(a){return typeof a=="object"&&typeof a.length=="undefined"?a:obj={handler:a[0],sync:a[1],streams:a[2],"default":a[3]}};
|
||||
|
|
52
lsp/mist.js
52
lsp/mist.js
|
@ -2559,17 +2559,30 @@ var UI = {
|
|||
UI.showTab("Overview");
|
||||
return;
|
||||
}
|
||||
|
||||
var perc = "";
|
||||
if ("progress" in d.update) {
|
||||
perc = " ("+d.update.progress+"%)";
|
||||
}
|
||||
$versioncheck.text("Updating.."+perc);
|
||||
add_logs(d.log);
|
||||
setTimeout(function(){
|
||||
mist.send(function(d){
|
||||
update_progress(d);
|
||||
},{update:true});
|
||||
},5e3);
|
||||
},1e3);
|
||||
}
|
||||
function add_logs(log) {
|
||||
var msgs = log.filter(function(a){return a[1] == "UPDR"});
|
||||
if (msgs.length) {
|
||||
var $cont = $("<div>");
|
||||
$versioncheck.append($cont);
|
||||
for (var i in msgs) {
|
||||
$cont.append(
|
||||
$("<div>").text(msgs[i][2])
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((!d.update) || (!('uptodate' in d.update))) {
|
||||
|
@ -2596,18 +2609,31 @@ var UI = {
|
|||
update_progress(d);
|
||||
}
|
||||
else {
|
||||
$versioncheck.addClass('red').text('Version outdated!').append(
|
||||
$('<button>').text('Update').css({'font-size':'1em','margin-left':'1em'}).click(function(){
|
||||
if (confirm('Are you sure you want to execute a rolling update?')) {
|
||||
$versioncheck.addClass('orange').removeClass('red').text('Rolling update command sent..');
|
||||
|
||||
mist.send(function(d){
|
||||
update_progress(d);
|
||||
},{autoupdate: true});
|
||||
}
|
||||
})
|
||||
$versioncheck.text("");
|
||||
$versioncheck.append(
|
||||
$("<span>").addClass('red').text('On '+new Date(d.update.date).toLocaleDateString()+' version '+d.update.version+' became available.')
|
||||
);
|
||||
if (!d.update.url || (d.update.url.slice(-4) != ".zip")) {
|
||||
//show update button if not windows version
|
||||
$versioncheck.append(
|
||||
$('<button>').text('Rolling update').css({'font-size':'1em','margin-left':'1em'}).click(function(){
|
||||
if (confirm('Are you sure you want to execute a rolling update?')) {
|
||||
$versioncheck.addClass('orange').removeClass('red').text('Rolling update command sent..');
|
||||
|
||||
mist.send(function(d){
|
||||
update_progress(d);
|
||||
},{autoupdate: true});
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
var a = $("<a>").attr("href",d.update.url).attr("target","_blank").text("Manual download");
|
||||
a[0].protocol = "https:";
|
||||
$versioncheck.append(
|
||||
$("<div>").append(a)
|
||||
);
|
||||
}
|
||||
add_logs(d.log);
|
||||
}
|
||||
|
||||
update_update(mist.data);
|
||||
|
@ -6300,6 +6326,8 @@ var mist = {
|
|||
timeout: opts.timeout*1000,
|
||||
async: true,
|
||||
error: function(jqXHR,textStatus,errorThrown){
|
||||
console.warn("connection failed :(",errorThrown);
|
||||
|
||||
//connection failed
|
||||
delete mist.user.loggedin;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue