+ <%- if not headers or headers["x-luci-login-required"] ~= "yes" then -%> + <%- if sys.process.info("uid") == 0 and sys.user.getuser("root") and not sys.user.getpasswd("root") then -%> +
+

<%:No password set!%>

+

<%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%>

+

<%:Go to password configuration...%>

+
+ <%- end -%> + <%- end -%> diff --git a/universal/data/www/luci-static/resources/menu-tano.js b/universal/data/www/luci-static/resources/menu-tano.js new file mode 100644 index 0000000..cbbe97d --- /dev/null +++ b/universal/data/www/luci-static/resources/menu-tano.js @@ -0,0 +1,27 @@ +'use strict';'require baseclass';'require ui';function Menu(data,rootElement){this.data=data;this.rootElement=document.getElementById(rootElement);this.id="menu-"+Menu.generateId();} +Menu.prototype.render=function(){var node=document.createElement("div");var overlay=document.createElement("div");node.setAttribute("class","menu");node.dataset.menuId=this.id;node.appendChild(new MenuNode({children:this.data.children,isActive:true}).renderChildren());overlay.setAttribute("class","menu-overlay");this.rootElement.appendChild(overlay);this.rootElement.appendChild(node);document.querySelectorAll("[data-menu-id='"+this.id+"'] .menu-container > .menu-label-wrapper").forEach(function(label){label.addEventListener("click",Menu.toggle);});};Menu.generateId=function(){return Math.round(Math.random()*Math.pow(10,10));};Menu.toggle=function(e){Menu.toggleClass(e.currentTarget.parentNode.querySelector("ul"),"expanded");Menu.toggleClass(e.currentTarget.parentNode,"open");};Menu.toggleClass=function(node,className){var currentClasses=(node.getAttribute("class")||'').split(" ");var classIndex=currentClasses.indexOf(className);var newClasses=[];if(classIndex<0){newClasses=currentClasses;newClasses.push(className);}else{newClasses=currentClasses.filter(function(cls){return cls!==className});} +node.setAttribute("class",newClasses.join(" ").trim());};function MenuNode(data){this.data=data;} +MenuNode.prototype.render=function(){var li=document.createElement("li");var liClasses=[];var labelWrapper=document.createElement("span");var text=null;var icon=document.createElement("span");var labelClasses=["menu-label"];labelWrapper.setAttribute("class","menu-label-wrapper");if(this.data.children&&this.data.children.length){icon.setAttribute("class","icon");}else{icon.setAttribute("class","icon placeholder");} +if(this.data.url){text=document.createElement("a");text.setAttribute("href",L.url(this.data.url));}else{text=document.createElement("span");} +labelWrapper.appendChild(icon);labelWrapper.appendChild(text);li.appendChild(labelWrapper);if(this.data.children&&this.data.children.length){liClasses.push("menu-container");li.appendChild(this.renderChildren());if(this.data.isActive){var hasChildActive=false;liClasses.push("open");for(let i=0;i0){li.setAttribute("class",liClasses.join(" "));} +return li;};MenuNode.prototype.renderChildren=function(){var ul=document.createElement("ul");var ulClasses=[];if(this.data.isActive){ulClasses.push("expanded");} +if(ulClasses.length>0){ul.setAttribute("class",ulClasses.join(" "));} +this.data.children.forEach(function(child){ul.appendChild(new MenuNode(child).render());});return ul;};return baseclass.extend({__init__:function(){ui.menu.load().then(L.bind(this.render,this));},renderBreadcrumbs:function(breadcrumbs){var e=document.querySelector('#menu-breadcrumbs');if(breadcrumbs.length<2) +return;var ul=E('ul',{class:'breadcrumbs'});for(let i=1;i0))||(node.action.type=="firstchild")) +node.url=null;return node;}}); \ No newline at end of file diff --git a/universal/data/www/luci-static/tano/cascade.css b/universal/data/www/luci-static/tano/cascade.css new file mode 100644 index 0000000..86b7098 --- /dev/null +++ b/universal/data/www/luci-static/tano/cascade.css @@ -0,0 +1 @@ +a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,main,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}[hidden]{display:none}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}html{color:#333;font-family:Carlito,sans-serif;font-size:14px}body,html{min-height:100vh}body{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;line-height:20px}body.menu-opened{overflow:hidden}h1{font-size:22.4px;line-height:29.12px;margin:12px 0}h1,h2{font-weight:700}h2{font-size:21px;line-height:27.3px;margin:11px 0}h3{font-size:19.6px;line-height:25.48px}h3,h4{font-weight:700;margin:10px 0}h4{font-size:18.2px;line-height:23.66px}h5{font-size:16.8px;line-height:21.84px;margin:9px 0}h5,h6{font-weight:700}h6{font-size:15.4px;line-height:20.02px;margin:8px 0}hr{background-color:#e6e6e6;border:none;color:#e6e6e6;height:1px}em{font-style:italic}strong{font-weight:700}code,pre,tt{font-family:monospace}pre{padding:5px 8px;border:1px solid #e6e6e6;background-color:#f2f2f2;border-radius:5px;font-size:13px}a{color:#008dd2;font-weight:700;text-decoration:none}a:hover{color:#06adff}abbr{cursor:help}p{margin:1rem 0}ul{list-style-type:circle}ol{list-style-type:decimal}ol,ul{margin-left:20px}.container{padding:0 10px;width:100%}@media screen and (min-width:1200px){.container{margin:0 auto;padding:0;width:1160px}}.content,.footer,.header{width:100%}.content{-ms-flex-positive:1;flex-grow:1;margin-top:88px}.content .container,.footer{display:-ms-flexbox;display:flex}.footer{-ms-flex-align:center;align-items:center;background-color:#fff;border-top:1px solid #e6e6e6;-ms-flex-direction:column;flex-direction:column;height:58px;-ms-flex-pack:center;justify-content:center;margin-top:50px;text-align:center;z-index:1}.footer .container{width:auto}.footer .content{color:#ccc;-ms-flex-pack:center;justify-content:center}.footer .content a{text-decoration:none;transition:.3s}@media screen and (min-width:1200px){.footer{z-index:3}}.header{background-color:#fff;box-shadow:0 -2px 5px 3px #b3b3b3;position:fixed;z-index:3}.header .header-controls{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-ms-flex-wrap:wrap;flex-wrap:wrap;height:58px;-ms-flex-pack:justify;justify-content:space-between}@media screen and (min-width:1200px){.header .header-controls{-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap}}.header .menu-icon{cursor:pointer;display:block;height:34px;width:34px}@media screen and (min-width:1200px){.header .menu-icon{display:none}}.content-wrapper,.main-content{-ms-flex-positive:1;flex-grow:1;position:relative}.dn{display:none}.main-content{padding:10px 0 20px;width:100%}@media screen and (min-width:1200px){.main-content{margin-left:250px;width:calc(100% - 250px);padding:20px 0 0 20px}}.main-content>.alert-message.fade-in>div>pre{white-space:pre-wrap}[data-path=login] .main-content{margin-left:0}.left{text-align:left!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.right{text-align:right!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.center{text-align:center!important;-ms-flex-pack:center!important;justify-content:center!important}.top{vertical-align:top!important}.middle{vertical-align:middle!important}.bottom{vertical-align:bottom!important}.nowrap{white-space:nowrap}.logo{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex}.logo img{height:42px}.hidden{display:none!important}.additional-info{background-color:#f2f2f2;border-top:1px solid #e6e6e6;height:30px}.additional-info,.additional-info .container{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex}.additional-info .container{-ms-flex-pack:justify;justify-content:space-between;white-space:nowrap}.additional-info .breadcrumbs-wrapper{margin-right:10px;overflow-x:auto}.additional-info .hostname{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;font-family:monospace;font-size:13px;margin-left:10px;overflow-x:auto}.additional-info .hostname .title{color:#b3b3b3;font-family:Carlito,sans-serif;margin-right:5px}span[data-clickable=true]{cursor:pointer}div.header #indicators{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:flex-start}@media screen and (min-width:1200px){div.header #indicators{-ms-flex-pack:end;justify-content:flex-end}}div.header #indicators span[data-indicator]{margin-left:20px;margin-right:0}@media screen and (min-width:1200px){div.header #indicators span[data-indicator]{margin-left:20px;margin-right:0}}div.header #indicators span[data-indicator][data-indicator=poll-status]{-ms-flex-order:1;order:1}@media screen and (min-width:1200px){div.header #indicators span[data-indicator][data-indicator=poll-status]{-ms-flex-order:2;order:2}}div.header #indicators span[data-indicator][data-indicator=poll-status] .xhr-poll-status{display:-ms-flexbox;display:flex;-ms-flex-flow:row;flex-flow:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-align:center;align-items:center}div.header #indicators span[data-indicator][data-indicator=poll-status] .xhr-poll-status .xhr-poll-label{display:none}@media screen and (min-width:768px){div.header #indicators span[data-indicator][data-indicator=poll-status] .xhr-poll-status .xhr-poll-label{color:gray;display:block;font-weight:700;margin-left:8px}}div.header #indicators span[data-indicator][data-indicator=uci-changes]{-ms-flex-order:2;order:2;-ms-flex-align:center;align-items:center;color:#fff;display:-ms-flexbox;display:flex;font-weight:700;text-decoration:none;background-color:#f80;border-radius:10px;padding:2px 10px;box-shadow:0 1px 3px 0 grey}@media screen and (min-width:1200px){div.header #indicators span[data-indicator][data-indicator=uci-changes]{-ms-flex-order:1;order:1}}div.header #indicators span[data-indicator][data-indicator=uci-changes]:hover{background-color:#f90}div.header #indicators span[data-indicator][data-indicator=uci-changes] .uci-changes-label{display:none;margin-right:4px}@media screen and (min-width:768px){div.header #indicators span[data-indicator][data-indicator=uci-changes] .uci-changes-label{display:inline-block}}div.header #indicators span[data-indicator][data-clickable=true]{cursor:pointer}.xhr-poll-status-active,.xhr-poll-status-inactive{-ms-flex-align:center;align-items:center;color:#fff;cursor:pointer;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;position:relative;width:48px}.xhr-poll-status-active .bar,.xhr-poll-status-inactive .bar{border-radius:8px;height:16px;width:100%}.xhr-poll-status-active .circle,.xhr-poll-status-inactive .circle{-ms-flex-align:center;align-items:center;background-color:#fff;border:1px solid #ccc;border-radius:50%;box-shadow:0 1px 3px 0 gray;display:-ms-flexbox;display:flex;height:28px;-ms-flex-pack:center;justify-content:center;position:absolute;width:28px;top:-6px}.xhr-poll-status-active .circle svg,.xhr-poll-status-inactive .circle svg{height:18px;width:18px}.xhr-poll-status-inactive .bar{background-color:gray;border:1px solid gray}.xhr-poll-status-inactive .circle{left:0}.xhr-poll-status-inactive .circle svg path{fill:gray}.xhr-poll-status-active .bar{background-color:#018a00;border:1px solid #018a00}.xhr-poll-status-active .circle{right:0}.xhr-poll-status-active .circle svg path{fill:#018a00}.add-item{display:-ms-flexbox;display:flex}.tano-copyright{color:#666;text-align:center}#cbi-system-system .cbi-value-field{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row}#cbi-system-system .cbi-value-field #localtime{background-color:#e6e6e6;border:1px solid #ccc;border-radius:5px;color:#666;padding:8px 10px;margin-bottom:5px;text-align:center}#cbi-ddns .cbi-section .cbi-section-node .cbi-tabcontainer[data-tab=logview]>.cbi-value{display:block}.net-diag-output{width:100%;overflow-x:auto}#diag-rc-output{width:100%}#diag-rc-output pre{background-color:#f2f2f2;border:1px solid #ccc;border-radius:5px;overflow:auto;padding:5px 10px}.control-group:not(.cbi-page-actions){display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-preferred-size:100%;flex-basis:100%}.control-group:not(.cbi-page-actions) .cbi-button,.control-group:not(.cbi-page-actions) button{margin-right:4px;margin-bottom:5px}@font-face{font-family:Carlito;font-style:italic;font-weight:400;src:local("Carlito Italic"),local("Carlito-Italic"),url("../tano/fonts/Carlito-Italic.woff2") format("woff2"),url("../tano/fonts/Carlito-Italic.woff") format("woff")}@font-face{font-family:Carlito;font-style:normal;font-weight:700;src:local("Carlito Bold"),local("Carlito-Bold"),url("../tano/fonts/Carlito-Bold.woff2") format("woff2"),url("../tano/fonts/Carlito-Bold.woff") format("woff")}@font-face{font-family:Carlito;font-style:normal;font-weight:400;src:local("Carlito"),url("../tano/fonts/Carlito.woff2") format("woff2"),url("../tano/fonts/Carlito.woff") format("woff")}@font-face{font-family:Carlito;font-style:italic;font-weight:700;src:local("Carlito Bold Italic"),local("Carlito-BoldItalic"),url("../tano/fonts/Carlito-BoldItalic.woff2") format("woff2"),url("../tano/fonts/Carlito-BoldItalic.woff") format("woff")}#menu-json{display:none}.menu-overlay{background-color:#333;bottom:0;left:0;opacity:.8;position:fixed;right:0;top:88px;z-index:2}@media screen and (min-width:1200px){.menu-overlay{display:none}}.menu{background-color:#fff;border-right:1px solid #e6e6e6;bottom:0;left:0;overflow-y:auto;padding:10px 0;position:fixed;top:88px;width:250px;z-index:2}@media screen and (min-width:1200px){.menu{display:block;height:100%;padding:10px 0;position:static}}#sidemenu.dn{display:none}@media screen and (min-width:1200px){#sidemenu{bottom:0;position:fixed;top:88px;z-index:2}#sidemenu.dn{display:block}}.menu a{font-weight:400}.menu li,.menu ul{list-style-type:none;margin:0}.menu ul{display:none}.menu ul:first-child{padding-left:0}.menu-label-wrapper{-ms-flex-align:center;align-items:center;cursor:pointer;display:-ms-flexbox;display:flex;padding:5px 10px}.menu-label-wrapper .menu-label{color:#666;cursor:pointer;display:block;line-height:20px;text-decoration:none;transition:.3s;width:100%}.menu-label-wrapper .menu-label.active,.menu-label-wrapper .menu-label:hover{color:#008dd2}.menu-label-wrapper .menu-label.active{font-weight:bolder}.menu-label-wrapper .icon{border-bottom:5px solid transparent;border-left:5px solid #ccc;border-right:5px solid transparent;border-top:5px solid transparent;display:block;height:0;margin-right:5px;transform-origin:25% 50%;transition:.3s;width:0}.menu-label-wrapper .icon.placeholder{border:none;width:10px}.menu-container.open>.menu-label-wrapper>.icon{transform:rotate(90deg)}ul.expanded{display:block;padding-left:16px}ul.breadcrumbs{color:#b3b3b3;font-size:14px;margin:0}ul.breadcrumbs li{display:inline-block}ul.breadcrumbs li:not(:last-of-type){color:gray}ul.breadcrumbs li:not(:last-of-type):after{content:"\BB";padding:0 4px}.cbi-dropdown{border:1px solid #e6e6e6;border-radius:5px;cursor:pointer;display:-ms-flexbox;display:flex;outline:none;position:relative;width:100%}.cbi-dropdown.btn,.cbi-dropdown.cbi-button{width:auto;padding-right:0;padding-left:28px}@media screen and (min-width:768px){.cbi-dropdown.btn,.cbi-dropdown.cbi-button{padding-left:10px}}.cbi-dropdown.btn>ul:not(.dropdown)>li,.cbi-dropdown.cbi-button>ul:not(.dropdown)>li{-ms-flex-pack:center;justify-content:center}.cbi-dropdown.btn>ul.dropdown,.cbi-dropdown.cbi-button>ul.dropdown{color:#333}.cbi-dropdown.btn>.open,.cbi-dropdown.cbi-button>.open{margin-left:10px;border-left:1px solid;padding:0 10px}.cbi-dropdown>ul,.cbi-dropdown label{margin:0!important}.cbi-dropdown>ul{display:-ms-flexbox;display:flex;list-style:none;overflow-x:hidden;overflow-y:auto;padding:0;width:100%}.cbi-dropdown>ul.preview{display:none}.cbi-dropdown>ul:focus{outline:none}.cbi-dropdown>ul>li{-ms-flex-align:center;align-items:center;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;display:none;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;min-height:32px;overflow:hidden;padding:0 8px;text-overflow:ellipsis;white-space:nowrap}.cbi-dropdown>ul>li:focus{outline:none}.cbi-dropdown>ul>li[unselectable]{cursor:not-allowed;opacity:.5}.cbi-dropdown>ul>li[unselectable]>label{cursor:not-allowed}.cbi-dropdown>ul>li[placeholder]{color:#b3b3b3;display:none}.cbi-dropdown>ul>li>form{display:none;margin:0;padding:0;pointer-events:none}.cbi-dropdown>ul>li>form>input[type=checkbox]{margin:0 8px 0 0}.cbi-dropdown>ul>li img{margin:0 10px;vertical-align:middle}.cbi-dropdown>ul>li em,.cbi-dropdown>ul>li span{margin-right:8px}.cbi-dropdown>ul>li input[type=text]{height:26px;width:100%}@media screen and (min-width:1024px){.cbi-dropdown>ul>li input[type=text]{width:auto}}.cbi-dropdown>ul>li .hide-open{display:block}.cbi-dropdown>ul>li .hide-close{display:none}.cbi-dropdown>.open{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-pack:center;justify-content:center;line-height:32px;padding:0 5px;text-align:center;font-size:19.6px}.cbi-dropdown>.open:focus{outline:none}.cbi-dropdown>.more{color:#b3b3b3;display:none;height:32px;outline:none;padding:0 10px}.cbi-dropdown[empty]>ul{max-width:1px}.cbi-dropdown:focus{box-shadow:0 0 0 1px #008dd2;border:1px solid #008dd2}.cbi-dropdown.cbi-input-invalid{border-color:#db5c65}.cbi-dropdown.cbi-input-invalid:focus{box-shadow:0 0 0 1px #db5c65}.cbi-dropdown>ul:not(.dropdown)>li[display]:not([display="0"]){border-left:1px solid #e6e6e6}.cbi-dropdown:not(.btn):not(.cbi-button)[open]{box-shadow:0 0 0 1px #008dd2;border:1px solid #008dd2}.cbi-dropdown:not(.btn):not(.cbi-button)[open].cbi-input-invalid{border-color:#db5c65;box-shadow:0 0 0 1px #db5c65}.cbi-dropdown[open]>ul.dropdown{box-shadow:0 1px 3px 0 gray;background:#fff;display:block;left:0!important;min-width:100%;position:absolute;right:0!important;width:100%;z-index:1000}@media screen and (min-width:1024px){.cbi-dropdown[open]>ul.dropdown{left:auto!important;max-width:none;min-width:100%;right:auto!important;width:auto}}@media screen and (min-width:1024px){.cbi-dropdown.btn[open]>ul.dropdown,.cbi-dropdown.cbi-button[open]>ul.dropdown{left:0!important}}.cbi-dropdown>ul>li[display],.cbi-dropdown[multiple]>ul>li>label,.cbi-dropdown[multiple][empty]>.more,.cbi-dropdown[multiple][more]>.more,.cbi-dropdown[multiple][open]>ul.dropdown>li,.cbi-dropdown[open]>ul.dropdown>li,.cbi-dropdown[open]>ul.preview{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1}.cbi-dropdown[open]>ul.dropdown>li{border-bottom:1px solid #e6e6e6}.cbi-dropdown[empty]>ul>li,.cbi-dropdown[multiple][open]>ul.dropdown>li>form,.cbi-dropdown[optional][open]>ul.dropdown>li[placeholder]{display:-ms-flexbox;display:flex}.cbi-dropdown[open]>ul.dropdown>li .hide-open{display:none}.cbi-dropdown[open]>ul.dropdown>li .hide-close{display:block}.cbi-dropdown[open]>ul.dropdown>li[selected]{background-color:#e6e6e6}.cbi-dropdown[open]>ul.dropdown>li.focus{background-color:#f2f2f2}.cbi-dropdown[open]>ul.dropdown>li:last-child{border-bottom:none;margin-bottom:0}.cbi-dropdown[disabled]{pointer-events:none;opacity:.7}.td.cbi-value-field .cbi-dropdown{width:auto}.cbi-value-field div[id].cbi-dropdown{-ms-flex-wrap:nowrap;flex-wrap:nowrap}@media screen and (min-width:1024px){.cbi-section-node{padding:4px 0 0}}.cbi-map{margin-bottom:20px}.cbi-map+.cbi-map{margin-top:50px}.cbi-value{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-bottom:10px}@media screen and (min-width:1024px){.cbi-value{display:block}.cbi-value:after,.cbi-value:before{content:"";display:block}.cbi-value:after{clear:both}}.cbi-value-title{color:#4d4d4d;display:block;float:left;font-weight:bolder;margin-bottom:3px;padding-top:7px}@media screen and (min-width:1024px){.cbi-value-title{font-weight:400;margin-bottom:0;margin-right:16px;min-width:303.33333px;text-align:right;width:303.33333px}.cbi-value-title:hover{cursor:pointer}}.cbi-map-descr,.cbi-section-descr,.cbi-tab-descr,.cbi-value-description{color:#999;margin-bottom:8px;margin-top:8px}.cbi-map-descr,.cbi-section-descr,.cbi-tab-descr{line-height:18.2px}.cbi-value-description{font-size:12.6px;line-height:16.38px;margin-top:5px}.cbi-checkbox+.cbi-value-description{margin-top:0}.cbi-section{margin-top:20px}.cbi-section h3,.cbi-section legend{border-bottom:2px solid #008dd2;font-size:16.8px;line-height:24px;margin:10px 0;padding:5px 0;width:100%;font-weight:400}.cbi-section h3{margin-bottom:5px}[data-path=admin-status-overview] .cbi-section h3{font-size:19.6px;font-weight:700;line-height:25.48px;margin:10px 0;border-bottom:none;margin-bottom:5px;padding:0}#cbi-wireless>.cbi-section,.cbi-value>.cbi-section{margin-top:0}#cbi-wireless>.cbi-section .cbi-section .cbi-value[data-name=_freq] .cbi-value-title br{display:none}#cbi-wireless>.cbi-section .cbi-section .cbi-value[data-name=_freq] .cbi-value-field>div{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;width:100%}#cbi-wireless>.cbi-section .cbi-section .cbi-value[data-name=_freq] .cbi-value-field>div label{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;width:100%;margin-bottom:4px}#cbi-wireless>.cbi-section .cbi-section .cbi-value[data-name=_freq] .cbi-value-field>div label select{-ms-flex-preferred-size:auto;flex-basis:auto}#cbi-wireless>.cbi-section .cbi-section .cbi-value[data-name=_freq] .cbi-value-field>div br{display:none}#cbi-wireless>.cbi-section .cbi-section .cbi-value[data-name=txpower] .cbi-value-field>div>span{-ms-flex-preferred-size:100%;flex-basis:100%;margin-top:8px}.cbi-progressbar{box-shadow:0 1px 3px 0 gray;background-color:#e6e6e6;border-radius:12px;height:24px;overflow:hidden;position:relative}.cbi-progressbar div{background-color:#6ccfff;height:100%}.cbi-progressbar:after{-ms-flex-align:center;align-items:center;bottom:0;content:attr(title);display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;left:0;position:absolute;right:0;top:0}.cbi-value-field>.cbi-progressbar{-ms-flex-preferred-size:100%;flex-basis:100%}.cbi-section-actions>div{display:-ms-flexbox;display:flex;text-align:right;-ms-flex-flow:row;flex-flow:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:end;justify-content:flex-end}.cbi-section-actions>div button,.cbi-section-actions>div div.cbi-button,.cbi-section-actions>div input[type=button],.cbi-section-actions>div input[type=submit]{margin-bottom:5px;margin-left:5px;-ms-flex-negative:1;flex-shrink:1;-ms-flex-positive:1;flex-grow:1}.cbi-value-field{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.cbi-value-field .cbi-value-description{width:100%}.cbi-value-field label{display:-ms-flexbox;display:flex;width:100%}.cbi-value-field label .cbi-input-checkbox,.cbi-value-field label .cbi-input-radio{height:20px;margin-right:8px}.cbi-value-field>div[id]{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;width:100%}.cbi-value-field>div.cbi-dynlist{display:block;width:100%}.cbi-value-field>div+div{margin-top:5px}.cbi-value-field>:not([id]):not([class]):first-child{padding-top:7px}.cbi-value[data-widget="CBI.ButtonValue"] .cbi-value-field>:first-child{padding-top:0}.cbi-upload-info{color:#01a400;margin:7px 0 5px;width:100%}.cbi-input-radio+label,input[type=radio]+label{display:-ms-inline-flexbox;display:inline-flex;margin-left:5px}.cbi-page-actions{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}@media screen and (min-width:768px){.cbi-page-actions{border-radius:3px;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:end;justify-content:flex-end}}.cbi-page-actions form{display:inline-block}.cbi-page-actions .cbi-button{width:100%;display:-ms-inline-flexbox;display:inline-flex}@media screen and (min-width:768px){.cbi-page-actions .cbi-button{width:auto}}.cbi-page-actions .cbi-button+.cbi-button,.cbi-page-actions form+form{margin-top:5px}@media screen and (min-width:768px){.cbi-page-actions .cbi-button+.cbi-button,.cbi-page-actions form+form{margin-left:6px;margin-top:0}}.cbi-value-field-password{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.cbi-value-field-password input[type=password]{-ms-flex-negative:1;flex-shrink:1;width:auto}.cbi-value-field-password .cbi-value-description:before{width:100%}.cbi-value-field-password .cbi-value-description#passstrength>span{padding-left:4px}.cbi-dynlist .item{border:1px solid #e6e6e6;border-radius:5px;margin:5px 0;padding:5px 10px;pointer-events:none;position:relative;transition:.3s}.cbi-dynlist .item:after{-ms-flex-align:center;align-items:center;background-color:#fff;border-left:1px solid #e6e6e6;bottom:0;color:#d2323e;content:"\D7";cursor:pointer;display:-ms-flexbox;display:flex;padding:5px 10px;pointer-events:auto;position:absolute;right:0;top:0}.cbi-dynlist .item:hover{border-color:#db5c65}.cbi-dynlist.cbi-input-invalid>div>div.cbi-button,.cbi-dynlist.cbi-input-invalid>div>input[type=text]{border:1px solid #db5c65}.cbi-optionals,.cbi-section-create{display:-ms-flexbox;display:flex}@media screen and (min-width:1024px){.cbi-optionals,.cbi-section-create{margin-left:319.33333px}}.cbi-section-create{-ms-flex-pack:end;justify-content:flex-end;margin-top:16px}.cbi-section-create>div{display:-ms-flexbox;display:flex;margin:0 5px 0 10px;width:100%}div#cbi-dhcp-dhcp{margin-top:0}div#cbi-dhcp-dhcp>.cbi-section-create{-ms-flex-flow:row;flex-flow:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;-ms-flex-align:baseline;align-items:baseline;margin-left:0;margin-top:0}div#cbi-dhcp-dhcp>.cbi-section-create>p{margin-bottom:5px;-ms-flex-preferred-size:100%;flex-basis:100%;text-align:center}.cbi-section-remove{margin-top:10px;padding:10px 0}.cbi-section-node+.cbi-section-remove{border-top:1px dotted #ccc;padding:20px 0 10px 10px}.cbi-section-error{border:1px solid;border-radius:5px;padding:5px 10px;background-color:#eeafb4;border-color:#b42732;color:#b42732}.ui-select[data-widget=radio]{margin-top:0;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.ui-select[data-widget=radio][data-orientation=vertical]{-ms-flex-direction:column;flex-direction:column}.ui-select[data-widget=radio]>.cbi-radio{cursor:pointer;margin-right:10px;margin-top:7px;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:start;align-items:flex-start}.ui-select[data-widget=radio]>.cbi-radio>input[type=radio]{margin-top:2px}.ui-select[data-widget=radio]>.cbi-radio>label{display:none!important}.ui-select[data-widget=radio]>.cbi-radio>span{margin-left:6px}[data-tab-title]{display:none}[data-tab-active=true]{display:block}[data-tab-active=false]{display:none}.cbi-tabmenu,.tabs{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:10px 0;padding:0}.cbi-tabmenu li,.tabs li{-ms-flex-align:center;align-items:center;border-bottom:3px solid #e6e6e6;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-positive:1;flex-grow:1;-ms-flex-pack:center;justify-content:center;margin:4px 1px;text-align:center;transition:.3s}.cbi-tabmenu li a,.tabs li a{color:gray;cursor:pointer;display:block;font-size:14.7px;font-weight:400;line-height:20px;padding:8px 10px;text-decoration:none;transition:.3s;white-space:normal;width:100%}.cbi-tabmenu li[data-errors] a,.tabs li[data-errors] a{width:auto}.cbi-tabmenu li[data-errors]:after,.tabs li[data-errors]:after{background-color:#db5c65;border-radius:10px;color:#fff;content:attr(data-errors);height:20px;line-height:20px;padding:0 6px;min-width:14px}.cbi-tabmenu li:hover,.tabs li:hover{background-color:#f2f2f2}.cbi-tabmenu li.active,.cbi-tabmenu li.cbi-tab,.tabs li.active,.tabs li.cbi-tab{border-color:#008dd2}.cbi-tabmenu li.active a,.cbi-tabmenu li.cbi-tab a,.tabs li.active a,.tabs li.cbi-tab a{color:#008dd2}.cbi-tabmenu li.cbi-tab-disabled:hover,.tabs li.cbi-tab-disabled:hover{border-color:#ccc}.cbi-tabmenu>.cbi-tabmenu,.tabs>.cbi-tabmenu{margin-top:-20px}input[type=password],input[type=text],select{color:#333;font-family:Carlito,sans-serif;height:34px;padding:0 10px;width:100%}select{text-overflow:ellipsis}textarea{font-family:monospace;padding:5px 8px;resize:vertical;width:100%}input[type=password],input[type=text],select,textarea{background-color:#fff;border:1px solid #e6e6e6;border-radius:5px;-ms-flex-preferred-size:45%;flex-basis:45%;-ms-flex-positive:1;flex-grow:1;font-size:13px;outline:none;position:relative;transition-duration:.3s;transition-property:border,box-shadow}input[type=password]:focus,input[type=text]:focus,select:focus,textarea:focus{box-shadow:0 0 0 1px #008dd2;border:1px solid #008dd2}input[type=password].cbi-input-invalid,input[type=text].cbi-input-invalid,select.cbi-input-invalid,textarea.cbi-input-invalid{border-color:#db5c65}input[type=password].cbi-input-invalid:focus,input[type=text].cbi-input-invalid:focus,select.cbi-input-invalid:focus,textarea.cbi-input-invalid:focus{box-shadow:0 0 0 1px #db5c65}input[type=password]:-ms-input-placeholder,input[type=text]:-ms-input-placeholder,select:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#b3b3b3}input[type=password]::placeholder,input[type=text]::placeholder,select::placeholder,textarea::placeholder{color:#b3b3b3}.cbi-input-invalid>.cbi-filebrowser,.cbi-input-invalid>button.btn,span.cbi-input-invalid{border:1px solid #db5c65}span.cbi-input-invalid{border-radius:5px;color:#db5c65;padding:3px 6px}input[type=checkbox]{height:34px;margin:0}.cbi-value-field .cbi-checkbox{height:auto;display:-ms-flexbox;display:flex}.cbi-value-field .cbi-checkbox>label{width:auto}.cbi-value-field .cbi-checkbox>span{margin-left:5px;margin-top:10px;margin-right:10px;line-height:1;cursor:pointer}.cbi-value-field br+.cbi-checkbox{-ms-flex-preferred-size:100%;flex-basis:100%}input[type=radio]{margin:0}input[type=file]{cursor:pointer;display:block;margin:5px 0}input[disabled],input[readonly],textarea[disabled],textarea[readonly]{cursor:text}.cbi-dropdown[disabled],.cbi-dynlist[disabled] .item,select[disabled],select[readonly]{cursor:not-allowed;opacity:.7}.cbi-dropdown[disabled],.cbi-dynlist[disabled] .item,input[disabled],input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{background-color:#e6e6e6;border-color:#ccc;opacity:.7}.cbi-dropdown[disabled]:focus,.cbi-dynlist[disabled] .item:focus,input[disabled]:focus,input[readonly]:focus,select[disabled]:focus,select[readonly]:focus,textarea[disabled]:focus,textarea[readonly]:focus{border-color:#ccc;box-shadow:none}.cbi-dynlist[disabled] .item:after{background-color:#e6e6e6;opacity:.7}select[multiple]{height:auto}select[multiple] option{padding:5px 0}input[type=password]+.cbi-button,input[type=text]+.cbi-button,select+.cbi-button{-ms-flex-align:center;align-items:center;border-radius:3px;display:-ms-inline-flexbox;display:inline-flex;margin-bottom:5px;margin-left:3px;text-align:center}input[type=text]+select{width:auto}.cbi-value-error input[type=password],.cbi-value-error input[type=text],.cbi-value-error select,.cbi-value-error textarea{border-color:#db5c65}.cbi-value-error input[type=password]:focus,.cbi-value-error input[type=text]:focus,.cbi-value-error select:focus,.cbi-value-error textarea:focus{box-shadow:0 0 0 1px #db5c65}.cbi-value-error .cbi-value-title{color:#db5c65}.statistics-graph-controls{display:-ms-flexbox;display:flex;width:100%;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between}.statistics-graph-controls div{display:-ms-flexbox;display:flex;-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-direction:row;flex-direction:row}.statistics-graph-controls button{min-width:200px;margin-left:8px}.statistics-graph-controls select{max-width:100%!important}.alert-message{border:0;border-radius:5px;margin:8px 0;padding:5px 8px;box-shadow:0 1px 3px 0 gray;background-color:#e6e6e6;border-color:gray;color:gray}.alert-message a{color:#4d4d4d}.alert-message a:hover{color:#666}.alert-message.info{background-color:#b9e8ff;border-color:#006b9f;color:#006b9f}.alert-message.warning{background-color:#ffe998;border-color:#755b00;color:#755b00}.alert-message.success{background-color:#bdffbd;border-color:#017100;color:#017100}.alert-message.danger,.alert-message.error{background-color:#f7d9db;border-color:#b42732;color:#b42732}span.label{border:0;border-radius:5px;margin:0;padding:2px 6px;box-shadow:0 1px 2px 0 gray;background-color:#e6e6e6;color:gray}span.label.info,span.label.notice{background-color:#b9e8ff;color:#006b9f}span.label.warning{background-color:#ffe998;color:#755b00}span.label.success{background-color:#bdffbd;color:#017100}span.label.danger,span.label.error{background-color:#f7d9db;color:#b42732}.graph-wrapper,.table-wrapper{overflow-x:auto}@media screen and (min-width:1024px){.graph-wrapper,.table-wrapper{overflow-x:inherit}}.table{border-collapse:collapse;display:table;margin-bottom:16px;overflow-x:auto;position:relative}.table,.table input[type=password],.table input[type=text],.table select{width:100%}.td,.th{display:table-cell;line-height:20px;min-width:120px;padding:8px;vertical-align:middle;text-align:left}@media screen and (min-width:1024px){.td,.th{min-width:auto}}.td[width="33%"],.th[width="33%"]{width:33%}.td.cbi-value-field var,.th.cbi-value-field var{color:#008dd2;font-style:italic}.td{border-top:1px solid #e6e6e6!important}.th{background-color:#e6e6e6;font-weight:700}th[data-sortable-row]{cursor:pointer}th[data-sortable-row][data-sort-direction=asc]:after{content:"\A0\25B2"}th[data-sortable-row][data-sort-direction=desc]:after{content:"\A0\25BC"}.tr{display:table-row;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.tr.placeholder{height:30px}.tr.placeholder>.td{font-style:italic;left:0;position:absolute;right:0;text-align:center}.tr.cbi-rowstyle-2{background-color:#f8f8f8}.cbi-section-table-descr{background-color:#f2f2f2}.cbi-section-table-descr .th{background-color:#f2f2f2;color:#666;font-size:11.9px;line-height:17px;padding:5px 8px}.cbi-section-table-titles{background-color:#e6e6e6}.cbi-section-table-descr.named:before,.cbi-section-table-row[data-title]:before,.cbi-section-table-titles.named:before{border-top:1px solid #e6e6e6;content:attr(data-title);display:table-cell;font-weight:700;padding:0 5px;vertical-align:middle}.td.cbi-value-field{display:table-cell;width:auto}.tr.drag-over-above,.tr.drag-over-below{border:2px solid #008dd2;border-width:2px 0 0}.tr.drag-over-below{border-width:0 0 2px}.cbi-value-field .cbi-section.cbi-tblsection{margin-top:10px}.cbi-value-field .cbi-section.cbi-tblsection .table-wrapper{width:100%}.cbi-value-field .cbi-section.cbi-tblsection .table-wrapper .table{margin-bottom:0}.cbi-value-field .cbi-section-create.cbi-tblsection-create{width:100%;margin-top:8px;margin-bottom:8px}.btn,.cbi-button,a.cbi-button,button,input[type=button],input[type=reset],input[type=submit]{box-shadow:0 1px 3px 0 gray;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-align:center;align-items:center;border:none;border-radius:3px;color:#fff;fill:#fff;cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;font-family:Carlito,sans-serif;font-size:14px;font-weight:400;height:34px;-ms-flex-pack:center;justify-content:center;line-height:34px;outline:none;padding:0 10px;transition:.3s;white-space:nowrap}.btn>img,.cbi-button>img,a.cbi-button>img,button>img,input[type=button]>img,input[type=reset]>img,input[type=submit]>img{margin-right:6px}.btn.success{background-color:#018a00}.btn.success:hover{background-color:#01a400}.btn.success:active{background-color:#017100}.btn.info{background-color:#008dd2}.btn.info:hover{background-color:#009eec}.btn.info:active{background-color:#007cb9}.btn.danger{background-color:#f80}.btn.danger:hover{background-color:#ffa033}.btn.danger:active{background-color:#cc6d00}a.btn{color:#fff}.btn,.cbi-button,button{background-color:#006b9f}.btn:hover,.cbi-button:hover,button:hover{background-color:#008dd2}.btn:active,.cbi-button:active,button:active{background-color:#006b9f}.btn.error,.btn.important,.btn.reset,.cbi-button-negative,.cbi-button-remove,.cbi-button-reset,.cbi-section-remove input[type=submit]{background-color:#d2323e}.btn.error:hover,.btn.important:hover,.btn.reset:hover,.cbi-button-negative:hover,.cbi-button-remove:hover,.cbi-button-reset:hover,.cbi-section-remove input[type=submit]:hover{background-color:#d9535d}.btn.error:active,.btn.important:active,.btn.reset:active,.cbi-button-negative:active,.cbi-button-remove:active,.cbi-button-reset:active,.cbi-section-remove input[type=submit]:active{background-color:#b42732}.btn:disabled,.btn[disabled],.cbi-button:disabled,.cbi-button[disabled],button:disabled,button[disabled]{background-color:#e6e6e6;color:#888;fill:#888;cursor:not-allowed}.btn:disabled:active,.btn:disabled:hover,.btn[disabled]:active,.btn[disabled]:hover,.cbi-button:disabled:active,.cbi-button:disabled:hover,.cbi-button[disabled]:active,.cbi-button[disabled]:hover,button:disabled:active,button:disabled:hover,button[disabled]:active,button[disabled]:hover{background-color:#e6e6e6}.cbi-dynlist[disabled] .cbi-button,input.cbi-input-password[disabled]+button[aria-label].cbi-button,input.cbi-input-text[disabled]+button[aria-label].cbi-button{background-color:#e6e6e6;color:#888;fill:#888;cursor:not-allowed}.cbi-dynlist[disabled] .cbi-button:active,.cbi-dynlist[disabled] .cbi-button:hover,input.cbi-input-password[disabled]+button[aria-label].cbi-button:active,input.cbi-input-password[disabled]+button[aria-label].cbi-button:hover,input.cbi-input-text[disabled]+button[aria-label].cbi-button:active,input.cbi-input-text[disabled]+button[aria-label].cbi-button:hover{background-color:#e6e6e6}.uci-change-legend{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:20px;margin-top:8px}.uci-change-legend del,.uci-change-legend ins{text-decoration:none}.uci-change-legend-label{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;white-space:nowrap;width:50%}@media screen and (min-width:1024px){.uci-change-legend-label{width:25%}}.uci-change-legend-label del,.uci-change-legend-label ins{border-radius:5px;display:inline-block;height:32px;margin-bottom:5px;margin-right:5px;width:32px}.uci-change-legend-label ins{background-color:#bdffbd;border:1px solid #02f000}.uci-change-legend-label del{background-color:#f7d9db;border:1px solid #eeafb4}.uci-change-legend-label var{-ms-flex-align:center;align-items:center;background-color:#f2f2f2;border:1px solid #ccc;border-radius:5px;display:-ms-inline-flexbox;display:inline-flex;height:32px;-ms-flex-pack:center;justify-content:center;margin-right:5px;width:32px}.uci-change-legend-label var del,.uci-change-legend-label var ins{display:block;height:22.4px;margin:0;width:22.4px}.uci-change-list{font-family:monospace}.uci-change-list del,.uci-change-list ins{border-radius:5px;display:block;margin:3px 7px;padding:3px 8px;text-decoration:none}.uci-change-list ins{background-color:#bdffbd;border:1px solid #02f000;color:#015700}.uci-change-list del{background-color:#f7d9db;border:1px solid #eeafb4;color:#ab2630}.uci-change-list var{background-color:#f2f2f2;border:1px solid #ccc;border-radius:5px;display:block;margin-bottom:3px;padding:5px}.uci-change-list var del,.uci-change-list var ins{border-radius:5px;margin:0}div[id*=-ifc-description]{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column}div[id*=-ifc-description]>br{display:none}.ifacebadge{-ms-flex-align:center;align-items:center;background-color:#f2f2f2;border:1px solid #ccc;border-radius:5px;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;padding:0 8px;white-space:nowrap}.ifacebadge img{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;height:auto!important;margin:5px 10px;width:auto!important}.ifacebadge>small{line-height:14px;margin:5px 10px;text-align:center;white-space:nowrap}.ifacebadge>small>img{margin-bottom:0;margin-top:0}.ifacebadge>span{padding:5px 10px}.ifacebadge.port-status-link{border:none;padding:0}.ifacebadge.port-status-link>img{margin-left:0}#cbi-wireless-wifi-device .ifacebadge>span{padding:0}#cbi-network-bridge-vlan .ifacebadge.port-status-device,#cbi-network-device td>.ifacebadge{display:inline-block;width:auto;border:0;padding:0 10px;box-shadow:0 1px 3px 0 gray}#cbi-network-bridge-vlan .ifacebadge.port-status-device>.cbi-tooltip-container,#cbi-network-bridge-vlan .ifacebadge.port-status-device>span,#cbi-network-device td>.ifacebadge>.cbi-tooltip-container,#cbi-network-device td>.ifacebadge>span{padding:0}#cbi-network-bridge-vlan .ifacebadge.port-status-device .cbi-tooltip-container>img,#cbi-network-bridge-vlan .ifacebadge.port-status-device>img,#cbi-network-device td>.ifacebadge .cbi-tooltip-container>img,#cbi-network-device td>.ifacebadge>img{margin-right:10px;margin-left:0}.table.assoclist .tr:not(.table-titles) .td{vertical-align:top}.table.assoclist .tr:not(.table-titles) .td>.ifacebadge{white-space:normal}.table.assoclist .tr:not(.table-titles) .td>.ifacebadge>span{line-height:1.2;padding:4px 0}.table.assoclist .tr:not(.table-titles) .td:first-child{white-space:normal}.table.assoclist .tr:not(.table-titles) .td:nth-child(5){white-space:nowrap}.cbi-value-field>.ifacebadge{width:100%}.ifacebox{box-shadow:0 1px 3px 0 gray;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;-ms-flex-direction:column;flex-direction:column;margin:4px;overflow:hidden;border-radius:5px}.ifacebox,.ifacebox .ifacebadge{display:-ms-flexbox;display:flex}.ifacebox .ifacebadge{border:none;border-radius:0;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-ms-flex-pack:justify;justify-content:space-between;padding:0}.ifacebox-head{background-color:#f2f2f2;padding:3px;text-align:center}.ifacebox-head.active strong:after{background-color:#01bd00;border-radius:5px;content:"";display:inline-block;height:10px;margin-left:5px;width:10px}.ifacebox-body{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;text-align:center}.ifacebox-body small{width:100%}.ifacebox-body>span{padding:0 5px}.ifacebox-body.left{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:start;justify-content:flex-start}.ifacebox-body .cbi-tooltip{display:none}@media screen and (min-width:1024px){.ifacebox-body .cbi-tooltip{display:-ms-flexbox;display:flex}}#upstream_status_table,#wifi_status_table,.network-status-table{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between}@media screen and (min-width:768px){#upstream_status_table,#wifi_status_table,.network-status-table{-ms-flex-direction:row;flex-direction:row}}#upstream_status_table .ifacebox,#wifi_status_table .ifacebox,.network-status-table .ifacebox{-ms-flex-positive:1;flex-grow:1}@media screen and (min-width:768px){#upstream_status_table .ifacebox,#wifi_status_table .ifacebox,.network-status-table .ifacebox{-ms-flex-preferred-size:48%;flex-basis:48%;-ms-flex-positive:0;flex-grow:0}}#upstream_status_table .ifacebox-body>span,#wifi_status_table .ifacebox-body>span,.network-status-table .ifacebox-body>span{-ms-flex-order:1;order:1;padding:10px}.zonebadge{-ms-flex-align:center;align-items:center;border-radius:5px;display:-ms-flexbox;display:flex;padding:3px 8px}.zonebadge .ifacebadge{background:transparent;border:none}#cbi-firewall .td .zonebadge{display:inline-block;padding:0 4px;line-height:18px}#cbi-firewall .td .zonebadge.zonebadge-empty{padding:0}.zone-forwards{display:-ms-flexbox;display:flex}.zone-forwards>span{padding:0 4px}#cbi-network-interface .table .td{vertical-align:top!important}#modal_overlay{background:rgba(0,0,0,.7);bottom:0;left:-10000px;opacity:0;overflow-y:auto;position:fixed;right:10000px;top:0;transition:opacity .125s ease-in;z-index:900}.modal{-ms-flex-align:center;align-items:center;background-color:#fff;border-radius:12.5px;display:block;margin:5em auto;max-width:1044px;min-height:32px;min-width:232px;padding:1.2em 1em;width:90vw;box-shadow:0 5px 10px 0 rgba(0,0,0,.5)}.modal pre,.modal textarea{overflow:auto;white-space:pre-wrap}.modal>pre,.modal>textarea{margin-bottom:1em}.modal>*{display:block;width:100%;line-height:normal}.modal>.table{display:table}.modal>h4{margin-top:0}body.modal-overlay-active{height:100vh;overflow:hidden}body.modal-overlay-active #modal_overlay{left:0;opacity:1;right:0}.cbi-tooltip{background-color:#fff;border-radius:5px;opacity:0;padding:3px 5px;position:absolute;transition:opacity .3s;z-index:999;left:-10000px;box-shadow:0 1px 3px 0 gray}.cbi-tooltip.error{background-color:#db5c65;border-color:#ab2630;color:#fff}.cbi-tooltip-container{cursor:help}.cbi-tooltip-container .cbi-tooltip{border:none;cursor:default;pointer-events:none}.cbi-tooltip-container .cbi-tooltip.ifacebadge{border-radius:5px;background-color:#fff;-ms-flex-direction:row;flex-direction:row}.cbi-tooltip-container:hover .cbi-tooltip{left:auto;display:-ms-flexbox;display:flex;opacity:1;pointer-events:all}.cbi-tooltip-container.references .cbi-tooltip li{white-space:nowrap}.cbi-tooltip-container.references .cbi-tooltip ul{margin-left:0}.spinning{padding-left:32px!important;position:relative}.spinning:before{background:url(../resources/icons/loading.gif) no-repeat 50%;background-size:16px;bottom:0;content:" ";left:0;position:absolute;top:0;width:32px}.cbi-filebrowser{width:100%;min-width:210px;max-width:100%;border:1px solid #e6e6e6;border-radius:5px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;opacity:0;height:0;overflow:hidden;padding-bottom:2px}.cbi-filebrowser.open{opacity:1;height:auto;overflow:visible}.cbi-filebrowser>*{max-width:100%;overflow:hidden;text-overflow:ellipsis;padding:0 0 .25em;margin:.25em .25em 0;white-space:nowrap;border-bottom:1px solid #e6e6e6}.cbi-filebrowser>div{border-bottom:none}.cbi-filebrowser .cbi-button-positive{margin-right:.25em}.cbi-filebrowser>ul{max-height:300px;overflow-y:scroll;overflow-x:auto}.cbi-filebrowser>ul>em{margin-right:24px}.cbi-filebrowser>ul>li{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row}.cbi-filebrowser>ul>li:hover{background:#f5f5f5}.cbi-filebrowser>ul>li>div:first-child{overflow:hidden;text-overflow:ellipsis}.cbi-filebrowser>ul>li>div.name{-ms-flex-preferred-size:200px;flex-basis:200px;min-width:200px}.cbi-filebrowser>ul>li>div.mtime,.cbi-filebrowser>ul>li>div.name{margin:.1em 8px .1em 0}.cbi-filebrowser>ul>li>div.name>a{font-weight:400}.cbi-filebrowser>ul>li>div:last-child{text-align:right;margin-right:4px;margin-left:auto}.cbi-filebrowser>ul>li>div:last-child>button{margin:.1em 0 .1em .25em;padding:0 6px;height:16px;line-height:16px;font-size:12.6px}.cbi-filebrowser>ul>li.cbi-filebrowser-selected{background-color:#e0e0e0}.cbi-filebrowser>ul>li.cbi-filebrowser-selected .mtime,.cbi-filebrowser>ul>li.cbi-filebrowser-selected .name>a{color:#606060;font-weight:400!important}.cbi-filebrowser .upload{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -.125em .25em;padding:0 0 .125em;border-bottom:1px solid #e6e6e6}.cbi-filebrowser .upload>*{margin:.125em;-ms-flex:1;flex:1}.cbi-filebrowser .upload>.btn{-ms-flex-preferred-size:60px;flex-basis:60px}.cbi-filebrowser .upload>div{-ms-flex:10;flex:10;min-width:150px}.cbi-filebrowser .upload>div>input{width:100%}[data-path=admin-system-opkg] #modal_overlay .modal label{margin:8px 0}[data-path=admin-system-opkg] #modal_overlay .modal label>input[type=checkbox]{vertical-align:middle;margin-right:4px;height:inherit}[data-path=admin-system-opkg] #modal_overlay .modal ul{width:auto}[data-path=admin-system-opkg] #modal_overlay .modal ul.errors{margin-bottom:16px}[data-path=admin-system-opkg] #modal_overlay .modal ul.deps{padding-right:16px}[data-path=admin-system-opkg] #modal_overlay .modal ul.deps li>span{white-space:normal}[data-path=admin-system-opkg] #modal_overlay .modal ul.deps span.label{font-weight:700;font-size:80%;text-transform:uppercase;padding:0 6px;margin-left:4px}[data-path=admin-system-opkg] .main-content .table ins{background-color:#cef}[data-path=admin-system-opkg] .main-content .controls{-ms-flex-pack:justify;justify-content:space-between}[data-path=admin-system-opkg] .main-content .controls>div{-ms-flex-item-align:start;align-self:flex-start;padding:0 0 10px}[data-path=admin-system-opkg] .main-content .controls>div:first-child{-ms-flex-order:1;order:1}[data-path=admin-system-opkg] .main-content .controls>div:nth-child(2){-ms-flex-order:4;order:4;-ms-flex-preferred-size:100%;flex-basis:100%}[data-path=admin-system-opkg] .main-content .controls>div:nth-child(3){-ms-flex-order:3;order:3}[data-path=admin-system-opkg] .main-content .controls>div:nth-child(2),[data-path=admin-system-opkg] .main-content .controls>div:nth-child(3){-ms-flex-preferred-size:100%;flex-basis:100%}[data-path=admin-system-opkg] .main-content .controls>div:nth-child(2)>button,[data-path=admin-system-opkg] .main-content .controls>div:nth-child(3)>button{-ms-flex-preferred-size:120px;flex-basis:120px;-ms-flex-positive:0;flex-grow:0}[data-path=admin-system-opkg] .main-content .controls>div:nth-child(4){-ms-flex-order:2;order:2;margin-right:-.125em}[data-path=admin-system-opkg] .main-content .controls>div:nth-child(4)>button{margin-bottom:5px}[data-path=admin-system-opkg] .main-content .controls>div:nth-child(4):after{content:"\A0"}[data-path=admin-system-opkg] .main-content .controls>div>button{margin-bottom:0}[data-path=admin-system-opkg] .main-content .controls>div#pager>button{-ms-flex-positive:0;flex-grow:0;-ms-flex-preferred-size:50px;flex-basis:50px}div.cbi-section[data-tab=ipv6]>div.head,div.cbi-section[data-tab=layer7]>div.head,div.cbi-section[data-tab=traffic]>div.head{margin-bottom:20px} diff --git a/universal/data/www/luci-static/tano/fa-bars.svg b/universal/data/www/luci-static/tano/fa-bars.svg new file mode 100644 index 0000000..2f38b87 --- /dev/null +++ b/universal/data/www/luci-static/tano/fa-bars.svg @@ -0,0 +1,4 @@ + + + + diff --git a/universal/data/www/luci-static/tano/favicon.png b/universal/data/www/luci-static/tano/favicon.png new file mode 100644 index 0000000..bb53696 Binary files /dev/null and b/universal/data/www/luci-static/tano/favicon.png differ diff --git a/universal/data/www/luci-static/tano/fonts/Carlito-Bold.woff b/universal/data/www/luci-static/tano/fonts/Carlito-Bold.woff new file mode 100644 index 0000000..7eb480e Binary files /dev/null and b/universal/data/www/luci-static/tano/fonts/Carlito-Bold.woff differ diff --git a/universal/data/www/luci-static/tano/fonts/Carlito-Bold.woff2 b/universal/data/www/luci-static/tano/fonts/Carlito-Bold.woff2 new file mode 100644 index 0000000..0a4d708 Binary files /dev/null and b/universal/data/www/luci-static/tano/fonts/Carlito-Bold.woff2 differ diff --git a/universal/data/www/luci-static/tano/fonts/Carlito-BoldItalic.woff b/universal/data/www/luci-static/tano/fonts/Carlito-BoldItalic.woff new file mode 100644 index 0000000..032f676 Binary files /dev/null and b/universal/data/www/luci-static/tano/fonts/Carlito-BoldItalic.woff differ diff --git a/universal/data/www/luci-static/tano/fonts/Carlito-BoldItalic.woff2 b/universal/data/www/luci-static/tano/fonts/Carlito-BoldItalic.woff2 new file mode 100644 index 0000000..7b78906 Binary files /dev/null and b/universal/data/www/luci-static/tano/fonts/Carlito-BoldItalic.woff2 differ diff --git a/universal/data/www/luci-static/tano/fonts/Carlito-Italic.woff b/universal/data/www/luci-static/tano/fonts/Carlito-Italic.woff new file mode 100644 index 0000000..7c2d786 Binary files /dev/null and b/universal/data/www/luci-static/tano/fonts/Carlito-Italic.woff differ diff --git a/universal/data/www/luci-static/tano/fonts/Carlito-Italic.woff2 b/universal/data/www/luci-static/tano/fonts/Carlito-Italic.woff2 new file mode 100644 index 0000000..536dbcc Binary files /dev/null and b/universal/data/www/luci-static/tano/fonts/Carlito-Italic.woff2 differ diff --git a/universal/data/www/luci-static/tano/fonts/Carlito.woff b/universal/data/www/luci-static/tano/fonts/Carlito.woff new file mode 100644 index 0000000..9889ce1 Binary files /dev/null and b/universal/data/www/luci-static/tano/fonts/Carlito.woff differ diff --git a/universal/data/www/luci-static/tano/fonts/Carlito.woff2 b/universal/data/www/luci-static/tano/fonts/Carlito.woff2 new file mode 100644 index 0000000..6497daf Binary files /dev/null and b/universal/data/www/luci-static/tano/fonts/Carlito.woff2 differ diff --git a/universal/data/www/luci-static/tano/logo.png b/universal/data/www/luci-static/tano/logo.png new file mode 100644 index 0000000..f997466 Binary files /dev/null and b/universal/data/www/luci-static/tano/logo.png differ diff --git a/universal/packages.txt b/universal/packages.txt index 921d95f..9caac32 100644 --- a/universal/packages.txt +++ b/universal/packages.txt @@ -53,4 +53,4 @@ usbutils whereis wget zsh - \ No newline at end of file +zoneinfo-asia \ No newline at end of file diff --git a/zerowrt.sh b/zerowrt.sh index 2129638..6282300 100755 --- a/zerowrt.sh +++ b/zerowrt.sh @@ -17,18 +17,26 @@ export R=20 export C=70 export OPENWRT_ORIGINAL_URL="https://downloads.openwrt.org/releases" -error() { +error () { ${PRIN} "$1 ! ${CROSS}\n" exit } +errorClean () { + ${PRIN} "$1 ! ${CROSS}\n" + cd .. + rm -rf openwrt-imagebuilder* + exit +} + # Select OpenWrt version from official repository OPENWRT_VERSION () { DIALOG_VERSION=$(whiptail --title "Openwrt Version" \ - --radiolist "Choose your version" ${R} ${C} 3 \ - "21.02.3" "Latest Stable Release" ON \ - "19.07.9" "Old Stable Release" OFF \ - "18.06.9" "Old Stable Archive" OFF \ + --radiolist "Choose your version" ${R} ${C} 4 \ + "22.03.2" "Latest Stable Release" ON \ + "21.02.5" "Old Stable Release" OFF \ + "19.07.10" "Old Stable Archive" OFF \ + "18.06.9" "Very Old Stable Archive" OFF \ 3>&1 1>&2 2>&3) if [ $? = 0 ] ; then @@ -37,11 +45,9 @@ OPENWRT_VERSION () { error "Operation Canceled" fi - if [[ ${DIALOG_VERSION} = 19.* ]] ; then - export OPENWRT_RASPI="brcm2708" - elif [[ ${DIALOG_VERSION} = 18.* ]] ; then + if [[ ${DIALOG_VERSION} = 18.* || ${DIALOG_VERSION} = 19.* ]] ; then export OPENWRT_RASPI="brcm2708" - elif [[ ${DIALOG_VERSION} = 21.* ]] ; then + elif [[ ${DIALOG_VERSION} = 21.* || ${DIALOG_VERSION} = 22.* ]] ; then export OPENWRT_RASPI="bcm27xx" fi } @@ -135,7 +141,7 @@ OPENWRT_IPADDR () { OPENWRT_TUNNEL () { whiptail --title "Select tunnel package" \ --checklist --separate-output "Choose your package" ${R} ${C} 4 \ - "Openclash" "" ON \ + "OpenClash" "" ON \ "Openvpn" "" OFF \ "Wireguard" "" OFF \ "Xderm" "" OFF \ @@ -143,8 +149,8 @@ OPENWRT_TUNNEL () { while read dTunnel ; do case "$dTunnel" in - Openclash) - Openclash + OpenClash) + OpenClash ;; Openvpn) Openvpn @@ -193,39 +199,39 @@ export ROOT_DIR="${IMAGEBUILDER_DIR}/files" export HOME_DIR="${ROOT_DIR}/root" # Prepare imagebuilder ${PRIN} " %b %s ... " "${INFO}" "Downloading Imagebuilder" - wget -q ${IMAGEBUILDER_URL} || error "Failed to download imagebuilder !" + wget -q ${IMAGEBUILDER_URL} || error "Failed to download imagebuilder" ${SLP} ${PRIN} "%b\\n" "${TICK}" ${PRIN} " %b %s ... " "${INFO}" "Extracting Imagebuilder" - tar xf ${IMAGEBUILDER_FILE} || error "Failed to extract file !" + tar xf ${IMAGEBUILDER_FILE} || error "Failed to extract file" ${SLP} ${PRIN} "%b\\n" "${TICK}" ${PRIN} " %b %s ... " "${INFO}" "Removing Imagebuilder" - rm ${IMAGEBUILDER_FILE} || error "Failed to remove file !" + rm ${IMAGEBUILDER_FILE} || error "Failed to remove file" ${SLP} ${PRIN} "%b\\n" "${TICK}" export DIR_TYPE="universal/" - cp $(pwd)/${DIR_TYPE}/disabled.txt ${IMAGEBUILDER_DIR} || error "Failed to copy file:disabled.txt !" - cp $(pwd)/${DIR_TYPE}/packages.txt ${IMAGEBUILDER_DIR} || error "Failed to copy file:packages.txt !" + cp $(pwd)/${DIR_TYPE}/disabled.txt ${IMAGEBUILDER_DIR} || error "Failed to copy file:disabled.txt" + cp $(pwd)/${DIR_TYPE}/packages.txt ${IMAGEBUILDER_DIR} || error "Failed to copy file:packages.txt" # export ZEROWRT_DISABLED="$(echo $(cat $(pwd)/${DIR_TYPE}/disabled.txt))" # Prepare data ${PRIN} " %b %s ... " "${INFO}" "Preparing data" - mkdir -p ${ROOT_DIR} || error "Failed to create files/root directory !" - # mkdir -p files/usr/lib/lua/luci/controller files/usr/lib/lua/luci/view || error "Failed to create directory !" - cp -arf $(pwd)/${DIR_TYPE}/data/* ${ROOT_DIR} || error "Failed to copy data !" + mkdir -p ${ROOT_DIR} || error "Failed to create files/root directory" + # mkdir -p files/usr/lib/lua/luci/controller files/usr/lib/lua/luci/view || error "Failed to create directory" + cp -arf $(pwd)/${DIR_TYPE}/data/* ${ROOT_DIR} || error "Failed to copy data" chmod +x ${ROOT_DIR}/usr/bin/neofetch || error "Failed to chmod:neofetch" chmod +x ${ROOT_DIR}/usr/bin/hilink || error "Failed to chmod:hilink" chmod +x ${ROOT_DIR}/etc/zshinit || error "Failed to chmod:zshinit" ${SLP} ${PRIN} "%b\\n" "${TICK}" # Change main directory - cd ${IMAGEBUILDER_DIR} || error "Failed to change directory !" + cd ${IMAGEBUILDER_DIR} || error "Failed to change directory" ${PRIN} " %b %s " "${INFO}" "Current directory : $(pwd)" ${SLP} ${PRIN} "%b\\n" "${TICK}" ${PRIN} " %b %s ... " "${INFO}" "Configure data" - sed -i -e "s/CONFIG_TARGET_KERNEL_PARTSIZE=.*/CONFIG_TARGET_KERNEL_PARTSIZE=${BOOTFS}/" .config || error "Failed to change bootfs size !" - sed -i -e "s/CONFIG_TARGET_ROOTFS_PARTSIZE=.*/CONFIG_TARGET_ROOTFS_PARTSIZE=${ROOTFS}/" .config || error "Failed to change rootfs size !" + sed -i -e "s/CONFIG_TARGET_KERNEL_PARTSIZE=.*/CONFIG_TARGET_KERNEL_PARTSIZE=${BOOTFS}/" .config || error "Failed to change bootfs size" + sed -i -e "s/CONFIG_TARGET_ROOTFS_PARTSIZE=.*/CONFIG_TARGET_ROOTFS_PARTSIZE=${ROOTFS}/" .config || error "Failed to change rootfs size" sed -i -e "s/4.3.2.1/${IP_ADDR}/" files/etc/config/network || error "Failed to change openwrt ip address" ${SLP} ${PRIN} "%b\\n" "${TICK}" @@ -238,6 +244,10 @@ export HOME_DIR="${ROOT_DIR}/root" ${PRIN} " %b %s ... " "${INFO}" "Add Additional Repository" # Disable Signature Verification sed -i 's/option check_signature/# option check_signature/g' repositories.conf + # Repo 21.02.3 packages + ${ECMD} "src/gz old_packages_repos https://downloads.openwrt.org/releases/21.02.3/packages/${ARCH}/packages/" >> repositories.conf + # Repo 21.02.3 base + ${ECMD} "src/gz old_base_repos https://downloads.openwrt.org/releases/21.02.3/packages/${ARCH}/base/" >> repositories.conf # Generic ${ECMD} "src/gz custom_generic https://raw.githubusercontent.com/lrdrdn/my-opkg-repo/main/generic" >> repositories.conf # Architecture @@ -246,7 +256,7 @@ export HOME_DIR="${ROOT_DIR}/root" ${PRIN} "%b\\n" "${TICK}" } -Openclash () { +OpenClash () { # Install openclash ${PRIN} " %b %s ... " "${INFO}" "Preparing OpenClash" # Install luci-app-openclash @@ -300,19 +310,34 @@ EOF # Install requirements cat >> packages.txt << EOL php7 +php7-cli php7-cgi php7-mod-session php7-mod-ctype php7-mod-fileinfo php7-mod-mbstring php7-mod-json +php7-mod-iconv +php7-mod-zip iconv EOL # Kick off TFM - export TFM_Repo="https://github.com/noct99/blog.vpngame.com/raw/main/fileexplorer.zip" + export TFM_Repo="https://github.com/prasathmani/tinyfilemanager/raw/master/tinyfilemanager.php" + export TFM_Conf="https://github.com/prasathmani/tinyfilemanager/raw/master/config-sample.php" export TFM_Dir="files/www" wget -q -P ${TFM_Dir} ${TFM_Repo} || error "Cant download tiny file manager" - unzip ${TFM_Dir}/fileexplorer.zip -d ${TFM_Dir} + wget -q -O ${TFM_Dir}/config.php ${TFM_Conf} || error "Cant download tiny file manager config" + sed -i -e 's/$use_auth = true;/$use_auth = false;/g' \ + -e 's#Etc/UTC#Asia/Jakarta#g' \ + -e 's/?>//g' \ + -e 's#$root_path*#// $root_path*#g' ${TFM_Dir}/config.php + cat >> ${TFM_Dir}/config.php << EOI + +root_path = '../' + +?> +EOI + sed -i -e 's#root_path#$root_path#g' ${TFM_Dir}/config.php export TFM_Lua_Dir="files/usr/lib/lua/luci/controller" export TFM_Html_Dir="files/usr/lib/lua/luci/view" mkdir -p ${TFM_Lua_Dir} @@ -330,7 +355,7 @@ EOF