From 32f01b1acf432a64a4680fd0642a0fd1bfb940de Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 21 Jul 2017 23:45:16 +0200 Subject: [PATCH] Fix nmbd (#146) * Update run.sh * Update run.sh * Update config.json * Update run.sh * Update smb.conf * Update config.json --- samba/config.json | 39 ++++++++++++++++++++------------------- samba/run.sh | 29 +++++++++++++++++++++-------- samba/smb.conf | 3 +++ 3 files changed, 44 insertions(+), 27 deletions(-) diff --git a/samba/config.json b/samba/config.json index 4a83b62..8b85d8b 100644 --- a/samba/config.json +++ b/samba/config.json @@ -1,41 +1,42 @@ { "name": "Samba share", - "version": "1.1", + "version": "2.0", "slug": "samba", "description": "Expose HassIO folders with Samba", "url": "https://home-assistant.io/addons/samba/", "startup": "services", "boot": "auto", - "ports": { - "445/tcp": 445, - "137/udp": 137, - "138/udp": 138, - "139/tcp": 139 - }, + "host_network": true, "map": ["config:rw", "ssl:rw", "addons:rw", "share:rw", "backup:rw"], "options": { "workgroup": "WORKGROUP", "name": "hassio", "guest": true, - "map_config": true, - "map_addons": true, - "map_ssl": false, - "map_share": true, - "map_backup": true, + "map": { + "config": true, + "addons": true, + "ssl": false, + "share": true, + "backup": true + }, "username": "", - "password": "" + "password": "", + "interface": "eth0" }, "schema": { "workgroup": "str", "name": "str", "guest": "bool", - "map_config": "bool", - "map_addons": "bool", - "map_ssl": "bool", - "map_share": "bool", - "map_backup": "bool", + "map": { + "config": "bool", + "addons": "bool", + "ssl": "bool", + "share": "bool", + "backup": "bool" + }, "username": "str", - "password": "str" + "password": "str", + "interface": "str" }, "image": "homeassistant/{arch}-addon-samba" } diff --git a/samba/run.sh b/samba/run.sh index 924952c..a5da3b9 100644 --- a/samba/run.sh +++ b/samba/run.sh @@ -8,12 +8,12 @@ NAME=$(jq --raw-output '.name' $CONFIG_PATH) GUEST=$(jq --raw-output '.guest' $CONFIG_PATH) USERNAME=$(jq --raw-output '.username // empty' $CONFIG_PATH) PASSWORD=$(jq --raw-output '.password // empty' $CONFIG_PATH) -MAP_CONFIG=$(jq --raw-output '.map_config' $CONFIG_PATH) -MAP_ADDONS=$(jq --raw-output '.map_addons' $CONFIG_PATH) -MAP_SSL=$(jq --raw-output '.map_ssl' $CONFIG_PATH) -MAP_SHARE=$(jq --raw-output '.map_share' $CONFIG_PATH) -MAP_BACKUP=$(jq --raw-output '.map_backup' $CONFIG_PATH) - +MAP_CONFIG=$(jq --raw-output '.map.config' $CONFIG_PATH) +MAP_ADDONS=$(jq --raw-output '.map.addons' $CONFIG_PATH) +MAP_SSL=$(jq --raw-output '.map.ssl' $CONFIG_PATH) +MAP_SHARE=$(jq --raw-output '.map.share' $CONFIG_PATH) +MAP_BACKUP=$(jq --raw-output '.map.backup' $CONFIG_PATH) +INTERFACE=$(jq --raw-output '.interface // empty' $CONFIG_PATH) function write_config() { echo " @@ -34,6 +34,7 @@ function write_config() { sed -i "s/%%WORKGROUP%%/$WORKGROUP/g" /etc/smb.conf sed -i "s/%%NAME%%/$NAME/g" /etc/smb.conf +sed -i "s/%%INTERFACE%%/$INTERFACE/g" /etc/smb.conf ## # Write shares to config @@ -71,5 +72,17 @@ else echo -e "$PASSWORD\n$PASSWORD" | smbpasswd -a -s -c /etc/smb.conf "$USERNAME" fi -nmbd -s /etc/smb.conf -exec smbd -F -S -s /etc/smb.conf < /dev/null +nmbd -F -S -s /etc/smb.conf & +NMBD_PID=$! +smbd -F -S -s /etc/smb.conf & +SMBD_PID=$! + +# Register stop +function stop_samba() { + kill -15 "$NMBD_PID" + kill -15 "$SMBD_PID" + wait "$SMBD_PID" "$NMBD_PID" +} +trap "stop_samba" SIGTERM SIGHUP + +wait "$SMBD_PID" "$NMBD_PID" diff --git a/samba/smb.conf b/samba/smb.conf index 019a731..b2e052b 100644 --- a/samba/smb.conf +++ b/samba/smb.conf @@ -8,6 +8,9 @@ disable spoolss = yes log level = 2 + + bind interfaces only = yes + interfaces = %%INTERFACE%% #guest account = root #map to guest = Bad Password