summaryrefslogtreecommitdiff
path: root/recipes-core/multitech/config/config.init
blob: 874416c476e679878529b298c39917042dea75dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/bin/sh

CONFIG_MTDC=/dev/mtd6
CONFIG_MTDB=/dev/mtdblock6
CONFIG_DIR=/var/config

OEM_MTDC=/dev/mtd7
OEM_MTDB=/dev/mtdblock7
OEM_DIR=/var/oem

FILES="network/interfaces \
ppp/options \
ppp/pap-secrets \
ppp/chap-secrets \
ppp/peers \
"

mount_config() {
	echo "Mounting ${CONFIG_DIR}"
	mkdir -p ${CONFIG_DIR}
	mount ${CONFIG_DIR}

	# Prepare flash for JFFS2 if mount fails
	if [ $? -ne 0 ]; then
		echo "Creating ${CONFIG_DIR}"
		flash_erase -j ${CONFIG_MTDC} 0 0
		mount ${CONFIG_DIR}
	fi
}

mount_oem() {
	echo "Mounting ${OEM_DIR}"
	mkdir -p ${OEM_DIR}
	mount ${OEM_DIR}

	# Prepare flash for JFFS2 if mount fails
	if [ $? -ne 0 ]; then
		echo "Creating ${OEM_DIR}"
		flash_erase -j ${OEM_MTDC} 0 0
		mount ${OEM_DIR}
	fi
}

case $1 in
	start)
		# mount config if not already mounted
		if ! grep -q "^${CONFIG_MTDB} " /proc/mounts; then
			mount_config
		else
			echo "$CONFIG_DIR already mounted"
		fi

		# mount oem if specified in /etc/fstab and it isn't already mounted
		if grep -qE "^${OEM_MTDB}\s+${OEM_DIR}\s+" /etc/fstab; then
			if ! grep -q "^${OEM_MTDB} " /proc/mounts; then
				mount_oem
			else
				echo "$OEM_DIR already mounted"
			fi
		fi

		# Default all config files if requested
		cd ${CONFIG_DIR}
		if [ -f force_defaults ]; then
			echo "Extracting default config files"
			tar -xvf /etc/defaults.tar.gz

			if [ -f /etc/default_pass ]; then
				echo "Defaulting root password"
				PASSHASH=`cat /etc/default_pass`
				PASSFILE=/etc/shadow
				if [ ! -e /etc/shadow ]; then
					PASSFILE=/etc/passwd
				fi
				sed -i "s%^root:[^:]*:%root:${PASSHASH}:%" $PASSFILE
			fi

			rm -f force_defaults
		fi

		# Extract any missing files
		TARFILES=`tar -tf /etc/defaults.tar.gz`
		for file in $TARFILES; do
			if [ ! -e $file ]; then
				tar -xvf /etc/defaults.tar.gz $file
			fi
		done

		# Create links in /etc
		for file in $FILES; do
			if [ ! -L /etc/$file ]; then
				echo "Creating link to ${CONFIG_DIR}/$file"
				rm -rf /etc/$file
				ln -sf ${CONFIG_DIR}/$file /etc/$file
			fi
		done

	;;

	*)
		echo "Usage: $0 {start}"
		exit 2
	;;

esac