From aa9ccf77c6648515ba58c37b9345cdbd561028db Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Thu, 8 May 2008 15:37:41 +0000 Subject: * Mördercommit ;-) * Major Repository Reorganisation * API 0.4 Softfreeze to come MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/admin-core/Makefile | 2 + modules/admin-core/src/controller/admin/index.lua | 1 + .../admin-core/src/controller/admin/network.lua | 1 + .../admin-core/src/controller/admin/services.lua | 1 + modules/admin-core/src/controller/admin/system.lua | 200 +++++++++++++++++++++ modules/admin-core/src/controller/admin/uci.lua | 61 +++++++ modules/admin-core/src/controller/admin/wifi.lua | 1 + modules/admin-core/src/i18n/admin_index.en | 24 +++ modules/admin-core/src/i18n/admin_uci.en | 2 + .../admin-core/src/model/cbi/admin_index/luci.lua | 39 ++++ .../src/model/cbi/admin_network/dhcp.lua | 41 +++++ .../src/model/cbi/admin_network/ifaces.lua | 43 +++++ .../admin-core/src/model/cbi/admin_network/ptp.lua | 33 ++++ .../admin-core/src/model/cbi/admin_network/qos.lua | 56 ++++++ .../src/model/cbi/admin_network/routes.lua | 23 +++ .../src/model/cbi/admin_network/vlan.lua | 17 ++ .../src/model/cbi/admin_services/dnsmasq.lua | 29 +++ .../src/model/cbi/admin_services/dropbear.lua | 15 ++ .../src/model/cbi/admin_services/httpd.lua | 18 ++ .../src/model/cbi/admin_services/olsrd.lua | 89 +++++++++ .../src/model/cbi/admin_system/fstab.lua | 25 +++ .../src/model/cbi/admin_system/hostname.lua | 9 + .../src/model/cbi/admin_wifi/devices.lua | 52 ++++++ .../src/model/cbi/admin_wifi/networks.lua | 77 ++++++++ modules/admin-core/src/model/menu/00admin.lua | 33 ++++ modules/admin-core/src/view/admin_index/index.htm | 11 ++ modules/admin-core/src/view/admin_index/wizard.htm | 36 ++++ .../admin-core/src/view/admin_network/index.htm | 11 ++ .../admin-core/src/view/admin_services/index.htm | 8 + .../admin-core/src/view/admin_system/editor.htm | 14 ++ modules/admin-core/src/view/admin_system/index.htm | 9 + modules/admin-core/src/view/admin_system/ipkg.htm | 26 +++ .../admin-core/src/view/admin_system/packages.htm | 77 ++++++++ .../admin-core/src/view/admin_system/passwd.htm | 35 ++++ .../admin-core/src/view/admin_system/reboot.htm | 11 ++ .../admin-core/src/view/admin_system/sshkeys.htm | 26 +++ .../admin-core/src/view/admin_system/upgrade.htm | 34 ++++ modules/admin-core/src/view/admin_uci/apply.htm | 6 + modules/admin-core/src/view/admin_uci/changes.htm | 11 ++ modules/admin-core/src/view/admin_uci/revert.htm | 5 + modules/admin-core/src/view/admin_wifi/index.htm | 9 + 41 files changed, 1221 insertions(+) create mode 100644 modules/admin-core/Makefile create mode 100644 modules/admin-core/src/controller/admin/index.lua create mode 100644 modules/admin-core/src/controller/admin/network.lua create mode 100644 modules/admin-core/src/controller/admin/services.lua create mode 100644 modules/admin-core/src/controller/admin/system.lua create mode 100644 modules/admin-core/src/controller/admin/uci.lua create mode 100644 modules/admin-core/src/controller/admin/wifi.lua create mode 100644 modules/admin-core/src/i18n/admin_index.en create mode 100644 modules/admin-core/src/i18n/admin_uci.en create mode 100644 modules/admin-core/src/model/cbi/admin_index/luci.lua create mode 100644 modules/admin-core/src/model/cbi/admin_network/dhcp.lua create mode 100644 modules/admin-core/src/model/cbi/admin_network/ifaces.lua create mode 100644 modules/admin-core/src/model/cbi/admin_network/ptp.lua create mode 100644 modules/admin-core/src/model/cbi/admin_network/qos.lua create mode 100644 modules/admin-core/src/model/cbi/admin_network/routes.lua create mode 100644 modules/admin-core/src/model/cbi/admin_network/vlan.lua create mode 100644 modules/admin-core/src/model/cbi/admin_services/dnsmasq.lua create mode 100644 modules/admin-core/src/model/cbi/admin_services/dropbear.lua create mode 100644 modules/admin-core/src/model/cbi/admin_services/httpd.lua create mode 100644 modules/admin-core/src/model/cbi/admin_services/olsrd.lua create mode 100644 modules/admin-core/src/model/cbi/admin_system/fstab.lua create mode 100644 modules/admin-core/src/model/cbi/admin_system/hostname.lua create mode 100644 modules/admin-core/src/model/cbi/admin_wifi/devices.lua create mode 100644 modules/admin-core/src/model/cbi/admin_wifi/networks.lua create mode 100644 modules/admin-core/src/model/menu/00admin.lua create mode 100644 modules/admin-core/src/view/admin_index/index.htm create mode 100644 modules/admin-core/src/view/admin_index/wizard.htm create mode 100644 modules/admin-core/src/view/admin_network/index.htm create mode 100644 modules/admin-core/src/view/admin_services/index.htm create mode 100644 modules/admin-core/src/view/admin_system/editor.htm create mode 100644 modules/admin-core/src/view/admin_system/index.htm create mode 100644 modules/admin-core/src/view/admin_system/ipkg.htm create mode 100644 modules/admin-core/src/view/admin_system/packages.htm create mode 100644 modules/admin-core/src/view/admin_system/passwd.htm create mode 100644 modules/admin-core/src/view/admin_system/reboot.htm create mode 100644 modules/admin-core/src/view/admin_system/sshkeys.htm create mode 100644 modules/admin-core/src/view/admin_system/upgrade.htm create mode 100644 modules/admin-core/src/view/admin_uci/apply.htm create mode 100644 modules/admin-core/src/view/admin_uci/changes.htm create mode 100644 modules/admin-core/src/view/admin_uci/revert.htm create mode 100644 modules/admin-core/src/view/admin_wifi/index.htm (limited to 'modules') diff --git a/modules/admin-core/Makefile b/modules/admin-core/Makefile new file mode 100644 index 000000000..81a96f6a8 --- /dev/null +++ b/modules/admin-core/Makefile @@ -0,0 +1,2 @@ +include ../../build/config.mk +include ../../build/module.mk \ No newline at end of file diff --git a/modules/admin-core/src/controller/admin/index.lua b/modules/admin-core/src/controller/admin/index.lua new file mode 100644 index 000000000..b4a7720f8 --- /dev/null +++ b/modules/admin-core/src/controller/admin/index.lua @@ -0,0 +1 @@ +module("ffluci.controller.admin.index", package.seeall) \ No newline at end of file diff --git a/modules/admin-core/src/controller/admin/network.lua b/modules/admin-core/src/controller/admin/network.lua new file mode 100644 index 000000000..0e3165f08 --- /dev/null +++ b/modules/admin-core/src/controller/admin/network.lua @@ -0,0 +1 @@ +module("ffluci.controller.admin.network", package.seeall) \ No newline at end of file diff --git a/modules/admin-core/src/controller/admin/services.lua b/modules/admin-core/src/controller/admin/services.lua new file mode 100644 index 000000000..42181212b --- /dev/null +++ b/modules/admin-core/src/controller/admin/services.lua @@ -0,0 +1 @@ +module("ffluci.controller.admin.services", package.seeall) \ No newline at end of file diff --git a/modules/admin-core/src/controller/admin/system.lua b/modules/admin-core/src/controller/admin/system.lua new file mode 100644 index 000000000..7a927d604 --- /dev/null +++ b/modules/admin-core/src/controller/admin/system.lua @@ -0,0 +1,200 @@ +module("ffluci.controller.admin.system", package.seeall) + +require("ffluci.sys") +require("ffluci.http") +require("ffluci.util") +require("ffluci.fs") +require("ffluci.model.ipkg") +require("ffluci.model.uci") + +function action_editor() + local file = ffluci.http.formvalue("file", "") + local data = ffluci.http.formvalue("data") + local err = nil + local msg = nil + local stat = true + + if file and data then + stat, err = ffluci.fs.writefile(file, data) + end + + if not stat then + err = ffluci.util.split(err, " ") + table.remove(err, 1) + msg = table.concat(err, " ") + end + + local cnt, err = ffluci.fs.readfile(file) + if cnt then + cnt = ffluci.util.pcdata(cnt) + end + ffluci.template.render("admin_system/editor", {fn=file, cnt=cnt, msg=msg}) +end + +function action_ipkg() + local file = "/etc/ipkg.conf" + local data = ffluci.http.formvalue("data") + local stat = nil + local err = nil + + if data then + stat, err = ffluci.fs.writefile(file, data) + end + + local cnt = ffluci.fs.readfile(file) + if cnt then + cnt = ffluci.util.pcdata(cnt) + end + + ffluci.template.render("admin_system/ipkg", {cnt=cnt, msg=err}) +end + +function action_packages() + local ipkg = ffluci.model.ipkg + local void = nil + local submit = ffluci.http.formvalue("submit") + + + -- Search query + local query = ffluci.http.formvalue("query") + query = (query ~= '') and query or nil + + + -- Packets to be installed + local install = submit and ffluci.http.formvaluetable("install") + + -- Install from URL + local url = ffluci.http.formvalue("url") + if url and url ~= '' and submit then + if not install then + install = {} + end + install[url] = 1 + end + + -- Do install + if install then + for k, v in pairs(install) do + void, install[k] = ipkg.install(k) + end + end + + + -- Remove packets + local remove = submit and ffluci.http.formvaluetable("remove") + if remove then + for k, v in pairs(remove) do + void, remove[k] = ipkg.remove(k) + end + end + + + -- Update all packets + local update = ffluci.http.formvalue("update") + if update then + void, update = ipkg.update() + end + + + -- Upgrade all packets + local upgrade = ffluci.http.formvalue("upgrade") + if upgrade then + void, upgrade = ipkg.upgrade() + end + + + -- Package info + local info = ffluci.model.ipkg.info(query) + info = info or {} + local pkgs = {} + + -- Sort after status and name + for k, v in pairs(info) do + local x = 0 + for i, j in pairs(pkgs) do + local vins = (v.Status and v.Status.installed) + local jins = (j.Status and j.Status.installed) + if vins ~= jins then + if vins then + break + end + else + if j.Package > v.Package then + break + end + end + x = i + end + table.insert(pkgs, x+1, v) + end + + ffluci.template.render("admin_system/packages", {pkgs=pkgs, query=query, + install=install, remove=remove, update=update, upgrade=upgrade}) +end + +function action_passwd() + local p1 = ffluci.http.formvalue("pwd1") + local p2 = ffluci.http.formvalue("pwd2") + local stat = nil + + if p1 or p2 then + if p1 == p2 then + stat = ffluci.sys.user.setpasswd("root", p1) + else + stat = 10 + end + end + + ffluci.template.render("admin_system/passwd", {stat=stat}) +end + +function action_reboot() + local reboot = ffluci.http.formvalue("reboot") + ffluci.template.render("admin_system/reboot", {reboot=reboot}) + if reboot then + ffluci.sys.reboot() + end +end + +function action_sshkeys() + local file = "/etc/dropbear/authorized_keys" + local data = ffluci.http.formvalue("data") + local stat = nil + local err = nil + + if data then + stat, err = ffluci.fs.writefile(file, data) + end + + local cnt = ffluci.fs.readfile(file) + if cnt then + cnt = ffluci.util.pcdata(cnt) + end + + ffluci.template.render("admin_system/sshkeys", {cnt=cnt, msg=err}) +end + +function action_upgrade() + local ret = nil + local plat = ffluci.fs.mtime("/lib/upgrade/platform.sh") + + local image = ffluci.http.formvalue("image") + local imgname = ffluci.http.formvalue("image_name") + local keepcfg = ffluci.http.formvalue("keepcfg") + + if plat and imgname then + local kpattern = nil + if keepcfg then + local files = ffluci.model.uci.sections("luci").flash_keep + if files.luci and files.luci.flash_keep then + kpattern = "" + for k,v in pairs(files.luci.flash_keep) do + kpattern = kpattern .. " " .. v + end + end + end + ret = ffluci.sys.flash(image, kpattern) + end + + ffluci.template.render("admin_system/upgrade", {sysupgrade=plat, ret=ret}) +end \ No newline at end of file diff --git a/modules/admin-core/src/controller/admin/uci.lua b/modules/admin-core/src/controller/admin/uci.lua new file mode 100644 index 000000000..cb4a95ba5 --- /dev/null +++ b/modules/admin-core/src/controller/admin/uci.lua @@ -0,0 +1,61 @@ +module("ffluci.controller.admin.uci", package.seeall) +require("ffluci.util") +require("ffluci.sys") + +-- This function has a higher priority than the admin_uci/apply template +function action_apply() + local changes = ffluci.model.uci.changes() + local output = "" + + if changes then + local com = {} + local run = {} + + -- Collect files to be applied and commit changes + for i, line in ipairs(ffluci.util.split(changes)) do + local r = line:match("^-?([^.]+)") + if r then + com[r] = true + + if ffluci.config.uci_oncommit and ffluci.config.uci_oncommit[r] then + run[ffluci.config.uci_oncommit[r]] = true + end + end + end + + -- Apply + for config, i in pairs(com) do + ffluci.model.uci.commit(config) + end + + -- Search for post-commit commands + for cmd, i in pairs(run) do + output = output .. cmd .. ":" .. ffluci.sys.exec(cmd) .. "\n" + end + end + + ffluci.template.render("admin_uci/apply", {changes=changes, output=output}) +end + + +function action_revert() + local changes = ffluci.model.uci.changes() + if changes then + local revert = {} + + -- Collect files to be reverted + for i, line in ipairs(ffluci.util.split(changes)) do + local r = line:match("^-?([^.]+)") + if r then + revert[r] = true + end + end + + -- Revert them + for k, v in pairs(revert) do + ffluci.model.uci.revert(k) + end + end + + ffluci.template.render("admin_uci/revert", {changes=changes}) +end \ No newline at end of file diff --git a/modules/admin-core/src/controller/admin/wifi.lua b/modules/admin-core/src/controller/admin/wifi.lua new file mode 100644 index 000000000..bc1040c71 --- /dev/null +++ b/modules/admin-core/src/controller/admin/wifi.lua @@ -0,0 +1 @@ +module("ffluci.controller.admin.wifi", package.seeall) \ No newline at end of file diff --git a/modules/admin-core/src/i18n/admin_index.en b/modules/admin-core/src/i18n/admin_index.en new file mode 100644 index 000000000..6a4877523 --- /dev/null +++ b/modules/admin-core/src/i18n/admin_index.en @@ -0,0 +1,24 @@ +luci = "User Interface" + +hello = "Hello!" +admin1 = "This is the administration area of FFLuCI." +admin2 = "FFLuCI is a free, flexible, and user friendly graphical interface for configuring OpenWRT Kamikaze." +admin3 = "On the following pages you can adjust all important settings of your router." +admin4 = "You will find a navigation leading to the different configuration pages on the left side." +admin5 = [[As we are always want to improve this interface we are looking forward +to your feedback and suggestions.]] +admin6 = "And now have fun with your router!" +team = "The FFLuCI Team" + +luci1 = "Here you can customize the settings and the functionality of FFLuCI." +language = "Language" +general = "General" +catpriv = "Category Privileges" +catpriv1 = [[To secure FFLuCI even further the user and group privileges of +each category can be decreased. Therefore an attacker cannot takeover the whole system +when a security exploit for any publicly available page is found.]] +ucicommit = "Post-commit actions" +ucicommit1 = [[These commands will be executed automatically when a given UCI configuration is committed allowing +changes to be applied instantly.]] +keepflash = "Files to be kept when flashing a new firmware" +keepflash1 = "When flashing a new firmware with FFLuCI these files will be added to the new firmware installation." \ No newline at end of file diff --git a/modules/admin-core/src/i18n/admin_uci.en b/modules/admin-core/src/i18n/admin_uci.en new file mode 100644 index 000000000..00ac5f5ff --- /dev/null +++ b/modules/admin-core/src/i18n/admin_uci.en @@ -0,0 +1,2 @@ +uci_applied = "The following changes were applied" +uci_reverted = "The following changes were reverted" \ No newline at end of file diff --git a/modules/admin-core/src/model/cbi/admin_index/luci.lua b/modules/admin-core/src/model/cbi/admin_index/luci.lua new file mode 100644 index 000000000..4f6910eee --- /dev/null +++ b/modules/admin-core/src/model/cbi/admin_index/luci.lua @@ -0,0 +1,39 @@ +-- ToDo: Translate +require("ffluci.config") +m = Map("luci", translate("luci", "Oberfläche"), translate("luci1", + "Hier können Eigenschaften und die Funktionalität der Oberfläche angepasst werden.")) + +c = m:section(NamedSection, "main", "core", translate("general", "Allgemein")) + +l = c:option(ListValue, "lang", translate("language", "Sprache")) +for k, v in pairs(ffluci.config.languages) do + if k:sub(1, 1) ~= "." then + l:value(k, v) + end +end + +t = c:option(ListValue, "mediaurlbase", translate("design", "Design")) +for k, v in pairs(ffluci.config.themes) do + if k:sub(1, 1) ~= "." then + t:value(v, k) + end +end + +p = m:section(NamedSection, "category_privileges", "core", translate("catpriv", "Kategorieprivilegien"), + translate("catpriv1", [[Zur zusätzlichen Sicherung der Oberfläche gegen Angreifer, können hier die +Ausführungsrechte der Seiten für einzelne Kategorien reduziert werden. So können z.B. Sicherheitslücken im +ungeschützten Bereich der Oberfläche nicht mehr zur Übernahme des Routers genutzt werden.]])) +p.dynamic = true + +u = m:section(NamedSection, "uci_oncommit", "event", translate("ucicommit", "UCI-Befehle beim Anwenden"), + translate("ucicommit1", [[Beim Anwenden +der Konfiguration aus der Oberflächliche heraus können automatisch die relevanten Dienste neugestart werden, +sodass Änderungen sofort nach dem Anwenden aktiv werden und der Router nicht erst neugestartet werden muss.]])) +u.dynamic = true + +f = m:section(NamedSection, "flash_keep", "extern", translate("keepflash", "Zu übernehmende Dateien bei Firmwareupgrade"), + translate("keepflash1", [[Die folgenden Dateien und Verzeichnisse werden beim Aktualisieren der Firmware +über die Oberfläche automatisch in die neue Firmware übernommen.]])) +f.dynamic = true + +return m \ No newline at end of file diff --git a/modules/admin-core/src/model/cbi/admin_network/dhcp.lua b/modules/admin-core/src/model/cbi/admin_network/dhcp.lua new file mode 100644 index 000000000..caac277c4 --- /dev/null +++ b/modules/admin-core/src/model/cbi/admin_network/dhcp.lua @@ -0,0 +1,41 @@ +-- ToDo: Translate, Add descriptions and help texts +require("ffluci.model.uci") +require("ffluci.sys") + +m = Map("dhcp", "DHCP", [[Mit Hilfe von DHCP können Netzteilnehmer automatisch +ihre Netzwerkkonfiguration (IP-Adresse, Netzmaske, DNS-Server, DHCP, ...) beziehen.]]) + +s = m:section(TypedSection, "dhcp") +s.addremove = true +s.anonymous = true + +iface = s:option(ListValue, "interface", "Schnittstelle") +for k, v in pairs(ffluci.model.uci.sections("network")) do + if v[".type"] == "interface" and k ~= "loopback" then + iface:value(k) + s:depends("interface", k) -- Only change sections with existing interfaces + end +end + +s:option(Value, "start", "Start", "Erste vergebene Adresse (letztes Oktett)").rmempty = true + +s:option(Value, "limit", "Limit", "Anzahl zu vergebender Adressen -1").rmempty = true + +s:option(Value, "leasetime", "Laufzeit").rmempty = true + +s:option(Flag, "dynamicdhcp", "Dynamisches DHCP").rmempty = true + +s:option(Value, "name", "Name").optional = true + +s:option(Flag, "ignore", "Schnittstelle ignorieren", "DHCP für dieses Netzwerk deaktivieren").optional = true + +s:option(Value, "netmask", "Netzmaske").optional = true + +s:option(Flag, "force", "Start erzwingen").optional = true + +for i, line in pairs(ffluci.sys.execl("dnsmasq --help dhcp")) do + k, v = line:match("([^ ]+) +([^ ]+)") + s:option(Value, "dhcp"..k, v).optional = true +end + +return m \ No newline at end of file diff --git a/modules/admin-core/src/model/cbi/admin_network/ifaces.lua b/modules/admin-core/src/model/cbi/admin_network/ifaces.lua new file mode 100644 index 000000000..2dd190957 --- /dev/null +++ b/modules/admin-core/src/model/cbi/admin_network/ifaces.lua @@ -0,0 +1,43 @@ +-- ToDo: Translate, Add descriptions and help texts +m = Map("network", "Schnittstellen", [[An dieser Stelle können die einzelnen Schnittstellen +des Netzwerkes konfiguriert werden. Es können mehrere Schnittstellen zu einer Brücke zusammengefasst werden, +indem diese durch Leerzeichen getrennt aufgezählt werden und ein entsprechender Haken im Feld Netzwerkbrücke +gesetzt wird. Es können VLANs in der Notation SCHNITTSTELLE.VLANNR (z.B.: eth0.1) verwendet werden.]]) + +s = m:section(TypedSection, "interface") +s.addremove = true +s:exclude("loopback") +s:depends("proto", "static") +s:depends("proto", "dhcp") + +p = s:option(ListValue, "proto", "Protokoll") +p:value("static", "statisch") +p:value("dhcp", "DHCP") +p.default = "static" + +br = s:option(Flag, "type", "Netzwerkbrücke", "überbrückt angegebene Schnittstelle(n)") +br.enabled = "bridge" +br.rmempty = true + +s:option(Value, "ifname", "Schnittstelle") + +s:option(Value, "ipaddr", "IP-Adresse") + +s:option(Value, "netmask", "Netzmaske"):depends("proto", "static") + +gw = s:option(Value, "gateway", "Gateway") +gw:depends("proto", "static") +gw.rmempty = true + +dns = s:option(Value, "dns", "DNS-Server") +dns:depends("proto", "static") +dns.optional = true + +mtu = s:option(Value, "mtu", "MTU") +mtu.optional = true +mtu.isinteger = true + +mac = s:option(Value, "macaddr", "MAC-Adresse") +mac.optional = true + +return m \ No newline at end of file diff --git a/modules/admin-core/src/model/cbi/admin_network/ptp.lua b/modules/admin-core/src/model/cbi/admin_network/ptp.lua new file mode 100644 index 000000000..6a627f268 --- /dev/null +++ b/modules/admin-core/src/model/cbi/admin_network/ptp.lua @@ -0,0 +1,33 @@ +-- ToDo: Translate, Add descriptions and help texts +m = Map("network", "Punkt-zu-Punkt Verbindungen", [[Punkt-zu-Punkt Verbindungen +über PPPoE oder PPTP werden häufig dazu verwendet, um über DSL o.ä. Techniken eine +Verbindung zum Internetgateway eines Internetzugangsanbieters aufzubauen.]]) + +s = m:section(TypedSection, "interface") +s.addremove = true +s:depends("proto", "pppoe") +s:depends("proto", "pptp") + +p = s:option(ListValue, "proto", "Protokoll") +p:value("pppoe", "PPPoE") +p:value("pptp", "PPTP") +p.default = "pppoe" + +s:option(Value, "ifname", "Schnittstelle") + +s:option(Value, "username", "Benutzername") +s:option(Value, "password", "Passwort") + +s:option(Value, "keepalive", "Keep-Alive", "Bei einer Verbindungstrennung automatisch neu verbinden").optional = true + +s:option(Value, "demand", "Dial on Demand (idle time)", "Zeit nach der die Verbindung bei Inaktivität getrennt wird").optional = true + +srv = s:option(Value, "server", "PPTP-Server") +srv:depends("proto", "pptp") +srv.optional = true + +mtu = s:option(Value, "mtu", "MTU") +mtu.optional = true +mtu.isinteger = true + +return m \ No newline at end of file diff --git a/modules/admin-core/src/model/cbi/admin_network/qos.lua b/modules/admin-core/src/model/cbi/admin_network/qos.lua new file mode 100644 index 000000000..d58130f10 --- /dev/null +++ b/modules/admin-core/src/model/cbi/admin_network/qos.lua @@ -0,0 +1,56 @@ +-- ToDo: Translate, Add descriptions and help texts +m = Map("qos", "Quality of Service", [[Mit Hilfe von QoS kann einzelnen Rechnern oder Netzwerkdiensten +eine höhere oder niedrigere Priorität zugewiesen werden.]]) + +s = m:section(TypedSection, "interface", "Schnittstellen") +s.addremove = true + +s:option(Flag, "enabled", "aktiviert") + +c = s:option(ListValue, "classgroup", "Klassifizierung") +c:value("Default", "standard") +c.default = "Default" + +s:option(Flag, "overhead", "Overheadberechnung") + +s:option(Value, "download", "Downlink", "kb/s") + +s:option(Value, "upload", "Uplink", "kb/s") + +s = m:section(TypedSection, "classify", "Klassifizierung") + +s.anonymous = true +s.addremove = true + +t = s:option(ListValue, "target", "Klasse") +t:value("Priority") +t:value("Express") +t:value("Normal") +t:value("Bulk") +t.default = "Normal" + +s:option(Value, "srchost", "Quelladresse", "Quellhost / Quellnetz").optional = true +s:option(Value, "dsthost", "Zieladresse", "Zielhost / Zielnetz").optional = true +s:option(Value, "layer7", "Layer 7").optional = true + +p2p = s:option(ListValue, "ipp2p", "P2P") +p2p:value("") +p2p:value("all", "Alle") +p2p:value("bit", "Bittorrent") +p2p:value("dc", "DirectConnect") +p2p:value("edk", "eDonkey") +p2p:value("gnu", "Gnutella") +p2p:value("kazaa", "Kazaa") +p2p.optional = true + +p = s:option(ListValue, "proto", "Protokoll") +p:value("") +p:value("tcp", "TCP") +p:value("udp", "UDP") +p:value("icmp", "ICMP") +p.optional = true + +s:option(Value, "ports", "Port").optional = true +s:option(Value, "portrange", "Portbereich").optional = true + +return m \ No newline at end of file diff --git a/modules/admin-core/src/model/cbi/admin_network/routes.lua b/modules/admin-core/src/model/cbi/admin_network/routes.lua new file mode 100644 index 000000000..49e432180 --- /dev/null +++ b/modules/admin-core/src/model/cbi/admin_network/routes.lua @@ -0,0 +1,23 @@ +-- ToDo: Translate, Add descriptions and help texts +m = Map("network", "Statische Routen", [[Statische Routen geben an, +über welche Schnittstelle und welches Gateway ein bestimmter Host +oder ein bestimmtes Netzwerk erreicht werden kann.]]) + +s = m:section(TypedSection, "route") +s.addremove = true +s.anonymous = true + +iface = s:option(ListValue, "interface", "Schnittstelle") +for k, v in pairs(ffluci.model.uci.sections("network")) do + if v[".type"] == "interface" and k ~= "loopback" then + iface:value(k) + end +end + +s:option(Value, "target", "Ziel", "Host-IP oder Netzwerk") + +s:option(Value, "netmask", "Netzmaske", "falls Ziel ein Netzwerk ist").rmemepty = true + +s:option(Value, "gateway", "Gateway") + +return m \ No newline at end of file diff --git a/modules/admin-core/src/model/cbi/admin_network/vlan.lua b/modules/admin-core/src/model/cbi/admin_network/vlan.lua new file mode 100644 index 000000000..7b493643b --- /dev/null +++ b/modules/admin-core/src/model/cbi/admin_network/vlan.lua @@ -0,0 +1,17 @@ +-- ToDo: Autodetect things, maybe use MultiValue instead, Translate, Add descriptions +m = Map("network", "VLAN", [[Die Netzwerkschnittstellen am Router +können zu verschienden VLANs zusammengefasst werden, in denen Geräte miteinander direkt +kommunizieren können. VLANs werden auch häufig dazu genutzt, um Netzwerke voneiander zu trennen. +So ist oftmals eine Schnittstelle als Uplink zu einem größerem Netz, wie dem Internet vorkonfiguriert +und die anderen Schnittstellen bilden ein VLAN für das lokale Netzwerk.]]) + +s = m:section(TypedSection, "switch", nil, [[Die zu einem VLAN gehörenden Schnittstellen +werden durch Leerzeichen getrennt. Die Schnittstelle mit der höchsten Nummer (meistens 5) bildet +in der Regel die Verbindung zur internen Netzschnittstelle des Routers. Bei Geräten mit 5 Schnittstellen +ist in der Regel die Schnittstelle mit der niedrigsten Nummer (0) die standardmäßige Uplinkschnittstelle des Routers.]]) + +for i = 0, 15 do + s:option(Value, "vlan"..i, "vlan"..i).optional = true +end + +return m \ No newline at end of file diff --git a/modules/admin-core/src/model/cbi/admin_services/dnsmasq.lua b/modules/admin-core/src/model/cbi/admin_services/dnsmasq.lua new file mode 100644 index 000000000..86716ff9f --- /dev/null +++ b/modules/admin-core/src/model/cbi/admin_services/dnsmasq.lua @@ -0,0 +1,29 @@ +m = Map("dhcp", "Dnsmasq", "Dnsmasq ist ein kombinierter DHCP-Server und DNS-Forwarder für NAT-Firewalls.") + +s = m:section(TypedSection, "dnsmasq", "Einstellungen") +s.anonymous = true + +s:option(Flag, "domainneeded", "Anfragen nur mit Domain", "Anfragen ohne Domainnamen nicht weiterleiten") +s:option(Flag, "authoritative", "Authoritativ", "Dies ist der einzige DHCP im lokalen Netz") +s:option(Flag, "boguspriv", "Private Anfragen filtern", "Reverse DNS-Anfragen für lokalen Netze nicht weiterleiten") +s:option(Flag, "filterwin2k", "Windowsanfragen filtern", "nutzlose DNS-Anfragen aktueller Windowssysteme filtern") +s:option(Flag, "localise_queries", "Lokalisiere Anfragen", "Gibt die Adresse eines Hostnamen entsprechend seines Subnetzes zurück") +s:option(Value, "local", "Lokale Server") +s:option(Value, "domain", "Lokale Domain") +s:option(Flag, "expandhosts", "Erweitere Hosts", "Fügt Domainnamen zu einfachen Hosteinträgen in der Resolvdatei hinzu") +s:option(Flag, "nonegcache", "Unbekannte nicht cachen", "Negative DNS-Antworten nicht zwischenspeichern") +s:option(Flag, "readethers", "Verwende /etc/ethers", "Lese Informationen aus /etc/ethers um den DHCP-Server zu konfigurieren") +s:option(Value, "leasefile", "Leasedatei", "Speicherort für vergebenen DHCP-Adressen") +s:option(Value, "resolvfile", "Resolvdatei", "Lokale DNS-Datei") +s:option(Flag, "nohosts", "Ignoriere /etc/hosts").optional = true +s:option(Flag, "strictorder", "Strikte Reihenfolge", "DNS-Server werden strikt der Reihenfolge in der Resolvdatei nach abgefragt").optional = true +s:option(Flag, "logqueries", "Schreibe Abfragelog").optional = true +s:option(Flag, "noresolv", "Ignoriere Resolvdatei").optional = true +s:option(Value, "dnsforwardmax", "gleichzeitige Abfragen").optional = true +s:option(Value, "port", "DNS-Port").optional = true +s:option(Value, "ednspacket_max", "max. EDNS.0 Paketgröße").optional = true +s:option(Value, "dhcpleasemax", "max. DHCP-Leases").optional = true +s:option(Value, "addnhosts", "Zusätzliche Hostdatei").optional = true +s:option(Value, "queryport", "Abfrageport").optional = true + +return m \ No newline at end of file diff --git a/modules/admin-core/src/model/cbi/admin_services/dropbear.lua b/modules/admin-core/src/model/cbi/admin_services/dropbear.lua new file mode 100644 index 000000000..3ecf95335 --- /dev/null +++ b/modules/admin-core/src/model/cbi/admin_services/dropbear.lua @@ -0,0 +1,15 @@ +-- ToDo: Translate, Add descriptions +m = Map("dropbear", "SSH-Server", [[Der SSH-Server ermöglicht Shell-Zugriff +über das Netzwerk und bietet einen integrierten SCP-Dienst.]]) + +s = m:section(TypedSection, "dropbear") +s.anonymous = true + +port = s:option(Value, "Port", "Port") +port.isinteger = true + +pwauth = s:option(Flag, "PasswordAuth", "Passwortanmeldung", "Erlaube Anmeldung per Passwort") +pwauth.enabled = 'on' +pwauth.disabled = 'off' + +return m \ No newline at end of file diff --git a/modules/admin-core/src/model/cbi/admin_services/httpd.lua b/modules/admin-core/src/model/cbi/admin_services/httpd.lua new file mode 100644 index 000000000..3bd49a2d7 --- /dev/null +++ b/modules/admin-core/src/model/cbi/admin_services/httpd.lua @@ -0,0 +1,18 @@ +-- ToDo: Translate, Add descriptions +m = Map("httpd", "HTTP-Server", "Der HTTP-Server ist u.a. für die Bereitstellung dieser Obefläche zuständig.") + +s = m:section(TypedSection, "httpd") +s.anonymous = true + +port = s:option(Value, "port", "Port") +port.isinteger = true + +s:option(Value, "home", "Wurzelverzeichnis") + +config = s:option(Value, "c_file", "Konfigurationsdatei", "/etc/httpd.conf wenn leer") +config.rmempty = true + +realm = s:option(Value, "realm", "Anmeldeaufforderung", "Aufforderungstext zum Anmelden im Administrationsbereich") +realm.rmempty = true + +return m \ No newline at end of file diff --git a/modules/admin-core/src/model/cbi/admin_services/olsrd.lua b/modules/admin-core/src/model/cbi/admin_services/olsrd.lua new file mode 100644 index 000000000..8431a8104 --- /dev/null +++ b/modules/admin-core/src/model/cbi/admin_services/olsrd.lua @@ -0,0 +1,89 @@ +-- ToDo: Autodetect things, Translate, Add descriptions +require("ffluci.fs") + +m = Map("olsr", "OLSR", [[OLSR ist ein flexibles Routingprotokoll, +dass den Aufbau von mobilen Ad-Hoc Netzen unterstützt.]]) + +s = m:section(NamedSection, "general", "olsr", "Allgemeine Einstellungen") + +debug = s:option(ListValue, "DebugLevel", "Debugmodus") +for i=0, 9 do + debug:value(i) +end + +ipv = s:option(ListValue, "IpVersion", "Internet Protokoll") +ipv:value("4", "IPv4") +ipv:value("6", "IPv6") + +noint = s:option(Flag, "AllowNoInt", "Start ohne Netzwerk") +noint.enabled = "yes" +noint.disabled = "no" + +s:option(Value, "Pollrate", "Abfragerate (Pollrate)", "s") + +tcr = s:option(ListValue, "TcRedundancy", "TC-Redundanz") +tcr:value("0", "MPR-Selektoren") +tcr:value("1", "MPR-Selektoren und MPR") +tcr:value("2", "Alle Nachbarn") + +s:option(Value, "MprCoverage", "MPR-Erfassung") + +lql = s:option(ListValue, "LinkQualityLevel", "VQ-Level") +lql:value("0", "deaktiviert") +lql:value("1", "MPR-Auswahl") +lql:value("2", "MPR-Auswahl und Routing") + +lqfish = s:option(Flag, "LinkQualityFishEye", "VQ-Fisheye") + +s:option(Value, "LinkQualityWinSize", "VQ-Fenstergröße") + +s:option(Value, "LinkQualityDijkstraLimit", "VQ-Dijkstralimit") + +hyst = s:option(Flag, "UseHysteresis", "Hysterese aktivieren") +hyst.enabled = "yes" +hyst.disabled = "no" + + +i = m:section(TypedSection, "Interface", "Schnittstellen") +i.anonymous = true +i.addremove = true +i.dynamic = true + +network = i:option(ListValue, "Interface", "Netzwerkschnittstellen") +network:value("") +for k, v in pairs(ffluci.model.uci.sections("network")) do + if v[".type"] == "interface" and k ~= "loopback" then + network:value(k) + end +end + +i:option(Value, "HelloInterval", "Hello-Intervall") + +i:option(Value, "HelloValidityTime", "Hello-Gültigkeit") + +i:option(Value, "TcInterval", "TC-Intervall") + +i:option(Value, "TcValidityTime", "TC-Gültigkeit") + +i:option(Value, "MidInterval", "MID-Intervall") + +i:option(Value, "MidValidityTime", "MID-Gültigkeit") + +i:option(Value, "HnaInterval", "HNA-Intervall") + +i:option(Value, "HnaValidityTime", "HNA-Gültigkeit") + + +p = m:section(TypedSection, "LoadPlugin", "Plugins") +p.addremove = true +p.dynamic = true + +lib = p:option(ListValue, "Library", "Bibliothek") +lib:value("") +for k, v in pairs(ffluci.fs.dir("/usr/lib")) do + if v:sub(1, 6) == "olsrd_" then + lib:value(v) + end +end + +return m \ No newline at end of file diff --git a/modules/admin-core/src/model/cbi/admin_system/fstab.lua b/modules/admin-core/src/model/cbi/admin_system/fstab.lua new file mode 100644 index 000000000..d705743a0 --- /dev/null +++ b/modules/admin-core/src/model/cbi/admin_system/fstab.lua @@ -0,0 +1,25 @@ +m = Map("fstab", "Einhängepunkte") + +mount = m:section(TypedSection, "mount", "Einhängepunkte", [[Einhängepunkte bestimmen, an welcher Stelle des Dateisystems +bestimmte Laufwerke und Speicher zur Verwendung eingebunden werden.]]) +mount.anonymous = true +mount.addremove = true + +mount:option(Flag, "enabled", "aktivieren") +mount:option(Value, "device", "Gerät", "Die Gerätedatei des Speichers oder der Partition (z.B.: /dev/sda)") +mount:option(Value, "target", "Einhängepunkt", "Die Stelle an der der Speicher in das Dateisystem eingehängt wird.") +mount:option(Value, "fstype", "Dateisystem", "Das Dateisystem mit dem der Speicher formatiert ist (z.B.: ext3)") +mount:option(Value, "options", "Optionen", "Weitere Optionen (siehe das Handbuch des Befehls 'mount')") + + +swap = m:section(TypedSection, "swap", "SWAP", [[Falls der Arbeitsspeicher des Routers nicht ausreicht, +kann dieser nicht benutzte Daten zeitweise auf einem SWAP-Laufwerk auslagern um so die +effektive Größe des Arbeitsspeichers zu erhöhen. Die Auslagerung der Daten ist natürlich bedeutend langsamer +als direkte Arbeitsspeicherzugriffe.]]) +swap.anonymous = true +swap.addremove = true + +swap:option(Flag, "enabled", "aktivieren") +swap:option(Value, "device", "Gerät", "Die Gerätedatei des Speichers oder der Partition (z.B.: /dev/sda)") + +return m diff --git a/modules/admin-core/src/model/cbi/admin_system/hostname.lua b/modules/admin-core/src/model/cbi/admin_system/hostname.lua new file mode 100644 index 000000000..c9e159d05 --- /dev/null +++ b/modules/admin-core/src/model/cbi/admin_system/hostname.lua @@ -0,0 +1,9 @@ +m = Map("system", "Hostname", [[Definiert den Hostnamen des Routers. +Der Hostname ist eine im Netzwerk eindeutige Kennung, die dieses Gerät identifiziert.]]) + +s = m:section(TypedSection, "system") +s.anonymous = true + +s:option(Value, "hostname", "Hostname") + +return m \ No newline at end of file diff --git a/modules/admin-core/src/model/cbi/admin_wifi/devices.lua b/modules/admin-core/src/model/cbi/admin_wifi/devices.lua new file mode 100644 index 000000000..b612dd676 --- /dev/null +++ b/modules/admin-core/src/model/cbi/admin_wifi/devices.lua @@ -0,0 +1,52 @@ +-- ToDo: Translate, Add descriptions and help texts + +m = Map("wireless", "Geräte", [[An dieser Stelle können eingebaute WLAN-Geräte konfiguriert werden.]]) + +s = m:section(TypedSection, "wifi-device") +--s.addremove = true + +en = s:option(Flag, "disabled", "Aktivieren") +en.enabled = "0" +en.disabled = "1" + +t = s:option(ListValue, "type", "Typ") +t:value("broadcom") +t:value("atheros") +t:value("mac80211") +t:value("prism2") +--[[ +require("ffluci.sys") +local c = ". /etc/functions.sh;for i in /lib/wifi/*;do . $i;done;echo $DRIVERS" +for driver in ffluci.sys.execl(c)[1]:gmatch("[^ ]+") do + t:value(driver) +end +]]-- + +mode = s:option(ListValue, "mode", "Modus") +mode:value("", "standard") +mode:value("11b", "802.11b") +mode:value("11g", "802.11g") +mode:value("11a", "802.11a") +mode:value("11bg", "802.11b+g") +mode.rmempty = true + +s:option(Value, "channel", "Funkkanal") + +s:option(Value, "txantenna", "Sendeantenne").rmempty = true + +s:option(Value, "rxantenna", "Empfangsantenne").rmempty = true + +s:option(Value, "distance", "Distanz", + "Distanz zum am weitesten entfernten Funkpartner (m)").rmempty = true + +s:option(Value, "diversity", "Diversität"):depends("type", "atheros") + +country = s:option(Value, "country", "Ländercode") +country.optional = true +country:depends("type", "broadcom") + +maxassoc = s:option(Value, "maxassoc", "Verbindungslimit") +maxassoc:depends("type", "broadcom") +maxassoc.optional = true + +return m \ No newline at end of file diff --git a/modules/admin-core/src/model/cbi/admin_wifi/networks.lua b/modules/admin-core/src/model/cbi/admin_wifi/networks.lua new file mode 100644 index 000000000..4a7ad12f6 --- /dev/null +++ b/modules/admin-core/src/model/cbi/admin_wifi/networks.lua @@ -0,0 +1,77 @@ +-- ToDo: Translate, Add descriptions and help texts +m = Map("wireless", "Netze", [[Pro WLAN-Gerät können mehrere Netze bereitgestellt werden. +Es sollte beachtet werden, dass es hardware- / treiberspezifische Einschränkungen gibt. +So kann pro WLAN-Gerät in der Regel entweder 1 Ad-Hoc-Zugang ODER bis zu 3 Access-Point und 1 Client-Zugang +gleichzeitig erstellt werden.]]) + +s = m:section(TypedSection, "wifi-iface") +s.addremove = true +s.anonymous = true + +s:option(Value, "ssid", "Netzkennung (ESSID)").maxlength = 32 + +device = s:option(ListValue, "device", "Gerät") +local d = ffluci.model.uci.sections("wireless") +if d then + for k, v in pairs(d) do + if v[".type"] == "wifi-device" then + device:value(k) + end + end +end + +network = s:option(ListValue, "network", "Netzwerk", "WLAN-Netz zu Netzwerk hinzufügen") +network:value("") +for k, v in pairs(ffluci.model.uci.sections("network")) do + if v[".type"] == "interface" and k ~= "loopback" then + network:value(k) + end +end + +mode = s:option(ListValue, "mode", "Modus") +mode:value("ap", "Access Point") +mode:value("adhoc", "Ad-Hoc") +mode:value("sta", "Client") +mode:value("wds", "WDS") + +s:option(Value, "bssid", "BSSID").optional = true + +s:option(Value, "txpower", "Sendeleistung", "dbm").rmempty = true + +s:option(Flag, "frameburst", "Broadcom-Frameburst").optional = true +s:option(Flag, "bursting", "Atheros-Frameburst").optional = true + + +encr = s:option(ListValue, "encryption", "Verschlüsselung") +encr:value("none", "keine") +encr:value("wep", "WEP") +encr:value("psk", "WPA-PSK") +encr:value("wpa", "WPA-Radius") +encr:value("psk2", "WPA2-PSK") +encr:value("wpa2", "WPA2-Radius") + +key = s:option(Value, "key", "Schlüssel") +key:depends("encryption", "wep") +key:depends("encryption", "psk") +key:depends("encryption", "wpa") +key:depends("encryption", "psk2") +key:depends("encryption", "wpa2") +key.rmempty = true + +server = s:option(Value, "server", "Radius-Server") +server:depends("encryption", "wpa") +server:depends("encryption", "wpa2") +server.rmempty = true + +port = s:option(Value, "port", "Radius-Port") +port:depends("encryption", "wpa") +port:depends("encryption", "wpa2") +port.rmempty = true + +s:option(Flag, "isolate", "AP-Isolation", "Unterbindet Client-Client-Verkehr").optional = true + +s:option(Flag, "hidden", "ESSID verstecken").optional = true + + + +return m \ No newline at end of file diff --git a/modules/admin-core/src/model/menu/00admin.lua b/modules/admin-core/src/model/menu/00admin.lua new file mode 100644 index 000000000..c48db19bd --- /dev/null +++ b/modules/admin-core/src/model/menu/00admin.lua @@ -0,0 +1,33 @@ +add("admin", "index", "Übersicht", 10) +act("luci", "Oberfläche") + +add("admin", "system", "System", 30) +act("packages", "Paketverwaltung") +act("passwd", "Passwort ändern") +act("sshkeys", "SSH-Schlüssel") +act("hostname", "Hostname") +act("fstab", "Einhängepunkte") +act("upgrade", "Firmwareupgrade") +act("reboot", "Neu starten") + +add("admin", "services", "Dienste", 40) +if isfile("/etc/config/olsr") then + act("olsrd", "OLSR") +end +act("httpd", "HTTP-Server") +act("dropbear", "SSH-Server") +act("dnsmasq", "Dnsmasq") + +add("admin", "network", "Netzwerk", 50) +act("vlan", "Switch") +act("ifaces", "Schnittstellen") +act("dhcp", "DHCP-Server") +act("ptp", "PPPoE / PPTP") +act("routes", "Statische Routen") +if isfile("/etc/config/qos") then + act("qos", "Quality of Service") +end + +add("admin", "wifi", "Drahtlos", 60) +act("devices", "Geräte") +act("networks", "Netze") \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_index/index.htm b/modules/admin-core/src/view/admin_index/index.htm new file mode 100644 index 000000000..27cdade52 --- /dev/null +++ b/modules/admin-core/src/view/admin_index/index.htm @@ -0,0 +1,11 @@ +<%+header%> +

<%:hello Hallo!%>

+

<%:admin1 Dies ist der Administrationsbereich von FFLuCI.%>

+

<%:admin2 FFLuCI ist eine freie, flexible und benutzerfreundliche grafische Oberfläche zur Konfiguration von OpenWRT Kamikaze.%>
+<%:admin3 Auf den folgenden Seiten können alle wichtigen Einstellungen des Routers vorgenommen werden.%>

+

<%:admin4 Auf der linken Seite befindet sich eine Navigation, die zu den einzelnen Konfigurationsseiten führt.%>

+

<%:admin5 Wir sind natürlich stets darum bemüht, diese Oberfläche +noch besser und intuitiver zu Gestalten und freuen uns über jegliche Art von Feedback oder Verbesserungsvorschlägen.%>

+

<%:admin6 Und nun wünschen wir viel Spaß mit dem Router!%>

+

<%:team Das FFLuCI-Team%>

+<%+footer%> \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_index/wizard.htm b/modules/admin-core/src/view/admin_index/wizard.htm new file mode 100644 index 000000000..8c1a0952b --- /dev/null +++ b/modules/admin-core/src/view/admin_index/wizard.htm @@ -0,0 +1,36 @@ +<%+header%> +

<%:ffwizard Freifunkassistent%>

+

<%:ffwizard1 Dieser Assistent konfiguriert den Router für die Benutzung im Freifunknetz%>

+
+
+
+
+
<%:ip IP-Adresse%>:  +
+
+ <% for i, k in ipairs(ifaces) do %> +
+
<%:wificfg Drahtlosgerät einrichten%>: <%=k%>
+
+
+ <% end %> +
+
<%:cfgolsr OLSR konfigurieren%>
+
+
+
+
<%:cfgdhcp Drahtlos DHCP konfigurieren%>
+
+
+
+
<%:shareinet Internet teilen%>
+
+
+
+
+
+ + +
+
+<%+footer%> \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_network/index.htm b/modules/admin-core/src/view/admin_network/index.htm new file mode 100644 index 000000000..7fa4f5565 --- /dev/null +++ b/modules/admin-core/src/view/admin_network/index.htm @@ -0,0 +1,11 @@ +<%+header%> +

<%:network Netzwerk%>

+

<%:network1 In diesem Bereich finden sich alle netzwerkbezogenen Einstellungen.%>

+

<%:network2 Der Netzwerkswitch kann bei den meisten Routern frei konfiguriert +und in mehrere VLANs aufgeteilt werden. %>

+

<%:network3 Schnittstellen und PPPoE/PPTP-Einstellungen ermöglichen +die freie Organisation des Netzwerks und die Anbindung an ein WAN.%>

+

<%:network4 DHCP ermöglichst die automatische Netzwerkkonfiguration von Rechnern im (W)LAN.%>

+

<%:network5 Portweiterleitung und Firewall erlauben eine effektive Absicherung des Netzes, bei gleichzeitiger +Bereitstellung von externen Diensten.%>

+<%+footer%> \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_services/index.htm b/modules/admin-core/src/view/admin_services/index.htm new file mode 100644 index 000000000..a06fe1056 --- /dev/null +++ b/modules/admin-core/src/view/admin_services/index.htm @@ -0,0 +1,8 @@ +<%+header%> +

<%:services Dienste%>

+

<%:services1 Dienste und Dämonen stellen bestimmte Funktionalitäten auf dem Router zur Verfügung.%>

+

<%:services2 Es handelt sich hierbei meist um Netzwerkserver, die verschiedene Aufgaben auf dem Router erfüllen, +beispielsweise Shell-Zugang ermöglichen oder diese Weboberfläche per HTTP anbieten.%>

+

<%:servcies3 In diesen Bereich fallen auch die Meshnetzwerkdienste wie OLSR und BATMAN, die dabei helfen, +ein autarkes Ad-Hoc Netzwerk aufzubauen.%>

+<%+footer%> \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_system/editor.htm b/modules/admin-core/src/view/admin_system/editor.htm new file mode 100644 index 000000000..ef3e0d8ab --- /dev/null +++ b/modules/admin-core/src/view/admin_system/editor.htm @@ -0,0 +1,14 @@ +<%+header%> +

<%:texteditor Texteditor%>

+
+
<%:file Datei%>: +<% if msg then %><%:error Fehler%>: <%=msg%><% end %>
+
+
+
+
+ + +
+
+<%+footer%> \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_system/index.htm b/modules/admin-core/src/view/admin_system/index.htm new file mode 100644 index 000000000..3e9a28221 --- /dev/null +++ b/modules/admin-core/src/view/admin_system/index.htm @@ -0,0 +1,9 @@ +<%+header%> +

<%:system System%>

+

<%:system1 Hier finden sich Einstellungen, die das System selbst, dessen Kennung, +installierte Software und Hardware, Authentifizierung oder eingehängte Speicher betreffen.%>

+

<%:system2 Diese Einstellungen definieren die Grundlage des Systems, auf dem die +installierte Software aufbaut.%>

+

<%:system3 Beachte bitte, dass eine fehlerhafte Konfiguration den Start +des Routers verhindern oder dich vom Zugriff auf diesen ausschließen kann.%>

+<%+footer%> \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_system/ipkg.htm b/modules/admin-core/src/view/admin_system/ipkg.htm new file mode 100644 index 000000000..9a88ee57b --- /dev/null +++ b/modules/admin-core/src/view/admin_system/ipkg.htm @@ -0,0 +1,26 @@ +<%+header%> +

<%:system System%>

+

<%:ipkg IPKG-Konfiguration%>

+ +
+ +
<%:ipkg_pkglists Paketlisten%>:src Name URL
+
<%:ipkg_targets Installationsziele%>:dest Name Pfad
+ +
+ +
+
+
+
+ +
+
+
+
+ + +
+ <% if msg then %>
<%:error Fehler%>: <%=msg%>
<% end %> +
+<%+footer%> \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_system/packages.htm b/modules/admin-core/src/view/admin_system/packages.htm new file mode 100644 index 000000000..52da37040 --- /dev/null +++ b/modules/admin-core/src/view/admin_system/packages.htm @@ -0,0 +1,77 @@ +<%+header%> +

<%:system System%>

+

<%:packages Paketverwaltung%>

+ +
+ +<% if install or remove or update or upgrade then %> +
<%:status Status%>:
+<% if update then %> + <%:packages_update Paketlisten aktualisieren%>: <% if update == 0 then %><%:ok OK%><% else %><%:error Fehler%> (<%:code Code%> <%=update%>)<% end %>
+<% end %> +<% if upgrade then%> + <%:packages_upgrade Installierte Pakete aktualisieren%>: <% if upgrade == 0 then %><%:ok OK%><% else %><%:error Fehler%> (<%:code Code%> <%=upgrade%>)<% end %>
+<% end %> +<% if install then for k,v in pairs(install) do %> + <%:packages_install Installation von%> '<%=k%>': <% if v == 0 then %><%:ok OK%><% else %><%:error Fehler%> (<%:code Code%> <%=v%>)<% end %>
+<% end end %> +<% if remove then for k,v in pairs(remove) do %> + <%:packages_remove Deinstallation von%> '<%=k%>': <% if v == 0 then %><%:ok OK%><% else %><%:error Fehler%> (<%:code Code%> <%=v%>)<% end %>
+<% end end %> +
+
+<% end %> + +
+<%:packages_ipkg Paketlisten und Installationsziele bearbeiten%>
+<%:packages_updatelist Paketlisten aktualisieren%>
+<%:packages_upgrade Installierte Pakete aktualisieren%> +
+ +
+
+ +
+
+ <%:packages_installurl Paket herunterladen und installieren%>:
+ + +
+ +
+
+ +
+ <%:filter Filter%>: + + + +
+ +
+
+ +
+ + + + + + + + + <% for k, pkg in pairs(pkgs) do %> + + + + + + + + <% end %> +
<%:packages_name Paketname%><%:version Version%><%:install Installieren%><%:delete Löschen%><%:descr Beschreibung%>
<%=pkg.Package%><%=pkg.Version%><% if not pkg.Status or not pkg.Status.installed then %><% else %><%:installed installiert%><% end %><% if pkg.Status and pkg.Status.installed then %><% else %><%:notinstalled nicht installiert%><% end %><%=pkg.Description%>
+
+
+ +
+<%+footer%> \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_system/passwd.htm b/modules/admin-core/src/view/admin_system/passwd.htm new file mode 100644 index 000000000..87b253368 --- /dev/null +++ b/modules/admin-core/src/view/admin_system/passwd.htm @@ -0,0 +1,35 @@ +<%+header%> +

<%:system System%>

+

<%:passwd Passwort ändern%>

+

<%:passwd1 Ändert das Passwort des Systemverwalters (Benutzer "root")%>

+

+<% if stat then %> + <% if stat == 0 then %> + <%:password_changed Passwort erfolgreich geändert!%> + <% elseif stat == 10 then %> + <%:password_nomatch Passwörter stimmen nicht überein! %> + <% else %> + <%:unknown_error Unbekannter Fehler!%> + <% end %> +<% end %> +<% if not stat or stat == 10 then %> +
+
+
+
<%:password Passwort%>
+
+
+
+
<%:confirmation Bestätigung%>
+
+
+
+
+ + +
+
+
+<% end %> +
+<%+footer%> \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_system/reboot.htm b/modules/admin-core/src/view/admin_system/reboot.htm new file mode 100644 index 000000000..e81be408c --- /dev/null +++ b/modules/admin-core/src/view/admin_system/reboot.htm @@ -0,0 +1,11 @@ +<%+header%> +

<%:system System%>

+

<%:reboot Neu starten%>

+

<%:reboot1 Startet das Betriebssystem des Routers neu.%>

+<% if not reboot then %> +

<%:reboot_do Neustart durchführen%>

+<% else %> +

<%:reboot_running Bitte warten: Neustart wird durchgeführt...%>

+ +<% end %> +<%+footer%> \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_system/sshkeys.htm b/modules/admin-core/src/view/admin_system/sshkeys.htm new file mode 100644 index 000000000..3765e1eea --- /dev/null +++ b/modules/admin-core/src/view/admin_system/sshkeys.htm @@ -0,0 +1,26 @@ +<%+header%> +

<%:system System%>

+

<%:sshkeys SSH-Schlüssel%>

+ +
+ +
<%:sshkeys_descr Hier können öffentliche SSH-Schlüssel (einer pro Zeile) + zur Authentifizierung abgelegt werden.%>
+ +
+ +
+
+
+
+ +
+
+
+
+ + +
+ <% if msg then %>
<%:error Fehler%>: <%=msg%>
<% end %> +
+<%+footer%> \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_system/upgrade.htm b/modules/admin-core/src/view/admin_system/upgrade.htm new file mode 100644 index 000000000..598002890 --- /dev/null +++ b/modules/admin-core/src/view/admin_system/upgrade.htm @@ -0,0 +1,34 @@ +<%+header%> +

<%:system System%>

+

<%:upgrade Upgrade%>

+

<%:upgrade1 Ersetzt die installierte Firmware (das Betriebssystem des Routers) durch ein neues. +Das Format der Firmware ist plattformabhängig.%>

+
+<% if sysupgrade and not ret then %> +
+
+
+
<%:fwimage Firmwareimage%>
+
+
+
+
+ + <%:keepcfg Konfigurationsdateien übernehmen%> +
+
+
+ +
+
+
+<% elseif ret then %> + <% if ret == 0 then %> +
<%:flashed Flashvorgang erfolgreich. Router startet neu...%>
+ <% else %> +
<%:flasherr Flashvorgang fehlgeschlagen!%> (<%:code Code%> <%=ret%>)
+ <% end %> +<% else %> +
<%:notimplemented Diese Funktion steht leider (noch) nicht zur Verfügung.%>
+<% end %> +<%+footer%> \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_uci/apply.htm b/modules/admin-core/src/view/admin_uci/apply.htm new file mode 100644 index 000000000..090967a2d --- /dev/null +++ b/modules/admin-core/src/view/admin_uci/apply.htm @@ -0,0 +1,6 @@ +<%+header%> +

<%:config Konfiguration%>

+

<%:uci_applied Die folgenden Änderungen wurden übernommen%>:

+<%=(changes or "-")%> +<%=output%> +<%+footer%> \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_uci/changes.htm b/modules/admin-core/src/view/admin_uci/changes.htm new file mode 100644 index 000000000..3bbcd0e5f --- /dev/null +++ b/modules/admin-core/src/view/admin_uci/changes.htm @@ -0,0 +1,11 @@ +<%+header%> +

<%:config Konfiguration%>

+

<%:changes Änderungen%>

+<%=(ffluci.model.uci.changes() or "-")%> +
+ +
+
+ +
+<%+footer%> \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_uci/revert.htm b/modules/admin-core/src/view/admin_uci/revert.htm new file mode 100644 index 000000000..39aaabcd8 --- /dev/null +++ b/modules/admin-core/src/view/admin_uci/revert.htm @@ -0,0 +1,5 @@ +<%+header%> +

<%:config Konfiguration%>

+

<%:uci_reverted Die folgenden Änderungen wurden verworfen%>:

+<%=(changes or "-")%> +<%+footer%> \ No newline at end of file diff --git a/modules/admin-core/src/view/admin_wifi/index.htm b/modules/admin-core/src/view/admin_wifi/index.htm new file mode 100644 index 000000000..6a6059835 --- /dev/null +++ b/modules/admin-core/src/view/admin_wifi/index.htm @@ -0,0 +1,9 @@ +<%+header%> +

<%:wifi Drahtlos%>

+

<%:wifi1 Hier finden sich Konfiugrationsmöglichkeiten für Drahtlos-Netzwerke nach dem WLAN-Standard.%>

+

<%:wifi2 802.11b/g/a/n-Geräte können so einfach in das bestehende physische Netzwerk integriert werden. +Die Unterstützung von virtuellen Adaptern ermöglicht auch den Einsatz als Wireless-Repeater oder von +mehreren Netzwerken gleichzeitig auf einem Gerät.%>

+

<%:wifi3 Es werden Managed, Client, Ad-Hoc und WDS-Modus unterstützt sowie WPA und WPA2-Verschlüsselung zur gesicherten +Kommunikation.%>

+<%+footer%> \ No newline at end of file -- cgit v1.2.3