Merge pull request #5178 from dokku/fix-app-filtering

Fix app filtering for authenticated usage
This commit is contained in:
Jose Diaz-Gonzalez
2022-05-15 17:11:34 -04:00
committed by GitHub
16 changed files with 60 additions and 17 deletions

View File

@@ -74,6 +74,21 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
# TODO
```
### `app-list`
- Description: Lists all apps in available to the currently logged in user. Optionally disables filtering by user if the first argument is `false`.
- Invoked by:
- Arguments: `$FILTER`
- Example:
```shell
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
# TODO
```
### `app-json-process-deploy-parallelism`
- Description: Decides the parallelism to use when deploying a given process type. The default is 1 process entry at a type.

6
plugins/20_events/app-list Executable file
View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
[[ ! "$DOKKU_EVENTS" ]] || dokku_log_plugn_trigger_call "$(basename "$0")" "$@"

View File

@@ -9,7 +9,7 @@ migrate_checks_vars_0_5_0() {
local GLOBAL_SKIP_ALL_CHECKS=$(config_get --global DOKKU_SKIP_ALL_CHECKS || true)
local GLOBAL_SKIP_DEFAULT_CHECKS=$(config_get --global DOKKU_SKIP_DEFAULT_CHECKS || true)
for app in $(dokku_apps); do
for app in $(dokku_apps "false"); do
local APP_SKIP_ALL_CHECKS=$(config_get "$app" DOKKU_SKIP_ALL_CHECKS || true)
local APP_SKIP_DEFAULT_CHECKS=$(config_get "$app" DOKKU_SKIP_DEFAULT_CHECKS || true)
@@ -35,7 +35,7 @@ migrate_checks_vars_0_5_0() {
migrate_checks_vars_0_6_0() {
declare desc="migrates CHECKS config variables from 0.5.x to support fully-disabled zero-downtime checks"
for app in $(dokku_apps); do
for app in $(dokku_apps "false"); do
local APP_DOKKU_CHECKS_ENABLED=$(config_get "$app" DOKKU_CHECKS_ENABLED || true)
if [[ $APP_DOKKU_CHECKS_ENABLED ]]; then
dokku_log_info1 "Migrating zero downtime env variables to 0.6.x. The following variables will be migrated"

View File

@@ -245,6 +245,16 @@ func GetRunningImageTag(appName string, imageTag string) (string, error) {
// DokkuApps returns a list of all local apps
func DokkuApps() ([]string, error) {
apps, err := UnfilteredDokkuApps()
if err != nil {
return apps, err
}
return filterApps(apps)
}
// UnfilteredDokkuApps returns an unfiltered list of all local apps
func UnfilteredDokkuApps() ([]string, error) {
apps := []string{}
dokkuRoot := MustGetEnv("DOKKU_ROOT")
files, err := ioutil.ReadDir(dokkuRoot)
@@ -267,7 +277,7 @@ func DokkuApps() ([]string, error) {
return apps, fmt.Errorf("You haven't deployed any applications yet")
}
return filterApps(apps)
return apps, nil
}
// GetAppImageName returns image identifier for a given app, tag tuple. validate if tag is presented

View File

@@ -17,7 +17,8 @@ has_tty() {
dokku_apps() {
declare desc="prints list of all local apps"
local INSTALLED_APPS="$(plugn trigger app-list)"
declare FILTER="$1"
local INSTALLED_APPS="$(plugn trigger app-list "$FILTER")"
if [[ -z "$INSTALLED_APPS" ]]; then
dokku_log_fail "You haven't deployed any applications yet"
fi

View File

@@ -18,7 +18,12 @@ func main() {
var err error
switch trigger {
case "app-list":
err = common.TriggerAppList()
filtered := flag.Arg(0)
if filtered == "" {
filtered = "true"
}
filter := common.ToBool(filtered)
err = common.TriggerAppList(filter)
case "core-post-deploy":
appName := flag.Arg(0)
err = common.TriggerCorePostDeploy(appName)

View File

@@ -6,8 +6,14 @@ import (
)
// TriggerAppList outputs each app name to stdout on a newline
func TriggerAppList() error {
apps, _ := DokkuApps()
func TriggerAppList(filtered bool) error {
var apps []string
if filtered {
apps, _ = DokkuApps()
} else {
apps, _ = UnfilteredDokkuApps()
}
for _, app := range apps {
Log(app)
}
@@ -30,7 +36,7 @@ func TriggerInstall() error {
return fmt.Errorf("Unable to install the common plugin: %s", err.Error())
}
apps, err := DokkuApps()
apps, err := UnfilteredDokkuApps()
if err != nil {
return nil
}

View File

@@ -99,7 +99,7 @@ func deleteCrontab() error {
}
func writeCronEntries() error {
apps, _ := common.DokkuApps()
apps, _ := common.UnfilteredDokkuApps()
commands := []templateCommand{}
for _, appName := range apps {
scheduler := common.GetAppScheduler(appName)

View File

@@ -8,7 +8,7 @@ trigger-domains-install() {
declare trigger="install"
shopt -s nullglob
for app in $(dokku_apps); do
for app in $(dokku_apps "false"); do
domains_setup "$app"
done
}

View File

@@ -26,7 +26,7 @@ migrate_git_vars_0_12_0() {
DOKKU_QUIET_OUTPUT=1 config_unset --global DOKKU_DEPLOY_BRANCH || true
fi
for app in $(dokku_apps); do
for app in $(dokku_apps "false"); do
DOKKU_DEPLOY_BRANCH=$(config_get "$app" DOKKU_DEPLOY_BRANCH || true)
if [[ -n "$DOKKU_DEPLOY_BRANCH" ]]; then
fn-plugin-property-write "git" "$app" "deploy-branch" "$DOKKU_DEPLOY_BRANCH"

View File

@@ -157,7 +157,7 @@ func sinkValueToConfig(appName string, sinkValue string) (vectorSink, error) {
}
func writeVectorConfig() error {
apps, _ := common.DokkuApps()
apps, _ := common.UnfilteredDokkuApps()
data := vectorConfig{
Sources: map[string]vectorSource{},
Sinks: map[string]vectorSink{},

View File

@@ -33,7 +33,7 @@ func TriggerInstall() error {
return fmt.Errorf("Unable to install the network plugin: %s", err.Error())
}
apps, err := common.DokkuApps()
apps, err := common.UnfilteredDokkuApps()
if err != nil {
return nil
}

View File

@@ -109,7 +109,7 @@ validate_nginx() {
verify_app_name "$APP"
nginx_vhosts_validate_single_func "$APP" "$FLAG"
else
for app in $(dokku_apps); do
for app in $(dokku_apps "false"); do
nginx_vhosts_validate_single_func "$app" "$FLAG"
done
fi

View File

@@ -95,7 +95,7 @@ trigger-nginx-vhosts-install() {
[[ -f /etc/logrotate.d/nginx ]] && sed -i -e 's/invoke-rc.d/service/g' /etc/logrotate.d/nginx
# @TODO: Remove this after a few versions
for app in $(dokku_apps); do
for app in $(dokku_apps "false"); do
nginx_port="$(config_get "$app" DOKKU_NGINX_PORT || true)"
nginx_ssl_port="$(config_get "$app" DOKKU_NGINX_SSL_PORT || true)"
if [[ -n "$nginx_port" ]] || [[ -n "$nginx_ssl_port" ]]; then

View File

@@ -74,7 +74,7 @@ func TriggerInstall() error {
return err
}
apps, err := common.DokkuApps()
apps, err := common.UnfilteredDokkuApps()
if err != nil {
return nil
}

View File

@@ -31,7 +31,7 @@ func TriggerInstall() error {
return fmt.Errorf("Unable to install the scheduler plugin: %s", err.Error())
}
apps, err := common.DokkuApps()
apps, err := common.UnfilteredDokkuApps()
if err != nil {
return nil
}