Commit Graph

11600 Commits

Author SHA1 Message Date
master3395
5c89367aeb Restore SnappyMail list-unsubscribe-header plugin step after SnappyMail install
Re-run install_and_enable_list_unsubscribe_header_plugin from plogical.snappymail_plugin_utilities after snappymail_cyberpanel.php; keep bundled plugin under install/snappymail/plugins/.
2026-04-11 21:43:36 +02:00
master3395
de616c0c7c Version Management: upgrade log polling, progress 0-100%, origin label
- upgradeStatus: handle missing log and cat stderr; read upgrade_progress JSON; return progress; remove progress file on completion.
- upgrade.py: ProgressPathNew sidecar, init log/progress at SoftUpgrade start, monotonic progress from log size and 100 on Upgrade Completed, cleanup progress file after soft upgrade.
- upgrade() POST returns progress 0 when upgrade thread starts.
- versionManagment: relabel fork row as Your repository (git origin).
- system-status.js: show Upgrade Progress percentage during polling (3x paths synced via cp).
2026-04-11 21:34:30 +02:00
Master3395
d629da06e5 Merge pull request #1757 from master3395/v2.5.5-dev
V2.5.5 dev
2026-04-11 20:35:10 +02:00
master3395
0519e797f5 Docker Manager: image refresh, history UI, ports in settings
- container.py: optional force_update on image pull/install; saveContainerSettings accepts normalized client ports on recreate; loadContainerHome exposes ports_json for Angular; _normalize_ports_for_save helper.
- manageImages.html: image history modal layout; Refresh control for image pull.
- viewContainer.html: port mappings inside Container Settings; ports_json ng-init; checkbox/toggle/compose CSS fixes; remove standalone Edit Ports modal.
- dockerManager.js (3x): initAngularPortsFromServer, flat DB port map + inspect fallback, portsDirty/saveSettings integration, advanced-env switch checked styles support, refreshContainerInfo, image history formatting helpers.
2026-04-11 20:31:58 +02:00
master3395
ca6cbb7ebd Add Rspamd UI reverse-proxy view and sync mail stack helpers
- Insert rspamd_ui_proxy in emailPremium/views.py with http.client and csrf_exempt imports so /emailPremium/Rspamd/ui matches urls.py (Rspamd 3.8+ controller headers).
- Refresh plogical/mailUtilities.py from tested vendor fixes (Postfix/Dovecot/Rspamd install paths, SnappyMail-related mail flows).
2026-04-11 19:38:27 +02:00
master3395
7306fcb87d Bundle SnappyMail list-unsubscribe-header plugin; enable on install/upgrade
- Add install/snappymail/plugins/list-unsubscribe-header (upstream GitHub plugin)
- Add plogical/snappymail_plugin_utilities.py to copy into snappymail + legacy rainloop data roots and merge enabled_list
- Run after SnappyMail CyberPanel installer in install.py and upgrade.py
- InstallMailBoxFoldersPlugin now merges plugins instead of replacing enabled_list; also installs list-unsubscribe

Roundcube is not shipped by CyberPanel core; SnappyMail is the bundled webmail.
2026-04-11 01:51:09 +02:00
master3395
46c9725715 fix(emailPremium): Rspamd admin UI Angular binding and panel proxy URL
Pass rspamd_ui_url from Rspamd view; safe machineIP read; bootstrap window.app
before controllers; replace invalid {$ errorMessage $} with ng-bind; fix
textareas; clarify HTTPS UI via CyberPanel proxy vs SSH tunnel localhost.
2026-04-11 00:21:14 +02:00
master3395
92acb9a3b8 fix(firewall): pagination ng-show + firewall.js cache bust (cb=11)
ng-if on pagination bars created a child scope so ng-model for Per page and Go to page updated a shadowed copy; handlers read the controller scope — controls appeared to do nothing. Use ng-show instead.

Bump firewall.js query cb after merge with upstream (cb=11) so browsers reload the script.
2026-04-10 21:39:26 +02:00
Master3395
adc70e8bfc Merge pull request #1756 from master3395/v2.5.5-dev
V2.5.5 dev
2026-04-10 20:33:05 +02:00
master3395
6d386da22f Merge upstream/usmannasir v2.5.5-dev into fork (resolve PR #1756 conflicts)
- Take upstream baseTemplate dashboard, mail/process utilities, webauthn, emailPremium.
- Keep fork firewall: rulesLoading/synced JS, trusted-SSH tab, SSH whitelist ban guard.
- Firewall script cache-bust stays cb=6 in index.
2026-04-10 20:32:21 +02:00
master3395
6a52cc54bd Firewall: sync rulesLoading fix to public/static; harden rules fetch; cb=6
Tracked copies (public/static, static) must match firewall/static so the panel serves the fixed JS. Add rulesFetchGen, try/finally, fetchStatus==1, expose populateCurrentRecords on scope.
2026-04-10 19:30:20 +02:00
master3395
9941a09865 Dashboard Top Process: Pause/Resume auto-refresh button 2026-04-10 18:52:20 +02:00
master3395
06a3823c57 Dashboard Top Process: silent refresh, 10s interval, no 2s table flash
Stop tying process list to chart poll; background refresh updates rows
without loading spinner. First load still shows spinner once.
2026-04-10 18:48:53 +02:00
master3395
9ac5a16079 Dashboard SSH pagination: default 3 per page, add 5 option 2026-04-10 18:45:37 +02:00
master3395
7736e0ef95 Dashboard SSH pagination: fix ng-if scope shadowing for per-page and go-to
Use $parent ng-model bindings inside ng-if so values update the controller
scope. Coerce per-page to int in slice math to avoid string concat bugs.
2026-04-10 18:17:18 +02:00
master3395
8db49babae Dashboard SSH: bind tables to paginated arrays so page/per-page works
ng-repeat used full sshLogins/sshLogs while pagination updated
sshLoginsPaginated/sshLogsPaginated; rows never changed.
2026-04-10 18:09:30 +02:00
master3395
8f57463550 SSH trusted IPs: sync UI and analysis with firewall tab
Remove duplicate Trusted IPs management from dashboard Recent SSH Logs;
use actionable alert count on the tab (exclude info-only SSH tips).
Add sshSecurityWhitelistUtilities with normalized IP matching for logs
and analyzeSSHSecurity. Wire whitelist API routes, firewall ban guard,
and login hooks. Firewall tab remains the canonical trusted-IP editor.
2026-04-10 17:53:17 +02:00
master3395
85981f1cac feat: automate OLS+Apache backend provisioning for user-managed domains.
Add a user-management automation flow that enables OLS+Apache backend wiring for website and child-domain creation, including idempotent config updates, health/syntax validation gates, rollback-safe retries, and operator test/documentation assets.
2026-04-10 11:33:54 +02:00
master3395
352eebf0b5 Rspamd: cross-OS installer fixes and proxied Web UI at /emailPremium/Rspamd/ui/
- plogical/mailUtilities: ensure config dirs before writes; fix broken
  post-install indentation; write install success on EL; EL7 uses yum;
  create /etc/yum.repos.d when adding rspamd.repo
- plogical/processUtilities: broader RHEL family detection (Debian ID,
  CentOS Stream, RHEL, Rocky 10, openEuler/Virtuozzo, os-release fallback)
- emailPremium: admin-only reverse proxy to 127.0.0.1:11334; url route
  Rspamd/ui; safe machineIP read; rspamd_ui_url for template
- Rspamd template: primary Open Rspamd Web UI link; action-buttons anchor
  styling; SSH tunnel as alternative
2026-04-10 00:38:38 +02:00
Master3395
f2668e5360 Merge pull request #1755 from master3395/v2.5.5-dev
V2.5.5 dev
2026-04-09 23:35:02 +02:00
Master3395
85571c917d Merge pull request #1755 from master3395/v2.5.5-dev
V2.5.5 dev
2026-04-09 23:35:02 +02:00
master3395
e54a8093c0 docs: clarify Rspamd install log during long InstallRedis step; log install errors 2026-04-09 22:49:38 +02:00
master3395
6e0575093e docs: clarify Rspamd install log during long InstallRedis step; log install errors 2026-04-09 22:49:38 +02:00
master3395
9543c8396e fix: Rspamd installer, Email Delivery migrations, dns sys.path
- mailUtilities: insert CyberCP first on sys.path (dnspython dns shadowing); Rspamd log under /var/log/cyberpanel; log before ServiceManager; dnf on EL8/9; append package stderr
- emailPremium: Rspamd admin UI without cloud addon gate; JsonResponse; fetchRspamdSettings unlocked
- emailDelivery: AutoField PKs; 0001_initial SeparateDatabaseAndState for int FK to loginSystem
2026-04-09 22:39:49 +02:00
master3395
a3dace73bb fix: Rspamd installer, Email Delivery migrations, dns sys.path
- mailUtilities: insert CyberCP first on sys.path (dnspython dns shadowing); Rspamd log under /var/log/cyberpanel; log before ServiceManager; dnf on EL8/9; append package stderr
- emailPremium: Rspamd admin UI without cloud addon gate; JsonResponse; fetchRspamdSettings unlocked
- emailDelivery: AutoField PKs; 0001_initial SeparateDatabaseAndState for int FK to loginSystem
2026-04-09 22:39:49 +02:00
master3395
f9c1c28385 Fix catch-all bootstrap when e_catchall is missing.
Add runtime table self-healing for catch-all/plus/pattern email features and make upgrade SQL idempotent on existing latin1 installations by avoiding failing FK creation while preserving forwarding compatibility.
2026-04-09 13:42:03 +02:00
master3395
90fd3b7dfb Fix catch-all bootstrap when e_catchall is missing.
Add runtime table self-healing for catch-all/plus/pattern email features and make upgrade SQL idempotent on existing latin1 installations by avoiding failing FK creation while preserving forwarding compatibility.
2026-04-09 13:42:03 +02:00
master3395
50ec386376 Fix missing email UI controllers in public mailServer bundle.
Restore catch-all, plus-addressing, pattern-forwarding, and email-limits controllers in the public static JS so CyberPanel email management pages no longer fail with Angular controller registration errors.
2026-04-09 12:55:43 +02:00
master3395
5840456abf Fix missing email UI controllers in public mailServer bundle.
Restore catch-all, plus-addressing, pattern-forwarding, and email-limits controllers in the public static JS so CyberPanel email management pages no longer fail with Angular controller registration errors.
2026-04-09 12:55:43 +02:00
Master3395
f6dd9a4884 Merge pull request #1754 from master3395/v2.5.5-dev
V2.5.5 dev
2026-04-07 18:55:21 +02:00
Master3395
a2ee765134 Merge pull request #1754 from master3395/v2.5.5-dev
V2.5.5 dev
2026-04-07 18:55:21 +02:00
master3395
f09f7b96b9 DNS: stop auto-creating duplicate DMARC TXT records
CyberPanel previously added _dmarc at the apex (p=none) in two code paths and _dmarc on every child subdomain, which conflicts with a single externally managed policy (e.g. Cloudflare) and violates RFC 7489 (one TXT RRset per name). Comment out automatic DMARC creation so operators set one record at _dmarc.<apex> only.
2026-04-07 18:50:16 +02:00
master3395
facd84fec2 DNS: stop auto-creating duplicate DMARC TXT records
CyberPanel previously added _dmarc at the apex (p=none) in two code paths and _dmarc on every child subdomain, which conflicts with a single externally managed policy (e.g. Cloudflare) and violates RFC 7489 (one TXT RRset per name). Comment out automatic DMARC creation so operators set one record at _dmarc.<apex> only.
2026-04-07 18:50:16 +02:00
master3395
385a108014 Fix OLS+Apache child domains: DNS CF sync, ACME paths, subdomain creation UX
- dnsUtilities: correct createDNSRecordCloudFlare argument order (priority, ttl)
- vhostConfs/ApacheVhosts: OLSLBConf uses real docRoot and acme-challenge path for child vhosts (vhRoot is parent domain)
- virtualHostUtilities: defer ChildDomains save until after SSL/Apache; cleanup ORM row on failure; createDomain CLI exits 0/1 with 1,/0, stdout
- websiteFunctions: submitDomainCreation waits on subprocess and returns failure JSON on error
2026-04-06 01:48:35 +02:00
master3395
3308233959 Fix OLS+Apache child domains: DNS CF sync, ACME paths, subdomain creation UX
- dnsUtilities: correct createDNSRecordCloudFlare argument order (priority, ttl)
- vhostConfs/ApacheVhosts: OLSLBConf uses real docRoot and acme-challenge path for child vhosts (vhRoot is parent domain)
- virtualHostUtilities: defer ChildDomains save until after SSL/Apache; cleanup ORM row on failure; createDomain CLI exits 0/1 with 1,/0, stdout
- websiteFunctions: submitDomainCreation waits on subprocess and returns failure JSON on error
2026-04-06 01:48:35 +02:00
master3395
2077692a73 fix(dns): delete all Cloudflare DNS records for child subdomains
When removing a child domain, matching only the apex label (e.g. vscode)
left mail.* and www.* (and MX/TXT/DMARC) records in the parent zone.
Normalize record names to FQDN under the zone and delete the subdomain
FQDN plus any names under it.
2026-04-06 00:57:12 +02:00
master3395
9c08cfe94f fix(dns): delete all Cloudflare DNS records for child subdomains
When removing a child domain, matching only the apex label (e.g. vscode)
left mail.* and www.* (and MX/TXT/DMARC) records in the parent zone.
Normalize record names to FQDN under the zone and delete the subdomain
FQDN plus any names under it.
2026-04-06 00:57:12 +02:00
Master3395
de2b2cdefb Merge pull request #1753 from master3395/v2.5.5-dev
V2.5.5 dev
2026-04-05 15:57:09 +02:00
Master3395
425d31f539 Merge pull request #1753 from master3395/v2.5.5-dev
V2.5.5 dev
2026-04-05 15:57:09 +02:00
Master3395
83786265ac Fix typo in 'Please wait...' message 2026-04-05 15:56:12 +02:00
Master3395
8666cf7d71 Fix typo in 'Please wait...' message 2026-04-05 15:56:12 +02:00
master3395
8da7f74abc fix(ssl): deploy renewed certs to /etc/letsencrypt/live (#1676)
- After acme.sh renew/issue, run install-cert into live/ (ECC/RSA aware)
- Resolve ACME webroot from sslpath like obtainSSLForADomain
- Add --ecc to obtainSSL acme.sh install-cert (PR #1732 alignment)
- Add test/ssl_acme_helpers_test.py smoke tests for webroot helpers
2026-04-03 21:37:37 +02:00
master3395
b8dcb66b6b fix(ssl): deploy renewed certs to /etc/letsencrypt/live (#1676)
- After acme.sh renew/issue, run install-cert into live/ (ECC/RSA aware)
- Resolve ACME webroot from sslpath like obtainSSLForADomain
- Add --ecc to obtainSSL acme.sh install-cert (PR #1732 alignment)
- Add test/ssl_acme_helpers_test.py smoke tests for webroot helpers
2026-04-03 21:37:37 +02:00
Master3395
b526010289 Merge pull request #1751 from master3395/v2.5.5-dev
V2.5.5 dev
2026-04-03 21:26:13 +02:00
Master3395
1f4c43aa92 Merge pull request #1751 from master3395/v2.5.5-dev
V2.5.5 dev
2026-04-03 21:26:13 +02:00
master3395
ef0f12f55a manageServices: align version cache TTL and application page meta
Raise default CYBERCP_MANAGED_APPS version cache TTL to 3600s to match
Manage Applications inventory behavior and reduce cold DNF fetches.
Refresh application_page_meta and synced manageServices static assets.
2026-04-03 21:21:21 +02:00
master3395
c705b7e6c8 manageServices: align version cache TTL and application page meta
Raise default CYBERCP_MANAGED_APPS version cache TTL to 3600s to match
Manage Applications inventory behavior and reduce cold DNF fetches.
Refresh application_page_meta and synced manageServices static assets.
2026-04-03 21:21:21 +02:00
master3395
bbe1df2d68 Docker Manager: fix container update flow and UI sync
Align updateContainer with the panel (name vs containerName), pull new
images before removing the old container, and sync the Containers model
after a successful update. getContainerList now shows live Config.Image
so tags match Docker. Add notification-center progress for updates,
guard overlapping requests, and return new_image on success.
2026-04-03 21:20:32 +02:00
master3395
975966146f Docker Manager: fix container update flow and UI sync
Align updateContainer with the panel (name vs containerName), pull new
images before removing the old container, and sync the Containers model
after a successful update. getContainerList now shows live Config.Image
so tags match Docker. Add notification-center progress for updates,
guard overlapping requests, and return new_image on success.
2026-04-03 21:20:32 +02:00
master3395
774c72f159 Manage Services: RabbitMQ 4.x default, repo alignment, UI fixes
- Detect RHEL major from /etc/os-release and align Packagecloud RabbitMQ .repo URLs.
- Improve version discovery (el8 metadata merge on EL9+, 4.x fallback when DNF omits builds).
- Default RabbitMQ stream to 4.x in API, page bootstrap, serviceManager, and normalize_rabbitmq_stream.
- UI: prefetch 4.x on install, stream buttons 4.x first, fix confirm checkbox ng-model parent scope.
- Bump msModal cache-bust for manageServices.js.
2026-04-01 03:27:17 +02:00