mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2026-05-09 02:45:56 +02:00
Install/upgrade and UI updates: monolithic install, SnappyMail, firewall, to-do docs
- Install: monolithic install script, venvsetup_modules and venvsetup_monolithic, install_modules (parse_main, menus, actions, etc.), remove legacy email-configs and php-configs from repo, add install/snappymail and Rainloop->SnappyMail migration script - CyberPanel: urls.py, cyberpanel.sh, cyberpanel_upgrade_monolithic.sh tweaks - Firewall: firewall.js and firewall.html updates - plogical: mailUtilities.py, upgrade.py; upgrade_modules 10_post_tweak.sh - pluginHolder: deploy-plugins-template.sh - to-do: docs (git conflicts, HTTP 500 recovery, phpMyAdmin, plugins, SnappyMail rename, install/upgrade OS support, security whitelist, etc.) - upgrade_modules: 02_checks_part1/part2.txt
This commit is contained in:
89
CPScripts/migrate_rainloop_to_snappymail.sh
Normal file
89
CPScripts/migrate_rainloop_to_snappymail.sh
Normal file
@@ -0,0 +1,89 @@
|
||||
#!/bin/bash
|
||||
# Migrate RainLoop to SnappyMail on live server: rename public folder and/or install SnappyMail if missing, migrate data, fix paths, restart, test.
|
||||
# Run as root: bash /usr/local/CyberCP/CPScripts/migrate_rainloop_to_snappymail.sh
|
||||
set -e
|
||||
LOG="/var/log/cyberpanel_upgrade_debug.log"
|
||||
log() { echo -e "[$(date +"%Y-%m-%d %H:%M:%S")] $*" | tee -a "$LOG"; }
|
||||
SNAPPY_VERSION="${SNAPPY_VERSION:-2.38.2}"
|
||||
|
||||
log "=== RainLoop -> SnappyMail migration ==="
|
||||
|
||||
# 1) Ensure public/snappymail exists: rename rainloop -> snappymail OR download and install SnappyMail
|
||||
if [ -d "/usr/local/CyberCP/public/rainloop" ] && [ ! -d "/usr/local/CyberCP/public/snappymail" ]; then
|
||||
log "Renaming public/rainloop to public/snappymail..."
|
||||
mv /usr/local/CyberCP/public/rainloop /usr/local/CyberCP/public/snappymail
|
||||
log "Renamed public/rainloop -> public/snappymail"
|
||||
if [ -f "/usr/local/CyberCP/public/snappymail/include.php" ]; then
|
||||
sed -i 's|/usr/local/lscp/cyberpanel/rainloop/data|/usr/local/lscp/cyberpanel/snappymail/data|g' /usr/local/CyberCP/public/snappymail/include.php
|
||||
log "Updated include.php data path"
|
||||
fi
|
||||
for inc in /usr/local/CyberCP/public/snappymail/snappymail/v/*/include.php /usr/local/CyberCP/public/snappymail/rainloop/v/*/include.php; do
|
||||
[ -f "$inc" ] && sed -i 's|/usr/local/lscp/cyberpanel/rainloop/data|/usr/local/lscp/cyberpanel/snappymail/data|g' "$inc" && log "Updated $inc" && break
|
||||
done 2>/dev/null || true
|
||||
elif [ ! -d "/usr/local/CyberCP/public/snappymail" ]; then
|
||||
log "public/snappymail missing - installing SnappyMail v${SNAPPY_VERSION}..."
|
||||
cd /usr/local/CyberCP/public || exit 1
|
||||
if ! wget -q "https://github.com/the-djmaze/snappymail/releases/download/v${SNAPPY_VERSION}/snappymail-${SNAPPY_VERSION}.zip" -O "snappymail-${SNAPPY_VERSION}.zip"; then
|
||||
log "ERROR: wget SnappyMail failed"
|
||||
exit 1
|
||||
fi
|
||||
unzip -q "snappymail-${SNAPPY_VERSION}.zip" -d /usr/local/CyberCP/public/snappymail
|
||||
rm -f "snappymail-${SNAPPY_VERSION}.zip"
|
||||
find /usr/local/CyberCP/public/snappymail -type d -exec chmod 755 {} \;
|
||||
find /usr/local/CyberCP/public/snappymail -type f -exec chmod 644 {} \;
|
||||
log "SnappyMail installed"
|
||||
# Configure data path and run CyberPanel integration
|
||||
wget -q -O /usr/local/CyberCP/snappymail_cyberpanel.php "https://raw.githubusercontent.com/the-djmaze/snappymail/master/integrations/cyberpanel/install.php" 2>/dev/null || true
|
||||
if [ -f /usr/local/CyberCP/snappymail_cyberpanel.php ]; then
|
||||
for php in /usr/local/lsws/lsphp83/bin/php /usr/local/lsws/lsphp82/bin/php /usr/local/lsws/lsphp81/bin/php /usr/local/lsws/lsphp80/bin/php; do
|
||||
[ -x "$php" ] && $php /usr/local/CyberCP/snappymail_cyberpanel.php 2>/dev/null && break
|
||||
done
|
||||
fi
|
||||
else
|
||||
log "public/snappymail already exists"
|
||||
fi
|
||||
|
||||
# 2) Data migration: lscp/cyberpanel/rainloop/data -> snappymail/data
|
||||
mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/configs/
|
||||
mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/domains/
|
||||
mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/storage/
|
||||
mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/temp/
|
||||
mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/cache/
|
||||
|
||||
if [ -d "/usr/local/lscp/cyberpanel/rainloop/data" ] && [ "$(ls -A /usr/local/lscp/cyberpanel/rainloop/data 2>/dev/null)" ]; then
|
||||
log "Migrating rainloop data to snappymail..."
|
||||
rsync -av --ignore-existing /usr/local/lscp/cyberpanel/rainloop/data/ /usr/local/lscp/cyberpanel/snappymail/data/ 2>&1 | tee -a "$LOG"
|
||||
if [ -f "/usr/local/CyberCP/public/snappymail/include.php" ]; then
|
||||
sed -i 's|/usr/local/lscp/cyberpanel/rainloop/data|/usr/local/lscp/cyberpanel/snappymail/data|g' /usr/local/CyberCP/public/snappymail/include.php
|
||||
fi
|
||||
find /usr/local/lscp/cyberpanel/snappymail/data -type f \( -name "*.ini" -o -name "*.json" -o -name "*.php" -o -name "*.cfg" \) -exec grep -l "rainloop" {} \; 2>/dev/null | while read -r f; do
|
||||
sed -i 's|/usr/local/lscp/cyberpanel/rainloop/data|/usr/local/lscp/cyberpanel/snappymail/data|g; s|/rainloop/|/snappymail/|g; s|rainloop/data|snappymail/data|g' "$f"
|
||||
done
|
||||
log "Data migration done"
|
||||
fi
|
||||
|
||||
# 3) Ownership and permissions
|
||||
if id -u lscpd >/dev/null 2>&1; then
|
||||
chown -R lscpd:lscpd /usr/local/lscp/cyberpanel/snappymail/
|
||||
chown -R lscpd:lscpd /usr/local/CyberCP/public/snappymail/ 2>/dev/null || true
|
||||
log "Set ownership lscpd:lscpd"
|
||||
fi
|
||||
chmod -R 775 /usr/local/lscp/cyberpanel/snappymail/data/ 2>/dev/null || true
|
||||
|
||||
# 4) Restart panel
|
||||
log "Restarting lscpd..."
|
||||
systemctl restart lscpd
|
||||
sleep 2
|
||||
|
||||
# 5) Test
|
||||
PORT=$(cat /usr/local/lscp/conf/bind.conf 2>/dev/null | grep -oE '[0-9]+' | head -1)
|
||||
PORT=${PORT:-8090}
|
||||
log "Testing https://127.0.0.1:${PORT}/snappymail/index.php ..."
|
||||
CODE=$(curl -sk -o /dev/null -w "%{http_code}" "https://127.0.0.1:${PORT}/snappymail/index.php" 2>/dev/null || echo "000")
|
||||
if [ "$CODE" = "200" ] || [ "$CODE" = "302" ]; then
|
||||
log "OK: SnappyMail URL returned HTTP $CODE"
|
||||
else
|
||||
log "WARNING: SnappyMail URL returned HTTP $CODE (expected 200 or 302)"
|
||||
fi
|
||||
|
||||
log "=== Migration script finished ==="
|
||||
Reference in New Issue
Block a user