mirror of
https://github.com/casjaysdevdocker/opengist
synced 2026-08-14 14:01:17 -04:00
🐛 Fix opengist external-url never being substituted 🐛
Found while build-testing the freshly regenerated image in a temp data/config dir: opengist served REPLACE_HOSTNAME literally in every generated URL, and http.git-enabled routes redirected to bogus paths, because __update_conf_files() was patching a config file ($ETC_DIR/opengist.yaml) that doesn't exist -- the shipped config is named config.yaml. Also normalized the substituted value: opengist's external-url must be a full URL (scheme+host), not a bare hostname, or it breaks absolute-URL/redirect generation; ssh.external-domain must stay a bare domain, so it now gets its own REPLACE_SSH_HOSTNAME token instead of reusing the schemed value. Verified via: docker build, then a container run against a scratch temp dir with data/config volumes -- health check reports healthy, config.yaml shows the correct external-url/ssh.external-domain, and /-/all, /-/login, /-/register all return 200 with real opengist HTML. - rootfs/usr/local/etc/docker/init.d/00-opengist.sh: __update_conf_files now targets $ETC_DIR/config.yaml (was opengist.yaml, a nonexistent file), prefixes sysname with http:// when no scheme is present for external-url, and replaces ssh.external-domain via a separate REPLACE_SSH_HOSTNAME token using the unschemed hostname - rootfs/tmp/etc/opengist/config.yaml: ssh.external-domain placeholder changed from REPLACE_HOSTNAME to REPLACE_SSH_HOSTNAME
This commit is contained in:
@@ -47,7 +47,7 @@ ssh.host: 0.0.0.0
|
||||
ssh.port: 7823
|
||||
|
||||
# Public domain for the Git SSH connection, if it has to be different from the HTTP one.
|
||||
ssh.external-domain: REPLACE_HOSTNAME
|
||||
ssh.external-domain: REPLACE_SSH_HOSTNAME
|
||||
|
||||
# Path or alias to ssh-keygen executable. Default: ssh-keygen
|
||||
ssh.keygen-executable: ssh-keygen
|
||||
|
||||
@@ -316,6 +316,14 @@ __update_conf_files() {
|
||||
local exitCode=0
|
||||
# set hostname
|
||||
local sysname="${SERVER_NAME:-${FULL_DOMAIN_NAME:-$HOSTNAME}}"
|
||||
# opengist's external-url must be a full URL (scheme + host); a bare hostname breaks
|
||||
# absolute-URL generation (e.g. redirect Location headers). ssh.external-domain must
|
||||
# stay a bare domain, so it gets its own token instead of reusing the schemed value.
|
||||
local ssh_sysname="$sysname"
|
||||
case "$sysname" in
|
||||
*://*) ;;
|
||||
*) sysname="http://$sysname" ;;
|
||||
esac
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# delete files
|
||||
#__rm ""
|
||||
@@ -325,9 +333,10 @@ __update_conf_files() {
|
||||
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# replace variables
|
||||
__replace "REPLACE_HOSTNAME" "$sysname" "$ETC_DIR/opengist.yaml"
|
||||
__replace "REPLACE_DATA_DIR" "$DATA_DIR" "$ETC_DIR/opengist.yaml"
|
||||
__replace "REPLACE_SERVER_PORT" "$SERVICE_PORT" "$ETC_DIR/opengist.yaml"
|
||||
__replace "REPLACE_HOSTNAME" "$sysname" "$ETC_DIR/config.yaml"
|
||||
__replace "REPLACE_SSH_HOSTNAME" "$ssh_sysname" "$ETC_DIR/config.yaml"
|
||||
__replace "REPLACE_DATA_DIR" "$DATA_DIR" "$ETC_DIR/config.yaml"
|
||||
__replace "REPLACE_SERVER_PORT" "$SERVICE_PORT" "$ETC_DIR/config.yaml"
|
||||
# replace variables recursively
|
||||
# __find_replace "" "" "$CONF_DIR"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user