106 lines
2.2 KiB
Bash
Executable File
106 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Enable or disable SSH server.
|
|
#
|
|
|
|
. /opt/puzzlefw/lib/functions.sh
|
|
|
|
# Show current configuration.
|
|
show() {
|
|
|
|
start_ssh=0
|
|
if [ -f ${CONFIG_DIR}/start_ssh.conf ]; then
|
|
. ${CONFIG_DIR}/start_ssh.conf
|
|
fi
|
|
|
|
if [ "${start_ssh}" -eq 1 ]; then
|
|
echo "Current setting: start SSH on boot"
|
|
else
|
|
echo "Current setting: do not start SSH on boot"
|
|
fi
|
|
|
|
if [ -f ${CONFIG_DIR}/dropbear_ed25519_host_key ]; then
|
|
dropbearkey -y -f ${CONFIG_DIR}/dropbear_ed25519_host_key
|
|
fi
|
|
}
|
|
|
|
# Generate persistent SSH host key, if necessary.
|
|
gen_key() {
|
|
|
|
# Do nothing if host key already exists in config partition.
|
|
[ -f ${CONFIG_DIR}/dropbear_ed25519_host_key ] && return
|
|
|
|
# If no host key exists, generate it.
|
|
if [ ! -f /etc/dropbear/dropbear_ed25519_host_key ]; then
|
|
|
|
echo "Generating SSH host key ..."
|
|
|
|
# If /etc/dropbear is a symlink, delete it.
|
|
[ -L /etc/dropbear ] && rm /etc/dropbear
|
|
|
|
# Create directory /etc/dropbear if it does not exist.
|
|
mkdir -p /etc/dropbear
|
|
|
|
# Generate host key.
|
|
dropbearkey -t ed25519 -f /etc/dropbear/dropbear_ed25519_host_key
|
|
fi
|
|
|
|
echo "Writing SSH host key to config partition ..."
|
|
|
|
cp -a /etc/dropbear/dropbear_ed25519_host_key ${CONFIG_DIR}/dropbear_ed25519_host_key.new
|
|
sync_config dropbear_ed25519_host_key || exit 1
|
|
}
|
|
|
|
# Enable starting SSH server during boot.
|
|
enable() {
|
|
|
|
lock_config || exit 1
|
|
|
|
gen_key
|
|
|
|
echo "Enabling SSH server start on boot ..."
|
|
|
|
echo "start_ssh=1" > ${CONFIG_DIR}/start_ssh.conf.new
|
|
sync_config start_ssh.conf || exit 1
|
|
}
|
|
|
|
# Disable starting SSH server during boot.
|
|
disable() {
|
|
|
|
lock_config || exit 1
|
|
|
|
echo "Disabling SSH server start on boot ..."
|
|
|
|
echo "start_ssh=0" > ${CONFIG_DIR}/start_ssh.conf.new
|
|
sync_config start_ssh.conf || exit 1
|
|
}
|
|
|
|
case "$1" in
|
|
show)
|
|
show
|
|
;;
|
|
enable)
|
|
enable
|
|
;;
|
|
disable)
|
|
disable
|
|
;;
|
|
*)
|
|
script="${0##*/}"
|
|
cat <<EOF
|
|
Usage: $script {enable|disable}"
|
|
|
|
$script show
|
|
Show current configuration.
|
|
|
|
$script enable
|
|
Enable starting SSH server during boot.
|
|
|
|
$script disable
|
|
Disable starting SSH server during boot.
|
|
|
|
EOF
|
|
exit 1
|
|
esac
|
|
|