Skip to content

Commit 0e40867

Browse files
committed
nc-encrypt.sh: Fix detection of running encryption
Signed-off-by: Tobias Knöppler <[email protected]>
1 parent 93f76ec commit 0e40867

File tree

3 files changed

+32
-12
lines changed

3 files changed

+32
-12
lines changed

.github/workflows/build-sd-images.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -282,20 +282,20 @@ jobs:
282282
echo -e "${LOG_DIAG} /etc/os-release:"
283283
"${CONTAINER_CMD[@]}" -q ncp /bin/bash -c 'cat /etc/os-release'
284284
echo -e "${LOG_DIAG} /usr/local/etc/ncp.cfg:"
285-
"${CONTAINER_CMD[@]}" -q ncp /bin/bash -c 'cat /usr/local/etc/ncp.cfg'
285+
"${CONTAINER_CMD[@]}" --pipe -q ncp /bin/bash -c 'cat /usr/local/etc/ncp.cfg'
286286
cat ./raspbian_root/usr/local/etc/ncp.cfg
287-
echo -e "${LOG_DIAG} /home/ncp-app-bridge confi g ncp"
288-
"${CONTAINER_CMD[@]}" -q ncp /bin/bash -c 'sudo -u www-data sudo /home/www/ncp-app-bridge.sh config ncp'
287+
echo -e "${LOG_DIAG} /home/ncp-app-bridge config ncp"
289288
sudo ls -l ./raspbian_root/home/www/ncp-app-bridge.sh
289+
"${CONTAINER_CMD[@]}" --pipe --uid=33 ncp /bin/bash -c 'sudo /home/www/ncp-app-bridge.sh config ncp'
290290
echo -e "{$LOG_DIAG} Geckodriver logs:"
291291
tail -n 20 geckodriver.log >&2 |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true
292292
echo -e "${LOG_CICD} ================"
293293
echo -e "${LOG_DIAG} ncp.log: "
294-
"${CONTAINER_CMD[@]}" -q ncp /bin/bash -c "tail -n20 /var/log/ncp.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true
294+
"${CONTAINER_CMD[@]}" --pipe ncp /bin/bash -c "tail -n20 /var/log/ncp.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true
295295
echo "================"
296296
echo "${LOG_DIAG} Nextcloud log: "
297-
"${CONTAINER_CMD[@]}" -q ncp /bin/bash -c 'ls -l /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true
298-
"${CONTAINER_CMD[@]}" -q ncp /bin/bash -c 'cat /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true
297+
"${CONTAINER_CMD[@]}" --pipe -q ncp /bin/bash -c 'ls -l /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true
298+
"${CONTAINER_CMD[@]}" --pipe -q ncp /bin/bash -c 'cat /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true
299299
sudo cat ./raspbian_root/opt/ncdata/data/nextcloud.log |& awk "{ print \"${LOG_DIAG} \" \$0 }"
300300
sleep 12
301301
continue

bin/ncp/SECURITY/nc-encrypt.sh

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ install()
2020

2121
configure()
2222
{
23-
(
23+
2424
set -e -o pipefail
2525
local datadir parentdir encdir tmpdir
2626
datadir="$(get_ncpcfg datadir)"
2727
[[ "${datadir?}" == "null" ]] && datadir=/var/www/nextcloud/data
2828
parentdir="$(dirname "${datadir}")"
2929
encdir="${parentdir?}/ncdata_enc"
30-
tmpdir="$(mktemp -u -p "${parentdir}" -t nc-data-crypt.XXXXXX))"
30+
tmpdir="$(mktemp -u -p "${parentdir}" -t nc-data-crypt.XXXXXX)"
3131

3232
[[ "${ACTIVE?}" != "yes" ]] && {
3333
if ! is_active; then
@@ -59,7 +59,7 @@ configure()
5959
# Just mount already encrypted data
6060
if [[ -f "${encdir?}"/gocryptfs.conf ]]; then
6161
systemctl reset-failed ncp-encrypt ||:
62-
systemd-run -u ncp-encrypt -E PASSWORD bash -c "gocryptfs -allow_other -q '${encdir}' '${datadir}' <<<\"\${PASSWORD}\" 2>&1 | sed /^Switch/d |& tee /var/log/ncp-encrypt.log"
62+
systemd-run -u ncp-encrypt -E PASSWORD bash -c "gocryptfs -fg -allow_other -q '${encdir}' '${datadir}' <<<\"\${PASSWORD}\" 2>&1 | sed /^Switch/d |& tee /var/log/ncp-encrypt.log"
6363

6464
# switch to the regular virtual hosts after we decrypt, so we can access NC and ncp-web
6565
a2ensite ncp 001-nextcloud
@@ -72,13 +72,33 @@ configure()
7272
mkdir -p "${encdir?}"
7373
echo "${PASSWORD?}" | gocryptfs -init -q "${encdir}"
7474
save_maintenance_mode
75+
cleanup() {
76+
umount "${datadir}" ||:
77+
[[ -f "${tmpdir}" ]] && {
78+
rm -rf "${datadir?}" ||:
79+
mv "${tmpdir}" "${datadir}"
80+
81+
chown -R www-data:www-data "${datadir}"
82+
}
83+
}
84+
85+
trap cleanup 1
7586
trap restore_maintenance_mode EXIT
7687

7788
mv "${datadir?}" "${tmpdir?}"
7889

7990
mkdir "${datadir}"
8091
systemctl reset-failed ncp-encrypt ||:
81-
systemd-run -u ncp-encrypt -E PASSWORD bash -c "gocryptfs -allow_other -q '${encdir}' '${datadir}' <<<\"\${PASSWORD}\" 2>&1 | sed /^Switch/d |& tee /var/log/ncp-encrypt.log"
92+
systemd-run -u ncp-encrypt -E PASSWORD bash -c "gocryptfs -fg -allow_other -q '${encdir}' '${datadir}' <<<\"\${PASSWORD}\" 2>&1 | sed /^Switch/d |& tee /var/log/ncp-encrypt.log"
93+
94+
maxtries=5
95+
while [[ "$(systemctl is-active ncp-encrypt)" != "active" ]] || ! mount | grep -1 "${datadir}"
96+
do
97+
echo "Wating for encryption process to start... (${maxtries})"
98+
sleep 3
99+
maxtries=$((maxtries - 1))
100+
[[ $maxtries -gt 0 ]] || return 1
101+
done
82102

83103
echo "Encrypting data..."
84104
mv "${tmpdir}"/* "${tmpdir}"/.[!.]* "${datadir}"
@@ -88,7 +108,7 @@ configure()
88108
set_ncpcfg datadir "${datadir}"
89109

90110
echo "Data is now encrypted"
91-
)
111+
92112
}
93113

94114
# License

ncp.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ EOF
128128

129129
cat > /home/www/ncp-app-bridge.sh <<'EOF'
130130
#!/bin/bash
131-
set -ex
131+
set -e
132132
grep -q '[\\&#;`|*?~<>^()[{}$&]' <<< "$*" && exit 1
133133
action="${1?}"
134134
[[ "$action" == "config" ]] && {

0 commit comments

Comments
 (0)