Add HASS configurator to core add-ons (#180)

* Initial commit for HASS configurator

* Requested changes

* Update Dockerfile

* update mechanics like other core add-ons

* simplify

* Update config.json

* Update config.json

* Update Dockerfile

* Delete configurator.py

* Create run.sh

* Create map.py

* Update and rename hass-configurator/config.json to configurator/config.json

* Rename hass-configurator/Dockerfile to configurator/Dockerfile

* Update and rename hass-configurator/map.py to configurator/map.py

* Rename hass-configurator/run.sh to configurator/run.sh

* Update map.py

* add image for build

* Update Dockerfile
This commit is contained in:
Daniel Perna
2017-09-26 11:54:31 +02:00
committed by Pascal Vizeli
parent d93eec0e66
commit 4e01f98a5b
4 changed files with 90 additions and 0 deletions

19
configurator/Dockerfile Normal file
View File

@@ -0,0 +1,19 @@
ARG BUILD_FROM
FROM $BUILD_FROM
# Add env
ENV LANG C.UTF-8
# Setup base
ARG BUILD_VERSION
RUN apk add --no-cache python3 git curl \
&& pip3 install GitPython \
&& curl -s -o /configurator.py https://raw.githubusercontent.com/danielperna84/hass-configurator/$BUILD_VERSION/configurator.py \
&& sed -i "s/GIT = False/GIT = True/g" /configurator.py \
&& apk del curl
# Copy data
COPY map.py run.sh /
RUN chmod a+x /run.sh
CMD ["/run.sh"]

38
configurator/config.json Normal file
View File

@@ -0,0 +1,38 @@
{
"name": "Configurator",
"version": "0.2.0",
"slug": "configurator",
"description": "Browser-based configuration file editor for Home Assistant.",
"url": "https://home-assistant.io/addons/configurator",
"startup": "application",
"webui": "http://[HOST]:[PORT:3218]",
"boot": "auto",
"ports": {
"3218/tcp": 3218
},
"map": ["config:rw", "ssl"],
"options": {
"homeassistant_api": "http://homeassistant:8123/api",
"homeassistant_password": "",
"credentials": "admin:secret",
"certfile": "fullchain.pem",
"keyfile": "privkey.pem",
"ssl": false,
"allowed_networks": ["192.168.0.0/16"],
"banned_ips": ["8.8.8.8"],
"ignore_pattern": ["__pycache__"]
},
"schema": {
"homeassistant_api": "url",
"homeassistant_password": "str",
"credentials": "match(.*:.*)",
"certfile": "str",
"keyfile": "str",
"ssl": "bool",
"allowed_networks": ["str"],
"banned_ips": ["str"],
"ignore_pattern": ["str"]
},
"image": "homeassistant/{arch}-addon-configurator"
}

25
configurator/map.py Normal file
View File

@@ -0,0 +1,25 @@
"""Mapping hass.io options.json into configurator config."""
import json
from pathlib import Path
import sys
hassio_options = Path("/data/options.json")
# Read hass.io options
with hassio_options.open('r') as json_file:
options = json.loads(json_file.read())
configurator = {
'BASEPATH': "/config",
'HASS_API': options['homeassistant_api'],
'HASS_API_PASSWORD': options['homeassistant_password'],
'CREDENTIALS': options['credentials'],
'SSL_CERTIFICATE': options['certfile'] if options['ssl'] else None,
'SSL_KEY': options['keyfile'] if options['ssl'] else None,
'ALLOWED_NETWORKS': options['allowed_networks'],
'BANNED_IPS': options['banned_ips'],
'IGNORE_PATTERN': options['ignore_pattern'],
}
with Path(sys.argv[1]).open('w') as json_file:
json_file.write(json.dumps(configurator))

8
configurator/run.sh Normal file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -e
# Map hassio value into hass-configurator options
python3 /map.py /tmp/configurator.json
# Run configurator
exec python3 /configurator.py /tmp/configurator.json