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
 | |
| 
 |