Commit Graph

5418 Commits

Author SHA1 Message Date
Master3395
191fa6e90d Merge pull request #1673 from master3395/v2.5.5-dev
V2.5.5 dev
2026-02-04 19:27:30 +01:00
master3395
1f9e7c8336 Add missing install files from stable for v2.5.5-dev install
- install/installCyberPanel.py: required by venvsetup.sh sed commands
- install/env_generator.py: parity with stable/v2.4.4

No other merges; install paths that run venvsetup.sh will no longer fail.
2026-02-04 18:59:38 +01:00
master3395
b6d5472eb7 Fix Ban IP from Recent SSH Logs and Firewall Banned IPs
- plogical/firewallUtilities: fix inverted success/failure (result==1 = success); write blocked_ips.log under CyberCP/data for cyberpanel write access
- plogical/processUtilities: when root, use normalExecutioner return value so executioner reflects actual command success/failure
- firewall/firewallManager: addBannedIP uses FirewallUtilities.blockIP; ACL and all errors return JSON with error_message/error; rollback store if block fails
- baseTemplate/views: blockIPAddress uses FirewallUtilities.blockIP instead of subprocess
- baseTemplate/homePage: inline Ban IP calls /firewall/addBannedIP with ip/reason/duration; show server error in notifications
- baseTemplate/system-status.js: handle string response and show server error_message in success and error callbacks
2026-02-04 18:30:03 +01:00
master3395
2533532e78 Fix Pure-FTPd quota syntax and service start; improve services/API error reporting
- Pure-FTPd: use Quota maxfiles:maxsize (100000:100000) instead of invalid 'Quota yes'
  in install templates and enableFTPQuota (website.py) so daemon starts
- serverStatus: run systemctl as root, return detailed error on service start failure
- FTP quota UI: better error display and feedback for enable quota action
- Doc: to-do/PURE-FTPD-QUOTA-SYNTAX-FIX.md
2026-02-04 03:00:57 +01:00
master3395
ac6f4f6992 v2.5.5-dev: FTP Create Account fix, ftp_quotas table, CP_VERSION, mailUtilities indent, deploy scripts and docs
- baseTemplate: CP_VERSION from CYBERPANEL_FULL_VERSION (2.5.5.dev) for cache busting
- FTP Create Account: inline script + polling + scope sync so details form shows after website select
- ftp.js: showFTPDetails, select2/change handlers (ftp/static, static, public/static)
- sql/create_ftp_quotas.sql + deploy-ftp-quotas-table.sh for /ftp/quotaManagement
- plogical/mailUtilities.py: indentation fix in DNS query try/except block
- deploy-ftp-create-account-fix.sh, to-do docs (FTP-QUOTAS-TABLE-FIX, V2.5.5-DEV-FIXES-AND-DEPLOY, RUNTIME-VS-REPO)
2026-02-04 02:33:32 +01:00
master3395
27b664c3a9 Email Limits fix: controller registration, getEmailsForDomain permission, deploy script
- mailServer: inline EmailLimitsNew controller in footer_scripts, getEmailsForDomain allows emailForwarding
- mailServer.js: EmailLimitsNew guard for $scope.emails, remove console.log
- emailLimitsController.js: add standalone controller, fix PNotify check
- Add deploy-email-limits-fix.sh and EMAIL-LIMITS-DEPLOY-CHECKLIST.md
- Sync mailServer static files in both mailServer/static and static/
2026-02-04 02:19:28 +01:00
Master3395
9819a44ea0 Merge pull request #1672 from master3395/v2.5.5-dev
SSL renewal improvements, Cron Management fixes, and randomized renew…
2026-02-04 01:22:45 +01:00
master3395
8b29ce810d SSL renewal improvements, Cron Management fixes, and randomized renewal schedule
- Randomize SSL renewal cron: day (0-6), hour, minute to spread Let's Encrypt load
- Add SSL renewal schedule display on website overview (date + time)
- Use world-readable ssl_renewal_schedule.conf (web server can't read root crontab)
- renew.py updates config file on each run for web UI display
- Display format: full date (e.g. February 05, 2026 12:00 AM)
- Cron Management page: fix button/text visibility (contrast)
- launchChild: add renewal schedule to SSL section
2026-02-04 01:21:59 +01:00
Master3395
56d35a5547 Merge pull request #1671 from master3395/v2.5.5-dev
V2.5.5 dev
2026-02-04 00:58:12 +01:00
master3395
b6b0c1bf39 Fix File Manager: file deletion, special chars, upload auth (Root FM)
- Fix delete for domain and Root File Manager: use sudo helper when
  lscpd/executioner fails (TOKEN/sendCommand issues)
- Add safe-delete-path and safe-move-path helpers for base64 path handling
- Add ACLManager.isPathInsideHome and isFilePathSafeForShell for path validation
- Fix upload authorization for Root File Manager (domainName empty)
- Harden outputExecutioner result checks to prevent 500 on None
- Update Bootstrap CDN for CSP compatibility
- Improve error display and a11y focus management in modals
- Resolves #1670: files with special characters can be uploaded/deleted
2026-02-04 00:55:58 +01:00
master3395
9273362aee Fix SSH custom port duplicate binding in sshd_config
- saveSSHConfigs() now writes only one Port line (was writing one per
  existing Port line, causing duplicate Port entries and 'Address
  already in use' from sshd)
- Match only actual 'Port N' directive; exclude GatewayPorts and other
  lines containing 'Port'
- If no Port line exists in config, append one

Fixes: https://github.com/usmannasir/cyberpanel/issues/1668#issue-3881969535
2026-02-03 23:42:18 +01:00
master3395
5450ff7f7c MariaDB 11.8/12.1: tests, downgrade note, doc
- test/upgrader_mariadb_version_test.sh: upgrader arg parsing and repo URL
- test/test_upgrade_mariadb_version.py: mariadb_version file read, downgrade
- test/run_mariadb_tests.sh: run all MariaDB version tests
- cyberpanel_upgrade.sh: prompt mentions re-run for downgrade (11.8/12.1)
- to-do/MARIADB-11.8-LTS-UPGRADE.md: 11.8/12.1 choice, downgrade, test commands
2026-02-03 21:23:52 +01:00
master3395
fbe97a4e79 Let user choose MariaDB 11.8 or 12.1; default 11.8
- install.py: use preFlightsChecks.mariadb_version in mariadb_repo_setup
- venvsetup.sh: prompt for MariaDB 11.8/12.1 in interactive install, pass --mariadb-version to install.py
- cyberpanel_upgrade.sh: add MARIADB_VER (default 11.8), --mariadb-version arg, interactive prompt, write /etc/cyberpanel/mariadb_version, use in MariaDB.repo
- plogical/upgrade.py: read mariadb_version from /etc/cyberpanel/mariadb_version in fix_almalinux9_mariadb(), default 11.8
2026-02-03 21:17:25 +01:00
master3395
b037e37bde cyberpanel_upgrade: prefer MariaDB-server/MariaDB-client/MariaDB-devel for dnf install (AlmaLinux 9) 2026-02-03 21:12:16 +01:00
master3395
d130785ab1 MariaDB 11.8 LTS: use 11.8 for install and upgrade (replace 10.11/12.1)
- cyberpanel_upgrade.sh: MariaDB.repo baseurl 12.1 -> 11.8
- plogical/upgrade.py: mariadb_repo_setup 10.11 -> 11.8 (AlmaLinux 9 fix)
- install/install.py: mariadb_repo_setup 12.1 -> 11.8; _attemptMariaDBUpgrade and installMySQL target 11.8; disableMariaDB12RepositoryIfNeeded for 10.x; use existing if 11.x/12.x
- install/universal_os_fixes.py: setup_mariadb_repository 12.1 -> 11.8
- databases/databaseManager.py: mysqlversions add 11.8
- plogical/mysqlUtilities.py: RHEL baseurl https and versionToInstall
- to-do/MARIADB-11.8-LTS-UPGRADE.md
2026-02-03 21:08:32 +01:00
master3395
bbe91c34a4 OLS 1.8.5+ and LSWS 6.3.4: LiteSpeed repo, version check, LSWS fallback and sed
- Install: add LiteSpeed repo (repo.litespeed.sh), install openlitespeed; keep official binary if >= 1.8.5, else optional custom binary overlay
- Upgrade: add repo, upgrade openlitespeed package; only run installCustomOLSBinaries if version < 1.8.5
- LSWS: fallback to 6.3.4 when API empty in cyberpanel_upgrade.sh and venvsetup.sh; sed lsws-6.0 and lsws-6.3.4 to latest stable
- plogical/upgrade: add_litespeed_repo(), get_installed_ols_version(); install.py: add_litespeed_repo(), get_installed_ols_version()
2026-02-03 20:45:55 +01:00
master3395
1685c79139 Upgrader: add --no-system-update to skip full yum/dnf update
Speeds up upgrade when system packages are already updated. Use:
  bash cyberpanel_upgrade.sh -b 2.5.5-dev -r master3395 --no-system-update
2026-02-03 20:01:50 +01:00
master3395
4c24de7453 Sync with live: baseTemplate, firewall, manageSSL, plogical/acl, ftp, websiteFunctions, wsgi
Only files that match current live server; excludes settings.py (deployment-specific), pluginHolder/pluginInstaller (repo ahead), install/cyberpanel scripts (diff), and deleted static files (still on server).
2026-02-03 19:50:17 +01:00
master3395
02c8a9b6ac Plugin upgrade: sync meta.xml from GitHub raw so version matches store; logging get_current_timestamp
- Add CyberCPLogFileWriter.get_current_timestamp() for errorSanitizer (fixes 500 logging)
- After upgrade/install: fetch meta.xml from raw GitHub and overwrite installed file so
  store version (e.g. 1.1.0) is correct even when archive ZIP is cached/stale
- Upgrade/install: discover ZIP top-level folder and match plugin folder case-insensitively
- Improves redisManager/memcacheManager upgrade and all store installs
2026-02-03 19:37:36 +01:00
master3395
6218cfd064 Log successful plugin install (upload) to CyberPanel main log 2026-02-03 19:28:10 +01:00
master3395
df7c5ba234 Only include plugin URLs when app is in INSTALLED_APPS
Skip dynamic plugin URL inclusion for plugins that are on disk but not
in Django INSTALLED_APPS to avoid RuntimeError when loading models.
Plugin installer adds apps to INSTALLED_APPS on install; this prevents
breakage when that step was missed or reverted.
2026-02-03 19:09:46 +01:00
master3395
0225f2f95a Fix plugin settings 404: dynamic URL inclusion for all installed plugins
- pluginHolder/urls.py: Discover plugins from /usr/local/CyberCP and source
  paths (/home/cyberpanel/plugins, /home/cyberpanel-plugins); dynamically
  include each plugin's urls so /plugins/<name>/settings/ works without
  hardcoding. Add source path to sys.path when loading from source.
- CyberCP/urls.py: Remove hardcoded _plugin_routes; all plugin routes now
  served via pluginHolder dynamic inclusion.

Fixes 404 on /plugins/contaboAutoSnapshot/settings/ and any installed plugin
settings page. No per-plugin core changes required.
2026-02-03 18:46:05 +01:00
master3395
820dbf37be Fix User Management: Create User, List Users, Modify User
- Create User: Don't show 'Unknown error' on load; fix inverted success/failure
  logic in static/ and public/static/ userManagment.js
- List Users: Use <button> for Edit/Delete/Suspend/Activate; add showModalById/
  hideModalById for Bootstrap 3/5; fix public/static missing modal show calls
- Modify User: Fix inverted canotModifyUser/canotFetchDetails in all three
  userManagment.js copies; hide modify error when only fetching details
- Add deploy-createuser-fix.sh to copy fixed JS and run collectstatic on server
2026-02-03 00:42:48 +01:00
master3395
d9329e2a21 Remove bundled plugins from v2.5.5-dev - plugins live in cyberpanel-plugins only
Removed: emailMarketing, examplePlugin, paypalPremiumPlugin, premiumPlugin, testPlugin

All plugins are now installed via Plugin Store from https://github.com/master3395/cyberpanel-plugins
2026-02-03 00:00:59 +01:00
master3395
d8ee83e30d Plugin Store & Installed Plugins: search bar, A-Å sort, sort toggle, Store A-Å label
- Installed plugins: search box in header (same row as Activate/Deactivate All)
- Grid/Table: default sort A-Å by name; sort bar with Name (toggle A-Å/Å-A), Type, Date (toggle newest/oldest)
- Apply sort on load so list shows A-Å when Name A-Å is selected
- Store view: letter filter label 'A-Å Filter' (not A-Z); add Æ, Ø, Å to letter buttons
- views.py: sort pluginList by name (case-insensitive) before template
- Add deploy-installed-plugins-search.sh for template deployment
2026-02-02 20:39:56 +01:00
master3395
1118f63b1a Plugin updates: premiumPlugin & paypalPremiumPlugin unified verification, Installed Plugins UI improvements 2026-02-02 03:39:42 +01:00
master3395
462f87a578 Remove Patreon/subscribe messaging from plugin front - only in Settings 2026-02-02 03:01:14 +01:00
Master3395
2162779783 Merge pull request #1669 from master3395/v2.5.5-dev
V2.5.5 dev
2026-02-02 02:57:19 +01:00
Master3395
762d039d9d Remove old
Remove old
2026-02-02 02:56:43 +01:00
master3395
17828d0a37 Merge cyberpanel-fix: add install scripts, docs, and repo merge notes 2026-02-02 02:51:27 +01:00
master3395
4757d45b11 Plugin Development Guide: bump version to 2.1.0 2026-02-02 02:36:23 +01:00
master3395
d6d1f2d993 Plugin Development Guide: add collapsible accordion sections 2026-02-02 02:35:23 +01:00
master3395
e32219edde Plugin Store: badges (NEW/Stable/Unstable/STALE), Activate/Deactivate All, categories & premium docs in help 2026-02-02 02:18:05 +01:00
master3395
86b5ed6e0e feat: no plugins required by default; Plugin Store category updates
- Remove emailMarketing from default INSTALLED_APPS
- Comment out emailMarketing URL (plugin installer adds when installed)
- Bump emailMarketing, examplePlugin meta.xml to 1.0.1
- Plugin Holder: remove Plugin category, enforce Utility/Security/Backup/Performance
- Add to-do/PLUGIN-DEFAULT-REMOVAL-2026-02-01.md
2026-02-01 23:47:12 +01:00
Master3395
6e935d64c7 Merge pull request #1667 from master3395/v2.5.5-dev
V2.5.5 dev
2026-02-01 01:39:52 +01:00
Master3395
7f07e3969e Delete UNIVERSAL_OS_COMPATIBILITY.md 2026-01-31 23:06:40 +01:00
master3395
37bebeb425 Fix: Add local DNS fallback to reverse_dns_lookup() - Resolves issue #1654 2026-01-31 20:46:30 +01:00
Master3395
0228ff0c33 Remove deprecated files.
Remove deprecated files.
2026-01-31 20:28:29 +01:00
Master3395
3aa2747d5c Delete MARIADB_INSTALLATION_FIXES.md 2026-01-31 17:58:40 +01:00
Master3395
4f5771e37b Merge pull request #7 from master3395/revert-4-fix/elevate-install-upgrade
Revert "fix: auto-elevate installer/upgrade"
2026-01-31 17:09:30 +01:00
Master3395
020d14fa0c Revert "fix: auto-elevate installer/upgrade" 2026-01-31 17:09:19 +01:00
Master3395
40bed7b764 Merge pull request #4 from KraoESPfan1n/fix/elevate-install-upgrade
fix: auto-elevate installer/upgrade
2026-01-30 23:31:55 +01:00
KraoESPfan1n
81a27b05f3 fix: add installer/upgrade logging 2026-01-30 22:26:22 +00:00
KraoESPfan1n
07e5715fed fix: auto-elevate installer/upgrade 2026-01-30 22:09:27 +00:00
Master3395
348fca4230 Merge pull request #1665 from master3395/v2.5.5-dev
V2.5.5 dev
2026-01-30 20:35:27 +01:00
master3395
238f4b7478 Dashboard, user management, and FTP quota fixes for v2.5.5-dev
- base: Clickable insight cards (Users, Websites, WordPress, DBs, Emails, FTP)
- base: data-cfasync=false on scripts for Cloudflare Rocket Loader compatibility
- userManagment: createUser/modifyUser/createACL/apiAccess fixes, alert logic
- websiteFunctions: FTP quota management, createWebsite, ACLManager fix
2026-01-30 20:34:29 +01:00
master3395
30f5e375eb Merge origin/v2.5.5-dev - keep FTP, dashboard, notification fixes 2026-01-30 19:46:39 +01:00
master3395
6598bf818f FTP, dashboard, and notification fixes for v2.5.5-dev
- FTP: Fix createFTPAccount (ChildDomains), deleteFTPAccount, ResetFTPConfigurations, listFTPAccounts, quotaManagement
- FTP: Add quotaManagement page at /ftp/quotaManagement, improve reset status polling and error display
- Dashboard: Fix Angular ng-click parse error (remove return false from blockIPAddress)
- Dashboard: Add data-cfasync=false to jQuery/system-status for Rocket Loader compatibility
- FTP Quota Management: Improve error handling, fix refreshQuotas success/error callbacks
- Notification: Add updated_at column for usernotificationpreferences (run SQL migration)
2026-01-30 19:46:05 +01:00
Master3395
0814f8c792 Merge pull request #1664 from master3395/v2.5.5-dev
…tent-type, fix IP validation, and add comprehensive logging

- Fixed IP validation logic in blockIPAddress function
- Added proper JSON content-type header in firewallManager.py addBannedIP response
- Improved error handling with try-catch wrapper
- Added comprehensive console logging for debugging
- Fixed button onclick handler interference with ng-click
- Added $scope.$apply() calls for proper AngularJS view updates
- Enhanced error message parsing and display
- Fixed duplicate error notification prevention
2026-01-29 01:05:12 +01:00
master3395
14152d150b Fix Ban IP functionality: Improve error handling, add proper JSON content-type, fix IP validation, and add comprehensive logging
- Fixed IP validation logic in blockIPAddress function
- Added proper JSON content-type header in firewallManager.py addBannedIP response
- Improved error handling with try-catch wrapper
- Added comprehensive console logging for debugging
- Fixed button onclick handler interference with ng-click
- Added $scope.$apply() calls for proper AngularJS view updates
- Enhanced error message parsing and display
- Fixed duplicate error notification prevention
2026-01-29 01:02:35 +01:00