mirror of
https://github.com/aljazceru/addons.git
synced 2025-12-18 13:44:20 +01:00
ssh: Add web terminal, alpine 3.11, improved token handling, bump 8.0 (#954)
* ssh: Add support for a web-based terminal via Ingress * ssh: Upgrade Alpine Linux to 3.11 * ssh: Improve Hass.io API token handling * ssh: Bump to 8.0, updated changelog * ssh: Fix Shellcheck warning * ssh: Use default Ingress port * ssh: Persist .ssh folder * ssh: Add some helper symlinks to use folder * ssh: Make sure web terminal starts in home folder * ssh: Update changelog to reflect latest changes
This commit is contained in:
committed by
Pascal Vizeli
parent
756cffa711
commit
f8ee1aed33
@@ -3,6 +3,8 @@ set -e
|
||||
|
||||
KEYS_PATH=/data/host_keys
|
||||
|
||||
WAIT_PIDS=()
|
||||
|
||||
bashio::log.info "Initializing add-on for use..."
|
||||
if bashio::config.has_value 'authorized_keys'; then
|
||||
bashio::log.info "Setup authorized_keys"
|
||||
@@ -47,16 +49,57 @@ touch /data/.bash_history
|
||||
chmod 600 /data/.bash_history
|
||||
ln -s -f /data/.bash_history /root/.bash_history
|
||||
|
||||
# Persist .bash_profile by redirecting .bash_profile to /data
|
||||
# Make Hass.io TOKEN available on the CLI
|
||||
echo "export HASSIO_TOKEN=${HASSIO_TOKEN}" >> /etc/profile.d/hassio.sh
|
||||
|
||||
# Remove old HASSIO_TOKEN from bash profile (if exists)
|
||||
if bashio::fs.file_exists /data/.bash_profile; then
|
||||
sed -i "s/export HASSIO_TOKEN=.*/export HASSIO_TOKEN=${HASSIO_TOKEN}/" /data/.bash_profile
|
||||
else
|
||||
echo "export HASSIO_TOKEN=${HASSIO_TOKEN}" > /data/.bash_profile
|
||||
sed -i "/export HASSIO_TOKEN=.*/d" /data/.bash_profile
|
||||
fi
|
||||
|
||||
# Persist .bash_profile by redirecting .bash_profile to /data
|
||||
chmod 600 /data/.bash_profile
|
||||
ln -s -f /data/.bash_profile /root/.bash_profile
|
||||
|
||||
# Start server
|
||||
# Links some common directories to the user's home folder for convenience
|
||||
DIRECTORIES=(addons backup config share ssl)
|
||||
for dir in "${DIRECTORIES[@]}"; do
|
||||
ln -s "/${dir}" "${HOME}/${dir}" \
|
||||
|| bashio::log.warning "Failed linking common directory: ${dir}"
|
||||
done
|
||||
|
||||
# Sets up the users .ssh folder to be persistent
|
||||
if ! bashio::fs.directory_exists /data/.ssh; then
|
||||
mkdir -p /data/.ssh \
|
||||
|| bashio::exit.nok 'Failed to create a persistent .ssh folder'
|
||||
|
||||
chmod 700 /data/.ssh \
|
||||
|| bashio::exit.nok \
|
||||
'Failed setting permissions on persistent .ssh folder'
|
||||
fi
|
||||
ln -s /data/.ssh /root/.ssh
|
||||
|
||||
# Register stop
|
||||
function stop_addon() {
|
||||
bashio::log.debug "Kill Processes..."
|
||||
kill -15 "${WAIT_PIDS[@]}"
|
||||
|
||||
wait "${WAIT_PIDS[@]}"
|
||||
bashio::log.debug "Done."
|
||||
}
|
||||
trap "stop_addon" SIGTERM SIGHUP
|
||||
|
||||
# Start SSH server
|
||||
bashio::log.info "Starting SSH daemon..."
|
||||
exec /usr/sbin/sshd -D -e < /dev/null
|
||||
/usr/sbin/sshd -D -e < /dev/null &
|
||||
WAIT_PIDS+=($!)
|
||||
|
||||
# Start ttyd server
|
||||
bashio::log.info "Starting Web Terminal..."
|
||||
cd /root
|
||||
ttyd -p 8099 tmux -u new -A -s hassio bash -l &
|
||||
WAIT_PIDS+=($!)
|
||||
|
||||
# Wait until all is done
|
||||
bashio::log.info "SSH add-on is set up and running!"
|
||||
wait "${WAIT_PIDS[@]}"
|
||||
Reference in New Issue
Block a user