diff options
author | Steven Barth <steven@midlink.org> | 2008-05-08 15:37:41 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-05-08 15:37:41 +0000 |
commit | aa9ccf77c6648515ba58c37b9345cdbd561028db (patch) | |
tree | b0270202d47b6c5e179f8475302bb3ef0d1c9402 /modules | |
parent | a3a51464fd8cffa6d18fa3f18be9c699901abd0d (diff) |
* Mördercommit ;-)
* Major Repository Reorganisation
* API 0.4 Softfreeze to come
Diffstat (limited to 'modules')
41 files changed, 1221 insertions, 0 deletions
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%> +<h1><%:hello Hallo!%></h1> +<p><%:admin1 Dies ist der Administrationsbereich von FFLuCI.%></p> +<p><%:admin2 FFLuCI ist eine freie, flexible und benutzerfreundliche grafische Oberfläche zur Konfiguration von OpenWRT Kamikaze.%><br /> +<%:admin3 Auf den folgenden Seiten können alle wichtigen Einstellungen des Routers vorgenommen werden.%></p> +<p><%:admin4 Auf der linken Seite befindet sich eine Navigation, die zu den einzelnen Konfigurationsseiten führt.%></p> +<p><%: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.%></p> +<p><%:admin6 Und nun wünschen wir viel Spaß mit dem Router!%></p> +<p><em><strong><a href="http://luci.freifunk-halle.net"><%:team Das FFLuCI-Team%></a></strong></em></p> +<%+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%> +<h1><%:ffwizard Freifunkassistent%></h1> +<p><%:ffwizard1 Dieser Assistent konfiguriert den Router für die Benutzung im Freifunknetz%></p> +<br /> +<form method="post" action="<%=controller%>/admin/index/wizard"> + <div class="cbi-section-node"> + <div class="cbi-value"> + <div class="cbi-value-title"><%:ip IP-Adresse%>: + <input type="text" size="20" name="ip" /></div> + </div> + <% for i, k in ipairs(ifaces) do %> + <div class="cbi-value"> + <div class="cbi-value-title"><%:wificfg Drahtlosgerät einrichten%>: <%=k%></div> + <div class="cbi-value-field"><input type="checkbox" name="wifi.<%=k%>" value="1" checked="checked" /></div> + </div> + <% end %> + <div class="cbi-value"> + <div class="cbi-value-title"><%:cfgolsr OLSR konfigurieren%></div> + <div class="cbi-value-field"><input type="checkbox" name="olsr" value="1" checked="checked" /></div> + </div> + <div class="cbi-value"> + <div class="cbi-value-title"><%:cfgdhcp Drahtlos DHCP konfigurieren%></div> + <div class="cbi-value-field"><input type="checkbox" name="dhcp" value="1" checked="checked" /></div> + </div> + <div class="cbi-value"> + <div class="cbi-value-title"><%:shareinet Internet teilen%></div> + <div class="cbi-value-field"><input type="checkbox" name="shareinet" value="1" checked="checked" /></div> + </div> + </div> + <br /> + <div> + <input type="submit" value="<%:configure Konfigurieren%>" /> + <input type="reset" value="<%:reset Zurücksetzen%>" /> + </div> +</form> +<%+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%> +<h1><%:network Netzwerk%></h1> +<p><%:network1 In diesem Bereich finden sich alle netzwerkbezogenen Einstellungen.%></p> +<p><%:network2 Der Netzwerkswitch kann bei den meisten Routern frei konfiguriert +und in mehrere VLANs aufgeteilt werden. %></p> +<p><%:network3 Schnittstellen und PPPoE/PPTP-Einstellungen ermöglichen +die freie Organisation des Netzwerks und die Anbindung an ein WAN.%></p> +<p><%:network4 DHCP ermöglichst die automatische Netzwerkkonfiguration von Rechnern im (W)LAN.%></p> +<p><%:network5 Portweiterleitung und Firewall erlauben eine effektive Absicherung des Netzes, bei gleichzeitiger +Bereitstellung von externen Diensten.%></p> +<%+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%> +<h1><%:services Dienste%></h1> +<p><%:services1 Dienste und Dämonen stellen bestimmte Funktionalitäten auf dem Router zur Verfügung.%></p> +<p><%: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.%></p> +<p><%:servcies3 In diesen Bereich fallen auch die Meshnetzwerkdienste wie OLSR und BATMAN, die dabei helfen, +ein autarkes Ad-Hoc Netzwerk aufzubauen.%></p> +<%+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%> +<h1><%:texteditor Texteditor%></h1> +<form method="post" action="<%=controller%>/admin/system/editor"> +<div><%:file Datei%>: <input type="text" name="file" size="30" value="<%=fn%>" /> +<% if msg then %><span class="error"><%:error Fehler%>: <%=msg%></span><% end %></div> +<br /> +<div><textarea style="width: 100%" rows="20" name="data"><%=cnt%></textarea></div> +<br /> +<div> + <input type="submit" value="<%:save Speichern%>" /> + <input type="reset" value="<%:reset Zurücksetzen%>" /> +</div> +</form> +<%+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%> +<h1><%:system System%></h1> +<p><%:system1 Hier finden sich Einstellungen, die das System selbst, dessen Kennung, +installierte Software und Hardware, Authentifizierung oder eingehängte Speicher betreffen.%></p> +<p><%:system2 Diese Einstellungen definieren die Grundlage des Systems, auf dem die +installierte Software aufbaut.%></p> +<p><%:system3 Beachte bitte, dass eine fehlerhafte Konfiguration den Start +des Routers verhindern oder dich vom Zugriff auf diesen ausschließen kann.%></p> +<%+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%> +<h1><%:system System%></h1> +<h2><%:ipkg IPKG-Konfiguration%></h2> + +<br /> + +<div><strong><%:ipkg_pkglists Paketlisten%>:</strong><code>src <em>Name</em> <em>URL</em></code></div> +<div><strong><%:ipkg_targets Installationsziele%>:</strong><code>dest <em>Name</em> <em>Pfad</em></code></div> + +<br /> + +<form method="post" action="<%=controller%>/admin/system/ipkg"> + <div class="cbi-section-node" style="width: 100%"> + <div class="cbi-value"> + <div class="cbi-value-field"> + <textarea style="width: 100%" rows="10" name="data"><%=cnt%></textarea> + </div> + </div> + </div> + <div> + <input type="submit" value="<%:save Speichern%>" /> + <input type="reset" value="<%:reset Zurücksetzen%>" /> + </div> + <% if msg then %><br /><div class="error"><%:error Fehler%>: <%=msg%></div><% end %> +</form> +<%+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%> +<h1><%:system System%></h1> +<h2><%:packages Paketverwaltung%></h2> + +<br /> + +<% if install or remove or update or upgrade then %> +<div class="code"><strong><%:status Status%>:</strong><br /> +<% if update then %> + <%:packages_update Paketlisten aktualisieren%>: <% if update == 0 then %><span class="ok"><%:ok OK%></span><% else %><span class="error"><%:error Fehler%> (<%:code Code%> <%=update%>)</span><% end %><br /> +<% end %> +<% if upgrade then%> + <%:packages_upgrade Installierte Pakete aktualisieren%>: <% if upgrade == 0 then %><span class="ok"><%:ok OK%></span><% else %><span class="error"><%:error Fehler%> (<%:code Code%> <%=upgrade%>)</span><% end %><br /> +<% end %> +<% if install then for k,v in pairs(install) do %> + <%:packages_install Installation von%> '<%=k%>': <% if v == 0 then %><span class="ok"><%:ok OK%></span><% else %><span class="error"><%:error Fehler%> (<%:code Code%> <%=v%>)</span><% end %><br /> +<% end end %> +<% if remove then for k,v in pairs(remove) do %> + <%:packages_remove Deinstallation von%> '<%=k%>': <% if v == 0 then %><span class="ok"><%:ok OK%></span><% else %><span class="error"><%:error Fehler%> (<%:code Code%> <%=v%>)</span><% end %><br /> +<% end end %> +</div> +<br /> +<% end %> + +<div> +<a href="<%=controller%>/admin/system/ipkg"><%:packages_ipkg Paketlisten und Installationsziele bearbeiten%></a><br /> +<a href="<%=controller%>/admin/system/packages?update=1"><%:packages_updatelist Paketlisten aktualisieren%></a><br /> +<a href="<%=controller%>/admin/system/packages?upgrade=1"><%:packages_upgrade Installierte Pakete aktualisieren%></a> +</div> + +<br /> +<br /> + +<form method="post" action="<%=controller%>/admin/system/packages"> + <div> + <span class="bold"><%:packages_installurl Paket herunterladen und installieren%>:</span><br /> + <input type="text" name="url" size="30" value="" /> + <input type="submit" name="submit" value="<%:ok OK%>" /> + </div> + + <br /> + <br /> + + <div> + <span class="bold"><%:filter Filter%>:</span> + <input type="text" name="query" size="20" value="<%=query%>" /> + <input type="submit" name="search" value="<%:packages_search Paket suchen%>" /> + <input type="submit" name="submit" value="<%:packages_do Aktionen ausführen%>" /> + </div> + + <br /> + <br /> + + <div> + <table style="font-size: 0.8em"> + <tr> + <th><%:packages_name Paketname%></th> + <th><%:version Version%></th> + <th><%:install Installieren%></th> + <th><%:delete Löschen%></th> + <th><%:descr Beschreibung%></th> + </tr> + <% for k, pkg in pairs(pkgs) do %> + <tr> + <td><%=pkg.Package%></td> + <td><%=pkg.Version%></td> + <td><% if not pkg.Status or not pkg.Status.installed then %><input type="checkbox" name="install.<%=pkg.Package%>" value="1" /><% else %><%:installed installiert%><% end %></td> + <td><% if pkg.Status and pkg.Status.installed then %><input type="checkbox" name="remove.<%=pkg.Package%>" value="1" /><% else %><%:notinstalled nicht installiert%><% end %></td> + <td><%=pkg.Description%></td> + </tr> + <% end %> + </table> + </div> + <br /> + <input type="submit" name="submit" value="<%:packages_do Aktionen ausführen%>" /> +</form> +<%+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%> +<h1><%:system System%></h1> +<h2><%:passwd Passwort ändern%></h2> +<p><%:passwd1 Ändert das Passwort des Systemverwalters (Benutzer "root")%></p> +<div><br /> +<% if stat then %> + <% if stat == 0 then %> + <code><%:password_changed Passwort erfolgreich geändert!%></code> + <% elseif stat == 10 then %> + <code class="error"><%:password_nomatch Passwörter stimmen nicht überein! %></code> + <% else %> + <code class="error"><%:unknown_error Unbekannter Fehler!%></code> + <% end %> +<% end %> +<% if not stat or stat == 10 then %> + <form method="post" action="<%=controller%>/admin/system/passwd"> + <div class="cbi-section-node"> + <div class="cbi-value"> + <div class="cbi-value-title"><%:password Passwort%></div> + <div class="cbi-value-field"><input type="password" name="pwd1" /></div> + </div> + <div class="cbi-value"> + <div class="cbi-value-title"><%:confirmation Bestätigung%></div> + <div class="cbi-value-field"><input type="password" name="pwd2" /></div> + </div> + <br /> + <div> + <input type="submit" value="<%:save Speichern%>" /> + <input type="reset" value="<%:reset Zurücksetzen%>" /> + </div> + </div> + </form> +<% end %> +</div> +<%+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%> +<h1><%:system System%></h1> +<h2><%:reboot Neu starten%></h2> +<p><%:reboot1 Startet das Betriebssystem des Routers neu.%></p> +<% if not reboot then %> +<p><a href="<%=controller%>/admin/system/reboot?reboot=1"><%:reboot_do Neustart durchführen%></a></p> +<% else %> +<p><%:reboot_running Bitte warten: Neustart wird durchgeführt...%></p> +<script type="text/javascript">setTimeout("location='<%=controller%>/admin'", 60000)</script> +<% 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%> +<h1><%:system System%></h1> +<h2><%:sshkeys SSH-Schlüssel%></h2> + +<br /> + +<div><%:sshkeys_descr Hier können öffentliche SSH-Schlüssel (einer pro Zeile) + zur Authentifizierung abgelegt werden.%></div> + +<br /> + +<form method="post" action="<%=controller%>/admin/system/sshkeys"> + <div class="cbi-section-node" style="width: 100%"> + <div class="cbi-value"> + <div class="cbi-value-field"> + <textarea style="width: 100%" rows="10" name="data"><%=cnt%></textarea> + </div> + </div> + </div> + <div> + <input type="submit" value="<%:save Speichern%>" /> + <input type="reset" value="<%:reset Zurücksetzen%>" /> + </div> + <% if msg then %><br /><div class="error"><%:error Fehler%>: <%=msg%></div><% end %> +</form> +<%+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%> +<h1><%:system System%></h1> +<h2><%:upgrade Upgrade%></h2> +<p><%:upgrade1 Ersetzt die installierte Firmware (das Betriebssystem des Routers) durch ein neues. +Das Format der Firmware ist plattformabhängig.%></p> +<br /> +<% if sysupgrade and not ret then %> +<form method="post" action="<%=controller%>-upload/admin/system/upgrade" enctype="multipart/form-data"> + <div class="cbi-section-node"> + <div class="cbi-value clear"> + <div class="cbi-value-title left"><%:fwimage Firmwareimage%></div> + <div class="cbi-value-field"><input type="file" size="30" name="image" /></div> + </div> + <br /> + <div class="cbi-value clear"> + <input type="checkbox" name="keepcfg" value="1" checked="checked" /> + <span class="bold"><%:keepcfg Konfigurationsdateien übernehmen%></span> + </div> + <br /> + <div> + <input type="submit" value="<%:fwupgrade Firmware aktualisieren%>" /> + </div> + </div> +</form> +<% elseif ret then %> + <% if ret == 0 then %> +<div class="ok"><%:flashed Flashvorgang erfolgreich. Router startet neu...%></div> + <% else %> +<div class="error"><%:flasherr Flashvorgang fehlgeschlagen!%> (<%:code Code%> <%=ret%>)</div> + <% end %> +<% else %> +<div class="error"><%:notimplemented Diese Funktion steht leider (noch) nicht zur Verfügung.%></div> +<% 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%> +<h1><%:config Konfiguration%></h1> +<p><%:uci_applied Die folgenden Änderungen wurden übernommen%>:</p> +<code><%=(changes or "-")%> +<%=output%></code> +<%+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%> +<h1><%:config Konfiguration%></h1> +<h2><%:changes Änderungen%></h2> +<code><%=(ffluci.model.uci.changes() or "-")%></code> +<form class="inline" method="get" action="<%=controller%>/admin/uci/apply"> + <input type="submit" value="<%:apply Anwenden%>" /> +</form> +<form class="inline" method="get" action="<%=controller%>/admin/uci/revert"> + <input type="submit" value="<%:revert Verwerfen%>" /> +</form> +<%+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%> +<h1><%:config Konfiguration%></h1> +<p><%:uci_reverted Die folgenden Änderungen wurden verworfen%>:</p> +<code><%=(changes or "-")%></code> +<%+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%> +<h1><%:wifi Drahtlos%></h1> +<p><%:wifi1 Hier finden sich Konfiugrationsmöglichkeiten für Drahtlos-Netzwerke nach dem WLAN-Standard.%></p> +<p><%: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.%></p> +<p><%:wifi3 Es werden Managed, Client, Ad-Hoc und WDS-Modus unterstützt sowie WPA und WPA2-Verschlüsselung zur gesicherten +Kommunikation.%></p> +<%+footer%>
\ No newline at end of file |