summaryrefslogtreecommitdiff
path: root/recipes-core/multitech/config_2.3.bb
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
}