diff --git a/rootfs/usr/local/etc/docker/functions/entrypoint.sh b/rootfs/usr/local/etc/docker/functions/entrypoint.sh index 9dd6b3d..638e988 100644 --- a/rootfs/usr/local/etc/docker/functions/entrypoint.sh +++ b/rootfs/usr/local/etc/docker/functions/entrypoint.sh @@ -614,10 +614,10 @@ __set_user_group_id() { [ -n "$set_user" ] && [ "$set_user" != "root" ] || return if grep -shq "^$set_user:" "/etc/passwd" "/etc/group"; then if __check_for_guid "$set_gid"; then - groupmod -g "${set_gid}" $set_user 2>/dev/stderr | tee -p -a "/data/logs/init.txt" >/dev/null && chown -Rf ":$set_gid" + groupmod -g "${set_gid}" $set_user 2>/dev/stderr | tee -p -a "/data/logs/init.txt" >/dev/null fi if __check_for_uid "$set_uid"; then - usermod -u "${set_uid}" -g "${set_gid}" $set_user 2>/dev/stderr | tee -p -a "/data/logs/init.txt" >/dev/null && chown -Rf $set_uid:$set_gid + usermod -u "${set_uid}" -g "${set_gid}" $set_user 2>/dev/stderr | tee -p -a "/data/logs/init.txt" >/dev/null fi fi export SERVICE_UID="$set_uid" diff --git a/rootfs/usr/local/etc/docker/init.d/01-tor-bridge.sh b/rootfs/usr/local/etc/docker/init.d/01-tor-bridge.sh index 6a2c2a5..8d37f1c 100755 --- a/rootfs/usr/local/etc/docker/init.d/01-tor-bridge.sh +++ b/rootfs/usr/local/etc/docker/init.d/01-tor-bridge.sh @@ -285,8 +285,8 @@ SocksTimeout ${TOR_SOCKS_TIMEOUT:-10} ##### logging LogMessageDomains 1 -Log notice file $LOG_DIR/bridge.log -#Log debug file $LOG_DIR/bridge.debug +Log notice file $LOG_DIR/$SERVICE_NAME.log +#Log debug file $LOG_DIR/$SERVICE_NAME.debug ##### Bridge Settings BridgeRelay 1 diff --git a/rootfs/usr/local/etc/docker/init.d/02-tor-relay.sh b/rootfs/usr/local/etc/docker/init.d/02-tor-relay.sh index ed19003..7930b76 100755 --- a/rootfs/usr/local/etc/docker/init.d/02-tor-relay.sh +++ b/rootfs/usr/local/etc/docker/init.d/02-tor-relay.sh @@ -285,8 +285,8 @@ SocksTimeout ${TOR_SOCKS_TIMEOUT:-10} ##### logging LogMessageDomains 1 -Log notice file $LOG_DIR/relay.log -#Log debug file $LOG_DIR/relay.debug +Log notice file $LOG_DIR/$SERVICE_NAME.log +#Log debug file $LOG_DIR/$SERVICE_NAME.debug ##### Relay Settings ServerTransportPlugin obfs4 exec /usr/bin/lyrebird diff --git a/rootfs/usr/local/etc/docker/init.d/03-tor-server.sh b/rootfs/usr/local/etc/docker/init.d/03-tor-server.sh index c500f22..36043d2 100755 --- a/rootfs/usr/local/etc/docker/init.d/03-tor-server.sh +++ b/rootfs/usr/local/etc/docker/init.d/03-tor-server.sh @@ -168,7 +168,7 @@ user_pass="${TOR_USER_PASS_WORD:-}" # normal user password [ -f "/config/env/tor.sh" ] && . "/config/env/tor.sh" # Overwrite the variabes # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Additional predefined variables -TOR_HIDDEN_SERVICE_DIR="${TOR_HIDDEN_SERVICE_DIR:-$DATA_DIR/hidden_service}" +TOR_HIDDEN_SERVICE_DIR="${TOR_HIDDEN_SERVICE_DIR:-$DATA_DIR/hidden}" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Additional variables TOR_HIDDEN_SERVERS="${TOR_HIDDEN_SERVERS//,/ }" @@ -254,8 +254,9 @@ __update_conf_files() { # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # custom commands chmod 600 $RUN_DIR - chown -Rf ${SERVICE_USER:-$RUNAS_USER}:${SERVICE_GROUP:-$RUNAS_USER} $RUN_DIR mkdir -p "/run/tor/sites" && chmod 777 "/run/tor/sites" + chown -Rf ${SERVICE_USER:-$RUNAS_USER}:${SERVICE_GROUP:-$RUNAS_USER} $RUN_DIR + [ -d "$TOR_HIDDEN_SERVICE_DIR" ] || { mkdir -p "$TOR_HIDDEN_SERVICE_DIR" && chmod -f 700 "$TOR_HIDDEN_SERVICE_DIR" 2>/dev/null; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # replace variables @@ -292,7 +293,8 @@ SocksTimeout ${TOR_SOCKS_TIMEOUT:-10} ##### logging LogMessageDomains 1 -Log notice file $LOG_DIR/server.log +Log notice file $LOG_DIR/$SERVICE_NAME.log +#Log debug file $LOG_DIR/$SERVICE_NAME.debug ##### port mappings TransPort 0.0.0.0:9040 @@ -314,7 +316,7 @@ EOF mkdir -p "$CONF_DIR/conf.d" cat <>"$CONF_DIR/server.conf" #### dns forwarder -Log notice file $LOG_DIR/dns.log +Log notice file $LOG_DIR/tor-dns.log DNSPort 0.0.0.0:8053 DNSListenAddress 0.0.0.0,[::] AutomapHostsOnResolve 1 @@ -325,8 +327,15 @@ EOF if [ "$TOR_HIDDEN_ENABLED" = "yes" ]; then mkdir -p "$CONF_DIR/hidden.d" - mkdir -p "$TOR_HIDDEN_SERVICE_DIR" - chmod 700 "$TOR_HIDDEN_SERVICE_DIR" + mkdir -p "$TOR_HIDDEN_SERVICE_DIR/default" + chmod -f 700 "$TOR_HIDDEN_SERVICE_DIR/default" + for HiddenService in $CONF_DIR/hidden.d/*.conf; do + HiddenServiceDir="$(grep -si '^HiddenServiceDir ' "$HiddenService" | awk '{print $2}' 2>/dev/null)" + if [ -n "$HiddenServiceDir" ]; then + mkdir -p "$HiddenServiceDir" 2>/dev/null + chmod 700 "$HiddenServiceDir" 2>/dev/null + fi + done cat <>"$CONF_DIR/server.conf" #### hidden services HiddenServiceDir $TOR_HIDDEN_SERVICE_DIR/default diff --git a/rootfs/usr/local/etc/docker/init.d/zz-nginx.sh b/rootfs/usr/local/etc/docker/init.d/zz-nginx.sh index ae462b8..9155eb3 100755 --- a/rootfs/usr/local/etc/docker/init.d/zz-nginx.sh +++ b/rootfs/usr/local/etc/docker/init.d/zz-nginx.sh @@ -171,7 +171,7 @@ user_pass="${NGINX_USER_PASS_WORD:-}" # normal user password # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Additional variables - +TOR_HIDDEN_SERVICE_DIR="${TOR_HIDDEN_SERVICE_DIR:-$DATA_DIR/hidden}" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Specifiy custom directories to be created ADD_APPLICATION_FILES="" @@ -201,7 +201,7 @@ __run_precopy() { mkdir -p "$WWW_ROOT_DIR" if [ -d "/usr/share/httpd/default" ]; then cp -Rf "/usr/share/httpd/default/." "$WWW_ROOT_DIR/" - [ -f "$WWW_ROOT_DIR/hidden_service.html" ] && rm -Rf "$WWW_ROOT_DIR/hidden_service.html" + [ -f "$WWW_ROOT_DIR/hidden_services.html" ] && rm -Rf "$WWW_ROOT_DIR/hidden_services.html" else echo "Welcome" >"$WWW_ROOT_DIR/index.php" fi @@ -281,38 +281,44 @@ __update_conf_files() { # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # define actions while :; do + sleep 30 echo "waiting for tor to start" - [ -f "/tmp/init_tor_services" ] && sleep 30 || break + sites="$(ls -A /run/tor/sites 2>/dev/null | wc -l)" + if [ ! -f "/tmp/init_tor_services" ]; then break; fi done echo "The tor server seems to have started " - for site in "/run/tor/sites"/*; do - onion_site="$(basename -- $site)" - __onion_site_dir_is_empty "$onion_site" && NEW_SITE="yes" - [ -d "/data/htdocs/onions/$onion_site" ] || mkdir -p "/data/htdocs/onions/$onion_site" - if [ "$default_host" = "$onion_site" ]; then - if __onion_site_dir_is_empty "$onion_site"; then - cp -Rfa "$WWW_ROOT_DIR/." "/data/htdocs/onions/$onion_site/" - fi - else - if [ "$NEW_SITE" = "yes" ]; then - if [ -f "/usr/share/httpd/default/hidden_service.html" ]; then - cp -Rf "/usr/share/httpd/default/hidden_service.html" "/data/htdocs/onions/$onion_site/index.html" - else - echo '
HTML Document Root: /data/htdocs/onions/'$onion_site'

' >"/data/htdocs/onions/$onion_site/index.html" + if [ "$sites" -eq 0 ]; then + echo "No onion sites found in /run/tor/sites" >&2 + else + for site in "/run/tor/sites"/*; do + onion_site="$(basename -- $site)" + __onion_site_dir_is_empty "$onion_site" && NEW_SITE="yes" + [ -d "/data/htdocs/onions/$onion_site" ] || mkdir -p "/data/htdocs/onions/$onion_site" + if [ "$default_host" = "$onion_site" ]; then + if __onion_site_dir_is_empty "$onion_site"; then + cp -Rfa "$WWW_ROOT_DIR/." "/data/htdocs/onions/$onion_site/" + fi + else + if [ "$NEW_SITE" = "yes" ]; then + if [ -f "/usr/share/httpd/default/hidden_services.html" ]; then + cp -Rf "/usr/share/httpd/default/hidden_services.html" "/data/htdocs/onions/$onion_site/index.html" + else + echo '
HTML Document Root: /data/htdocs/onions/'$onion_site'

' >"/data/htdocs/onions/$onion_site/index.html" + fi fi fi - fi - if [ ! -f "/config/nginx/vhosts.d/$onion_site.onion.conf" ]; then - cp -Rf "/config/nginx/vhosts.d/template" "/config/nginx/vhosts.d/$onion_site.onion.conf" - sed -i 's|REPLACE_ONION_PORT|'$SERVICE_PORT'|g' "/config/nginx/vhosts.d/$onion_site.onion.conf" - sed -i 's|REPLACE_ONION_SITE|'$onion_site.onion'|g' "/config/nginx/vhosts.d/$onion_site.onion.conf" - sed -i 's|REPLACE_ONION_WWW_DIR|/data/htdocs/onions/'$onion_site'|g' "/config/nginx/vhosts.d/$onion_site.onion.conf" - sed -i 's|REPLACE_ONION_WWW_DIR|/data/htdocs/onions/'$onion_site'|g' "/data/htdocs/onions/$onion_site/index.html" - sed -i 's|REPLACE_DEFAULT_TOR_ADDRESS|'$onion_site'|g' "/data/htdocs/onions/$onion_site/index.html" - fi - unset NEW_SITE - echo "Created $onion_site.onion in /data/htdocs/onions/$onion_site" - done + if [ ! -f "/config/nginx/vhosts.d/$onion_site.onion.conf" ]; then + cp -Rf "/config/nginx/vhosts.d/template" "/config/nginx/vhosts.d/$onion_site.onion.conf" + sed -i 's|REPLACE_ONION_PORT|'$SERVICE_PORT'|g' "/config/nginx/vhosts.d/$onion_site.onion.conf" + sed -i 's|REPLACE_ONION_SITE|'$onion_site.onion'|g' "/config/nginx/vhosts.d/$onion_site.onion.conf" + sed -i 's|REPLACE_ONION_WWW_DIR|/data/htdocs/onions/'$onion_site'|g' "/config/nginx/vhosts.d/$onion_site.onion.conf" + sed -i 's|REPLACE_ONION_WWW_DIR|/data/htdocs/onions/'$onion_site'|g' "/data/htdocs/onions/$onion_site/index.html" + sed -i 's|REPLACE_DEFAULT_TOR_ADDRESS|'$onion_site'|g' "/data/htdocs/onions/$onion_site/index.html" + fi + unset NEW_SITE + echo "Created $onion_site.onion in /data/htdocs/onions/$onion_site" + done + fi # allow custom functions if builtin type -t __update_conf_files_local | grep -q 'function'; then __update_conf_files_local; fi # exit function diff --git a/rootfs/usr/share/httpd/default/hidden_service.html b/rootfs/usr/share/httpd/default/hidden_services.html similarity index 97% rename from rootfs/usr/share/httpd/default/hidden_service.html rename to rootfs/usr/share/httpd/default/hidden_services.html index a834212..d60e756 100644 --- a/rootfs/usr/share/httpd/default/hidden_service.html +++ b/rootfs/usr/share/httpd/default/hidden_services.html @@ -1,4 +1,4 @@ - +