Skip to content
Snippets Groups Projects
Commit f93e9b81 authored by Matthias Schiffer's avatar Matthias Schiffer
Browse files

Split gluon-setup-mode package out of gluon-config-mode

gluon-config-mode retains the luci frontend, all setup scripts and config is
moved to the new package.
parent 2ec02a41
No related branches found
No related tags found
No related merge requests found
Showing
with 143 additions and 55 deletions
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=gluon-config-mode PKG_NAME:=gluon-config-mode
PKG_VERSION:=3 PKG_VERSION:=4
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
...@@ -13,8 +13,8 @@ include $(GLUONDIR)/include/package.mk ...@@ -13,8 +13,8 @@ include $(GLUONDIR)/include/package.mk
define Package/gluon-config-mode define Package/gluon-config-mode
SECTION:=gluon SECTION:=gluon
CATEGORY:=Gluon CATEGORY:=Gluon
TITLE:=Luci based config mode for user friendly setup of new meshnodes TITLE:=Luci based config mode for user friendly setup of new mesh nodes
DEPENDS:=+gluon-luci-core +gluon-lock-password +gluon-node-info +gluon-simple-tc +uhttpd +dnsmasq +ip DEPENDS:=+gluon-luci-core +gluon-setup-mode +gluon-lock-password +gluon-node-info +gluon-simple-tc
endef endef
define Package/gluon-config-mode/description define Package/gluon-config-mode/description
......
config wizard
option enabled '0'
option configured '0'
#!/bin/sh
. /lib/gluon/functions/sysconfig.sh
. /lib/ar71xx.sh
sysconfig_isset config_ifname && exit 0
case "$(ar71xx_board_name)" in
nanostation-m)
sysconfig_set config_ifname "$(sysconfig wan_ifname || sysconfig lan_ifname)"
;;
*)
sysconfig_set config_ifname "$(sysconfig lan_ifname || sysconfig wan_ifname)"
;;
esac
...@@ -21,7 +21,7 @@ local meshvpn_name = "mesh_vpn" ...@@ -21,7 +21,7 @@ local meshvpn_name = "mesh_vpn"
function index() function index()
local uci_state = luci.model.uci.cursor_state() local uci_state = luci.model.uci.cursor_state()
if uci_state:get_first("gluon-config-mode", "wizard", "running", "0") == "1" then if uci_state:get_first("gluon-setup-mode", "setup_mode", "running", "0") == "1" then
local root = node() local root = node()
if not root.target then if not root.target then
root.target = alias("gluon-config-mode") root.target = alias("gluon-config-mode")
...@@ -57,9 +57,9 @@ function action_reboot() ...@@ -57,9 +57,9 @@ function action_reboot()
pubkey = configmode.get_fastd_pubkey(meshvpn_name) pubkey = configmode.get_fastd_pubkey(meshvpn_name)
end end
uci:set("gluon-config-mode", uci:get_first("gluon-config-mode", "wizard"), "configured", "1") uci:set("gluon-setup-mode", uci:get_first("gluon-setup-mode", "setup_mode"), "configured", "1")
uci:save("gluon-config-mode") uci:save("gluon-setup-mode")
uci:commit("gluon-config-mode") uci:commit("gluon-setup-mode")
local hostname = uci:get_first("system", "system", "hostname") local hostname = uci:get_first("system", "system", "hostname")
......
...@@ -9,11 +9,11 @@ local c = uci.cursor() ...@@ -9,11 +9,11 @@ local c = uci.cursor()
for _, config in ipairs(site.legacy.config_mode_configs) do for _, config in ipairs(site.legacy.config_mode_configs) do
local old = c:get_first(config, 'wizard', 'configured') local old = c:get_first(config, 'wizard', 'configured')
if old == '1' then if old == '1' then
local wizard = c:get_first('gluon-config-mode', 'wizard') local setup_mode = c:get_first('gluon-setup-mode', 'setup_mode')
c:set('gluon-config-mode', wizard, 'configured', '1') c:set('gluon-setup-mode', setup_mode, 'configured', '1')
c:save('gluon-config-mode') c:save('gluon-setup-mode')
c:commit('gluon-config-mode') c:commit('gluon-setup-mode')
break break
end end
......
...@@ -17,10 +17,10 @@ module("luci.controller.admin.index", package.seeall) ...@@ -17,10 +17,10 @@ module("luci.controller.admin.index", package.seeall)
function index() function index()
local uci_state = luci.model.uci.cursor_state() local uci_state = luci.model.uci.cursor_state()
local configmode = uci_state:get_first("gluon-config-mode", "wizard", "running", "0") == "1" local setup_mode = uci_state:get_first("gluon-setup-mode", "setup_mode", "running", "0") == "1"
-- Disable gluon-luci-admin when configmode is not enabled -- Disable gluon-luci-admin when setup mode is not enabled
if not configmode then if not setup_mode then
return return
end end
...@@ -32,8 +32,8 @@ function index() ...@@ -32,8 +32,8 @@ function index()
local page = entry({"admin"}, alias("admin", "index"), "Expert Mode", 10) local page = entry({"admin"}, alias("admin", "index"), "Expert Mode", 10)
page.sysauth = "root" page.sysauth = "root"
if configmode then if setup_mode then
-- force root to be logged in when running in configmode -- force root to be logged in when running in setup_mode
page.sysauth_authenticator = function() return "root" end page.sysauth_authenticator = function() return "root" end
else else
page.sysauth_authenticator = "htmlauth" page.sysauth_authenticator = "htmlauth"
...@@ -42,7 +42,7 @@ function index() ...@@ -42,7 +42,7 @@ function index()
entry({"admin", "index"}, cbi("admin/remote"), "Remotezugriff", 1).ignoreindex = true entry({"admin", "index"}, cbi("admin/remote"), "Remotezugriff", 1).ignoreindex = true
if not configmode then if not setup_mode then
entry({"admin", "logout"}, call("action_logout"), "Logout") entry({"admin", "logout"}, call("action_logout"), "Logout")
end end
end end
......
# Copyright (C) 2012 Nils Schneider <nils at nilsschneider.net>
# This is free software, licensed under the Apache 2.0 license.
include $(TOPDIR)/rules.mk
PKG_NAME:=gluon-setup-mode
PKG_VERSION:=1
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
include $(GLUONDIR)/include/package.mk
define Package/gluon-setup-mode
SECTION:=gluon
CATEGORY:=Gluon
TITLE:=Setup mode
DEPENDS:=+uhttpd +dnsmasq +ip
endef
define Package/gluon-setup-mode/description
Offline mode to perform basic setup in a secure manner.
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
endef
define Build/Configure
endef
define Build/Compile
endef
define Package/gluon-setup-mode/install
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,gluon-setup-mode))
config setup_mode
option enabled '0'
option configured '0'
...@@ -4,10 +4,10 @@ ...@@ -4,10 +4,10 @@
wait=3 wait=3
wait_config_mode() { wait_setup_mode() {
sleep $wait sleep $wait
uci set 'gluon-config-mode.@wizard[0].enabled=1' uci set 'gluon-setup-mode.@setup_mode[0].enabled=1'
uci commit gluon-config-mode uci commit gluon-setup-mode
reboot reboot
} }
...@@ -15,14 +15,14 @@ wait_config_mode() { ...@@ -15,14 +15,14 @@ wait_config_mode() {
if [ "$BUTTON" = wps -o "$BUTTON" = reset ]; then if [ "$BUTTON" = wps -o "$BUTTON" = reset ]; then
case "$ACTION" in case "$ACTION" in
pressed) pressed)
wait_config_mode & wait_setup_mode &
PID=$! PID=$!
echo $PID > /tmp/.wait_config_mode echo $PID > /tmp/.wait_setup_mode
;; ;;
released) released)
if [ -r /tmp/.wait_config_mode ]; then if [ -r /tmp/.wait_setup_mode ]; then
kill $(cat /tmp/.wait_config_mode) kill $(cat /tmp/.wait_setup_mode)
rm /tmp/.wait_config_mode rm /tmp/.wait_setup_mode
fi fi
;; ;;
esac esac
......
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
START=12 START=12
CONFIG_MODE_ADDR=192.168.1.1 SETUP_MODE_ADDR=192.168.1.1
CONFIG_MODE_NETMASK=255.255.255.0 SETUP_MODE_NETMASK=255.255.255.0
CONFIG_MODE_DHCP_RANGE=192.168.1.2,192.168.1.254 SETUP_MODE_DHCP_RANGE=192.168.1.2,192.168.1.254
delete_interface() { delete_interface() {
...@@ -25,7 +25,7 @@ check_enable() { ...@@ -25,7 +25,7 @@ check_enable() {
setup_network() { setup_network() {
( (
export UCI_CONFIG_DIR=/var/gluon/config-mode/config export UCI_CONFIG_DIR=/var/gluon/setup-mode/config
mkdir -p "$UCI_CONFIG_DIR" mkdir -p "$UCI_CONFIG_DIR"
...@@ -34,12 +34,12 @@ setup_network() { ...@@ -34,12 +34,12 @@ setup_network() {
config_load network config_load network
config_foreach delete_interface interface config_foreach delete_interface interface
uci_add network interface config uci_add network interface setup
uci_set network config ifname "$(sysconfig config_ifname)" uci_set network setup ifname "$(sysconfig setup_ifname)"
uci_set network config type 'bridge' uci_set network setup type 'bridge'
uci_set network config proto 'static' uci_set network setup proto 'static'
uci_set network config ipaddr "$CONFIG_MODE_ADDR" uci_set network setup ipaddr "$SETUP_MODE_ADDR"
uci_set network config netmask "$CONFIG_MODE_NETMASK" uci_set network setup netmask "$SETUP_MODE_NETMASK"
uci_commit network uci_commit network
...@@ -58,22 +58,22 @@ start() { ...@@ -58,22 +58,22 @@ start() {
. /lib/gluon/functions/sysconfig.sh . /lib/gluon/functions/sysconfig.sh
enable=0 enable=0
config_load gluon-config-mode config_load gluon-setup-mode
config_foreach check_enable wizard config_foreach check_enable setup_mode
if [ "$enable" = '1' ]; then if [ "$enable" = '1' ]; then
lua -luci -e 'require "luci.model.uci"; uci_state=luci.model.uci.cursor_state(); uci_state:section("gluon-config-mode", "wizard", nil, { running = "1" }); uci_state:save("gluon-config-mode")' lua -luci -e 'require "luci.model.uci"; uci_state=luci.model.uci.cursor_state(); uci_state:section("gluon-setup-mode", "setup_mode", nil, { running = "1" }); uci_state:save("gluon-setup-mode")'
uci set 'gluon-config-mode.@wizard[0].enabled=0' uci set 'gluon-setup-mode.@setup_mode[0].enabled=0'
uci commit gluon-config-mode uci commit gluon-setup-mode
setup_network setup_network
/usr/sbin/telnetd -l /lib/gluon/config-mode/ash-login /usr/sbin/telnetd -l /lib/gluon/setup-mode/ash-login
/etc/init.d/dropbear start /etc/init.d/dropbear start
/usr/sbin/uhttpd -h /lib/gluon/config-mode/www -x /cgi-bin -A 1 -R -p 0.0.0.0:80 /usr/sbin/uhttpd -h /lib/gluon/setup-mode/www -x /cgi-bin -A 1 -R -p 0.0.0.0:80
/usr/sbin/dnsmasq -p 0 -F $CONFIG_MODE_DHCP_RANGE -l /tmp/dhcp.leases -O option:router /usr/sbin/dnsmasq -p 0 -F $SETUP_MODE_DHCP_RANGE -l /tmp/dhcp.leases -O option:router
/etc/init.d/led start /etc/init.d/led start
......
#!/usr/bin/lua
local site = require 'gluon.site_config'
local uci = require 'luci.model.uci'
local c = uci.cursor()
local old = c:get_first('gluon-config-mode', 'wizard', 'configured')
if old == '1' then
local setup_mode = c:get_first('gluon-setup-mode', 'setup_mode')
c:set('gluon-setup-mode', setup_mode, 'configured', '1')
c:save('gluon-setup-mode')
c:commit('gluon-setup-mode')
end
os.remove('/etc/config/gluon-config-mode')
#!/bin/sh
. /lib/gluon/functions/sysconfig.sh
. /lib/gluon/functions/model.sh
sysconfig_isset setup_ifname && exit 0
case "$(get_board_name)" in
nanostation-m)
sysconfig_set setup_ifname "$(sysconfig config_ifname || sysconfig wan_ifname || sysconfig lan_ifname)"
;;
*)
sysconfig_set setup_ifname "$(sysconfig config_ifname || sysconfig lan_ifname || sysconfig wan_ifname)"
;;
esac
# Remove the old sysconfig setting
sysconfig_unset config_ifname
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment