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)
$(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
--- /dev/null
+config 'host'
+ option 'ipaddr' '10.11.12.13'
+ option 'hostname' 'sample-host'
--- /dev/null
+#!/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
+}
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'
<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>
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'
<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>
--- /dev/null
+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
+
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")
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")
end
end
)
-
+
local page = node("admin", "network", "ifaces")
page.target = cbi("admin_network/ifaces")
page.leaf = true
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
--- /dev/null
+--[[
+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