From 9e67df179f28e62045d5452134e23bebb9eab72f Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Sun, 6 Apr 2008 16:58:39 +0000 Subject: [PATCH] * Added IPKG-configuration * Added Package management * Added confirmation link to reboot --- contrib/media/cascade.css | 12 +++ src/ffluci/controller/admin/system.lua | 110 +++++++++++++++++++++- src/ffluci/model/menu/00main.lua | 2 + src/ffluci/view/admin_system/ipkg.htm | 23 +++++ src/ffluci/view/admin_system/packages.htm | 76 +++++++++++++++ src/ffluci/view/admin_system/reboot.htm | 6 ++ 6 files changed, 227 insertions(+), 2 deletions(-) create mode 100644 src/ffluci/view/admin_system/ipkg.htm create mode 100644 src/ffluci/view/admin_system/packages.htm diff --git a/contrib/media/cascade.css b/contrib/media/cascade.css index 8fc11994e..d09ab7477 100644 --- a/contrib/media/cascade.css +++ b/contrib/media/cascade.css @@ -165,6 +165,13 @@ h3 { display: inline; } +.code { + background: #f7f7f7; + border: 1px solid #d7d7d7; + margin: 1em 1.75em; + padding: 1em; +} + code { display: block; background: #f7f7f7; @@ -241,4 +248,9 @@ code { .error { color: red; font-weight: bold; +} + +.ok { + color: green; + font-weight: bold; } \ No newline at end of file diff --git a/src/ffluci/controller/admin/system.lua b/src/ffluci/controller/admin/system.lua index c4ba027cb..5d3150aa2 100644 --- a/src/ffluci/controller/admin/system.lua +++ b/src/ffluci/controller/admin/system.lua @@ -4,6 +4,7 @@ require("ffluci.sys") require("ffluci.http") require("ffluci.util") require("ffluci.fs") +require("ffluci.model.ipkg") function action_editor() local file = ffluci.http.formvalue("file", "") @@ -29,6 +30,108 @@ function action_editor() 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 = ffluci.http.formvalue("install") + install = (type(install) == "table" and submit) and install or nil + + -- 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 = ffluci.http.formvalue("remove") + remove = (type(remove) == "table" and submit) and remove or nil + 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) + 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") @@ -46,8 +149,11 @@ function action_passwd() end function action_reboot() - ffluci.template.render("admin_system/reboot") - ffluci.sys.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() diff --git a/src/ffluci/model/menu/00main.lua b/src/ffluci/model/menu/00main.lua index 966c4228c..e0bd403c1 100644 --- a/src/ffluci/model/menu/00main.lua +++ b/src/ffluci/model/menu/00main.lua @@ -8,8 +8,10 @@ act("luci", "FFLuCI") act("contact", "Kontakt") add("admin", "system", "System", 20) +act("packages", "Paketverwaltung") act("passwd", "Passwort ändern") act("sshkeys", "SSH-Schlüssel") +act("ipkg", "IPKG-Konfiguration") act("reboot", "Neu starten") add("admin", "network", "Netzwerk", 30) diff --git a/src/ffluci/view/admin_system/ipkg.htm b/src/ffluci/view/admin_system/ipkg.htm new file mode 100644 index 000000000..bbe7f3bc6 --- /dev/null +++ b/src/ffluci/view/admin_system/ipkg.htm @@ -0,0 +1,23 @@ +<%+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/src/ffluci/view/admin_system/packages.htm b/src/ffluci/view/admin_system/packages.htm new file mode 100644 index 000000000..ef27f369a --- /dev/null +++ b/src/ffluci/view/admin_system/packages.htm @@ -0,0 +1,76 @@ +<%+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_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 or '')%><% 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 or '')%>
+
+
+ +
+<%+footer%> \ No newline at end of file diff --git a/src/ffluci/view/admin_system/reboot.htm b/src/ffluci/view/admin_system/reboot.htm index a81464409..365c33078 100644 --- a/src/ffluci/view/admin_system/reboot.htm +++ b/src/ffluci/view/admin_system/reboot.htm @@ -1,4 +1,10 @@ <%+header%>

<%:system System%>

<%:reboot Neu starten%>

+<% 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 -- 2.25.1