This commit is contained in:
root
2025-06-24 11:53:59 +02:00
parent fea7c03bfb
commit 675482929e

View File

@@ -61,9 +61,33 @@ check_sudo() {
print_success "Sudo privileges confirmed"
}
# Pre-configure packages to avoid prompts
pre_configure_packages() {
print_step "Pre-configuring packages to avoid prompts..."
# Pre-configure common package questions
# For any package that uses debconf
echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections
# For timezone data (if tzdata gets updated)
echo 'tzdata tzdata/Areas select Europe' | sudo debconf-set-selections
echo 'tzdata tzdata/Zones/Europe select Paris' | sudo debconf-set-selections
# For keyboard configuration
echo 'keyboard-configuration keyboard-configuration/layoutcode string us' | sudo debconf-set-selections
# For any service restart prompts
echo '* libraries/restart-without-asking boolean true' | sudo debconf-set-selections
print_success "Package pre-configuration completed"
}
# System update
update_system() {
print_step "Updating system packages..."
# Set non-interactive mode for apt
export DEBIAN_FRONTEND=noninteractive
sudo apt update -y
print_success "System packages updated"
}
@@ -72,6 +96,9 @@ update_system() {
install_dependencies() {
print_step "Installing system dependencies..."
# Ensure non-interactive mode
export DEBIAN_FRONTEND=noninteractive
local packages=(
"git"
"apache2"
@@ -94,7 +121,7 @@ install_dependencies() {
for package in "${packages[@]}"; do
print_status "Installing $package..."
if sudo apt install -y "$package"; then
if sudo DEBIAN_FRONTEND=noninteractive apt install -y -q "$package"; then
print_success "$package installed"
else
print_error "Failed to install $package"
@@ -124,7 +151,7 @@ install_python_packages() {
for package in "${pip_packages[@]}"; do
print_status "Installing Python package: $package..."
if pip3 install "$package" --break-system-packages; then
if sudo pip3 install "$package" --break-system-packages; then
print_success "$package installed"
else
print_warning "Failed to install $package (may already be installed)"
@@ -460,28 +487,6 @@ create_databases() {
if [ -f "/var/www/moduleair_pro_4g/sqlite/create_db.py" ]; then
if sudo /usr/bin/python3 "/var/www/moduleair_pro_4g/sqlite/create_db.py"; then
print_success "Databases created successfully"
# Set proper permissions on database files
print_status "Setting database permissions..."
# Find all .db files in the sqlite directory and parent directory
if [ -d "/var/www/moduleair_pro_4g/sqlite" ]; then
# Set ownership and permissions for all database files
sudo find /var/www/moduleair_pro_4g -name "*.db" -type f -exec chown www-data:www-data {} \;
sudo find /var/www/moduleair_pro_4g -name "*.db" -type f -exec chmod 664 {} \;
# Set permissions on the sqlite directory itself
sudo chown -R www-data:www-data /var/www/moduleair_pro_4g/sqlite
sudo chmod 775 /var/www/moduleair_pro_4g/sqlite
# Also set permissions on any db-journal or db-wal files (SQLite temporary files)
sudo find /var/www/moduleair_pro_4g -name "*.db-journal" -type f -exec chown www-data:www-data {} \;
sudo find /var/www/moduleair_pro_4g -name "*.db-journal" -type f -exec chmod 664 {} \;
sudo find /var/www/moduleair_pro_4g -name "*.db-wal" -type f -exec chown www-data:www-data {} \;
sudo find /var/www/moduleair_pro_4g -name "*.db-wal" -type f -exec chmod 664 {} \;
print_success "Database permissions set"
fi
else
print_error "Failed to create databases"
return 1
@@ -495,44 +500,23 @@ create_databases() {
fix_database_permissions() {
print_step "Fixing database permissions..."
# Set proper ownership and permissions for all database files
if [ -d "/var/www/moduleair_pro_4g" ]; then
# Find and fix all .db files
local db_count=$(sudo find /var/www/moduleair_pro_4g -name "*.db" -type f | wc -l)
if [ "$db_count" -gt 0 ]; then
print_status "Found $db_count database file(s)"
# Set ownership to www-data
sudo find /var/www/moduleair_pro_4g -name "*.db" -type f -exec chown www-data:www-data {} \;
sudo find /var/www/moduleair_pro_4g -name "*.db-*" -type f -exec chown www-data:www-data {} \;
# Set read/write permissions for owner and group
sudo find /var/www/moduleair_pro_4g -name "*.db" -type f -exec chmod 664 {} \;
sudo find /var/www/moduleair_pro_4g -name "*.db-*" -type f -exec chmod 664 {} \;
# Ensure directories containing databases are writable
sudo find /var/www/moduleair_pro_4g -name "*.db" -type f -exec dirname {} \; | sort -u | while read dir; do
sudo chown www-data:www-data "$dir"
sudo chmod 775 "$dir"
print_status "Fixed permissions for: $dir"
done
print_success "Database permissions fixed"
else
print_warning "No database files found"
fi
# Also ensure logs directory is writable
if [ -d "/var/www/moduleair_pro_4g/logs" ]; then
sudo chown -R www-data:www-data /var/www/moduleair_pro_4g/logs
sudo chmod -R 775 /var/www/moduleair_pro_4g/logs
print_success "Log directory permissions fixed"
fi
# Set full permissions for sqlite directory
if [ -d "/var/www/moduleair_pro_4g/sqlite" ]; then
sudo chmod 777 /var/www/moduleair_pro_4g/sqlite/
print_success "Set permissions for sqlite directory"
else
print_error "ModuleAir directory not found"
return 1
print_warning "sqlite directory not found"
fi
# Set full permissions for sensors.db
if [ -f "/var/www/moduleair_pro_4g/sqlite/sensors.db" ]; then
sudo chmod 777 /var/www/moduleair_pro_4g/sqlite/sensors.db
print_success "Set permissions for sensors.db"
else
print_warning "sensors.db not found"
fi
print_success "Database permissions fixed"
}
# Set configuration
@@ -689,8 +673,13 @@ main() {
print_header "MODULEAIR PRO 4G INSTALLATION"
print_status "Starting automated installation..."
# Set non-interactive mode globally
export DEBIAN_FRONTEND=noninteractive
export NEEDRESTART_MODE=a
check_root
check_sudo
pre_configure_packages
update_system
install_dependencies
install_python_packages