@@ -350,58 +350,74 @@ MARIADB_VER="11.8"
350350MARIADB_VER_REPO=" 11.8"
351351
352352Check_Argument () {
353- # Parse --branch / -b (extract first word after -b or --branch)
354- if [[ " $* " = * " --branch " * ]]; then
355- Branch_Name=$( echo " $* " | sed -n ' s/.*--branch \([^ ]*\).*/\1/p' | head -1)
356- [[ -n " $Branch_Name " ]] && Branch_Check " $Branch_Name "
357- elif [[ " $* " = * " -b " * ]]; then
358- Branch_Name=$( echo " $* " | sed -n ' s/.*-b \([^ ]*\).*/\1/p' | head -1)
359- [[ -n " $Branch_Name " ]] && Branch_Check " $Branch_Name "
360- fi
361- # Parse --repo / -r to use any GitHub user (same URL structure as usmannasir/cyberpanel)
362- if [[ " $* " = * " --repo " * ]]; then
363- Git_User_Override=$( echo " $* " | sed -n ' s/.*--repo \([^ ]*\).*/\1/p' | head -1)
364- fi
365- if [[ " $* " = * " -r " * ]] && [[ -z " $Git_User_Override " ]]; then
366- Git_User_Override=$( echo " $* " | sed -n ' s/.*-r \([^ ]*\).*/\1/p' | head -1)
367- fi
368- # Parse --no-system-update to skip yum/dnf update -y (faster upgrade when system is already updated)
369- if [[ " $* " = * " --no-system-update" * ]]; then
370- Skip_System_Update=" yes"
371- echo -e " \nUsing --no-system-update: skipping full system package update.\n"
372- fi
373- # Parse --backup-db / --no-backup-db: pre-upgrade MariaDB backup. Default when neither set: ask user (may take a while).
374- # --backup-db = always backup; --no-backup-db = never backup; omit both = prompt [y/N]
375- Backup_DB_Before_Upgrade=" "
376- if [[ " $* " = * " --backup-db" * ]]; then
377- Backup_DB_Before_Upgrade=" yes"
378- echo -e " \nUsing --backup-db: will create a full MariaDB backup before upgrade.\n"
379- elif [[ " $* " = * " --no-backup-db" * ]]; then
380- Backup_DB_Before_Upgrade=" no"
381- echo -e " \nUsing --no-backup-db: skipping MariaDB pre-upgrade backup.\n"
382- fi
383- # Parse --migrate-to-utf8: after upgrading to MariaDB 11.x/12.x, convert DBs/tables from latin1 to utf8mb4 (only if your apps support UTF-8)
384- if [[ " $* " = * " --migrate-to-utf8" * ]]; then
385- Migrate_MariaDB_To_UTF8_Requested=" yes"
386- echo -e " \nUsing --migrate-to-utf8: will convert databases to UTF-8 (utf8mb4) after MariaDB upgrade.\n"
387- fi
388- # Parse --mariadb-version (any version: 10.6, 10.11, 10.11.16, 11.8, 12.1, 12.2, 12.3, etc.). Default 11.8.
389- # --mariadb is shorthand for --mariadb-version 10.11
390- if [[ " $* " = * " --mariadb" * ]] && [[ " $* " != * " --mariadb-version " * ]]; then
391- MARIADB_VER=" 10.11"
392- echo -e " \nUsing --mariadb: MariaDB 10.11 selected (non-interactive).\n"
393- elif [[ " $* " = * " --mariadb-version " * ]]; then
394- MARIADB_VER=$( echo " $* " | sed -n ' s/.*--mariadb-version \([^ ]*\).*/\1/p' | head -1)
395- MARIADB_VER=" ${MARIADB_VER:- 11.8} "
396- fi
397- # Allow any version; repo paths use major.minor (normalized later)
353+ # Parse arguments with exact next-token so -b v2.5.5-dev --mariadb-version 12.3 does not mangle Branch_Name
354+ set -- $*
355+ while [[ $# -ge 1 ]]; do
356+ case " $1 " in
357+ -b|--branch)
358+ if [[ -n " ${2:- } " ]] && [[ " $2 " != -* ]]; then
359+ Branch_Name=" $2 "
360+ Branch_Check " $Branch_Name "
361+ shift 2
362+ continue
363+ fi
364+ shift
365+ ;;
366+ --mariadb-version)
367+ if [[ -n " ${2:- } " ]] && [[ " $2 " != -* ]]; then
368+ MARIADB_VER=" $2 "
369+ echo -e " \nUsing --mariadb-version: MariaDB $MARIADB_VER selected.\n"
370+ shift 2
371+ continue
372+ fi
373+ shift
374+ ;;
375+ -r|--repo)
376+ if [[ -n " ${2:- } " ]] && [[ " $2 " != -* ]]; then
377+ Git_User_Override=" $2 "
378+ echo -e " \nUsing --repo: GitHub user $Git_User_Override for cyberpanel.\n"
379+ shift 2
380+ continue
381+ fi
382+ shift
383+ ;;
384+ --no-system-update)
385+ Skip_System_Update=" yes"
386+ echo -e " \nUsing --no-system-update: skipping full system package update.\n"
387+ shift
388+ ;;
389+ --backup-db)
390+ Backup_DB_Before_Upgrade=" yes"
391+ echo -e " \nUsing --backup-db: will create a full MariaDB backup before upgrade.\n"
392+ shift
393+ ;;
394+ --no-backup-db)
395+ Backup_DB_Before_Upgrade=" no"
396+ echo -e " \nUsing --no-backup-db: skipping MariaDB pre-upgrade backup.\n"
397+ shift
398+ ;;
399+ --migrate-to-utf8)
400+ Migrate_MariaDB_To_UTF8_Requested=" yes"
401+ echo -e " \nUsing --migrate-to-utf8: will convert databases to UTF-8 (utf8mb4) after MariaDB upgrade.\n"
402+ shift
403+ ;;
404+ --mariadb)
405+ MARIADB_VER=" 10.11"
406+ echo -e " \nUsing --mariadb: MariaDB 10.11 selected (non-interactive).\n"
407+ shift
408+ ;;
409+ * )
410+ shift
411+ ;;
412+ esac
413+ done
398414}
399415
400416Pre_Upgrade_Setup_Git_URL () {
401417 if [[ $Server_Country != " CN" ]] ; then
402418 if [[ -n " $Git_User_Override " ]]; then
403419 Git_User=" $Git_User_Override "
404- echo -e " \nUsing GitHub repo: ${Git_User} /cyberpanel (same URL structure as usmannasir) \n"
420+ echo -e " \nUsing GitHub repo: ${Git_User} /cyberpanel\n"
405421 else
406422 Git_User=" usmannasir"
407423 fi
778794 dnf clean metadata --disablerepo=' *' --enablerepo=mariadb 2> /dev/null || true
779795 # MariaDB 10 -> 11 or 11 -> 12: RPM scriptlet blocks in-place upgrade; do manual stop, remove old server, install target, start, mariadb-upgrade
780796 MARIADB_OLD_10=$( rpm -qa ' MariaDB-server-10*' 2> /dev/null | head -1)
797+ [[ -z " $MARIADB_OLD_10 " ]] && MARIADB_OLD_10=$( rpm -qa 2> /dev/null | grep -E ' ^MariaDB-server-10\.' | head -1)
781798 MARIADB_OLD_11=$( rpm -qa ' MariaDB-server-11*' 2> /dev/null | head -1)
782799 # Also detect 11.x by package version (e.g. MariaDB-server-11.8.6-1.el9)
783800 [[ -z " $MARIADB_OLD_11 " ]] && MARIADB_OLD_11=$( rpm -qa ' MariaDB-server*' 2> /dev/null | grep -E ' MariaDB-server-11\.' | head -1)
791808 rpm -e " $MARIADB_OLD_10 " --nodeps 2> /dev/null || true
792809 dnf install -y --enablerepo=mariadb MariaDB-server MariaDB-client MariaDB-devel 2> /dev/null || true
793810 mkdir -p /etc/my.cnf.d
794- printf " [client]\nskip-ssl = true \n" > /etc/my.cnf.d/cyberpanel-client.cnf 2> /dev/null || true
811+ printf " [client]\nssl=0\ nskip-ssl\n" > /etc/my.cnf.d/cyberpanel-client.cnf 2> /dev/null || true
795812 systemctl start mariadb 2> /dev/null || true
796813 sleep 2
797814 mariadb-upgrade -u root 2> /dev/null || true
805822 rpm -e " $MARIADB_OLD_11 " --nodeps 2> /dev/null || true
806823 dnf install -y --enablerepo=mariadb MariaDB-server MariaDB-client MariaDB-devel 2> /dev/null || true
807824 mkdir -p /etc/my.cnf.d
808- printf " [client]\nskip-ssl = true \n" > /etc/my.cnf.d/cyberpanel-client.cnf 2> /dev/null || true
825+ printf " [client]\nssl=0\ nskip-ssl\n" > /etc/my.cnf.d/cyberpanel-client.cnf 2> /dev/null || true
809826 systemctl start mariadb 2> /dev/null || true
810827 sleep 2
811828 mariadb-upgrade -u root 2> /dev/null || true
828845 rpm -e " $STILL_11 " --nodeps 2> /dev/null || true
829846 dnf install -y --enablerepo=mariadb MariaDB-server MariaDB-client MariaDB-devel 2> /dev/null || true
830847 mkdir -p /etc/my.cnf.d
831- printf " [client]\nskip-ssl = true \n" > /etc/my.cnf.d/cyberpanel-client.cnf 2> /dev/null || true
848+ printf " [client]\nssl=0\ nskip-ssl\n" > /etc/my.cnf.d/cyberpanel-client.cnf 2> /dev/null || true
832849 systemctl start mariadb 2> /dev/null || true
833850 sleep 2
834851 mariadb-upgrade -u root 2> /dev/null || true
838855 fi
839856 # Allow local client to connect without SSL (11.x client defaults to SSL; 10.x server may not have it)
840857 mkdir -p /etc/my.cnf.d
841- printf " [client]\nskip-ssl = true\n" > /etc/my.cnf.d/cyberpanel-client.cnf 2> /dev/null || true
858+ printf " [client]\nssl=0\nskip-ssl\n" > /etc/my.cnf.d/cyberpanel-client.cnf 2> /dev/null || true
859+ # Ensure main my.cnf has [client] without SSL when server has SSL disabled (ERROR 2026 fix)
860+ if [[ -f /etc/my.cnf ]] && ! grep -q ' ^\[client\]' /etc/my.cnf 2> /dev/null; then
861+ echo -e " \n[client]\nssl=0\nskip-ssl" >> /etc/my.cnf
862+ fi
842863 # Optional: migrate from latin1 to UTF-8 (utf8mb4) when --migrate-to-utf8 and 11.x/12.x
843864 if [[ " $Migrate_MariaDB_To_UTF8_Requested " = " yes" ]] && { [[ " $MARIADB_VER_REPO " =~ ^11\. ]] || [[ " $MARIADB_VER_REPO " =~ ^12\. ]]; }; then
844865 Migrate_MariaDB_To_UTF8
863884
864885 # Install/upgrade MariaDB from our repo (any version: 10.11, 11.8, 12.x). Manual path for 10->11 and 11->12.
865886 MARIADB_OLD_10_AL9=$( rpm -qa ' MariaDB-server-10*' 2> /dev/null | head -1)
887+ [[ -z " $MARIADB_OLD_10_AL9 " ]] && MARIADB_OLD_10_AL9=$( rpm -qa 2> /dev/null | grep -E ' ^MariaDB-server-10\.' | head -1)
866888 MARIADB_OLD_11_AL9=$( rpm -qa ' MariaDB-server-11*' 2> /dev/null | head -1)
867889 [[ -z " $MARIADB_OLD_11_AL9 " ]] && MARIADB_OLD_11_AL9=$( rpm -qa ' MariaDB-server*' 2> /dev/null | grep -E ' MariaDB-server-11\.' | head -1)
868890 if [[ -n " $MARIADB_OLD_10_AL9 " ]] && { [[ " $MARIADB_VER_REPO " =~ ^11\. ]] || [[ " $MARIADB_VER_REPO " =~ ^12\. ]]; }; then
874896 rpm -e " $MARIADB_OLD_10_AL9 " --nodeps 2> /dev/null || true
875897 dnf install -y --enablerepo=mariadb MariaDB-server MariaDB-devel 2> /dev/null || dnf install -y mariadb-server mariadb-devel
876898 mkdir -p /etc/my.cnf.d
877- printf " [client]\nskip-ssl = true \n" > /etc/my.cnf.d/cyberpanel-client.cnf 2> /dev/null || true
899+ printf " [client]\nssl=0\ nskip-ssl\n" > /etc/my.cnf.d/cyberpanel-client.cnf 2> /dev/null || true
878900 systemctl start mariadb 2> /dev/null || true
879901 sleep 2
880902 mariadb-upgrade -u root 2> /dev/null || true
888910 rpm -e " $MARIADB_OLD_11_AL9 " --nodeps 2> /dev/null || true
889911 dnf install -y --enablerepo=mariadb MariaDB-server MariaDB-devel 2> /dev/null || dnf install -y mariadb-server mariadb-devel
890912 mkdir -p /etc/my.cnf.d
891- printf " [client]\nskip-ssl = true \n" > /etc/my.cnf.d/cyberpanel-client.cnf 2> /dev/null || true
913+ printf " [client]\nssl=0\ nskip-ssl\n" > /etc/my.cnf.d/cyberpanel-client.cnf 2> /dev/null || true
892914 systemctl start mariadb 2> /dev/null || true
893915 sleep 2
894916 mariadb-upgrade -u root 2> /dev/null || true
900922 fi
901923 # Allow local client to connect without SSL
902924 mkdir -p /etc/my.cnf.d
903- printf " [client]\nskip-ssl = true \n" > /etc/my.cnf.d/cyberpanel-client.cnf 2> /dev/null || true
925+ printf " [client]\nssl=0\ nskip-ssl\n" > /etc/my.cnf.d/cyberpanel-client.cnf 2> /dev/null || true
904926
905927 # Install additional required packages (omit curl - AlmaLinux 9 has curl-minimal, avoid conflict)
906928 dnf install -y wget unzip zip rsync firewalld psmisc git python3 python3-pip python3-devel 2> /dev/null || dnf install -y --allowerasing wget unzip zip rsync firewalld psmisc git python3 python3-pip python3-devel
@@ -1007,6 +1029,17 @@ if [[ "$Server_OS" = "openEuler" ]] ; then
10071029 dnf install python3 -y
10081030fi
10091031# all pre-upgrade operation for openEuler
1032+
1033+ # Ensure MariaDB client no-SSL on every upgrade path (avoids ERROR 2026 when server has have_ssl=DISABLED)
1034+ mkdir -p /etc/my.cnf.d
1035+ printf " [client]\nssl=0\nskip-ssl\n" > /etc/my.cnf.d/cyberpanel-client.cnf 2> /dev/null || true
1036+ if [[ -f /etc/my.cnf ]] && ! grep -q ' ^\[client\]' /etc/my.cnf 2> /dev/null; then
1037+ echo -e " \n[client]\nssl=0\nskip-ssl" >> /etc/my.cnf
1038+ fi
1039+ if [[ -d /etc/mysql/mariadb.conf.d ]]; then
1040+ printf " [client]\nssl=0\nskip-ssl\n" > /etc/mysql/mariadb.conf.d/99-cyberpanel-client.cnf 2> /dev/null || true
1041+ fi
1042+ echo -e " [$( date +" %Y-%m-%d %H:%M:%S" ) ] MariaDB client no-SSL config ensured." | tee -a /var/log/cyberpanel_upgrade_debug.log
10101043}
10111044
10121045Download_Requirement () {
@@ -1336,6 +1369,16 @@ fi
13361369
13371370echo -e " [$( date +" %Y-%m-%d %H:%M:%S" ) ] Running: $CP_PYTHON upgrade.py $Branch_Name " | tee -a /var/log/cyberpanel_upgrade_debug.log
13381371
1372+ # Export Git user so upgrade.py clones from the same repo (master3395 or --repo override)
1373+ export CYBERPANEL_GIT_USER=" ${Git_User:- usmannasir} "
1374+ # So upgrade.py can import plogical (it runs from /root/cyberpanel_upgrade_tmp)
1375+ export PYTHONPATH=" /usr/local/CyberCP${PYTHONPATH: +: $PYTHONPATH } "
1376+
1377+ # Run from dir that contains upgrade.py
1378+ for d in /root/cyberpanel_upgrade_tmp /usr/local/CyberCP; do
1379+ if [[ -f " $d /upgrade.py" ]]; then cd " $d " || true ; break ; fi
1380+ done
1381+
13391382# Run upgrade.py and capture output
13401383upgrade_output=$( " $CP_PYTHON " upgrade.py " $Branch_Name " 2>&1 )
13411384RETURN_CODE=$?
@@ -1402,6 +1445,8 @@ elif [[ "$Server_OS" = "openEuler" ]] ; then
14021445fi
14031446
14041447echo -e " [$( date +" %Y-%m-%d %H:%M:%S" ) ] Running fallback: /usr/local/CyberPanelTemp/bin/python upgrade.py $Branch_Name " | tee -a /var/log/cyberpanel_upgrade_debug.log
1448+ export CYBERPANEL_GIT_USER=" ${Git_User:- usmannasir} "
1449+ export PYTHONPATH=" /usr/local/CyberCP${PYTHONPATH: +: $PYTHONPATH } "
14051450/usr/local/CyberPanelTemp/bin/python upgrade.py " $Branch_Name " 2>&1 | tee -a /var/log/cyberpanel_upgrade_debug.log
14061451FALLBACK_CODE=$?
14071452echo -e " [$( date +" %Y-%m-%d %H:%M:%S" ) ] Fallback upgrade returned code: $FALLBACK_CODE " | tee -a /var/log/cyberpanel_upgrade_debug.log
@@ -1662,7 +1707,8 @@ Sync_CyberCP_To_Latest() {
16621707 cd /usr/local/CyberCP
16631708 git fetch origin 2>&1 | tee -a /var/log/cyberpanel_upgrade_debug.log
16641709 if git show-ref -q " refs/remotes/origin/$Branch_Name " ; then
1665- git checkout -B " $Branch_Name " " origin/$Branch_Name " 2>&1 | tee -a /var/log/cyberpanel_upgrade_debug.log
1710+ # Force tree to match remote so local changes/untracked files do not block (settings.py restored below)
1711+ git reset --hard " origin/$Branch_Name " 2>&1 | tee -a /var/log/cyberpanel_upgrade_debug.log
16661712 else
16671713 git checkout " $Branch_Name " 2> /dev/null || true
16681714 git pull --ff-only origin " $Branch_Name " 2>&1 | tee -a /var/log/cyberpanel_upgrade_debug.log || true
0 commit comments