blob: a48941a7fad44355371dc875532c7b93ee595377 (
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
DESCRIPTION = "Provides default system config files and /var/config fs"
SECTION = "base"
LICENSE = "MIT"
RDEPENDS_${PN} += "bash"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PACKAGE_ARCH = "all"
PR = "r9"
PACKAGES =+ "${PN}-mths ${PN}-wifi-bt-ap"
inherit update-rc.d
inherit allarch
INITSCRIPT_NAME = "config"
INITSCRIPT_PARAMS = "start 31 S ."
FILESEXTRAPATHS_prepend := "${THISDIR}/config:"
FILESEXTRAPATHS_prepend_${PN} := "${THISDIR}/mths_config:"
SRC_URI = "\
file://network \
file://ppp \
file://config.init \
file://config-mths \
file://config-wifi-bt-ap \
file://chat_wrapper \
file://chat_wrapper.default \
file://99_radio \
"
RDEPENDS_${PN}-mths += "${PN}"
RDEPENDS_${PN}-wifi-bt-ap += " bluez5 bluez5-pand hostap-daemon dnsmasq rs9113-noarch "
CONFFILES_${PN} += "${sysconfdir}/defaults.tar.gz"
CONFIGFILES = "network/interfaces ppp"
CONFIGFILES_MTHS = "config-mths"
fakeroot do_install () {
cd ${WORKDIR}
# default config files
rm -f defaults.tar.gz
chown root:root -R ${CONFIGFILES}
tar czf defaults.tar.gz ${CONFIGFILES}
install -d ${D}${sysconfdir}
install -m 0644 ${WORKDIR}/defaults.tar.gz ${D}${sysconfdir}/defaults.tar.gz
# save root password for resetting to defaults
echo -n '${ROOT_PASSWORD_HASH}' > ${D}${sysconfdir}/default_pass
chmod 400 ${D}${sysconfdir}/default_pass
# init script
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/config.init ${D}${sysconfdir}/init.d/config
# mths adjustments
tar -C ${CONFIGFILES_MTHS} -czf defaults-mths.tar.gz .
install -m 0644 ${WORKDIR}/defaults-mths.tar.gz ${D}${sysconfdir}/defaults-mths.tar.gz
install -d ${D}${sysconfdir}/default
install -d ${D}${sysconfdir}/default/volatiles
install -d ${D}${libexecdir}/ppp
install -m 0755 ${WORKDIR}/chat_wrapper ${D}${libexecdir}/ppp/
install -m 0644 ${WORKDIR}/chat_wrapper.default ${D}${sysconfdir}/default/chat_wrapper
install -m 0644 ${WORKDIR}/99_radio ${D}${sysconfdir}/default/volatiles
install -d ${D}/usr/share
cp -a ${WORKDIR}/config-wifi-bt-ap/* ${D}/
# README does not usually go on an embedded device.
rm ${D}/README
echo 'List out files'
find ${D}/usr/share/config-wifi-bt-ap -type f
find ${D}/usr/share/config-wifi-bt-ap -type f | xargs chmod 0644
find ${D}/usr/share/config-wifi-bt-ap | xargs chown root:root
find ${D}/usr/share -type d | xargs chmod 0755
}
FILES_${PN} = "${sysconfdir}/defaults.tar.gz ${sysconfdir}/default_pass"
FILES_${PN} += "${sysconfdir}/init.d/config ${sysconfdir}/default ${libexecdir}/ppp/chat_wrapper"
FILES_${PN} += "${sysconfdir}/default/volatiles"
FILES_${PN}-mths = "${sysconfdir}/defaults-mths.tar.gz"
FILES_${PN}-wifi-bt-ap = "/usr/share/config-wifi-bt-ap"
# Create the hotspot version of defaults.tar.gz
pkg_postinst_${PN}-mths() {
X=$D/tmp/mths
mkdir -p $X
export X
(
set -x
if tar -tf $D${sysconfdir}/defaults.tar.gz | grep dnsmasq ; then
:
else
tb=$X/tarball # Tarball directory
mkdir $tb
tar -C $tb -xf $D/etc/defaults.tar.gz
tar -C $tb -xf $D/etc/defaults-mths.tar.gz
if ! grep '^auto wifi1' $tb/network/interfaces ; then
cat $tb/network/interfaces $tb/network/interfaces.mths >$tb/network/interfaces.new
mv $tb/network/interfaces $tb/network/interfaces.old
mv $tb/network/interfaces.new $tb/network/interfaces
fi
tar -C $tb -cf $D/etc/defaults.tar.gz .
fi
) >$X/postinsttrace.txt 2>&1
# Comment out the final line for a trace.
rm -rf $X
}
pkg_postinst_${PN}-wifi-bt-ap() {
US="$D/usr/share/config-wifi-bt-ap"
ND="$D/etc/network"
mkdir ${US}/old
cd /var/config
# Make a backup
tar -T ${US}/backup.list.txt -cf $D/var/config/var-config-wifi-bt-ap-bkup.tar.gz
# Add new interfaces
if ! grep "^auto wifi1$" ${ND}/interfaces ; then
echo >>${ND}/interfaces
cat $US/wifi1.append >>${ND}/interfaces
fi
if ! grep "^auto pan0$" ${ND}/interfaces ; then
echo >>${ND}/interfaces
cat $US/pan0.append >>${ND}/interfaces
fi
# Copy other files into place
cp -a ${US}/var/config /var
# Record files we created
md5sum $(cat ${US}/backup.list.txt) >$D/var/config/bkup-wifi-bt-ap.md5
# Restart daemons
/etc/init.d/dnsmasq stop
/etc/init.d/bt-pan stop
/etc/init.d/bluetooth stop
/etc/init.d/hostapd stop
/etc/init.d/rs9113 stop
/etc/init.d/rs9113 start
/etc/init.d/bluetooth start
/etc/init.d/hostapd start
/etc/init.d/bt-pan start
/etc/init.d/dnsmasq start
}
pkg_prerm_${PN}-wifi-bt-ap() {
cd /var/config
if md5sum -c $D/var/config/bkup-wifi-bt-ap.md5 ; then
if [ -f $D/var/config/var-config-wifi-bt-ap-bkup.tar.gz ] ; then
tar -xf $D/var/config/var-config-wifi-bt-ap-bkup.tar.gz
else
echo Cannot restore anything because backup is missing
fi
else
echo 'Cannot restore old configuration, because it has changed since the backup'
fi
}
|