First version of alternate style login page.

Ylian Saint-Hilaire committed Sep 1, 2020 at 11:51 UTC 4f036292748263661f40184706363fbf4c82df02
17 files changed +400 -118
meshcentral-config-schema.json
+1
@@ -141,6 +141,7 @@
141 "items": {
142 "type": "object",
143 "properties": {
144 + "siteStyle": { "type": "integer", "default": 1, "description": "Valid numbers are 1 and 2, changes the style of the login page and some secondary pages." }
145 "title": { "type": "string" },
146 "title2": { "type": "string" },
147 "titlePicture": { "type": "string" },
public/images/login/2fa-mail-48.png
Binary files a/public/images/login/2fa-mail-48.png and b/public/images/login/2fa-mail-48.png differ
public/images/login/file48.png
Binary files /dev/null and b/public/images/login/file48.png differ
public/scripts/amt-wsman-0.2.0-min.js
+1 -1
@@ -1 +1 @@
1 -var WsmanStackCreateService=function(e,s,r,a,o,t){var p={};function l(e){if(!e)return"";var s=" ";for(var r in e)e.hasOwnProperty(r)&&0===r.indexOf("@")&&(s+=r.substring(1)+'="'+e[r]+'" ');return s}function w(e){if(!e)return"";if("string"==typeof e)return e;if(e.InstanceID)return'<w:SelectorSet><w:Selector Name="InstanceID">'+e.InstanceID+"</w:Selector></w:SelectorSet>";var s="<w:SelectorSet>";for(var r in e)if(e.hasOwnProperty(r)){if(s+='<w:Selector Name="'+r+'">',e[r].ReferenceParameters){s+="<a:EndpointReference>",s+="<a:Address>"+e[r].Address+"</a:Address><a:ReferenceParameters><w:ResourceURI>"+e[r].ReferenceParameters.ResourceURI+"</w:ResourceURI><w:SelectorSet>";var a=e[r].ReferenceParameters.SelectorSet.Selector;if(Array.isArray(a))for(var o=0;o<a.length;o++)s+="<w:Selector"+l(a[o])+">"+a[o].Value+"</w:Selector>";else s+="<w:Selector"+l(a)+">"+a.Value+"</w:Selector>";s+="</w:SelectorSet></a:ReferenceParameters></a:EndpointReference>"}else s+=e[r];s+="</w:Selector>"}return s+="</w:SelectorSet>"}return p.NextMessageId=1,p.Address="/wsman",p.comm=CreateWsmanComm(e,s,r,a,o,t),p.PerformAjax=function(e,o,s,r,a){null==a&&(a=""),p.comm.PerformAjax('<?xml version=\"1.0\" encoding=\"utf-8\"?><Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:w="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd" xmlns="http://www.w3.org/2003/05/soap-envelope" '+a+"><Header><a:Action>"+e,function(e,s,r){if(200==s){var a=p.ParseWsman(e);a&&null!=a?o(p,a.Header.ResourceURI,a,200,r):o(p,null,{Header:{HttpError:s}},601,r)}else o(p,null,{Header:{HttpError:s}},s,r)},s,r)},p.CancelAllQueries=function(e){p.comm.CancelAllQueries(e)},p.GetNameFromUrl=function(e){var s=e.lastIndexOf("/");return-1==s?e:e.substring(s+1)},p.ExecSubscribe=function(e,s,r,a,o,t,n,l,c,d){var m="",i="";null!=c&&null!=d&&(m="<t:IssuedTokens><t:RequestSecurityTokenResponse><t:TokenType>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken</t:TokenType><t:RequestedSecurityToken><se:UsernameToken><se:Username>"+c+'</se:Username><se:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd#PasswordText">'+d+"</se:Password></se:UsernameToken></t:RequestedSecurityToken></t:RequestSecurityTokenResponse></t:IssuedTokens>",i='<Auth Profile="http://schemas.xmlsoap.org/ws/2004/08/eventing/DeliveryModes/secprofile/http/digest"/>'),l=null!=l&&null!=l?"<a:ReferenceParameters>"+l+"</a:ReferenceParameters>":"";var u="http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>"+w(n)+m+'</Header><Body><e:Subscribe><e:Delivery Mode="http://schemas.dmtf.org/wbem/wsman/1/wsman/'+s+'"><e:NotifyTo><a:Address>'+r+"</a:Address></e:NotifyTo>"+i+"</e:Delivery><e:Expires>PT0.000000S</e:Expires></e:Subscribe>";p.PerformAjax(u+"</Body></Envelope>",a,o,t,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing" xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:se="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:m="http://x.com"')},p.ExecUnSubscribe=function(e,s,r,a,o){var t="http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>"+w(o)+"</Header><Body><e:Unsubscribe/>";p.PerformAjax(t+"</Body></Envelope>",s,r,a,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing"')},p.ExecPut=function(e,s,r,a,o,t){var n="http://schemas.xmlsoap.org/ws/2004/09/transfer/Put</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60.000S</w:OperationTimeout>"+w(t)+"</Header><Body>"+function(e,s){if(!e||null==s)return"";var r=p.GetNameFromUrl(e),a="<r:"+r+' xmlns:r="'+e+'">';for(var o in s)if(s.hasOwnProperty(o)&&0!==o.indexOf("__")&&0!==o.indexOf("@")&&void 0!==s[o]&&null!==s[o]&&"function"!=typeof s[o])if("object"==typeof s[o]&&s[o].ReferenceParameters){a+="<r:"+o+"><a:Address>"+s[o].Address+"</a:Address><a:ReferenceParameters><w:ResourceURI>"+s[o].ReferenceParameters.ResourceURI+"</w:ResourceURI><w:SelectorSet>";var t=s[o].ReferenceParameters.SelectorSet.Selector;if(Array.isArray(t))for(var n=0;n<t.length;n++)a+="<w:Selector"+l(t[n])+">"+t[n].Value+"</w:Selector>";else a+="<w:Selector"+l(t)+">"+t.Value+"</w:Selector>";a+="</w:SelectorSet></a:ReferenceParameters></r:"+o+">"}else if(Array.isArray(s[o]))for(n=0;n<s[o].length;n++)a+="<r:"+o+">"+s[o][n].toString()+"</r:"+o+">";else a+="<r:"+o+">"+s[o].toString()+"</r:"+o+">";return a+="</r:"+r+">"}(e,s);p.PerformAjax(n+"</Body></Envelope>",r,a,o)},p.ExecCreate=function(e,s,r,a,o,t){var n=p.GetNameFromUrl(e),l="http://schemas.xmlsoap.org/ws/2004/09/transfer/Create</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+w(t)+"</Header><Body><g:"+n+' xmlns:g="'+e+'">';for(var c in s)l+="<g:"+c+">"+s[c]+"</g:"+c+">";p.PerformAjax(l+"</g:"+n+"></Body></Envelope>",r,a,o)},p.ExecCreateXml=function(e,s,r,a,o){var t=p.GetNameFromUrl(e);p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Create</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60.000S</w:OperationTimeout></Header><Body><r:"+t+' xmlns:r="'+e+'">'+s+"</r:"+t+"></Body></Envelope>",r,a,o)},p.ExecDelete=function(e,s,r,a,o){var t="http://schemas.xmlsoap.org/ws/2004/09/transfer/Delete</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+w(s)+"</Header><Body /></Envelope>";p.PerformAjax(t,r,a,o)},p.ExecGet=function(e,s,r,a){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Get</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body /></Envelope>",s,r,a)},p.ExecMethod=function(e,s,r,a,o,t,n){var l="";for(var c in r)if(null!=r[c])if(Array.isArray(r[c]))for(var d in r[c])l+="<r:"+c+">"+r[c][d]+"</r:"+c+">";else l+="<r:"+c+">"+r[c]+"</r:"+c+">";p.ExecMethodXml(e,s,l,a,o,t,n)},p.ExecMethodXml=function(e,s,r,a,o,t,n){p.PerformAjax(e+"/"+s+"</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+w(n)+"</Header><Body><r:"+s+'_INPUT xmlns:r="'+e+'">'+r+"</r:"+s+"_INPUT></Body></Envelope>",a,o,t)},p.ExecEnum=function(e,s,r,a){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Enumerate</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++'</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Enumerate xmlns="http://schemas.xmlsoap.org/ws/2004/09/enumeration" /></Body></Envelope>',s,r,a)},p.ExecPull=function(e,s,r,a,o){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Pull</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++'</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Pull xmlns="http://schemas.xmlsoap.org/ws/2004/09/enumeration"><EnumerationContext>'+s+"</EnumerationContext><MaxElements>999</MaxElements><MaxCharacters>99999</MaxCharacters></Pull></Body></Envelope>",r,a,o)},p.ParseWsman=function(s){try{s.childNodes||(s=function(e){{if(window.DOMParser)return(new DOMParser).parseFromString(e,"text/xml");var s=new ActiveXObject("Microsoft.XMLDOM");return s.async=!1,s.loadXML(e),s}}(s));var e,r={Header:{}},a=s.getElementsByTagName("Header")[0];if(!(a=a||s.getElementsByTagName("a:Header")[0]))return null;for(var o=0;o<a.childNodes.length;o++){var t=a.childNodes[o];r.Header[t.localName]=t.textContent}var n=s.getElementsByTagName("Body")[0];return(n=n||s.getElementsByTagName("a:Body")[0])?(0<n.childNodes.length&&((e=n.childNodes[0].localName).indexOf("_OUTPUT")==e.length-7&&(e=e.substring(0,e.length-7)),r.Header.Method=e,r.Body=function e(s){var r,a={};for(var o=0;o<s.childNodes.length;o++){var t=s.childNodes[o];"true"==(r=0==t.childElementCount?t.textContent:e(t))&&(r=!0),"false"==r&&(r=!1);var n=r;if(0<t.attributes.length){n={Value:r};for(var l=0;l<t.attributes.length;l++)n["@"+t.attributes[l].name]=t.attributes[l].value}a[t.localName]instanceof Array?a[t.localName].push(n):null==a[t.localName]?a[t.localName]=n:a[t.localName]=[a[t.localName],n]}return a}(n.childNodes[0])),r):null}catch(e){return console.log("Unable to parse XML: "+s),null}},p}
\ No newline at end of file
1 +var WsmanStackCreateService=function(e,s,r,a,o,t){var p={};function l(e){if(!e)return"";var s=" ";for(var r in e)e.hasOwnProperty(r)&&0===r.indexOf("@")&&(s+=r.substring(1)+'="'+e[r]+'" ');return s}function w(e){if(!e)return"";if("string"==typeof e)return e;if(e.InstanceID)return'<w:SelectorSet><w:Selector Name="InstanceID">'+e.InstanceID+"</w:Selector></w:SelectorSet>";var s="<w:SelectorSet>";for(var r in e)if(e.hasOwnProperty(r)){if(s+='<w:Selector Name="'+r+'">',e[r].ReferenceParameters){s+="<a:EndpointReference>",s+="<a:Address>"+e[r].Address+"</a:Address><a:ReferenceParameters><w:ResourceURI>"+e[r].ReferenceParameters.ResourceURI+"</w:ResourceURI><w:SelectorSet>";var a=e[r].ReferenceParameters.SelectorSet.Selector;if(Array.isArray(a))for(var o=0;o<a.length;o++)s+="<w:Selector"+l(a[o])+">"+a[o].Value+"</w:Selector>";else s+="<w:Selector"+l(a)+">"+a.Value+"</w:Selector>";s+="</w:SelectorSet></a:ReferenceParameters></a:EndpointReference>"}else s+=e[r];s+="</w:Selector>"}return s+="</w:SelectorSet>"}return p.NextMessageId=1,p.Address="/wsman",p.comm=CreateWsmanComm(e,s,r,a,o,t),p.PerformAjax=function(e,o,s,r,a){null==a&&(a=""),p.comm.PerformAjax('<?xml version=\"1.0\" encoding=\"utf-8\"?><Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:w="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd" xmlns="http://www.w3.org/2003/05/soap-envelope" '+a+"><Header><a:Action>"+e,function(e,s,r){if(200==s){var a=p.ParseWsman(e);a&&null!=a?o(p,a.Header.ResourceURI,a,200,r):o(p,null,{Header:{HttpError:s}},601,r)}else o(p,null,{Header:{HttpError:s}},s,r)},s,r)},p.CancelAllQueries=function(e){p.comm.CancelAllQueries(e)},p.GetNameFromUrl=function(e){var s=e.lastIndexOf("/");return-1==s?e:e.substring(s+1)},p.ExecSubscribe=function(e,s,r,a,o,t,n,l,d,c){var m="",i="";null!=d&&null!=c&&(m="<t:IssuedTokens><t:RequestSecurityTokenResponse><t:TokenType>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken</t:TokenType><t:RequestedSecurityToken><se:UsernameToken><se:Username>"+d+'</se:Username><se:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd#PasswordText">'+c+"</se:Password></se:UsernameToken></t:RequestedSecurityToken></t:RequestSecurityTokenResponse></t:IssuedTokens>",i='<Auth Profile="http://schemas.xmlsoap.org/ws/2004/08/eventing/DeliveryModes/secprofile/http/digest"/>'),l=null!=l&&null!=l?"<a:ReferenceParameters>"+l+"</a:ReferenceParameters>":"";var u="http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>"+w(n)+m+'</Header><Body><e:Subscribe><e:Delivery Mode="http://schemas.dmtf.org/wbem/wsman/1/wsman/'+s+'"><e:NotifyTo><a:Address>'+r+"</a:Address></e:NotifyTo>"+i+"</e:Delivery><e:Expires>PT0.000000S</e:Expires></e:Subscribe>";p.PerformAjax(u+"</Body></Envelope>",a,o,t,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing" xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:se="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:m="http://x.com"')},p.ExecUnSubscribe=function(e,s,r,a,o){var t="http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>"+w(o)+"</Header><Body><e:Unsubscribe/>";p.PerformAjax(t+"</Body></Envelope>",s,r,a,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing"')},p.ExecPut=function(e,s,r,a,o,t){var n="http://schemas.xmlsoap.org/ws/2004/09/transfer/Put</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60.000S</w:OperationTimeout>"+w(t)+"</Header><Body>"+function(e,s){if(!e||null==s)return"";var r=p.GetNameFromUrl(e),a="<r:"+r+' xmlns:r="'+e+'">';for(var o in s)if(s.hasOwnProperty(o)&&0!==o.indexOf("__")&&0!==o.indexOf("@")&&void 0!==s[o]&&null!==s[o]&&"function"!=typeof s[o])if("object"==typeof s[o]&&s[o].ReferenceParameters){a+="<r:"+o+"><a:Address>"+s[o].Address+"</a:Address><a:ReferenceParameters><w:ResourceURI>"+s[o].ReferenceParameters.ResourceURI+"</w:ResourceURI><w:SelectorSet>";var t=s[o].ReferenceParameters.SelectorSet.Selector;if(Array.isArray(t))for(var n=0;n<t.length;n++)a+="<w:Selector"+l(t[n])+">"+t[n].Value+"</w:Selector>";else a+="<w:Selector"+l(t)+">"+t.Value+"</w:Selector>";a+="</w:SelectorSet></a:ReferenceParameters></r:"+o+">"}else if(Array.isArray(s[o]))for(n=0;n<s[o].length;n++)a+="<r:"+o+">"+s[o][n].toString()+"</r:"+o+">";else a+="<r:"+o+">"+s[o].toString()+"</r:"+o+">";return a+="</r:"+r+">"}(e,s);p.PerformAjax(n+"</Body></Envelope>",r,a,o)},p.ExecCreate=function(e,s,r,a,o,t){var n=p.GetNameFromUrl(e),l="http://schemas.xmlsoap.org/ws/2004/09/transfer/Create</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+w(t)+"</Header><Body><g:"+n+' xmlns:g="'+e+'">';for(var d in s)l+="<g:"+d+">"+s[d]+"</g:"+d+">";p.PerformAjax(l+"</g:"+n+"></Body></Envelope>",r,a,o)},p.ExecCreateXml=function(e,s,r,a,o){var t=p.GetNameFromUrl(e);p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Create</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60.000S</w:OperationTimeout></Header><Body><r:"+t+' xmlns:r="'+e+'">'+s+"</r:"+t+"></Body></Envelope>",r,a,o)},p.ExecDelete=function(e,s,r,a,o){var t="http://schemas.xmlsoap.org/ws/2004/09/transfer/Delete</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+w(s)+"</Header><Body /></Envelope>";p.PerformAjax(t,r,a,o)},p.ExecGet=function(e,s,r,a){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Get</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body /></Envelope>",s,r,a)},p.ExecMethod=function(e,s,r,a,o,t,n){var l="";for(var d in r)if(null!=r[d])if(Array.isArray(r[d]))for(var c in r[d])l+="<r:"+d+">"+r[d][c]+"</r:"+d+">";else l+="<r:"+d+">"+r[d]+"</r:"+d+">";p.ExecMethodXml(e,s,l,a,o,t,n)},p.ExecMethodXml=function(e,s,r,a,o,t,n){p.PerformAjax(e+"/"+s+"</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+w(n)+"</Header><Body><r:"+s+'_INPUT xmlns:r="'+e+'">'+r+"</r:"+s+"_INPUT></Body></Envelope>",a,o,t)},p.ExecEnum=function(e,s,r,a){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Enumerate</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++'</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Enumerate xmlns="http://schemas.xmlsoap.org/ws/2004/09/enumeration" /></Body></Envelope>',s,r,a)},p.ExecPull=function(e,s,r,a,o){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Pull</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++'</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Pull xmlns="http://schemas.xmlsoap.org/ws/2004/09/enumeration"><EnumerationContext>'+s+"</EnumerationContext><MaxElements>999</MaxElements><MaxCharacters>99999</MaxCharacters></Pull></Body></Envelope>",r,a,o)},p.ParseWsman=function(s){try{s.childNodes||(s=function(e){{if(window.DOMParser)return(new DOMParser).parseFromString(e,"text/xml");var s=new ActiveXObject("Microsoft.XMLDOM");return s.async=!1,s.loadXML(e),s}}(s));var e,r={Header:{}},a=s.getElementsByTagName("Header")[0];if(!(a=a||s.getElementsByTagName("a:Header")[0]))return null;for(var o=0;o<a.childNodes.length;o++){var t=a.childNodes[o];r.Header[t.localName]=t.textContent}var n=s.getElementsByTagName("Body")[0];return(n=n||s.getElementsByTagName("a:Body")[0])?(0<n.childNodes.length&&((e=n.childNodes[0].localName).indexOf("_OUTPUT")==e.length-7&&(e=e.substring(0,e.length-7)),r.Header.Method=e,r.Body=function e(s){var r,a={};for(var o=0;o<s.childNodes.length;o++){var t=s.childNodes[o];"true"==(r=0==t.childElementCount?t.textContent:e(t))&&(r=!0),"false"==r&&(r=!1);var n=r;if(0<t.attributes.length){n={Value:r};for(var l=0;l<t.attributes.length;l++)n["@"+t.attributes[l].name]=t.attributes[l].value}a[t.localName]instanceof Array?a[t.localName].push(n):null==a[t.localName]?a[t.localName]=n:a[t.localName]=[a[t.localName],n]}return a}(n.childNodes[0])),r):null}catch(e){return console.log("Unable to parse XML: "+s),null}},p}
\ No newline at end of file
sample-config-advanced.json
+1
@@ -114,6 +114,7 @@
114 },
115 "_domains": {
116 "": {
117 + "_siteStyle": 2,
118 "title": "MyServer",
119 "title2": "Servername",
120 "_titlePicture": "title-sample.png",
translate/translate.js
+2
@@ -23,9 +23,11 @@ var meshCentralSourceFiles = [
23 "../views/default.handlebars",
24 "../views/default-mobile.handlebars",
25 "../views/download.handlebars",
26 + "../views/download2.handlebars",
27 "../views/error404.handlebars",
28 "../views/error404-mobile.handlebars",
29 "../views/login.handlebars",
30 + "../views/login2.handlebars",
31 "../views/login-mobile.handlebars",
32 "../views/terms.handlebars",
33 "../views/terms-mobile.handlebars",
translate/translate.json
+199 -73
@@ -727,6 +727,8 @@
727 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->resetAccountDiv",
728 "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->newAccountDiv",
729 "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->resetAccountDiv",
730 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->newAccountDiv",
731 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->resetAccountDiv",
732 "terms-mobile.handlebars->container->page_content->column_l->75->1",
733 "terms.handlebars->container->column_l->75->1"
734 ]
@@ -830,7 +832,9 @@
832 "xloc": [
833 "default-mobile.handlebars->9->118",
834 "default-mobile.handlebars->9->453",
833 - "default.handlebars->27->1531"
835 + "default.handlebars->27->1531",
836 + "download.handlebars->3->1",
837 + "download2.handlebars->5->1"
838 ]
839 },
840 {
@@ -2319,7 +2323,8 @@
2323 "zh-cht": "拒絕訪問。",
2324 "xloc": [
2325 "login-mobile.handlebars->5->16",
2322 - "login.handlebars->5->16"
2326 + "login.handlebars->5->16",
2327 + "login2.handlebars->7->16"
2328 ]
2329 },
2330 {
@@ -2380,7 +2385,8 @@
2385 "zh-cht": "賬戶創建",
2386 "xloc": [
2387 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->5->1",
2383 - "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->5->1"
2388 + "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->5->1",
2389 + "login2.handlebars->centralTable->1->0->logincell->createpanel->1->5->1"
2390 ]
2391 },
2392 {
@@ -2401,7 +2407,8 @@
2407 "zh-cht": "賬戶重置",
2408 "xloc": [
2409 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->resetpanel->1->5->1",
2404 - "login.handlebars->container->column_l->centralTable->1->0->logincell->resetpanel->1->5->1"
2410 + "login.handlebars->container->column_l->centralTable->1->0->logincell->resetpanel->1->5->1",
2411 + "login2.handlebars->centralTable->1->0->logincell->resetpanel->1->5->1"
2412 ]
2413 },
2414 {
@@ -2506,7 +2513,8 @@
2513 "zh-cht": "達到帳戶限制。",
2514 "xloc": [
2515 "login-mobile.handlebars->5->6",
2509 - "login.handlebars->5->6"
2516 + "login.handlebars->5->6",
2517 + "login2.handlebars->7->6"
2518 ]
2519 },
2520 {
@@ -2527,7 +2535,8 @@
2535 "zh-cht": "帳戶被鎖定。",
2536 "xloc": [
2537 "login-mobile.handlebars->5->15",
2530 - "login.handlebars->5->15"
2538 + "login.handlebars->5->15",
2539 + "login2.handlebars->7->15"
2540 ]
2541 },
2542 {
@@ -2548,7 +2557,8 @@
2557 "zh-cht": "找不到帳戶。",
2558 "xloc": [
2559 "login-mobile.handlebars->5->12",
2551 - "login.handlebars->5->12"
2560 + "login.handlebars->5->12",
2561 + "login2.handlebars->7->12"
2562 ]
2563 },
2564 {
@@ -5263,7 +5273,13 @@
5273 "login.handlebars->container->column_l->centralTable->1->0->logincell->resetpanel->1->10",
5274 "login.handlebars->container->column_l->centralTable->1->0->logincell->resetpasswordpanel->1->10",
5275 "login.handlebars->container->column_l->centralTable->1->0->logincell->resettokenpanel->1->8",
5266 - "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->10"
5276 + "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->10",
5277 + "login2.handlebars->centralTable->1->0->logincell->checkemailpanel->1->8",
5278 + "login2.handlebars->centralTable->1->0->logincell->createpanel->1->12",
5279 + "login2.handlebars->centralTable->1->0->logincell->resetpanel->1->10",
5280 + "login2.handlebars->centralTable->1->0->logincell->resetpasswordpanel->1->10",
5281 + "login2.handlebars->centralTable->1->0->logincell->resettokenpanel->1->8",
5282 + "login2.handlebars->centralTable->1->0->logincell->tokenpanel->1->10"
5283 ]
5284 },
5285 {
@@ -5948,6 +5964,7 @@
5964 "desktop.handlebars->p11->dialog->idx_dlgButtonBar",
5965 "login-mobile.handlebars->dialog->idx_dlgButtonBar",
5966 "login.handlebars->dialog->idx_dlgButtonBar",
5967 + "login2.handlebars->dialog->idx_dlgButtonBar",
5968 "player.handlebars->p11->dialog->idx_dlgButtonBar",
5969 "xterm.handlebars->p11->dialog->idx_dlgButtonBar"
5970 ]
@@ -6066,7 +6083,8 @@
6083 "zh-cht": "更改電子郵件地址",
6084 "xloc": [
6085 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->checkemailpanel->1->checkCheckOperations->1->2->1->1",
6069 - "login.handlebars->container->column_l->centralTable->1->0->logincell->checkemailpanel->1->checkCheckOperations->1->2->1->1"
6086 + "login.handlebars->container->column_l->centralTable->1->0->logincell->checkemailpanel->1->checkCheckOperations->1->2->1->1",
6087 + "login2.handlebars->centralTable->1->0->logincell->checkemailpanel->1->checkCheckOperations->1->2->1->1"
6088 ]
6089 },
6090 {
@@ -8532,7 +8550,8 @@
8550 "xloc": [
8551 "default.handlebars->27->1658",
8552 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->12->1->1",
8535 - "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1"
8553 + "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1",
8554 + "login2.handlebars->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1"
8555 ]
8556 },
8557 {
@@ -8665,7 +8684,8 @@
8684 "zh-cht": "創建一個",
8685 "xloc": [
8686 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->newAccountDiv->1",
8668 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->newAccountDiv->1"
8687 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->newAccountDiv->1",
8688 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->newAccountDiv->1"
8689 ]
8690 },
8691 {
@@ -8728,7 +8748,8 @@
8748 "zh-cht": "創建令牌:",
8749 "xloc": [
8750 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->newAccountPass->1",
8731 - "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->newAccountPass->nuToken"
8751 + "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->newAccountPass->nuToken",
8752 + "login2.handlebars->centralTable->1->0->logincell->createpanel->1->9->1->newAccountPass->nuToken"
8753 ]
8754 },
8755 {
@@ -10857,7 +10878,8 @@
10878 "zh-cht": "還沒有帳號?",
10879 "xloc": [
10880 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->newAccountDiv",
10860 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->newAccountDiv"
10881 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->newAccountDiv",
10882 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->newAccountDiv"
10883 ]
10884 },
10885 {
@@ -12101,7 +12123,11 @@
12123 "login-mobile.handlebars->5->42",
12124 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3",
12125 "login.handlebars->5->43",
12104 - "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->4->1->3"
12126 + "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->4->1->3",
12127 + "login2.handlebars->7->43",
12128 + "login2.handlebars->centralTable->1->0->logincell->resetpanel->1->7->1->0->1",
12129 + "login2.handlebars->centralTable->1->0->logincell->resetpanel->1->7->1->0->1",
12130 + "login2.handlebars->centralTable->1->0->logincell->tokenpanel->1->7->1->2farow->1->3"
12131 ]
12132 },
12133 {
@@ -12160,7 +12186,8 @@
12186 "zh-cht": "郵件確認",
12187 "xloc": [
12188 "login-mobile.handlebars->5->43",
12163 - "login.handlebars->5->44"
12189 + "login.handlebars->5->44",
12190 + "login2.handlebars->7->44"
12191 ]
12192 },
12193 {
@@ -12315,7 +12342,8 @@
12342 "zh-cht": "郵件已發送。",
12343 "xloc": [
12344 "login-mobile.handlebars->5->2",
12318 - "login.handlebars->5->2"
12345 + "login.handlebars->5->2",
12346 + "login2.handlebars->7->2"
12347 ]
12348 },
12349 {
@@ -12332,7 +12360,8 @@
12360 "zh-cht": "需要通過電子郵件驗證,請檢查您的郵箱,然後單擊確認鏈接。",
12361 "xloc": [
12362 "login-mobile.handlebars->5->3",
12335 - "login.handlebars->5->3"
12363 + "login.handlebars->5->3",
12364 + "login2.handlebars->7->3"
12365 ]
12366 },
12367 {
@@ -12385,7 +12414,9 @@
12414 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->resetpanel->1->7->1->0->1",
12415 "login.handlebars->5->21",
12416 "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->2->nuEmail",
12388 - "login.handlebars->container->column_l->centralTable->1->0->logincell->resetpanel->1->7->1->0->1"
12417 + "login.handlebars->container->column_l->centralTable->1->0->logincell->resetpanel->1->7->1->0->1",
12418 + "login2.handlebars->7->21",
12419 + "login2.handlebars->centralTable->1->0->logincell->createpanel->1->9->1->2->nuEmail"
12420 ]
12421 },
12422 {
@@ -12874,7 +12905,8 @@
12905 "zh-cht": "輸入帳戶創建令牌",
12906 "xloc": [
12907 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1",
12877 - "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1"
12908 + "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1",
12909 + "login2.handlebars->centralTable->1->0->logincell->createpanel->1->9->1"
12910 ]
12911 },
12912 {
@@ -13094,7 +13126,8 @@
13126 "zh-cht": "使用此電子郵件地址的現有帳戶。",
13127 "xloc": [
13128 "login-mobile.handlebars->5->7",
13097 - "login.handlebars->5->7"
13129 + "login.handlebars->5->7",
13130 + "login2.handlebars->7->7"
13131 ]
13132 },
13133 {
@@ -13374,6 +13407,12 @@
13407 "default.handlebars->27->1081"
13408 ]
13409 },
13410 + {
13411 + "en": "File",
13412 + "xloc": [
13413 + "download2.handlebars->centralTable->1->0->1->filetable->1->0->1->fileimagelink"
13414 + ]
13415 + },
13416 {
13417 "cs": "Editor souborů",
13418 "de": "Datei-Editor",
@@ -13740,7 +13779,8 @@
13779 "zh-cht": "忘記密碼?",
13780 "xloc": [
13781 "login-mobile.handlebars->5->22",
13743 - "login.handlebars->5->22"
13782 + "login.handlebars->5->22",
13783 + "login2.handlebars->7->22"
13784 ]
13785 },
13786 {
@@ -13780,7 +13820,8 @@
13820 "zh-chs": "忘記用戶名/密碼了嗎?",
13821 "zh-cht": "忘記用戶名/密碼了嗎?",
13822 "xloc": [
13783 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->resetAccountDiv->resetAccountSpan"
13823 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->resetAccountDiv->resetAccountSpan",
13824 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->resetAccountDiv->resetAccountSpan"
13825 ]
13826 },
13827 {
@@ -14621,7 +14662,9 @@
14662 "login-mobile.handlebars->5->29",
14663 "login-mobile.handlebars->5->33",
14664 "login.handlebars->5->29",
14624 - "login.handlebars->5->33"
14665 + "login.handlebars->5->33",
14666 + "login2.handlebars->7->29",
14667 + "login2.handlebars->7->33"
14668 ]
14669 },
14670 {
@@ -15394,7 +15437,8 @@
15437 "zh-cht": "IP位址已封鎖,請稍後再試。",
15438 "xloc": [
15439 "login-mobile.handlebars->5->19",
15397 - "login.handlebars->5->19"
15440 + "login.handlebars->5->19",
15441 + "login2.handlebars->7->19"
15442 ]
15443 },
15444 {
@@ -15660,7 +15704,8 @@
15704 "zh-cht": "如果有效,請重置已發送的郵件。",
15705 "xloc": [
15706 "login-mobile.handlebars->5->1",
15663 - "login.handlebars->5->1"
15707 + "login.handlebars->5->1",
15708 + "login2.handlebars->7->1"
15709 ]
15710 },
15711 {
@@ -17013,7 +17058,8 @@
17058 "zh-cht": "無效的帳戶創建令牌。",
17059 "xloc": [
17060 "login-mobile.handlebars->5->8",
17016 - "login.handlebars->5->8"
17061 + "login.handlebars->5->8",
17062 + "login2.handlebars->7->8"
17063 ]
17064 },
17065 {
@@ -17034,7 +17080,15 @@
17080 "zh-cht": "不合規電郵。",
17081 "xloc": [
17082 "login-mobile.handlebars->5->11",
17037 - "login.handlebars->5->11"
17083 + "login.handlebars->5->11",
17084 + "login2.handlebars->7->11"
17085 + ]
17086 + },
17087 + {
17088 + "en": "Invalid file link",
17089 + "xloc": [
17090 + "download.handlebars->3->3",
17091 + "download2.handlebars->5->3"
17092 ]
17093 },
17094 {
@@ -17075,7 +17129,8 @@
17129 "zh-cht": "令牌無效,請重試。",
17130 "xloc": [
17131 "login-mobile.handlebars->5->13",
17078 - "login.handlebars->5->13"
17132 + "login.handlebars->5->13",
17133 + "login2.handlebars->7->13"
17134 ]
17135 },
17136 {
@@ -19130,7 +19185,9 @@
19185 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->5->1",
19186 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->7->1->4->3",
19187 "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->5->1",
19133 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->7->1->4->3"
19188 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->7->1->4->3",
19189 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->5->1->6->1",
19190 + "login2.handlebars->centralTable->1->0->logincell->tokenpanel->1->7->1->2->1->1"
19191 ]
19192 },
19193 {
@@ -19144,7 +19201,8 @@
19201 "zh-cht": "使用現有帳戶登錄",
19202 "xloc": [
19203 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->authStrategies->3",
19147 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->3"
19204 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->3",
19205 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->authStrategies->3"
19206 ]
19207 },
19208 {
@@ -19186,7 +19244,8 @@
19244 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->resettokenpanel->1->5->1->2->1->1",
19245 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->1",
19246 "login.handlebars->container->column_l->centralTable->1->0->logincell->resettokenpanel->1->5->1->2->1->1",
19189 - "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->4->1->1"
19247 + "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->4->1->1",
19248 + "login2.handlebars->centralTable->1->0->logincell->resettokenpanel->1->5->1->2->1->1"
19249 ]
19250 },
19251 {
@@ -19243,7 +19302,8 @@
19302 "zh-cht": "登錄失敗,請檢查用戶名和密碼。",
19303 "xloc": [
19304 "login-mobile.handlebars->5->17",
19246 - "login.handlebars->5->17"
19305 + "login.handlebars->5->17",
19306 + "login2.handlebars->7->17"
19307 ]
19308 },
19309 {
@@ -19265,7 +19325,8 @@
19325 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->resettokenpanel->1->5->1->0->1",
19326 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->0->1",
19327 "login.handlebars->container->column_l->centralTable->1->0->logincell->resettokenpanel->1->5->1->0->1",
19268 - "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->0->1"
19328 + "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->0->1",
19329 + "login2.handlebars->centralTable->1->0->logincell->resettokenpanel->1->5->1->0->1"
19330 ]
19331 },
19332 {
@@ -20204,7 +20265,8 @@
20265 "zh-cht": "最大長度為{0}",
20266 "xloc": [
20267 "login-mobile.handlebars->5->37",
20207 - "login.handlebars->5->37"
20268 + "login.handlebars->5->37",
20269 + "login2.handlebars->7->37"
20270 ]
20271 },
20272 {
@@ -20976,7 +21038,8 @@
21038 "zh-cht": "最小長度為{0}",
21039 "xloc": [
21040 "login-mobile.handlebars->5->36",
20979 - "login.handlebars->5->36"
21041 + "login.handlebars->5->36",
21042 + "login2.handlebars->7->36"
21043 ]
21044 },
21045 {
@@ -23215,6 +23278,7 @@
23278 "desktop.handlebars->p11->dialog->idx_dlgButtonBar",
23279 "login-mobile.handlebars->dialog->idx_dlgButtonBar",
23280 "login.handlebars->dialog->idx_dlgButtonBar",
23281 + "login2.handlebars->dialog->idx_dlgButtonBar",
23282 "player.handlebars->p11->dialog->idx_dlgButtonBar",
23283 "xterm.handlebars->p11->dialog->idx_dlgButtonBar"
23284 ]
@@ -23913,6 +23977,8 @@
23977 "default.handlebars->27->289",
23978 "default.handlebars->27->320",
23979 "default.handlebars->27->741",
23980 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->5->1->2->1",
23981 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->5->1->2->1",
23982 "mstsc.handlebars->main->1->3->1->6->1->0",
23983 "mstsc.handlebars->main->1->3->1->6->3"
23984 ]
@@ -23935,7 +24001,9 @@
24001 "zh-cht": "密碼提示",
24002 "xloc": [
24003 "login-mobile.handlebars->5->27",
23938 - "login.handlebars->5->27"
24004 + "login.handlebars->5->27",
24005 + "login2.handlebars->7->27",
24006 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->5->1->4->1"
24007 ]
24008 },
24009 {
@@ -23957,7 +24025,9 @@
24025 "xloc": [
24026 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->resetpasswordpanel->1->7->1->resetpasswordpanelHint->rnuHint",
24027 "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->createPanelHint->nuHint",
23960 - "login.handlebars->container->column_l->centralTable->1->0->logincell->resetpasswordpanel->1->7->1->resetpasswordpanelHint->rnuHint"
24028 + "login.handlebars->container->column_l->centralTable->1->0->logincell->resetpasswordpanel->1->7->1->resetpasswordpanelHint->rnuHint",
24029 + "login2.handlebars->centralTable->1->0->logincell->createpanel->1->9->1->createPanelHint->nuHint",
24030 + "login2.handlebars->centralTable->1->0->logincell->resetpasswordpanel->1->7->1->resetpasswordpanelHint->rnuHint"
24031 ]
24032 },
24033 {
@@ -23981,7 +24051,10 @@
24051 "login-mobile.handlebars->5->35",
24052 "login.handlebars->5->31",
24053 "login.handlebars->5->35",
23984 - "login.handlebars->5->42"
24054 + "login.handlebars->5->42",
24055 + "login2.handlebars->7->31",
24056 + "login2.handlebars->7->35",
24057 + "login2.handlebars->7->42"
24058 ]
24059 },
24060 {
@@ -24002,7 +24075,8 @@
24075 "zh-cht": "要求更改密碼。",
24076 "xloc": [
24077 "login-mobile.handlebars->5->18",
24005 - "login.handlebars->5->18"
24078 + "login.handlebars->5->18",
24079 + "login2.handlebars->7->18"
24080 ]
24081 },
24082 {
@@ -24100,7 +24174,8 @@
24174 "zh-cht": "密碼被拒絕,請使用其他密碼。",
24175 "xloc": [
24176 "login-mobile.handlebars->5->10",
24103 - "login.handlebars->5->10"
24177 + "login.handlebars->5->10",
24178 + "login2.handlebars->7->10"
24179 ]
24180 },
24181 {
@@ -24155,7 +24230,11 @@
24230 "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->6->nuPass2",
24231 "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->7->1->2->1",
24232 "login.handlebars->container->column_l->centralTable->1->0->logincell->resetpasswordpanel->1->7->1->0->rnuPass1",
24158 - "login.handlebars->container->column_l->centralTable->1->0->logincell->resetpasswordpanel->1->7->1->2->rnuPass2"
24233 + "login.handlebars->container->column_l->centralTable->1->0->logincell->resetpasswordpanel->1->7->1->2->rnuPass2",
24234 + "login2.handlebars->centralTable->1->0->logincell->createpanel->1->9->1->4->nuPass1",
24235 + "login2.handlebars->centralTable->1->0->logincell->createpanel->1->9->1->6->nuPass2",
24236 + "login2.handlebars->centralTable->1->0->logincell->resetpasswordpanel->1->7->1->0->rnuPass1",
24237 + "login2.handlebars->centralTable->1->0->logincell->resetpasswordpanel->1->7->1->2->rnuPass2"
24238 ]
24239 },
24240 {
@@ -25898,7 +25977,8 @@
25977 "zh-cht": "記住此設備{0}天。",
25978 "xloc": [
25979 "login-mobile.handlebars->5->20",
25901 - "login.handlebars->5->20"
25980 + "login.handlebars->5->20",
25981 + "login2.handlebars->7->20"
25982 ]
25983 },
25984 {
@@ -26729,7 +26809,8 @@
26809 "zh-cht": "重發確認郵件",
26810 "xloc": [
26811 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->checkemailpanel->1->checkCheckOperations->1->2->1->1",
26732 - "login.handlebars->container->column_l->centralTable->1->0->logincell->checkemailpanel->1->checkCheckOperations->1->2->1->1"
26812 + "login.handlebars->container->column_l->centralTable->1->0->logincell->checkemailpanel->1->checkCheckOperations->1->2->1->1",
26813 + "login2.handlebars->centralTable->1->0->logincell->checkemailpanel->1->checkCheckOperations->1->2->1->1"
26814 ]
26815 },
26816 {
@@ -26772,7 +26853,8 @@
26853 "zh-cht": "重設帳戶",
26854 "xloc": [
26855 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->resetpanel->1->7->1->2->1->1",
26775 - "login.handlebars->container->column_l->centralTable->1->0->logincell->resetpanel->1->7->1->2->1->1"
26856 + "login.handlebars->container->column_l->centralTable->1->0->logincell->resetpanel->1->7->1->2->1->1",
26857 + "login2.handlebars->centralTable->1->0->logincell->resetpanel->1->7->1->2->1"
26858 ]
26859 },
26860 {
@@ -26793,7 +26875,8 @@
26875 "zh-cht": "重設密碼",
26876 "xloc": [
26877 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->resetpasswordpanel->1->7->1->6->1->1",
26796 - "login.handlebars->container->column_l->centralTable->1->0->logincell->resetpasswordpanel->1->7->1->6->1->1"
26878 + "login.handlebars->container->column_l->centralTable->1->0->logincell->resetpasswordpanel->1->7->1->6->1->1",
26879 + "login2.handlebars->centralTable->1->0->logincell->resetpasswordpanel->1->7->1->6->1->1"
26880 ]
26881 },
26882 {
@@ -26814,7 +26897,8 @@
26897 "zh-cht": "重設帳戶",
26898 "xloc": [
26899 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->resetAccountDiv->3",
26817 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->resetAccountDiv->3"
26900 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->resetAccountDiv->3",
26901 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->resetAccountDiv->3"
26902 ]
26903 },
26904 {
@@ -27280,7 +27364,8 @@
27364 "default.handlebars->27->1798",
27365 "default.handlebars->27->1803",
27366 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3",
27283 - "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->4->1->3"
27367 + "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->4->1->3",
27368 + "login2.handlebars->centralTable->1->0->logincell->tokenpanel->1->7->1->2farow->1->3"
27369 ]
27370 },
27371 {
@@ -27312,7 +27397,8 @@
27397 "zh-cht": "短信已發送。",
27398 "xloc": [
27399 "login-mobile.handlebars->5->4",
27315 - "login.handlebars->5->4"
27400 + "login.handlebars->5->4",
27401 + "login2.handlebars->7->4"
27402 ]
27403 },
27404 {
@@ -27754,7 +27840,9 @@
27840 "login-mobile.handlebars->5->23",
27841 "login-mobile.handlebars->5->25",
27842 "login.handlebars->5->23",
27757 - "login.handlebars->5->25"
27843 + "login.handlebars->5->25",
27844 + "login2.handlebars->7->23",
27845 + "login2.handlebars->7->25"
27846 ]
27847 },
27848 {
@@ -28310,7 +28398,8 @@
28398 "zh-cht": "將令牌發送到註冊的電子郵件地址?",
28399 "xloc": [
28400 "login-mobile.handlebars->5->24",
28313 - "login.handlebars->5->24"
28401 + "login.handlebars->5->24",
28402 + "login2.handlebars->7->24"
28403 ]
28404 },
28405 {
@@ -28326,7 +28415,8 @@
28415 "zh-cht": "將令牌發送到註冊電話號碼?",
28416 "xloc": [
28417 "login-mobile.handlebars->5->26",
28329 - "login.handlebars->5->26"
28418 + "login.handlebars->5->26",
28419 + "login2.handlebars->7->26"
28420 ]
28421 },
28422 {
@@ -29203,7 +29293,8 @@
29293 "zh-cht": "顯示提示",
29294 "xloc": [
29295 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->7->1->4->1->showPassHintLink->0",
29206 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->7->1->4->1->showPassHintLink->0"
29296 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->7->1->4->1->showPassHintLink->0",
29297 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->5->1->4->1->showPassHintLink->0"
29298 ]
29299 },
29300 {
@@ -29408,7 +29499,8 @@
29499 "zh-cht": "使用Azure登錄",
29500 "xloc": [
29501 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->authStrategies->auth-azure",
29411 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-azure"
29502 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-azure",
29503 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-azure"
29504 ]
29505 },
29506 {
@@ -29422,7 +29514,8 @@
29514 "zh-cht": "使用GitHub登錄",
29515 "xloc": [
29516 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->authStrategies->auth-github",
29425 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-github"
29517 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-github",
29518 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-github"
29519 ]
29520 },
29521 {
@@ -29436,7 +29529,8 @@
29529 "zh-cht": "使用Google登錄",
29530 "xloc": [
29531 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->authStrategies->auth-google",
29439 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-google"
29532 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-google",
29533 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-google"
29534 ]
29535 },
29536 {
@@ -29450,7 +29544,8 @@
29544 "zh-cht": "使用英特爾登錄",
29545 "xloc": [
29546 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->authStrategies->auth-intel",
29453 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-intel"
29547 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-intel",
29548 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-intel"
29549 ]
29550 },
29551 {
@@ -29464,7 +29559,8 @@
29559 "zh-cht": "使用JumpCloud登錄",
29560 "xloc": [
29561 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->authStrategies->auth-jumpcloud",
29467 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-jumpcloud"
29562 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-jumpcloud",
29563 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-jumpcloud"
29564 ]
29565 },
29566 {
@@ -29478,7 +29574,8 @@
29574 "zh-cht": "使用Reddit登錄",
29575 "xloc": [
29576 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->authStrategies->auth-reddit",
29481 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-reddit"
29577 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-reddit",
29578 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-reddit"
29579 ]
29580 },
29581 {
@@ -29492,7 +29589,8 @@
29589 "zh-cht": "使用Twitter登錄",
29590 "xloc": [
29591 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->authStrategies->auth-twitter",
29495 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-twitter"
29592 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-twitter",
29593 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-twitter"
29594 ]
29595 },
29596 {
@@ -29587,7 +29685,8 @@
29685 "zh-cht": "單一登入",
29686 "xloc": [
29687 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->authStrategies->auth-saml",
29590 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-saml"
29688 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-saml",
29689 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->authStrategies->auth-saml"
29690 ]
29691 },
29692 {
@@ -30790,7 +30889,9 @@
30889 "login-mobile.handlebars->5->28",
30890 "login-mobile.handlebars->5->32",
30891 "login.handlebars->5->28",
30793 - "login.handlebars->5->32"
30892 + "login.handlebars->5->32",
30893 + "login2.handlebars->7->28",
30894 + "login2.handlebars->7->32"
30895 ]
30896 },
30897 {
@@ -31380,8 +31481,10 @@
31481 "xloc": [
31482 "default.handlebars->container->footer->3->termsLinkFooter",
31483 "download.handlebars->container->page_content->footer->1->1->0->3->1",
31484 + "download2.handlebars->centralTable->1->2->1->1->flink->1",
31485 "login-mobile.handlebars->container->footer->1->1->0->3->1",
31486 "login.handlebars->container->footer->3->termsLinkFooter",
31487 + "login2.handlebars->centralTable->1->2->1->1->flink->1",
31488 "message.handlebars->container->page_content->footer->1->1->0->3->1"
31489 ]
31490 },
@@ -32368,6 +32471,13 @@
32471 "default.handlebars->container->column_l->p12->termTable->1->1->6->1->1->terminalSettingsButtons"
32472 ]
32473 },
32474 + {
32475 + "en": "Token",
32476 + "xloc": [
32477 + "login2.handlebars->centralTable->1->0->logincell->tokenpanel->1->7->1->0->1",
32478 + "login2.handlebars->centralTable->1->0->logincell->tokenpanel->1->7->1->0->1"
32479 + ]
32480 + },
32481 {
32482 "cs": "Nástroje",
32483 "de": "Werkzeuge",
@@ -32844,7 +32954,8 @@
32954 "zh-cht": "無法創建帳戶。",
32955 "xloc": [
32956 "login-mobile.handlebars->5->5",
32847 - "login.handlebars->5->5"
32957 + "login.handlebars->5->5",
32958 + "login2.handlebars->7->5"
32959 ]
32960 },
32961 {
@@ -32903,7 +33014,8 @@
33014 "zh-cht": "無法發送電子郵件。",
33015 "xloc": [
33016 "login-mobile.handlebars->5->14",
32906 - "login.handlebars->5->14"
33017 + "login.handlebars->5->14",
33018 + "login2.handlebars->7->14"
33019 ]
33020 },
33021 {
@@ -33515,7 +33627,8 @@
33627 "zh-cht": "使用安全密鑰",
33628 "xloc": [
33629 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3",
33518 - "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->4->1->3"
33630 + "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->4->1->3",
33631 + "login2.handlebars->centralTable->1->0->logincell->tokenpanel->1->7->1->2farow->1->3"
33632 ]
33633 },
33634 {
@@ -34075,6 +34188,8 @@
34188 "default.handlebars->27->287",
34189 "default.handlebars->27->319",
34190 "default.handlebars->27->740",
34191 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->5->1->0->1",
34192 + "login2.handlebars->centralTable->1->0->logincell->loginpanel->1->5->1->0->1",
34193 "mstsc.handlebars->main->1->3->1->4->1->0",
34194 "mstsc.handlebars->main->1->3->1->4->3",
34195 "player.handlebars->3->4"
@@ -34098,7 +34213,8 @@
34213 "zh-cht": "此用戶名已存在。",
34214 "xloc": [
34215 "login-mobile.handlebars->5->9",
34101 - "login.handlebars->5->9"
34216 + "login.handlebars->5->9",
34217 + "login2.handlebars->7->9"
34218 ]
34219 },
34220 {
@@ -34122,7 +34238,8 @@
34238 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->nuUserRow->1",
34239 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->loginpanel->1->7->1->0->loginusername",
34240 "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->nuUserRow->nuUser",
34125 - "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->7->1->0->loginusername"
34241 + "login.handlebars->container->column_l->centralTable->1->0->logincell->loginpanel->1->7->1->0->loginusername",
34242 + "login2.handlebars->centralTable->1->0->logincell->createpanel->1->9->1->nuUserRow->nuUser"
34243 ]
34244 },
34245 {
@@ -34770,7 +34887,9 @@
34887 "login-mobile.handlebars->5->30",
34888 "login-mobile.handlebars->5->34",
34889 "login.handlebars->5->30",
34773 - "login.handlebars->5->34"
34890 + "login.handlebars->5->34",
34891 + "login2.handlebars->7->30",
34892 + "login2.handlebars->7->34"
34893 ]
34894 },
34895 {
@@ -35605,7 +35724,8 @@
35724 "default-mobile.handlebars->dialog->1->id_dialogclose->0",
35725 "default.handlebars->container->column_l->p1->xdevicesmap->xmapSearchResultsDlg->xmapSearchResultsBck->xmapSearchClose->0",
35726 "login-mobile.handlebars->dialog->1->id_dialogclose->0",
35608 - "login.handlebars->dialog->dialogHeader->id_dialogclose->0"
35727 + "login.handlebars->dialog->dialogHeader->id_dialogclose->0",
35728 + "login2.handlebars->dialog->dialogHeader->id_dialogclose->0"
35729 ]
35730 },
35731 {
@@ -37471,7 +37591,9 @@
37591 "xloc": [
37592 "default-mobile.handlebars->9->119",
37593 "default.handlebars->27->1532",
37474 - "default.handlebars->27->1891"
37594 + "default.handlebars->27->1891",
37595 + "download.handlebars->3->2",
37596 + "download2.handlebars->5->2"
37597 ]
37598 },
37599 {
@@ -37623,7 +37745,8 @@
37745 "zh-cht": "{0}小寫",
37746 "xloc": [
37747 "login-mobile.handlebars->5->39",
37626 - "login.handlebars->5->39"
37748 + "login.handlebars->5->39",
37749 + "login2.handlebars->7->39"
37750 ]
37751 },
37752 {
@@ -37723,7 +37846,8 @@
37846 "zh-cht": "{0}非字母數字",
37847 "xloc": [
37848 "login-mobile.handlebars->5->41",
37726 - "login.handlebars->5->41"
37849 + "login.handlebars->5->41",
37850 + "login2.handlebars->7->41"
37851 ]
37852 },
37853 {
@@ -37744,7 +37868,8 @@
37868 "zh-cht": "{0}數字",
37869 "xloc": [
37870 "login-mobile.handlebars->5->40",
37747 - "login.handlebars->5->40"
37871 + "login.handlebars->5->40",
37872 + "login2.handlebars->7->40"
37873 ]
37874 },
37875 {
@@ -37909,7 +38034,8 @@
38034 "zh-cht": "{0}大寫",
38035 "xloc": [
38036 "login-mobile.handlebars->5->38",
37912 - "login.handlebars->5->38"
38037 + "login.handlebars->5->38",
38038 + "login2.handlebars->7->38"
38039 ]
38040 },
38041 {
views/agentinvite.handlebars
+3 -3
@@ -48,12 +48,12 @@
48 <div id="container">
49 <!-- Begin Masthead -->
50 <div id="masthead" class=noselect style="background:url(logo.png) 0px 0px;background-color:#036;background-repeat:no-repeat;height:66px;width:100%;overflow:hidden;">
51 - <div style="float:left">{{{titlehtml}}}</div>
51 + <div style="float:left;text-shadow: 1px 1px 2px #000">{{{titlehtml}}}</div>
52 <div style="float:left; height: 66px; color:#c8c8c8; padding-left:14px; padding-top:7px">
53 - <strong><font style="font-size:46px; font-family: Arial, Helvetica, sans-serif;">{{{title1}}}</font></strong>
53 + <strong><font style="font-size:46px; font-family: Arial, Helvetica, sans-serif;text-shadow: 1px 1px 2px #000">{{{title1}}}</font></strong>
54 </div>
55 <div style="float:left; height: 66px; color:#c8c8c8; padding-left:5px; padding-top:14px">
56 - <strong><font style="font-size:14px; font-family: Arial, Helvetica, sans-serif;">{{{title2}}}</font></strong>
56 + <strong><font style="font-size:14px; font-family: Arial, Helvetica, sans-serif;text-shadow: 1px 1px 2px #000">{{{title2}}}</font></strong>
57 </div>
58 <p id="logoutControl" style="color:white;font-size:11px;margin: 10px 10px 0;">{{{logoutControl}}}</p>
59 </div>
views/download.handlebars
+28 -4
@@ -14,18 +14,18 @@
14 <div id=container style=max-height:100vh>
15 <div id=mastheadx></div>
16 <div id=masthead style="background:url(logo.png) 0px 0px;background-color:#036;background-repeat:no-repeat;height:66px;width:100%;overflow:hidden">
17 - <div style="float:left">{{{titlehtml}}}</div>
17 + <div style="float:left;text-shadow: 1px 1px 2px #000">{{{titlehtml}}}</div>
18 <div style=float:left;height:66px;color:#c8c8c8;padding-left:14px;padding-top:7px>
19 - <strong><font style="font-size:46px;font-family:Arial,Helvetica,sans-serif">{{{title1}}}</font></strong>
19 + <strong><font style="font-size:46px;font-family:Arial,Helvetica,sans-serif;text-shadow: 1px 1px 2px #000">{{{title1}}}</font></strong>
20 </div>
21 <div style=float:left;height:66px;color:#c8c8c8;padding-left:5px;padding-top:14px>
22 - <strong><font style="font-size:14px;font-family:Arial,Helvetica,sans-serif">{{{title2}}}</font></strong>
22 + <strong><font style="font-size:14px;font-family:Arial,Helvetica,sans-serif;text-shadow: 1px 1px 2px #000">{{{title2}}}</font></strong>
23 </div>
24 </div>
25 <div id=page_content style=max-height:calc(100vh-138px)>
26 <div id=column_l>
27 <h1>Download</h1>
28 - <p style=margin-left:20px>{{{message}}}</p>
28 + <p id="message" style=margin-left:20px></p>
29 <br />
30 </div>
31 <div id=footer>
@@ -41,5 +41,29 @@
41 </div>
42 </div>
43 </div>
44 + <script>
45 + var messageid = parseInt('{{{messageid}}}');
46 + var fileurl = '{{{fileurl}}}';
47 + var filename = '{{{filename}}}';
48 + var filesize = parseInt('{{{filesize}}}');
49 +
50 + // Quick UI functions, a bit of a replacement for jQuery
51 + function Q(x) { return document.getElementById(x); } // "Q"
52 + function QS(x) { try { return Q(x).style; } catch (x) { } } // "Q" style
53 + function QE(x, y) { try { Q(x).disabled = !y; } catch (x) { } } // "Q" enable
54 + function QV(x, y) { try { QS(x).display = (y ? '' : 'none'); } catch (x) { } } // "Q" visible
55 + function QA(x, y) { Q(x).innerHTML += y; } // "Q" append
56 + function QH(x, y) { Q(x).innerHTML = y; } // "Q" html
57 + function QC(x) { try { return Q(x).classList; } catch (x) { } } // "Q" class
58 + function format(format) { var args = Array.prototype.slice.call(arguments, 1); return format.replace(/{(\d+)}/g, function (match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); };
59 + function EscapeHtml(x) { if (typeof x == 'string') return x.replace(/&/g, '&amp;').replace(/>/g, '&gt;').replace(/</g, '&lt;').replace(/"/g, '&quot;').replace(/'/g, '&apos;'); if (typeof x == 'boolean') return x; if (typeof x == 'number') return x; }
60 +
61 + if (messageid == 1) {
62 + var lenstr = (filesize == 1)?format("1 byte"):format("{0} bytes", filesize);
63 + QH('message', '<a href="' + fileurl + '">' + EscapeHtml(filename) + '</a>, ' + lenstr);
64 + } else if (messageid == 2) {
65 + QH('message', "Invalid file link");
66 + }
67 + </script>
68 </body>
69 </html>
\ No newline at end of file
views/download2.handlebars new
+88
@@ -0,0 +1,88 @@
1 +<!DOCTYPE html>
2 +<html lang="en" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
3 +<head>
4 + <meta http-equiv=X-UA-Compatible content="IE=edge" />
5 + <meta content="text/html;charset=utf-8" http-equiv=Content-Type />
6 + <meta name=viewport content="user-scalable=1.0,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0" />
7 + <meta name=apple-mobile-web-app-capable content=yes />
8 + <meta name=format-detection content="telephone=no" />
9 + <link type=text/css href="/styles/style.css" media="screen" rel="stylesheet" title="CSS" />
10 + <link rel="apple-touch-icon" href="/favicon-303x303.png" />
11 + <title>{{{title1}}} - Download</title>
12 + <style>
13 + body {
14 + background-color: cadetblue;
15 + background: linear-gradient(to bottom right, #369, #036);
16 + height:100%;
17 + overflow:hidden;
18 + }
19 +
20 + a:link { color: #c8c8c8; }
21 + a:visited { color: #c8c8c8; }
22 + a:hover { color: #c8c8c8; }
23 + a:active { color: #c8c8c8; }
24 + </style>
25 +</head>
26 +<body>
27 + <img style="position:absolute;left:0;bottom:0;z-index:-1;height:60%;opacity:0.1" src="../../images/login/back.png" />
28 + <table id="centralTable" class="container" style="height:100%;z-index:1">
29 + <tr>
30 + <td style="width:100%;text-align:center">
31 + <div id="message" style="display:none;color:#c8c8c8;font-size:20px"></div>
32 + <table id="filetable" style="margin: 0 auto;color:#c8c8c8">
33 + <tr>
34 + <td>
35 + <a id=fileimagelink>
36 + <img id=fileimage src="../../images/login/file48.png" title="File" loading="lazy" width="48" height="48" style="margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px black;cursor:pointer;background-color:#FFF;margin-right:8px" />
37 + </a>
38 + </td>
39 + <td style="text-align:left">
40 + <div id="flink" style="font-size:22px">
41 + <a id="filelink"></a>
42 + </div>
43 + <div id="filesize" style="font-size:16px"></div>
44 + </td>
45 + </tr>
46 + </table>
47 + </td>
48 + </tr>
49 + <tr style="height:20px">
50 + <td>
51 + <div>
52 + <div id="flink" style="margin-left:4px">{{{footer}}}</div>
53 + <div id="flink" style="float:right;margin-right:4px">{{{rootCertLink}}}&nbsp;<a href=../../terms>Terms &amp; Privacy</a></div>
54 + </div>
55 + </td>
56 + </tr>
57 + </table>
58 + <script>
59 + var messageid = parseInt('{{{messageid}}}');
60 + var fileurl = '{{{fileurl}}}';
61 + var filename = '{{{filename}}}';
62 + var filesize = parseInt('{{{filesize}}}');
63 +
64 + // Quick UI functions, a bit of a replacement for jQuery
65 + function Q(x) { return document.getElementById(x); } // "Q"
66 + function QS(x) { try { return Q(x).style; } catch (x) { } } // "Q" style
67 + function QE(x, y) { try { Q(x).disabled = !y; } catch (x) { } } // "Q" enable
68 + function QV(x, y) { try { QS(x).display = (y ? '' : 'none'); } catch (x) { } } // "Q" visible
69 + function QA(x, y) { Q(x).innerHTML += y; } // "Q" append
70 + function QH(x, y) { Q(x).innerHTML = y; } // "Q" html
71 + function QC(x) { try { return Q(x).classList; } catch (x) { } } // "Q" class
72 + function format(format) { var args = Array.prototype.slice.call(arguments, 1); return format.replace(/{(\d+)}/g, function (match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); };
73 + function EscapeHtml(x) { if (typeof x == 'string') return x.replace(/&/g, '&amp;').replace(/>/g, '&gt;').replace(/</g, '&lt;').replace(/"/g, '&quot;').replace(/'/g, '&apos;'); if (typeof x == 'boolean') return x; if (typeof x == 'number') return x; }
74 +
75 + QV('filetable', messageid == 1);
76 + QV('message', messageid == 2);
77 +
78 + if (messageid == 1) {
79 + QH('filelink', EscapeHtml(filename));
80 + Q('filelink').href = fileurl;
81 + Q('fileimagelink').href = fileurl;
82 + if (filesize == 1) { QH('filesize', format("1 byte")); } else { QH('filesize', format("{0} bytes", filesize)); }
83 + } else if (messageid == 2) {
84 + QH('message', "Invalid file link");
85 + }
86 + </script>
87 +</body>
88 +</html>
\ No newline at end of file
views/error404.handlebars
+3 -3
@@ -14,12 +14,12 @@
14 <div id="container">
15 <!-- Begin Masthead -->
16 <div id="masthead" class=noselect style="background:url(logo.png) 0px 0px;background-color:#036;background-repeat:no-repeat;height:66px;width:100%;overflow:hidden;">
17 - <div style="float:left">{{{titlehtml}}}</div>
17 + <div style="float:left;text-shadow: 1px 1px 2px #000">{{{titlehtml}}}</div>
18 <div style="float:left; height: 66px; color:#c8c8c8; padding-left:16px; padding-top:7px">
19 - <strong><font style="font-size:46px; font-family: Arial, Helvetica, sans-serif;">{{{title1}}}</font></strong>
19 + <strong><font style="font-size:46px; font-family: Arial, Helvetica, sans-serif;text-shadow: 1px 1px 2px #000">{{{title1}}}</font></strong>
20 </div>
21 <div style="float:left; height: 66px; color:#c8c8c8; padding-left:5px; padding-top:14px">
22 - <strong><font style="font-size:14px; font-family: Arial, Helvetica, sans-serif;">{{{title2}}}</font></strong>
22 + <strong><font style="font-size:14px; font-family: Arial, Helvetica, sans-serif;text-shadow: 1px 1px 2px #000">{{{title2}}}</font></strong>
23 </div>
24 </div>
25 <div id="page_leftbar">
views/error4042.handlebars new
+46
@@ -0,0 +1,46 @@
1 +<!DOCTYPE html>
2 +<html lang="en" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
3 +<head>
4 + <meta http-equiv=X-UA-Compatible content="IE=edge" />
5 + <meta content="text/html;charset=utf-8" http-equiv=Content-Type />
6 + <meta name=viewport content="user-scalable=1.0,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0" />
7 + <meta name=apple-mobile-web-app-capable content=yes />
8 + <meta name=format-detection content="telephone=no" />
9 + <link type=text/css href="/styles/style.css" media="screen" rel="stylesheet" title="CSS" />
10 + <link rel="apple-touch-icon" href="/favicon-303x303.png" />
11 + <title>{{{title1}}} - Download</title>
12 + <style>
13 + body {
14 + background-color: cadetblue;
15 + background: linear-gradient(to bottom right, #369, #036);
16 + height: 100%;
17 + overflow: hidden;
18 + }
19 +
20 + a:link { color: #c8c8c8; }
21 + a:visited { color: #c8c8c8; }
22 + a:hover { color: #c8c8c8; }
23 + a:active { color: #c8c8c8; }
24 + </style>
25 +</head>
26 +<body>
27 + <img style="position:absolute;left:0;bottom:0;z-index:-1;height:60%;opacity:0.1" src="../../images/login/back.png" />
28 + <table id="centralTable" class="container" style="height:100%;z-index:1">
29 + <tr>
30 + <td style="width:100%;text-align:center">
31 + <div style="text-align:center;padding-top:30px;font-size:160px;font-family:Arial;color:#bbb"><b>404</b></div>
32 + <div style="text-align:center;font-size:20px;font-family:Arial;color:#999">This page does not exist</div>
33 + <div style="text-align:center;padding-top:20px;font-size:20px;font-family:Arial;color:#999"><a href="/"><b>Go to main site</b></a></div>
34 + </td>
35 + </tr>
36 + <tr style="height:20px">
37 + <td>
38 + <div>
39 + <div id="flink" style="margin-left:4px">{{{footer}}}</div>
40 + <div id="flink" style="float:right;margin-right:4px">{{{rootCertLink}}}&nbsp;<a href=../../terms>Terms &amp; Privacy</a></div>
41 + </div>
42 + </td>
43 + </tr>
44 + </table>
45 +</body>
46 +</html>
\ No newline at end of file
views/invite.handlebars
+3 -3
@@ -48,12 +48,12 @@
48 <div id="container">
49 <!-- Begin Masthead -->
50 <div id="masthead" class=noselect style="background:url(logo.png) 0px 0px;background-color:#036;background-repeat:no-repeat;height:66px;width:100%;overflow:hidden;">
51 - <div style="float:left">{{{titlehtml}}}</div>
51 + <div style="float:left;text-shadow: 1px 1px 2px #000">{{{titlehtml}}}</div>
52 <div style="float:left; height: 66px; color:#c8c8c8; padding-left:14px; padding-top:7px">
53 - <strong><font style="font-size:46px; font-family: Arial, Helvetica, sans-serif;">{{{title1}}}</font></strong>
53 + <strong><font style="font-size:46px; font-family: Arial, Helvetica, sans-serif;text-shadow: 1px 1px 2px #000">{{{title1}}}</font></strong>
54 </div>
55 <div style="float:left; height: 66px; color:#c8c8c8; padding-left:5px; padding-top:14px">
56 - <strong><font style="font-size:14px; font-family: Arial, Helvetica, sans-serif;">{{{title2}}}</font></strong>
56 + <strong><font style="font-size:14px; font-family: Arial, Helvetica, sans-serif;text-shadow: 1px 1px 2px #000">{{{title2}}}</font></strong>
57 </div>
58 <p id="logoutControl" style="color:white;font-size:11px;margin: 10px 10px 0;">{{{logoutControl}}}</p>
59 </div>
views/login2.handlebars
+10 -21
@@ -18,21 +18,10 @@
18 background: linear-gradient(to bottom right, #369, #036);
19 }
20
21 - #flink a:link {
22 - color: #c8c8c8;
23 - }
24 -
25 - #flink a:visited {
26 - color: #c8c8c8;
27 - }
28 -
29 - #flink a:hover {
30 - color: #c8c8c8;
31 - }
32 -
33 - #flink a:active {
34 - color: #c8c8c8;
35 - }
21 + #flink a:link { color: #c8c8c8; }
22 + #flink a:visited { color: #c8c8c8; }
23 + #flink a:hover { color: #c8c8c8; }
24 + #flink a:active { color: #c8c8c8; }
25 </style>
26 </head>
27 <body id="body" onload="if (typeof(startup) !== 'undefined') startup();" class="arg_hide login">
@@ -140,15 +129,15 @@
129 <div>
130 <b>Account Reset</b>
131 </div>
143 - <table>
132 + <table style="width:100%;margin-top:4px;margin-bottom:4px">
133 <tr>
145 - <td align=right width=100>Email:</td>
146 - <td><input id=remail type=text inputmode="email" name=email maxlength=256 onchange=validateReset() onkeyup=validateReset(event) /></td>
134 + <td>
135 + <input id=remail title="Email" style="width:250px;border:0;border-radius:8px;padding:8px;background-color:#FFF8CC" autocomplete="username" placeholder="Email" type=text maxlength=256 name=email onchange=validateReset() onkeyup=validateReset(event) />
136 + </td>
137 </tr>
138 <tr>
149 - <td colspan=2>
150 - <div style=float:right><input id=eresetButton type=submit value="Reset Account" disabled="disabled" /></div>
151 - <div id=passWarning style="padding-top:6px"></div>
139 + <td>
140 + <input id=eresetButton style="width:250px;border:0;border-radius:4px;padding:6px" type=submit value="Reset Account" disabled="disabled" />
141 </td>
142 </tr>
143 </table>
views/message.handlebars
+3 -3
@@ -15,12 +15,12 @@
15 <div id=container style=max-height:100vh>
16 <div id=mastheadx></div>
17 <div id=masthead style="background:url(logo.png) 0px 0px;background-color:#036;background-repeat:no-repeat;height:66px;width:100%;overflow:hidden">
18 - <div style="float:left">{{{titlehtml}}}</div>
18 + <div style="float:left;text-shadow: 1px 1px 2px #000">{{{titlehtml}}}</div>
19 <div style=float:left;height:66px;color:#c8c8c8;padding-left:14px;padding-top:7px>
20 - <strong><font style="font-size:46px;font-family:Arial,Helvetica,sans-serif">{{{title1}}}</font></strong>
20 + <strong><font style="font-size:46px;font-family:Arial,Helvetica,sans-serif;text-shadow: 1px 1px 2px #000">{{{title1}}}</font></strong>
21 </div>
22 <div style=float:left;height:66px;color:#c8c8c8;padding-left:5px;padding-top:14px>
23 - <strong><font style="font-size:14px;font-family:Arial,Helvetica,sans-serif">{{{title2}}}</font></strong>
23 + <strong><font style="font-size:14px;font-family:Arial,Helvetica,sans-serif;text-shadow: 1px 1px 2px #000">{{{title2}}}</font></strong>
24 </div>
25 </div>
26 <div id=page_content style=max-height:calc(100vh-138px)>
views/terms.handlebars
+3 -3
@@ -15,12 +15,12 @@
15 <div id="container">
16 <!-- Begin Masthead -->
17 <div id="masthead" class=noselect style="background:url(logo.png) 0px 0px;background-color:#036;background-repeat:no-repeat;height:66px;width:100%;overflow:hidden;">
18 - <div style="float:left">{{{titlehtml}}}</div>
18 + <div style="float:left;text-shadow: 1px 1px 2px #000">{{{titlehtml}}}</div>
19 <div style="float:left; height: 66px; color:#c8c8c8; padding-left:14px; padding-top:7px">
20 - <strong><font style="font-size:46px; font-family: Arial, Helvetica, sans-serif;">{{{title1}}}</font></strong>
20 + <strong><font style="font-size:46px; font-family: Arial, Helvetica, sans-serif;text-shadow: 1px 1px 2px #000">{{{title1}}}</font></strong>
21 </div>
22 <div style="float:left; height: 66px; color:#c8c8c8; padding-left:5px; padding-top:14px">
23 - <strong><font style="font-size:14px; font-family: Arial, Helvetica, sans-serif;">{{{title2}}}</font></strong>
23 + <strong><font style="font-size:14px; font-family: Arial, Helvetica, sans-serif;text-shadow: 1px 1px 2px #000">{{{title2}}}</font></strong>
24 </div>
25 <p id="logoutControl" style="color:white;font-size:11px;margin: 10px 10px 0;"></p>
26 </div>
webserver.js
+9 -4
@@ -2459,7 +2459,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
2459 if (domain.customui != null) { customui = encodeURIComponent(JSON.stringify(domain.customui)); }
2460
2461 // Render the login page
2462 - render(req, res, getRenderPage('login', req, domain), getRenderArgs({ loginmode: loginmode, rootCertLink: getRootCertLink(), newAccount: newAccountsAllowed, newAccountPass: (((domain.newaccountspass == null) || (domain.newaccountspass == '')) ? 0 : 1), serverDnsName: obj.getWebServerName(domain), serverPublicPort: httpsPort, emailcheck: emailcheck, features: features, sessiontime: args.sessiontime, passRequirements: passRequirements, customui: customui, footer: (domain.footer == null) ? '' : domain.footer, hkey: encodeURIComponent(hardwareKeyChallenge).replace(/'/g, '%27'), messageid: msgid, passhint: passhint, welcometext: domain.welcometext ? encodeURIComponent(domain.welcometext).split('\'').join('\\\'') : null, hwstate: hwstate, otpemail: otpemail, otpsms: otpsms, twoFactorCookieDays: twoFactorCookieDays, authStrategies: authStrategies.join(',') }, req, domain));
2462 + render(req, res, getRenderPage((domain.sitestyle == 2)?'login2':'login', req, domain), getRenderArgs({ loginmode: loginmode, rootCertLink: getRootCertLink(), newAccount: newAccountsAllowed, newAccountPass: (((domain.newaccountspass == null) || (domain.newaccountspass == '')) ? 0 : 1), serverDnsName: obj.getWebServerName(domain), serverPublicPort: httpsPort, emailcheck: emailcheck, features: features, sessiontime: args.sessiontime, passRequirements: passRequirements, customui: customui, footer: (domain.footer == null) ? '' : domain.footer, hkey: encodeURIComponent(hardwareKeyChallenge).replace(/'/g, '%27'), messageid: msgid, passhint: passhint, welcometext: domain.welcometext ? encodeURIComponent(domain.welcometext).split('\'').join('\\\'') : null, hwstate: hwstate, otpemail: otpemail, otpsms: otpsms, twoFactorCookieDays: twoFactorCookieDays, authStrategies: authStrategies.join(',') }, req, domain));
2463 }
2464
2465 // Handle a post request on the root
@@ -2780,10 +2780,12 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
2780 }
2781 try { res.sendFile(obj.path.resolve(__dirname, path)); } catch (e) { res.sendStatus(404); }
2782 } else {
2783 - render(req, res, getRenderPage('download', req, domain), getRenderArgs({ rootCertLink: getRootCertLink(), message: "<a href='" + req.path + "?download=1'>" + filename + "</a>, " + stat.size + " byte" + ((stat.size < 2) ? '' : 's') + "." }, req, domain));
2783 + render(req, res, getRenderPage((domain.sitestyle == 2) ? 'download2' : 'download', req, domain), getRenderArgs({ rootCertLink: getRootCertLink(), messageid: 1, fileurl: req.path + '?download=1', filename: filename, filesize: stat.size }, req, domain));
2784 + //render(req, res, getRenderPage((domain.sitestyle == 2) ? 'download2' : 'download', req, domain), getRenderArgs({ rootCertLink: getRootCertLink(), message: "<a href='" + req.path + "?download=1'>" + filename + "</a>, " + stat.size + " byte" + ((stat.size < 2) ? '' : 's') + "." }, req, domain));
2785 }
2786 } else {
2786 - render(req, res, getRenderPage('download', req, domain), getRenderArgs({ rootCertLink: getRootCertLink(), message: "Invalid file link, please check the URL again." }, req, domain));
2787 + render(req, res, getRenderPage((domain.sitestyle == 2) ? 'download2' : 'download', req, domain), getRenderArgs({ rootCertLink: getRootCertLink(), messageid: 2 }, req, domain));
2788 + //render(req, res, getRenderPage((domain.sitestyle == 2) ? 'download2' : 'download', req, domain), getRenderArgs({ rootCertLink: getRootCertLink(), message: "Invalid file link, please check the URL again." }, req, domain));
2789 }
2790 }
2791
@@ -5116,6 +5118,9 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
5118 });
5119 });
5120
5121 + // Allows agents to transfer files
5122 + obj.agentapp.ws(url + 'devicefile.ashx', function (ws, req) { obj.meshDeviceFileHandler.CreateMeshDeviceFile(obj, ws, null, req, domain); });
5123 +
5124 // Setup agent to/from server file transfer handler
5125 obj.agentapp.ws(url + 'agenttransfer.ashx', handleAgentFileTransfer); // Setup agent to/from server file transfer handler
5126 }
@@ -5143,7 +5148,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
5148 var domain = getDomain(req);
5149 if ((domain == null) || (domain.auth == 'sspi')) { res.sendStatus(404); return; }
5150 if ((domain.loginkey != null) && (domain.loginkey.indexOf(req.query.key) == -1)) { res.sendStatus(404); return; } // Check 3FA URL key
5146 - res.status(404).render(getRenderPage('error404', req, domain), getRenderArgs({}, req, domain));
5151 + res.status(404).render(getRenderPage((domain.sitestyle == 2) ? 'error4042' : 'error404', req, domain), getRenderArgs({}, req, domain));
5152 });
5153 }
5154