configurator: Add git SSH support (#592)

* configurator: Add git SSH support

Add "ssh_keys" option to the Configurator add-on to define SSH keys for use by git.

* Bump version to 3.5
This commit is contained in:
adamgreg
2019-09-16 10:53:06 +02:00
committed by Pascal Vizeli
parent 3944fc6a53
commit 5d201fed0c
5 changed files with 38 additions and 5 deletions

View File

@@ -1,5 +1,9 @@
# Changelog # Changelog
## 3.5
- Add support for SSH keys
## 3.4 ## 3.4
- Adds documentation to add-on repository - Adds documentation to add-on repository

View File

@@ -5,7 +5,7 @@ FROM $BUILD_FROM
ARG CONFIGURATOR_VERSION ARG CONFIGURATOR_VERSION
ARG HASSIO_AUTH_VERSION ARG HASSIO_AUTH_VERSION
RUN apk add --no-cache \ RUN apk add --no-cache \
git nginx nginx-mod-http-lua lua-resty-http \ git nginx nginx-mod-http-lua lua-resty-http openssh-client \
&& git clone --depth 1 -b ${HASSIO_AUTH_VERSION} \ && git clone --depth 1 -b ${HASSIO_AUTH_VERSION} \
"https://github.com/home-assistant/hassio-auth" \ "https://github.com/home-assistant/hassio-auth" \
&& cp -f hassio-auth/nginx-frontend/ha-auth.lua /etc/nginx/ \ && cp -f hassio-auth/nginx-frontend/ha-auth.lua /etc/nginx/ \

View File

@@ -57,7 +57,8 @@ Add-on configuration:
"enforce_basepath": false, "enforce_basepath": false,
"ignore_pattern": [ "ignore_pattern": [
"__pycache__" "__pycache__"
] ],
"ssh_keys": []
} }
``` ```
@@ -76,6 +77,10 @@ If set to `true`, access is limited to files within the `/config` directory.
This option allows you to hide files and folders from the file browser tree. This option allows you to hide files and folders from the file browser tree.
By default, it hides the `__pycache__` folders. By default, it hides the `__pycache__` folders.
### Option: `ssh_keys` (required)
A list of filenames containing SSH private keys. These can be used to allow for access to remote git repositories.
## Known issues and limitations ## Known issues and limitations
- This add-on is, by default, configured for use with Hass.io Ingress. If you - This add-on is, by default, configured for use with Hass.io Ingress. If you

View File

@@ -1,6 +1,6 @@
{ {
"name": "Configurator", "name": "Configurator",
"version": "3.4", "version": "3.5",
"slug": "configurator", "slug": "configurator",
"description": "Browser-based configuration file editor for Home Assistant", "description": "Browser-based configuration file editor for Home Assistant",
"url": "https://home-assistant.io/addons/configurator", "url": "https://home-assistant.io/addons/configurator",
@@ -33,14 +33,16 @@
"enforce_basepath": false, "enforce_basepath": false,
"ignore_pattern": [ "ignore_pattern": [
"__pycache__" "__pycache__"
] ],
"ssh_keys": []
}, },
"schema": { "schema": {
"dirsfirst": "bool", "dirsfirst": "bool",
"enforce_basepath": "bool", "enforce_basepath": "bool",
"ignore_pattern": [ "ignore_pattern": [
"str" "str"
] ],
"ssh_keys": ["str"]
}, },
"image": "homeassistant/{arch}-addon-configurator" "image": "homeassistant/{arch}-addon-configurator"
} }

View File

@@ -6,6 +6,28 @@ ENFORCE_BASEPATH=$(bashio::config 'enforce_basepath')
IGNORE_PATTERN="$(bashio::jq "/data/options.json" ".ignore_pattern")" IGNORE_PATTERN="$(bashio::jq "/data/options.json" ".ignore_pattern")"
WAIT_PIDS=() WAIT_PIDS=()
# If any SSH key files are defined in the configuration options, add them for use by git
if bashio::config.has_value "ssh_keys"; then
# Start the SSH agent
bashio::log.info "Starting SSH agent"
eval "$(ssh-agent -s)"
# Add the keys defined in the configuration options
while read -r filename; do
if bashio::fs.file_exists "$filename"; then
bashio::log.info "Adding SSH private key file \"$filename\""
ssh-add -q "$filename"
else
bashio::log.error "SSH key file \"$filename\" not found"
fi
done <<< "$(bashio::config 'ssh_keys')"
# Disable strict host key checking
mkdir -p ~/.ssh
echo "Host *
StrictHostKeyChecking no" > ~/.ssh/config
fi
# Setup and run Frontend # Setup and run Frontend
sed -i "s/%%PORT%%/8080/g" /etc/nginx/nginx-ingress.conf sed -i "s/%%PORT%%/8080/g" /etc/nginx/nginx-ingress.conf
sed -i "s/%%PORT_INGRESS%%/8099/g" /etc/nginx/nginx-ingress.conf sed -i "s/%%PORT_INGRESS%%/8099/g" /etc/nginx/nginx-ingress.conf