Commit Graph

58 Commits

Author SHA1 Message Date
usmannasir
1b75b8d654 Improve Sieve: folder dropdown in rules UI, INBOX. prefix fix, robust upgrade regexes
- Replace free text input with folder dropdown for move-to-folder rules
- Auto-prefix INBOX. namespace to folder names in sieve scripts
- Strip INBOX. prefix when parsing sieve scripts back to rules
- Make upgrade setupSieve() regexes more flexible to handle config variations
- Add os.makedirs for conf.d directory in both install and upgrade
- Validate ManageSieve config with both inet_listener and service checks
2026-03-06 03:50:03 +05:00
usmannasir
5cc423b7ae Fix Sieve storage: add home dir to user_query, sieve plugin paths, and mailbox autocreate
- Add home directory (CONCAT) to dovecot-sql.conf.ext user_query so sieve
  can locate script storage per user
- Add sieve/sieve_dir plugin settings to dovecot.conf templates
- Add lda_mailbox_autocreate/autosubscribe so fileinto creates missing folders
- Update setupSieve() upgrade function to patch all three on existing installs
2026-03-06 03:39:04 +05:00
usmannasir
c2c79f3967 Enable Sieve email filtering in install and upgrade for all OS
- Add sieve to dovecot protocols in both dovecot.conf templates
- Add sieve plugin to LDA mail_plugins in dovecot.conf templates
- Write ManageSieve config (20-managesieve.conf) during installSieve()
- Add setupSieve() upgrade function: patches dovecot.conf, installs
  packages (dovecot-sieve/managesieved on Ubuntu, pigeonhole on CentOS),
  writes ManageSieve config, opens firewall port 4190, restarts dovecot
- Call setupSieve() in main upgrade flow
2026-03-06 03:32:04 +05:00
usmannasir
4bb569ef9b Fix webmail SSO setup in install and upgrade
Install setupWebmail() now creates /etc/cyberpanel dir if missing,
patches dovecot.conf with master passdb block if absent, and skips
gracefully when already configured. Prevents webmail auth failures
on fresh installs where the directory didn't exist yet.

Also adds cybermail_accounts and cybermail_domains CREATE TABLE
statements to upgrade.py applyLoginSystemMigrations() for the
emailDelivery app on existing installs.
2026-03-06 01:15:04 +05:00
usmannasir
1f73702722 Fix missing mail TLS certs: copy self-signed certs to /etc/pki/dovecot/ at install and upgrade
On Ubuntu, the install creates /etc/pki/dovecot/ directories but never
populates them with certs. Postfix main.cf references these paths for
STARTTLS. Without them, inbound STARTTLS fails and external mail servers
(Gmail etc.) drop the connection, preventing mail delivery.
2026-03-05 05:54:09 +05:00
usmannasir
d12da43859 Fix critical webmail bugs: XSS, SSRF, install ordering, and UI issues
Security fixes:
- Escape plain text body to prevent XSS via trustAsHtml
- Add SSRF protection to image proxy (block private IPs, require auth)
- Sanitize Content-Disposition filename to prevent header injection
- Escape Sieve script values to prevent script injection
- Escape IMAP search query to prevent search injection

Install/upgrade fixes:
- Move setupWebmail() call to after Dovecot is installed (was running
  before doveadm existed, silently failing on every fresh install)
- Make setupWebmail() a static method callable from install.py
- Fix upgrade idempotency: always run dovecot.conf patching and
  migrations even if webmail.conf already exists (partial failure recovery)

Frontend fixes:
- Fix search being a no-op (was ignoring results and just reloading)
- Fix loading spinner stuck forever on API errors (add errback)
- Fix unread count decrementing on already-read messages
- Fix draft auto-save timer leak when navigating away from compose
- Fix composeToContact missing signature and auto-save
- Fix null subject crash in reply/forward
- Clear stale data when switching accounts
- Fix attachment part_id mismatch between parser and downloader

Backend fixes:
- Fix Sieve _read_response infinite loop on connection drop
- Add login check to apiSaveDraft
2026-03-05 05:10:14 +05:00
usmannasir
aa5fec13b9 Fix webmail account switcher and improve error handling
- Fix apiSSO() resetting selected account to first one on every call,
  now preserves previously selected account if still valid
- Fix webmail.conf ownership to use cyberpanel:cyberpanel (Django runs
  as cyberpanel user, not nobody)
- Add error notifications when SSO or folder loading fails
2026-03-05 05:01:45 +05:00
usmannasir
71cf034c8a Automate Dovecot master user setup for webmail SSO in install and upgrade
Adds master passdb config to dovecot.conf templates, setupWebmail() to
the installer and upgrade paths to generate credentials and create
/etc/dovecot/master-users and /etc/cyberpanel/webmail.conf automatically.
The upgrade path is idempotent and patches existing dovecot.conf if needed.
2026-03-05 03:39:00 +05:00
usmannasir
8f544375f8 Update cyberpanel_ols module hashes for SIGSEGV crash fix
Rebuilt module fixes NULL pointer dereference in apply_headers() when
OLS generates error responses (4xx/5xx). The get_req_var_by_id() call
for DOC_ROOT crashed because request variables aren't initialized
during error response generation. Fix adds status code guard to skip
header processing for error responses.
2026-03-04 16:46:21 +05:00
usmannasir
6a279842b5 Update OLS binary hashes for SSL listener auto-map fix
rhel9:  418d2ea06e29c0f847a2e6cf01f7641d5fb72b65a04e27a8f6b3b54d673cc2df
ubuntu: 60edf815379c32705540ad4525ea6d07c0390cabca232b6be12376ee538f4b1b
rhel8:  d08512da7a77468c09d6161de858db60bcc29aed7ce0abf76dca1c72104dc485
2026-02-14 02:22:03 +05:00
usmannasir
1bbb39a465 Update OLS binary hashes for SSL listener auto-map fix
New hashes for all 3 platforms after fixing the bug where VHosts with
SSL context but missing listener map entries served the wrong cert.

rhel9:  04921afbad94e7ee69bc93a73985e318df93f28b2b0d578447b0ef43dc6e3818
ubuntu: ae2564742f362d3e34ea814dff37edeb8f8b73ae9ca1484ba78e2453a3987429
rhel8:  855b6bccb4a7893914506a07185cffd834bd31a7f7c080b5b4190283def7fa3e
2026-02-14 01:18:18 +05:00
usmannasir
bfe1ef1e56 Use regex for Auto-SSL config injection to handle any adminEmails value
The previous string replace only matched 'adminEmails               root@localhost'
exactly. On fresh OLS installs where adminEmails may have a different value
or different spacing, the replace would silently fail and Auto-SSL config
would never be injected. Use re.sub to match the adminEmails line regardless
of its value.
2026-02-14 00:43:30 +05:00
usmannasir
abfe9b38c1 Fix Auto-SSL config injection appending garbage to acmeEmail line
The string replace matched only 'adminEmails' keyword instead of the
full existing line 'adminEmails               root@localhost', causing
the remaining '               root@localhost' to trail onto the acmeEmail
line and break ACME account registration.
2026-02-14 00:16:34 +05:00
usmannasir
c22197051a Enable Auto-SSL injection during fresh install 2026-02-13 15:46:48 +04:00
usmannasir
cc07ff85ab Update OLS binary hashes for Ubuntu/RHEL8 and enable Auto-SSL support 2026-02-13 14:47:22 +04:00
usmannasir
06b34ae60c Update OLS binary hashes for all 3 platforms (Plesk test verified) 2026-02-13 13:54:25 +04:00
usmannasir
6599a55668 Update RHEL 9 OLS binary hash after default VHost wildcard rebuild 2026-02-13 03:10:23 +05:00
usmannasir
d5b484f2f8 Update OLS binary hashes for Ubuntu and RHEL 8 (default VHost wildcard fix) 2026-02-13 02:59:08 +05:00
usmannasir
f76d10523e Update OLS binary SHA256 hashes for rebuilt v2.4.4 binaries 2026-02-12 16:07:27 +05:00
usmannasir
50b5c5b935 Update OLS binary URLs and hashes to v2.4.4
Universal binaries with all features config-driven (PHPConfig API, Origin
Header Forwarding, ReadApacheConf with Portmap, Auto-SSL ACME v2,
ModSecurity ABI compatibility). Updates install, upgrade, and modSec paths.
2026-02-12 14:08:29 +05:00
usmannasir
2fa71f65e6 update OLS module to v2.2.0 with progressive throttle
- Update module checksums for all platforms (rhel8, rhel9, ubuntu)
- Simplify module URLs to cyberpanel_ols.so
- Fixed BruteForceAllowedAttempts parsing
- Implemented progressive throttle (2s/5s/15s delays)
2025-12-28 15:24:04 +05:00
usmannasir
843cede15e update OLS module checksums for Phase 2 Brute Force Protection
- Update cyberpanel_ols module URLs to use /binaries/ path structure
- Update SHA256 checksums for all platforms (rhel8, rhel9, ubuntu)
- Enable RHEL 8 module support (was previously disabled)
- Module version 2.2.0 with Phase 2 features
2025-12-28 02:49:41 +05:00
usmannasir
0da6dee685 Update OpenLiteSpeed custom binaries to v2.0.5 static builds
Updates binary checksums and URLs for OpenLiteSpeed custom builds with
static linking support. Static-linked binaries provide cross-platform
compatibility (Ubuntu 22/24, RHEL 8/9) by embedding libstdc++ and libgcc,
eliminating version-specific crashes.

Changes:
- Updated all SHA256 checksums for static binary builds
- Simplified URLs: removed /binaries/ subdirectory path
- Added -static suffix to binary filenames
- Added conditional module installation (RHEL 8 has no module)
- Updated version references from v2.0.4 to v2.0.5
- Enhanced installation messages to indicate static linking

Binary checksums (v2.0.5):
- Ubuntu static: 89aaf66474e78cb3c1666784e0e7a417550bd317e6ab148201bdc318d36710cb
- RHEL 9 static: 90468fb38767505185013024678d9144ae13100d2355097657f58719d98fbbc4
- RHEL 8 static: 6ce688a237615102cc1603ee1999b3cede0ff3482d31e1f65705e92396d34b3a
- Ubuntu module: e7734f1e6226c2a0a8e00c1f6534ea9f577df9081b046736a774b1c52c28e7e5
- RHEL 9 module: 127227db81bcbebf80b225fc747b69cfcd4ad2f01cea486aa02d5c9ba6c18109

Benefits:
- Cross-platform compatibility across OS versions
- Automatic checksum verification for security
- Graceful handling of platform-specific limitations
- Simplified download URLs for easier maintenance

Files modified:
- install/installCyberPanel.py
- plogical/upgrade.py
2025-11-18 14:02:39 +05:00
usmannasir
e402e957b3 Add platform-specific OpenLiteSpeed binaries with SHA256 checksum verification
This update adds automatic platform detection and checksum verification for
OpenLiteSpeed custom binaries during installation and upgrade.

Changes:
- Add detectPlatform() method to detect RHEL 8, RHEL 9, and Ubuntu
- Update binary URLs to use platform-specific paths:
  * RHEL 8: /binaries/rhel8/
  * RHEL 9: /binaries/rhel9/
  * Ubuntu: /binaries/ubuntu/
- Add SHA256 checksum verification to downloadCustomBinary()
- Update installCustomOLSBinaries() to use platform-specific checksums

Binary Versions (OpenLiteSpeed v1.8.4.1 - Module v2.0.4):
- RHEL 8 Module: 1cc71f54d8ae5937d0bd2b2dd27678b47f09f4f7afed2583bbd3493ddd05877f
- RHEL 9 Module: 127227db81bcbebf80b225fc747b69cfcd4ad2f01cea486aa02d5c9ba6c18109
- Ubuntu Module: d070952fcfe27fac2f2c95db9ae31252071bade2cdcff19cf3b3f7812fa9413a
- All Binary: a6e07671ee1c9bcc7f2d12de9e95139315cf288709fb23bf431eb417299ad4e9

Files modified:
- install/installCyberPanel.py
- plogical/upgrade.py
2025-11-17 00:42:28 +05:00
usmannasir
6449b1dbfa Lower download size threshold to support smaller module files
Reduce minimum file size from 1MB to 10KB to allow the module file
(~35KB) to pass validation. The 1MB threshold was too strict and only
appropriate for the main OLS binary. Now displays size in KB or MB
appropriately.
2025-11-05 09:24:34 +05:00
usmannasir
1a097a1d67 Fix download verification logic for custom OLS binaries
Change download verification to check file existence and size instead of
relying on return code. The wget command succeeds but install_utils.call()
may not return 0. Now verifies downloaded file exists and is at least 1MB.
2025-11-05 06:08:48 +05:00
usmannasir
bb884369c1 Fix OLS binary download URL
Remove 'downloads' path from OLS binary URL to match correct location
2025-11-05 05:57:01 +05:00
usmannasir
029487cf77 Fix custom module download URL
Correct the module URL to https://cyberpanel.net/cyberpanel_ols_x86_64.so
2025-11-05 05:56:27 +05:00
usmannasir
e61e25f9ee Add custom OpenLiteSpeed binary installation with .htaccess PHP config support
Integrate custom OLS binaries during installation to enable Apache-style
php_value/php_flag directives in .htaccess files. The installer now:

- Downloads custom OLS binary and module from cyberpanel.net
- Creates backup of existing binaries before replacement
- Installs custom binaries with enhanced .htaccess support
- Configures CyberPanel module in OpenLiteSpeed config
- Gracefully falls back to standard OLS if download fails
- Only installs on x86_64 architecture

Features enabled by custom binaries:
- Apache-style .htaccess support
- php_value and php_flag directives
- Enhanced header control
- Better Apache compatibility
2025-11-05 05:38:31 +05:00
usmannasir
1daa70a9ea bug fix: python 3.6 compatibility 2025-10-10 17:26:50 +05:00
usmannasir
93b9fa4c3a Fix AlmaLinux 8 installation: Add python-dotenv to requirements (v2.4.4)
- Install python-dotenv in virtual environment during CyberPanel setup
- Fixes Django's inability to load .env file on AlmaLinux 8
- Resolves "Access denied for user 'cyberpanel'@'localhost'" errors
- Added to all installation paths (normal, DEV, and after_install)

This ensures Django can properly load database credentials from .env file
on AlmaLinux 8 systems where python-dotenv was missing.
2025-10-10 01:00:22 +05:00
usmannasir
1264f1a680 bug fix: alma8 install 2025-10-10 00:09:42 +05:00
usmannasir
b003ff748b bug fix: allowed host issue 2025-09-15 12:07:15 +05:00
Master3395
78b06e5c82 Enhance environment variable management and security
- Updated .gitignore to include additional sensitive files and directories.
- Added python-dotenv to requirements for loading environment variables.
- Modified settings.py to load environment variables for sensitive configurations, including SECRET_KEY, DEBUG, and database credentials.
- Implemented secure .env file generation during installation to avoid hardcoding sensitive information.
- Introduced fallback method for settings update if environment generation fails.
2025-09-13 19:07:03 +02:00
Master3395
b2a3ee6476 Fix mirror gettoforge
https://github.com/usmannasir/cyberpanel/issues/1499
2025-09-12 09:42:52 +02:00
Master3395
6e86055016 Add sieve by default.
Add sieve by default.
2025-09-10 20:01:52 +02:00
Master3395
41c232ca16 Fix Mariadb on almalinux 9
Fix Mariadb on almalinux 9
2025-09-10 17:36:09 +02:00
Master3395
b4a6882ab3 Fix ALL documentation links.
Fix ALL documentation links.
2025-09-08 11:50:35 +02:00
Master3395
f7f51e67c4 Add Almalinux 10 and php 84+85
Add Almalinux 10 and php 84+85
2025-09-07 22:57:53 +02:00
Master3395
d191bd208c Resolve issue 1493
Should solve the issue in https://github.com/usmannasir/cyberpanel/issues/1493
2025-09-07 20:40:29 +02:00
usmannasir
a902dc7aef bug fix: fix dynamic latest version of lsws server 2025-09-04 23:07:27 +05:00
usmannasir
e3abbc47f4 v2.4.4 release 2025-09-01 13:11:42 +05:00
usmannasir
21f33646dd bug fix: postfix conf for ipv6 2025-09-01 00:07:41 +05:00
usmannasir
67a0f6472c bug fix: snappymail on ubuntu 24 2025-08-31 19:55:56 +05:00
usmannasir
c6eb312a2f bug fix: snappymail on ubuntu 24 2025-08-31 13:16:22 +05:00
usmannasir
35e19bede6 bug fix: snappymail on ubuntu 24 2025-08-31 12:32:58 +05:00
usmannasir
c2af237fbc bug fix: snappymail on ubuntu 24 2025-08-30 23:40:20 +05:00
usmannasir
829de19600 ubuntu 24 ftp fix 2025-08-29 22:30:06 +05:00
usmannasir
83269b76f8 bug fix: ubuntu 24 default php for lscpd 2025-08-29 21:37:38 +05:00
usmannasir
b1ef9f7b53 bug fix: for ubuntu 24 2025-08-29 20:44:19 +05:00