mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2026-03-06 12:20:45 +01:00
Install/upgrade and CPScripts: preserve all local changes
- cyberpanel_install_monolithic.sh, cyberpanel_upgrade_monolithic.sh - install/ (install.py, venvsetup), install_modules/02_install_core.sh - plogical/upgrade.py - upgrade_modules/03_mariadb.sh, 05_repository.sh - CPScripts: phpmyadmin_version_changer.sh, snappymail_version_changer.sh - to-do/ (MARIADB-ROLLBACK-FROM-BACKUP.md)
This commit is contained in:
58
CPScripts/phpmyadmin_version_changer.sh
Executable file
58
CPScripts/phpmyadmin_version_changer.sh
Executable file
@@ -0,0 +1,58 @@
|
||||
#!/bin/bash
|
||||
# Change phpMyAdmin version: download chosen version, preserve config.inc.php and phpmyadminsignin.php.
|
||||
# Run as root: bash /usr/local/CyberCP/CPScripts/phpmyadmin_version_changer.sh [VERSION]
|
||||
set -e
|
||||
PMA_DIR="/usr/local/CyberCP/public/phpmyadmin"
|
||||
TMP_CONFIG="/tmp/cyberpanel_pma_config.inc.php.bak"
|
||||
TMP_SIGNON="/tmp/cyberpanel_pma_phpmyadminsignin.php.bak"
|
||||
LOG="/var/log/cyberpanel_upgrade_debug.log"
|
||||
log() { echo -e "[$(date +"%Y-%m-%d %H:%M:%S")] $*" | tee -a "$LOG"; }
|
||||
|
||||
if [[ $(id -u) -ne 0 ]]; then
|
||||
echo "Run as root: sudo bash $0 [VERSION]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PMA_VER="${1:-}"
|
||||
if [[ -z "$PMA_VER" ]]; then
|
||||
PMA_VER=$(curl -sS "https://api.github.com/repos/phpmyadmin/phpmyadmin/releases/latest" 2>/dev/null | grep -o '"tag_name": "[^"]*' | sed 's/"tag_name": "//;s/^RELEASE_//;s/_/./g' | head -1)
|
||||
[[ -z "$PMA_VER" ]] && PMA_VER="5.2.3"
|
||||
fi
|
||||
PMA_VER="${PMA_VER// /}"
|
||||
[[ "$PMA_VER" =~ ^[0-9]_[0-9]_[0-9]$ ]] && PMA_VER="${PMA_VER//_/.}"
|
||||
log "Using phpMyAdmin version: $PMA_VER"
|
||||
|
||||
[[ -d "/usr/local/CyberCP/public" ]] || mkdir -p /usr/local/CyberCP/public
|
||||
SAVED_CONFIG=false
|
||||
SAVED_SIGNON=false
|
||||
[[ -f "$PMA_DIR/config.inc.php" ]] && cp -a "$PMA_DIR/config.inc.php" "$TMP_CONFIG" && SAVED_CONFIG=true
|
||||
[[ -f "$PMA_DIR/phpmyadminsignin.php" ]] && cp -a "$PMA_DIR/phpmyadminsignin.php" "$TMP_SIGNON" && SAVED_SIGNON=true
|
||||
|
||||
TARBALL="/usr/local/CyberCP/public/phpmyadmin.tar.gz"
|
||||
URL="https://files.phpmyadmin.net/phpMyAdmin/${PMA_VER}/phpMyAdmin-${PMA_VER}-all-languages.tar.gz"
|
||||
wget -q -O "$TARBALL" "$URL" || { log "ERROR: Download failed"; exit 1; }
|
||||
[[ $(stat -c%s "$TARBALL" 2>/dev/null) -gt 1000000 ]] || { log "ERROR: Tarball too small"; exit 1; }
|
||||
|
||||
rm -rf "$PMA_DIR"
|
||||
tar -xzf "$TARBALL" -C /usr/local/CyberCP/public/
|
||||
rm -f "$TARBALL"
|
||||
EXTRACTED=$(ls -d /usr/local/CyberCP/public/phpMyAdmin-*-all-languages 2>/dev/null | head -1)
|
||||
[[ -n "$EXTRACTED" ]] && [[ -d "$EXTRACTED" ]] && mv "$EXTRACTED" "$PMA_DIR" || { log "ERROR: Extract failed"; exit 1; }
|
||||
|
||||
if [[ "$SAVED_CONFIG" = true ]] && [[ -f "$TMP_CONFIG" ]]; then
|
||||
cp -a "$TMP_CONFIG" "$PMA_DIR/config.inc.php"
|
||||
rm -f "$TMP_CONFIG"
|
||||
fi
|
||||
if [[ ! -f "$PMA_DIR/config.inc.php" ]] && [[ -f "$PMA_DIR/config.sample.inc.php" ]]; then
|
||||
cp -a "$PMA_DIR/config.sample.inc.php" "$PMA_DIR/config.inc.php"
|
||||
fi
|
||||
[[ -f "$PMA_DIR/config.inc.php" ]] && (grep -q "TempDir" "$PMA_DIR/config.inc.php" 2>/dev/null || echo -e "\n\$cfg['TempDir'] = '/usr/local/CyberCP/public/phpmyadmin/tmp';" >> "$PMA_DIR/config.inc.php")
|
||||
[[ "$SAVED_SIGNON" = true ]] && [[ -f "$TMP_SIGNON" ]] && cp -a "$TMP_SIGNON" "$PMA_DIR/phpmyadminsignin.php" && rm -f "$TMP_SIGNON"
|
||||
[[ "$SAVED_SIGNON" != true ]] && [[ -f /usr/local/CyberCP/plogical/phpmyadminsignin.php ]] && cp -a /usr/local/CyberCP/plogical/phpmyadminsignin.php "$PMA_DIR/phpmyadminsignin.php"
|
||||
sed -i "s/'localhost'/'127.0.0.1'/g" "$PMA_DIR/phpmyadminsignin.php" 2>/dev/null || true
|
||||
|
||||
mkdir -p "$PMA_DIR/tmp"
|
||||
id lscpd &>/dev/null && chown -R lscpd:lscpd "$PMA_DIR"
|
||||
chmod -R 755 "$PMA_DIR"
|
||||
log "phpMyAdmin changed to version $PMA_VER"
|
||||
echo "phpMyAdmin version $PMA_VER installed."
|
||||
85
CPScripts/snappymail_version_changer.sh
Executable file
85
CPScripts/snappymail_version_changer.sh
Executable file
@@ -0,0 +1,85 @@
|
||||
#!/bin/bash
|
||||
# Change SnappyMail version: download chosen version, preserve data dirs, replace app files, fix data path and perms.
|
||||
# Run as root: bash /usr/local/CyberCP/CPScripts/snappymail_version_changer.sh [VERSION]
|
||||
# Example: bash snappymail_version_changer.sh 2.38.2
|
||||
# Data under /usr/local/lscp/cyberpanel/snappymail/data is never removed.
|
||||
set -e
|
||||
PUBLIC_SNAPPY="/usr/local/CyberCP/public/snappymail"
|
||||
DATA_PATH="/usr/local/lscp/cyberpanel/snappymail/data"
|
||||
LOG="/var/log/cyberpanel_upgrade_debug.log"
|
||||
log() { echo -e "[$(date +"%Y-%m-%d %H:%M:%S")] $*" | tee -a "$LOG"; }
|
||||
|
||||
if [[ $(id -u) -ne 0 ]]; then
|
||||
echo "Run as root: sudo bash $0 [VERSION]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Version: argument or latest from API or default
|
||||
SNAPPY_VER="${1:-}"
|
||||
if [[ -z "$SNAPPY_VER" ]]; then
|
||||
SNAPPY_VER=$(curl -sS "https://api.github.com/repos/the-djmaze/snappymail/releases/latest" 2>/dev/null | grep -o '"tag_name": "v[^"]*' | sed 's/"tag_name": "v//' | head -1)
|
||||
[[ -z "$SNAPPY_VER" ]] && SNAPPY_VER="2.38.2"
|
||||
log "Using SnappyMail version: $SNAPPY_VER (from API or default)"
|
||||
else
|
||||
SNAPPY_VER="${SNAPPY_VER// /}"
|
||||
log "Using SnappyMail version: $SNAPPY_VER (from argument)"
|
||||
fi
|
||||
|
||||
[[ -d "/usr/local/CyberCP/public" ]] || mkdir -p /usr/local/CyberCP/public
|
||||
cd /usr/local/CyberCP/public || exit 1
|
||||
|
||||
# Download zip (data dirs are NOT under public/snappymail; we only replace app tree)
|
||||
ZIP="snappymail-${SNAPPY_VER}.zip"
|
||||
URL="https://github.com/the-djmaze/snappymail/releases/download/v${SNAPPY_VER}/${ZIP}"
|
||||
log "Downloading $URL ..."
|
||||
if ! wget -q -O "$ZIP" "$URL"; then
|
||||
log "ERROR: Download failed. Check version at https://github.com/the-djmaze/snappymail/releases"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Replace only app tree; do not remove DATA_PATH or public/snappymail/data if it exists
|
||||
if [[ -d "$PUBLIC_SNAPPY" ]]; then
|
||||
rm -rf "$PUBLIC_SNAPPY"
|
||||
log "Removed existing public/snappymail app tree (data preserved under $DATA_PATH)"
|
||||
fi
|
||||
unzip -q "$ZIP" -d "$PUBLIC_SNAPPY"
|
||||
rm -f "$ZIP"
|
||||
|
||||
# Fix data path in include.php
|
||||
INCLUDE_PHP=""
|
||||
for inc in "$PUBLIC_SNAPPY"/snappymail/v/*/include.php; do
|
||||
[[ -f "$inc" ]] && INCLUDE_PHP="$inc" && break
|
||||
done
|
||||
if [[ -n "$INCLUDE_PHP" ]] && [[ -f "$INCLUDE_PHP" ]]; then
|
||||
if grep -q "\$sCustomDataPath = ''" "$INCLUDE_PHP" 2>/dev/null; then
|
||||
sed -i "s|\$sCustomDataPath = '';|\$sCustomDataPath = '/usr/local/lscp/cyberpanel/snappymail/data';|" "$INCLUDE_PHP"
|
||||
log "Set data path in include.php"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Ensure data dirs exist
|
||||
mkdir -p "$DATA_PATH/_data_/_default_/configs"
|
||||
mkdir -p "$DATA_PATH/_data_/_default_/domains"
|
||||
mkdir -p "$DATA_PATH/_data_/_default_/storage"
|
||||
mkdir -p "$DATA_PATH/_data_/_default_/temp"
|
||||
mkdir -p "$DATA_PATH/_data_/_default_/cache"
|
||||
|
||||
# Permissions
|
||||
find "$PUBLIC_SNAPPY" -type d -exec chmod 755 {} \;
|
||||
find "$PUBLIC_SNAPPY" -type f -exec chmod 644 {} \;
|
||||
if id lscpd &>/dev/null; then
|
||||
chown -R lscpd:lscpd "$PUBLIC_SNAPPY"
|
||||
chown -R lscpd:lscpd "$DATA_PATH"
|
||||
log "Set ownership lscpd:lscpd"
|
||||
fi
|
||||
chmod -R 775 "$DATA_PATH" 2>/dev/null || true
|
||||
|
||||
# Optional: run CyberPanel SnappyMail integration if present
|
||||
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
|
||||
|
||||
log "SnappyMail changed to version $SNAPPY_VER"
|
||||
echo "SnappyMail version changed to $SNAPPY_VER. Data preserved under $DATA_PATH"
|
||||
Reference in New Issue
Block a user