Commit Graph

92 Commits

Author SHA1 Message Date
master3395
35fe6abba6 Version Management: show fork + upstream tips; upstream-only when origin is official
- Parse git origin; show fork block only when not usmannasir/cyberpanel
- Always fetch official upstream branch tip; fetch fork tip when fork
- Notecheck: fork installs vs fork tip; official vs upstream tip
- Template: tracking branch, optional fork rows, drift info; clarify warning
2026-03-27 22:35:16 +01:00
master3395
ce11e643bd feat(versionManagment): fork vs official upstream rows and layout refresh
- views: remote_display, branch_ref, fork_remote_commit, upstream_commit,
  short SHAs, GitHub commit URLs, notecheck_compare_remote, local_behind_official
- template: installation grid, full-width meta rows, i18n upgrade note,
  info notice when local differs from official upstream on dev
2026-03-27 22:08:45 +01:00
master3395
cbbb1b8dba fix(versionManagment): compare dev fork installs to fork branch on GitHub
Official usmannasir/cyberpanel origin still uses upstream v2.5.5-dev tip;
forks now resolve latest commit from origin owner/repo so local HEAD can
match Latest Commit without false upgrade notices.
2026-03-27 21:58:48 +01:00
master3395
1c6ab7a188 feat(baseTemplate): plugin sidebar context; LPMA link for grant-only users
- plugin_sidebar_context: show_plugins_menu, Limited phpMyAdmin for cpuser grants
- index.html: conditional Installed/Store vs grant-only LPMA submenu
2026-03-27 21:48:25 +01:00
master3395
4d62272664 Merge upstream v2.4.5 into v2.5.5-dev for full stack parity
Integrates webmail and emailDelivery apps, mail-server and install/upgrade
paths, cyberpanel_ols 2.7.0-style binaries, and v2.4.5 UI patterns while
preserving v2.5.5-dev behavior (SnappyMail/PUBLIC_ROOT, childPath in
launchChild, hardened downloads and SSH activity modal).
2026-03-25 20:36:51 +01:00
master3395
b3ae20cba0 Add managePlugins ACL + enforce pluginHolder actions
Ensures delegated admins with plugin management permission can access `/plugins/installed` UI and all plugin action endpoints consistently.
2026-03-25 10:12:48 +01:00
master3395
4be0bfd5aa 2FA/WebAuthn, user management, deploy and fix scripts
- loginSystem: WebAuthn (webauthn backend, models, urls, views), login template and webauthn.js
- baseTemplate: index.html updates
- docs: 2FA_AUTHENTICATION_GUIDE.md
- userManagment: createUser/modifyUser templates, userManagment.js, views, tests; check_modify_users_page.py
- requirments.txt: add webauthn>=2.0.0
- deploy-templates.sh: deploy templates/static to live CyberCP
- fix-cyberpanel-500.sh: script for common HTTP 500 login fixes (MariaDB, configservercsf, cache, restart)
2026-03-07 02:46:15 +01:00
master3395
63fb988b55 Docker containers 500 fix, firewall banned IPs, container logs readability, base Ban IP sync to DB
- dockerManager: add 0001_initial migration (CREATE TABLE IF NOT EXISTS), migrate-and-retry on DB errors, safe error response, fix logging.CyberCPLogFileWriter.writeToFile
- dockerManager/views: listContainersPage fallback HTML with error message if template fails
- dockerManager/viewContainer: improve container log readability (font-size 1rem, color #f1f5f9, line-height 1.6)
- baseTemplate: blockIPAddress also adds ban to firewall BannedIP model so Firewall > Banned IPs shows all
- firewall: getBannedIPs migrate-and-retry on OperationalError/ProgrammingError; install runs migrate firewall
- plogical/upgrade: syncBannedIPsJsonToDb() to sync JSON bans to firewall_bannedips; firewallMigrations() calls it; CyberPanelUpgrade runs firewallMigrations(); someDirectories creates /usr/local/CyberCP/data
- install: explicit migrate firewall after global migrate
2026-03-06 18:50:30 +01:00
usmannasir
ff5444bef8 Bump version to 2.4.5
- Update CP_VERSION to 2.4.5 in base template (busts static resource cache)
- Update BUILD to 5 in baseTemplate/views.py
- Update version.txt build to 5
- Update branch references in fix_cyberpanel_install.sh and docs
2026-03-06 16:42:54 +05:00
usmannasir
1e00f6eff5 Add CyberMail Email Delivery integration
- New emailDelivery Django app with full platform API integration
- Account connection, domain management, SMTP credentials, relay config
- Auto-configure SPF/DKIM/DMARC DNS records via PowerDNS
- Postfix SMTP relay through CyberMail (configureRelayHost/removeRelayHost)
- Real-time delivery logs, stats, and per-domain analytics
- Single-page AngularJS dashboard with marketing landing page
- Promotional banners on 6 email-related pages with dismiss cookie
- Manual SQL table creation in upgrade.py for existing installs
- Documentation: setup guide, technical reference, user guide
2026-03-06 00:19:53 +05:00
usmannasir
72f33d3bcd Add integrated webmail client with SSO, contacts, and Sieve rules
Replace SnappyMail link with a custom Django webmail app that provides:
- Full IMAP/SMTP integration (Dovecot + Postfix) with master user SSO
- 3-column responsive UI matching CyberPanel design system
- Compose with rich text editor, attachments, reply/forward
- Contact management with auto-collect from sent messages
- Sieve mail filter rules with ManageSieve protocol support
- Standalone login page for direct webmail access
- Account switcher for admins managing multiple email accounts
- HTML email sanitization (whitelist-based, external image proxy)
- Draft auto-save and per-user settings
2026-03-05 02:49:00 +05:00
KraoESPfan1n
5f6ca0d379 Merge origin/v2.5.5-dev: Plugin Store sidebar, ?view=store, master3395 default, clone comment 2026-02-16 23:51:13 +01:00
master3395
6a172f2736 Sidebar: add Plugin Store link under Plugins submenu 2026-02-16 23:48:09 +01:00
master3395
e458e04a8e Sidebar: add Plugin Store link; upgrade: MariaDB 12.3 path, master3395 clone
- baseTemplate: add 'Plugin Store' to Plugins submenu (links to ?view=store)
- pluginHolder/plugins.html: respect URL param view=store on load
- cyberpanel_upgrade.sh: proper MariaDB major-version upgrade (stop, remove, install, start, mariadb-upgrade); use CYBERPANEL_GIT_USER only (remove server-specific path)
- plogical/upgrade.py: clone URL from CYBERPANEL_GIT_USER for fork
2026-02-16 23:47:49 +01:00
master3395
dbbcd945d2 Ban IP: close connections when already banned; install conntrack-tools on all OS
- firewallUtilities: add closeConnectionsFromIP() using conntrack -D -s IP
- addBannedIP: when IP already banned, close connections and return success message
- Frontend: always call API on Ban IP so backend can close connections; show server message
- Install: add conntrack-tools (RHEL) / conntrack (Debian/Ubuntu) to all install paths
  (rhel_deps, debian_deps, install_modules/01_verify_deps, install.py, venvsetup)
2026-02-16 19:54:37 +01:00
master3395
ea05bb1671 Add Select2 vendor assets (baseTemplate and static) 2026-02-16 19:25:54 +01:00
master3395
1d22c961c1 DNS: cache-bust dns.js (DNS_STATIC_VERSION), no-cache headers on CloudFlare page 2026-02-16 18:09:58 +01:00
master3395
236607181d Remove Fix Subdomain Logs page; fix view to pass request for ACL
- Remove Fix Subdomain Logs menu item from sidebar
- Remove fixSubdomainLogs and fixSubdomainLogsAction URL routes
- Views: pass request to WebsiteManager (fixSubdomainLogs/ fixSubdomainLogsAction) for correct ACL check
2026-02-16 14:00:52 +01:00
master3395
9390551ebd Firewall: fix search bar, Search button, Modify centering, system-status $ error
- Search input: add firewall-search-input class, blue focus instead of red (avoids read-only/error look)
- Search button: use btn-search with round futuristic style (match Ban IP/Overview)
- Actions column: center Modify/Unban/Delete in Firewall Rules and Banned IPs tables
- system-status.js: increment() uses document.querySelectorAll (no jQuery), fixes $ is not defined
- upgrade_modules/09_sync.sh: sync firewall static to public/static during upgrade
- to-do/FIREWALL-LOAD-CHANGES.md: doc on file locations and deploy steps
2026-02-16 03:16:18 +01:00
master3395
bcebd8883a fix(firewall): banned IPs search, modify modal, export/import, Tracking Prevention
- Add searchBannedIPFilter for searching banned IPs by IP, reason, or status
- Add openModifyModal, closeModifyModal, saveModifyBannedIP for modify modal
- Add exportBannedIPs and importBannedIPs for export/import buttons
- Wrap localStorage in try-catch in base template to handle Tracking Prevention
  (Firefox/Safari blocking storage access for cross-site context)
- Fixes firewall banned IPs page search and functionality
2026-02-16 00:20:57 +01:00
master3395
0f1ef2f101 Fix ACL Delete DNS Zone (issue #1701): permission UI and legacy config
- plogical/acl.py: use config.get() for DNS permissions so old ACLs without
  deleteZone key do not cause KeyError
- baseTemplate: add deleteZone/addDeleteRecords CSS classes to DNS menu links
  for correct permission-based hiding
- system-status.js: fix swapped selectors (deleteZone hides .deleteZone,
  addDeleteRecords hides .addDeleteRecords instead of .deleteDatabase)
2026-02-16 00:09:52 +01:00
master3395
9a2afefb95 Notification dropdown: scroll, button size, dark-mode text; install/upgrade use usmannasir URLs
- index.html: notification dropdown scroll (list max-height, flex min-height:0), button min-width and contrast, dark text on white for dark mode visibility
- cyberpanel.sh, cyberpanel_upgrade.sh, preUpgrade.sh: default install/upgrade URLs to usmannasir/cyberpanel (keep -r/--repo for fork)
- databases/plogical: AutoLogin, views, phpmyadminsignin updates
2026-02-15 03:02:08 +01:00
master3395
370a3e796d fix: dashboard loading - register newDashboardStat alias, init systemStatusInfo defaults
- Register dashboard controller under both 'dashboardStatsController' and
  'newDashboardStat' so templates/caches using either name work (fixes
  $controller:ctrlreg error and unrendered {$ cpuUsage $} placeholders)
- Initialize systemStatusInfo scope with cpuUsage/ramUsage/diskUsage etc.
  defaults so overview never shows undefined when API is slow or fails
- Set defaults in cantLoadInitialData on getSystemStatus failure
2026-02-15 02:36:05 +01:00
master3395
3cb149ba4f Version management: fix upgrade polling, branch dropdown, log visibility
- Fix ReferenceError: use $timeout instead of timeout, store timer for cancel
- Add v2.5.5-dev to Select Branch dropdown (remove dev filter)
- Limit branch list to latest 10 by version
- Fix Upgrade Progress Log text visibility (light text on dark bg)
2026-02-15 01:16:01 +01:00
master3395
a32636c99e Version management: dev branch uses v2.5.5-dev, show 'not up to date' when behind
- On dev (2.5.5 dev): show Latest Version 2.5.5, Latest Build dev
- Compare Current Commit vs usmannasir v2.5.5-dev latest (e75ca45...)
- Show yellow banner when behind; fork users compare to upstream dev
- Stable branch unchanged (cyberpanel.net)
2026-02-15 01:01:09 +01:00
master3395
0a82d91956 Version management: fork-aware logic, show Current/Latest commit for forks
- Treat v2.5.5-dev as up to date; suppress upgrade banner for forks
- Always fetch and display Current Commit (local HEAD)
- For forks: fetch Latest Commit from fork's GitHub API
- Add _version_compare helper; wrap cyberpanel.net fetch in try/except
2026-02-15 00:53:32 +01:00
master3395
1ff66216a6 Version Management: always show v2.5.5-dev as up to date; upgrade fixes
- versionManagment: explicitly treat 2.5.5 dev as up to date (before version compare)
- Add try/except for cyberpanel.net/version.txt fetch
- Add /base/versionManagement URL alias for versionManagment
- cyberpanel_upgrade: ols_binaries_config download, AlmaLinux mirror fix, SERVER_IP display
2026-02-15 00:27:45 +01:00
master3395
0ca62a81c1 versionManagement: use usmannasir only, allow local installs, up-to-date if version higher
- versionManagment/versionManagement: detect git origin, compare only against usmannasir
- Local/fork installs: show up to date (no update nag)
- If current version > cyberpanel.net latest: show up to date
- cyberpanel_upgrade.sh: python3 -m venv for AlmaLinux 9/10, pip upgrade

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-14 23:47:37 +01:00
master3395
4177f0023b Misc: firewall, pluginHolder, mobile CSS, install utilities, static assets
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-14 23:02:47 +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
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
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
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
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
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
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
master3395
f7d173a8cb Bump version to 2.5.5-dev for v2.5.5-dev branch 2026-01-28 02:47:14 +01:00
master3395
35a4e90698 Fix dashboard insights 500s: FTPUsers filter, session/ACL safety, /proc hardening
- FTPUsers: use domain__domain__in (FK to Websites) not domain__in
- Session: use session.get('userID'), return JSON when missing
- ACL: use currentACL.get('admin',0) to avoid KeyError
- /proc: resilient parsing for net/dev, diskstats, stat
- Log errors via CyberCPLogFileWriter; generic user-facing messages
- Prevents intermittent 500s that zero out insights (Users, Sites, etc.)
2026-01-26 20:01:34 +01:00
master3395
db7bc3791a fix: Completely remove emailMarketing template reference
Remove commented-out emailMarketing URL reference from template.
Django may still try to parse commented {% url %} tags, causing
'Reverse for emailMarketing not found' error.
2026-01-26 03:12:27 +01:00
master3395
806571e0f1 fix: Remove emailMarketing references after removal from INSTALLED_APPS
- Comment out emailMarketing menu item in baseTemplate/index.html
- Skip emailMarketing in pluginHolder/views.py when listing plugins
- Prevents HTTP 500 error when template tries to reverse 'emailMarketing' URL

Fixes: HTTP 500 on /plugins/installed after emailMarketing removal
2026-01-26 03:09:58 +01:00
master3395
b4a9a0741f fix(docker): listContainers HTML page – avoid JSON/cache mix-up
- Add GET /docker/containers for HTML page; GET /docker/listContainers redirects there
- POST /docker/listContainers returns 405 (page uses getContainerList for data)
- Remove duplicate listContainers Angular controller; fix pagination (getContainerList)
- Extend getContainerList API: totalCount, totalPages, currentPage, itemsPerPage
- Add ACTIVITY BOARD-style pagination: Prev/Next, Go to page, Showing X–Y of Z
- Update menu/templates/JS redirects to /docker/containers
- Sync dockerManager.js across app static, STATIC_ROOT, public/static
- Cache-Control on HTML response; cache-bust script ?v=4

Fixes raw JSON instead of UI when loading /docker/listContainers (cache/proxy
serving stored JSON for GET). Use /docker/containers for the page.
2026-01-25 03:56:25 +01:00
master3395
38ba15d1d6 Fix AngularJS controller registration issue
- Make app variable global in system-status.js to fix [$controller:ctrlreg] errors
- Add module reference check in websiteFunctions.js for compatibility
- Ensures all controllers can register properly with the CyberCP module
- Fixes dashboard data loading and WordPress creation page functionality
2026-01-22 19:25:00 +01:00
master3395
a7b250d40f Fix dashboard stats loading - match v2.4.4 implementation
- Simplified getSystemStatus to return HttpResponse without explicit content_type
- Removed excessive logging and complex error handling
- Simplified systemStatusInfo controller to match v2.4.4 behavior
- Simplified pollDashboardStats to match v2.4.4 implementation
- Removed CSRF token headers from GET requests
- Fixed dashboard stats (CPU, RAM, Disk, Uptime, Users, Sites, DBs, Emails, FTP) not loading
- Matches working v2.4.4 implementation exactly
2026-01-19 21:59:02 +01:00
master3395
fedf5817cc Fix dashboard data binding - use ng-bind instead of template syntax and add ng-cloak 2026-01-19 18:16:56 +01:00
master3395
3951979242 Add icon support for View Details button in .htaccess notification 2026-01-19 18:10:21 +01:00
master3395
f6b759d31b Force icon display with !important and add info icon to Learn More button 2026-01-19 18:07:33 +01:00
master3395
d237358168 Fix Learn More button text visibility and ensure .htaccess icon displays 2026-01-19 18:06:19 +01:00
master3395
513c61eab0 Make Learn More button text prominent and fix notification links 2026-01-19 18:03:39 +01:00