luci自定义之welcome to luci

2023-11-11

          终于有空了,又可以偷偷写博了,这一次是写登录页面还有状态页面。

          首先说一下登录页面,登录页面是最容易改的,因为我们不需要重构页面,只要修改样式就可以了。

           下面就开始吧,首先要找到登录页面所在的位置。登录页面是放在了/usr/lib/lua/luci/view,那个sysauth.htm就是了。

           登录页面仅仅只是一个htm页面,所以很容易就可以修改了,好了,我们打开代码页面,会发现大部分都是样式和一点lua。其实这些都可以不要,只要保留以下的核心代码,然后再自己重写样式就可以了。

           核心代码如下:↓↓↓

          <form method="post" action="<%=pcdata(luci.http.getenv("REQUEST_URI"))%>">

                     <input type="text" name="username" placeholder="请输入用户名" class="form-control input-lg" value="<%=duser%>">

                    <input type="password" name="password" placeholder="请输入密码" class="form-control input-lg">

                   <button type="submit" class="loginBtn">登录</button>

           </form>

           很容易看出,这是一个表单,提交项就提交给/cgi-bin/luci这里,认证通过之后,就会去到index.lua这里,然后就会跳转到指定页面。我们这里是跳转到admin_mypage/poindex.htm,这个在上期说的index.lua这里修改。

          但是这样就算密码错了也不会有提示的,所以要在表单里面加上

                    <%- if fuser then %>
                             <div class="error" style="color:#FF0000;"><%:Invalid username and/or password! Please try again.%></div>
                            <br />
                    <% end -%>

          这一小段代码就会使交互变得更加友好了。

       

             不知不觉又到了下班时间,由于状态页面要写的也比较多,所以这里只写一小部分,其他的就放在后面有空写咯

             首先是一些基础的,<%%>看到这个,就知道是引用lua语言啦。这里主要分为几种;

             第一种是<% %>,这个一般是在开头,里面完全使用lua语句,在这里一般是用来获取系统的基本信息之类的。

             第二种是<%=ssid%>,这个是获取lua变量ssid的值,

             第三种就就像是上面登录错误信息显示那样<%-     %><%       -%>这种是拆分使用lua语言的,也就是在两个lua语句直接嵌入html。

            第四种也是跟上面的登录信息一样的<%:%>这个是用来显示国际化的哈,遇到英文显示英文,遇到中文显示中文,但是也是有预设才行,如<%:Invalid username and/or password! Please try again.%>在中文环境就会显示上面图片红色的中文。

             主要示例如下:

             <%
                      require 'luci.sys'

                      require 'luci.common'

                      require 'luci.http'

                      local ssid = luci.common.trim(luci.sys.exec('uci get wireless.@wifi-iface[0].ssid'))

               %><!--用于获取2.4GHz的SSID>

                    <h3>无线状态</h3>
                        <div class="col-md-6">
                            <h5>2.4GHz无线概况</h5>
                            <dl class="dl-horizontal">
                                <dt>WIFI名称(SSID):</dt>
                                <dd><%=ssid%></dd><!--用于显示2.4GHz的SSID,也就是显示上面获取到的lua变量>
                            </dl>
                        </div>

                对了,还要了解uci get这个命令哟,下班了。上一次说了上图了,客官请看↓↓↓

登录页面


状态页面





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

luci自定义之welcome to luci 的相关文章

  • 如果模式匹配,则打印 lua 表中的值

    好吧 我最近刚接触 lua 发现自己陷入了以下困境 我有函数peripheral getNames 这是一个自定义函数 它将返回一个具有结构 key value 的表 而 key 始终是一个数字 从 1 开始 value 将是该函数找到的内
  • 在Lua中,处理包含nil的可变参数的正确方法是什么?

    我正在尝试创建一个调试打印函数 它将文件句柄作为第一个参数 首先 我写一个这样的函数 function fprint f for i v in ipairs do f write tostring v f write t end f wri
  • 从lua中的函数返回多个值

    我正在尝试以下 lua 代码 function test return 1 2 end function test2 return test end function test3 return test 3 end print test p
  • 无法在cmake中使用find_package找到Lua标头

    我正在尝试使用 CMake 为我使用 Lua 的项目构建生成 make 文件 当我运行 make 时出现此错误 path to my project luaudio luaudio c 1 17 fatal error lua h No s
  • Lua 中的“主”函数?

    在 python 中 通常会定义一个 main 函数 以便允许脚本用作模块 如果需要 def main print Hello world return 0 if name main sys exit main 在Lua中 这个习语if n
  • LuaJit FFI 从 C 函数返回字符串到 Lua?

    假设我有这个 C 函数 declspec dllexport const char GetStr static char buff 32 Fill the buffer with some string here return buff 这
  • Lua - 尝试调用全局(零值)

    执行此代码时 出现错误 尝试调用全局 forId 零值 function execute args local itemid 526 local bone forId itemid this is where the error occur
  • Lua中如何获取目录列表

    我需要 LUA 中的目录列表 假设我的目录路径为 C Program Files 我需要该特定路径中所有文件夹的列表以及如何搜索该列表中的任何特定文件夹 Example 需要路径 C Program Files 中所有文件夹的列表 以下是上
  • 循环直到在表中找到 2 个特定值?

    我试图找到一种更聪明的方法来解决这个问题 这是与游戏相关的代码的摘录 它循环遍历每个背包的每个插槽 直到找到铲子和绳子 local continue local foundShovel foundRope for i 0 Container
  • 使用 corona sdk 验证电子邮件地址

    在我的项目中 有一个供用户填写详细信息的表单 其中有一个文本字段用于输入用户的电子邮件 ID 所以我需要在 corona 项目中验证该文本字段中的电子邮件 试试这个正则表达式 local email email protected cdn
  • 检查lua中是否存在目录?

    如何检查 lua 中是否存在目录 如果可能的话最好不使用 LuaFileSystem 模块 尝试做类似以下 python 行的事情 os path isdir path 这是一种在 Unix 和 Windows 上都适用的方式 无需任何外部
  • Redis INCRBY 有限制

    我想知道是否有一种方法可以通过我的应用程序的单次往返在 Redis 中执行此操作 对于给定的键K 其可能值V是范围内的任意整数 A B 基本上 它有上限和下限 When an INCRBY or DECRBY发出命令 例如INCRBY ke
  • lua http套接字超时

    LuaSocket HTTP 模块文档说可以在 HTTP 连接上设置超时 可以设置以下常量来控制 HTTP 模块的默认行为 PORT 用于连接的默认端口 PROXY 用于连接的默认代理 TIMEOUT 设置所有I O操作的超时时间 USER
  • 如何在 Lua 中实现 OO?

    Lua 没有内置对 OO 的支持 但它允许您自己构建它 您能否分享一些实现面向对象的方法 请为每个答案写一个例子 如果您有更多示例 请发布另一个答案 我喜欢将 OOP 视为容器 对象 内的数据封装以及可以使用该数据完成的操作子集 还有很多内
  • 为什么 LuaJIT 这么好?

    编辑 不幸的是 LuaJIT 已从下面链接的比较中删除 This 比较 http shootout alioth debian org u64 which programming languages are fastest php编程语言的
  • 在lua中组合两个函数

    我刚开始学习lua 所以我的要求可能是不可能的 现在 我有一个接受函数的方法 function adjust focused window fn local win window focusedwindow local winframe w
  • VB6 - Lua 集成

    我想知道是否有人有任何集成 Lua 和 VB6 的技巧 我正在运行一个小型在线角色扮演游戏 添加一些脚本会很棒 嗯 这是可行的 我曾经为 Lua 5 0 2 做过 但找不到文件 在您拥有的选项中 您可以 将 Lua 封装在公开 Lua AP
  • 去掉尾随零和小数点

    使用 Lua 我将数字格式化为可变位数并去掉尾随零 小数点 例如 string format precision f value gsub 0 1 gsub 值的类型为数字 正数 负数 整数 小数 所以任务已经解决了 但出于美学 教育和性能
  • 安装Lua套接字库

    要么我太累了 要么我瞎了 我想学习 Lua 网络 因此我必须安装socketlib 所以我可以轻松地要求它 但我不知道我应该 要求 哪些文件 例子说 local socket require socket 但正如我所说 如果我使用 我不知道
  • 如何在 emacs lua-mode 中配置缩进?

    完整的 emacs 新手在这里 我在 Ubuntu 上使用 emacs 23 1 1emacs 入门套件 https github com technomancy emacs starter kit 我主要在 lua 模式下工作 安装了pa

随机推荐

  • 【FPGA内部RAM原理及应用场景分析】- 从内部RAM简介、分类、存储器方式以及不同场景下的应用四个方面来详细阐述FPGA内部RAM的原理和应用。

    FPGA内部RAM原理及应用场景分析 从内部RAM简介 分类 存储器方式以及不同场景下的应用四个方面来详细阐述FPGA内部RAM的原理和应用 FPGA内部RAM简介 FPGA内部RAM是一种集成在FPGA芯片内部的存储器 它可以用于高速数据
  • cuihua 2022.4.11-17BUU刷题记录

    25 MRCTF2020 摇滚DJ 1 题目概述 2 解题过程 听了一下 真难听 audacity打开 波形是平的 和前面那道题有点像 kali的qsstv工具 安装qsstv apt install qsstv 安装成功后 在终端下输入q
  • pytorch: 网络权重初始化

    构建完网络后 往往需要初始化权重 其实也可以不需手动初始化 在声明网络时 pytorch有默认的初始化方式 如 import torch x torch Tensor 2 2 print x 输出为 tensor 2 0363e 09 4
  • SQL之sqli-labs注入Less-2~4

    一 Less 2 与Less 1相同 我们同样使用 id 1 看是否可以注入 发现不可以 并且提示错误 我们可以知道 这里不需要引号 这就是与Less 1不同的地方 除此之外 以下步骤与Less 1相同 2 接下来我们使用 order by
  • PHP数据接收和使用

    接受来自js发送的数据 有几种接收方式 1 GET u GET user 2 POST P POS 3 REQUEST 两种传输方式的数据都可以接收 q REQUEST 创建虚拟服务器完成后操作 数据表格的方法 链接数据库 link new
  • springboot启动报错Error creating bean with name requestMappingHandlerMapping defined in class path resou

    springboot启动报错 Error creating bean with name requestMappingHandlerMapping defined in class path resource org springframe
  • python 批量读取txt文件

    1 python 批量读取txt文件 不读 注释的部分 并将数据保存为dataframe格式 代码 import re import glob import pandas as pd path data txt 指定txt文件所在文件夹路径
  • java如何正常关闭一个线程

    如何关闭一个线程 调用stop方法 该方法存在一个问题 JDK官方不推荐使用 该方法在关闭线程时可能不会释放掉monitor的锁 所以建议不要使用该方法结束线程 正常关闭 2 1 线程正常结束生命周期 线程运行结束 完成自己的使命之后 就会
  • 终于拿下腾讯25K的offer,面试官问我的面试题+回答,他都听懵了...

    前言 自动化测试面试题总结 1 你会封装自动化测试框架吗 这个问得最多 很多公司直接写在招聘要求中 自动化框架主要的核心框架就是分层 PO模式 分别为 基础封装层BasePage PO页面对象层 TestCase测试用例层 然后再加上日志处
  • 人们对刷脸支付便捷安全性的需求提升

    众所周知支付宝的领先依附于阿里系在线上电商领域的绝对优势地位 而微信支付却能凭借微信10亿的月活用户在线下支付披荆斩棘 在过去几年 移动支付的飞速发展带动了支付技术的变革 而人脸识别技术的成熟和人们对支付便捷安全性需求的提升 使得刷脸支付逐
  • 顺序表的冒泡排序算法及二分法查找代码实现

    本文主要实现了比较经典的冒泡排序算法 对已经有序或者基本有序的顺序表复杂度大大降低 和二分法查找 各位看官看代码吧 冒泡排序算法及二分法查找 include stdio h typedef struct int key SSTable El
  • pycharm注释快捷键

    选中需要注释的区域 ctrl 单行和多行皆可 当行则不需要选中 放在需要注释的那一行 点击 ctrl 即可 取消注释也是Ctrl
  • Python tips: 什么是*args和**kwargs?

    Python tips 什么是 args和 kwargs 先来看个例子 def foo args kwargs print args args print kwargs kwargs print if name main foo 1 2 3
  • 信息系统安全(对称加密)-软件设计(三十一)

    计算机网络 计算子网掩码 下 软件设计 三十 https blog csdn net ke1ying article details 129655795 安全属性 保密性 完整性 可用性 不可抵赖性 保密性 最小授权原则 防暴露 信息加密
  • 终于有人把“TCC分布式事务”实现原理讲明白了!

    之前网上看到很多写分布式事务的文章 不过大多都是将分布式事务各种技术方案简单介绍一下 很多朋友看了还是不知道分布式事务到底怎么回事 在项目里到底如何使用 所以这篇文章 就用大白话 手工绘图 并结合一个电商系统的案例实践 来给大家讲清楚到底什
  • 队列系列篇——数组模拟

    基本介绍 数组模拟队列 代码实现 package com wustyq queue import java util Scanner ClassName ArrayQueueDemo br Description br date 2021
  • vue+bootstrap 实现一个简单分页器

    效果如下图 当数据有很多条时 如果我们一次性请求的话 加载会比较慢 这个时候就会用到分页功能了 通过向后台发送请求数据的页码和条数 就可以实现分页功能 由于项目比较简单 要求不是很高 实现简单分页即可 按钮用的是bootstrap 发送aj
  • SQL注入-盲注 Burp盲注方法

    文章目录 判断库名位数 Burp 抓取数据包 设置payload位置 设置payload 1 设置payload 2 点击开始攻击 判断库名下表名的位数 Burp 抓取数据包 点击开始攻击 判断库名下第二张表名 判断表名下的字段名 判断表中
  • -------如何消除打印机的字迹(字迹打印机消除即)--------

    消除打印机的字迹共有以下四种方法 1 可使用刀片 轻轻刮掉即可消除打印机字迹 2 可使用消字灵 即可消除打印机字迹 3 可使用橡皮擦 即可擦掉消除打印机字迹 4 可使用专门的药水 即可消除打印机字迹 如何消除打印机的字迹 消除打印机的字迹共
  • luci自定义之welcome to luci

    终于有空了 又可以偷偷写博了 这一次是写登录页面还有状态页面 首先说一下登录页面 登录页面是最容易改的 因为我们不需要重构页面 只要修改样式就可以了 下面就开始吧 首先要找到登录页面所在的位置 登录页面是放在了 usr lib lua lu