From 094f2fa534886e24b1011891719c919f9de17fdb Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Sat, 6 Sep 2008 23:29:58 +0000 Subject: [PATCH] * luci-0.8: backport /etc/hosts configuration pages --- contrib/package/luci-addons/Makefile | 4 ++- .../luci-addons/dist/etc/config/luci_hosts | 3 ++ .../luci-addons/dist/etc/init.d/luci_hosts | 30 +++++++++++++++++ i18n/english/luasrc/i18n/admin-core.en.lua | 4 +++ i18n/english/luasrc/i18n/admin-core.en.xml | 4 +++ i18n/german/luasrc/i18n/admin-core.de.lua | 4 +++ i18n/german/luasrc/i18n/admin-core.de.xml | 6 ++++ .../root/lib/uci/schema/default/luci_hosts | 21 ++++++++++++ .../luasrc/controller/admin/network.lua | 29 +++++++++------- .../luasrc/model/cbi/admin_network/hosts.lua | 33 +++++++++++++++++++ 10 files changed, 125 insertions(+), 13 deletions(-) create mode 100644 contrib/package/luci-addons/dist/etc/config/luci_hosts create mode 100644 contrib/package/luci-addons/dist/etc/init.d/luci_hosts create mode 100644 libs/uvl/root/lib/uci/schema/default/luci_hosts create mode 100644 modules/admin-full/luasrc/model/cbi/admin_network/hosts.lua diff --git a/contrib/package/luci-addons/Makefile b/contrib/package/luci-addons/Makefile index 19c15f3f1..241f48ac1 100644 --- a/contrib/package/luci-addons/Makefile +++ b/contrib/package/luci-addons/Makefile @@ -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 index 000000000..6221df72d --- /dev/null +++ b/contrib/package/luci-addons/dist/etc/config/luci_hosts @@ -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 index 000000000..42ccff471 --- /dev/null +++ b/contrib/package/luci-addons/dist/etc/init.d/luci_hosts @@ -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 +} diff --git a/i18n/english/luasrc/i18n/admin-core.en.lua b/i18n/english/luasrc/i18n/admin-core.en.lua index 44613f236..9b12862d5 100644 --- a/i18n/english/luasrc/i18n/admin-core.en.lua +++ b/i18n/english/luasrc/i18n/admin-core.en.lua @@ -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' diff --git a/i18n/english/luasrc/i18n/admin-core.en.xml b/i18n/english/luasrc/i18n/admin-core.en.xml index ec78c773a..fd249e545 100644 --- a/i18n/english/luasrc/i18n/admin-core.en.xml +++ b/i18n/english/luasrc/i18n/admin-core.en.xml @@ -286,5 +286,9 @@ PEAP-Identity PEAP-Password Create Network +Hostnames +Host entries +Hostname +IP address diff --git a/i18n/german/luasrc/i18n/admin-core.de.lua b/i18n/german/luasrc/i18n/admin-core.de.lua index 224d74210..4981bddaf 100644 --- a/i18n/german/luasrc/i18n/admin-core.de.lua +++ b/i18n/german/luasrc/i18n/admin-core.de.lua @@ -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' diff --git a/i18n/german/luasrc/i18n/admin-core.de.xml b/i18n/german/luasrc/i18n/admin-core.de.xml index 7e1269580..39334aad8 100644 --- a/i18n/german/luasrc/i18n/admin-core.de.xml +++ b/i18n/german/luasrc/i18n/admin-core.de.xml @@ -322,4 +322,10 @@ PEAP-Passwort Netzwerk anlegen + +Rechnernamen +Host-Einträge +Rechnername +IP-Adresse + 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 index 000000000..e2597f476 --- /dev/null +++ b/libs/uvl/root/lib/uci/schema/default/luci_hosts @@ -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 + diff --git a/modules/admin-full/luasrc/controller/admin/network.lua b/modules/admin-full/luasrc/controller/admin/network.lua index 50623990f..72bf7cc5a 100644 --- a/modules/admin-full/luasrc/controller/admin/network.lua +++ b/modules/admin-full/luasrc/controller/admin/network.lua @@ -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 index 000000000..dbf4aff90 --- /dev/null +++ b/modules/admin-full/luasrc/model/cbi/admin_network/hosts.lua @@ -0,0 +1,33 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2008 Steven Barth + +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 -- 2.25.1