Each app now carries everything under containers/<app>/: Tools-tab actions in tools/ (declaration <app>.tools.json + function <app>_<tool_id>.sh) and logic helpers in scripts/ (e.g. <app>_auth.sh). The container scan live-sources every .sh under the app (maxdepth 3, prunes only resources/) and webui_tools.sh auto-merges the .tools.json, so an app is a true drop-in — no central edit, no array regen. - Empty the central webui_tools.sh heredoc; all 34 tools across 11 apps now come from per-app declarations (verified byte-identical to the old output). - Retire the orphaned mattermost tool scripts to scripts/unused (there is no containers/mattermost; its install fn already lived in unused). - Update the dispatch comment/error path, the auth-adapter doc, and DEVELOPMENT.md to the new convention. - Regenerate static arrays (files_app.sh no longer lists app/containers/*). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Signed-off-by: librelad <librelad@digitalangels.vip>
31 lines
1.1 KiB
Bash
31 lines
1.1 KiB
Bash
#!/bin/bash
|
|
|
|
authAdapter_adguard_setPassword() {
|
|
local user="$1" password="$2"
|
|
user="${user:-${CFG_ADGUARD_ADMIN_USER:-admin}}"
|
|
[[ -z "$password" ]] && password=$(generateRandomPassword)
|
|
|
|
local yaml="${containers_dir}adguard/conf/AdGuardHome.yaml"
|
|
[[ ! -f "$yaml" ]] && { isError "AdGuardHome.yaml not found at $yaml."; return 1; }
|
|
if ! command -v htpasswd >/dev/null 2>&1; then
|
|
isError "htpasswd is required to bcrypt the new password."
|
|
return 1
|
|
fi
|
|
|
|
local bcrypt
|
|
bcrypt=$(htpasswd -bnBC 10 "" "$password" | tr -d ':\n')
|
|
[[ -z "$bcrypt" ]] && { isError "bcrypt failed."; return 1; }
|
|
|
|
# The yaml is owned by the in-container uid, so the rewrite runs in the
|
|
# root-owned appcfg helper (fixed path, validated user + bcrypt).
|
|
if ! runAppCfg adguard-auth "$user" "$bcrypt"; then
|
|
isError "Could not update AdGuardHome.yaml (no users password line, or invalid input)."
|
|
return 1
|
|
fi
|
|
|
|
authPersistCfg adguard ADMIN_USER "$user"
|
|
authPersistCfg adguard ADMIN_PASSWORD "$password"
|
|
dockerComposeRestart adguard
|
|
isSuccessful "AdGuard admin set. User: $user — Password: $password"
|
|
}
|