summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2008-04-06 16:58:39 +0000
committerSteven Barth <steven@midlink.org>2008-04-06 16:58:39 +0000
commit9e67df179f28e62045d5452134e23bebb9eab72f (patch)
tree2bf1fdd7c02646b0326675445a1e9d7fafedc581
parent6f934c0dbe089c532e2eef8b4008618ae2945ab0 (diff)
* Added IPKG-configuration
* Added Package management * Added confirmation link to reboot
-rw-r--r--contrib/media/cascade.css12
-rw-r--r--src/ffluci/controller/admin/system.lua110
-rw-r--r--src/ffluci/model/menu/00main.lua2
-rw-r--r--src/ffluci/view/admin_system/ipkg.htm23
-rw-r--r--src/ffluci/view/admin_system/packages.htm76
-rw-r--r--src/ffluci/view/admin_system/reboot.htm6
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