diff options
author | Steven Barth <steven@midlink.org> | 2008-04-06 16:58:39 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-04-06 16:58:39 +0000 |
commit | 9e67df179f28e62045d5452134e23bebb9eab72f (patch) | |
tree | 2bf1fdd7c02646b0326675445a1e9d7fafedc581 | |
parent | 6f934c0dbe089c532e2eef8b4008618ae2945ab0 (diff) |
* Added IPKG-configuration
* Added Package management
* Added confirmation link to reboot
-rw-r--r-- | contrib/media/cascade.css | 12 | ||||
-rw-r--r-- | src/ffluci/controller/admin/system.lua | 110 | ||||
-rw-r--r-- | src/ffluci/model/menu/00main.lua | 2 | ||||
-rw-r--r-- | src/ffluci/view/admin_system/ipkg.htm | 23 | ||||
-rw-r--r-- | src/ffluci/view/admin_system/packages.htm | 76 | ||||
-rw-r--r-- | src/ffluci/view/admin_system/reboot.htm | 6 |
6 files changed, 227 insertions, 2 deletions
diff --git a/contrib/media/cascade.css b/contrib/media/cascade.css index 8fc11994e6..d09ab7477c 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 c4ba027cbc..5d3150aa2a 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 966c4228ce..e0bd403c19 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 0000000000..bbe7f3bc6e --- /dev/null +++ b/src/ffluci/view/admin_system/ipkg.htm @@ -0,0 +1,23 @@ +<%+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"> + <fieldset class="cbi-section-node"> + <div><textarea style="width: 100%" rows="10" name="data"><%=(cnt or '')%></textarea></div> + <br /> + <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 %> + </fieldset> +</form> +<%+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 0000000000..ef27f369ab --- /dev/null +++ b/src/ffluci/view/admin_system/packages.htm @@ -0,0 +1,76 @@ +<%+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/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 or '')%>" /> + <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 or '')%></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 or '')%></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/src/ffluci/view/admin_system/reboot.htm b/src/ffluci/view/admin_system/reboot.htm index a81464409b..365c330781 100644 --- a/src/ffluci/view/admin_system/reboot.htm +++ b/src/ffluci/view/admin_system/reboot.htm @@ -1,4 +1,10 @@ <%+header%> <h1><%:system System%></h1> <h2><%:reboot Neu starten%></h2> +<% 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'", 30000)</script> +<% end %> <%+footer%>
\ No newline at end of file |