Propongo crear una base práctica de desarrollo de aplicaciones para OpenWrt Barrier Breaker, algo muy simple como incluir un "Hello World" creado en "C" dentro de una nueva pestaña de Luci llamada por ejemplo "Aprendizaje".
Simplemente clickarias en la nueva pestaña y mostraria el mensaje "Hello World" en una nueva pantalla en blanco.
Este tema cayó en el olvido. Igual ya no interesa. Aún así, expondré algunos avances.
1) Crear una carpeta donde colocar los archivos de nuestras aplicaciones.
mkdir /usr/lib/lua/luci/controller/myapp
2) Agregar opciones al munú de LuCI desde las que lanzar nuestras aplicaciones. Editar /usr/lib/lua/luci/controller/myapp/new_tab.lua y dejarlo tal que así:
module("luci.controller.myapp.new_tab", package.seeall) --notice that new_tab is the name of the file new_tab.lua
function index()
entry({"admin", "new_tab"}, firstchild(), "Aprendizaje", 30).dependent=false -- Opción principal
entry({"admin", "new_tab", "tab_from_cbi"}, cbi("myapp-mymodule/cbi_tab"), "Hello, World!", 1) -- sub-opción 1
entry({"admin", "new_tab", "tab_from_view"}, template("myapp-mymodule/view_tab"), "¡Hola, Mundo!", 2) -- sub-opción 2
end
Rearrancamos el router para poder ver las flamantes nuevas opciones.
Por ahora, las opciones están vacías de contenido. Hay dos maneras de agregar contenido: CBI y VIEW-TAB.
3) Agregar código CBI. Son necesarios dos archivos: uno para el código y otro para los datos. Para el primero, hay que crear la carpetar /usr/lib/lua/luci/model/cbi/myapp-mymodule/ y editar un archivo nuevo nombrado /usr/lib/lua/luci/model/cbi/myapp-mymodule/cbi_tab.lua
m = Map("cbi_file", "Hello, World!", "(Más vale tarde que nunca)")
d = m:section(TypedSection, "info", "Un formulario sencillo:")
a = d:option(Value, "name", "Campo 1"); a.optional=false; a.rmempty = false;
return m
Ahora, el archivo de datos /etc/config/cbi_file.
config 'info' 'A'
option 'name' 'OpenWRT'
4) Agregar código view-tab. Sólo se necesita un archivo en la carpeta /usr/lib/lua/luci/view/myapp-mymodule, nombrado /usr/lib/lua/luci/view/myapp-mymodule/view_tab.htm
<%+header%>
<h2><a id="content" name="content">..Hola, Mundo![/url]</h2>
<div class="cbi-map-descr">(M..s vale tarde que nunca)</div>
<legend>Listado simple de dos elementos</legend>
<ul><li> Elemento 1<%=eating%></li>
<li> Elemento 2<%=eating%></li></ul>
<%+footer%>
NOTAS.-
Por lo que parece, para integrar código CBI en LuCI hay que seguir unas normas muy estrictas.
Contrariamente, el códibo view-tab parece simple html al que se le añade las marcas especiales <%+header%> para agregar la barra horizontal de menú y <%+footer%> para el pie de página.
Saludos.