Commit Graph

5815 Commits

Author SHA1 Message Date
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
85571c917d Merge pull request #1755 from master3395/v2.5.5-dev
V2.5.5 dev
2026-04-09 23:35:02 +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
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
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
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
a2ee765134 Merge pull request #1754 from master3395/v2.5.5-dev
V2.5.5 dev
2026-04-07 18:55:21 +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
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
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
425d31f539 Merge pull request #1753 from master3395/v2.5.5-dev
V2.5.5 dev
2026-04-05 15:57:09 +02:00
Master3395
8666cf7d71 Fix typo in 'Please wait...' message 2026-04-05 15:56:12 +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
1f4c43aa92 Merge pull request #1751 from master3395/v2.5.5-dev
V2.5.5 dev
2026-04-03 21:26:13 +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
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
dbd6379bcb 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
master3395
eb31b66871 Manage Applications: Elasticsearch, Redis, RabbitMQ installers and UI hardening
Add modular application packages with backup-aware install/upgrade/downgrade,
DNF-backed version lists with TTL caching, and HTML bootstrap for faster loads.
Improve the version picker (labels, selection state, background meta refresh) and
route applicationMeta through shared page meta cache. Update static assets and
cache buster for manageServices.js. Repository also includes related updates to
serviceManager, upgrade tooling, website functions, and user management from this
development tree.
2026-04-01 00:35:22 +02:00
master3395
f2c02c7501 Use official RabbitMQ logo as local static asset.
Switch Manage Applications RabbitMQ icon to a bundled official SVG path to avoid broken icon rendering while keeping assets local.
2026-03-31 20:49:11 +02:00
master3395
5da16e0940 Fix RabbitMQ application icon SVG compatibility.
Replace the original SVG markup with a simpler standards-compliant variant so the icon renders reliably in Manage Applications.
2026-03-31 20:42:07 +02:00
master3395
95e38e70f3 Add RabbitMQ support to Manage Applications and lifecycle flows.
Wire RabbitMQ into app management UI/actions, optional fresh-install flag handling, and upgrade-safe marker/service reconciliation so new installs and upgrades can expose it reliably.
2026-03-31 20:41:00 +02:00
master3395
2c1b6ad557 Plugin UI: Premium filter, URL hash sync; installer DB SQL fallback; loginSystem migrations.
- plugins.html: Premium show filter, #grid?show=&sort=&cat=&q= hash restore, cache 28.03.2026-v3.
- pluginInstaller + plogical/pluginMigrationSQL: migrate fallback via sqlmigrate/mariadb and DROP cleanup on remove.
- loginSystem: initial migration (SeparateDatabaseAndState) for graph compatibility.
- README: Updated 28.03.2026.
2026-03-28 01:21:37 +01:00
master3395
ffde367671 plugins: place settings back-link inside #main-content
Avoid full-width bar over sidebar; rounded card-style bar; fallback after <body>
if template has no main-content.
2026-03-27 23:59:00 +01:00
master3395
4f42e7d2d7 plugins: back link to Installed on all proxied settings pages
Inject bar after <body> in plugin_settings_proxy HTML responses; skip streaming
and non-HTML; idempotent if bar already present; translatable label.
2026-03-27 23:54:41 +01:00
Master3395
b7c2f0a43f Merge pull request #1748 from master3395/v2.5.5-dev
V2.5.5 dev
2026-03-27 23:51:17 +01:00
master3395
7098a7e4f2 plugins: delete local source after uninstall (with confirmations)
- POST /plugins/api/delete-source/<name>/ removes copies under plugin source paths only
- Require safe plugin id, block if still installed under CyberCP; symlink-aware paths
- Clear state file, informCyberPanelRemoval, invalidate store cache
- UI: Delete local copy in grid/table/store; two-step confirm; amber button style
- Enrich store JSON with has_local_source and builtin
2026-03-27 23:49:36 +01:00
master3395
c8c1bc5f1f plugins: reliable lscpd restart after install and revert
- restartGunicorn: try systemctl as root; else sudo -n then systemctl; log failures
- revert_plugin: call restartGunicorn after successful backup restore
2026-03-27 23:39:11 +01:00
Master3395
c7c0507229 Merge pull request #1747 from master3395/v2.5.5-dev
V2.5.5 dev
2026-03-27 23:10:37 +01:00
master3395
7b3bf85964 upgrade sync: force match origin when checkout blocked; fail script if sync fails
- 09_sync: stash -u + reset --hard; quarantine untracked paths; verify HEAD==origin/branch
- Remove subshell/tee that hid git failures; set /etc/cyberpanel/last_git_sync_failed on error
- cyberpanel_upgrade: exit 1 after final display if git sync failed
- 11_display_final: show warning banner when CYBERPANEL_GIT_SYNC_OK!=1
2026-03-27 23:02:32 +01:00
master3395
c128e76e20 upgrade: fail fast if CyberCP clone fails; retry clone; quarantine old tree
- Honor downloadAndUpgrade return value; exit 1 instead of printing Upgrade Completed
- Restart lscpd if code update fails so panel is reachable on old tree
- CYBERPANEL_UPGRADE_CLONE_ATTEMPTS (default 2) for transient clone errors
- On rmtree failure, move /usr/local/CyberCP aside instead of aborting when possible
- Export CYBERPANEL_UPGRADE_CLONE_ATTEMPTS from 08_main_upgrade.sh
2026-03-27 22:47:09 +01:00
master3395
751dd6d6e0 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
c950fbc4ab 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
227608aaa3 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
2c1f8f8933 fix: LPMA launch routes in secMiddleware; strict sign-on + lpma_policy_read
- secMiddleware: allow Limited phpMyAdmin launch URLs and phpmyadminsignin
  without JSON-body filtering that breaks sign-on POSTs
- plogical/public phpmyadminsignin: lpma_policy_read.inc.php, strict cookie helpers
- webmail: section header comments only
2026-03-27 21:54:17 +01:00
master3395
cbcf4e62e4 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
515ba2ae33 feat(firewall): merge Auto Ban Security Alerts logs into banned IPs API
- getBannedIPs: append AutoBanLog rows (latest per IP) not already in DB/JSON
- Skip expired timed bans; tag rows with ban_source autoBanSecurityAlerts
- removeBannedIP/deleteBannedIP: handle synthetic id ablog-<pk> via unban by IP
2026-03-27 21:48:25 +01:00
Master3395
d57dcdbf7d Merge pull request #1746 from master3395/v2.5.5-dev
V2.5.5 dev
2026-03-27 21:14:23 +01:00
master3395
98c086d7af fix(pluginHolder): reliable plugin upgrades, store UI dates, upgrades columns
- Harden meta.xml sync (cache-bust, no CDN downgrade); ZIP meta fallback; fail if version stuck
- Invalidate plugin store cache after successful upgrade
- Add modify_timestamp for browser-local DD.MM.yyyy / 24h display via toLocaleString
- Upgrades table: Your Version column before New Version; freshness uses timestamp when present
2026-03-27 21:08:40 +01:00
master3395
65f6b7af64 fix phpmyadmin signin endpoint not found
Restore the missing phpMyAdmin sign-in bridge file so CyberPanel DB login no longer returns 404 on /phpmyadmin/phpmyadminsignin.php.
2026-03-27 13:40:49 +01:00
master3395
80ea96cc91 fix: ensure phpMyAdmin signin bridge + auto plugin migrations + PMA tmp dir
- Add plogical/phpmyadmin_utils.ensure_phpmyadmin_signin_bridge: restore
  phpmyadminsignin.php and tmp/ if missing (fixes 404 on /phpmyadmin/phpmyadminsignin.php).
- Call from databases phpMyAdmin page, fetchDetailsPHPMYAdmin, install, and upgrade PMA paths.
- install/upgrade: use makedirs(..., exist_ok=True) for phpmyadmin/tmp instead of mkdir.
- pluginInstaller: run migrate when migrations/ contains modules OR enable_migrations;
  use CyberCP venv python; --noinput for migrate; log non-zero exits.
2026-03-27 01:15:33 +01:00
master3395
2b23826948 fix(pluginHolder): resolve CyberPanel admin identity for activation APIs
Use session userID -> Administrator email for subscription checks, activation persistence, and paid-plugin access when Django auth user is not populated.
2026-03-26 23:16:45 +01:00
master3395
8d3e2cd51a pluginHolder: fix plugin store stale-cache refresh + hourly scheduler
Remove stuck plugin-store refresh locks, show correct cache status in UI, and add a management command for hourly refresh.
2026-03-26 22:45:54 +01:00
master3395
b5b313090a pluginHolder: fix plugin store cache timestamp display and stale refresh trigger.
Render next cache update in Norwegian format and mark overdue cache clearly while triggering background refresh from Installed view when cache metadata is expired.
2026-03-26 15:22:56 +01:00
master3395
a8d1c0f4e9 pluginHolder: auto-persist activation keys from plugin settings pages.
Inject a lightweight fetch hook into settings pages to call store-activation after successful plugin activation responses, reducing premium relock risk after upgrades.
2026-03-26 15:09:03 +01:00
master3395
ff93f0facb pluginHolder: persist premium activation keys in MariaDB.
Store plugin activation entitlements in DB and use them in access checks so upgrades do not relock premium plugins.
2026-03-26 12:39:48 +01:00
master3395
c50b51dfbf install: port origin/v2.4.5 lscpd el9/10 selection, start retry, venv lscpd restart (e49ed16f)
- Use lscpd.0.4.0 on Alma 9/10 and RHEL-family VERSION_ID 9/10
- daemon-reload + retry systemctl start lscpd in setupLSCPDDaemon
- 04_after_install: _restart_lscpd_safe + libxcrypt-compat on EL10 prereqs
2026-03-26 01:36:55 +01:00
master3395
e71fe07952 install.sh: fetch cyberpanel.sh from repo so AlmaLinux 10 fixes are used 2026-03-26 01:35:06 +01:00