diff --git a/COPYING b/COPYING new file mode 100644 index 0000000000..ea8112482a --- /dev/null +++ b/COPYING @@ -0,0 +1,12 @@ +OpenWrt is provided under: + + SPDX-License-Identifier: GPL-2.0-only + +Being under the terms of the GNU General Public License version 2 only, +according with: + + LICENSES/GPL-2.0 + +In addition, other licenses may also apply. + +All contributions to OpenWrt are subject to this COPYING file. diff --git a/LICENSES/BSD-2-Clause b/LICENSES/BSD-2-Clause new file mode 100644 index 0000000000..da366e2ce5 --- /dev/null +++ b/LICENSES/BSD-2-Clause @@ -0,0 +1,32 @@ +Valid-License-Identifier: BSD-2-Clause +SPDX-URL: https://spdx.org/licenses/BSD-2-Clause.html +Usage-Guide: + To use the BSD 2-clause "Simplified" License put the following SPDX + tag/value pair into a comment according to the placement guidelines in + the licensing rules documentation: + SPDX-License-Identifier: BSD-2-Clause +License-Text: + +Copyright (c) . All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/LICENSES/BSD-3-Clause b/LICENSES/BSD-3-Clause new file mode 100644 index 0000000000..34c7f057c8 --- /dev/null +++ b/LICENSES/BSD-3-Clause @@ -0,0 +1,36 @@ +Valid-License-Identifier: BSD-3-Clause +SPDX-URL: https://spdx.org/licenses/BSD-3-Clause.html +Usage-Guide: + To use the BSD 3-clause "New" or "Revised" License put the following SPDX + tag/value pair into a comment according to the placement guidelines in + the licensing rules documentation: + SPDX-License-Identifier: BSD-3-Clause +License-Text: + +Copyright (c) . All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/LICENSES/GPL-1.0 b/LICENSES/GPL-1.0 new file mode 100644 index 0000000000..1c50e3b839 --- /dev/null +++ b/LICENSES/GPL-1.0 @@ -0,0 +1,261 @@ +Valid-License-Identifier: GPL-1.0-or-later +Valid-License-Identifier: GPL-1.0+ +SPDX-URL: https://spdx.org/licenses/GPL-1.0.html +Usage-Guide: + The GNU General Public License (GPL) version 1 should not be used in new + code. For existing kernel code the 'or any later version' option is + required to be compatible with the general license of the project: GPLv2. + To use the license in source code, put the following SPDX tag/value pair + into a comment according to the placement guidelines in the licensing + rules documentation: + SPDX-License-Identifier: GPL-1.0-or-later +License-Text: + + GNU GENERAL PUBLIC LICENSE + Version 1, February 1989 + + Copyright (C) 1989 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The license agreements of most software companies try to keep users +at the mercy of those companies. By contrast, our General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. The +General Public License applies to the Free Software Foundation's +software and to any other program whose authors commit to using it. +You can use it for your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Specifically, the General Public License is designed to make +sure that you have the freedom to give away or sell copies of free +software, that you receive source code or can get it if you want it, +that you can change the software or use pieces of it in new free +programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of a such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must tell them their rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any program or other work which +contains a notice placed by the copyright holder saying it may be +distributed under the terms of this General Public License. The +"Program", below, refers to any such program or work, and a "work based +on the Program" means either the Program or any work containing the +Program or a portion of it, either verbatim or with modifications. Each +licensee is addressed as "you". + + 1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this +General Public License and to the absence of any warranty; and give any +other recipients of the Program a copy of this General Public License +along with the Program. You may charge a fee for the physical act of +transferring a copy. + + 2. You may modify your copy or copies of the Program or any portion of +it, and copy and distribute such modifications under the terms of Paragraph +1 above, provided that you also do the following: + + a) cause the modified files to carry prominent notices stating that + you changed the files and the date of any change; and + + b) cause the whole of any work that you distribute or publish, that + in whole or in part contains the Program or any part thereof, either + with or without modifications, to be licensed at no charge to all + third parties under the terms of this General Public License (except + that you may choose to grant warranty protection to some or all + third parties, at your option). + + c) If the modified program normally reads commands interactively when + run, you must cause it, when started running for such interactive use + in the simplest and most usual way, to print or display an + announcement including an appropriate copyright notice and a notice + that there is no warranty (or else, saying that you provide a + warranty) and that users may redistribute the program under these + conditions, and telling the user how to view a copy of this General + Public License. + + d) You may charge a fee for the physical act of transferring a + copy, and you may at your option offer warranty protection in + exchange for a fee. + +Mere aggregation of another independent work with the Program (or its +derivative) on a volume of a storage or distribution medium does not bring +the other work under the scope of these terms. + + 3. You may copy and distribute the Program (or a portion or derivative of +it, under Paragraph 2) in object code or executable form under the terms of +Paragraphs 1 and 2 above provided that you also do one of the following: + + a) accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of + Paragraphs 1 and 2 above; or, + + b) accompany it with a written offer, valid for at least three + years, to give any third party free (except for a nominal charge + for the cost of distribution) a complete machine-readable copy of the + corresponding source code, to be distributed under the terms of + Paragraphs 1 and 2 above; or, + + c) accompany it with the information you received as to where the + corresponding source code may be obtained. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form alone.) + +Source code for a work means the preferred form of the work for making +modifications to it. For an executable file, complete source code means +all the source code for all modules it contains; but, as a special +exception, it need not include source code for modules which are standard +libraries that accompany the operating system on which the executable +file runs, or for standard header files or definitions files that +accompany that operating system. + + 4. You may not copy, modify, sublicense, distribute or transfer the +Program except as expressly provided under this General Public License. +Any attempt otherwise to copy, modify, sublicense, distribute or transfer +the Program is void, and will automatically terminate your rights to use +the Program under this License. However, parties who have received +copies, or rights to use copies, from you under this General Public +License will not have their licenses terminated so long as such parties +remain in full compliance. + + 5. By copying, distributing or modifying the Program (or any work based +on the Program) you indicate your acceptance of this license to do so, +and all its terms and conditions. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the original +licensor to copy, distribute or modify the Program subject to these +terms and conditions. You may not impose any further restrictions on the +recipients' exercise of the rights granted herein. + + 7. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of the license which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +the license, you may choose any version ever published by the Free Software +Foundation. + + 8. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to humanity, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + + To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively convey +the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19xx name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and `show +c'; they could even be mouse-clicks or menu items--whatever suits your +program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program `Gnomovision' (a program to direct compilers to make passes + at assemblers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/LICENSES/GPL-2.0 b/LICENSES/GPL-2.0 new file mode 100644 index 0000000000..607adfc6b2 --- /dev/null +++ b/LICENSES/GPL-2.0 @@ -0,0 +1,419 @@ +Valid-License-Identifier: GPL-2.0-only +Valid-License-Identifier: GPL-2.0 +Valid-License-Identifier: GPL-2.0-or-later +Valid-License-Identifier: GPL-2.0+ +SPDX-URL: https://spdx.org/licenses/GPL-2.0.html +Usage-Guide: + To use this license in source code, put one of the following SPDX + tag/value pairs into a comment according to the placement + guidelines in the licensing rules documentation. + For 'GNU General Public License (GPL) version 2 only' use: + SPDX-License-Identifier: GPL-2.0-only + For 'GNU General Public License (GPL) version 2 or any later version' use: + SPDX-License-Identifier: GPL-2.0-or-later +License-Text: + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/LICENSE b/LICENSES/GPL-3.0 similarity index 100% rename from LICENSE rename to LICENSES/GPL-3.0 diff --git a/LICENSES/ISC b/LICENSES/ISC new file mode 100644 index 0000000000..8953c31420 --- /dev/null +++ b/LICENSES/ISC @@ -0,0 +1,24 @@ +Valid-License-Identifier: ISC +SPDX-URL: https://spdx.org/licenses/ISC.html +Usage-Guide: + To use the ISC License put the following SPDX tag/value pair into a + comment according to the placement guidelines in the licensing rules + documentation: + SPDX-License-Identifier: ISC +License-Text: + +ISC License + +Copyright (c) + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/LICENSES/Linux-syscall-note b/LICENSES/Linux-syscall-note new file mode 100644 index 0000000000..eb170681ba --- /dev/null +++ b/LICENSES/Linux-syscall-note @@ -0,0 +1,25 @@ +SPDX-Exception-Identifier: Linux-syscall-note +SPDX-URL: https://spdx.org/licenses/Linux-syscall-note.html +SPDX-Licenses: GPL-2.0-only, GPL-2.0, GPL-2.0-or-later, GPL-2.0+, GPL-1.0-or-later, GPL-1.0+, LGPL-2.0, LGPL-2.0+, LGPL-2.1, LGPL-2.1+ +Usage-Guide: + This exception is used together with one of the above SPDX-Licenses + to mark user space API (uapi) header files so they can be included + into non GPL compliant user space application code. + To use this exception add it with the keyword WITH to one of the + identifiers in the SPDX-Licenses tag: + SPDX-License-Identifier: WITH Linux-syscall-note +License-Text: + + NOTE! This copyright does *not* cover user programs that use kernel + services by normal system calls - this is merely considered normal use + of the kernel, and does *not* fall under the heading of "derived work". + Also note that the GPL below is copyrighted by the Free Software + Foundation, but the instance of code that it refers to (the Linux + kernel) is copyrighted by me and others who actually wrote it. + + Also note that the only valid version of the GPL as far as the kernel + is concerned is _this_ particular version of the license (ie v2, not + v2.2 or v3.x or whatever), unless explicitly otherwise stated. + + Linus Torvalds + diff --git a/LICENSES/MIT b/LICENSES/MIT new file mode 100644 index 0000000000..f33a68ceb3 --- /dev/null +++ b/LICENSES/MIT @@ -0,0 +1,30 @@ +Valid-License-Identifier: MIT +SPDX-URL: https://spdx.org/licenses/MIT.html +Usage-Guide: + To use the MIT License put the following SPDX tag/value pair into a + comment according to the placement guidelines in the licensing rules + documentation: + SPDX-License-Identifier: MIT +License-Text: + +MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index a3d8549095..81252122de 100644 --- a/README.md +++ b/README.md @@ -46,4 +46,4 @@ Default login address: 192.168.1.1, username is **root** and password is **passw ### See [CONTRIBUTED.md](https://github.com/immortalwrt/immortalwrt/blob/openwrt-18.06/CONTRIBUTED.md). # License -### [GNU General Public License v3.0](https://github.com/immortalwrt/immortalwrt/blob/openwrt-18.06/LICENSE). +### [GNU General Public License v3.0](https://github.com/immortalwrt/immortalwrt/blob/openwrt-18.06/LICENSES/GPL-3.0). diff --git a/include/autotools.mk b/include/autotools.mk index ec67c844f7..4b48b38992 100644 --- a/include/autotools.mk +++ b/include/autotools.mk @@ -62,6 +62,12 @@ define patch_libtool ); endef +define set_libtool_abiver + sed -i \ + -e 's,^soname_spec=.*,soname_spec="\\$$$${libname}\\$$$${shared_ext}.$(PKG_ABI_VERSION)",' \ + -e 's,^library_names_spec=.*,library_names_spec="\\$$$${libname}\\$$$${shared_ext}.$(PKG_ABI_VERSION) \\$$$${libname}\\$$$${shared_ext}",' \ + $(PKG_BUILD_DIR)/libtool +endef PKG_LIBTOOL_PATHS?=$(CONFIGURE_PATH) PKG_AUTOMAKE_PATHS?=$(CONFIGURE_PATH) @@ -110,6 +116,10 @@ ifneq ($(filter libtool,$(PKG_FIXUP)),) endif endif +ifneq ($(filter libtool-abiver,$(PKG_FIXUP)),) + Hooks/Configure/Post += set_libtool_abiver +endif + ifneq ($(filter libtool-ucxx,$(PKG_FIXUP)),) PKG_BUILD_DEPENDS += libtool gettext libiconv ifeq ($(filter no-autoreconf,$(PKG_FIXUP)),) diff --git a/include/feeds.mk b/include/feeds.mk index ef5fef7f4b..98e315bceb 100644 --- a/include/feeds.mk +++ b/include/feeds.mk @@ -43,5 +43,5 @@ endef # 1: package name define GetABISuffix -$(if $(filter-out kmod-%,$(1)),$(if $(Package/$(1)/abiversion),$(if $(filter %0 %1 %2 %3 %4 %5 %6 %7 %8 %9,$(1)),-)$(Package/$(1)/abiversion))) +$(if $(filter-out kmod-%,$(1)),$(if $(ABIV_$(1)),$(ABIV_$(1)),$(foreach v,$(wildcard $(STAGING_DIR)/pkginfo/$(1).version),$(shell cat $(v))))) endef diff --git a/include/package-dumpinfo.mk b/include/package-dumpinfo.mk index 30b0187f11..597452e4b9 100644 --- a/include/package-dumpinfo.mk +++ b/include/package-dumpinfo.mk @@ -21,8 +21,7 @@ $(if $(MENU),Menu: $(MENU) )$(if $(DEFAULT),Default: $(DEFAULT) )$(if $(findstring $(PREREQ_CHECK),1),Prereq-Check: 1 )Version: $(VERSION) -$(if $(ABI_VERSION),ABIVersion: $(ABI_VERSION) -)Depends: $(call PKG_FIXUP_DEPENDS,$(1),$(DEPENDS)) +Depends: $(call PKG_FIXUP_DEPENDS,$(1),$(DEPENDS)) Conflicts: $(CONFLICTS) Menu-Depends: $(MDEPENDS) Provides: $(PROVIDES) diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk index ead4b5742c..a8210f8e31 100644 --- a/include/package-ipkg.mk +++ b/include/package-ipkg.mk @@ -99,7 +99,7 @@ _endef=endef ifeq ($(DUMP),) define BuildTarget/ipkg - ABIV_$(1):=$(call GetABISuffix,$(1)) + ABIV_$(1):=$(if $(filter-out kmod-%,$(1)),$(ABI_VERSION)) PDIR_$(1):=$(call FeedPackageDir,$(1)) IPKG_$(1):=$$(PDIR_$(1))/$(1)$$(ABIV_$(1))_$(VERSION)_$(PKGARCH).ipk IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg-$(PKGARCH)/$(1) @@ -156,7 +156,12 @@ ifeq ($(DUMP),) $(STAGING_DIR_ROOT)/stamp/.$(1)_installed: $(PKG_BUILD_DIR)/.pkgdir/$(1).installed mkdir -p $(STAGING_DIR_ROOT)/stamp - $(if $(ABI_VERSION),echo '$(ABI_VERSION)' | cmp -s - $(PKG_INFO_DIR)/$(1).version || echo '$(ABI_VERSION)' > $(PKG_INFO_DIR)/$(1).version) + $(if $(ABI_VERSION),echo '$(ABI_VERSION)' | cmp -s - $(PKG_INFO_DIR)/$(1).version || { \ + echo '$(ABI_VERSION)' > $(PKG_INFO_DIR)/$(1).version; \ + $(foreach pkg,$(filter-out $(1),$(PROVIDES)), \ + cp $(PKG_INFO_DIR)/$(1).version $(PKG_INFO_DIR)/$(pkg).version; \ + ) \ + } ) $(call locked,$(CP) $(PKG_BUILD_DIR)/.pkgdir/$(1)/. $(STAGING_DIR_ROOT)/,root-copy) touch $$@ diff --git a/include/package.mk b/include/package.mk index 7ed12dd042..fc1bb7d67e 100644 --- a/include/package.mk +++ b/include/package.mk @@ -58,7 +58,7 @@ include $(INCLUDE_DIR)/quilt.mk find_library_dependencies = \ $(wildcard $(patsubst %,$(STAGING_DIR)/pkginfo/%.version, \ - $(sort $(foreach dep4, \ + $(filter-out $(BUILD_PACKAGES), $(sort $(foreach dep4, \ $(sort $(foreach dep3, \ $(sort $(foreach dep2, \ $(sort $(foreach dep1, \ @@ -73,7 +73,7 @@ find_library_dependencies = \ $(Package/$(dep3)/depends) $(dep3) \ )), \ $(Package/$(dep4)/depends) $(dep4) \ - )), \ + ))) \ )) diff --git a/include/prereq-build.mk b/include/prereq-build.mk index 6dce11cba2..f88e853b52 100644 --- a/include/prereq-build.mk +++ b/include/prereq-build.mk @@ -11,8 +11,8 @@ PKG_NAME:=Build dependency # Required for the toolchain $(eval $(call TestHostCommand,working-make, \ - Please install GNU make v3.82 or later. (This version has bugs), \ - $(MAKE) -v | grep -E 'Make (3\.8[2-9]|3\.9[0-9]|[4-9]\.)')) + Please install GNU make v4.1 or later., \ + $(MAKE) -v | grep -E 'Make (4\.[1-9]|[5-9]\.)')) $(eval $(call TestHostCommand,case-sensitive-fs, \ OpenWrt can only be built on a case-sensitive filesystem, \ diff --git a/include/toplevel.mk b/include/toplevel.mk index 744695b19c..48ea44aa24 100644 --- a/include/toplevel.mk +++ b/include/toplevel.mk @@ -4,7 +4,7 @@ PREP_MK= OPENWRT_BUILD= QUIET=0 -export IS_TTY=$(shell tty -s && echo 1 || echo 0) +export IS_TTY=$(if $(MAKE_TERMOUT),1,0) include $(TOPDIR)/include/verbose.mk diff --git a/package/base-files/files/etc/init.d/system b/package/base-files/files/etc/init.d/system index 0e33c522b4..08cf86b97f 100755 --- a/package/base-files/files/etc/init.d/system +++ b/package/base-files/files/etc/init.d/system @@ -27,7 +27,7 @@ system_config() { ln -sf "/usr/share/zoneinfo/$zonename" /tmp/localtime && rm -f /tmp/TZ # apply timezone to kernel - busybox date -k + hwclock -u --systz } reload_service() { diff --git a/package/ctcgfw/chinadns-ng/Makefile b/package/ctcgfw/chinadns-ng/Makefile index 5b42212b80..f470a2f484 100644 --- a/package/ctcgfw/chinadns-ng/Makefile +++ b/package/ctcgfw/chinadns-ng/Makefile @@ -9,16 +9,16 @@ include $(TOPDIR)/rules.mk PKG_NAME:=chinadns-ng -PKG_VERSION:=1.0-beta.23 +PKG_VERSION:=1.0-beta.24 PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/zfl9/chinadns-ng.git -PKG_SOURCE_DATE:=2019-08-30 -PKG_SOURCE_VERSION:=748a043dd7fb7ec71efbb7306f9dd21db5ce560f -PKG_MIRROR_HASH:=c36b8f45e332f95279c67e3c367c5dd92edacd47759ab7be1ab52c325a21821b +PKG_SOURCE_DATE:=2021-02-11 +PKG_SOURCE_VERSION:=df3bb7c6310df9b3c0f874b7a0c38ea5ce0996cb +PKG_MIRROR_HASH:=4b0a159e1ecd81392a67b31528b0430afa991bfceef5dd60d2d843edfccb6b12 -PKG_LICENSE:=GPLv3 +PKG_LICENSE:=GPL-3.0 PKG_LICENSE_FILES:=LICENSE PKG_MAINTAINER:=pexcn diff --git a/package/ctcgfw/luci-app-adguardhome/luasrc/controller/AdGuardHome.lua b/package/ctcgfw/luci-app-adguardhome/luasrc/controller/AdGuardHome.lua index daba814e6a..31cf0d0f06 100644 --- a/package/ctcgfw/luci-app-adguardhome/luasrc/controller/AdGuardHome.lua +++ b/package/ctcgfw/luci-app-adguardhome/luasrc/controller/AdGuardHome.lua @@ -14,7 +14,7 @@ entry({"admin", "services", "AdGuardHome", "getlog"}, call("get_log")) entry({"admin", "services", "AdGuardHome", "dodellog"}, call("do_dellog")) entry({"admin", "services", "AdGuardHome", "reloadconfig"}, call("reload_config")) entry({"admin", "services", "AdGuardHome", "gettemplateconfig"}, call("get_template_config")) -end +end function get_template_config() local b local d="" diff --git a/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/base.lua b/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/base.lua index a5e8c3aa39..3bf49aaebb 100644 --- a/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/base.lua +++ b/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/base.lua @@ -5,7 +5,7 @@ local m,s,o,o1 local fs=require"nixio.fs" local uci=require"luci.model.uci".cursor() local configpath=uci:get("AdGuardHome","AdGuardHome","configpath") or "/etc/AdGuardHome.yaml" -local binpath=uci:get("AdGuardHome","AdGuardHome","binpath") or "/usr/bin/AdGuardHome/AdGuardHome" +local binpath=uci:get("AdGuardHome","AdGuardHome","binpath") or "/usr/bin/AdGuardHome" httpport=uci:get("AdGuardHome","AdGuardHome","httpport") or "3000" m = Map("AdGuardHome", "AdGuard Home") m.description = translate("Free and open source, powerful network-wide ads & trackers blocking DNS server.") @@ -65,7 +65,7 @@ o.default = "none" o.optional = true ---- bin path o = s:option(Value, "binpath", translate("Bin Path"), translate("AdGuardHome Bin path if no bin will auto download")) -o.default = "/usr/bin/AdGuardHome/AdGuardHome" +o.default = "/usr/bin/AdGuardHome" o.datatype = "string" o.optional = false o.rmempty=false @@ -81,7 +81,7 @@ if fs.stat(value,"type")=="dir" then m.message ="error!bin path is a dir" end return nil -end +end return value end --- upx @@ -113,12 +113,12 @@ if fs.stat(value,"type")=="dir" then m.message ="error!config path is a dir" end return nil -end +end return value end ---- work dir o = s:option(Value, "workdir", translate("Work dir"), translate("AdGuardHome work dir include rules,audit log and database")) -o.default = "/usr/bin/AdGuardHome" +o.default = "/etc/AdGuardHome" o.datatype = "string" o.optional = false o.rmempty=false @@ -131,7 +131,7 @@ if fs.stat(value,"type")=="reg" then m.message ="error!work dir is a file" end return nil -end +end if string.sub(value, -1)=="/" then return string.sub(value, 1, -2) else @@ -153,14 +153,14 @@ if fs.stat(value,"type")=="dir" then m.message ="error!log file is a dir" end return nil -end +end return value end ---- debug o = s:option(Flag, "verbose", translate("Verbose log")) o.default = 0 o.optional = true ----- gfwlist +---- gfwlist local a=luci.sys.call("grep -m 1 -q programadd "..configpath) if (a==0) then a="Added" @@ -208,7 +208,7 @@ o = s:option(Flag, "waitonboot", translate("On boot when network ok restart")) o.default = 1 o.optional = true ---- backup workdir on shutdown -local workdir=uci:get("AdGuardHome","AdGuardHome","workdir") or "/usr/bin/AdGuardHome" +local workdir=uci:get("AdGuardHome","AdGuardHome","workdir") or "/etc/AdGuardHome" o = s:option(MultiValue, "backupfile", translate("Backup workdir files when shutdown")) o1 = s:option(Value, "backupwdpath", translate("Backup workdir path")) local name @@ -234,7 +234,7 @@ o.optional=false o.description=translate("Will be restore when workdir/data is empty") ----backup workdir path -o1.default = "/usr/bin/AdGuardHome" +o1.default = "/etc/AdGuardHome" o1.datatype = "string" o1.optional = false o1.validate=function(self, value) @@ -245,7 +245,7 @@ if fs.stat(value,"type")=="reg" then m.message ="error!backup dir is a file" end return nil -end +end if string.sub(value,-1)=="/" then return string.sub(value, 1, -2) else diff --git a/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/manual.lua b/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/manual.lua index 9e2f996b20..ecf072bbc7 100644 --- a/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/manual.lua +++ b/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/manual.lua @@ -70,7 +70,7 @@ o.template = "AdGuardHome/yamleditor" if not fs.access(binpath) then o.description=translate("WARNING!!! no bin found apply config will not be test") end ---- log +--- log if (fs.access("/tmp/AdGuardHometmpconfig.yaml")) then local c=fs.readfile("/tmp/AdGuardHometest.log") if (c~="") then diff --git a/package/ctcgfw/luci-app-adguardhome/root/etc/init.d/AdGuardHome b/package/ctcgfw/luci-app-adguardhome/root/etc/init.d/AdGuardHome index 9f7846049a..58f65bf2d7 100755 --- a/package/ctcgfw/luci-app-adguardhome/root/etc/init.d/AdGuardHome +++ b/package/ctcgfw/luci-app-adguardhome/root/etc/init.d/AdGuardHome @@ -62,7 +62,7 @@ set_iptable() local ipv6_server=$1 local tcp_server=$2 uci -q batch <<-EOF >/dev/null 2>&1 - delete firewall.AdGuardHome + delete firewall.AdGuardHome set firewall.AdGuardHome=include set firewall.AdGuardHome.type=script set firewall.AdGuardHome.path=/usr/share/AdGuardHome/firewall.start @@ -91,13 +91,12 @@ EOF fi ip6tables -t nat -A PREROUTING -p udp -d $IP --dport 53 -j REDIRECT --to-ports $AdGuardHome_PORT >/dev/null 2>&1 done - } clear_iptable() { uci -q batch <<-EOF >/dev/null 2>&1 - delete firewall.AdGuardHome + delete firewall.AdGuardHome commit firewall EOF local OLD_PORT="$1" @@ -119,30 +118,33 @@ EOF ip6tables -t nat -D PREROUTING -p udp -d $IP --dport 53 -j REDIRECT --to-ports $OLD_PORT >/dev/null 2>&1 ip6tables -t nat -D PREROUTING -p tcp -d $IP --dport 53 -j REDIRECT --to-ports $OLD_PORT >/dev/null 2>&1 done - } service_triggers() { procd_add_reload_trigger "$CONFIGURATION" [ "$(uci get AdGuardHome.AdGuardHome.redirect)" == "redirect" ] && procd_add_reload_trigger firewall } + isrunning(){ -config_load "${CONFIGURATION}" -_isrunning -local r=$? -([ "$r" == "0" ] && echo "running") || ([ "$r" == "1" ] && echo "not run" ) || echo "no bin" -return $r + config_load "${CONFIGURATION}" + _isrunning + local r=$? + ([ "$r" == "0" ] && echo "running") || ([ "$r" == "1" ] && echo "not run" ) || echo "no bin" + return $r } + _isrunning(){ - config_get binpath $CONFIGURATION binpath "/usr/bin/AdGuardHome/AdGuardHome" + config_get binpath $CONFIGURATION binpath "/usr/bin/AdGuardHome" [ ! -f "$binpath" ] && return 2 pgrep $binpath 2>&1 >/dev/null && return 0 return 1 } + force_reload(){ config_load "${CONFIGURATION}" _isrunning && procd_send_signal "$CONFIGURATION" || start } + get_tz() { SET_TZ="" @@ -206,11 +208,13 @@ use_port53() uci commit dhcp /etc/init.d/dnsmasq reload } + do_redirect() { config_load "${CONFIGURATION}" _do_redirect $1 } + _do_redirect() { local section="$CONFIGURATION" @@ -271,6 +275,7 @@ _do_redirect() use_port53 fi } + get_filesystem() { # print out path filesystem @@ -340,7 +345,7 @@ boot_service() { config_load "${CONFIGURATION}" config_get waitonboot $CONFIGURATION waitonboot "0" config_get_bool enabled $CONFIGURATION enabled 0 - config_get binpath $CONFIGURATION binpath "/usr/bin/AdGuardHome/AdGuardHome" + config_get binpath $CONFIGURATION binpath "/usr/bin/AdGuardHome" [ -f "$binpath" ] && start_service if [ "$enabled" == "1" ] && [ "$waitonboot" == "1" ]; then procd_open_instance "waitnet" @@ -358,16 +363,18 @@ testbackup(){ restore fi } + restore() { - config_get workdir $CONFIGURATION workdir "/usr/bin/AdGuardHome" - config_get backupwdpath $CONFIGURATION backupwdpath "/usr/bin/AdGuardHome" + config_get workdir $CONFIGURATION workdir "/etc/AdGuardHome" + config_get backupwdpath $CONFIGURATION backupwdpath "/etc/AdGuardHome" cp -u -r -f $backupwdpath/data $workdir } + backup() { - config_get backupwdpath $CONFIGURATION backupwdpath "/usr/bin/AdGuardHome" + config_get backupwdpath $CONFIGURATION backupwdpath "/etc/AdGuardHome" mkdir -p $backupwdpath/data - config_get workdir $CONFIGURATION workdir "/usr/bin/AdGuardHome" + config_get workdir $CONFIGURATION workdir "/etc/AdGuardHome" config_get backupfile $CONFIGURATION backupfile "" for one in $backupfile; do @@ -391,6 +398,7 @@ backup() { done done } + start_service() { # Reading config rm /var/run/AdGserverdis >/dev/null 2>&1 @@ -411,7 +419,7 @@ start_service() { return fi #what need to do before reload - config_get workdir $CONFIGURATION workdir "/usr/bin/AdGuardHome" + config_get workdir $CONFIGURATION workdir "/etc/AdGuardHome" config_get backupfile $CONFIGURATION backupfile "" mkdir -p $workdir/data @@ -436,7 +444,7 @@ start_service() { fi fi local ADDITIONAL_ARGS="" - config_get binpath $CONFIGURATION binpath "/usr/bin/AdGuardHome/AdGuardHome" + config_get binpath $CONFIGURATION binpath "/usr/bin/AdGuardHome" mkdir -p ${binpath%/*} ADDITIONAL_ARGS="$ADDITIONAL_ARGS -c $configpath" @@ -448,7 +456,7 @@ start_service() { config_get upprotect $CONFIGURATION upprotect "" eval upprotect=${upprotect// /\\\\n} echo -e "$upprotect">/lib/upgrade/keep.d/luci-app-adguardhome - + config_get logfile $CONFIGURATION logfile "" if [ -n "$logfile" ]; then ADDITIONAL_ARGS="$ADDITIONAL_ARGS -l $logfile" @@ -492,6 +500,7 @@ start_service() { echo "luci enable switch=$enabled" (sleep 10 && [ -z "$(pgrep $binpath)" ] && logger "AdGuardHome" "no process in 10s cancel redirect" && _do_redirect 0 )& } + reload_service() { rm /var/run/AdGlucitest >/dev/null 2>&1 @@ -500,22 +509,23 @@ reload_service() } del_querylog(){ -local btarget=$(ls $backupwdpath/data | grep -F "querylog.json" | sort -r | head -n 1) -local wtarget=$(ls $workdir/data | grep -F "querylog.json" | sort -r | head -n 1) -if [ "$btarget"x == "$wtarget"x ]; then - [ -z "$btarget" ] && return 1 - rm -f $workdir/data/$wtarget - rm -f $backupwdpath/data/$btarget - return 0 -fi -if [ "$btarget" \> "$wtarget" ]; then - rm -f $backupwdpath/data/$btarget - return 0 -else - rm -f $workdir/data/$wtarget - return 0 -fi + local btarget=$(ls $backupwdpath/data | grep -F "querylog.json" | sort -r | head -n 1) + local wtarget=$(ls $workdir/data | grep -F "querylog.json" | sort -r | head -n 1) + if [ "$btarget"x == "$wtarget"x ]; then + [ -z "$btarget" ] && return 1 + rm -f $workdir/data/$wtarget + rm -f $backupwdpath/data/$btarget + return 0 + fi + if [ "$btarget" \> "$wtarget" ]; then + rm -f $backupwdpath/data/$btarget + return 0 + else + rm -f $workdir/data/$wtarget + return 0 + fi } + stop_service() { config_load "${CONFIGURATION}" @@ -530,16 +540,19 @@ stop_service() echo "AdGuardHome service disabled" touch /var/run/AdGserverdis } + boot() { rc_procd boot_service "$@" if eval "type service_started" 2>/dev/null >/dev/null; then service_started fi } + test_crontab(){ -config_load "${CONFIGURATION}" -do_crontab + config_load "${CONFIGURATION}" + do_crontab } + do_crontab(){ config_get_bool enabled $CONFIGURATION enabled 0 config_get crontab $CONFIGURATION crontab "" @@ -550,16 +563,16 @@ do_crontab(){ default="30 3 * * * /usr/share/AdGuardHome/update_core.sh 2>&1" [ "$enabled" == "0" ] || [ "${crontab//autoupdate/}" == "$crontab" ] && cronenable=0 || cronenable=1 crontab_editor - - config_get workdir $CONFIGURATION workdir "/usr/bin/AdGuardHome" - config_get lastworkdir $CONFIGURATION lastworkdir "/usr/bin/AdGuardHome" + + config_get workdir $CONFIGURATION workdir "/etc/AdGuardHome" + config_get lastworkdir $CONFIGURATION lastworkdir "/etc/AdGuardHome" findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* \$(uci get AdGuardHome.AdGuardHome.workdir)/data/querylog.json" #[ -n "$lastworkdir" ] && findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* $lastworkdir/data/querylog.json" && [ "$lastworkdir" != "$workdir" ] && replace="${lastworkdir//\//\\/}/${workdir//\//\\/}" default="0 * * * * /usr/share/AdGuardHome/tailto.sh 2000 \$(uci get AdGuardHome.AdGuardHome.workdir)/data/querylog.json" [ "$enabled" == "0" ] || [ "${crontab//cutquerylog/}" == "$crontab" ] && cronenable=0 || cronenable=1 crontab_editor #[ "$lastworkdir" != "$workdir" ] && uci set AdGuardHome.AdGuardHome.lastworkdir="$workdir" && commit=1 - + config_get logfile $CONFIGURATION logfile "" config_get lastlogfile $CONFIGURATION lastlogfile "" findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* \$(uci get AdGuardHome.AdGuardHome.logfile)" @@ -568,7 +581,7 @@ do_crontab(){ [ "$logfile" == "syslog" ] || [ "$logfile" == "" ] || [ "$enabled" == "0" ] || [ "${crontab//cutruntimelog/}" == "$crontab" ] && cronenable=0 || cronenable=1 crontab_editor #[ -n "$logfile" ] && [ "$lastlogfile" != "$logfile" ] && uci set AdGuardHome.AdGuardHome.lastlogfile="$logfile" && commit=1 - + findstr="/usr/share/AdGuardHome/addhost.sh" default="0 * * * * /usr/share/AdGuardHome/addhost.sh" [ "$enabled" == "0" ] || [ "${crontab//autohost/}" == "$crontab" ] && cronenable=0 || cronenable=1 @@ -582,6 +595,7 @@ do_crontab(){ [ "$cronreload" -gt 0 ] && /etc/init.d/cron restart #[ "$commit" -gt 0 ] && uci commit AdGuardHome } + crontab_editor(){ #usage input: #findstr= @@ -591,7 +605,7 @@ crontab_editor(){ #output:cronreload:if >1 please /etc/init.d/cron restart manual local testline reload local line="$(grep "$findstr" $CRON_FILE)" - [ -n "$replace" ] && [ -n "$line" ] && eval testline="\${line//$replace}" && [ "$testline" != "$line" ] && line="$testline" && reload="1" && replace="" + [ -n "$replace" ] && [ -n "$line" ] && eval testline="\${line//$replace}" && [ "$testline" != "$line" ] && line="$testline" && reload="1" && replace="" if [ "${line:0:1}" != "#" ]; then if [ $cronenable -eq 1 ]; then [ -z "$line" ] && line="$default" && reload="1" @@ -615,5 +629,4 @@ crontab_editor(){ echo "$line" >> $CRON_FILE fi fi - } diff --git a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/addhost.sh b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/addhost.sh index 2461b74dd2..6c6b7b7691 100755 --- a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/addhost.sh +++ b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/addhost.sh @@ -1,4 +1,5 @@ #!/bin/sh + checkmd5(){ local nowmd5=$(md5sum /etc/hosts) nowmd5=${nowmd5%% *} @@ -9,6 +10,7 @@ if [ "$nowmd5" != "$lastmd5" ]; then [ "$1" == "noreload" ] || /etc/init.d/AdGuardHome reload fi } + [ "$1" == "del" ] && sed -i '/programaddstart/,/programaddend/d' /etc/hosts && checkmd5 "$2" && exit 0 /usr/bin/awk 'BEGIN{ while ((getline < "/tmp/dhcp.leases") > 0) @@ -30,4 +32,4 @@ else cat /tmp/tmphost >> /etc/hosts fi rm /tmp/tmphost -checkmd5 "$2" \ No newline at end of file +checkmd5 "$2" diff --git a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/getsyslog.sh b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/getsyslog.sh index c95cc077b3..908bdf6318 100755 --- a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/getsyslog.sh +++ b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/getsyslog.sh @@ -1,4 +1,5 @@ #!/bin/sh + PATH="/usr/sbin:/usr/bin:/sbin:/bin" logread -e AdGuardHome > /tmp/AdGuardHometmp.log logread -e AdGuardHome -f >> /tmp/AdGuardHometmp.log & @@ -16,4 +17,4 @@ do else echo "0">/var/run/AdGuardHomesyslog fi -done \ No newline at end of file +done diff --git a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/gfw2adg.sh b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/gfw2adg.sh index 386d4307a8..a3add84e8b 100755 --- a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/gfw2adg.sh +++ b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/gfw2adg.sh @@ -1,5 +1,7 @@ #!/bin/sh + PATH="/usr/sbin:/usr/bin:/sbin:/bin" + checkmd5(){ local nowmd5=$(md5sum /tmp/adguard.list 2>/dev/null) nowmd5=${nowmd5%% *} @@ -10,6 +12,7 @@ if [ "$nowmd5" != "$lastmd5" ]; then [ "$1" == "noreload" ] || /etc/init.d/AdGuardHome reload fi } + configpath=$(uci get AdGuardHome.AdGuardHome.configpath 2>/dev/null) [ "$1" == "del" ] && sed -i '/programaddstart/,/programaddend/d' $configpath && checkmd5 "$2" && exit 0 gfwupstream=$(uci get AdGuardHome.AdGuardHome.gfwupstream 2>/dev/null) @@ -83,4 +86,4 @@ else sed -i '/upstream_dns:/'r/tmp/adguard.list $configpath fi checkmd5 "$2" -rm -f /tmp/gfwlist.txt /tmp/adguard.list \ No newline at end of file +rm -f /tmp/gfwlist.txt /tmp/adguard.list diff --git a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/tailto.sh b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/tailto.sh index ab70e3a6ef..9ccc21903a 100755 --- a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/tailto.sh +++ b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/tailto.sh @@ -1,4 +1,5 @@ #!/bin/sh + tail -n $1 "$2" > /var/run/tailtmp cat /var/run/tailtmp > "$2" -rm /var/run/tailtmp \ No newline at end of file +rm /var/run/tailtmp diff --git a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/update_core.sh b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/update_core.sh index 2469919e31..74ba7268d5 100755 --- a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/update_core.sh +++ b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/update_core.sh @@ -1,4 +1,5 @@ #!/bin/bash + PATH="/usr/sbin:/usr/bin:/sbin:/bin" binpath=$(uci get AdGuardHome.AdGuardHome.binpath) if [ -z "$binpath" ]; then @@ -21,6 +22,7 @@ check_wgetcurl(){ [ "$1" == "1" ] && (opkg install curl ; check_wgetcurl 2 ; return) echo error curl and wget && EXIT 1 } + check_latest_version(){ check_wgetcurl latest_ver="$($downloader - https://api.github.com/repos/AdguardTeam/AdGuardHome/releases/latest 2>/dev/null|grep -E 'tag_name' |grep -E 'v[0-9.]+' -o 2>/dev/null)" @@ -29,78 +31,79 @@ check_latest_version(){ fi now_ver="$($binpath -c /dev/null --check-config 2>&1| grep -m 1 -E 'v[0-9.]+' -o)" if [ "${latest_ver}"x != "${now_ver}"x ] || [ "$1" == "force" ]; then - echo -e "Local version: ${now_ver}., cloud version: ${latest_ver}." + echo -e "Local version: ${now_ver}., cloud version: ${latest_ver}." doupdate_core else - echo -e "\nLocal version: ${now_ver}, cloud version: ${latest_ver}." - echo -e "You're already using the latest version." - if [ ! -z "$upxflag" ]; then - filesize=$(ls -l $binpath | awk '{ print $5 }') - if [ $filesize -gt 8000000 ]; then - echo -e "start upx may take a long time" - doupx - mkdir -p "/tmp/AdGuardHomeupdate/AdGuardHome" >/dev/null 2>&1 - rm -fr /tmp/AdGuardHomeupdate/AdGuardHome/${binpath##*/} - /tmp/upx-${upx_latest_ver}-${Arch}_linux/upx $upxflag $binpath -o /tmp/AdGuardHomeupdate/AdGuardHome/${binpath##*/} - rm -rf /tmp/upx-${upx_latest_ver}-${Arch}_linux - /etc/init.d/AdGuardHome stop nobackup - rm $binpath - mv -f /tmp/AdGuardHomeupdate/AdGuardHome/${binpath##*/} $binpath - /etc/init.d/AdGuardHome start - echo -e "finished" - fi + echo -e "\nLocal version: ${now_ver}, cloud version: ${latest_ver}." + echo -e "You're already using the latest version." + if [ ! -z "$upxflag" ]; then + filesize=$(ls -l $binpath | awk '{ print $5 }') + if [ $filesize -gt 8000000 ]; then + echo -e "start upx may take a long time" + doupx + mkdir -p "/tmp/AdGuardHomeupdate/AdGuardHome" >/dev/null 2>&1 + rm -fr /tmp/AdGuardHomeupdate/AdGuardHome/${binpath##*/} + /tmp/upx-${upx_latest_ver}-${Arch}_linux/upx $upxflag $binpath -o /tmp/AdGuardHomeupdate/AdGuardHome/${binpath##*/} + rm -rf /tmp/upx-${upx_latest_ver}-${Arch}_linux + /etc/init.d/AdGuardHome stop nobackup + rm $binpath + mv -f /tmp/AdGuardHomeupdate/AdGuardHome/${binpath##*/} $binpath + /etc/init.d/AdGuardHome start + echo -e "finished" fi - EXIT 0 + fi + EXIT 0 fi } + doupx(){ Archt="$(opkg info kernel | grep Architecture | awk -F "[ _]" '{print($2)}')" case $Archt in "i386") - Arch="i386" - ;; + Arch="i386" + ;; "i686") - Arch="i386" - echo -e "i686 use $Arch may have bug" - ;; + Arch="i386" + echo -e "i686 use $Arch may have bug" + ;; "x86") - Arch="amd64" - ;; + Arch="amd64" + ;; "mipsel") - Arch="mipsel" - ;; + Arch="mipsel" + ;; "mips64el") - Arch="mips64el" - Arch="mipsel" - echo -e "mips64el use $Arch may have bug" - ;; + Arch="mips64el" + Arch="mipsel" + echo -e "mips64el use $Arch may have bug" + ;; "mips") - Arch="mips" - ;; + Arch="mips" + ;; "mips64") - Arch="mips64" - Arch="mips" - echo -e "mips64 use $Arch may have bug" - ;; + Arch="mips64" + Arch="mips" + echo -e "mips64 use $Arch may have bug" + ;; "arm") - Arch="arm" - ;; + Arch="arm" + ;; "armeb") - Arch="armeb" - ;; + Arch="armeb" + ;; "aarch64") - Arch="arm64" - ;; + Arch="arm64" + ;; "powerpc") - Arch="powerpc" - ;; + Arch="powerpc" + ;; "powerpc64") - Arch="powerpc64" - ;; + Arch="powerpc64" + ;; *) - echo -e "error not support $Archt if you can use offical release please issue a bug" - EXIT 1 - ;; + echo -e "error not support $Archt if you can use offical release please issue a bug" + EXIT 1 + ;; esac upx_latest_ver="$($downloader - https://api.github.com/repos/upx/upx/releases/latest 2>/dev/null|grep -E 'tag_name' |grep -E '[0-9.]+' -o 2>/dev/null)" $downloader /tmp/upx-${upx_latest_ver}-${Arch}_linux.tar.xz "https://github.com/upx/upx/releases/download/v${upx_latest_ver}/upx-${upx_latest_ver}-${Arch}_linux.tar.xz" 2>&1 @@ -109,64 +112,65 @@ doupx(){ mkdir -p /tmp/upx-${upx_latest_ver}-${Arch}_linux xz -d -c /tmp/upx-${upx_latest_ver}-${Arch}_linux.tar.xz| tar -x -C "/tmp" >/dev/null 2>&1 if [ ! -e "/tmp/upx-${upx_latest_ver}-${Arch}_linux/upx" ]; then - echo -e "Failed to download upx." + echo -e "Failed to download upx." EXIT 1 fi rm /tmp/upx-${upx_latest_ver}-${Arch}_linux.tar.xz } + doupdate_core(){ - echo -e "Updating core..." + echo -e "Updating core..." mkdir -p "/tmp/AdGuardHomeupdate" rm -rf /tmp/AdGuardHomeupdate/* >/dev/null 2>&1 Archt="$(opkg info kernel | grep Architecture | awk -F "[ _]" '{print($2)}')" case $Archt in "i386") - Arch="386" - ;; + Arch="386" + ;; "i686") - Arch="386" - ;; + Arch="386" + ;; "x86") - Arch="amd64" - ;; + Arch="amd64" + ;; "mipsel") - Arch="mipsle" - ;; + Arch="mipsle" + ;; "mips64el") - Arch="mips64le" - Arch="mipsle" - echo -e "mips64el use $Arch may have bug" - ;; + Arch="mips64le" + Arch="mipsle" + echo -e "mips64el use $Arch may have bug" + ;; "mips") - Arch="mips" - ;; + Arch="mips" + ;; "mips64") - Arch="mips64" - Arch="mips" - echo -e "mips64 use $Arch may have bug" - ;; + Arch="mips64" + Arch="mips" + echo -e "mips64 use $Arch may have bug" + ;; "arm") - Arch="arm" - ;; + Arch="arm" + ;; "aarch64") - Arch="arm64" - ;; + Arch="arm64" + ;; "powerpc") - Arch="ppc" - echo -e "error not support $Archt" - EXIT 1 - ;; + Arch="ppc" + echo -e "error not support $Archt" + EXIT 1 + ;; "powerpc64") - Arch="ppc64" - echo -e "error not support $Archt" - EXIT 1 - ;; + Arch="ppc64" + echo -e "error not support $Archt" + EXIT 1 + ;; *) - echo -e "error not support $Archt if you can use offical release please issue a bug" - EXIT 1 - ;; + echo -e "error not support $Archt if you can use offical release please issue a bug" + EXIT 1 + ;; esac - echo -e "start download" + echo -e "start download" grep -v "^#" /usr/share/AdGuardHome/links.txt >/tmp/run/AdHlinks.txt while read link do @@ -178,14 +182,14 @@ doupdate_core(){ else local success="1" break - fi + fi done < "/tmp/run/AdHlinks.txt" rm /tmp/run/AdHlinks.txt [ -z "$success" ] && echo "no download success" && EXIT 1 if [ "${link##*.}" == "gz" ]; then tar -zxf "/tmp/AdGuardHomeupdate/${link##*/}" -C "/tmp/AdGuardHomeupdate/" if [ ! -e "/tmp/AdGuardHomeupdate/AdGuardHome" ]; then - echo -e "Failed to download core." + echo -e "Failed to download core." rm -rf "/tmp/AdGuardHomeupdate" >/dev/null 2>&1 EXIT 1 fi @@ -194,34 +198,35 @@ doupdate_core(){ downloadbin="/tmp/AdGuardHomeupdate/${link##*/}" fi chmod 755 $downloadbin - echo -e "download success start copy" + echo -e "download success start copy" if [ -n "$upxflag" ]; then - echo -e "start upx may take a long time" + echo -e "start upx may take a long time" doupx /tmp/upx-${upx_latest_ver}-${Arch}_linux/upx $upxflag $downloadbin rm -rf /tmp/upx-${upx_latest_ver}-${Arch}_linux fi - echo -e "start copy" + echo -e "start copy" /etc/init.d/AdGuardHome stop nobackup rm "$binpath" mv -f "$downloadbin" "$binpath" if [ "$?" == "1" ]; then - echo "mv failed maybe not enough space please use upx or change bin to /tmp/AdGuardHome" + echo "mv failed maybe not enough space please use upx or change bin to /tmp/AdGuardHome" EXIT 1 fi /etc/init.d/AdGuardHome start rm -rf "/tmp/AdGuardHomeupdate" >/dev/null 2>&1 - echo -e "Succeeded in updating core." - echo -e "Local version: ${latest_ver}, cloud version: ${latest_ver}.\n" + echo -e "Succeeded in updating core." + echo -e "Local version: ${latest_ver}, cloud version: ${latest_ver}.\n" EXIT 0 } + EXIT(){ rm /var/run/update_core 2>/dev/null [ "$1" != "0" ] && touch /var/run/update_core_error exit $1 } + main(){ - check_if_already_running check_latest_version $1 } diff --git a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/waitnet.sh b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/waitnet.sh index a79a8bac87..c7745e101d 100755 --- a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/waitnet.sh +++ b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/waitnet.sh @@ -1,4 +1,5 @@ #!/bin/sh + PATH="/usr/sbin:/usr/bin:/sbin:/bin" count=0 while : @@ -31,4 +32,4 @@ do break fi done -return 0 \ No newline at end of file +return 0 diff --git a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/watchconfig.sh b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/watchconfig.sh index c5252250b6..61ba09de75 100755 --- a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/watchconfig.sh +++ b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/watchconfig.sh @@ -1,4 +1,5 @@ #!/bin/sh + PATH="/usr/sbin:/usr/bin:/sbin:/bin" configpath=$(uci get AdGuardHome.AdGuardHome.configpath) while : @@ -9,4 +10,4 @@ do break fi done -return 0 \ No newline at end of file +return 0 diff --git a/package/ctcgfw/luci-app-adguardhome/tools/po2lmo/Makefile b/package/ctcgfw/luci-app-adguardhome/tools/po2lmo/Makefile deleted file mode 100644 index ad2c133207..0000000000 --- a/package/ctcgfw/luci-app-adguardhome/tools/po2lmo/Makefile +++ /dev/null @@ -1,12 +0,0 @@ - -INSTALL = install -PREFIX = /usr/bin - -po2lmo: src/po2lmo.o src/template_lmo.o - $(CC) $(LDFLAGS) -o src/po2lmo src/po2lmo.o src/template_lmo.o - -install: - $(INSTALL) -m 755 src/po2lmo $(PREFIX) - -clean: - $(RM) src/po2lmo src/*.o diff --git a/package/ctcgfw/luci-app-adguardhome/tools/po2lmo/src/po2lmo.c b/package/ctcgfw/luci-app-adguardhome/tools/po2lmo/src/po2lmo.c deleted file mode 100644 index 0da792b680..0000000000 --- a/package/ctcgfw/luci-app-adguardhome/tools/po2lmo/src/po2lmo.c +++ /dev/null @@ -1,247 +0,0 @@ -/* - * lmo - Lua Machine Objects - PO to LMO conversion tool - * - * Copyright (C) 2009-2012 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "template_lmo.h" - -static void die(const char *msg) -{ - fprintf(stderr, "Error: %s\n", msg); - exit(1); -} - -static void usage(const char *name) -{ - fprintf(stderr, "Usage: %s input.po output.lmo\n", name); - exit(1); -} - -static void print(const void *ptr, size_t size, size_t nmemb, FILE *stream) -{ - if( fwrite(ptr, size, nmemb, stream) == 0 ) - die("Failed to write stdout"); -} - -static int extract_string(const char *src, char *dest, int len) -{ - int pos = 0; - int esc = 0; - int off = -1; - - for( pos = 0; (pos < strlen(src)) && (pos < len); pos++ ) - { - if( (off == -1) && (src[pos] == '"') ) - { - off = pos + 1; - } - else if( off >= 0 ) - { - if( esc == 1 ) - { - switch (src[pos]) - { - case '"': - case '\\': - off++; - break; - } - dest[pos-off] = src[pos]; - esc = 0; - } - else if( src[pos] == '\\' ) - { - dest[pos-off] = src[pos]; - esc = 1; - } - else if( src[pos] != '"' ) - { - dest[pos-off] = src[pos]; - } - else - { - dest[pos-off] = '\0'; - break; - } - } - } - - return (off > -1) ? strlen(dest) : -1; -} - -static int cmp_index(const void *a, const void *b) -{ - uint32_t x = ((const lmo_entry_t *)a)->key_id; - uint32_t y = ((const lmo_entry_t *)b)->key_id; - - if (x < y) - return -1; - else if (x > y) - return 1; - - return 0; -} - -static void print_uint32(uint32_t x, FILE *out) -{ - uint32_t y = htonl(x); - print(&y, sizeof(uint32_t), 1, out); -} - -static void print_index(void *array, int n, FILE *out) -{ - lmo_entry_t *e; - - qsort(array, n, sizeof(*e), cmp_index); - - for (e = array; n > 0; n--, e++) - { - print_uint32(e->key_id, out); - print_uint32(e->val_id, out); - print_uint32(e->offset, out); - print_uint32(e->length, out); - } -} - -int main(int argc, char *argv[]) -{ - char line[4096]; - char key[4096]; - char val[4096]; - char tmp[4096]; - int state = 0; - int offset = 0; - int length = 0; - int n_entries = 0; - void *array = NULL; - lmo_entry_t *entry = NULL; - uint32_t key_id, val_id; - - FILE *in; - FILE *out; - - if( (argc != 3) || ((in = fopen(argv[1], "r")) == NULL) || ((out = fopen(argv[2], "w")) == NULL) ) - usage(argv[0]); - - memset(line, 0, sizeof(key)); - memset(key, 0, sizeof(val)); - memset(val, 0, sizeof(val)); - - while( (NULL != fgets(line, sizeof(line), in)) || (state >= 2 && feof(in)) ) - { - if( state == 0 && strstr(line, "msgid \"") == line ) - { - switch(extract_string(line, key, sizeof(key))) - { - case -1: - die("Syntax error in msgid"); - case 0: - state = 1; - break; - default: - state = 2; - } - } - else if( state == 1 || state == 2 ) - { - if( strstr(line, "msgstr \"") == line || state == 2 ) - { - switch(extract_string(line, val, sizeof(val))) - { - case -1: - state = 4; - break; - default: - state = 3; - } - } - else - { - switch(extract_string(line, tmp, sizeof(tmp))) - { - case -1: - state = 2; - break; - default: - strcat(key, tmp); - } - } - } - else if( state == 3 ) - { - switch(extract_string(line, tmp, sizeof(tmp))) - { - case -1: - state = 4; - break; - default: - strcat(val, tmp); - } - } - - if( state == 4 ) - { - if( strlen(key) > 0 && strlen(val) > 0 ) - { - key_id = sfh_hash(key, strlen(key)); - val_id = sfh_hash(val, strlen(val)); - - if( key_id != val_id ) - { - n_entries++; - array = realloc(array, n_entries * sizeof(lmo_entry_t)); - entry = (lmo_entry_t *)array + n_entries - 1; - - if (!array) - die("Out of memory"); - - entry->key_id = key_id; - entry->val_id = val_id; - entry->offset = offset; - entry->length = strlen(val); - - length = strlen(val) + ((4 - (strlen(val) % 4)) % 4); - - print(val, length, 1, out); - offset += length; - } - } - - state = 0; - memset(key, 0, sizeof(key)); - memset(val, 0, sizeof(val)); - } - - memset(line, 0, sizeof(line)); - } - - print_index(array, n_entries, out); - - if( offset > 0 ) - { - print_uint32(offset, out); - fsync(fileno(out)); - fclose(out); - } - else - { - fclose(out); - unlink(argv[2]); - } - - fclose(in); - return(0); -} diff --git a/package/ctcgfw/luci-app-adguardhome/tools/po2lmo/src/template_lmo.c b/package/ctcgfw/luci-app-adguardhome/tools/po2lmo/src/template_lmo.c deleted file mode 100644 index 27205a7228..0000000000 --- a/package/ctcgfw/luci-app-adguardhome/tools/po2lmo/src/template_lmo.c +++ /dev/null @@ -1,328 +0,0 @@ -/* - * lmo - Lua Machine Objects - Base functions - * - * Copyright (C) 2009-2010 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "template_lmo.h" - -/* - * Hash function from http://www.azillionmonkeys.com/qed/hash.html - * Copyright (C) 2004-2008 by Paul Hsieh - */ - -uint32_t sfh_hash(const char *data, int len) -{ - uint32_t hash = len, tmp; - int rem; - - if (len <= 0 || data == NULL) return 0; - - rem = len & 3; - len >>= 2; - - /* Main loop */ - for (;len > 0; len--) { - hash += sfh_get16(data); - tmp = (sfh_get16(data+2) << 11) ^ hash; - hash = (hash << 16) ^ tmp; - data += 2*sizeof(uint16_t); - hash += hash >> 11; - } - - /* Handle end cases */ - switch (rem) { - case 3: hash += sfh_get16(data); - hash ^= hash << 16; - hash ^= data[sizeof(uint16_t)] << 18; - hash += hash >> 11; - break; - case 2: hash += sfh_get16(data); - hash ^= hash << 11; - hash += hash >> 17; - break; - case 1: hash += *data; - hash ^= hash << 10; - hash += hash >> 1; - } - - /* Force "avalanching" of final 127 bits */ - hash ^= hash << 3; - hash += hash >> 5; - hash ^= hash << 4; - hash += hash >> 17; - hash ^= hash << 25; - hash += hash >> 6; - - return hash; -} - -uint32_t lmo_canon_hash(const char *str, int len) -{ - char res[4096]; - char *ptr, prev; - int off; - - if (!str || len >= sizeof(res)) - return 0; - - for (prev = ' ', ptr = res, off = 0; off < len; prev = *str, off++, str++) - { - if (isspace(*str)) - { - if (!isspace(prev)) - *ptr++ = ' '; - } - else - { - *ptr++ = *str; - } - } - - if ((ptr > res) && isspace(*(ptr-1))) - ptr--; - - return sfh_hash(res, ptr - res); -} - -lmo_archive_t * lmo_open(const char *file) -{ - int in = -1; - uint32_t idx_offset = 0; - struct stat s; - - lmo_archive_t *ar = NULL; - - if (stat(file, &s) == -1) - goto err; - - if ((in = open(file, O_RDONLY)) == -1) - goto err; - - if ((ar = (lmo_archive_t *)malloc(sizeof(*ar))) != NULL) - { - memset(ar, 0, sizeof(*ar)); - - ar->fd = in; - ar->size = s.st_size; - - fcntl(ar->fd, F_SETFD, fcntl(ar->fd, F_GETFD) | FD_CLOEXEC); - - if ((ar->mmap = mmap(NULL, ar->size, PROT_READ, MAP_SHARED, ar->fd, 0)) == MAP_FAILED) - goto err; - - idx_offset = ntohl(*((const uint32_t *) - (ar->mmap + ar->size - sizeof(uint32_t)))); - - if (idx_offset >= ar->size) - goto err; - - ar->index = (lmo_entry_t *)(ar->mmap + idx_offset); - ar->length = (ar->size - idx_offset - sizeof(uint32_t)) / sizeof(lmo_entry_t); - ar->end = ar->mmap + ar->size; - - return ar; - } - -err: - if (in > -1) - close(in); - - if (ar != NULL) - { - if ((ar->mmap != NULL) && (ar->mmap != MAP_FAILED)) - munmap(ar->mmap, ar->size); - - free(ar); - } - - return NULL; -} - -void lmo_close(lmo_archive_t *ar) -{ - if (ar != NULL) - { - if ((ar->mmap != NULL) && (ar->mmap != MAP_FAILED)) - munmap(ar->mmap, ar->size); - - close(ar->fd); - free(ar); - - ar = NULL; - } -} - - -lmo_catalog_t *_lmo_catalogs = NULL; -lmo_catalog_t *_lmo_active_catalog = NULL; - -int lmo_load_catalog(const char *lang, const char *dir) -{ - DIR *dh = NULL; - char pattern[16]; - char path[PATH_MAX]; - struct dirent *de = NULL; - - lmo_archive_t *ar = NULL; - lmo_catalog_t *cat = NULL; - - if (!lmo_change_catalog(lang)) - return 0; - - if (!dir || !(dh = opendir(dir))) - goto err; - - if (!(cat = malloc(sizeof(*cat)))) - goto err; - - memset(cat, 0, sizeof(*cat)); - - snprintf(cat->lang, sizeof(cat->lang), "%s", lang); - snprintf(pattern, sizeof(pattern), "*.%s.lmo", lang); - - while ((de = readdir(dh)) != NULL) - { - if (!fnmatch(pattern, de->d_name, 0)) - { - snprintf(path, sizeof(path), "%s/%s", dir, de->d_name); - ar = lmo_open(path); - - if (ar) - { - ar->next = cat->archives; - cat->archives = ar; - } - } - } - - closedir(dh); - - cat->next = _lmo_catalogs; - _lmo_catalogs = cat; - - if (!_lmo_active_catalog) - _lmo_active_catalog = cat; - - return 0; - -err: - if (dh) closedir(dh); - if (cat) free(cat); - - return -1; -} - -int lmo_change_catalog(const char *lang) -{ - lmo_catalog_t *cat; - - for (cat = _lmo_catalogs; cat; cat = cat->next) - { - if (!strncmp(cat->lang, lang, sizeof(cat->lang))) - { - _lmo_active_catalog = cat; - return 0; - } - } - - return -1; -} - -static lmo_entry_t * lmo_find_entry(lmo_archive_t *ar, uint32_t hash) -{ - unsigned int m, l, r; - uint32_t k; - - l = 0; - r = ar->length - 1; - - while (1) - { - m = l + ((r - l) / 2); - - if (r < l) - break; - - k = ntohl(ar->index[m].key_id); - - if (k == hash) - return &ar->index[m]; - - if (k > hash) - { - if (!m) - break; - - r = m - 1; - } - else - { - l = m + 1; - } - } - - return NULL; -} - -int lmo_translate(const char *key, int keylen, char **out, int *outlen) -{ - uint32_t hash; - lmo_entry_t *e; - lmo_archive_t *ar; - - if (!key || !_lmo_active_catalog) - return -2; - - hash = lmo_canon_hash(key, keylen); - - for (ar = _lmo_active_catalog->archives; ar; ar = ar->next) - { - if ((e = lmo_find_entry(ar, hash)) != NULL) - { - *out = ar->mmap + ntohl(e->offset); - *outlen = ntohl(e->length); - return 0; - } - } - - return -1; -} - -void lmo_close_catalog(const char *lang) -{ - lmo_archive_t *ar, *next; - lmo_catalog_t *cat, *prev; - - for (prev = NULL, cat = _lmo_catalogs; cat; prev = cat, cat = cat->next) - { - if (!strncmp(cat->lang, lang, sizeof(cat->lang))) - { - if (prev) - prev->next = cat->next; - else - _lmo_catalogs = cat->next; - - for (ar = cat->archives; ar; ar = next) - { - next = ar->next; - lmo_close(ar); - } - - free(cat); - break; - } - } -} diff --git a/package/ctcgfw/luci-app-adguardhome/tools/po2lmo/src/template_lmo.h b/package/ctcgfw/luci-app-adguardhome/tools/po2lmo/src/template_lmo.h deleted file mode 100644 index 57f59aa56b..0000000000 --- a/package/ctcgfw/luci-app-adguardhome/tools/po2lmo/src/template_lmo.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * lmo - Lua Machine Objects - General header - * - * Copyright (C) 2009-2012 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _TEMPLATE_LMO_H_ -#define _TEMPLATE_LMO_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if (defined(__GNUC__) && defined(__i386__)) -#define sfh_get16(d) (*((const uint16_t *) (d))) -#else -#define sfh_get16(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\ - +(uint32_t)(((const uint8_t *)(d))[0]) ) -#endif - - -struct lmo_entry { - uint32_t key_id; - uint32_t val_id; - uint32_t offset; - uint32_t length; -} __attribute__((packed)); - -typedef struct lmo_entry lmo_entry_t; - - -struct lmo_archive { - int fd; - int length; - uint32_t size; - lmo_entry_t *index; - char *mmap; - char *end; - struct lmo_archive *next; -}; - -typedef struct lmo_archive lmo_archive_t; - - -struct lmo_catalog { - char lang[6]; - struct lmo_archive *archives; - struct lmo_catalog *next; -}; - -typedef struct lmo_catalog lmo_catalog_t; - - -uint32_t sfh_hash(const char *data, int len); -uint32_t lmo_canon_hash(const char *data, int len); - -lmo_archive_t * lmo_open(const char *file); -void lmo_close(lmo_archive_t *ar); - - -extern lmo_catalog_t *_lmo_catalogs; -extern lmo_catalog_t *_lmo_active_catalog; - -int lmo_load_catalog(const char *lang, const char *dir); -int lmo_change_catalog(const char *lang); -int lmo_translate(const char *key, int keylen, char **out, int *outlen); -void lmo_close_catalog(const char *lang); - -#endif diff --git a/package/ctcgfw/luci-theme-argonv3/Makefile b/package/ctcgfw/luci-theme-argonv3/Makefile index 5a5e99579f..ffa9bd10be 100644 --- a/package/ctcgfw/luci-theme-argonv3/Makefile +++ b/package/ctcgfw/luci-theme-argonv3/Makefile @@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Argon Theme LUCI_DEPENDS:= -PKG_VERSION:=1.7.0 -PKG_RELEASE:=20200909 +PKG_VERSION:=1.7.1 +PKG_RELEASE:=20210215 include $(TOPDIR)/feeds/luci/luci.mk diff --git a/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/css/cascade.css b/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/css/cascade.css index c7769257b2..0ae7a4266f 100644 --- a/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/css/cascade.css +++ b/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/css/cascade.css @@ -1 +1,3066 @@ -@import url("fonts.css?v=3");@import url("pure-min.css?v=1");:root{--primary:#5e72e4;--dark-primary:#483d8b;--darker:black;--default:#525461;--background-color:#f4f5f7;--warning:#fb6340;--footer-color:#aaa;--menubar-background:#fff;--menubar-scrollbar-thumb:#f6f9fc;--menubar-text-color:#4c4c4c;--blue:#5e72e4;--indigo:#5603ad;--purple:#8965e0;--pink:#f3a4b5;--red:#f5365c;--orange:#fb6340;--yellow:#ffd600;--green:#2dce89;--teal:#11cdef;--cyan:#2bffc6;--white:#fff;--gray:#8898aa;--gray-dark:#32325d;--light:#ced4da;--lighter:#e9ecef;--secondary:#f7fafc;--success:#2dce89;--info:#11cdef;--danger:#f5365c;--light:#adb5bd;--dark:#212529;--neutral:#fff;--login-form-bg-color:rgba(244,245,247,0.8);--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--blur-radius:10px;--blur-opacity:.5;--blur-radius-dark:10px;--blur-opacity-dark:.5;--font-family-sans-serif:"Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB";--font-family-monospace:SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;--font-family-normal:Open Sans, PingFangSC-Regular, Microsoft Yahei, WenQuanYi Micro Hei, "Helvetica Neue", Helvetica, Hiragino Sans GB, sans-serif}html,body{margin:0px;padding:0px;height:100%;font-size:16px;font-family:"Google Sans","Microsoft Yahei","WenQuanYi Micro Hei","sans-serif","Helvetica Neue","Helvetica","Hiragino Sans GB";font-family:var(--font-family-sans-serif)}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{font-size:.875rem;background-color:#f4f5f7;background-color:var(--background-color)}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}::selection{background-color:#5e72e4;background-color:var(--primary);color:#ffffff;color:var(--white)}a:link,a:visited,a:active{color:#5e72e4;color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}li{list-style-type:none}.login-page{height:100%}.login-page .video{position:absolute;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#000;background-color:var(--darker);overflow:hidden}.login-page .video video{width:100%;height:auto}.login-page .volume-control{position:fixed;right:1rem;top:1rem;width:1.5rem;height:1.5rem;z-index:5000;cursor:pointer;background-size:contain;background-image:url(../img/volume_high.svg)}.login-page .volume-control.mute{background-image:url(../img/volume_off.svg)}.login-page .main-bg{position:absolute;width:100%;height:100%;left:0;top:0;background-image:url(../img/blank.png);background-repeat:no-repeat;background-position:center;background-size:cover;transition:all .5s}.login-page .login-container{height:100%;margin-left:4.5rem;position:absolute;top:0px;display:flex;flex-direction:column;-webkit-box-pack:center;justify-content:center;align-items:flex-start;min-height:100%;z-index:2;width:420px;box-shadow:rgba(0,0,0,0.75) 0 0 35px -5px;margin-left:5%;background:transparent}.login-page .login-container .login-form{display:flex;flex-direction:column;-webkit-box-align:center;align-items:center;position:absolute;top:0px;width:100%;min-height:100%;max-width:420px;background-color:#fff;background-color:var(--white)}.login-page .login-container .login-form .brand{display:flex;-webkit-box-align:center;align-items:center;margin:50px auto 100px 50px;color:#525461;color:var(--default)}.login-page .login-container .login-form .brand .icon{width:50px;height:auto;margin-right:25px}.login-page .login-container .login-form .brand .brand-text{font-size:1.25rem;font-weight:700;font-family:"TypoGraphica"}.login-page .login-container .login-form .brand:hover{text-decoration:none}.login-page .login-container .login-form .form-login{width:100%;padding:20px 50px;box-sizing:border-box}.login-page .login-container .login-form .form-login .errorbox{text-align:center;color:#fb6340;color:var(--warning);padding-bottom:2rem}.login-page .login-container .login-form .form-login .input-group{margin-bottom:1.25rem;position:relative}.login-page .login-container .login-form .form-login .input-group::before{font-family:'argon' !important;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#525461;color:var(--default);font-size:1.5rem;position:absolute;z-index:100;left:10px;top:10px}.login-page .login-container .login-form .form-login .input-group .border{position:absolute;width:100%;height:1px;bottom:0;border-bottom:1px #5e72e4 solid;border-bottom:1px var(--primary) solid;transform:scaleX(0);transition:transform .3s}.login-page .login-container .login-form .form-login .input-group input{font-size:1rem;line-height:1.5em;display:block;width:100%;padding:.5rem .75rem .5rem 3rem;margin:.825rem 0;box-sizing:border-box;transition:all .3s cubic-bezier(.68, -0.55, .265, 1.55);color:#525461;color:var(--default);border:0;border-radius:0;border-bottom:1px solid #fff;border-bottom:1px solid var(--white);background-color:transparent;background-clip:padding-box;box-shadow:0 3px 2px rgba(233,236,239,0.05);outline:none}.login-page .login-container .login-form .form-login .input-group input:focus+.border{transform:scaleX(1)}.login-page .login-container .login-form .form-login .input-group .cbi-input-password{margin-bottom:2rem;position:relative}.login-page .login-container .login-form .form-login .user-icon::before{content:"\e971"}.login-page .login-container .login-form .form-login .pass-icon::before{content:"\e910"}.login-page .login-container .login-form .cbi-button-apply{width:100% !important;box-shadow:rgba(0,0,0,0.1) 0 0 50px 0;font-weight:600;font-size:15px;color:#fff;color:var(--white);text-align:center;width:100%;cursor:pointer;min-height:50px;background-color:#5e72e4 !important;background-color:var(--primary) !important;border-radius:6px;outline:none;border-width:initial;border-style:none;border-color:initial;border-image:initial;padding:10px 0px;margin:30px 0px 100px;transition:all .3s !important;letter-spacing:.8rem}.login-page .login-container .login-form .cbi-button-apply:hover,.login-page .login-container .login-form .cbi-button-apply :focus{opacity:.9}.login-page .login-container footer{box-sizing:border-box;width:100%;text-align:center;line-height:1.6rem;display:flex;justify-content:space-evenly;margin-top:auto;padding:0px 0px 30px;z-index:10;color:#525461;color:var(--default);position:absolute;bottom:0}.login-page .login-container footer .ftc{position:absolute;bottom:30px;width:100%}.login-page .login-container footer .luci-link{display:block}.pull-right{float:right}.pull-left{float:left}@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none){.login-page .login-container .login-form{-webkit-backdrop-filter:blur(var(--blur-radius));backdrop-filter:blur(var(--blur-radius));background-color:rgba(244, 245, 247, var(--blur-opacity))}}header{width:100%;padding:0 0 0 0;position:relative}header .container{margin-top:.5rem;padding:.5rem 1rem 0 1rem}header .container .pull-right>*{position:relative;top:.45rem;cursor:pointer}header::after{content:"";position:absolute;height:2rem;width:100%;background-color:#5e72e4 !important;background-color:var(--primary) !important}header.bg-primary{background-color:#5e72e4 !important;background-color:var(--primary) !important}header .fill{padding:.8rem 0;border-bottom:0 solid rgba(255,255,255,0.08) !important}header .fill .container{height:2rem;padding:0 1.25rem}header .fill .container .brand{font-size:1.5rem;color:#fff;color:var(--white);font-family:"TypoGraphica";text-decoration:none;padding-left:1rem;cursor:default;vertical-align:text-bottom;display:none}footer{text-align:right;padding:1rem;color:#aaa;color:var(--footer-color);font-size:.8rem}footer a{color:#aaa;color:var(--footer-color);text-decoration:none}@keyframes anim-rotate{0%{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}.main{top:0rem;bottom:0rem;position:relative;height:100%;width:100%;height:calc(100% - 4rem)}.main .main-left{float:left;width:15%;width:calc(0% + 15rem);height:100%;background-color:#fff !important;background-color:var(--menubar-background) !important;box-shadow:rgba(0,0,0,0.75) 0 0 15px -5px;overflow-x:auto;position:fixed;z-index:100;transition:width .2s ease-in-out}.main .main-left::-webkit-scrollbar{width:5px;height:1px}.main .main-left::-webkit-scrollbar-thumb{background-color:#f6f9fc;background-color:var(--menubar-scrollbar-thumb)}.main .main-left::-webkit-scrollbar-track{background-color:#fff;background-color:var(--menubar-background)}.main .main-left .sidenav-header{padding:1.5rem;text-align:center}.main .main-left .sidenav-header .brand{font-size:1.8rem;color:#5e72e4;color:var(--primary);font-family:"TypoGraphica",sans-serif;text-decoration:none;padding-left:0;cursor:default;vertical-align:text-bottom;white-space:nowrap}.main .main-left .nav{margin-top:.5rem}.main .main-left .nav li{padding:0rem;cursor:pointer}.main .main-left .nav li a{color:#525f7f;color:var(--default);display:block}.main .main-left .nav li:nth-last-child(1){font-size:1.2rem}.main .main-left .nav li:nth-last-child(1) .menu:after{content:""}.main .main-left .nav li.slide{padding:0}.main .main-left .nav li.slide ul{display:none}.main .main-left .nav li.slide ul li a{position:relative;margin:.1rem 1rem .1rem 3rem;padding:.5rem 0 .5rem 0;text-decoration:none;white-space:nowrap;color:#4c4c4c;color:var(--menubar-text-color);transition:all .2s;font-size:.875rem}.main .main-left .nav li.slide ul li a::after{content:"";position:absolute;width:00%;height:2px;left:0;bottom:0;background-color:#5e72e4;background-color:var(--primary);transition:all .2s}.main .main-left .nav li.slide ul li a:hover::after{color:#000;color:var(--darker);width:100%}.main .main-left .nav li.slide .menu{display:block;margin:.1rem .5rem .1rem .5rem;padding:.675rem 0 .675rem 2.5rem;border-radius:.375rem;text-decoration:none;cursor:default;font-size:1rem;transition:all .2s;position:relative}.main .main-left .nav li.slide .menu::before{font-family:'argon' !important;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:.8rem;content:"\e915";color:#5e72e4;color:var(--primary)}.main .main-left .nav li.slide .menu::after{position:absolute;right:.5rem;top:.8rem;font-family:'argon' !important;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-moz-osx-font-smoothing:grayscale;content:'\e90f';transition:all .15s ease;color:#ced4da;text-rendering:auto;-webkit-font-smoothing:antialiased;transition:all .3s}.main .main-left .nav li.slide .menu:hover,.main .main-left .nav li.slide .menu.active{cursor:pointer;color:#fff;background:#5e72e4;background:var(--primary)}.main .main-left .nav li.slide .menu:hover a,.main .main-left .nav li.slide .menu.active a{color:#000}.main .main-left .nav li.slide .menu:hover a::after,.main .main-left .nav li.slide .menu.active a::after{color:#000;width:100%}.main .main-left .nav li.slide .menu:hover::before,.main .main-left .nav li.slide .menu.active::before{color:#fff !important}.main .main-left .nav li.slide .menu:hover::after,.main .main-left .nav li.slide .menu.active::after{color:#fff}.main .main-left .nav li.slide .menu.active::after{transform:rotate(90deg)}.main .main-left .nav li.slide .menu[data-title=Status]:before{content:"\e906";color:#5e72e4;color:var(--primary)}.main .main-left .nav li.slide .menu[data-title=System]:before{content:"\e90a";color:#fb6340}.main .main-left .nav li.slide .menu[data-title=Services]:before{content:"\e909";color:#11cdef}.main .main-left .nav li.slide .menu[data-title=NAS]:before{content:"\e90c";color:#f3a4b5}.main .main-left .nav li.slide .menu[data-title=VPN]:before{content:"\e90b";color:#aaad03}.main .main-left .nav li.slide .menu[data-title=Network]:before{content:"\e908";color:#8965e0}.main .main-left .nav li.slide .menu[data-title=Bandwidth_Monitor]:before{content:"\e90d";color:#2dce89}.main .main-left .nav li.slide .menu[data-title=Docker]:before{content:"\e911";color:#6699ff}.main .main-left .nav li.slide .menu[data-title=Statistics]:before{content:"\e913";color:#5603ad}.main .main-left .nav li.slide .menu[data-title=Control]:before{content:"\e912";color:#5e72e4;color:var(--primary)}.main .main-left .nav li.slide .menu[data-title=Asterisk]:before{content:"\e914";color:#fb6340}.main .main-left .nav li.slide .menu[data-title=Logout]:before{content:"\e907";color:#adb5bd}.main .main-left .nav li.slide .slide-menu li a{position:relative;margin:.1rem 1rem .1rem 3rem;padding:.5rem 0 .5rem 0;text-decoration:none;white-space:nowrap;color:rgba(0,0,0,0.6);transition:all .2s;font-size:.875rem}.main .main-left .nav li.slide .slide-menu li a::after{content:"";position:absolute;width:00%;height:2px;left:0;bottom:0;background-color:#5e72e4;background-color:var(--primary);transition:all .2s}.main .main-left .nav li.slide .slide-menu li a:hover::after{color:#000;width:100%}.main .main-left .nav li.slide .slide-menu .active a{color:#000}.main .main-left .nav li.slide .slide-menu .active a::after{color:#000;width:100%}.main .main-right{width:85%;width:calc(100% - 15rem);float:right;height:auto;transition:width .3s ease-in-out}.main .main-right #maincontent{position:relative;z-index:50}.main .main-right #maincontent .container{margin:0 1.25rem 1rem 1.25rem}.main .main-right #maincontent .container p{color:#32325d;line-height:1.5em}.main .main-right #maincontent .container>div:nth-child(1).alert-message.warning>a{font:inherit;overflow:visible;text-transform:none;display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;min-width:6rem;padding:.5rem 1rem;font-size:.9rem;line-height:1.42857143;color:#fff;background-color:#5bc0de;border-color:#46b8da;margin-top:2rem;text-decoration:inherit}.main .loading{position:fixed;width:100%;height:100%;z-index:2000;display:flex;align-items:center;justify-content:center;background-color:#f8f9fe;top:0}.main .loading span{display:block;text-align:center;margin-top:2rem;color:#5e72e4;color:var(--primary);font-size:2rem}.main .loading span .loading-img{animation:anim-rotate 2s infinite linear;margin-right:.4rem;display:inline-block}.main .loading span .loading-img::before{content:"\e603"}.cbi-button{-webkit-appearance:none;text-transform:uppercase;height:auto;color:rgba(0,0,0,0.87);background-color:#F0F0F0;transition:all .2s ease-in-out;display:inline-block;padding:.75rem .8rem;border:none;border-radius:.2rem;cursor:pointer;-ms-touch-action:manipulation;touch-action:manipulation;background-image:none;text-align:center;vertical-align:middle;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:.875rem;width:auto !important;line-height:1em}.cbi-button:hover,.cbi-button:focus,.cbi-button:active{outline:0;text-decoration:none}.cbi-button:hover,.cbi-button:focus{box-shadow:0 0 2px rgba(0,0,0,0.12),0 2px 2px rgba(0,0,0,0.2)}.cbi-button:active{box-shadow:0 10px 20px rgba(0,0,0,0.19),0 6px 6px rgba(0,0,0,0.23)}.cbi-button:disabled{cursor:not-allowed;pointer-events:none;opacity:.6;box-shadow:none}.cbi-button-check{margin-top:.25rem !important}form.inline+form.inline,.cbi-button+.cbi-button{margin-left:0rem}.cbi-button-reset,.cbi-input-remove{color:#fff !important;background-color:#f0ad4e !important;border-color:#eea236 !important}.cbi-input-find,.cbi-input-save,.cbi-button-add,.cbi-button-save,.cbi-button-find,.cbi-input-reload,.cbi-button-reload{color:#fff !important;background-color:#337ab7 !important;border-color:#2e6da4 !important}.cbi-value-field .cbi-input-apply,.cbi-button-apply,.cbi-button-edit{color:#fff !important;background-color:#5e72e4 !important;background-color:var(--primary) !important;border-color:#5e72e4 !important;border-color:var(--primary) !important}.cbi-button-add{margin-left:1.5rem}.node-services-vssr .ssr-button{margin-left:.3rem}.cbi-section-remove>.cbi-button,.cbi-button-remove{color:#fff !important;background-color:#fb6340 !important;border-color:#fb6340 !important}.cbi-value-field .cbi-button-add,.cbi-value-field .cbi-button-remove,.cbi-value-field .cbi-button-neutral{min-width:2.5rem !important}.cbi-value input[type="password"],.cbi-value input[type="text"]{min-width:15rem}.cbi-value-field .cbi-dropdown{min-width:15rem}select{min-width:20rem;appearance:none;-webkit-appearance:none;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTY1MzQ4MDM3OTIyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI1ODMiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4qIHsgdGV4dC1zaGFkb3c6IHRyYW5zcGFyZW50IDBweCAwcHggMHB4LCByZ2JhKDAsIDAsIDAsIDAuNSkgMHB4IDBweCAwcHggIWltcG9ydGFudDsgfQo8L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMjAuNDggMjQ1Ljc2aDk4My4wNEw1MTIgNzc4LjI0eiIgcC1pZD0iMjU4NCIgZmlsbD0iIzcwNzA3MCI+PC9wYXRoPjwvc3ZnPg==') !important;background-position:96%;background-size:8px;background-repeat:no-repeat}.th[data-type="button"],.td[data-type="button"],.th[data-type="fvalue"],.td[data-type="fvalue"]{flex:1 1 2em;text-align:center}.cbi-input-textarea{width:100%;min-height:14rem;padding:.8rem;font-size:.8rem;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;color:black}.uci-change-list{font-family:monospace}.uci-change-list ins,.uci-change-legend-label ins{text-decoration:none;border:1px solid #00FF00;background-color:#CCFFCC;display:block;padding:2px}.uci-change-list del,.uci-change-legend-label del{text-decoration:none;border:1px solid #FF0000;background-color:#FFCCCC;display:block;font-style:normal;padding:2px}.uci-change-list var,.uci-change-legend-label var{text-decoration:none;border:1px solid #CCCCCC;background-color:#EEEEEE;display:block;font-style:normal;padding:2px}.uci-change-list var ins,.uci-change-list var del{border:none;white-space:pre;font-style:normal;padding:0px}.uci-change-list ins strong{display:inline}.uci-change-legend{padding:5px}.uci-change-legend-label{display:flex;align-items:center;width:auto;float:left;margin-right:2rem}.uci-change-legend-label>ins,.uci-change-legend-label>del,.uci-change-legend-label>var{float:left;margin-right:4px;width:10px;height:10px;display:block}.uci-change-legend-label var ins,.uci-change-legend-label var del{line-height:0;border:none}.uci-change-list var,.uci-change-list del,.uci-change-list ins{padding:.5rem}input[type="checkbox"]{appearance:none !important;-webkit-appearance:none !important;border:1px solid #dee2e6;width:16px !important;height:16px !important;padding:0;cursor:pointer;transition:all .2s;margin:.9rem .25rem 0 .25rem}input[type="checkbox"]:checked{border:1px solid #5e72e4;border:1px solid var(--primary);background-image:url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3e%3cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3e%3c/svg%3e') !important;background-color:#5e72e4;background-color:var(--primary);background-size:70%;background-repeat:no-repeat;background-position:center}ul li .cbi-input-checkbox{margin:.5rem .25rem !important}.cbi-input-radio{appearance:none !important;-webkit-appearance:none !important;border:1px solid #dee2e6;width:16px !important;height:16px !important;padding:0;border-radius:50%;cursor:pointer;transition:all .2s;margin:.25rem 0}.cbi-input-radio:checked{border:1px solid #5e72e4;border:1px solid var(--primary);background-image:url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'-4 -4 8 8\'%3e%3ccircle r=\'3\' fill=\'%23fff\'/%3e%3c/svg%3e') !important;background-color:#5e72e4;background-color:var(--primary);background-size:70%;background-repeat:no-repeat;background-position:center}.toggle{position:relative;display:block;width:40px;height:20px;cursor:pointer;-webkit-tap-highlight-color:transparent;transform:translate3d(0, 0, 0);margin:1em 0}.toggle:before{content:"";position:relative;top:3px;left:3px;width:34px;height:14px;display:block;background:#9A9999;border-radius:8px;transition:background .2s ease}.toggle span{position:absolute;top:0;left:0;width:20px;height:20px;display:block;background:white;border-radius:10px;box-shadow:0 3px 8px rgba(154,153,153,0.5);transition:all .2s ease}.toggle span:before{content:"";position:absolute;display:block;margin:-18px;width:56px;height:56px;background:rgba(79,46,220,0.5);border-radius:50%;transform:scale(0);opacity:1;pointer-events:none}.cbi-input-checkbox:checked+.toggle:before{background:#947ADA}.cbi-input-checkbox:checked+.toggle span{background:#4F2EDC;transform:translateX(20px);transition:all .2s cubic-bezier(.8, .4, .3, 1.25),background .15s ease;box-shadow:0 3px 8px rgba(79,46,220,0.2)}.cbi-input-checkbox:checked+.toggle span:before{transform:scale(1);opacity:0;transition:all .4s ease}.cbi-value-field .cbi-input-checkbox,.cbi-value-field .cbi-input-radio{margin-top:.5rem;height:1rem}.td .cbi-input-checkbox,.td .cbi-input-radio{margin-top:0}.cbi-value-field>input+.cbi-value-description{padding:0}.cbi-value-field>ul>li{display:flex}.cbi-value-field>ul>li>label{margin-top:0rem}.cbi-value-field>ul>li .ifacebadge{background-color:#eee;margin-left:.4rem;margin-top:-0.5rem}.cbi-section-table-row>.cbi-value-field .cbi-dropdown{min-width:7rem}.cbi-section-create{margin:0;padding-left:1rem;align-items:center}.cbi-section-create>*{margin:.25rem}.cbi-section-remove{padding:.5rem}div.cbi-value var,td.cbi-value-field var,.td.cbi-value-field var{font-style:italic;color:#0069D6}small{font-size:90%;white-space:normal;line-height:1.42857143}.cbi-button-up,.cbi-button-down{display:inline-block;min-width:0;padding:.2rem .6rem;font-size:1.2rem;color:#5e72e4 !important;color:var(--primary) !important}.cbi-optionals{padding:1rem 1rem 0 1rem;border-top:1px solid #CCC}.cbi-dropdown-container{position:relative}.cbi-tooltip-container{cursor:help}.cbi-tooltip{position:absolute;z-index:1000;left:-1000px;opacity:0;transition:opacity .25s ease-out;pointer-events:none;box-shadow:0 0 2px #444}.cbi-tooltip-container:hover .cbi-tooltip{left:auto;opacity:1;transition:opacity .25s ease-in}.cbi-map-descr+fieldset{margin-top:1rem}.cbi-section>legend{display:none !important}.cbi-section-error{padding:1.5rem;color:#fb6340;font-weight:600}fieldset>fieldset{margin:0;padding:0;border:none;box-shadow:none}.zonebadge .cbi-tooltip{padding:.25rem;background:inherit;margin:-1.5rem 0 0 -0.5rem}.zonebadge-empty{background:repeating-linear-gradient(45deg, rgba(204,204,204,0.5), rgba(204,204,204,0.5) 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px);color:#404040}.zone-forwards{display:flex;min-width:10rem}.zone-forwards>*{flex:1 1 45%}.zone-forwards>span{flex-basis:10%;text-align:center;padding:0 .25rem}.zone-forwards .zone-src,.zone-forwards .zone-dest{display:flex;flex-direction:column}#diag-rc-output>pre{background-color:#fff;display:block;padding:8.5px;margin:0 0 18px;line-height:1.5rem;white-space:pre-wrap;word-wrap:break-word;font-size:1.4rem;color:#404040}input[name="ping"],input[name="traceroute"],input[name="nslookup"]{width:80%}#swaptotal>div,#swapfree>div,#memfree>div,#membuff>div,#conns>div,#memtotal>div{width:100% !important;height:1.6rem !important;line-height:1.6rem;border-radius:.25rem}#swaptotal>div>div,#swapfree>div>div,#memfree>div>div,#membuff>div>div,#conns>div>div,#memtotal>div>div{height:100% !important;background-color:#5e72e4 !important;background-color:var(--primary) !important}table table,.table .table{border:none}.cbi-value-field table,.cbi-value-field .table{border:none}td>table>tbody>tr>td,.td>.table>.tbody>.tr>.td{border:none}.cbi-value-field>table>tbody>tr>td,.cbi-value-field>.table>.tbody>.tr>.td{border:none}.cbi-page-actions .cbi-button-apply,.cbi-section-actions .cbi-button-edit,.cbi-button-edit.important,.cbi-button-apply.important,.cbi-button-reload.important,.cbi-button-action.important{color:#fff;background-color:#337ab7}.cbi-page-actions .cbi-button-save,.cbi-button-add.important,.cbi-button-save.important,.cbi-button-positive.important{color:#fff;background-color:#5bc0de}.cbi-button-remove.important,.cbi-button-reset.important,.cbi-button-negative.important{color:#fff;background-color:#d9534f}.cbi-button-find,.cbi-button-link,.cbi-button-neutral{color:#fff !important;border:1px solid #f0ad4e !important;background-color:#f0ad4e !important}.cbi-button-edit,.cbi-button-apply,.cbi-button-reload,.cbi-button-action{color:#2e6da4;border:1px solid #2e6da4;background-color:transparent}.cbi-page-actions .cbi-button-apply+.cbi-button-save,.cbi-button-add,.cbi-button-save,.cbi-button-positive{color:#46b8da;border:1px solid #46b8da;background-color:transparent}.cbi-section-remove>.cbi-button,.cbi-button-remove,.cbi-button-reset,.cbi-button-negative{color:#fff !important;border:1px solid #d43f3a !important;background-color:#fb6340 !important}.cbi-page-actions .cbi-button-link:first-child{float:left}.a-to-btn{text-decoration:none}.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell{width:auto !important;background-color:#e9ecef;background-color:var(--lighter)}.td.cbi-section-actions{text-align:right;vertical-align:middle}.td.cbi-section-actions>*{display:flex}.td.cbi-section-actions>*>*,.td.cbi-section-actions>*>form>*{flex:1 1 4em;margin:0 1px}.td.cbi-section-actions>*>form{display:inline-flex;margin:0}.hidden{display:none}.left,.left::before{text-align:left !important}.right,.right::before{text-align:right !important}.center,.center::before{text-align:center !important}.top{align-self:flex-start !important;vertical-align:top !important}.bottom{align-self:flex-end !important;vertical-align:bottom !important}.inline{display:inline}.cbi-page-actions{border-top:0 solid #eee;padding-top:0rem;text-align:right}#xhr_poll_status{cursor:pointer;display:inline-block}#xhr_poll_status>.label.success{background-color:#fff !important;color:#32325d !important}.label{padding:.3rem .8rem;font-size:.8rem;font-weight:bold;color:#ffffff !important;text-transform:uppercase;white-space:nowrap;background-color:#bfbfbf;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;text-shadow:none;text-decoration:none}.notice{background-color:#5BC0DE}.showSide{display:none;color:#fff;font-size:1.4rem}.darkMask{width:100%;height:100%;position:fixed;background-color:rgba(0,0,0,0.56);z-index:99;left:0;top:0;display:none}#cbi-firewall-redirect table *,#cbi-network-switch_vlan table *,#cbi-firewall-zone table *{font-size:small}#cbi-firewall-redirect table input[type="text"],#cbi-network-switch_vlan table input[type="text"],#cbi-firewall-zone table input[type="text"]{width:5rem}#cbi-firewall-redirect table select,#cbi-network-switch_vlan table select,#cbi-firewall-zone table select{min-width:3.5rem}#cbi-network-switch_vlan .th,#cbi-network-switch_vlan .td{flex-basis:12%}body.lang_pl.node-main-login .cbi-value-title{width:12rem}#applyreboot-container{margin:2rem}#applyreboot-section{margin:2rem;line-height:300%}.table{display:table;position:relative;color:#525f7f;border-collapse:collapse}.tr{display:table-row;border-bottom:1px solid rgba(0,0,0,0.05)}.thead{display:table-header-group}.tbody{display:table-row-group}.tfoot{display:table-footer-group}.td,.th{vertical-align:middle;text-align:center;display:table-cell;padding:1rem;white-space:nowrap}.th{font-weight:bold}.tr.placeholder{height:4em}.tr.placeholder>.td{position:absolute;left:0;right:0;bottom:0;text-align:center;background:inherit}.table[width="33%"],.th[width="33%"],.td[width="33%"]{width:33%;padding-left:1.5rem;padding-right:1.5rem}.table[width="100%"],.th[width="100%"],.td[width="100%"]{width:100%}.table-titles .th{padding:.75rem 1rem;color:#8898aa;background-color:#f6f9fc}.col-1{flex:1 1 30px !important;-webkit-flex:1 1 30px !important}.col-2{flex:2 2 60px !important;-webkit-flex:2 2 60px !important}.col-3{flex:3 3 90px !important;-webkit-flex:3 3 90px !important}.col-4{flex:4 4 120px !important;-webkit-flex:4 4 120px !important}.col-5{flex:5 5 150px !important;-webkit-flex:5 5 150px !important}.col-6{flex:6 6 180px !important;-webkit-flex:6 6 180px !important}.col-7{flex:7 7 210px !important;-webkit-flex:7 7 210px !important}.col-8{flex:8 8 240px !important;-webkit-flex:8 8 240px !important}.col-9{flex:9 9 270px !important;-webkit-flex:9 9 270px !important}.col-10{flex:10 10 300px !important;-webkit-flex:10 10 300px !important;white-space:inherit}.cbi-rowstyle-2 .cbi-button-up,.cbi-rowstyle-2 .cbi-button-down{background-color:#FFF !important}.cbi-button-up,.cbi-button-down,.cbi-value-helpicon,.showSide,.main>.loading>span{font-family:'argon' !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cbi-button-up{transform:rotate(180deg)}select{padding:.36rem .8rem;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc}select,input{font-size:.875rem;transition:all .15s ease-in-out;line-height:1.5;padding:.625rem .75rem;color:#8898aa;border:1px solid #dee2e6;border-radius:.25rem;background-color:#fff;background-clip:padding-box;box-shadow:0 3px 2px rgba(233,236,239,0.05);outline:none;transition:box-shadow .15s ease;margin:.25rem}select:not([multiple="multiple"]):focus,input:focus{border-color:#5e72e4;border-color:var(--primary);outline:0;background-color:#fff;box-shadow:0 3px 9px rgba(50,50,9,0),3px 4px 8px rgba(94,114,228,0.1)}select[multiple="multiple"]{height:auto}code{color:#0099CC}abbr{color:#005470;text-decoration:underline;cursor:help}hr{margin:1rem 0;border-color:#EEE;opacity:.1}.kpi{font-size:.875rem}fieldset[id^="cbi-apply-"]{position:fixed;z-index:200;width:20rem;margin-left:-10rem;margin-top:-5rem;height:10rem;left:50%;top:50%;padding:1rem;box-sizing:border-box;font-size:1.2rem;text-align:center;box-shadow:rgba(0,0,0,0.75) 0 0 15px -5px;transition:all .3s}[id^="cbi-apply-"]>.panel-title{border-bottom:none}[id^="cbi-apply-"]>[id^="cbi-apply-"]{position:initial;width:auto;height:auto;font-size:.875rem;margin-left:0rem;margin-top:.8rem;display:block}.cbi-section>h3:first-child,.panel-title{font-size:1.125rem;width:100%;display:block;margin:0;padding:.8755rem 1.5rem;border-bottom:1px solid #ddd;letter-spacing:.1rem;color:#32325d;font-weight:normal;border-bottom-left-radius:0;border-bottom-right-radius:0}table{border-spacing:0;border-collapse:collapse}table,.table{width:100%}table>tbody>tr>td,table>tbody>tr>th,table>tfoot>tr>td,table>tfoot>tr>th,table>thead>tr>td,table>thead>tr>th,.table>.tbody>.tr>.td,.table>.tbody>.tr>.th,.table>.tfoot>.tr>.td,.table>.tfoot>.tr>.th,.table>.thead>.tr>.td,.table>.thead>.tr>.th{padding:.5rem;border-top:1px solid #ddd}.cbi-section-table-cell{white-space:nowrap;align-self:flex-end;flex:1 1 auto}.cbi-section-table{font-size:.875rem;border:none;margin:0 !important}.status-bar{font-size:.875rem}.cbi-section-table-row:last-child{margin-bottom:0}.cbi-section-table-row>.cbi-value-field .cbi-input-select,.cbi-section-table-row>.cbi-value-field .cbi-input-text,.cbi-section-table-row>.cbi-value-field .cbi-input-password,.cbi-section-table-row>.cbi-value-field .cbi-dropdown{width:100%}.cbi-section-table-row>.cbi-value-field [data-dynlist]>input,.cbi-section-table-row>.cbi-value-field input.cbi-input-password{width:calc(100% - 1.5rem)}div>table>tbody>tr:nth-of-type(2n),div>.table>.tbody>.tr:nth-of-type(2n){background-color:#f9f9f9}div>table>tbody>tr:nth-of-type(2n),div>.table>.tbody>.tr:nth-of-type(2n){background-color:#f9f9f9}.danger{background-color:#f5365c !important;background-color:var(--danger) !important;color:#fff !important}.warning{background-color:#fb6340 !important;background-color:var(--warning) !important;color:#fff !important}.notice{background-color:#5e72e4 !important;background-color:var(--primary) !important;color:#fff !important}.success{background-color:#2dce89 !important;background-color:var(--success) !important;color:#fff !important}.errorbox,.alert-message{margin:2rem 0 0 0;padding:2rem;border:0;font-weight:normal;font-style:normal;line-height:1.5em;font-family:inherit;min-width:inherit;overflow:auto;border-radius:.3rem;background-color:#FFF;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12)}.errorbox{color:#fff;background-color:#f0ad4e;border-color:#eea236}.error{color:red}h1{font-size:2rem;padding-bottom:10px;border-bottom:1px solid #eee}h2{margin:0 0 1rem 0;font-size:1.25rem;letter-spacing:.1rem;padding:1rem 1.5rem;color:#32325d;border-radius:.375rem;background:#fff;box-shadow:0 4px 8px rgba(0,0,0,0.03)}#cbi-dropbear h2,#cbi-dropbear .cbi-map-descr,#cbi-dropbear .cbi-map-descr abbr,#cbi-rc h2,#cbi-rc .cbi-map-descr,#cbi-distfeedconf h2,#cbi-distfeedconf .cbi-map-descr,#cbi-customfeedconf h2,#cbi-customfeedconf .cbi-map-descr,#cbi-download h2,#cbi-filelist h2{color:#32325d !important}h3{font-size:1.15rem;width:100%;display:block;margin:1rem 0;color:#32325d;font-weight:bold;letter-spacing:.1rem;padding:1rem 1.5rem;border-radius:.375rem;background:#fff;box-shadow:0 4px 8px rgba(0,0,0,0.03)}fieldset{margin:1.25rem 0 0 0;padding:0;font-weight:normal;font-style:normal;line-height:1;font-family:inherit;min-width:inherit;overflow-x:auto;overflow-y:hidden;border:1px solid rgba(0,0,0,0.05);border-radius:.375rem;background-color:#fff;box-shadow:0 0 2rem 0 rgba(136,152,170,0.15);-webkit-overflow-scrolling:touch}fieldset>legend{display:none !important}fieldset>fieldset{margin:0;padding:0;border:none;box-shadow:none}fieldset.cbi-section p{padding:1em}.panel-title{width:100%;display:block;margin-bottom:0;padding:.8755rem 1.5rem;background-color:#fff;border-bottom:1px solid #ddd;margin-bottom:0rem;letter-spacing:.1rem;color:#32325d;font-weight:600}table{border-spacing:0;border-collapse:collapse;width:100%}table>tbody>tr>td,table>tfoot>tr>td,table>thead>tr>td{font-size:.875rem;color:#525f7f;line-height:1.4em;vertical-align:middle !important;padding:.8rem 1.5rem;border-top:1px solid #ddd}table>tbody>tr>th,table>tfoot>tr>th,table>thead>tr>th{padding-right:1.5rem;padding-left:1.5rem;color:#8898aa;background-color:#f6f9fc;font-size:.65rem;padding-top:.75rem;padding-bottom:.75rem;letter-spacing:1px;text-transform:uppercase;border-bottom:1px solid #e9ecef}table>tbody>tr:first-child>td,table>tfoot>tr:first-child>td,table>thead>tr:first-child>td{border-top:0px}.cbi-section-table-cell{text-align:center}.cbi-section-table-row{text-align:center}fieldset>table>tbody>tr:nth-of-type(2n){background-color:#f9f9f9}table table{border:none}.cbi-value-field table{border:none}td>table>tbody>tr>td{border:none}.cbi-value-field>table>tbody>tr>td{border:none}.tabs{margin:0 0 1rem 0;padding:0 1rem;background-color:#FFFFFF;border-radius:.375rem;box-shadow:0 4px 8px rgba(0,0,0,0.03);white-space:nowrap;overflow-x:auto}.tabs::-webkit-scrollbar{width:1px;height:5px}.tabs::-webkit-scrollbar-thumb{background-color:#f6f9fc}.tabs::-webkit-scrollbar-track{background-color:#fff}.tabs li[class~="active"],.tabs li:hover{cursor:pointer;border-bottom:.18751rem solid #5e72e4;border-bottom:.18751rem solid var(--primary);color:#5e72e4;color:var(--primary);background-color:#dce1fe;margin-bottom:0;border-radius:0}.tabs li[class~="active"] a,.tabs li:hover a{color:#5e72e4;color:var(--primary)}.tabs li{font-size:.875rem;display:inline-block;padding:.875rem 0;border-bottom:.18751rem solid rgba(0,0,0,0)}.tabs li a{text-decoration:none;color:#404040;padding:.5rem .8rem}.tabs li:hover{border-bottom:.18751rem solid #5e72e4;border-bottom:.18751rem solid var(--primary)}.cbi-tabmenu{color:white;padding:.5rem 1rem 0 1rem;white-space:nowrap;overflow-x:auto;border-bottom:1px solid #ddd !important}.cbi-tabmenu::-webkit-scrollbar{width:1px;height:5px}.cbi-tabmenu::-webkit-scrollbar-thumb{background-color:#f6f9fc}.cbi-tabmenu::-webkit-scrollbar-track{background-color:#fff}.cbi-tabmenu li{background:#dce3e9;display:inline-block;font-size:.875rem;border-top-left-radius:.25rem;border-top-right-radius:.25rem;padding:.5rem 0;border-bottom:.18751rem solid rgba(0,0,0,0)}.cbi-tabmenu li a{text-decoration:none;color:#404040;padding:.5rem .8rem}.cbi-tabmenu li:hover{cursor:pointer;border-bottom:.18751rem solid #5e72e4;border-bottom:.18751rem solid var(--primary);color:#5e72e4;color:var(--primary);background-color:#dce1fe;margin-bottom:0}.cbi-tabmenu li:hover a{color:#525f7f}.cbi-tabmenu li[class~="cbi-tab"]{border-bottom:.18751rem solid #5e72e4;border-bottom:.18751rem solid var(--primary);color:var(--primary);background-color:#dce1fe;margin-bottom:0}.cbi-tabmenu li[class~="cbi-tab"] a{color:#5e72e4;color:var(--primary)}.cbi-tab-descr{margin:1rem 1.5rem;color:#32325d;font-size:small;line-height:1.5em}.cbi-dropdown{display:inline-flex;cursor:pointer;position:relative;padding:0;height:auto}.cbi-dropdown:focus{outline:2px solid #4b6e9b}.cbi-dropdown>ul{margin:0 !important;padding:0;list-style:none;overflow-x:hidden;overflow-y:auto;display:flex;width:100%}.cbi-dropdown>ul.preview{display:none}.cbi-dropdown>.open{border:0 outset #eee;flex-basis:15px;background:#fff}.cbi-dropdown>.open,.cbi-dropdown>.more{flex-grow:0;flex-shrink:0;display:flex;flex-direction:column;justify-content:center;text-align:center;line-height:2em;padding:0 .25em}.cbi-dropdown>.more,.cbi-dropdown>ul>li[placeholder]{color:#777;font-weight:bold;text-shadow:1px 1px 0 #fff;display:none}.cbi-dropdown>ul>li{display:none;padding:.25em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1;flex-grow:1;align-items:center;align-self:center;min-height:20px}.cbi-dropdown>ul>li .hide-open{display:initial}.cbi-dropdown>ul>li .hide-close{display:none}.cbi-dropdown>ul>li[display]:not([display="0"]){border-left:1px solid #ccc}.cbi-dropdown[empty]>ul{max-width:1px}.cbi-dropdown>ul>li>form{display:none;margin:0;padding:0;pointer-events:none}.cbi-dropdown>ul>li img{vertical-align:middle;margin-right:.25em}.cbi-dropdown>ul>li>form>input[type="checkbox"]{margin:0;height:auto}.cbi-dropdown>ul>li input[type="text"]{height:20px}.cbi-dropdown[open]{position:relative;border-color:#5e72e4;border-color:var(--primary)}.cbi-dropdown[open]>ul.dropdown{display:block;background:#fff;border-color:#5e72e4;border-color:var(--primary);position:absolute;z-index:1000;max-width:none;min-width:100%;width:auto;box-shadow:0 1px 3px rgba(50,50,93,0.15),0 1px 0 rgba(0,0,0,0.05)}.cbi-dropdown>ul>li[display],.cbi-dropdown[open]>ul.preview,.cbi-dropdown[open]>ul.dropdown>li,.cbi-dropdown[multiple]>ul>li>label,.cbi-dropdown[multiple][open]>ul.dropdown>li,.cbi-dropdown[multiple][more]>.more,.cbi-dropdown[multiple][empty]>.more{flex-grow:1;display:flex;align-items:center}.cbi-dropdown[empty]>ul>li,.cbi-dropdown[optional][open]>ul.dropdown>li[placeholder],.cbi-dropdown[multiple][open]>ul.dropdown>li>form{display:block}.cbi-dropdown[open]>ul.dropdown>li .hide-open{display:none}.cbi-dropdown[open]>ul.dropdown>li .hide-close{display:initial}.cbi-dropdown[open]>ul.dropdown>li{border-bottom:1px solid #ccc}.cbi-dropdown[open]>ul.dropdown>li[selected]{background:#b0d0f0}.cbi-dropdown[open]>ul.dropdown>li.focus{background:linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%)}.cbi-dropdown[open]>ul.dropdown>li:last-child{margin-bottom:0;border-bottom:none}.cbi-dropdown[disabled]{pointer-events:none;opacity:.6}.cbi-dropdown .zonebadge{width:100%}.cbi-dropdown[open] .zonebadge{width:100%}.cbi-dropdown{font-size:.875rem;transition:all .15s ease-in-out;line-height:1.5;height:calc(2.75rem + 2px);padding:0m;color:#8898aa;border:1px solid #dee2e6;border-radius:.25rem;background-color:#fff;background-clip:padding-box;box-shadow:0 3px 2px rgba(233,236,239,0.05);margin:.25rem}.cbi-value-field .cbi-dropdown{min-width:20rem}.cbi-value-field .cbi-dropdown .zonebadge>.ifacebadge{padding:0rem 1rem;margin:0 .3rem;border:1px solid #6C6C6C}select[multiple="multiple"]{height:auto}.cbi-dropdown>ul{margin:0 !important;padding:0;list-style:none;overflow-x:hidden;overflow-y:hidden;display:flex;width:100%}.cbi-section>legend{display:none !important}.cbi-section-remove:nth-of-type(2n),.cbi-section-node:nth-of-type(2n){background-color:#f9f9f9}.cbi-section-node-tabbed{padding:0;margin-top:0}.cbi-section-node{background:#fff;border:0;border-radius:.375rem;margin-bottom:0px;box-shadow:0 0 0 0 rgba(136,152,170,0.15);overflow-x:auto;overflow-y:hidden;padding:0rem 0}#cbi-network-lan.cbi-section-node{overflow-x:visible;overflow-y:visible}.cbi-section-node .cbi-value{padding:.3rem 1rem .3rem 1rem}.cbi-tabcontainer>.cbi-value:nth-of-type(2n){background-color:#f9f9f9}.cbi-value-field,.cbi-value-description{display:table-cell;line-height:1.6;font-size:.875rem}.cbi-value-helpicon>img{display:none}.cbi-value-helpicon:before{content:"\f059"}.cbi-value-description{font-size:small;opacity:.5;padding:.5rem}.cbi-value-title{word-wrap:break-word;font-size:.875rem;line-height:1.6;color:#525f7f;padding:.7rem;padding-left:0;width:23rem;float:left;text-align:right;display:table-cell}.cbi-value{padding:.3rem 1rem;display:inline-block;width:100%}.cbi-section-table-descr>.cbi-section-table-cell,.cbi-section-table-titles>.cbi-section-table-cell{border:none}.cbi-rowstyle-1{background-color:#fff}.cbi-rowstyle-2{background-color:#fefefe}.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell{width:auto !important}.cbi-section-descr{padding:1rem 1.5rem;font-size:.7rem;font-weight:600;line-height:1.5em;color:#525f7f}.cbi-map-descr{margin:0 1.5rem 1rem 1.5rem;color:#32325d;font-size:small;line-height:1.5em}.cbi-value input[type="password"],.cbi-value input[type="text"]{min-width:20rem}input[type="checkbox"]{height:auto}.cbi-value-field .ifacebadge{display:inline-flex;border-bottom:0 solid #CCCCCC;padding:.5rem 1rem;box-shadow:none}td>.ifacebadge{background-color:#F0F0F0;font-size:.9rem}.ifacebadge>img{float:right;margin:0 .3rem}.cbi-input-textarea{width:100%;border:0;outline:none;min-height:14rem;padding:.8rem;font-size:.8rem;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;color:black}#syslog{width:100%;min-height:15rem;padding:1rem;line-height:1.4em;font-size:small;color:#1e1e1e;border-radius:0;background-color:#fff;border:none;outline:none}.ifacebadge{display:inline-flex;border-bottom:0 solid #CCCCCC;padding:.5rem 1rem;box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);background:#fff}td>.ifacebadge,.td>.ifacebadge{background-color:#e9ecef;font-size:.9rem;border-radius:.2rem}.ifacebadge>em,.ifacebadge>img{display:inline-block;margin:0 .3rem;align-self:flex-start}.ifacebadge span{line-height:1.6em}.network-status-table{display:flex;flex-wrap:wrap}.network-status-table .ifacebox{margin:1rem;flex-grow:1}.network-status-table .ifacebox-body{display:flex;flex-direction:column;height:100%}.network-status-table .ifacebox-body>span{flex:10 10 auto;height:100%;line-height:1.7em;padding-left:2rem;padding-top:.5rem;padding-bottom:.5rem}.network-status-table .ifacebox-body>div{display:flex;flex-wrap:wrap}.network-status-table .ifacebox-body .ifacebadge{flex:1 1 auto;margin:0;padding:.5em;min-width:220px;background-color:#fff;align-items:center}.ifacebox{border:1px solid #ccc;border-radius:.375rem;background-color:#f9f9f9;display:inline-flex;flex-direction:column;line-height:1.2em;min-width:100px;overflow:hidden}.ifacebox-head{padding:1rem;background:#eee}.ifacebox-head.active{background:#5e72e4;background:var(--primary);color:#fff}.ifacebox-body{padding:.5em}.cbi-image-button{margin-left:.5rem}#iwsvg,#iwsvg2,#bwsvg{border:none !important;border-radius:.375rem;box-shadow:0 0 2rem 0 rgba(136,152,170,0.15);overflow:hidden}.cbi-image-button{margin-left:.5rem}.zonebadge{padding:.2rem .5rem;display:inline-block;cursor:pointer}.zonebadge>.ifacebadge{padding:.2rem 1rem;margin:.3rem;border:1px solid #6C6C6C}.zonebadge>input[type="text"]{padding:.16rem 1rem;min-width:10rem;margin-top:.3rem}.cbi-value-field .cbi-input-checkbox,.cbi-value-field .cbi-input-radio{margin:.9rem .25rem 0 .25rem;height:1rem;line-height:1.6}.cbi-input-checkbox{margin:.9rem .25rem 0 .25rem}.cbi-value-field .cbi-input-radio{margin:0 .25rem}.cbi-value-field>input+.cbi-value-description{padding:0}.cbi-value-field>ul>li{display:flex;align-items:center;font-size:.875rem}.cbi-value-field>ul>li .ifacebadge{font-size:.875rem;background-color:#eee;display:flex;align-items:center;margin-left:0rem;margin-top:0rem}.cbi-section-table-row>.cbi-value-field .cbi-input-select{min-width:7rem}.cbi-section-create>.cbi-button-add{margin:.5rem .5rem .5rem .5rem}.cbi-section-remove{padding:.5rem}div.cbi-value var,td.cbi-value-field var{font-style:italic;color:#0069D6}small{font-size:90%;white-space:normal;line-height:1.42857143}.cbi-optionals{padding:1rem 1rem 0 1rem;border-top:1px solid #CCC}input[name="ping"],input[name="traceroute"],input[name="nslookup"]{width:80%}.label{padding:.3rem .8rem;font-size:.8rem;font-weight:bold;color:#fff !important;text-transform:uppercase;white-space:nowrap;background-color:#32325d;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;text-shadow:none;text-decoration:none}.node-status-overview>.main fieldset:nth-child(4) td:nth-child(2){white-space:normal}.node-status-overview>.main #wan4_i,.node-status-overview>.main #wan6_i{width:80px !important}.node-status-processes>.main table tr td:nth-child(3){white-space:normal}.node-system-reboot>.main>.main-right p,.node-system-reboot>.main>.main-right h3{padding-left:2rem;color:#fff}.node-services-samba>.main .cbi-tabcontainer:nth-child(3) .cbi-value-title{margin-bottom:1rem;width:auto}.node-services-samba>.main .cbi-tabcontainer:nth-child(3) .cbi-value-field{display:list-item}.node-services-samba>.main .cbi-tabcontainer:nth-child(3) .cbi-value-description{padding-top:1rem}.node-system-packages>.main table tr td:nth-child(1){width:auto !important}.node-system-packages>.main table tr td:nth-last-child(1){white-space:normal;font-size:small;color:#404040}.node-system-packages>.main .cbi-tabmenu>li>a,.tabs>li>a{padding:.5rem .8rem}.node-system-packages>.main .cbi-value>pre{background-color:#eee;padding:.5rem;overflow:auto}.node-system-packages>.main .cbi-page-actions{padding:1rem 0}.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last{line-height:1.8em}.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"]{border:1px solid #999999 !important;width:100% !important;background-color:#fff !important;height:1.4rem !important;border-radius:.25rem;margin:.5rem 0;overflow:hidden}.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] div{border-right:0 !important;background-color:#5e72e4 !important;background-color:var(--primary) !important}.node-system-leds .cbi-section em{display:block}.cbi-tabmenu+.cbi-section{margin-top:0}.cbi-section{background:#fff;border:0;border-radius:.375rem;box-shadow:0 0 2rem 0 rgba(136,152,170,0.15);overflow-x:auto;overflow-y:hidden}.cbi-section em{padding:.75rem 1.5rem;font-size:.7rem;font-weight:600;color:#525f7f;text-align:center}.cbi-section h4{padding:.75rem 1.5rem;font-size:.7rem;font-weight:600;color:#525f7f}#content_syslog{border-radius:.375rem;box-shadow:0 0 2rem 0 rgba(136,152,170,0.15);overflow:hidden}.node-system-packages .cbi-section-node .cbi-value{padding:.5rem 1rem;font-size:.875rem}.node-system-packages br{display:none}.node-network-firewall>.main .cbi-section-table-row>.cbi-value-field .cbi-input-select{min-width:4rem}.node-network-firewall .cbi-section-table{width:100% !important}.node-status-iptables fieldset,.node-system-packages fieldset,.node-system-flashops fieldset{margin-top:0}.node-status-iptables .cbi-tabmenu,.node-system-packages .cbi-tabmenu,.node-system-flashops .cbi-tabmenu{border:none}.node-system-flashops form.inline+form.inline{margin-left:0}.Changes .cbi-section{font-size:.875rem;padding:1rem}.node-network-diagnostics{font-size:.875rem}.node-network-diagnostics #diag-rc-output{display:block;padding:1rem}.node-network-diagnostics #diag-rc-output pre{font-size:.875rem}.node-network-diagnostics .cbi-section div{padding:0 1.5rem}.node-network-diagnostics input{margin:.25rem !important}#detail-bubble.in{z-index:500}.node-nlbw-display .cbi-section ul{padding:.875rem 1.5rem}.node-nlbw-backup form{margin-left:1.5rem}.node-nas-usb_printer em{display:block}@media screen and (max-width:1600px){.main .main-left{width:calc(0% + 13rem)}.main .main-right{width:calc(100% - 13rem)}.cbi-button{font-size:.8rem}header>.container>.pull-right>*{top:.35rem}.label{padding:.2rem .6rem}.cbi-value-title{width:15rem;padding-right:.6rem}fieldset{padding:0}.cbi-input-textarea{font-size:small}.node-status-iptables>.main fieldset li>a{padding:.3rem .6rem}select{min-width:15rem}}@media screen and (max-width:1280px){header>.container{margin-top:.25rem}.main .main-left{width:calc(0% + 13rem)}.main .main-right{width:calc(100% - 13rem)}.cbi-tabmenu>li>a,.tabs>li>a{padding:.2rem .5rem}.panel-title{font-size:1.1rem;padding-bottom:1rem}table{font-size:.7rem !important;width:100% !important}.main>.main-left>.nav>li,.main>.main-left>.nav>li a,.main>.main-left>.nav>.slide>.menu{font-size:.9rem}.main>.main-left>.nav>.slide>.slide-menu>li>a{font-size:.7rem}}@media screen and (min-width:600px){::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar,::-webkit-scrollbar-corner{background:transparent}::-webkit-scrollbar-thumb{background:#9e9e9e}::-webkit-scrollbar-thumb:hover{background:#757575}::-webkit-scrollbar-thumb:active{background:#424242}}@media screen and (max-width:992px){.main .main-left{width:0;position:fixed;z-index:100}.main .main-right{width:100%}.showSide{padding:.1rem;position:relative;display:inline-block}.showSide:hover{text-decoration:none}.showSide:before{content:"\e20e";font-size:1.7rem}header>.fill>.container>.brand{display:inline-block}.cbi-value-title{width:9rem;padding-right:1rem}.node-network-diagnostics>.main .cbi-map fieldset>div *{width:100% !important}.node-network-diagnostics>.main .cbi-map fieldset>div input[type="text"]{margin:3rem 0 0 0 !important}.node-network-diagnostics>.main .cbi-map fieldset>div:nth-child(4) input[type="text"]{margin:0 !important}.node-network-diagnostics>.main .cbi-map fieldset>div select,.node-network-diagnostics>.main .cbi-map fieldset>div input[type="button"]{margin:1rem 0 0 0 !important}.node-network-diagnostics>.main .cbi-map fieldset>div{width:100% !important}#diag-rc-output>pre{font-size:1rem}}@media screen and (max-width:480px){body{font-size:.8rem}.pull-right{float:right;margin-top:0rem !important}.login-page .video video{width:auto !important;height:100% !important}.login-page .login-container{margin-left:0rem !important;width:100%}.login-page .login-container .login-form .form-login .input-group::before{color:#525461}.login-page .login-container .login-form .form-login .input-group input{color:#525461;border-bottom:white 1px solid;border-bottom:var(--white) 1px solid;border-radius:0}fieldset{padding:0;margin:1rem 0 0 0}.tabs{margin:.5rem 0}.toggle{margin:0}h2{font-size:1.125rem}.panel-title{font-size:1rem;padding-bottom:1rem}#maincontent>.container{margin:0 1rem 1.5rem 1rem}.main>.main-left>.nav>.slide>.menu{font-size:1rem}.main>.main-left>.nav>.slide>.slide-menu>li>a{font-size:.9rem}.main>.main-left>.nav>.slide>.menu:after{top:.9rem}#ethinfo td{padding:.75rem .2rem !important}.cbi-value-title{width:100%;min-width:0rem !important;display:block;margin-top:.5rem;margin-bottom:.5rem;text-align:left;padding:0 .25rem}.cbi-value input[type="password"],.cbi-value input[type="text"]{min-width:15rem}select{width:15rem;min-width:auto}.cbi-value>.cbi-value-field{display:inline-block}.cbi-value-field .cbi-input-checkbox,.cbi-value-field .cbi-input-radio{margin:0 .25rem 0 .25rem;height:1rem;line-height:1.6}.cbi-page-actions>div>input{display:none}.tabs::-webkit-scrollbar,.cbi-tabmenu::-webkit-scrollbar{width:0px;height:0px}.tabs>li>a{font-size:.9rem}select,input{font-size:.9rem}.mobile-hide{display:none}.node-status-realtime table>tbody>tr>td,.node-status-realtime table>tfoot>tr>td,.node-status-realtime table>thead>tr>td{font-size:.8125rem;color:#525f7f;line-height:1.4em;vertical-align:middle !important;padding:.8rem 0;border-top:1px solid #ddd;width:auto;text-align:center}.node-system-packages>.main .cbi-value.cbi-value-last>div{width:100% !important}.node-system-packages .cbi-section-node .cbi-value{padding:.3rem 1rem}.node-system-packages>.main .cbi-value .cbi-value-field input{width:100%}.node-system-leds .cbi-section em{display:block}.node-status-iptables>.main div>.cbi-map>form{position:static !important;margin:0 0 2rem 0;padding:2rem;border:0;font-weight:normal;font-style:normal;line-height:1;font-family:inherit;min-width:inherit;overflow-x:auto;overflow-y:hidden;border-radius:.375rem;background-color:#FFF;box-shadow:0 0 2rem 0 rgba(136,152,170,0.15);-webkit-overflow-scrolling:touch}.node-status-iptables>.main div>.cbi-map>form input[type="submit"]{width:100% !important;margin:0}.node-status-iptables>.main div>.cbi-map>form input[type="submit"]+input[type="submit"]{margin-top:1rem}.cbi-value input[type="text"]:has(+ img){width:10rem !important}.node-services-vssr .status-info{font-size:.75rem}.node-services-vssr .icon-con{margin-top:.4rem}.node-services-vssr .icon-con img{width:2.3rem !important;height:auto}} \ No newline at end of file +/** + * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template + * + * luci-theme-argon + * Copyright 2020 Jerryk + * + * Have a bug? Please create an issue here on GitHub! + * https://github.com/jerrykuku/luci-theme-argon/issues + * + * luci-theme-bootstrap: + * Copyright 2008 Steven Barth + * Copyright 2008 Jo-Philipp Wich + * Copyright 2012 David Menting + * + * MUI: + * https://github.com/muicss/mui + * + * luci-theme-material: + * https://github.com/LuttyYang/luci-theme-material/ + * + * Agron Theme + * https://demos.creative-tim.com/argon-dashboard/index.html + * + * Login background + * https://unsplash.com/ + * + * Licensed to the public under the Apache License 2.0 + */ +/* + * Font generate by Icomoon + */ +/* + * Common Styles + */ +@import url("fonts.css?v=3"); +@import url("pure-min.css?v=1"); +:root { + /** general **/ + --primary: #5e72e4; + --dark-primary: #483d8b; + --background-color: #f4f5f7; + --font-color: #525f7f; + /** login form **/ + --login-form-background-color: #ffffff; + --darker: black; + --default: #525461; + --warning: #fb6340; + --footer-color: #aaa; + --menubar-background: #fff; + --menubar-scrollbar-thumb: #f6f9fc; + --menubar-text-color: #4c4c4c; + --blue: #5e72e4; + --indigo: #5603ad; + --purple: #8965e0; + --pink: #f3a4b5; + --red: #f5365c; + --orange: #fb6340; + --yellow: #ffd600; + --green: #2dce89; + --teal: #11cdef; + --cyan: #2bffc6; + --white: #fff; + --gray: #8898aa; + --gray-dark: #32325d; + --light: #ced4da; + --lighter: #e9ecef; + --secondary: #f7fafc; + --success: #2dce89; + --info: #11cdef; + --danger: #f5365c; + --light: #adb5bd; + --dark: #212529; + --neutral: #fff; + --login-form-bg-color: rgba(244, 245, 247, 0.8); + --blur-radius: 10px; + --blur-opacity: 0.5; + --blur-radius-dark: 10px; + --blur-opacity-dark: 0.5; + --font-family-sans-serif: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; + --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; + --font-family-normal: Open Sans, PingFangSC-Regular, Microsoft Yahei, WenQuanYi Micro Hei, "Helvetica Neue", Helvetica, Hiragino Sans GB, sans-serif; +} +[data-theme="dark"] { + --primary: #483d8b; + --dark-primary: #483d8b; + --background-color: #1e1e1e; + --font-color: #cccccc; + --darker: black; + --default: #525461; + --warning: #fb6340; + --footer-color: #aaa; + --menubar-background: #fff; + --menubar-scrollbar-thumb: #f6f9fc; + --menubar-text-color: #4c4c4c; + --blue: #5e72e4; + --indigo: #5603ad; + --purple: #8965e0; + --pink: #f3a4b5; + --red: #f5365c; + --orange: #fb6340; + --yellow: #ffd600; + --green: #2dce89; + --teal: #11cdef; + --cyan: #2bffc6; + --white: #fff; + --gray: #8898aa; + --gray-dark: #32325d; + --light: #ced4da; + --lighter: #e9ecef; + --secondary: #f7fafc; + --success: #2dce89; + --info: #11cdef; + --danger: #f5365c; + --light: #adb5bd; + --dark: #212529; + --neutral: #fff; + --login-form-bg-color: rgba(244, 245, 247, 0.8); + --blur-radius: 10px; + --blur-opacity: 0.5; + --blur-radius-dark: 10px; + --blur-opacity-dark: 0.5; + --font-family-sans-serif: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; + --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; + --font-family-normal: Open Sans, PingFangSC-Regular, Microsoft Yahei, WenQuanYi Micro Hei, "Helvetica Neue", Helvetica, Hiragino Sans GB, sans-serif; +} +html, +body { + margin: 0px; + padding: 0px; + height: 100%; + font-size: 16px; + font-family: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; + font-family: var(--font-family-sans-serif); +} +html { + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + font-size: 0.875rem; + background-color: #f4f5f7; + background-color: var(--background-color); + color: #525f7f; + color: var(--font-color); +} +* { + margin: 0; + padding: 0; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; +} +::selection { + background-color: #5e72e4; + background-color: var(--primary); + color: #ffffff; + color: var(--white); +} +a:link, +a:visited, +a:active { + color: #5e72e4; + color: var(--primary); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +li { + list-style-type: none; +} +@-webkit-keyframes sparkle { + from { + background-position: 0 0; + } + to { + background-position: 0 -64px; + } +} +@-moz-keyframes sparkle { + from { + background-position: 0 0; + } + to { + background-position: 0 -64px; + } +} +@-o-keyframes sparkle { + from { + background-position: 0 0; + } + to { + background-position: 0 -64px; + } +} +@keyframes sparkle { + from { + background-position: 0 0; + } + to { + background-position: 0 -64px; + } +} +/*********************** +* +* Login Page +* +***************************/ +.login-page { + height: 100%; +} +.login-page .video { + position: absolute; + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + background-color: #000; + background-color: var(--darker); + overflow: hidden; +} +.login-page .video video { + width: 100%; + height: auto; +} +.login-page .volume-control { + position: fixed; + right: 1rem; + top: 1rem; + width: 1.5rem; + height: 1.5rem; + z-index: 5000; + cursor: pointer; + background-size: contain; + background-image: url(../img/volume_high.svg); +} +.login-page .volume-control.mute { + background-image: url(../img/volume_off.svg); +} +.login-page .main-bg { + position: fixed; + width: 100%; + height: 100%; + left: 0; + top: 0; + background-image: url(../img/blank.png); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + transition: all 0.5s; +} +.login-page .login-container { + height: 100%; + margin-left: 4.5rem; + position: absolute; + top: 0px; + display: flex; + flex-direction: column; + -webkit-box-pack: center; + justify-content: center; + align-items: flex-start; + min-height: 100%; + z-index: 2; + width: 420px; + box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 35px -5px; + margin-left: 5%; + background: transparent; +} +.login-page .login-container .login-form { + display: flex; + flex-direction: column; + -webkit-box-align: center; + align-items: center; + position: absolute; + top: 0px; + width: 100%; + min-height: 100%; + max-width: 420px; + background-color: #fff; + background-color: var(--white); +} +.login-page .login-container .login-form .brand { + display: flex; + -webkit-box-align: center; + align-items: center; + margin: 50px auto 100px 50px; + color: #525461; + color: var(--default); +} +.login-page .login-container .login-form .brand .icon { + width: 50px; + height: auto; + margin-right: 25px; +} +.login-page .login-container .login-form .brand .brand-text { + font-size: 1.25rem; + font-weight: 700; + font-family: "TypoGraphica"; +} +.login-page .login-container .login-form .brand:hover { + text-decoration: none; +} +.login-page .login-container .login-form .form-login { + width: 100%; + padding: 20px 50px; + box-sizing: border-box; +} +.login-page .login-container .login-form .form-login .errorbox { + text-align: center; + color: #fb6340; + color: var(--warning); +} +.login-page .login-container .login-form .form-login .input-group { + margin-bottom: 1.25rem; + position: relative; +} +.login-page .login-container .login-form .form-login .input-group::before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: #525461; + color: var(--default); + font-size: 1.5rem; + position: absolute; + z-index: 100; + left: 10px; + top: 10px; +} +.login-page .login-container .login-form .form-login .input-group .border { + position: absolute; + width: 100%; + height: 1px; + bottom: 0; + border-bottom: 1px #5e72e4 solid; + border-bottom: 1px var(--primary) solid; + transform: scaleX(0); + transition: transform 0.3s; +} +.login-page .login-container .login-form .form-login .input-group input { + font-size: 1rem; + line-height: 1.5em; + display: block; + width: 100%; + padding: 0.5rem 0.75rem 0.5rem 3rem; + margin: 0.825rem 0; + box-sizing: border-box; + transition: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55); + color: #525461; + color: var(--default); + border: 0; + border-radius: 0; + border-bottom: 1px solid #fff; + border-bottom: 1px solid var(--white); + background-color: transparent; + background-clip: padding-box; + box-shadow: 0 3px 2px rgba(233, 236, 239, 0.05); + outline: none; +} +.login-page .login-container .login-form .form-login .input-group input:focus + .border { + transform: scaleX(1); +} +.login-page .login-container .login-form .form-login .input-group .cbi-input-password { + margin-bottom: 2rem; + position: relative; +} +.login-page .login-container .login-form .form-login .user-icon::before { + content: "\e971"; +} +.login-page .login-container .login-form .form-login .pass-icon::before { + content: "\e910"; +} +.login-page .login-container .login-form .cbi-button-apply { + width: 100% !important; + box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 50px 0px; + font-weight: 600; + font-size: 15px; + color: #fff; + color: var(--white); + text-align: center; + width: 100%; + cursor: pointer; + min-height: 50px; + background-color: #5e72e4 !important; + background-color: var(--primary) !important; + border-radius: 6px; + outline: none; + border-width: initial; + border-style: none; + border-color: initial; + border-image: initial; + padding: 10px 0px; + margin: 30px 0px 100px; + transition: all 0.3s !important; + letter-spacing: 0.8rem; +} +.login-page .login-container .login-form .cbi-button-apply:hover, +.login-page .login-container .login-form .cbi-button-apply :focus { + opacity: 0.9; +} +.login-page .login-container footer { + box-sizing: border-box; + width: 100%; + text-align: center; + line-height: 1.6rem; + display: flex; + justify-content: space-evenly; + margin-top: auto; + padding: 0px 0px 30px; + z-index: 10; + color: #525461; + color: var(--default); + position: absolute; + bottom: 0; +} +.login-page .login-container footer .ftc { + position: absolute; + bottom: 30px; + width: 100%; +} +.login-page .login-container footer .luci-link { + display: block; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) { + .login-page .login-container .login-form { + -webkit-backdrop-filter: blur(var(--blur-radius)); + backdrop-filter: blur(var(--blur-radius)); + background-color: rgba(244, 245, 247, var(--blur-opacity)); + } +} +/*********************** +* +* Header +* +***************************/ +header { + width: 100%; + padding: 0 0 0 0; + position: relative; +} +header .container { + margin-top: rem; + padding: 0.5rem 1rem 0 1rem; +} +header .container .pull-right > * { + position: relative; + top: 0.45rem; + cursor: pointer; +} +header::after { + content: ""; + position: absolute; + height: 2rem; + width: 100%; + background-color: #5e72e4 !important; + background-color: var(--primary) !important; +} +header.bg-primary { + background-color: #5e72e4 !important; + background-color: var(--primary) !important; +} +header .fill { + padding: 0.8rem 0; + border-bottom: 0px solid rgba(255, 255, 255, 0.08) !important; +} +header .fill .container { + height: 2rem; + padding: 0 1.25rem; +} +header .fill .container .brand { + font-size: 1.5rem; + color: #fff; + color: var(--white); + font-family: "TypoGraphica"; + text-decoration: none; + padding-left: 1rem; + cursor: default; + vertical-align: text-bottom; + display: none; +} +/*********************** +* +* Footer +* +***************************/ +footer { + text-align: right; + padding: 1rem; + color: #aaa; + color: var(--footer-color); + font-size: 0.8rem; +} +footer a { + color: #aaa; + color: var(--footer-color); + text-decoration: none; +} +/*********************** +* +* Main +* +***************************/ +@keyframes anim-rotate { + 0% { + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + } + 100% { + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + } +} +.main { + top: 0rem; + bottom: 0rem; + position: relative; + height: 100%; + width: 100%; + height: calc(100% - 4rem); +} +.main .main-left { + float: left; + width: 15%; + width: calc(0% + 15rem); + height: 100%; + background-color: #fff !important; + background-color: var(--menubar-background) !important; + box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 15px -5px; + overflow-x: auto; + position: fixed; + z-index: 100; + transition: width 0.2s ease-in-out; +} +.main .main-left::-webkit-scrollbar { + width: 5px; + height: 1px; +} +.main .main-left::-webkit-scrollbar-thumb { + background-color: #f6f9fc; + background-color: var(--menubar-scrollbar-thumb); +} +.main .main-left::-webkit-scrollbar-track { + background-color: #fff; + background-color: var(--menubar-background); +} +.main .main-left .sidenav-header { + padding: 1.5rem; + text-align: center; +} +.main .main-left .sidenav-header .brand { + font-size: 1.8rem; + color: #5e72e4; + color: var(--primary); + font-family: "TypoGraphica", sans-serif; + text-decoration: none; + padding-left: 0; + cursor: default; + vertical-align: text-bottom; + white-space: nowrap; +} +.main .main-left .nav { + margin-top: 0.5rem; +} +.main .main-left .nav li { + padding: 0rem; + cursor: pointer; +} +.main .main-left .nav li a { + color: #525f7f; + color: var(--default); + display: block; +} +.main .main-left .nav li:nth-last-child(1) { + font-size: 1.2rem; +} +.main .main-left .nav li:nth-last-child(1) .menu:after { + content: ""; +} +.main .main-left .nav li.slide { + padding: 0; +} +.main .main-left .nav li.slide ul { + display: none; +} +.main .main-left .nav li.slide ul li a { + position: relative; + margin: 0.1rem 1rem 0.1rem 3rem; + padding: 0.5rem 0rem 0.5rem 0; + text-decoration: none; + white-space: nowrap; + color: #4c4c4c; + color: var(--menubar-text-color); + transition: all 0.2s; + font-size: 0.875rem; +} +.main .main-left .nav li.slide ul li a::after { + content: ""; + position: absolute; + width: 00%; + height: 2px; + left: 0; + bottom: 0; + background-color: #5e72e4; + background-color: var(--primary); + transition: all 0.2s; +} +.main .main-left .nav li.slide ul li a:hover::after { + color: #000; + color: var(--darker); + width: 100%; +} +.main .main-left .nav li.slide .menu { + display: block; + margin: 0.1rem 0.5rem 0.1rem 0.5rem; + padding: 0.675rem 0 0.675rem 2.5rem; + border-radius: 0.375rem; + text-decoration: none; + cursor: default; + font-size: 1rem; + transition: all 0.2s; + position: relative; +} +.main .main-left .nav li.slide .menu::before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + left: 0.8rem; + content: "\e915"; + color: #5e72e4; + color: var(--primary); +} +.main .main-left .nav li.slide .menu::after { + position: absolute; + right: 0.5rem; + top: 0.8rem; + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -moz-osx-font-smoothing: grayscale; + content: '\e90f'; + transition: all 0.15s ease; + color: #ced4da; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + transition: all 0.3s; +} +.main .main-left .nav li.slide .menu:hover, +.main .main-left .nav li.slide .menu.active { + cursor: pointer; + color: #fff; + background: #5e72e4; + background: var(--primary); +} +.main .main-left .nav li.slide .menu:hover a, +.main .main-left .nav li.slide .menu.active a { + color: #000; +} +.main .main-left .nav li.slide .menu:hover a::after, +.main .main-left .nav li.slide .menu.active a::after { + color: #000; + width: 100%; +} +.main .main-left .nav li.slide .menu:hover::before, +.main .main-left .nav li.slide .menu.active::before { + color: #fff !important; +} +.main .main-left .nav li.slide .menu:hover::after, +.main .main-left .nav li.slide .menu.active::after { + color: #fff; +} +.main .main-left .nav li.slide .menu.active::after { + transform: rotate(90deg); +} +.main .main-left .nav li.slide .menu[data-title=Status]:before { + content: "\e906"; + color: #5e72e4; + color: var(--primary); +} +.main .main-left .nav li.slide .menu[data-title=System]:before { + content: "\e90a"; + color: #fb6340; +} +.main .main-left .nav li.slide .menu[data-title=Services]:before { + content: "\e909"; + color: #11cdef; +} +.main .main-left .nav li.slide .menu[data-title=NAS]:before { + content: "\e90c"; + color: #f3a4b5; +} +.main .main-left .nav li.slide .menu[data-title=VPN]:before { + content: "\e90b"; + color: #aaad03; +} +.main .main-left .nav li.slide .menu[data-title=Network]:before { + content: "\e908"; + color: #8965e0; +} +.main .main-left .nav li.slide .menu[data-title=Bandwidth_Monitor]:before { + content: "\e90d"; + color: #2dce89; +} +.main .main-left .nav li.slide .menu[data-title=Docker]:before { + content: "\e911"; + color: #6699ff; +} +.main .main-left .nav li.slide .menu[data-title=Statistics]:before { + content: "\e913"; + color: #5603ad; +} +.main .main-left .nav li.slide .menu[data-title=Control]:before { + content: "\e912"; + color: #5e72e4; + color: var(--primary); +} +.main .main-left .nav li.slide .menu[data-title=Asterisk]:before { + content: "\e914"; + color: #fb6340; +} +.main .main-left .nav li.slide .menu[data-title=Logout]:before { + content: "\e907"; + color: #adb5bd; +} +.main .main-left .nav li.slide .slide-menu li a { + position: relative; + margin: 0.1rem 1rem 0.1rem 3rem; + padding: 0.5rem 0rem 0.5rem 0; + text-decoration: none; + white-space: nowrap; + color: rgba(0, 0, 0, 0.6); + transition: all 0.2s; + font-size: 0.875rem; +} +.main .main-left .nav li.slide .slide-menu li a::after { + content: ""; + position: absolute; + width: 00%; + height: 2px; + left: 0; + bottom: 0; + background-color: #5e72e4; + background-color: var(--primary); + transition: all 0.2s; +} +.main .main-left .nav li.slide .slide-menu li a:hover::after { + color: #000; + width: 100%; +} +.main .main-left .nav li.slide .slide-menu .active a { + color: #000; +} +.main .main-left .nav li.slide .slide-menu .active a::after { + color: #000; + width: 100%; +} +.main .main-left .nav li.slide:last-child > .menu::after { + content: ""; +} +.main .main-right { + width: 85%; + width: calc(100% - 15rem); + float: right; + height: auto; + transition: width 0.3s ease-in-out; +} +.main .main-right #maincontent { + position: relative; + z-index: 50; +} +.main .main-right #maincontent .container { + margin: 0 1.25rem 1rem 1.25rem; +} +.main .main-right #maincontent .container p { + color: #32325d; + line-height: 1.5em; +} +.main .main-right #maincontent .container > div:nth-child(1).alert-message.warning > a { + font: inherit; + overflow: visible; + text-transform: none; + display: inline-block; + margin-bottom: 0; + font-weight: 400; + text-align: center; + white-space: nowrap; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + min-width: 6rem; + padding: 0.5rem 1rem; + font-size: 0.9rem; + line-height: 1.42857143; + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; + margin-top: 2rem; + text-decoration: inherit; +} +.main .loading { + position: fixed; + width: 100%; + height: 100%; + z-index: 2000; + display: flex; + align-items: center; + justify-content: center; + background-color: #f8f9fe; + top: 0; +} +.main .loading span { + display: block; + text-align: center; + margin-top: 2rem; + color: #5e72e4; + color: var(--primary); + font-size: 2rem; +} +.main .loading span .loading-img { + animation: anim-rotate 2s infinite linear; + margin-right: 0.4rem; + display: inline-block; +} +.main .loading span .loading-img::before { + content: "\e603"; +} +/* button style */ +.cbi-button { + -webkit-appearance: none; + text-transform: uppercase; + height: auto; + color: rgba(0, 0, 0, 0.87); + background-color: #F0F0F0; + transition: all 0.2s ease-in-out; + display: inline-block; + padding: 0.75rem 0.8rem; + border: none; + border-radius: 0.2rem; + cursor: pointer; + -ms-touch-action: manipulation; + touch-action: manipulation; + background-image: none; + text-align: center; + vertical-align: middle; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + font-size: 0.875rem; + width: auto !important; + line-height: 1em; +} +.cbi-button:hover, +.cbi-button:focus, +.cbi-button:active { + outline: 0; + text-decoration: none; +} +.cbi-button:hover, +.cbi-button:focus { + box-shadow: 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); +} +.cbi-button:active { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); +} +.cbi-button:disabled { + cursor: not-allowed; + pointer-events: none; + opacity: 0.6; + box-shadow: none; +} +.cbi-button-check { + margin-top: 0.25rem !important; +} +form.inline + form.inline, +.cbi-button + .cbi-button { + margin-left: 0rem; +} +.cbi-button-reset, +.cbi-input-remove { + color: #fff !important; + background-color: #f0ad4e !important; + border-color: #eea236 !important; +} +.cbi-input-find, +.cbi-input-save, +.cbi-button-add, +.cbi-button-save, +.cbi-button-find, +.cbi-input-reload, +.cbi-button-reload { + color: #fff !important; + background-color: #337ab7 !important; + border-color: #2e6da4 !important; +} +.cbi-value-field .cbi-input-apply, +.cbi-button-apply, +.cbi-button-edit { + color: #fff !important; + background-color: #5e72e4 !important; + background-color: var(--primary) !important; + border-color: #5e72e4 !important; + border-color: var(--primary) !important; +} +.cbi-button-add { + margin-left: 1.5rem; +} +.node-services-vssr .ssr-button { + margin-left: 0.3rem; +} +.cbi-section-remove > .cbi-button, +.cbi-button-remove { + color: #fff !important; + background-color: #fb6340 !important; + border-color: #fb6340 !important; +} +.cbi-value-field .cbi-button-add, +.cbi-value-field .cbi-button-remove, +.cbi-value-field .cbi-button-neutral { + min-width: 2.5rem !important; +} +/* input */ +.cbi-value input[type="password"], +.cbi-value input[type="text"] { + min-width: 15rem; +} +/* select */ +.cbi-value-field .cbi-dropdown { + min-width: 15rem; +} +select { + min-width: 20rem; + appearance: none; + -webkit-appearance: none; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTY1MzQ4MDM3OTIyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI1ODMiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4qIHsgdGV4dC1zaGFkb3c6IHRyYW5zcGFyZW50IDBweCAwcHggMHB4LCByZ2JhKDAsIDAsIDAsIDAuNSkgMHB4IDBweCAwcHggIWltcG9ydGFudDsgfQo8L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMjAuNDggMjQ1Ljc2aDk4My4wNEw1MTIgNzc4LjI0eiIgcC1pZD0iMjU4NCIgZmlsbD0iIzcwNzA3MCI+PC9wYXRoPjwvc3ZnPg==') !important; + background-position: 96%; + background-size: 8px; + background-repeat: no-repeat; +} +.th[data-type="button"], +.td[data-type="button"], +.th[data-type="fvalue"], +.td[data-type="fvalue"] { + flex: 1 1 2em; + text-align: center; +} +/*textarea*/ +.cbi-input-textarea { + width: 100%; + min-height: 14rem; + padding: 0.8rem; + font-size: 0.8rem; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + color: black; +} +/* change */ +.uci-change-list { + font-family: monospace; +} +.uci-change-list ins, +.uci-change-legend-label ins { + text-decoration: none; + border: 1px solid #00FF00; + background-color: #CCFFCC; + display: block; + padding: 2px; +} +.uci-change-list del, +.uci-change-legend-label del { + text-decoration: none; + border: 1px solid #FF0000; + background-color: #FFCCCC; + display: block; + font-style: normal; + padding: 2px; +} +.uci-change-list var, +.uci-change-legend-label var { + text-decoration: none; + border: 1px solid #CCCCCC; + background-color: #EEEEEE; + display: block; + font-style: normal; + padding: 2px; +} +.uci-change-list var ins, +.uci-change-list var del { + border: none; + white-space: pre; + font-style: normal; + padding: 0px; +} +.uci-change-list ins strong { + display: inline; +} +.uci-change-legend { + padding: 5px; +} +.uci-change-legend-label { + display: flex; + align-items: center; + width: auto; + float: left; + margin-right: 2rem; +} +.uci-change-legend-label > ins, +.uci-change-legend-label > del, +.uci-change-legend-label > var { + float: left; + margin-right: 4px; + width: 10px; + height: 10px; + display: block; +} +.uci-change-legend-label var ins, +.uci-change-legend-label var del { + line-height: 0; + border: none; +} +.uci-change-list var, +.uci-change-list del, +.uci-change-list ins { + padding: 0.5rem; +} +/* other fix */ +input[type="checkbox"] { + appearance: none !important; + -webkit-appearance: none !important; + border: 1px solid #dee2e6; + width: 16px !important; + height: 16px !important; + padding: 0; + cursor: pointer; + transition: all 0.2s; + margin: 0.9rem 0.25rem 0 0.25rem; +} +input[type="checkbox"]:checked { + border: 1px solid #5e72e4; + border: 1px solid var(--primary); + background-image: url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3e%3cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3e%3c/svg%3e') !important; + background-color: #5e72e4; + background-color: var(--primary); + background-size: 70%; + background-repeat: no-repeat; + background-position: center; +} +ul li .cbi-input-checkbox { + margin: 0.5rem 0.25rem !important; +} +.cbi-input-radio { + appearance: none !important; + -webkit-appearance: none !important; + border: 1px solid #dee2e6; + width: 16px !important; + height: 16px !important; + padding: 0; + border-radius: 50%; + cursor: pointer; + transition: all 0.2s; + margin: 0.25rem 0; +} +.cbi-input-radio:checked { + border: 1px solid #5e72e4; + border: 1px solid var(--primary); + background-image: url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'-4 -4 8 8\'%3e%3ccircle r=\'3\' fill=\'%23fff\'/%3e%3c/svg%3e') !important; + background-color: #5e72e4; + background-color: var(--primary); + background-size: 70%; + background-repeat: no-repeat; + background-position: center; +} +.toggle { + position: relative; + display: block; + width: 40px; + height: 20px; + cursor: pointer; + -webkit-tap-highlight-color: transparent; + transform: translate3d(0, 0, 0); + margin: 1em 0; +} +.toggle:before { + content: ""; + position: relative; + top: 3px; + left: 3px; + width: 34px; + height: 14px; + display: block; + background: #9A9999; + border-radius: 8px; + transition: background 0.2s ease; +} +.toggle span { + position: absolute; + top: 0; + left: 0; + width: 20px; + height: 20px; + display: block; + background: white; + border-radius: 10px; + box-shadow: 0 3px 8px rgba(154, 153, 153, 0.5); + transition: all 0.2s ease; +} +.toggle span:before { + content: ""; + position: absolute; + display: block; + margin: -18px; + width: 56px; + height: 56px; + background: rgba(79, 46, 220, 0.5); + border-radius: 50%; + transform: scale(0); + opacity: 1; + pointer-events: none; +} +.cbi-input-checkbox:checked + .toggle:before { + background: #947ADA; +} +.cbi-input-checkbox:checked + .toggle span { + background: #4F2EDC; + transform: translateX(20px); + transition: all 0.2s cubic-bezier(0.8, 0.4, 0.3, 1.25), background 0.15s ease; + box-shadow: 0 3px 8px rgba(79, 46, 220, 0.2); +} +.cbi-input-checkbox:checked + .toggle span:before { + transform: scale(1); + opacity: 0; + transition: all 0.4s ease; +} +.cbi-value-field .cbi-input-checkbox, +.cbi-value-field .cbi-input-radio { + margin-top: 0.5rem; + height: 1rem; +} +.td .cbi-input-checkbox, +.td .cbi-input-radio { + margin-top: 0; +} +.cbi-value-field > input + .cbi-value-description { + padding: 0; +} +.cbi-value-field > ul > li { + display: flex; +} +.cbi-value-field > ul > li > label { + margin-top: 0rem; +} +.cbi-value-field > ul > li .ifacebadge { + background-color: #eee; + margin-left: 0.4rem; + margin-top: -0.5rem; +} +.cbi-section-table-row > .cbi-value-field .cbi-dropdown { + min-width: 7rem; +} +.cbi-section-create { + margin: 0; + padding-left: 1rem; + align-items: center; +} +.cbi-section-create > * { + margin: 0.25rem; +} +.cbi-section-remove { + padding: 0.5rem; +} +div.cbi-value var, +td.cbi-value-field var, +.td.cbi-value-field var { + font-style: italic; + color: #0069D6; +} +small { + font-size: 90%; + white-space: normal; + line-height: 1.42857143; +} +.cbi-button-up, +.cbi-button-down { + display: inline-block; + min-width: 0; + padding: 0.2rem 0.6rem; + font-size: 1.2rem; + color: #5e72e4 !important; + color: var(--primary) !important; +} +.cbi-optionals { + padding: 1rem 1rem 0 1rem; + border-top: 1px solid #CCC; +} +.cbi-dropdown-container { + position: relative; +} +.cbi-tooltip-container { + cursor: help; +} +.cbi-tooltip { + position: absolute; + z-index: 1000; + left: -1000px; + opacity: 0; + transition: opacity 0.25s ease-out; + pointer-events: none; + box-shadow: 0 0 2px #444; +} +.cbi-tooltip-container:hover .cbi-tooltip { + left: auto; + opacity: 1; + transition: opacity 0.25s ease-in; +} +.cbi-map-descr + fieldset { + margin-top: 1rem; +} +.cbi-section > legend { + display: none !important; +} +.cbi-section-error { + padding: 1.5rem; + color: #fb6340; + font-weight: 600; +} +fieldset > fieldset { + margin: 0; + padding: 0; + border: none; + box-shadow: none; +} +.zonebadge .cbi-tooltip { + padding: 0.25rem; + background: inherit; + margin: -1.5rem 0 0 -0.5rem; +} +.zonebadge-empty { + background: repeating-linear-gradient(45deg, rgba(204, 204, 204, 0.5), rgba(204, 204, 204, 0.5) 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px); + color: #404040; +} +.zone-forwards { + display: flex; + min-width: 10rem; +} +.zone-forwards > * { + flex: 1 1 45%; +} +.zone-forwards > span { + flex-basis: 10%; + text-align: center; + padding: 0 0.25rem; +} +.zone-forwards .zone-src, +.zone-forwards .zone-dest { + display: flex; + flex-direction: column; +} +#diag-rc-output > pre { + background-color: #fff; + display: block; + padding: 8.5px; + margin: 0 0 18px; + line-height: 1.5rem; + white-space: pre-wrap; + word-wrap: break-word; + font-size: 1.4rem; + color: #404040; +} +input[name="ping"], +input[name="traceroute"], +input[name="nslookup"] { + width: 80%; +} +/* fix progress bar */ +#swaptotal > div, +#swapfree > div, +#memfree > div, +#membuff > div, +#conns > div, +#memtotal > div { + width: 100% !important; + height: 1.6rem !important; + line-height: 1.6rem; + border-radius: 0.25rem; +} +#swaptotal > div > div, +#swapfree > div > div, +#memfree > div > div, +#membuff > div > div, +#conns > div > div, +#memtotal > div > div { + height: 100% !important; + background-color: #5e72e4 !important; + background-color: var(--primary) !important; + background-image: url(../img/trafficbar.png); + background-position: left top; + animation: sparkle 1500ms linear infinite; +} +/* fix multiple table */ +table table, +.table .table { + border: none; +} +.cbi-value-field table, +.cbi-value-field .table { + border: none; +} +td > table > tbody > tr > td, +.td > .table > .tbody > .tr > .td { + border: none; +} +.cbi-value-field > table > tbody > tr > td, +.cbi-value-field > .table > .tbody > .tr > .td { + border: none; +} +/* button style */ +.cbi-page-actions .cbi-button-apply, +.cbi-section-actions .cbi-button-edit, +.cbi-button-edit.important, +.cbi-button-apply.important, +.cbi-button-reload.important, +.cbi-button-action.important { + color: #fff; + background-color: #337ab7; +} +.cbi-page-actions .cbi-button-save, +.cbi-button-add.important, +.cbi-button-save.important, +.cbi-button-positive.important { + color: #fff; + background-color: #5bc0de; +} +.cbi-button-remove.important, +.cbi-button-reset.important, +.cbi-button-negative.important { + color: #fff; + background-color: #d9534f; +} +.cbi-button-find, +.cbi-button-link, +.cbi-button-neutral { + color: #fff !important; + border: 1px solid #f0ad4e !important; + background-color: #f0ad4e !important; +} +.cbi-button-edit, +.cbi-button-apply, +.cbi-button-reload, +.cbi-button-action { + color: #2e6da4; + border: 1px solid #2e6da4; + background-color: transparent; +} +.cbi-page-actions .cbi-button-apply + .cbi-button-save, +.cbi-button-add, +.cbi-button-save, +.cbi-button-positive { + color: #46b8da; + border: 1px solid #46b8da; + background-color: transparent; +} +.cbi-section-remove > .cbi-button, +.cbi-button-remove, +.cbi-button-reset, +.cbi-button-negative { + color: #fff !important; + border: 1px solid #d43f3a !important; + background-color: #fb6340 !important; +} +.cbi-page-actions .cbi-button-link:first-child { + float: left; +} +.a-to-btn { + text-decoration: none; +} +/* table */ +.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { + width: auto !important; + background-color: #e9ecef; + background-color: var(--lighter); +} +.td.cbi-section-actions { + text-align: right; + vertical-align: middle; +} +.td.cbi-section-actions > * { + display: flex; +} +.td.cbi-section-actions > * > *, +.td.cbi-section-actions > * > form > * { + flex: 1 1 4em; + margin: 0 1px; +} +.td.cbi-section-actions > * > form { + display: inline-flex; + margin: 0; +} +/* desc */ +/* luci */ +.hidden { + display: none; +} +.left, +.left::before { + text-align: left !important; +} +.right, +.right::before { + text-align: right !important; +} +.center, +.center::before { + text-align: center !important; +} +.top { + align-self: flex-start !important; + vertical-align: top !important; +} +.bottom { + align-self: flex-end !important; + vertical-align: bottom !important; +} +.inline { + display: inline; +} +.cbi-page-actions { + border-top: 0px solid #eee; + padding-top: 0rem; + text-align: right; +} +#xhr_poll_status { + cursor: pointer; + display: inline-block; +} +#xhr_poll_status > .label.success { + background-color: #fff !important; + color: #32325d !important; +} +.label { + padding: 0.3rem 0.8rem; + font-size: 0.8rem; + font-weight: bold; + color: #ffffff !important; + text-transform: uppercase; + white-space: nowrap; + background-color: #bfbfbf; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + text-shadow: none; + text-decoration: none; +} +.notice { + background-color: #5BC0DE; +} +.showSide { + display: none; + color: #fff; + font-size: 1.4rem; +} +.darkMask { + width: 100%; + height: 100%; + position: fixed; + background-color: rgba(0, 0, 0, 0.56); + z-index: 99; + left: 0; + top: 0; + display: none; +} +#cbi-firewall-redirect table *, +#cbi-network-switch_vlan table *, +#cbi-firewall-zone table * { + font-size: small; +} +#cbi-firewall-redirect table input[type="text"], +#cbi-network-switch_vlan table input[type="text"], +#cbi-firewall-zone table input[type="text"] { + width: 5rem; +} +#cbi-firewall-redirect table select, +#cbi-network-switch_vlan table select, +#cbi-firewall-zone table select { + min-width: 3.5rem; +} +#cbi-network-switch_vlan .th, +#cbi-network-switch_vlan .td { + flex-basis: 12%; +} +/* language fix */ +body.lang_pl.node-main-login .cbi-value-title { + width: 12rem; +} +/* applyreboot fix */ +#applyreboot-container { + margin: 2rem; +} +#applyreboot-section { + margin: 2rem; + line-height: 300%; +} +.table { + display: table; + position: relative; + color: #525f7f; + border-collapse: collapse; +} +.tr { + display: table-row; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); +} +.thead { + display: table-header-group; +} +.tbody { + display: table-row-group; +} +.tfoot { + display: table-footer-group; +} +.td, +.th { + vertical-align: middle; + text-align: center; + display: table-cell; + padding: 1rem; + white-space: nowrap; +} +.th { + font-weight: bold; +} +.tr.placeholder { + height: 4em; +} +.tr.placeholder > .td { + position: absolute; + left: 0; + right: 0; + bottom: 0; + text-align: center; + background: inherit; +} +.table[width="33%"], +.th[width="33%"], +.td[width="33%"] { + width: 33%; + padding-left: 1.5rem; + padding-right: 1.5rem; +} +.table[width="100%"], +.th[width="100%"], +.td[width="100%"] { + width: 100%; +} +.table-titles .th { + padding: 0.75rem 1rem; + color: #8898aa; + background-color: #f6f9fc; +} +.col-1 { + flex: 1 1 30px !important; + -webkit-flex: 1 1 30px !important; +} +.col-2 { + flex: 2 2 60px !important; + -webkit-flex: 2 2 60px !important; +} +.col-3 { + flex: 3 3 90px !important; + -webkit-flex: 3 3 90px !important; +} +.col-4 { + flex: 4 4 120px !important; + -webkit-flex: 4 4 120px !important; +} +.col-5 { + flex: 5 5 150px !important; + -webkit-flex: 5 5 150px !important; +} +.col-6 { + flex: 6 6 180px !important; + -webkit-flex: 6 6 180px !important; +} +.col-7 { + flex: 7 7 210px !important; + -webkit-flex: 7 7 210px !important; +} +.col-8 { + flex: 8 8 240px !important; + -webkit-flex: 8 8 240px !important; +} +.col-9 { + flex: 9 9 270px !important; + -webkit-flex: 9 9 270px !important; +} +.col-10 { + flex: 10 10 300px !important; + -webkit-flex: 10 10 300px !important; + white-space: inherit; +} +.cbi-rowstyle-2 .cbi-button-up, +.cbi-rowstyle-2 .cbi-button-down { + background-color: #FFF !important; +} +.cbi-button-up, +.cbi-button-down, +.cbi-value-helpicon, +.showSide, +.main > .loading > span { + font-family: 'argon' !important; + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.cbi-button-up { + transform: rotate(180deg); +} +select { + padding: 0.36rem 0.8rem; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; +} +select, +input { + font-size: 0.875rem; + transition: all 0.15s ease-in-out; + line-height: 1.5; + padding: 0.625rem 0.75rem; + color: #8898aa; + border: 1px solid #dee2e6; + border-radius: 0.25rem; + background-color: #fff; + background-clip: padding-box; + box-shadow: 0 3px 2px rgba(233, 236, 239, 0.05); + outline: none; + transition: box-shadow 0.15s ease; + margin: 0.25rem; +} +select:not([multiple="multiple"]):focus, +input:focus { + border-color: #5e72e4; + border-color: var(--primary); + outline: 0; + background-color: #fff; + box-shadow: 0 3px 9px rgba(50, 50, 9, 0), 3px 4px 8px rgba(94, 114, 228, 0.1); +} +select[multiple="multiple"] { + height: auto; +} +code { + color: #0099CC; +} +abbr { + color: #005470; + text-decoration: underline; + cursor: help; +} +hr { + margin: 1rem 0; + border-color: #EEE; + opacity: 0.1; +} +.kpi { + font-size: 0.875rem; +} +fieldset[id^="cbi-apply-"] { + position: fixed; + z-index: 200; + width: 20rem; + margin-left: -10rem; + margin-top: -5rem; + height: 10rem; + left: 50%; + top: 50%; + padding: 1rem; + box-sizing: border-box; + font-size: 1.2rem; + text-align: center; + box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 15px -5px; + transition: all 0.3s; +} +[id^="cbi-apply-"] > .panel-title { + border-bottom: none; +} +[id^="cbi-apply-"] > [id^="cbi-apply-"] { + position: initial; + width: auto; + height: auto; + font-size: 0.875rem; + margin-left: 0rem; + margin-top: 0.8rem; + display: block; +} +.cbi-section > h3:first-child, +.panel-title { + font-size: 1.125rem; + width: 100%; + display: block; + margin: 0; + padding: 0.8755rem 1.5rem; + border-bottom: 1px solid #ddd; + letter-spacing: 0.1rem; + color: #32325d; + font-weight: normal; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +table, +.table { + width: 100%; +} +table > tbody > tr > td, +table > tbody > tr > th, +table > tfoot > tr > td, +table > tfoot > tr > th, +table > thead > tr > td, +table > thead > tr > th, +.table > .tbody > .tr > .td, +.table > .tbody > .tr > .th, +.table > .tfoot > .tr > .td, +.table > .tfoot > .tr > .th, +.table > .thead > .tr > .td, +.table > .thead > .tr > .th { + padding: 0.5rem; + border-top: 1px solid #ddd; +} +.cbi-section-table-cell { + white-space: nowrap; + align-self: flex-end; + flex: 1 1 auto; +} +.cbi-section-table { + font-size: 0.875rem; + border: none; + margin: 0 !important; +} +.status-bar { + font-size: 0.875rem; +} +.cbi-section-table-row:last-child { + margin-bottom: 0; +} +.cbi-section-table-row > .cbi-value-field .cbi-input-select, +.cbi-section-table-row > .cbi-value-field .cbi-input-text, +.cbi-section-table-row > .cbi-value-field .cbi-input-password, +.cbi-section-table-row > .cbi-value-field .cbi-dropdown { + width: 100%; +} +.cbi-section-table-row > .cbi-value-field [data-dynlist] > input, +.cbi-section-table-row > .cbi-value-field input.cbi-input-password { + width: calc(100% - 1.5rem); +} +div > table > tbody > tr:nth-of-type(2n), +div > .table > .tbody > .tr:nth-of-type(2n) { + background-color: #f9f9f9; +} +div > table > tbody > tr:nth-of-type(2n), +div > .table > .tbody > .tr:nth-of-type(2n) { + background-color: #f9f9f9; +} +.danger { + background-color: #f5365c !important; + background-color: var(--danger) !important; + color: #fff !important; +} +.warning { + background-color: #fb6340 !important; + background-color: var(--warning) !important; + color: #fff !important; +} +.notice { + background-color: #5e72e4 !important; + background-color: var(--primary) !important; + color: #fff !important; +} +.success { + background-color: #2dce89 !important; + background-color: var(--success) !important; + color: #fff !important; +} +.errorbox, +.alert-message { + margin: 0 0 0 0; + padding: 1rem 2rem; + border: 0; + font-weight: normal; + font-style: normal; + line-height: 1.5em; + font-family: inherit; + min-width: inherit; + overflow: auto; + border-radius: 0.3rem; + background-color: #FFF; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); +} +.errorbox { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.alert-message.warning { + margin-bottom: 1rem; +} +.error { + color: red; +} +h1 { + font-size: 2rem; + padding-bottom: 10px; + border-bottom: 1px solid #eee; +} +h2 { + margin: 0 0 1rem 0; + font-size: 1.25rem; + letter-spacing: 0.1rem; + padding: 1rem 1.5rem; + color: #32325d; + border-radius: 0.375rem; + background: #fff; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); +} +#cbi-dropbear h2, +#cbi-dropbear .cbi-map-descr, +#cbi-dropbear .cbi-map-descr abbr, +#cbi-rc h2, +#cbi-rc .cbi-map-descr, +#cbi-distfeedconf h2, +#cbi-distfeedconf .cbi-map-descr, +#cbi-customfeedconf h2, +#cbi-customfeedconf .cbi-map-descr, +#cbi-download h2, +#cbi-filelist h2 { + color: #32325d !important; +} +h3 { + font-size: 1.15rem; + width: 100%; + display: block; + margin: 1rem 0; + color: #32325d; + font-weight: bold; + letter-spacing: 0.1rem; + padding: 1rem 1.5rem; + border-radius: 0.375rem; + background: #fff; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); +} +fieldset { + margin: 1.25rem 0 0 0; + padding: 0; + font-weight: normal; + font-style: normal; + line-height: 1; + font-family: inherit; + min-width: inherit; + overflow-x: auto; + overflow-y: hidden; + border: 1px solid rgba(0, 0, 0, 0.05); + border-radius: 0.375rem; + background-color: #fff; + box-shadow: 0 0 2rem 0 rgba(136, 152, 170, 0.15); + -webkit-overflow-scrolling: touch; +} +fieldset > legend { + display: none !important; +} +fieldset > fieldset { + margin: 0; + padding: 0; + border: none; + box-shadow: none; +} +fieldset.cbi-section p { + padding: 1em; +} +.panel-title { + width: 100%; + display: block; + margin-bottom: 0; + padding: 0.8755rem 1.5rem; + background-color: #fff; + border-bottom: 1px solid #ddd; + margin-bottom: 0rem; + letter-spacing: 0.1rem; + color: #32325d; + font-weight: 600; +} +table { + border-spacing: 0; + border-collapse: collapse; + width: 100%; +} +table > tbody > tr > td, +table > tfoot > tr > td, +table > thead > tr > td { + font-size: 0.875rem; + color: #525f7f; + line-height: 1.4em; + vertical-align: middle !important; + padding: 0.8rem 1.5rem; + border-top: 1px solid #ddd; +} +table > tbody > tr > th, +table > tfoot > tr > th, +table > thead > tr > th { + padding-right: 1.5rem; + padding-left: 1.5rem; + color: #8898aa; + background-color: #f6f9fc; + font-size: 0.65rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + letter-spacing: 1px; + text-transform: uppercase; + border-bottom: 1px solid #e9ecef; +} +table > tbody > tr:first-child > td, +table > tfoot > tr:first-child > td, +table > thead > tr:first-child > td { + border-top: 0px; +} +.cbi-section-table-cell { + text-align: center; +} +.cbi-section-table-row { + text-align: center; +} +fieldset > table > tbody > tr:nth-of-type(2n) { + background-color: #f9f9f9; +} +/* fix multiple table */ +table table { + border: none; +} +.cbi-value-field table { + border: none; +} +td > table > tbody > tr > td { + border: none; +} +.cbi-value-field > table > tbody > tr > td { + border: none; +} +/* table */ +.tabs { + margin: 0 0 1rem 0; + padding: 0 1rem; + background-color: #FFFFFF; + border-radius: 0.375rem; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + white-space: nowrap; + overflow-x: auto; +} +.tabs::-webkit-scrollbar { + width: 1px; + height: 5px; +} +.tabs::-webkit-scrollbar-thumb { + background-color: #f6f9fc; +} +.tabs::-webkit-scrollbar-track { + background-color: #fff; +} +.tabs li[class~="active"], +.tabs li:hover { + cursor: pointer; + border-bottom: 0.18751rem solid #5e72e4; + border-bottom: 0.18751rem solid var(--primary); + color: #5e72e4; + color: var(--primary); + background-color: #dce1fe; + margin-bottom: 0; + border-radius: 0; +} +.tabs li[class~="active"] a, +.tabs li:hover a { + color: #5e72e4; + color: var(--primary); +} +.tabs li { + font-size: 0.875rem; + display: inline-block; + padding: 0.875rem 0rem; + border-bottom: 0.18751rem solid rgba(0, 0, 0, 0); +} +.tabs li a { + text-decoration: none; + color: #404040; + padding: 0.5rem 0.8rem; +} +.tabs li:hover { + border-bottom: 0.18751rem solid #5e72e4; + border-bottom: 0.18751rem solid var(--primary); +} +.cbi-tabmenu { + color: white; + padding: 0.5rem 1rem 0 1rem; + white-space: nowrap; + overflow-x: auto; + border-bottom: 1px solid #ddd !important; +} +.cbi-tabmenu::-webkit-scrollbar { + width: 1px; + height: 5px; +} +.cbi-tabmenu::-webkit-scrollbar-thumb { + background-color: #f6f9fc; +} +.cbi-tabmenu::-webkit-scrollbar-track { + background-color: #fff; +} +.cbi-tabmenu li { + background: #dce3e9; + display: inline-block; + font-size: 0.875rem; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; + padding: 0.5rem 0rem; + border-bottom: 0.18751rem solid rgba(0, 0, 0, 0); +} +.cbi-tabmenu li a { + text-decoration: none; + color: #404040; + padding: 0.5rem 0.8rem; +} +.cbi-tabmenu li:hover { + cursor: pointer; + border-bottom: 0.18751rem solid #5e72e4; + border-bottom: 0.18751rem solid var(--primary); + color: #5e72e4; + color: var(--primary); + background-color: #dce1fe; + margin-bottom: 0; +} +.cbi-tabmenu li:hover a { + color: #525f7f; +} +.cbi-tabmenu li[class~="cbi-tab"] { + border-bottom: 0.18751rem solid #5e72e4; + border-bottom: 0.18751rem solid var(--primary); + color: var(--primary); + background-color: #dce1fe; + margin-bottom: 0; +} +.cbi-tabmenu li[class~="cbi-tab"] a { + color: #5e72e4; + color: var(--primary); +} +.cbi-tab-descr { + margin: 1rem 1.5rem; + color: #32325d; + font-size: small; + line-height: 1.5em; +} +.cbi-dropdown { + display: inline-flex; + cursor: pointer; + position: relative; + padding: 0; + height: auto; +} +.cbi-dropdown:focus { + outline: 2px solid #4b6e9b; +} +.cbi-dropdown > ul { + margin: 0 !important; + padding: 0; + list-style: none; + overflow-x: hidden; + overflow-y: auto; + display: flex; + width: 100%; +} +.cbi-dropdown > ul.preview { + display: none; +} +.cbi-dropdown > .open { + border: 0px outset #eee; + flex-basis: 15px; + background: #fff; +} +.cbi-dropdown > .open, +.cbi-dropdown > .more { + flex-grow: 0; + flex-shrink: 0; + display: flex; + flex-direction: column; + justify-content: center; + text-align: center; + line-height: 2em; + padding: 0 0.25em; +} +.cbi-dropdown > .more, +.cbi-dropdown > ul > li[placeholder] { + color: #777; + font-weight: bold; + text-shadow: 1px 1px 0px #fff; + display: none; +} +.cbi-dropdown > ul > li { + display: none; + padding: 0.25em; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + flex-shrink: 1; + flex-grow: 1; + align-items: center; + align-self: center; + min-height: 20px; +} +.cbi-dropdown > ul > li .hide-open { + display: initial; +} +.cbi-dropdown > ul > li .hide-close { + display: none; +} +.cbi-dropdown > ul > li[display]:not([display="0"]) { + border-left: 1px solid #ccc; +} +.cbi-dropdown[empty] > ul { + max-width: 1px; +} +.cbi-dropdown > ul > li > form { + display: none; + margin: 0; + padding: 0; + pointer-events: none; +} +.cbi-dropdown > ul > li img { + vertical-align: middle; + margin-right: 0.25em; +} +.cbi-dropdown > ul > li > form > input[type="checkbox"] { + margin: 0; + height: auto; +} +.cbi-dropdown > ul > li input[type="text"] { + height: 20px; +} +.cbi-dropdown[open] { + position: relative; + border-color: #5e72e4; + border-color: var(--primary); +} +.cbi-dropdown[open] > ul.dropdown { + display: block; + background: #fff; + border-color: #5e72e4; + border-color: var(--primary); + position: absolute; + z-index: 1000; + max-width: none; + min-width: 100%; + width: auto; + box-shadow: 0 1px 3px rgba(50, 50, 93, 0.15), 0 1px 0 rgba(0, 0, 0, 0.05); +} +.cbi-dropdown > ul > li[display], +.cbi-dropdown[open] > ul.preview, +.cbi-dropdown[open] > ul.dropdown > li, +.cbi-dropdown[multiple] > ul > li > label, +.cbi-dropdown[multiple][open] > ul.dropdown > li, +.cbi-dropdown[multiple][more] > .more, +.cbi-dropdown[multiple][empty] > .more { + flex-grow: 1; + display: flex; + align-items: center; +} +.cbi-dropdown[empty] > ul > li, +.cbi-dropdown[optional][open] > ul.dropdown > li[placeholder], +.cbi-dropdown[multiple][open] > ul.dropdown > li > form { + display: block; +} +.cbi-dropdown[open] > ul.dropdown > li .hide-open { + display: none; +} +.cbi-dropdown[open] > ul.dropdown > li .hide-close { + display: initial; +} +.cbi-dropdown[open] > ul.dropdown > li { + border-bottom: 1px solid #ccc; +} +.cbi-dropdown[open] > ul.dropdown > li[selected] { + background: #b0d0f0; +} +.cbi-dropdown[open] > ul.dropdown > li.focus { + background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%); +} +.cbi-dropdown[open] > ul.dropdown > li:last-child { + margin-bottom: 0; + border-bottom: none; +} +.cbi-dropdown[disabled] { + pointer-events: none; + opacity: 0.6; +} +.cbi-dropdown .zonebadge { + width: 100%; +} +.cbi-dropdown[open] .zonebadge { + width: 100%; +} +.cbi-dropdown { + font-size: 0.875rem; + transition: all 0.15s ease-in-out; + line-height: 1.5; + height: calc(2.75rem + 2px); + padding: 0m; + color: #8898aa; + border: 1px solid #dee2e6; + border-radius: 0.25rem; + background-color: #fff; + background-clip: padding-box; + box-shadow: 0 3px 2px rgba(233, 236, 239, 0.05); + margin: 0.25rem; +} +.cbi-value-field .cbi-dropdown { + min-width: 20rem; +} +.cbi-value-field .cbi-dropdown .zonebadge > .ifacebadge { + padding: 0rem 1rem; + margin: 0rem 0.3rem; + border: 1px solid #6C6C6C; +} +select[multiple="multiple"] { + height: auto; +} +.cbi-dropdown > ul { + margin: 0 !important; + padding: 0; + list-style: none; + overflow-x: hidden; + overflow-y: hidden; + display: flex; + width: 100%; +} +.cbi-section > legend { + display: none !important; +} +.cbi-section-remove:nth-of-type(2n), +.cbi-section-node:nth-of-type(2n) { + background-color: #f9f9f9; +} +.cbi-section-node-tabbed { + padding: 0; + margin-top: 0; +} +.cbi-section-node { + background: #fff; + border: 0; + border-radius: 0.375rem; + margin-bottom: 0px; + box-shadow: 0 0 0rem 0 rgba(136, 152, 170, 0.15); + overflow-x: auto; + overflow-y: hidden; + padding: 0rem 0; +} +#cbi-network-lan.cbi-section-node { + overflow-x: visible; + overflow-y: visible; +} +.cbi-section-node .cbi-value { + padding: 0.3rem 1rem 0.3rem 1rem; +} +.cbi-tabcontainer > .cbi-value:nth-of-type(2n) { + background-color: #f9f9f9; +} +.cbi-value-field, +.cbi-value-description { + display: table-cell; + line-height: 1.6; + font-size: 0.875rem; +} +.cbi-value-helpicon > img { + display: none; +} +.cbi-value-helpicon:before { + content: "\f059"; +} +.cbi-value-description { + font-size: small; + opacity: 0.5; + padding: 0.5rem; +} +.cbi-value-title { + word-wrap: break-word; + font-size: 0.875rem; + line-height: 1.6; + color: #525f7f; + padding: 0.7rem; + padding-left: 0; + width: 23rem; + float: left; + text-align: right; + display: table-cell; +} +.cbi-value { + padding: 0.3rem 1rem; + display: inline-block; + width: 100%; +} +.cbi-section-table-descr > .cbi-section-table-cell, +.cbi-section-table-titles > .cbi-section-table-cell { + border: none; +} +.cbi-rowstyle-1 { + background-color: #fff; +} +.cbi-rowstyle-2 { + background-color: #fefefe; +} +.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { + width: auto !important; +} +/* desc */ +.cbi-section-descr { + padding: 1rem 1.5rem; + font-size: 0.7rem; + font-weight: 600; + line-height: 1.5em; + color: #525f7f; +} +.cbi-map-descr { + margin: 0rem 1.5rem 1rem 1.5rem; + color: #32325d; + font-size: small; + line-height: 1.5em; +} +/* input */ +.cbi-value input[type="password"], +.cbi-value input[type="text"] { + min-width: 20rem; +} +input[type="checkbox"] { + height: auto; +} +/* select */ +.cbi-value-field .ifacebadge { + display: inline-flex; + border-bottom: 0px solid #CCCCCC; + padding: 0.5rem 1rem; + box-shadow: none; +} +td > .ifacebadge { + background-color: #F0F0F0; + font-size: 0.9rem; +} +.ifacebadge > img { + float: right; + margin: 0 0.3rem; +} +/*textarea*/ +.cbi-input-textarea { + width: 100%; + border: 0; + outline: none; + min-height: 14rem; + padding: 0.8rem; + font-size: 0.8rem; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + color: black; +} +#syslog { + width: 100%; + min-height: 15rem; + padding: 1rem; + line-height: 1.4em; + font-size: small; + color: #1e1e1e; + border-radius: 0; + background-color: #fff; + border: none; + outline: none; +} +.ifacebadge { + display: inline-flex; + border-bottom: 0px solid #CCCCCC; + padding: 0.5rem 1rem; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + background: #fff; +} +td > .ifacebadge, +.td > .ifacebadge { + background-color: #e9ecef; + font-size: 0.9rem; + border-radius: 0.2rem; +} +.ifacebadge > em, +.ifacebadge > img { + display: inline-block; + margin: 0 0.3rem; + align-self: flex-start; +} +.ifacebadge span { + line-height: 1.6em; +} +.network-status-table { + display: flex; + flex-wrap: wrap; +} +.network-status-table .ifacebox { + margin: 1rem; + flex-grow: 1; +} +.network-status-table .ifacebox-body { + display: flex; + flex-direction: column; + height: 100%; +} +.network-status-table .ifacebox-body > span { + flex: 10 10 auto; + height: 100%; + line-height: 1.7em; + padding-left: 2rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.network-status-table .ifacebox-body > div { + display: flex; + flex-wrap: wrap; +} +.network-status-table .ifacebox-body .ifacebadge { + flex: 1 1 auto; + margin: 0; + padding: 0.5em; + min-width: 220px; + background-color: #fff; + align-items: center; +} +.ifacebox { + border: 1px solid #ccc; + border-radius: 0.375rem; + background-color: #f9f9f9; + display: inline-flex; + flex-direction: column; + line-height: 1.2em; + min-width: 100px; + overflow: hidden; +} +.ifacebox-head { + padding: 1rem; + background: #eee; +} +.ifacebox-head.active { + background: #5e72e4; + background: var(--primary); + color: #fff; +} +.ifacebox-body { + padding: 0.5em; +} +.cbi-image-button { + margin-left: 0.5rem; +} +#iwsvg, +#iwsvg2, +#bwsvg { + border: none !important; + border-radius: 0.375rem; + box-shadow: 0 0 2rem 0 rgba(136, 152, 170, 0.15); + overflow: hidden; +} +.cbi-image-button { + margin-left: 0.5rem; +} +.zonebadge { + padding: 0.2rem 0.5rem; + display: inline-block; + cursor: pointer; +} +.zonebadge > .ifacebadge { + padding: 0.2rem 1rem; + margin: 0.3rem; + border: 1px solid #6C6C6C; +} +.zonebadge > input[type="text"] { + padding: 0.16rem 1rem; + min-width: 10rem; + margin-top: 0.3rem; +} +.cbi-value-field .cbi-input-checkbox, +.cbi-value-field .cbi-input-radio { + margin: 0.9rem 0.25rem 0 0.25rem; + height: 1rem; + line-height: 1.6; +} +.cbi-input-checkbox { + margin: 0.9rem 0.25rem 0 0.25rem; +} +.cbi-value-field .cbi-input-radio { + margin: 0rem 0.25rem; +} +.cbi-value-field > input + .cbi-value-description { + padding: 0; +} +.cbi-value-field > ul > li { + display: flex; + align-items: center; + font-size: 0.875rem; +} +.cbi-value-field > ul > li .ifacebadge { + font-size: 0.875rem; + background-color: #eee; + display: flex; + align-items: center; + margin-left: 0rem; + margin-top: 0rem; +} +.cbi-section-table-row > .cbi-value-field .cbi-input-select { + min-width: 7rem; +} +.cbi-section-create > .cbi-button-add { + margin: 0.5rem 0.5rem 0.5rem 0.5rem; +} +.cbi-section-remove { + padding: 0.5rem; +} +div.cbi-value var, +td.cbi-value-field var { + font-style: italic; + color: #0069D6; +} +small { + font-size: 90%; + white-space: normal; + line-height: 1.42857143; +} +.cbi-optionals { + padding: 1rem 1rem 0 1rem; + border-top: 1px solid #CCC; +} +input[name="ping"], +input[name="traceroute"], +input[name="nslookup"] { + width: 80%; +} +.label { + padding: 0.3rem 0.8rem; + font-size: 0.8rem; + font-weight: bold; + color: #fff !important; + text-transform: uppercase; + white-space: nowrap; + background-color: #32325d; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + text-shadow: none; + text-decoration: none; +} +/* fix status overview */ +.node-status-overview > .main fieldset:nth-child(4) td:nth-child(2) { + white-space: normal; +} +.node-status-overview > .main #wan4_i, +.node-status-overview > .main #wan6_i { + width: 80px !important; +} +/* fix status processes */ +.node-status-processes > .main table tr td:nth-child(3) { + white-space: normal; +} +/* fix system reboot */ +.node-system-reboot > .main > .main-right p, +.node-system-reboot > .main > .main-right h3 { + padding-left: 2rem; + color: #fff; +} +/* fix Services Network Shares*/ +.node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-title { + margin-bottom: 1rem; + width: auto; +} +.node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-field { + display: list-item; +} +.node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-description { + padding-top: 1rem; +} +/* fix System Software*/ +.node-system-packages > .main table tr td:nth-child(1) { + width: auto !important; +} +.node-system-packages > .main table tr td:nth-last-child(1) { + white-space: normal; + font-size: small; + color: #404040; +} +.node-system-packages > .main .cbi-tabmenu > li > a, +.tabs > li > a { + padding: 0.5rem 0.8rem; +} +.node-system-packages > .main .cbi-value > pre { + background-color: #eee; + padding: 0.5rem; + overflow: auto; +} +.node-system-packages > .main .cbi-page-actions { + padding: 1rem 0; +} +.node-system-packages > .main .cbi-section-node:first-child .cbi-value-last { + line-height: 1.8em; +} +.node-system-packages > .main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] { + border: 1px solid #999999 !important; + width: 100% !important; + background-color: #fff !important; + height: 1.4rem !important; + border-radius: 0.25rem; + margin: 0.5rem 0; + overflow: hidden; +} +.node-system-packages > .main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] div { + border-right: 0 !important; + background-color: #5e72e4 !important; + background-color: var(--primary) !important; +} +.node-system-leds .cbi-section em { + display: block; +} +.cbi-tabmenu + .cbi-section { + margin-top: 0; +} +.cbi-section { + background: #fff; + border: 0; + border-radius: 0.375rem; + box-shadow: 0 0 2rem 0 rgba(136, 152, 170, 0.15); + overflow-x: auto; + overflow-y: hidden; +} +.cbi-section em { + padding: 0.75rem 1.5rem; + font-size: 0.7rem; + font-weight: 600; + color: #525f7f; + text-align: center; +} +.cbi-section h4 { + padding: 0.75rem 1.5rem; + font-size: 0.7rem; + font-weight: 600; + color: #525f7f; +} +#content_syslog { + border-radius: 0.375rem; + box-shadow: 0 0 2rem 0 rgba(136, 152, 170, 0.15); + overflow: hidden; +} +.node-system-packages .cbi-section-node .cbi-value { + padding: 0.5rem 1rem; + font-size: 0.875rem; +} +.node-system-packages br { + display: none; +} +/* fix network firewall*/ +.node-network-firewall > .main .cbi-section-table-row > .cbi-value-field .cbi-input-select { + min-width: 4rem; +} +.node-network-firewall .cbi-section-table { + width: 100% !important; +} +.node-status-iptables fieldset, +.node-system-packages fieldset, +.node-system-flashops fieldset { + margin-top: 0; +} +.node-status-iptables .cbi-tabmenu, +.node-system-packages .cbi-tabmenu, +.node-system-flashops .cbi-tabmenu { + border: none; +} +.node-system-flashops form.inline + form.inline { + margin-left: 0; +} +.Changes .cbi-section { + font-size: 0.875rem; + padding: 1rem; +} +.node-network-diagnostics { + font-size: 0.875rem; +} +.node-network-diagnostics #diag-rc-output { + display: block; + padding: 1rem; +} +.node-network-diagnostics #diag-rc-output pre { + font-size: 0.875rem; +} +.node-network-diagnostics .cbi-section div { + padding: 0 1.5rem; +} +.node-network-diagnostics input { + margin: 0.25rem !important; +} +/* fix nlbw/display*/ +#detail-bubble.in { + z-index: 500; +} +.node-nlbw-display .cbi-section ul { + padding: 0.875rem 1.5rem; +} +.node-nlbw-backup form { + margin-left: 1.5rem; +} +.node-nas-usb_printer em { + display: block; +} +@media screen and (max-width: 1600px) { + .main .main-left { + width: calc(0% + 13rem); + } + .main .main-right { + width: calc(100% - 13rem); + } + .cbi-button { + /*padding: 0.3rem 1.5rem;*/ + font-size: 0.8rem; + } + header > .container > .pull-right > * { + top: 0.35rem; + } + .label { + padding: 0.2rem 0.6rem; + } + .cbi-value-title { + width: 15rem; + padding-right: 0.6rem; + } + fieldset { + padding: 0; + } + .cbi-input-textarea { + font-size: small; + } + .node-status-iptables > .main fieldset li > a { + padding: 0.3rem 0.6rem; + } +} +@media screen and (max-width: 1280px) { + header > .container { + margin-top: 0.25rem; + } + .main .main-left { + width: calc(0% + 13rem); + } + .main .main-right { + width: calc(100% - 13rem); + } + .cbi-tabmenu > li > a, + .tabs > li > a { + padding: 0.2rem 0.5rem; + } + .panel-title { + font-size: 1.1rem; + padding-bottom: 1rem; + } + table { + font-size: 0.7rem !important; + width: 100% !important; + } + .main > .main-left > .nav > li, + .main > .main-left > .nav > li a, + .main > .main-left > .nav > .slide > .menu { + font-size: 0.9rem; + } + .main > .main-left > .nav > .slide > .slide-menu > li > a { + font-size: 0.7rem; + } +} +@media screen and (min-width: 600px) { + ::-webkit-scrollbar { + width: 10px; + height: 10px; + } + ::-webkit-scrollbar, + ::-webkit-scrollbar-corner { + background: transparent; + } + ::-webkit-scrollbar-thumb { + background: #9e9e9e; + } + ::-webkit-scrollbar-thumb:hover { + background: #757575; + } + ::-webkit-scrollbar-thumb:active { + background: #424242; + } +} +@media screen and (max-width: 992px) { + .main .main-left { + width: 0; + position: fixed; + z-index: 100; + } + .main .main-right { + width: 100%; + } + .showSide { + padding: 0.1rem; + position: relative; + display: inline-block; + } + .showSide:hover { + text-decoration: none; + } + .showSide:before { + content: "\e20e"; + font-size: 1.7rem; + } + header > .fill > .container > .brand { + display: inline-block; + } + .cbi-value-title { + width: 9rem; + padding-right: 1rem; + } + .node-network-diagnostics > .main .cbi-map fieldset > div * { + width: 100% !important; + } + .node-network-diagnostics > .main .cbi-map fieldset > div input[type="text"] { + margin: 3rem 0 0 0 !important; + } + .node-network-diagnostics > .main .cbi-map fieldset > div:nth-child(4) input[type="text"] { + margin: 0 !important; + } + .node-network-diagnostics > .main .cbi-map fieldset > div select, + .node-network-diagnostics > .main .cbi-map fieldset > div input[type="button"] { + margin: 1rem 0 0 0 !important; + } + .node-network-diagnostics > .main .cbi-map fieldset > div { + width: 100% !important; + } + #diag-rc-output > pre { + font-size: 1rem; + } +} +@media screen and (max-width: 480px) { + body { + font-size: 0.8rem; + } + .pull-right { + float: right; + margin-top: 0rem !important; + } + .login-page .video video { + width: auto !important; + height: 100% !important; + } + .login-page .login-container { + margin-left: 0rem !important; + width: 100%; + } + .login-page .login-container .login-form { + max-width: 480px; + } + .login-page .login-container .login-form .form-login .input-group::before { + color: #525461; + } + .login-page .login-container .login-form .form-login .input-group input { + color: #525461; + border-bottom: white 1px solid; + border-bottom: var(--white) 1px solid; + border-radius: 0; + } + fieldset { + padding: 0; + margin: 1rem 0 0 0; + } + .toggle { + margin: 0; + } + h2 { + font-size: 1.125rem; + } + .panel-title { + font-size: 1rem; + padding-bottom: 1rem; + } + #maincontent > .container { + margin: 0 1rem 1.5rem 1rem; + } + .main > .main-left > .nav > .slide > .menu { + font-size: 1rem; + } + .main > .main-left > .nav > .slide > .slide-menu > li > a { + font-size: 0.9rem; + } + .main > .main-left > .nav > .slide > .menu:after { + top: 0.9rem; + } + #ethinfo td { + padding: 0.75rem 0.2rem !important; + } + .cbi-value-title { + width: 100%; + min-width: 0rem !important; + display: block; + margin-top: 0.5rem; + margin-bottom: 0.5rem; + text-align: left; + padding: 0 0.25rem; + } + .cbi-value input[type="password"], + .cbi-value input[type="text"] { + min-width: 15rem; + } + select, + input { + width: 100% !important; + min-width: auto; + margin: 0.25rem 0; + } + input { + box-sizing: border-box; + } + .cbi-value > .cbi-value-field > div > input { + width: calc(100% - 1.5rem) !important; + } + .cbi-value > .cbi-value-field { + display: inline-block; + width: 100%; + position: relative; + } + .cbi-value-field .cbi-input-checkbox, + .cbi-value-field .cbi-input-radio { + margin: 0rem 0.25rem 0 0.25rem; + height: 1rem; + line-height: 1.6; + } + .cbi-page-actions > div > input { + display: none; + } + .tabs::-webkit-scrollbar, + .cbi-tabmenu::-webkit-scrollbar { + width: 0px; + height: 0px; + } + .tabs > li > a { + font-size: 0.9rem; + } + select, + input { + font-size: 0.9rem; + } + .mobile-hide { + display: none !important; + } + .node-status-realtime table > tbody > tr > td, + .node-status-realtime table > tfoot > tr > td, + .node-status-realtime table > thead > tr > td { + font-size: 0.8125rem; + color: #525f7f; + line-height: 1.4em; + vertical-align: middle !important; + padding: 0.8rem 0rem; + border-top: 1px solid #ddd; + width: auto; + text-align: center; + } + .node-system-packages > .main .cbi-value.cbi-value-last > div { + width: 100% !important; + } + .node-system-packages .cbi-section-node .cbi-value { + padding: 0.3rem 1rem; + } + .node-system-packages > .main .cbi-value .cbi-value-field input { + width: 100%; + } + .node-system-leds .cbi-section em { + display: block; + } + .node-status-iptables > .main div > .cbi-map > form { + position: static !important; + margin: 0 0 2rem 0; + padding: 2rem; + border: 0; + font-weight: normal; + font-style: normal; + line-height: 1; + font-family: inherit; + min-width: inherit; + overflow-x: auto; + overflow-y: hidden; + border-radius: 0.375rem; + background-color: #FFF; + box-shadow: 0 0 2rem 0 rgba(136, 152, 170, 0.15); + -webkit-overflow-scrolling: touch; + } + .node-status-iptables > .main div > .cbi-map > form input[type="submit"] { + width: 100% !important; + margin: 0; + } + .node-status-iptables > .main div > .cbi-map > form input[type="submit"] + input[type="submit"] { + margin-top: 1rem; + } + .cbi-value input[type="text"]:has(+ img) { + width: 10rem !important; + } + .cbi-button-add { + margin-left: 0.5rem; + } + .node-network-network .cbi-section-table tr, + .node-network-network .cbi-section-table td { + display: block; + } + .node-network-network .cbi-section-table td { + width: 100% !important; + text-align: center !important; + padding: 0.8rem 1.5rem !important; + } + .node-network-network .cbi-section-table .cbi-section-table-titles { + display: flex; + } + .node-network-network .cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { + flex: 1 !important; + } + .node-services-vssr .status-info { + font-size: 0.75rem; + } + .node-services-vssr .icon-con { + margin-top: 0.4rem; + } + .node-services-vssr .icon-con img { + width: 2.3rem !important; + height: auto; + } +} diff --git a/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/css/dark.css b/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/css/dark.css index 21d3ce0354..9288375fa5 100644 --- a/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/css/dark.css +++ b/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/css/dark.css @@ -1 +1 @@ -body{background:#1e1e1e;color:#cccccc}.login-page .login-container .login-form{background-color:#1e1e1e}.login-page .login-container .login-form .brand{color:#adb5bd}.login-page .login-container .login-form .form-login .input-group::before{color:#adb5bd}.login-page .login-container .login-form .form-login .input-group input{background-color:transparent !important;color:#adb5bd;border-bottom:#adb5bd 1px solid !important;border-radius:0;border-top:none !important;border-left:none !important;border-right:none !important;box-shadow:none}.login-page .login-container .login-form .form-login .input-group input:focus{border-top:none !important;border-left:none !important;border-right:none !important}.login-page .login-container .login-form .form-login .cbi-button-apply{background-color:#483d8b !important;background-color:var(--dark-primary) !important}.login-page .login-container .login-form .form-login .cbi-button-apply:hover,.login-page .login-container .login-form .form-login .cbi-button-apply:focus{opacity:.9}.login-page .login-container footer{color:#adb5bd}header::after{background-color:#1e1e1e !important}.main .main-left{background-color:#333333 !important;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.15)}.main .main-left .sidenav-header .brand{color:#ccc}.main .main-left .nav .slide .slide-menu .active a{color:#cccccc}.main .main-left .nav .slide .slide-menu .active a::after{background-color:#cccccc !important}.main .main-left .nav .slide .slide-menu li a{color:#cccccc}.main .main-left .nav .slide .slide-menu li a:hover{background:none !important}.main .main-left .nav .slide .menu.active{background-color:#483d8b !important;background-color:var(--dark-primary) !important;color:#cccccc !important}.main .main-left .nav .slide .menu.active a::after{background-color:#cccccc !important}.main .main-left .nav li a{color:#cccccc !important}.main .main-left .nav li a:hover{background-color:#483d8b !important;background-color:var(--dark-primary) !important;color:#cccccc !important}.main .main-left::-webkit-scrollbar-thumb{background-color:#252526 !important}.main .main-left::-webkit-scrollbar-track{background-color:#333}.main .main-right{background-color:#1e1e1e}h2{color:#ccc;background:#333333}h3{color:#ccc;border-bottom:0;background:#333333}a:-webkit-any-link{color:-webkit-link;cursor:pointer;color:#483d8b;color:var(--dark-primary)}input:-webkit-autofill{background-color:#3c3c3c !important}.cbi-value-field .cbi-input-apply,.cbi-button-apply,.cbi-button-edit{color:#fff !important;background-color:#483d8b !important;background-color:var(--dark-primary) !important;border-color:#483d8b !important;border-color:var(--dark-primary) !important}.cbi-section em{color:#483d8b;color:var(--dark-primary)}header.bg-primary{background-color:#1e1e1e !important}.cbi-map-descr{color:#ccc}.cbi-section{background:none;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}.panel-title{color:#ccc;background-color:#333333;border-bottom:0px}table>tbody>tr>td,table>tfoot>tr>td,table>thead>tr>td{color:#ccc}fieldset>table>tbody>tr:nth-of-type(2n){background-color:#252526}table>tbody>tr>td,table>tfoot>tr>td,table>thead>tr>td{border-top:1px solid #252526}#swaptotal>div>div,#swapfree>div>div,#memfree>div>div,#membuff>div>div,#conns>div>div,#memtotal>div>div{background-color:#32325d !important}#swaptotal>div>div>div>small,#swapfree>div>div>div>small,#memfree>div>div>div>small,#membuff>div>div>div>small,#conns>div>div>div>small,#memtotal>div>div>div>small{color:#ccc !important}.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last{line-height:1.8em}.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"]{border:1px solid #999999 !important;background-color:transparent !important}.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] div{background-color:#32325d !important}table>tbody>tr>th,table>tfoot>tr>th,table>thead>tr>th{background-color:#252526;border-bottom:black 1px solid !important}.cbi-rowstyle-2{background-color:#1e1e1e}.cbi-rowstyle-1{background-color:#252526}.cbi-section>h3:first-child,.panel-title{color:#ccc;border-bottom:0}.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell{background-color:#1e1e1f}.cbi-button{color:#ccc;background-color:#252526}.cbi-section-node{background:none;border-radius:0 0 .375rem .375rem;padding:0rem}abbr{color:#483d8b;color:var(--dark-primary)}div>table>tbody>tr:nth-of-type(2n),div>.table>.tbody>.tr:nth-of-type(2n){background-color:#252526}#content_syslog{box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}#syslog{color:#ccc;background-color:#1e1e1e}#iwsvg,#iwsvg2,#bwsvg{overflow:hidden;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35);background-color:#1e1e1e !important}.tabs{background-color:#252526}.tabs>li[class~="active"]>a{color:#ccc}.tabs>li[class~="active"],.tabs>li:hover{border-bottom:.18751rem solid #483d8b;border-bottom:.18751rem solid var(--dark-primary);color:#ccc;background-color:#181819}.cbi-tabmenu>li>a,.tabs>li>a{color:#ccc}.cbi-tabmenu>li>a:hover,.tabs>li>a:hover{color:#ccc}.cbi-tabmenu>li{background:#2d2d2d}.cbi-tabmenu{border-bottom:0 solid #ddd !important}.cbi-tabmenu li[class~="cbi-tab"] a{color:#ccc}.cbi-tabmenu>li:hover{color:#ccc;background:#2d2d2d}.cbi-tabmenu>li[class~="cbi-tab"]{background-color:#181819}.cbi-tabcontainer>.cbi-value:nth-of-type(2n){background-color:#252526}.cbi-value-title{color:#ccc}select,input{color:#ccc;background-color:transparent;border:1px solid #3c3c3c !important;box-shadow:0 3px 2px rgba(0,0,0,0.05)}select:not([multiple="multiple"]):focus,input:focus{border-color:#483d8b !important;border-color:var(--dark-primary) !important;background-color:transparent;outline:0;box-shadow:none}select{background-color:#1e1e1e !important}#cbi-dropbear h2,#cbi-dropbear .cbi-map-descr,#cbi-dropbear .cbi-map-descr abbr,#cbi-rc h2,#cbi-rc .cbi-map-descr,#cbi-distfeedconf h2,#cbi-distfeedconf .cbi-map-descr,#cbi-customfeedconf h2,#cbi-customfeedconf .cbi-map-descr,#cbi-download h2,#cbi-filelist h2{color:#ccc !important}.cbi-value-field>ul>li .ifacebadge{background-color:#3c3c3c}.cbi-section-descr{color:#ccc}.cbi-input-textarea{background-color:#1e1e1e;color:#ccc}.cbi-section-remove:nth-of-type(2n),.cbi-section-node:nth-of-type(2n){background-color:#1e1e1e}.node-system-packages>.main table tr td:nth-last-child(1){color:#ccc}.node-system-packages>.main .cbi-value>pre{background-color:#333}.cbi-section-node .cbi-value{padding:1rem 1rem .3rem 1rem}.ifacebox{background-color:none;border:1px solid #1e1e1e}.ifacebox-head{color:#666}.ifacebox-body{background-color:#333}.zonebadge strong{color:#333}.zonebadge>.ifacebadge{background-color:#3c3c3c}div.cbi-value var,td.cbi-value-field var{color:#483d8b;color:var(--dark-primary)}#diag-rc-output>pre{color:#ccc;background-color:#1e1e1e}.node-services-vssr .block{background-color:#1e1e1e !important;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}.node-services-vssr .block h4{color:#ccc !important}.node-services-vssr .status-bar{color:#ccc;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35);background-color:#1e1e1e}.node-services-vssr .cbi-section-table-row{color:#ccc;background-color:#3c3c3c !important;box-shadow:0 0 5px 0 rgba(0,0,0,0.35)}.node-services-vssr .cbi-section-table-row.fast{background:#483d8b !important;background:var(--dark-primary) !important;color:#fff}.node-services-vssr .ssr-button{color:#ccc}.node-services-vssr .incon:nth-child(2){border-right:#1e1e1e 1px solid}.main .main-right #maincontent .container p{color:#ccc}#xhr_poll_status>.label.success{color:#ccc !important;background-color:darkolivegreen !important}.notice{background-color:#483d8b !important;background-color:var(--dark-primary) !important}.cbi-input-find,.cbi-input-save,.cbi-button-add,.cbi-button-save,.cbi-button-find,.cbi-input-reload,.cbi-button-reload{background-color:darkseagreen !important;border-color:darkseagreen !important}.cbi-button-reset,.cbi-input-remove{color:#fff !important;background-color:darkorange !important;border-color:darkorange !important}.cbi-page-actions .cbi-button-apply,.cbi-section-actions .cbi-button-edit,.cbi-button-edit.important,.cbi-button-apply.important,.cbi-button-reload.important,.cbi-button-action.important{border:1px #483d8b solid !important;border:1px var(--dark-primary) solid !important}fieldset[id^="cbi-apply-"]{background-color:#333333}#detail-bubble>div{border:1px solid #ccc;border-radius:2px;padding:5px;background:#252525}.cbi-section-error{color:darkorange}.node-services-vssr .block h4 span{color:#ccc !important}@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none){.login-page .login-container .login-form{-webkit-backdrop-filter:blur(var(--blur-radius-dark));backdrop-filter:blur(var(--blur-radius-dark));background-color:rgba(0, 0, 0, var(--blur-opacity-dark))}}@media screen and (max-width:480px){.node-status-iptables>.main div>.cbi-map>form{background-color:#1e1e1e;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}} \ No newline at end of file +body{background:#1e1e1e;color:#cccccc}.login-page .login-container .login-form{background-color:#1e1e1e}.login-page .login-container .login-form .brand{color:#adb5bd}.login-page .login-container .login-form .form-login .input-group::before{color:#adb5bd}.login-page .login-container .login-form .form-login .input-group input{background-color:transparent !important;color:#adb5bd;border-bottom:#adb5bd 1px solid !important;border-radius:0;border-top:none !important;border-left:none !important;border-right:none !important;box-shadow:none}.login-page .login-container .login-form .form-login .input-group input:focus{border-top:none !important;border-left:none !important;border-right:none !important}.login-page .login-container .login-form .form-login .cbi-button-apply{background-color:#483d8b !important;background-color:var(--dark-primary) !important}.login-page .login-container .login-form .form-login .cbi-button-apply:hover,.login-page .login-container .login-form .form-login .cbi-button-apply:focus{opacity:.9}.login-page .login-container footer{color:#adb5bd}header::after{background-color:#1e1e1e !important}.main .main-left{background-color:#333333 !important;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.15)}.main .main-left .sidenav-header .brand{color:#ccc}.main .main-left .nav .slide .slide-menu .active a{color:#cccccc}.main .main-left .nav .slide .slide-menu .active a::after{background-color:#cccccc !important}.main .main-left .nav .slide .slide-menu li a{color:#cccccc}.main .main-left .nav .slide .slide-menu li a:hover{background:none !important}.main .main-left .nav .slide .menu.active{background-color:#483d8b !important;background-color:var(--dark-primary) !important;color:#cccccc !important}.main .main-left .nav .slide .menu.active a::after{background-color:#cccccc !important}.main .main-left .nav li a{color:#cccccc !important}.main .main-left .nav li a:hover{background-color:#483d8b !important;background-color:var(--dark-primary) !important;color:#cccccc !important}.main .main-left::-webkit-scrollbar-thumb{background-color:#252526 !important}.main .main-left::-webkit-scrollbar-track{background-color:#333}.main .main-right{background-color:#1e1e1e}h2{color:#ccc;background:#333333}h3{color:#ccc;border-bottom:0;background:#333333}a:-webkit-any-link{color:-webkit-link;cursor:pointer;color:#483d8b;color:var(--dark-primary)}input:-webkit-autofill{background-color:#3c3c3c !important}.cbi-value-field .cbi-input-apply,.cbi-button-apply,.cbi-button-edit{color:#fff !important;background-color:#483d8b !important;background-color:var(--dark-primary) !important;border-color:#483d8b !important;border-color:var(--dark-primary) !important}.cbi-section em{color:#483d8b;color:var(--dark-primary)}header.bg-primary{background-color:#1e1e1e !important}.cbi-map-descr{color:#ccc}.cbi-section{background:none;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}.panel-title{color:#ccc;background-color:#333333;border-bottom:0px}table>tbody>tr>td,table>tfoot>tr>td,table>thead>tr>td{color:#ccc}fieldset>table>tbody>tr:nth-of-type(2n){background-color:#252526}table>tbody>tr>td,table>tfoot>tr>td,table>thead>tr>td{border-top:1px solid #252526}#swaptotal>div>div,#swapfree>div>div,#memfree>div>div,#membuff>div>div,#conns>div>div,#memtotal>div>div{background-color:#483d8b !important;background-color:var(--dark-primary) !important}#swaptotal>div>div>div>small,#swapfree>div>div>div>small,#memfree>div>div>div>small,#membuff>div>div>div>small,#conns>div>div>div>small,#memtotal>div>div>div>small{color:#ccc !important}.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last{line-height:1.8em}.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"]{border:1px solid #999999 !important;background-color:transparent !important}.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] div{background-color:#32325d !important}table>tbody>tr>th,table>tfoot>tr>th,table>thead>tr>th{background-color:#252526;border-bottom:black 1px solid !important}.cbi-rowstyle-2{background-color:#1e1e1e}.cbi-rowstyle-1{background-color:#252526}.cbi-section>h3:first-child,.panel-title{color:#ccc;border-bottom:0}.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell{background-color:#1e1e1f}.cbi-button{color:#ccc;background-color:#252526}.cbi-section-node{background:none;border-radius:0 0 .375rem .375rem;padding:0rem}abbr{color:#483d8b;color:var(--dark-primary)}div>table>tbody>tr:nth-of-type(2n),div>.table>.tbody>.tr:nth-of-type(2n){background-color:#252526}#content_syslog{box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}#syslog{color:#ccc;background-color:#1e1e1e}#iwsvg,#iwsvg2,#bwsvg{overflow:hidden;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35);background-color:#1e1e1e !important}.tabs{background-color:#252526}.tabs>li[class~="active"]>a{color:#ccc}.tabs>li[class~="active"],.tabs>li:hover{border-bottom:.18751rem solid #483d8b;border-bottom:.18751rem solid var(--dark-primary);color:#ccc;background-color:#181819}.cbi-tabmenu>li>a,.tabs>li>a{color:#ccc}.cbi-tabmenu>li>a:hover,.tabs>li>a:hover{color:#ccc}.cbi-tabmenu>li{background:#2d2d2d}.cbi-tabmenu{border-bottom:0 solid #ddd !important}.cbi-tabmenu li[class~="cbi-tab"] a{color:#ccc}.cbi-tabmenu>li:hover{color:#ccc;background:#2d2d2d}.cbi-tabmenu>li[class~="cbi-tab"]{background-color:#181819}.cbi-tabcontainer>.cbi-value:nth-of-type(2n){background-color:#252526}.cbi-value-title{color:#ccc}select,input{color:#ccc;background-color:transparent;border:1px solid #3c3c3c !important;box-shadow:0 3px 2px rgba(0,0,0,0.05)}select:not([multiple="multiple"]):focus,input:focus{border-color:#483d8b !important;border-color:var(--dark-primary) !important;background-color:transparent;outline:0;box-shadow:none}select{background-color:#1e1e1e !important}#cbi-dropbear h2,#cbi-dropbear .cbi-map-descr,#cbi-dropbear .cbi-map-descr abbr,#cbi-rc h2,#cbi-rc .cbi-map-descr,#cbi-distfeedconf h2,#cbi-distfeedconf .cbi-map-descr,#cbi-customfeedconf h2,#cbi-customfeedconf .cbi-map-descr,#cbi-download h2,#cbi-filelist h2{color:#ccc !important}.cbi-value-field>ul>li .ifacebadge{background-color:#3c3c3c}.cbi-section-descr{color:#ccc}.cbi-input-textarea{background-color:#1e1e1e;color:#ccc}.cbi-section-remove:nth-of-type(2n),.cbi-section-node:nth-of-type(2n){background-color:#1e1e1e}.node-system-packages>.main table tr td:nth-last-child(1){color:#ccc}.node-system-packages>.main .cbi-value>pre{background-color:#333}.cbi-section-node .cbi-value{padding:1rem 1rem .3rem 1rem}.ifacebox{background-color:none;border:1px solid #1e1e1e}.ifacebox-head{color:#666}.ifacebox-body{background-color:#333}.zonebadge strong{color:#333}.zonebadge>.ifacebadge{background-color:#3c3c3c}div.cbi-value var,td.cbi-value-field var{color:#483d8b;color:var(--dark-primary)}#diag-rc-output>pre{color:#ccc;background-color:#1e1e1e}.node-services-vssr .block{background-color:#1e1e1e !important;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}.node-services-vssr .block h4{color:#ccc !important}.node-services-vssr .status-bar{color:#ccc;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35);background-color:#1e1e1e}.node-services-vssr .cbi-section-table-row{color:#ccc;background-color:#3c3c3c !important;box-shadow:0 0 5px 0 rgba(0,0,0,0.35)}.node-services-vssr .cbi-section-table-row.fast{background:#483d8b !important;background:var(--dark-primary) !important;color:#fff}.node-services-vssr .ssr-button{color:#ccc}.node-services-vssr .incon:nth-child(2){border-right:#1e1e1e 1px solid}.main .main-right #maincontent .container p{color:#ccc}#xhr_poll_status>.label.success{color:#ccc !important;background-color:darkolivegreen !important}.notice{background-color:#483d8b !important;background-color:var(--dark-primary) !important}.cbi-input-find,.cbi-input-save,.cbi-button-add,.cbi-button-save,.cbi-button-find,.cbi-input-reload,.cbi-button-reload{background-color:darkseagreen !important;border-color:darkseagreen !important}.cbi-button-reset,.cbi-input-remove{color:#fff !important;background-color:darkorange !important;border-color:darkorange !important}.cbi-page-actions .cbi-button-apply,.cbi-section-actions .cbi-button-edit,.cbi-button-edit.important,.cbi-button-apply.important,.cbi-button-reload.important,.cbi-button-action.important{border:1px #483d8b solid !important;border:1px var(--dark-primary) solid !important}fieldset[id^="cbi-apply-"]{background-color:#333333}#detail-bubble>div{border:1px solid #ccc;border-radius:2px;padding:5px;background:#252525}.cbi-section-error{color:darkorange}.node-services-vssr .block h4 span{color:#ccc !important}@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none){.login-page .login-container .login-form{-webkit-backdrop-filter:blur(var(--blur-radius-dark));backdrop-filter:blur(var(--blur-radius-dark));background-color:rgba(0, 0, 0, var(--blur-opacity-dark))}}@media screen and (max-width:480px){.node-status-iptables>.main div>.cbi-map>form{background-color:#1e1e1e;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}} \ No newline at end of file diff --git a/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/img/trafficbar.png b/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/img/trafficbar.png new file mode 100644 index 0000000000..c9a99ce0c1 Binary files /dev/null and b/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/img/trafficbar.png differ diff --git a/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/less/cascade.less b/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/less/cascade.less index 5cff43bb7b..330049272e 100644 --- a/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/less/cascade.less +++ b/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/less/cascade.less @@ -1,4 +1,4 @@ -// compress: true +// compress: false /** * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template * @@ -40,17 +40,26 @@ @import url("pure-min.css?v=1"); :root { + /** general **/ --primary: #5e72e4; --dark-primary: #483d8b; + --background-color: #f4f5f7; + --font-color: #525f7f; + /** login form **/ + --login-form-background-color: #ffffff; + --login-form-bg-color: rgba(244, 245, 247, 0.8); + --blur-radius: 10px; + --blur-opacity: 0.5; + --white: #fff; --darker: black; --default: #525461; - --background-color: #f4f5f7; + --warning: #fb6340; - --footer-color:#aaa; - --menubar-background:#fff; - --menubar-scrollbar-thumb:#f6f9fc; - --menubar-text-color:#4c4c4c; + --footer-color: #aaa; + --menubar-background: #fff; + --menubar-scrollbar-thumb: #f6f9fc; + --menubar-text-color: #4c4c4c; --blue: #5e72e4; --indigo: #5603ad; --purple: #8965e0; @@ -74,15 +83,58 @@ --dark: #212529; --neutral: #fff; --login-form-bg-color: rgba(244, 245, 247, 0.8); - --breakpoint-xs: 0; - --breakpoint-sm: 576px; - --breakpoint-md: 768px; - --breakpoint-lg: 992px; - --breakpoint-xl: 1200px; - --blur-radius:10px; - --blur-opacity:0.5; - --blur-radius-dark:10px; - --blur-opacity-dark:0.5; + + --blur-radius: 10px; + --blur-opacity: 0.5; + --blur-radius-dark: 10px; + --blur-opacity-dark: 0.5; + --font-family-sans-serif: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; + --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; + --font-family-normal: Open Sans, PingFangSC-Regular, Microsoft Yahei, WenQuanYi Micro Hei, "Helvetica Neue", Helvetica, Hiragino Sans GB, sans-serif; +} + +[data-theme="dark"] { + --primary: #483d8b; + --dark-primary: #483d8b; + --background-color: #1e1e1e; + --font-color: #cccccc; + --white: #fff; + --darker: black; + --default: #525461; + + --warning: #fb6340; + --footer-color: #aaa; + --menubar-background: #fff; + --menubar-scrollbar-thumb: #f6f9fc; + --menubar-text-color: #4c4c4c; + --blue: #5e72e4; + --indigo: #5603ad; + --purple: #8965e0; + --pink: #f3a4b5; + --red: #f5365c; + --orange: #fb6340; + --yellow: #ffd600; + --green: #2dce89; + --teal: #11cdef; + --cyan: #2bffc6; + --white: #fff; + --gray: #8898aa; + --gray-dark: #32325d; + --light: #ced4da; + --lighter: #e9ecef; + --secondary: #f7fafc; + --success: #2dce89; + --info: #11cdef; + --danger: #f5365c; + --light: #adb5bd; + --dark: #212529; + --neutral: #fff; + --login-form-bg-color: rgba(244, 245, 247, 0.8); + + --blur-radius: 10px; + --blur-opacity: 0.5; + --blur-radius-dark: 10px; + --blur-opacity-dark: 0.5; --font-family-sans-serif: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; --font-family-normal: Open Sans, PingFangSC-Regular, Microsoft Yahei, WenQuanYi Micro Hei, "Helvetica Neue", Helvetica, Hiragino Sans GB, sans-serif; @@ -107,6 +159,8 @@ body { font-size: 0.875rem; background-color: #f4f5f7; background-color: var(--background-color); + color: #525f7f; + color: var(--font-color); } @@ -114,7 +168,7 @@ body { margin: 0; padding: 0; box-sizing: border-box; - -webkit-tap-highlight-color:transparent; + -webkit-tap-highlight-color: transparent; } @@ -141,6 +195,45 @@ li { list-style-type: none; } +@-webkit-keyframes sparkle { + from { + background-position: 0 0; + } + + to { + background-position: 0 -64px; + } +} + +@-moz-keyframes sparkle { + from { + background-position: 0 0; + } + + to { + background-position: 0 -64px; + } +} + +@-o-keyframes sparkle { + from { + background-position: 0 0; + } + + to { + background-position: 0 -64px; + } +} + +@keyframes sparkle { + from { + background-position: 0 0; + } + + to { + background-position: 0 -64px; + } +} /*********************** * @@ -161,13 +254,14 @@ li { background-color: #000; background-color: var(--darker); overflow: hidden; + video { width: 100%; height: auto; } } - .volume-control{ + .volume-control { position: fixed; right: 1rem; top: 1rem; @@ -177,13 +271,14 @@ li { cursor: pointer; background-size: contain; background-image: url(../img/volume_high.svg); - &.mute{ + + &.mute { background-image: url(../img/volume_off.svg); } } - .main-bg{ - position: absolute; + .main-bg { + position: fixed; width: 100%; height: 100%; left: 0; @@ -260,7 +355,6 @@ li { text-align: center; color: #fb6340; color: var(--warning); - padding-bottom: 2rem; } .input-group { @@ -306,7 +400,7 @@ li { box-sizing: border-box; transition: all .3s cubic-bezier(.68, -.55, .265, 1.55); color: #525461; - color:var(--default); + color: var(--default); border: 0; border-radius: 0; border-bottom: 1px solid #fff; @@ -382,7 +476,8 @@ li { color: var(--default); position: absolute; bottom: 0; - .ftc{ + + .ftc { position: absolute; bottom: 30px; width: 100%; @@ -427,7 +522,7 @@ header { position: relative; .container { - margin-top: 0.5rem; + margin-top: rem; padding: 0.5rem 1rem 0 1rem; .pull-right>* { @@ -485,16 +580,16 @@ header { ***************************/ footer { - + text-align: right; padding: 1rem; color: #aaa; - color:var(--footer-color); + color: var(--footer-color); font-size: 0.8rem; a { color: #aaa; - color:var(--footer-color); + color: var(--footer-color); text-decoration: none; } } @@ -550,7 +645,7 @@ footer { &::-webkit-scrollbar-thumb { background-color: #f6f9fc; background-color: var(--menubar-scrollbar-thumb); - + } &::-webkit-scrollbar-track { @@ -630,7 +725,7 @@ footer { &:hover { &::after { color: #000; - color:var(--darker); + color: var(--darker); width: 100%; } } @@ -829,10 +924,11 @@ footer { } } - + &:last-child>.menu::after { + content: ""; + } } } - } } @@ -1486,6 +1582,9 @@ input[name="nslookup"] { height: 100% !important; background-color: #5e72e4 !important; background-color: var(--primary) !important; + background-image: url(../img/trafficbar.png); + background-position: left top; + animation: sparkle 1500ms linear infinite; } /* fix multiple table */ @@ -2114,8 +2213,8 @@ div>.table>.tbody>.tr:nth-of-type(2n) { .errorbox, .alert-message { - margin: 2rem 0 0 0; - padding: 2rem; + margin: 0 0 0 0; + padding: 1rem 2rem; border: 0; font-weight: normal; font-style: normal; @@ -2133,7 +2232,9 @@ div>.table>.tbody>.tr:nth-of-type(2n) { background-color: #f0ad4e; border-color: #eea236; } - +.alert-message.warning{ + margin-bottom: 1rem; +} .error { color: red; } @@ -3351,9 +3452,7 @@ input[name="nslookup"] { padding: 0.3rem 0.6rem; } - select { - min-width: 15rem; - } + } @@ -3501,6 +3600,7 @@ input[name="nslookup"] { float: right; margin-top: 0rem !important; } + .login-page .video { video { width: auto !important; @@ -3513,6 +3613,8 @@ input[name="nslookup"] { width: 100%; .login-form { + max-width: 480px; + .form-login { .input-group { &::before { @@ -3539,10 +3641,6 @@ input[name="nslookup"] { margin: 1rem 0 0 0; } - .tabs { - margin: 0.5rem 0rem - } - .toggle { margin: 0; } @@ -3573,6 +3671,7 @@ input[name="nslookup"] { top: 0.9rem; } + #ethinfo td { padding: 0.75rem 0.2rem !important; @@ -3593,18 +3692,27 @@ input[name="nslookup"] { min-width: 15rem; } - select { - width: 15rem; + select, + input { + width: 100% !important; min-width: auto; + margin: 0.25rem 0; + } + + input { + box-sizing: border-box; + } + + .cbi-value>.cbi-value-field>div>input { + width: calc(100% - 1.5rem) !important; } .cbi-value>.cbi-value-field { display: inline-block; - + width: 100%; + position: relative; } - - .cbi-value-field .cbi-input-checkbox, .cbi-value-field .cbi-input-radio { margin: 0rem 0.25rem 0 0.25rem; @@ -3637,7 +3745,7 @@ input[name="nslookup"] { } .mobile-hide { - display: none; + display: none !important; } @@ -3706,6 +3814,34 @@ input[name="nslookup"] { width: 10rem !important; } + .cbi-button-add { + margin-left: 0.5rem; + } + + .node-network-network { + .cbi-section-table { + + tr, + td { + display: block; + } + + td { + width: 100% !important; + text-align: center !important; + padding: 0.8rem 1.5rem !important; + } + + .cbi-section-table-titles { + display: flex; + + .cbi-section-table-cell { + flex: 1 !important; + } + } + } + } + .node-services-vssr { .status-info { font-size: 0.75rem; diff --git a/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/less/dark.less b/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/less/dark.less index 5ddef68cb1..fd284edad1 100644 --- a/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/less/dark.less +++ b/package/ctcgfw/luci-theme-argonv3/htdocs/luci-static/argon/less/dark.less @@ -249,7 +249,8 @@ table>thead>tr>td { #membuff>div>div, #conns>div>div, #memtotal>div>div { - background-color: #32325d !important; + background-color: #483d8b !important; + background-color: var(--dark-primary) !important; } #swaptotal>div>div>div>small, diff --git a/package/ctcgfw/luci-theme-argonv3/luasrc/view/themes/argon/footer.htm b/package/ctcgfw/luci-theme-argonv3/luasrc/view/themes/argon/footer.htm index 19ec480a47..51dd014f87 100644 --- a/package/ctcgfw/luci-theme-argonv3/luasrc/view/themes/argon/footer.htm +++ b/package/ctcgfw/luci-theme-argonv3/luasrc/view/themes/argon/footer.htm @@ -39,7 +39,7 @@ local categories = disp.node_childs(tree) %> -