* Added configuration pages for Dropbear, HTTPd, Mount Points

* Reorganized menu structure
* Prepare firmware upgrade mechanism
This commit is contained in:
Steven Barth 2008-04-07 21:01:39 +00:00
parent 9de2f0d591
commit f341dfe91a
16 changed files with 198 additions and 11 deletions

88
contrib/ffluci-flash Normal file
View file

@ -0,0 +1,88 @@
#!/bin/sh
. /etc/functions.sh
# initialize defaults
RAMFS_COPY_BIN="" # extra programs for temporary ramfs root
RAMFS_COPY_DATA="" # extra data files
export KEEP_PATTERN=""
export VERBOSE=1
# parse options
while [ -n "$1" ]; do
case "$1" in
-k)
shift
export KEEP_PATTERN="$1"
;;
-*)
echo "Invalid option: $1"
exit 1
;;
*) break;;
esac
shift;
done
export CONFFILES=/tmp/sysupgrade.conffiles
export CONF_TAR=/tmp/sysupgrade.tgz
[ -f $CONFFILES ] && rm $CONFFILES
[ -f $CONF_TAR ] && rm $CONF_TAR
export ARGV="$*"
export ARGC="$#"
[ -z "$ARGV" ] && {
cat <<EOF
Usage: $0 [options] <image file or URL>
Options:
-k <"file 1, file 2, ..."> Files to be kept
EOF
exit 1
}
add_pattern_conffiles() {
local file="$1"
find $KEEP_PATTERN >> "$file" 2>/dev/null
return 0
}
# hooks
sysupgrade_image_check="platform_check_image"
sysupgrade_init_conffiles=""
[ -n "$KEEP_PATTERN" ] && append sysupgrade_init_conffiles "add_pattern_conffiles"
include /lib/upgrade
do_save_conffiles() {
[ -z "$(rootfs_type)" ] && {
echo "Cannot save config while running from ramdisk."
exit 3
return 0
}
run_hooks "$CONFFILES" $sysupgrade_init_conffiles
v "Saving config files..."
[ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V=""
tar c${TAR_V}zf "$CONF_TAR" -T "$CONFFILES" 2>/dev/null
}
type platform_check_image >/dev/null 2>/dev/null || {
echo "Firmware upgrade is not implemented for this platform."
exit 1
}
for check in $sysupgrade_image_check; do
( eval "$check \"\$ARGV\"" ) || {
echo "Image check '$check' failed."
exit 2
}
done
[ -n "$sysupgrade_init_conffiles" ] && do_save_conffiles
run_hooks "" $sysupgrade_pre_upgrade
v "Switching to ramdisk..."
run_ramfs '. /etc/functions.sh; include /lib/upgrade; do_upgrade'

View file

@ -40,6 +40,7 @@ define Package/ffluci/install
$(INSTALL_DIR) $(1)/www/ffluci $(INSTALL_DIR) $(1)/www/ffluci
$(INSTALL_DIR) $(1)/etc/config $(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/init.d/luci_fw $(1)/etc/init.d/luci_fw $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/init.d/luci_fw $(1)/etc/init.d/luci_fw
$(CP) $(PKG_BUILD_DIR)/dist/* $(1)/usr/lib/lua/ -R $(CP) $(PKG_BUILD_DIR)/dist/* $(1)/usr/lib/lua/ -R
$(CP) $(PKG_BUILD_DIR)/contrib/media $(1)/www/ffluci/ -R $(CP) $(PKG_BUILD_DIR)/contrib/media $(1)/www/ffluci/ -R
@ -47,6 +48,7 @@ define Package/ffluci/install
$(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/ffluci-upload $(1)/www/cgi-bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/ffluci-upload $(1)/www/cgi-bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/index.cgi $(1)/www/cgi-bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/index.cgi $(1)/www/cgi-bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/index.html $(1)/www $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/index.html $(1)/www
$(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/ffluci-flash $(1)/sbin
$(CP) $(PKG_BUILD_DIR)/contrib/uci/luci $(1)/etc/config/luci $(CP) $(PKG_BUILD_DIR)/contrib/uci/luci $(1)/etc/config/luci
$(CP) $(PKG_BUILD_DIR)/contrib/uci/luci_fw $(1)/etc/config/luci_fw $(CP) $(PKG_BUILD_DIR)/contrib/uci/luci_fw $(1)/etc/config/luci_fw
$(CP) -a ./ipkg/ffluci.postinst $(1)/CONTROL/postinst $(CP) -a ./ipkg/ffluci.postinst $(1)/CONTROL/postinst

View file

@ -5,6 +5,9 @@ config core main
config core category_privileges config core category_privileges
option public nobody:nogroup option public nobody:nogroup
config extern flash
option keep "/etc/config /etc/dropbear /etc/openvpn /etc/passwd /etc/ipkg.conf /etc/httpd.conf /etc/firewall.user"
config public contact config public contact
option nickname option nickname
option name option name
@ -21,3 +24,6 @@ config event uci_oncommit
option olsrd "/etc/init.d/olsrd restart" option olsrd "/etc/init.d/olsrd restart"
option dhcp "/etc/init.d/dhcp restart" option dhcp "/etc/init.d/dhcp restart"
option luci_fw "/etc/init.d/luci_fw restart" option luci_fw "/etc/init.d/luci_fw restart"
option dropbear "/etc/init.d/dropbear restart"
option httpd "/etc/init.d/httpd restart"
option fstab "/etc/init.d/fstab restart"

View file

@ -1 +0,0 @@
module("ffluci.controller.admin.mesh", package.seeall)

View file

@ -0,0 +1 @@
module("ffluci.controller.admin.services", package.seeall)

View file

@ -174,3 +174,7 @@ function action_sshkeys()
ffluci.template.render("admin_system/sshkeys", {cnt=cnt, msg=err}) ffluci.template.render("admin_system/sshkeys", {cnt=cnt, msg=err})
end end
function action_upgrade()
-- To be implemented
end

View file

@ -47,7 +47,7 @@ local menuc = {}
-- Adds a menu category to the current menu and selects it -- Adds a menu category to the current menu and selects it
function add(cat, controller, title, order) function add(cat, controller, title, order)
order = order or 50 order = order or 100
if not menu[cat] then if not menu[cat] then
menu[cat] = {} menu[cat] = {}
end end

View file

@ -5,6 +5,9 @@ c = m:section(NamedSection, "main", "core", "Allgemein")
c:option(Value, "lang", "Sprache") c:option(Value, "lang", "Sprache")
c:option(Value, "mediaurlbase", "Mediaverzeichnis") c:option(Value, "mediaurlbase", "Mediaverzeichnis")
f = m:section(NamedSection, "flash", "extern", "Firmwareupgrade")
f:option(Value, "keep", "Übernehme Dateien").size = 64
p = m:section(NamedSection, "category_privileges", "core", "Kategorieprivilegien") p = m:section(NamedSection, "category_privileges", "core", "Kategorieprivilegien")
p.dynamic = true p.dynamic = true

View file

@ -0,0 +1,14 @@
-- ToDo: Translate, Add descriptions
m = Map("dropbear", "SSH-Server")
s = m:section(TypedSection, "dropbear")
s.anonymous = true
port = s:option(Value, "Port", "Port")
port.isinteger = true
pwauth = s:option(Flag, "PasswordAuth", "Passwortanmeldung")
pwauth.enabled = 'on'
pwauth.disabled = 'off'
return m

View file

@ -0,0 +1,18 @@
-- ToDo: Translate, Add descriptions
m = Map("httpd", "HTTP-Server")
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")
realm.rmempty = true
return m

View file

@ -0,0 +1,21 @@
m = Map("fstab", "Einhängepunkte")
mount = m:section(TypedSection, "mount", "Einhängepunkte")
mount.anonymous = true
mount.addremove = true
mount:option(Flag, "enabled", "aktivieren")
mount:option(Value, "device", "Gerät")
mount:option(Value, "target", "Einhängepunkt")
mount:option(Value, "fstype", "Dateisystem")
mount:option(Value, "options", "Optionen")
swap = m:section(TypedSection, "swap", "SWAP")
swap.anonymous = true
swap.addremove = true
swap:option(Flag, "enabled", "aktivieren")
swap:option(Value, "device", "Gerät")
return m

View file

@ -4,17 +4,22 @@ act("contact", "Kontakt")
add("admin", "index", "Übersicht", 10) add("admin", "index", "Übersicht", 10)
act("luci", "FFLuCI")
act("contact", "Kontakt") act("contact", "Kontakt")
act("luci", "FFLuCI")
add("admin", "system", "System", 20) add("admin", "system", "System", 20)
act("packages", "Paketverwaltung") act("packages", "Paketverwaltung")
act("passwd", "Passwort ändern") act("passwd", "Passwort ändern")
act("sshkeys", "SSH-Schlüssel") act("sshkeys", "SSH-Schlüssel")
act("ipkg", "IPKG-Konfiguration") act("fstab", "Einhängepunkte")
act("reboot", "Neu starten") act("reboot", "Neu starten")
add("admin", "network", "Netzwerk", 30) add("admin", "services", "Dienste", 30)
act("olsrd", "OLSR")
act("httpd", "HTTP-Server")
act("dropbear", "SSH-Server")
add("admin", "network", "Netzwerk", 40)
act("vlan", "Switch") act("vlan", "Switch")
act("ifaces", "Schnittstellen") act("ifaces", "Schnittstellen")
act("ptp", "PPPoE / PPTP") act("ptp", "PPPoE / PPTP")
@ -22,9 +27,6 @@ act("routes", "Statische Routen")
act("portfw", "Portweiterleitung") act("portfw", "Portweiterleitung")
act("firewall", "Firewall") act("firewall", "Firewall")
add("admin", "wifi", "Drahtlos", 40) add("admin", "wifi", "Drahtlos", 50)
act("devices", "Geräte") act("devices", "Geräte")
act("networks", "Netze") act("networks", "Netze")
add("admin", "mesh", "Mesh", 50)
act("olsrd", "OLSR")

View file

@ -0,0 +1,2 @@
<%+header%>
<%+footer%>

View file

@ -23,6 +23,7 @@
<% end %> <% end %>
<div> <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?update=1"><%:packages_updatelist Paketlisten aktualisieren%></a><br />
<a href="<%=controller%>/admin/system/packages?upgrade=1"><%:packages_upgrade Installierte Pakete aktualisieren%></a> <a href="<%=controller%>/admin/system/packages?upgrade=1"><%:packages_upgrade Installierte Pakete aktualisieren%></a>
</div> </div>

View file

@ -0,0 +1,26 @@
<%+header%>
<h1><%:system System%></h1>
<h2><%:upgrade Upgrade%></h2>
<br />
<% if sysupgrade then %>
<form method="post" action="<%=controller%>-upload/admin/system/upgrade" enctype="multipart/form-data">
<fieldset 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>
</fieldset>
</form>
<% else %>
<div class="error"><%:notimplemented Diese Funktion ist leider (noch) nicht eingebaut.%></div>
<% end %>
<%+footer%>