Red de conocimiento informático - Material del sitio web - Cómo modificar el archivo de configuración

Cómo modificar el archivo de configuración

1. Introducción

OpenWRT utiliza LuCI como marco de interfaz web, que utiliza el lenguaje Lua. En este artículo, detallaremos cómo personalizar y desarrollar una interfaz para manipular archivos de configuración a través de un ejemplo simple.

2. Modelo y controlador

El concepto de diseño MVC es una de las claves para el desarrollo de LuCI

En LuCI, el archivo del controlador se define en /usr del firmware /lib/lua/luci/controller, el directorio de plantilla está en el directorio lib/lua/luci/view bajo el directorio /usr/lib/lua/luci/controller, y el modelo está en /usr/lib/ directorio lua/luci/modelo Abajo. Hay un módulo especial en el modelo llamado CBI, que se llama la función más interesante en LuCI. Su función es facilitar la modificación de los archivos de configuración.

3. Ejemplo

Todas las páginas de este artículo están creadas bajo la interfaz de red LuCI. No se crean páginas separadas, por lo que no es necesario escribir vistas, solo algunos controladores y. Sólo modelo.

1) Primero crea un controlador

controller/mycbi.lua

module("LUCI.controller.mycbi", package.seeall)

índice de función()

entrada("LUCI.controller", paquete. p>

entrada({"admin", "network", "mycbi_change"}, cbi ("mycbi-model/mycbimodule"), "Change My Conf", 30).dependent=false

end

Explique el código clave:

En En la función index(), la función de entrada se utiliza para completar el registro de cada función del módulo. La documentación oficial es la siguiente:

entrada(ruta, destino, título=nil, orden=nil)<. /p>

ruta es una tabla que describe la posición en el árbol de despacho: por ejemplo, si la ruta es {"foo", "bar", "baz"}, el nodo se insertará en foo.bar.baz

<.p>objetivo describe la acción que se llevará a cabo cuando un usuario solicite un nodo. Hay varios objetivos predefinidos, los tres más importantes (llamada, plantilla, cbi) se describen más adelante en esta página. los 3 más importantes (llamada, plantilla y cbi) se presentarán más adelante en esta página

título define el título que el usuario ve en el menú (opcional)

orden Sí Se ordenarán un número de nodos del mismo nivel en el menú (opcional).

Los objetivos se dividen en tres categorías: llamada, plantilla y cbi. La llamada se usa para llamar a funciones y la plantilla se usa para. llame a las plantillas htm existentes, y el módulo cbi es un módulo conveniente y de uso muy frecuente. Contiene una serie de elementos de interfaz combinados compuestos por archivos lua. Todos los controles del módulo cbi deben escribirse en luci.cbi.Map. definido en el módulo cbi Después de agregar el control, el sistema Luci realizará automáticamente la mayor parte del trabajo de procesamiento. Todos los elementos de control, como casillas de verificación, listas desplegables, etc., están encapsulados en el archivo cbi.lua.

2) Crear modelo

#mkdir /usr/lib/lua/luci/model/cbi/mycbi-model

#vim /usr/lib/ lua/luci/model/cbi/mycbi-model/mycbimodule .lua

m = Map("mycbi", "mycbi conf change interface")

s=m: sección( TypedSection, "MiSección")

s.addremove = true

s.option(Valor, "nombre de usuario", "Nombre:")

key=s :option(Valor, "contraseña", "Contraseña")

key.password=true;

Devolver m

Explique este código clave:

p>

3) Crear un archivo de configuración

#vim /etc/config/mycbi

config 'MySection' 'mycbi'

opción 'nombre de usuario' 'tuusuario'

opción 'contraseña' 'tucontraseña'

4. Prueba

Ingresa a la interfaz OpenWRT, inicia sesión y haz clic en "Red ". Si está en inglés, haga clic en red, podrá ver la entrada a la subpágina que agregamos:

Haga clic para ingresar a la página de la siguiente manera:

Ingrese el nombre de usuario y la contraseña : root/test, haga clic en guardar y luego vea la configuración en segundo plano. Si el archivo ha sido modificado:

5. Registro del problema

1) En primer lugar, el archivo de configuración. no puede tener ningún sufijo, de lo contrario la página estará vacía al cargar

2) Si ocurre un error 500, significa que hay un problema con el archivo lua, o la ruta es incorrecta, la sintaxis es incorrecta, o hay un problema con el archivo lua. O la ruta es incorrecta o la sintaxis es incorrecta. Aún no hay forma de escribir registros. Puede utilizar Wirehark para capturar paquetes y ver los errores.