mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-01-11 02:11:01 +01:00
try
This commit is contained in:
111
.claude/example_validated_init.sh
Executable file
111
.claude/example_validated_init.sh
Executable file
@@ -0,0 +1,111 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# Example validated initialization script
|
||||
# This demonstrates how to use the input validation library
|
||||
set -euo pipefail
|
||||
|
||||
# Source the validation library
|
||||
source /ha_input_validation.sh
|
||||
|
||||
bashio::log.info "🔍 Starting configuration validation..."
|
||||
|
||||
##################################
|
||||
# VALIDATE COMMON CONFIGURATIONS #
|
||||
##################################
|
||||
|
||||
# Use the common validation function
|
||||
validate_common_config
|
||||
|
||||
##################################
|
||||
# VALIDATE APPLICATION-SPECIFIC #
|
||||
##################################
|
||||
|
||||
# Example for a media server add-on like Plex/Emby
|
||||
if [[ "${ADDON_TYPE:-media}" == "media" ]]; then
|
||||
# Validate transcoding quality settings
|
||||
if bashio::config.has_value "transcoding_quality"; then
|
||||
validate_string "transcoding_quality" "^(low|medium|high|ultra)$" "Transcoding quality (low, medium, high, ultra)" false
|
||||
fi
|
||||
|
||||
# Validate maximum concurrent streams
|
||||
if bashio::config.has_value "max_streams"; then
|
||||
validate_numeric "max_streams" 1 20 "Maximum concurrent streams (1-20)" false
|
||||
fi
|
||||
fi
|
||||
|
||||
# Example for a file management add-on like Filebrowser
|
||||
if [[ "${ADDON_TYPE:-file}" == "file" ]]; then
|
||||
# Validate base folder (prevent directory traversal)
|
||||
if bashio::config.has_value "base_folder"; then
|
||||
validate_path "base_folder" "/config" "Base folder for file browsing" false
|
||||
fi
|
||||
|
||||
# Validate disable thumbnails setting
|
||||
if bashio::config.has_value "disable_thumbnails"; then
|
||||
validate_boolean "disable_thumbnails" "Disable thumbnail generation" false
|
||||
fi
|
||||
fi
|
||||
|
||||
# Example for a network tool add-on like Arpspoof
|
||||
if [[ "${ADDON_TYPE:-network}" == "network" ]]; then
|
||||
# Validate target IP addresses
|
||||
if bashio::config.has_value "target_ip"; then
|
||||
validate_ip "target_ip" "Target device IP address"
|
||||
fi
|
||||
|
||||
# Validate gateway IP
|
||||
if bashio::config.has_value "gateway_ip"; then
|
||||
validate_ip "gateway_ip" "Network gateway IP address"
|
||||
fi
|
||||
|
||||
# Validate block duration
|
||||
if bashio::config.has_value "block_duration"; then
|
||||
validate_numeric "block_duration" 1 3600 "Block duration in seconds (1-3600)"
|
||||
fi
|
||||
fi
|
||||
|
||||
##################################
|
||||
# VALIDATE SECURITY SETTINGS #
|
||||
##################################
|
||||
|
||||
# Validate authentication settings
|
||||
if bashio::config.has_value "enable_auth"; then
|
||||
validate_boolean "enable_auth" "Enable authentication"
|
||||
|
||||
if bashio::config.true "enable_auth"; then
|
||||
# If auth is enabled, validate credentials
|
||||
validate_string "username" "^[a-zA-Z0-9_-]{3,20}$" "Username (3-20 alphanumeric characters)"
|
||||
|
||||
# Validate password strength
|
||||
if bashio::config.has_value "password"; then
|
||||
local password
|
||||
password=$(bashio::config "password")
|
||||
|
||||
if [[ ${#password} -lt 8 ]]; then
|
||||
bashio::log.fatal "Password too short. Minimum 8 characters required."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! "$password" =~ [A-Z] ]] || [[ ! "$password" =~ [a-z] ]] || [[ ! "$password" =~ [0-9] ]]; then
|
||||
bashio::log.warning "⚠️ Weak password detected. Consider using uppercase, lowercase, and numbers."
|
||||
fi
|
||||
|
||||
bashio::log.debug "✅ Validated password strength"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
##################################
|
||||
# FINALIZATION #
|
||||
##################################
|
||||
|
||||
bashio::log.info "🎉 Configuration validation completed successfully!"
|
||||
bashio::log.info "Starting application with validated configuration..."
|
||||
|
||||
# At this point, all configuration values have been validated
|
||||
# and the application can start safely with trusted inputs
|
||||
|
||||
# Export validated configurations as environment variables for the application
|
||||
export VALIDATED_CONFIG="true"
|
||||
export CONFIG_VALIDATION_TIME="$(date -Iseconds)"
|
||||
|
||||
bashio::log.debug "Environment prepared with validated configuration"
|
||||
Reference in New Issue
Block a user