* luci-0.8: backport /etc/hosts configuration pages
authorJo-Philipp Wich <jow@openwrt.org>
Sat, 6 Sep 2008 23:29:58 +0000 (23:29 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Sat, 6 Sep 2008 23:29:58 +0000 (23:29 +0000)
contrib/package/luci-addons/Makefile
contrib/package/luci-addons/dist/etc/config/luci_hosts [new file with mode: 0644]
contrib/package/luci-addons/dist/etc/init.d/luci_hosts [new file with mode: 0644]
i18n/english/luasrc/i18n/admin-core.en.lua
i18n/english/luasrc/i18n/admin-core.en.xml
i18n/german/luasrc/i18n/admin-core.de.lua
i18n/german/luasrc/i18n/admin-core.de.xml
libs/uvl/root/lib/uci/schema/default/luci_hosts [new file with mode: 0644]
modules/admin-full/luasrc/controller/admin/network.lua
modules/admin-full/luasrc/model/cbi/admin_network/hosts.lua [new file with mode: 0644]

index 19c15f3..241f48a 100644 (file)
@@ -1,7 +1,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=luci-addons
-PKG_VERSION:=0.2
+PKG_VERSION:=0.3
 PKG_RELEASE:=1
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
@@ -33,8 +33,10 @@ define Package/luci-addons/install
        $(INSTALL_BIN) ./dist/sbin/luci-reload $(1)/sbin
        $(INSTALL_BIN) ./dist/etc/init.d/luci_fixtime $(1)/etc/init.d
        $(INSTALL_BIN) ./dist/etc/init.d/luci_ethers $(1)/etc/init.d
+       $(INSTALL_BIN) ./dist/etc/init.d/luci_hosts $(1)/etc/init.d
 
        $(INSTALL_CONF) ./dist/etc/config/luci_ethers $(1)/etc/config
+       $(INSTALL_CONF) ./dist/etc/config/luci_hosts $(1)/etc/config
 
        $(CP) ./dist/etc/crontabs/root $(1)/etc/crontabs/root
 endef
diff --git a/contrib/package/luci-addons/dist/etc/config/luci_hosts b/contrib/package/luci-addons/dist/etc/config/luci_hosts
new file mode 100644 (file)
index 0000000..6221df7
--- /dev/null
@@ -0,0 +1,3 @@
+config 'host'
+       option 'ipaddr' '10.11.12.13'
+       option 'hostname' 'sample-host'
diff --git a/contrib/package/luci-addons/dist/etc/init.d/luci_hosts b/contrib/package/luci-addons/dist/etc/init.d/luci_hosts
new file mode 100644 (file)
index 0000000..42ccff4
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/sh /etc/rc.common
+START=60
+
+apply_host() {
+       local cfg="$1"
+
+       config_get hostname "$cfg" hostname
+       config_get ipaddr   "$cfg" ipaddr
+
+       [ -n "$hostname" -a -n "$ipaddr" ] || return 0
+       
+       echo "$ipaddr $hostname" >> /var/etc/hosts
+}
+
+start() {
+       if [ ! -L /etc/hosts ]; then
+               test -f /etc/hosts && mv /etc/hosts /etc/hosts.local
+               ln -s /var/etc/hosts /etc/hosts
+       fi
+
+       test -d /var/etc || mkdir -p /var/etc
+       test -f /etc/hosts.local && cat /etc/hosts.local >> /var/etc/hosts
+       
+       config_load luci_hosts
+       config_foreach apply_host host
+}
+
+stop() {
+       test -f /var/etc/hosts && rm -f /var/etc/hosts
+}
index 44613f2..9b12862 100644 (file)
@@ -282,3 +282,7 @@ a_w_peapauth = 'PEAP-Authentication'
 a_w_peapidentity = 'PEAP-Identity'
 a_w_peappassword = 'PEAP-Password'
 a_w_create = 'Create Network'
+hostnames = 'Hostnames'
+hostnames_entries = 'Host entries'
+hostnames_hostname = 'Hostname'
+hostnames_address = 'IP address'
index ec78c77..fd249e5 100644 (file)
 <i18n:msg xml:id="a_w_peapidentity">PEAP-Identity</i18n:msg>
 <i18n:msg xml:id="a_w_peappassword">PEAP-Password</i18n:msg>
 <i18n:msg xml:id="a_w_create">Create Network</i18n:msg>
+<i18n:msg xml:id="hostnames">Hostnames</i18n:msg>
+<i18n:msg xml:id="hostnames_entries">Host entries</i18n:msg>
+<i18n:msg xml:id="hostnames_hostname">Hostname</i18n:msg>
+<i18n:msg xml:id="hostnames_address">IP address</i18n:msg>
 
 </i18n:msgs>
index 224d742..4981bdd 100644 (file)
@@ -295,3 +295,7 @@ a_w_peapauth = 'PEAP-Authentifizierung'
 a_w_peapidentity = 'PEAP-Identitäz'
 a_w_peappassword = 'PEAP-Passwort'
 a_w_create = 'Netzwerk anlegen'
+hostnames = 'Rechnernamen'
+hostnames_entries = 'Host-Einträge'
+hostnames_hostname = 'Rechnername'
+hostnames_address = 'IP-Adresse'
index 7e12695..39334aa 100644 (file)
 <i18n:msg xml:id="a_w_peappassword">PEAP-Passwort</i18n:msg>
 
 <i18n:msg xml:id="a_w_create">Netzwerk anlegen</i18n:msg>
+
+<i18n:msg xml:id="hostnames">Rechnernamen</i18n:msg>
+<i18n:msg xml:id="hostnames_entries">Host-Einträge</i18n:msg>
+<i18n:msg xml:id="hostnames_hostname">Rechnername</i18n:msg>
+<i18n:msg xml:id="hostnames_address">IP-Adresse</i18n:msg>
+
 </i18n:msgs>
diff --git a/libs/uvl/root/lib/uci/schema/default/luci_hosts b/libs/uvl/root/lib/uci/schema/default/luci_hosts
new file mode 100644 (file)
index 0000000..e2597f4
--- /dev/null
@@ -0,0 +1,21 @@
+package luci_hosts
+
+config section
+       option name     'host'
+       option title    'Host entry definition'
+       option package  'luci_hosts'
+
+config variable
+       option name     'hostname'
+       option title    'Hostname'
+       option section  'luci_hosts.host'
+       option datatype 'hostname'
+       option required true
+
+config variable
+       option name     'ipaddr'
+       option title    'IP address'
+       option section  'luci_hosts.host'
+       option datatype 'ipaddr'
+       option required true
+
index 5062399..72bf7cc 100644 (file)
@@ -20,14 +20,14 @@ function index()
 
        local page  = node("admin", "network")
        page.target = alias("admin", "network", "network")
-       page.title  = i18n("network")  
+       page.title  = i18n("network")
        page.order  = 50
-       
+
        local page  = node("admin", "network", "vlan")
        page.target = cbi("admin_network/vlan")
        page.title  = i18n("a_n_switch")
        page.order  = 20
-       
+
        local page  = node("admin", "network", "wireless")
        page.target = form("admin_network/wireless")
        page.title  = i18n("wifi")
@@ -41,12 +41,12 @@ function index()
                                 ifc:upper()).i18n = "wifi"
                end
        )
-       
+
        local page  = node("admin", "network", "wifi")
        page.target = cbi("admin_network/wifi")
        page.leaf   = true
        page.i18n = "wifi"
-       
+
        local page  = node("admin", "network", "network")
        page.target = cbi("admin_network/network")
        page.title  = i18n("interfaces", "Schnittstellen")
@@ -61,7 +61,7 @@ function index()
                        end
                end
        )
-       
+
        local page  = node("admin", "network", "ifaces")
        page.target = cbi("admin_network/ifaces")
        page.leaf   = true
@@ -70,23 +70,28 @@ function index()
        page.target = cbi("admin_network/dhcp")
        page.title  = "DHCP"
        page.order  = 30
-       
+
        entry(
         {"admin", "network", "dhcp", "leases"},
         cbi("admin_network/dhcpleases"),
         i18n("dhcp_leases")
-       ) 
-       
+       )
+
+       local page  = node("admin", "network", "hosts")
+       page.target = cbi("admin_network/hosts")
+       page.title  = i18n("hostnames", "Hostnames")
+       page.order  = 40
+
        local page  = node("admin", "network", "routes")
        page.target = cbi("admin_network/routes")
        page.title  = i18n("a_n_routes")
-       page.order  = 40
+       page.order  = 50
        page.leaf   = true
-       
+
        entry(
         {"admin", "network", "routes", "static"},
         function() end,
         i18n("a_n_routes_static")
        )
 
-end
\ No newline at end of file
+end
diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/hosts.lua b/modules/admin-full/luasrc/model/cbi/admin_network/hosts.lua
new file mode 100644 (file)
index 0000000..dbf4aff
--- /dev/null
@@ -0,0 +1,33 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2008 Steven Barth <steven@midlink.org>
+
+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
+
+$Id$
+]]--
+
+require("luci.sys")
+require("luci.util")
+m = Map("luci_hosts", translate("hostnames"))
+
+s = m:section(TypedSection, "host", translate("hostnames_entries"))
+s.addremove = true
+s.anonymous = true
+s.template = "cbi/tblsection"
+
+hn = s:option(Value, "hostname", translate("hostnames_hostname"))
+ip = s:option(Value, "ipaddr", translate("hostnames_address"))
+for i, dataset in ipairs(luci.sys.net.arptable()) do
+       ip:value(
+               dataset["IP address"],
+               "%s (%s)" %{ dataset["IP address"], dataset["HW address"] }
+       )
+end
+
+return m