mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-11-02 19:37:51 +00:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			v1.0.4-rc2
			...
			v1.0.4-rc4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					f273ec572e | ||
| 
						 | 
					5fd49f6b64 | 
							
								
								
									
										4
									
								
								feeds/wlan-ap/opensync/files/bin/wlan_ap_factory_reset.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								feeds/wlan-ap/opensync/files/bin/wlan_ap_factory_reset.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
tar czf /sysupgrade.tgz /usr/opensync/certs/
 | 
			
		||||
jffs2reset -r -y -k
 | 
			
		||||
@@ -17,9 +17,10 @@ if [ -z "$1" ]; then
 | 
			
		||||
      exit 1
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # TODO: this command should be retried if it fails
 | 
			
		||||
  digicert_device_id=`cat ${AP_DEVICE_ID_FILE}`
 | 
			
		||||
  device_data=`curl -s \
 | 
			
		||||
    --retry 5 \
 | 
			
		||||
    --show-error \
 | 
			
		||||
    --key "${AP_PRIVATE_KEY_FILE}" \
 | 
			
		||||
    --cert "${AP_CERTIFICATE_FILE}" \
 | 
			
		||||
    "https://${DIGICERT_API_URI}/iot/api/v2/device/${digicert_device_id}"`
 | 
			
		||||
@@ -29,7 +30,7 @@ if [ -z "$1" ]; then
 | 
			
		||||
    echo "No redirector found for this device"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  controller_port=`echo ${controller_url} | cut -d ":" -f2)`
 | 
			
		||||
  controller_port=`echo ${controller_url} | cut -s -d ":" -f2)`
 | 
			
		||||
  if [ -z "$controller_port" ]; then
 | 
			
		||||
    redirector_addr="ssl:${controller_url}:6643"
 | 
			
		||||
  else
 | 
			
		||||
@@ -39,6 +40,7 @@ else
 | 
			
		||||
  redirector_addr=$1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo "${redirector_addr}" > /usr/opensync/certs/redirector.txt
 | 
			
		||||
uci set system.tip.redirector="${redirector_addr}"
 | 
			
		||||
uci set system.tip.deployed=0
 | 
			
		||||
uci commit system
 | 
			
		||||
 
 | 
			
		||||
@@ -39,12 +39,18 @@ start_service() {
 | 
			
		||||
    cp ${CERTS_SRC_PATH}/* ${CERTS_DEST_PATH}/
 | 
			
		||||
    echo "Checking Redirector"
 | 
			
		||||
    redirector=$(uci get system.tip.redirector)
 | 
			
		||||
    if [ -z "$redirector" ]; then
 | 
			
		||||
        [[ -f /usr/opensync/certs/redirector.txt ]] && redirector=$(cat /usr/opensync/certs/redirector.txt | tr -d '\r\n')
 | 
			
		||||
        if [ -z "$redirector" ]; then
 | 
			
		||||
            logger -t opensync "Contacting DigiCert for redirector address"
 | 
			
		||||
            wlan_ap_redirector.sh
 | 
			
		||||
        else
 | 
			
		||||
        logger -t opensync "Redirector address is ${redirector}"
 | 
			
		||||
            logger -t opensync "Restoring redirector ${redirector} after factory reset"
 | 
			
		||||
            wlan_ap_redirector.sh ${redirector}
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
    [[ -f /usr/opensync/certs/redirector.txt ]] || echo "${redirector}" > /usr/opensync/certs/redirector.txt
 | 
			
		||||
 
 | 
			
		||||
    echo "Starting OpenSync"
 | 
			
		||||
    procd_set_param command ${PROG}
 | 
			
		||||
    procd_close_instance
 | 
			
		||||
 
 | 
			
		||||
@@ -291,7 +291,7 @@ static void cb_osp_start_factory_reboot(EV_P_ ev_timer *w, int events)
 | 
			
		||||
	if (!strcmp(upg_url, "reboot"))
 | 
			
		||||
		system("reboot");
 | 
			
		||||
	else
 | 
			
		||||
		system("jffs2reset -y -r");
 | 
			
		||||
		system("wlan_ap_factory_reset.sh");
 | 
			
		||||
 | 
			
		||||
	upg_running = false;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,81 @@
 | 
			
		||||
From 1f9978564420818d4ce4bdbb08fce2eca7c13d8e Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Rick Sommerville <rick.sommerville@netexperience.com>
 | 
			
		||||
Date: Sun, 23 May 2021 14:36:03 -0400
 | 
			
		||||
Subject: [PATCH] Preserve certificates and redirector over factory-reset
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 package/base-files/files/etc/rc.button/reset  |  2 +-
 | 
			
		||||
 .../patches/001-jffs2reset-keep-option        | 48 +++++++++++++++++++
 | 
			
		||||
 2 files changed, 49 insertions(+), 1 deletion(-)
 | 
			
		||||
 create mode 100644 package/system/fstools/patches/001-jffs2reset-keep-option
 | 
			
		||||
 | 
			
		||||
diff --git a/package/base-files/files/etc/rc.button/reset b/package/base-files/files/etc/rc.button/reset
 | 
			
		||||
index 2403122ad2..56c0548ec9 100755
 | 
			
		||||
--- a/package/base-files/files/etc/rc.button/reset
 | 
			
		||||
+++ b/package/base-files/files/etc/rc.button/reset
 | 
			
		||||
@@ -23,7 +23,7 @@ released)
 | 
			
		||||
 	elif [ "$SEEN" -ge 5 -a -n "$OVERLAY" ]
 | 
			
		||||
 	then
 | 
			
		||||
 		echo "FACTORY RESET" > /dev/console
 | 
			
		||||
-		jffs2reset -y && reboot &
 | 
			
		||||
+		wlan_ap_factory_reset.sh
 | 
			
		||||
 	fi
 | 
			
		||||
 ;;
 | 
			
		||||
 esac
 | 
			
		||||
diff --git a/package/system/fstools/patches/001-jffs2reset-keep-option b/package/system/fstools/patches/001-jffs2reset-keep-option
 | 
			
		||||
new file mode 100644
 | 
			
		||||
index 0000000000..50209ea276
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/package/system/fstools/patches/001-jffs2reset-keep-option
 | 
			
		||||
@@ -0,0 +1,48 @@
 | 
			
		||||
+--- a/jffs2reset.c
 | 
			
		||||
++++ b/jffs2reset.c
 | 
			
		||||
+@@ -40,7 +40,7 @@ ask_user(void)
 | 
			
		||||
+ 	return 0;
 | 
			
		||||
+ }
 | 
			
		||||
+ 
 | 
			
		||||
+-static int jffs2_reset(struct volume *v, int reset)
 | 
			
		||||
++static int jffs2_reset(struct volume *v, int reset, int keep)
 | 
			
		||||
+ {
 | 
			
		||||
+ 	char *mp;
 | 
			
		||||
+ 
 | 
			
		||||
+@@ -48,7 +48,7 @@ static int jffs2_reset(struct volume *v,
 | 
			
		||||
+ 	if (mp) {
 | 
			
		||||
+ 		ULOG_INFO("%s is mounted as %s, only erasing files\n", v->blk, mp);
 | 
			
		||||
+ 		fs_state_set("/overlay", FS_STATE_PENDING);
 | 
			
		||||
+-		overlay_delete(mp, false);
 | 
			
		||||
++		overlay_delete(mp, keep);
 | 
			
		||||
+ 		mount(mp, "/", NULL, MS_REMOUNT, 0);
 | 
			
		||||
+ 	} else {
 | 
			
		||||
+ 		ULOG_INFO("%s is not mounted\n", v->blk);
 | 
			
		||||
+@@ -93,8 +93,8 @@ static int jffs2_mark(struct volume *v)
 | 
			
		||||
+ int main(int argc, char **argv)
 | 
			
		||||
+ {
 | 
			
		||||
+ 	struct volume *v;
 | 
			
		||||
+-	int ch, yes = 0, reset = 0;
 | 
			
		||||
+-	while ((ch = getopt(argc, argv, "yr")) != -1) {
 | 
			
		||||
++	int ch, yes = 0, reset = 0, keep = 0;
 | 
			
		||||
++	while ((ch = getopt(argc, argv, "yrk")) != -1) {
 | 
			
		||||
+ 		switch(ch) {
 | 
			
		||||
+ 		case 'y':
 | 
			
		||||
+ 			yes = 1;
 | 
			
		||||
+@@ -102,6 +102,9 @@ int main(int argc, char **argv)
 | 
			
		||||
+ 		case 'r':
 | 
			
		||||
+ 			reset = 1;
 | 
			
		||||
+ 			break;
 | 
			
		||||
++                case 'k':
 | 
			
		||||
++                        keep = 1;
 | 
			
		||||
++                        break;
 | 
			
		||||
+ 		}
 | 
			
		||||
+ 
 | 
			
		||||
+ 	}
 | 
			
		||||
+@@ -128,5 +131,5 @@ int main(int argc, char **argv)
 | 
			
		||||
+ 	volume_init(v);
 | 
			
		||||
+ 	if (!strcmp(*argv, "jffs2mark"))
 | 
			
		||||
+ 		return jffs2_mark(v);
 | 
			
		||||
+-	return jffs2_reset(v, reset);
 | 
			
		||||
++	return jffs2_reset(v, reset, keep);
 | 
			
		||||
+ }
 | 
			
		||||
-- 
 | 
			
		||||
2.17.1
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user