144 lines
4.5 KiB
Bash
Executable File
144 lines
4.5 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Service configuration (NFS, SMB, ClamAV)
|
|
#
|
|
|
|
configure_nfs() {
|
|
log_info "Configuring NFS server..."
|
|
|
|
# Create NFS exports directory if it doesn't exist
|
|
mkdir -p /etc/exports.d
|
|
|
|
# Create base exports file (empty, will be managed by Calypso)
|
|
if [[ ! -f /etc/exports.d/calypso.exports ]]; then
|
|
touch /etc/exports.d/calypso.exports
|
|
echo "# Calypso managed NFS exports" > /etc/exports.d/calypso.exports
|
|
echo "# This file is managed by Calypso. Manual edits may be overwritten." >> /etc/exports.d/calypso.exports
|
|
fi
|
|
|
|
# Include calypso exports in main exports file
|
|
if ! grep -q "calypso.exports" /etc/exports 2>/dev/null; then
|
|
echo "" >> /etc/exports
|
|
echo "# Include Calypso managed exports" >> /etc/exports
|
|
echo "/etc/exports.d/calypso.exports" >> /etc/exports || true
|
|
fi
|
|
|
|
log_info "✓ NFS configured"
|
|
}
|
|
|
|
configure_samba() {
|
|
log_info "Configuring Samba..."
|
|
|
|
# Backup original smb.conf if it exists and hasn't been backed up
|
|
if [[ -f /etc/samba/smb.conf ]] && [[ ! -f /etc/samba/smb.conf.calypso-backup ]]; then
|
|
cp /etc/samba/smb.conf /etc/samba/smb.conf.calypso-backup
|
|
log_info "Backed up original smb.conf"
|
|
fi
|
|
|
|
# Create Calypso Samba configuration directory
|
|
mkdir -p "$CONFIG_DIR/samba"
|
|
|
|
# Create base Samba config (minimal, will be extended by Calypso)
|
|
if [[ ! -f "$CONFIG_DIR/samba/smb.conf.calypso" ]]; then
|
|
cat > "$CONFIG_DIR/samba/smb.conf.calypso" <<EOF
|
|
# Calypso managed Samba configuration
|
|
# This file is included in main smb.conf
|
|
# Manual edits may be overwritten by Calypso
|
|
|
|
[global]
|
|
workgroup = WORKGROUP
|
|
server string = Calypso File Server
|
|
security = user
|
|
map to guest = Bad User
|
|
dns proxy = no
|
|
|
|
# Logging
|
|
log file = /var/log/samba/log.%m
|
|
max log size = 1000
|
|
syslog = 0
|
|
|
|
# Performance
|
|
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
|
|
read raw = yes
|
|
write raw = yes
|
|
max xmit = 65536
|
|
dead time = 15
|
|
getwd cache = yes
|
|
|
|
# Calypso shares will be added here dynamically
|
|
EOF
|
|
log_info "Created Calypso Samba configuration"
|
|
fi
|
|
|
|
# Include Calypso config in main smb.conf if not already included
|
|
if ! grep -q "smb.conf.calypso" /etc/samba/smb.conf 2>/dev/null; then
|
|
echo "" >> /etc/samba/smb.conf
|
|
echo "# Include Calypso managed shares" >> /etc/samba/smb.conf
|
|
echo "include = $CONFIG_DIR/samba/smb.conf.calypso" >> /etc/samba/smb.conf
|
|
fi
|
|
|
|
# Test Samba configuration
|
|
if command_exists testparm; then
|
|
if testparm -s &>/dev/null; then
|
|
log_info "✓ Samba configuration valid"
|
|
else
|
|
log_warn "Samba configuration test failed, but continuing..."
|
|
fi
|
|
fi
|
|
|
|
log_info "✓ Samba configured"
|
|
}
|
|
|
|
configure_clamav() {
|
|
log_info "Configuring ClamAV..."
|
|
|
|
# Create ClamAV configuration directory
|
|
mkdir -p "$CONFIG_DIR/clamav"
|
|
|
|
# Configure ClamAV daemon
|
|
if [[ -f /etc/clamav/clamd.conf ]]; then
|
|
# Backup original
|
|
if [[ ! -f /etc/clamav/clamd.conf.calypso-backup ]]; then
|
|
cp /etc/clamav/clamd.conf /etc/clamav/clamd.conf.calypso-backup
|
|
fi
|
|
|
|
# Update configuration for Calypso
|
|
sed -i 's|^#LocalSocket|LocalSocket|' /etc/clamav/clamd.conf || true
|
|
sed -i 's|^LocalSocket.*|LocalSocket /var/run/clamav/clamd.ctl|' /etc/clamav/clamd.conf || true
|
|
|
|
# Set quarantine directory
|
|
if ! grep -q "QuarantineDir" /etc/clamav/clamd.conf; then
|
|
echo "QuarantineDir $DATA_DIR/quarantine" >> /etc/clamav/clamd.conf
|
|
fi
|
|
fi
|
|
|
|
# Configure freshclam
|
|
if [[ -f /etc/clamav/freshclam.conf ]]; then
|
|
# Backup original
|
|
if [[ ! -f /etc/clamav/freshclam.conf.calypso-backup ]]; then
|
|
cp /etc/clamav/freshclam.conf /etc/clamav/freshclam.conf.calypso-backup
|
|
fi
|
|
|
|
# Enable automatic updates
|
|
sed -i 's|^#Checks|Checks|' /etc/clamav/freshclam.conf || true
|
|
fi
|
|
|
|
# Create quarantine directory
|
|
mkdir -p "$DATA_DIR/quarantine"
|
|
chown clamav:clamav "$DATA_DIR/quarantine" 2>/dev/null || chown root:root "$DATA_DIR/quarantine"
|
|
chmod 755 "$DATA_DIR/quarantine"
|
|
|
|
log_info "✓ ClamAV configured"
|
|
}
|
|
|
|
configure_all_services() {
|
|
log_info "Configuring file sharing and antivirus services..."
|
|
|
|
configure_nfs
|
|
configure_samba
|
|
configure_clamav
|
|
|
|
log_info "✓ All services configured"
|
|
}
|
|
|