fix: refactor how services are filtered
The previous method did not include the service type in the user-auth-service hook, which meant it was kinda guess/check as to whether a datastore was filtered correctly for the service in question. Additionally, we now handle newlines correctly, ensuring that when there _is_ filtering, we treat each datastore as a distinct one.
This commit is contained in:
@@ -48,17 +48,27 @@ auth_service_filter() {
|
|||||||
export SSH_USER=${SSH_USER:=$USER}
|
export SSH_USER=${SSH_USER:=$USER}
|
||||||
export SSH_NAME=${NAME:="default"}
|
export SSH_NAME=${NAME:="default"}
|
||||||
# the output of this trigger should be all the services a user has access to
|
# the output of this trigger should be all the services a user has access to
|
||||||
plugn trigger user-auth-service "$SSH_USER" "$SSH_NAME" "${SERVICES[@]}"
|
plugn trigger user-auth-service "$SSH_USER" "$SSH_NAME" "$PLUGIN_COMMAND_PREFIX" "${SERVICES[@]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
fn-services-list() {
|
fn-services-list() {
|
||||||
declare desc="prints a filtered list of all local apps"
|
declare desc="prints a filtered list of all local apps"
|
||||||
declare FILTER="$1"
|
declare FILTER="$1"
|
||||||
local detected_services filtered_services services
|
local services=()
|
||||||
|
|
||||||
|
pushd "$PLUGIN_DATA_ROOT" >/dev/null
|
||||||
|
for f in *; do
|
||||||
|
[[ -d $f ]] || continue
|
||||||
|
services+=("$f")
|
||||||
|
done
|
||||||
|
popd &>/dev/null || pushd "/tmp" >/dev/null
|
||||||
|
|
||||||
|
if [[ "${#services[@]}" -eq 0 ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
local detected_services=("$(ls "$PLUGIN_DATA_ROOT" 2>/dev/null)")
|
|
||||||
if [[ "$FILTER" == "false" ]]; then
|
if [[ "$FILTER" == "false" ]]; then
|
||||||
for service in "${detected_services[@]}"; do
|
for service in "${services[@]}"; do
|
||||||
if [[ -n "$service" ]]; then
|
if [[ -n "$service" ]]; then
|
||||||
echo "$service"
|
echo "$service"
|
||||||
fi
|
fi
|
||||||
@@ -66,8 +76,7 @@ fn-services-list() {
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
filtered_services="$(auth_service_filter "${detected_services[@]}" 2>/dev/null)"
|
for service in $(auth_service_filter "${services[@]}" 2>/dev/null); do
|
||||||
for service in "$filtered_services"; do
|
|
||||||
if [[ -n "$service" ]]; then
|
if [[ -n "$service" ]]; then
|
||||||
echo "$service"
|
echo "$service"
|
||||||
fi
|
fi
|
||||||
@@ -94,7 +103,7 @@ get_database_name() {
|
|||||||
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
||||||
|
|
||||||
if [[ ! -f "$SERVICE_ROOT/DATABASE_NAME" ]]; then
|
if [[ ! -f "$SERVICE_ROOT/DATABASE_NAME" ]]; then
|
||||||
echo "$SERVICE" > "$SERVICE_ROOT/DATABASE_NAME"
|
echo "$SERVICE" >"$SERVICE_ROOT/DATABASE_NAME"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat "$SERVICE_ROOT/DATABASE_NAME"
|
cat "$SERVICE_ROOT/DATABASE_NAME"
|
||||||
@@ -237,8 +246,7 @@ service_app_links() {
|
|||||||
declare APP="$1"
|
declare APP="$1"
|
||||||
local LINKED_APP SERVICE SERVICE_ROOT
|
local LINKED_APP SERVICE SERVICE_ROOT
|
||||||
|
|
||||||
pushd "$PLUGIN_DATA_ROOT" >/dev/null
|
for SERVICE in $(fn-services-list true); do
|
||||||
for SERVICE in $(fn-services-list); do
|
|
||||||
[[ -n "$SERVICE" ]] || continue
|
[[ -n "$SERVICE" ]] || continue
|
||||||
|
|
||||||
SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
||||||
@@ -309,7 +317,6 @@ service_commit_config() {
|
|||||||
local CONFIG_VARIABLE="${PLUGIN_VARIABLE}_CONFIG_OPTIONS"
|
local CONFIG_VARIABLE="${PLUGIN_VARIABLE}_CONFIG_OPTIONS"
|
||||||
local ENV_VARIABLE="${PLUGIN_VARIABLE}_CUSTOM_ENV"
|
local ENV_VARIABLE="${PLUGIN_VARIABLE}_CUSTOM_ENV"
|
||||||
|
|
||||||
|
|
||||||
custom_env="${!ENV_VARIABLE}"
|
custom_env="${!ENV_VARIABLE}"
|
||||||
[[ -n "$SERVICE_CUSTOM_ENV" ]] && custom_env="$SERVICE_CUSTOM_ENV"
|
[[ -n "$SERVICE_CUSTOM_ENV" ]] && custom_env="$SERVICE_CUSTOM_ENV"
|
||||||
if [[ -n $custom_env ]]; then
|
if [[ -n $custom_env ]]; then
|
||||||
@@ -637,7 +644,7 @@ service_links() {
|
|||||||
service_list() {
|
service_list() {
|
||||||
declare desc="list all services and their status"
|
declare desc="list all services and their status"
|
||||||
|
|
||||||
services=("$(fn-services-list true)")
|
mapfile -t services < <(fn-services-list true)
|
||||||
if [[ "${#services[@]}" -eq 0 ]] || [[ -z "$services" ]]; then
|
if [[ "${#services[@]}" -eq 0 ]] || [[ -z "$services" ]]; then
|
||||||
dokku_log_warn "There are no $PLUGIN_SERVICE services"
|
dokku_log_warn "There are no $PLUGIN_SERVICE services"
|
||||||
return
|
return
|
||||||
@@ -645,7 +652,7 @@ service_list() {
|
|||||||
|
|
||||||
dokku_log_info2_quiet "$PLUGIN_SERVICE services"
|
dokku_log_info2_quiet "$PLUGIN_SERVICE services"
|
||||||
for service in "${services[@]}"; do
|
for service in "${services[@]}"; do
|
||||||
echo "$service"
|
echo "${service}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -981,5 +988,5 @@ write_database_name() {
|
|||||||
|
|
||||||
# some datastores do not like special characters in database names
|
# some datastores do not like special characters in database names
|
||||||
# so we need to normalize them out
|
# so we need to normalize them out
|
||||||
echo "$SERVICE" | tr .- _ > "$SERVICE_ROOT/DATABASE_NAME"
|
echo "$SERVICE" | tr .- _ >"$SERVICE_ROOT/DATABASE_NAME"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user