From a94167cecaef6185b3e6672a102ee2a722706931 Mon Sep 17 00:00:00 2001 From: Rick Companje Date: Fri, 29 Nov 2013 12:00:49 +0100 Subject: [PATCH 1/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4e39e7c..b96cfa0 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ WiFi box OpenWRT firmware package ================================= -General documentation can be found on the wiki: . Source code documentation can be generated, see below. +General documentation can be found on the wiki: . Source code documentation can be generated, see below. Documentation ------------- From 042f33c11a1517992bb8cc092fbe1792e61664a9 Mon Sep 17 00:00:00 2001 From: Wouter R Date: Fri, 29 Nov 2013 19:38:26 +0100 Subject: [PATCH 2/5] Log all the things! Closes #78 (on client: https://github.com/Doodle3D/doodle3d-client/issues/78). Bump fimware version to 0.9.11 (to avoid accidentally overwriting previous image). --- src/FIRMWARE-VERSION | 2 +- src/rest/api/api_info.lua | 72 ++++++++++++++++++++++++++++++++------- 2 files changed, 61 insertions(+), 13 deletions(-) diff --git a/src/FIRMWARE-VERSION b/src/FIRMWARE-VERSION index 56f3151..8225a4b 100644 --- a/src/FIRMWARE-VERSION +++ b/src/FIRMWARE-VERSION @@ -1 +1 @@ -0.9.10 +0.9.11 diff --git a/src/rest/api/api_info.lua b/src/rest/api/api_info.lua index 6645064..dc938fa 100644 --- a/src/rest/api/api_info.lua +++ b/src/rest/api/api_info.lua @@ -12,7 +12,18 @@ local LOG_COLLECT_DIRNAME = 'wifibox-logs' local LOG_COLLECT_DIR = TMP_DIR .. '/' .. LOG_COLLECT_DIRNAME local WIFIBOX_LOG_FILENAME = 'wifibox.log' local WIFIBOX_LOG_FILE = TMP_DIR .. '/' .. WIFIBOX_LOG_FILENAME + local SYSLOG_FILENAME = 'syslog' +local PROCESS_LIST_FILENAME = 'processes' +local MEMINFO_FILENAME = 'meminfo' +local MOUNTS_FILENAME = 'mounts' +local DISKFREE_FILENAME = 'diskfree' + +local UCI_CONFIG_FILES_TO_SAVE = { 'dhcp', 'firewall', 'network', 'system', 'wifibox', 'wireless' } + +local USB_DIRTREE_COMMAND = "ls -R /sys/devices/platform/ehci-platform/usb1 | grep \":$\" | sed -e 's/:$//' -e 's/[^-][^\\/]*\\//--/g' -e 's/^/ /' -e 's/-/|/'" +local USB_DIRTREE_FILENAME = 'sys_devices_platform_ehci-platform_usb1.tree' + local PRINT3D_BASEPATH = '/tmp' local PRINT3D_LOG_FILENAME_PREFIX = 'print3d-' local PRINT3D_LOG_FILENAME_SUFFIX = '.log' @@ -33,30 +44,60 @@ end -- TODO: redirect stdout+stderr; handle errors function M.logfiles(request, response) - local rv,msg = lfs.mkdir(LOG_COLLECT_DIR) - local rv,msg = lfs.chdir(TMP_DIR) + local rv,sig,code,msg = nil,nil,nil,nil + + rv,msg = lfs.mkdir(LOG_COLLECT_DIR) + rv,msg = lfs.chdir(TMP_DIR) --[[ create temporary files ]]-- - local rv,sig,code = redirectedExecute('cp ' .. WIFIBOX_LOG_FILE .. ' ' .. LOG_COLLECT_DIR) + -- copy wifibox API-script log + rv,sig,code = redirectedExecute('cp ' .. WIFIBOX_LOG_FILE .. ' ' .. LOG_COLLECT_DIR) - local rv,sig,code = os.execute('logread > ' .. LOG_COLLECT_DIR .. '/' .. SYSLOG_FILENAME) + -- capture syslog + rv,sig,code = os.execute('logread > ' .. LOG_COLLECT_DIR .. '/' .. SYSLOG_FILENAME) + -- capture running processes + rv,sig,code = os.execute('ps -w > ' .. LOG_COLLECT_DIR .. '/' .. PROCESS_LIST_FILENAME) + + -- capture info on RAM memory + rv,sig,code = os.execute('cat /proc/meminfo > ' .. LOG_COLLECT_DIR .. '/' .. MEMINFO_FILENAME) + + -- capture info on mounted file systems + rv,sig,code = os.execute('mount > ' .. LOG_COLLECT_DIR .. '/' .. MOUNTS_FILENAME) + + -- capture info on free disk space + rv,sig,code = os.execute('df -h > ' .. LOG_COLLECT_DIR .. '/' .. DISKFREE_FILENAME) + + -- list directory structure for primary USB controller + rv,sig,code = os.execute(USB_DIRTREE_COMMAND .. ' > ' .. LOG_COLLECT_DIR .. '/' .. USB_DIRTREE_FILENAME) + + -- copy relevant openwrt configuration files + rv,msg = lfs.mkdir(LOG_COLLECT_DIR .. '/config') + for _,v in pairs(UCI_CONFIG_FILES_TO_SAVE) do + local tgtFile = LOG_COLLECT_DIR .. '/config/' .. v + rv,sig,code = redirectedExecute('cp ' .. '/etc/config/' .. v .. ' ' .. tgtFile) + if v == 'wireless' then + rv,sig,code = os.execute("sed \"s/option key '.*'/option key '...'/g\" " .. tgtFile .. " > " .. tgtFile .. '.2') + end + end + + -- collect and copy print3d server logs for file in lfs.dir(PRINT3D_BASEPATH) do if file:find(PRINT3D_LOG_FILENAME_PREFIX) == 1 and file:find(PRINT3D_LOG_FILENAME_SUFFIX) ~= nil then local srcLogFile = PRINT3D_BASEPATH .. '/' .. file local tgtLogFile = LOG_COLLECT_DIR .. '/' .. file - local rv,sig,code = redirectedExecute('cp ' .. srcLogFile .. ' ' .. tgtLogFile) + rv,sig,code = redirectedExecute('cp ' .. srcLogFile .. ' ' .. tgtLogFile) end end - local rv,sig,code = redirectedExecute('tar czf ' .. LOG_COLLECT_ARCHIVE_FILE .. ' ' .. LOG_COLLECT_DIRNAME) --returns 0 success, 1 error + rv,sig,code = redirectedExecute('tar czf ' .. LOG_COLLECT_ARCHIVE_FILE .. ' ' .. LOG_COLLECT_DIRNAME) --returns 0 success, 1 error --[[ add response content ]]-- - local rv,msg = response:setBinaryFileData(LOG_COLLECT_ARCHIVE_FILE, LOG_COLLECT_ARCHIVE_FILENAME, 'application/x-compressed') + rv,msg = response:setBinaryFileData(LOG_COLLECT_ARCHIVE_FILE, LOG_COLLECT_ARCHIVE_FILENAME, 'application/x-compressed') if not rv then response:setError("could not set binary data from file '" .. LOG_COLLECT_ARCHIVE_FILE .. "' (" .. msg .. ")") else @@ -69,17 +110,24 @@ function M.logfiles(request, response) for file in lfs.dir(LOG_COLLECT_DIR) do if file:find(PRINT3D_LOG_FILENAME_PREFIX) == 1 and file:find(PRINT3D_LOG_FILENAME_SUFFIX) ~= nil then local tgtLogFile = LOG_COLLECT_DIR .. '/' .. file - local rv,sig,code = redirectedExecute('rm ' .. tgtLogFile) + rv,sig,code = redirectedExecute('rm ' .. tgtLogFile) end end - local rv,sig,code = redirectedExecute('rm ' .. LOG_COLLECT_DIR .. '/' .. WIFIBOX_LOG_FILENAME) + rv,sig,code = redirectedExecute('rm ' .. LOG_COLLECT_DIR .. '/config/*') + rv,msg = lfs.rmdir(LOG_COLLECT_DIR .. '/config') - local rv,sig,code = redirectedExecute('rm ' .. LOG_COLLECT_DIR .. '/' .. SYSLOG_FILENAME) + rv,sig,code = redirectedExecute('rm ' .. LOG_COLLECT_DIR .. '/' .. USB_DIRTREE_FILENAME) + rv,sig,code = redirectedExecute('rm ' .. LOG_COLLECT_DIR .. '/' .. DISKFREE_FILENAME) + rv,sig,code = redirectedExecute('rm ' .. LOG_COLLECT_DIR .. '/' .. MOUNTS_FILENAME) + rv,sig,code = redirectedExecute('rm ' .. LOG_COLLECT_DIR .. '/' .. MEMINFO_FILENAME) + rv,sig,code = redirectedExecute('rm ' .. LOG_COLLECT_DIR .. '/' .. PROCESS_LIST_FILENAME) + rv,sig,code = redirectedExecute('rm ' .. LOG_COLLECT_DIR .. '/' .. SYSLOG_FILENAME) + rv,sig,code = redirectedExecute('rm ' .. LOG_COLLECT_DIR .. '/' .. WIFIBOX_LOG_FILENAME) - local rv,msg = lfs.rmdir(LOG_COLLECT_DIR) + rv,msg = lfs.rmdir(LOG_COLLECT_DIR) - local rv,sig,code = redirectedExecute('rm ' .. LOG_COLLECT_ARCHIVE_FILE) + rv,sig,code = redirectedExecute('rm ' .. LOG_COLLECT_ARCHIVE_FILE) end function M.access(request, response) From 25c0c1a1fa5933bd534264f6d6493bbb90cdc8b3 Mon Sep 17 00:00:00 2001 From: Wouter R Date: Fri, 29 Nov 2013 20:47:17 +0100 Subject: [PATCH 3/5] Amend last commit. --- src/rest/api/api_info.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/rest/api/api_info.lua b/src/rest/api/api_info.lua index dc938fa..d4d9831 100644 --- a/src/rest/api/api_info.lua +++ b/src/rest/api/api_info.lua @@ -76,10 +76,12 @@ function M.logfiles(request, response) -- copy relevant openwrt configuration files rv,msg = lfs.mkdir(LOG_COLLECT_DIR .. '/config') for _,v in pairs(UCI_CONFIG_FILES_TO_SAVE) do + local srcFile = '/etc/config/' .. v local tgtFile = LOG_COLLECT_DIR .. '/config/' .. v - rv,sig,code = redirectedExecute('cp ' .. '/etc/config/' .. v .. ' ' .. tgtFile) - if v == 'wireless' then - rv,sig,code = os.execute("sed \"s/option key '.*'/option key '...'/g\" " .. tgtFile .. " > " .. tgtFile .. '.2') + if v ~= 'wireless' then + rv,sig,code = redirectedExecute('cp ' .. srcFile .. ' ' .. tgtFile) + else + rv,sig,code = os.execute("sed \"s/option key '.*'/option key '...'/g\" " .. srcFile .. " > " .. tgtFile) end end From ce043de28e65471e8b1cd64dce9206d3b3dca33e Mon Sep 17 00:00:00 2001 From: Wouter R Date: Fri, 29 Nov 2013 21:14:59 +0100 Subject: [PATCH 4/5] =?UTF-8?q?Workaround=20for=20issue=2066=20(https://gi?= =?UTF-8?q?thub.com/Doodle3D/doodle3d-client/issues/66).=20Remove=20?= =?UTF-8?q?=E2=80=98-s=E2=80=99=20flag=20in=20wifibox=20init=20script=20to?= =?UTF-8?q?=20prevent=20duplicates=20log=20messages.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 3 ++- post-install.sh | 1 + src/script/dhcpcheck_init | 16 ++++++++++++++++ src/script/wifibox_init | 2 +- 4 files changed, 20 insertions(+), 2 deletions(-) create mode 100755 src/script/dhcpcheck_init diff --git a/Makefile b/Makefile index 5cb4b83..f47d81e 100644 --- a/Makefile +++ b/Makefile @@ -100,7 +100,8 @@ define Package/wifibox/install $(INSTALL_BIN) $(WIFIBOX_BASE_DIR)/script/d3d-updater.lua $(1)/$(TGT_LUA_DIR_SUFFIX)/script $(LN) -s /$(TGT_LUA_DIR_SUFFIX)/script/d3d-updater.lua $(1)/bin/d3d-updater - $(INSTALL_BIN) $(WIFIBOX_BASE_DIR)/script/wifibox_init $(1)/etc/init.d/wifibox # copy directly to init dir (required for post-inst enabling) + $(INSTALL_BIN) $(WIFIBOX_BASE_DIR)/script/wifibox_init $(1)/etc/init.d/wifibox + $(INSTALL_BIN) $(WIFIBOX_BASE_DIR)/script/dhcpcheck_init $(1)/etc/init.d/dhcpcheck $(INSTALL_BIN) $(WIFIBOX_BASE_DIR)/script/d3dapi $(1)/$(TGT_LUA_DIR_SUFFIX)/script $(INSTALL_BIN) $(WIFIBOX_BASE_DIR)/script/signin.sh $(1)/$(TGT_LUA_DIR_SUFFIX)/script diff --git a/post-install.sh b/post-install.sh index 6bf66ca..2ece974 100644 --- a/post-install.sh +++ b/post-install.sh @@ -74,6 +74,7 @@ echo "/root/sketches" >> /etc/sysupgrade.conf $IPKG_INSTROOT/etc/init.d/wifibox enable $IPKG_INSTROOT/etc/init.d/wifibox start +$IPKG_INSTROOT/etc/init.d/dhcpcheck enable if [ -z "$IPKG_INSTROOT" ]; then echo "Enabling wifi device..." diff --git a/src/script/dhcpcheck_init b/src/script/dhcpcheck_init new file mode 100755 index 0000000..11b05c5 --- /dev/null +++ b/src/script/dhcpcheck_init @@ -0,0 +1,16 @@ +#!/bin/sh /etc/rc.common + +# start after all other scripts +START=99 + +LOGGER="logger -t dhcpcheck -p 6" + +boot() { + logread | grep "192.168.10.249, lease time 12h" + if [ $? -ne 0 ]; then + $LOGGER "Applying workaround for dhcp/dnsmasq issue. See: https://github.com/Doodle3D/doodle3d-client/issues/66" + /etc/init.d/dnsmasq reload + else + $LOGGER "DHCP configuration is in order, not doing anything" + fi +} diff --git a/src/script/wifibox_init b/src/script/wifibox_init index 9499b85..81f9f81 100755 --- a/src/script/wifibox_init +++ b/src/script/wifibox_init @@ -3,7 +3,7 @@ # start after networking START=22 -LOGGER="logger -s -t autowifi -p 6" +LOGGER="logger -t autowifi -p 6" boot() { sleep 1 From 7da2b05af8565c570d0b3b28aab9334a370f382a Mon Sep 17 00:00:00 2001 From: Rick Companje Date: Wed, 4 Dec 2013 14:13:39 +0100 Subject: [PATCH 5/5] fixed SKETCH_FILE_EXTENSION bug (solves Sketch Load & Save problem) --- src/rest/api/api_sketch.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rest/api/api_sketch.lua b/src/rest/api/api_sketch.lua index 19725cc..b4ee73b 100644 --- a/src/rest/api/api_sketch.lua +++ b/src/rest/api/api_sketch.lua @@ -43,7 +43,7 @@ local function createSketchList() for item in lfs.dir(M.SKETCH_DIR) do if item ~= '.' and item ~= '..' then - local idx = item:match('^(%d+)\.sketch$') + local idx = item:match('^(%d+)\.'..SKETCH_FILE_EXTENSION..'$') if idx and idx:len() == NUMBER_PAD_WIDTH then table.insert(result, tonumber(idx)) end