4946 Commits

Author SHA1 Message Date
usmannasir
83da9a7ae4 Merge branch 'v2.4.4' of github.com:usmannasir/cyberpanel into v2.4.4 2026-01-05 16:43:45 +05:00
usmannasir
143a2c2897 cloud api docs 2026-01-05 16:43:10 +05:00
Master3395
6c2aebd27e Merge pull request #1636 from master3395/v2.4.4
Fix SSH Logins and SSH Logs tables, to show the correct way.
2026-01-04 00:58:52 +01:00
master3395
ed5af068ec Remove pagination from SSH Logins and SSH Logs tables, display all results directly 2026-01-04 00:55:25 +01:00
usmannasir
df3841be71 openlitespeed .htaccess module documentation 2025-12-28 22:43:02 +04:00
usmannasir
35770ea2f5 Merge branch 'v2.4.4' of github.com:usmannasir/cyberpanel into v2.4.4 2025-12-28 22:41:49 +04:00
usmannasir
4b97b20f04 openlitespeed .htaccess module documentation 2025-12-28 22:40:56 +04:00
usmannasir
06f1f78598 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
30e4d2d28b 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
3fc1aba229 fix: update custom OLS binaries and add ModSecurity compatibility
- Update SHA256 checksums for December 2025 OLS build (v1.8.4.1)
- Add RHEL8 module support (cyberpanel_ols_x86_64_rhel8.so)
- Add compatible ModSecurity binaries to prevent ABI crashes
- Auto-detect and replace ModSecurity when custom OLS is installed
- Add auto-rollback feature if new binary fails to start
- Fix OWASP CRS UI toggle detection with multi-location checks

Features included in new binaries:
- PHPConfig support (.htaccess php_value/php_flag)
- Origin header forwarding (CORS/WebSocket support)
- Header unset fix (uses remove_resp_header API)
- Static linking for cross-platform compatibility

Platforms supported:
- Ubuntu 22.04+/Debian 12+ (ubuntu-static)
- AlmaLinux/Rocky/RHEL 9.x (rhel9-static)
- AlmaLinux/Rocky/RHEL 8.x (rhel8-static)
2025-12-27 21:07:16 +05:00
usmannasir
f9e600345f bug fix in n8n deployment 2025-12-26 14:24:13 +05:00
usmannasir
db35838f72 Merge branch 'v2.4.4' of github.com:usmannasir/cyberpanel into v2.4.4 2025-12-25 20:22:45 +04:00
usmannasir
69087dfeda bug fix: improve sub domain page 2025-12-25 20:22:30 +04:00
usmannasir
0a099b1b19 Merge branch 'v2.4.4' of github.com:usmannasir/cyberpanel into v2.4.4 2025-12-18 13:10:48 +05:00
usmannasir
94bf2bdeef Merge branch 'v2.4.4' into v2.4.4-dev 2025-12-18 12:18:37 +05:00
usmannasir
eca0c3cbeb security fixes 2025-12-18 12:18:32 +05:00
usmannasir
a2f9cf99eb Fix ACL child domain permission issues for non-admin users
- Fix checkOwnership() to return explicit 0 instead of None when checking child domain ownership
  This resolves permission failures for non-admin ACL users trying to manage child domains

- Improve fetchChildDomainsMain() with more robust child domain filtering
  Changed from .filter(alais=0) to .all() with explicit check to prevent silent failures

- Add error logging with traceback to fetchChildDomainsMain() for better debugging

These changes allow non-admin users with proper ACL permissions to view and manage
child domains for websites they own.
2025-12-14 17:59:19 +04:00
usmannasir
ea635b5f01 Fix n8n container health check to use fuzzy name matching
The container health check was failing because Docker Compose v1 and v2
use different naming conventions:
- v1: project_service_1 (underscores)
- v2: project-service-1 (hyphens)

Changes:
1. Replaced hardcoded container name formatting with fuzzy matching
2. Added find_container_by_service() helper method for dynamic lookup
3. Updated monitor_deployment() to use dynamic container discovery
4. Container names are now found by normalizing and matching patterns

This fixes "Containers failed to reach healthy state" errors during
n8n deployment from CyberPanel UI.

Ticket References: XKTFREZUR, XCGF2HQUH
2025-11-29 04:56:23 +04:00
usmannasir
36f7068e1d Fix: Use upgrade.py for email filtering tables instead of Django migrations
- Remove Django migration file that caused model resolution errors
- Add CREATE TABLE statements to mailServerMigrations() in upgrade.py
- Tables created: e_catchall, e_server_settings, e_plus_override, e_pattern_forwarding
2025-11-28 15:08:49 +05:00
usmannasir
3c16b934af Fix migration: use raw SQL for tables since existing models lack migrations 2025-11-28 15:05:44 +05:00
usmannasir
082c63bfa9 Add advanced email filtering features: catch-all, plus-addressing, and pattern forwarding
Features:
- Catch-All Email: Forward unmatched emails for a domain to a single address
- Plus-Addressing: Enable user+tag@domain.com delivery with configurable delimiter
- Pattern Forwarding: Wildcard and regex-based email forwarding rules

Implementation:
- New database models: CatchAllEmail, EmailServerSettings, PlusAddressingOverride, PatternForwarding
- New UI pages with AngularJS controllers
- Backend methods in mailserverManager.py with ACL permission checks
- Auto-generates /etc/postfix/virtual_regexp for pattern rules
- Menu items added under Email section
2025-11-28 14:22:34 +05:00
usmannasir
d3621923e5 Fix n8n v1.87.0+ compatibility with OpenLiteSpeed reverse proxy
1. Set NODE_ENV=development for n8n Docker deployments to resolve Origin
   header validation failures.

2. Remove ineffective "RequestHeader set Origin" from vhost configuration
   since OpenLiteSpeed cannot override browser Origin headers anyway.

This is required due to an OpenLiteSpeed architectural limitation - OLS
cannot override browser Origin headers, which n8n v1.87.0+ strictly
validates in production mode. Apache and Nginx can override Origin headers
and work in production mode, but this is not possible with OpenLiteSpeed.

Security Note: This change does NOT reduce security:
- User authentication remains enforced
- Password hashing (bcrypt/argon2) still secure
- HTTPS encryption still active
- Session management secure with N8N_SECURE_COOKIE=true
- CSRF protection still active

Only the origin validation check is bypassed, which fails anyway due to
the OLS limitation.

Ticket References: XKTFREZUR, XCGF2HQUH
2025-11-28 14:16:46 +05:00
usmannasir
9a1ebccbc6 Fix OWASP toggle: ensure flags reset and prevent loader on page load
1. Move flag reset outside conditional blocks - flags now always reset
   even if ModSecurity is not installed or AJAX fails
2. Reset flags in error handler (cantLoadInitialDatas) as well
3. Add showLoader parameter to getOWASPAndComodoStatus - loader only
   shows when explicitly requested, not during initial status check

This fixes:
- Toggle not responding to clicks (flags were stuck as true)
- Spinner showing on initial page load (now only shows during install)
2025-11-26 22:09:43 +05:00
usmannasir
f0ed6aaff1 Merge remote changes and resolve conflicts 2025-11-26 18:54:42 +05:00
usmannasir
54262e6a52 Fix OWASP toggle interaction and prevent recursive change events
Fixes issues where toggle became unresponsive and triggered recursive calls:

1. Add flags (updatingOWASPStatus, updatingComodoStatus) to prevent change
   event handlers from triggering when status check updates toggle state
2. Guard change event handlers to return early when flags are set
3. IMPORTANT: Still increment counters when returning early to maintain
   correct counter state for subsequent user clicks
4. Set flags before updating toggle via prop('checked'), reset after 100ms
5. Use timeout delays (500ms) before status checks after install/uninstall
   to allow operations to complete and prevent race conditions

This ensures:
- Toggle responds correctly to user clicks on first click
- Status updates don't trigger unwanted installations
- Counter state is maintained even when skipping automatic updates
- No recursive loops when updating toggle state
2025-11-26 18:45:44 +05:00
usmannasir
ba73f1efc9 Fix OWASP toggle interaction and prevent recursive change events
Fixes issues where toggle became unresponsive and triggered recursive calls:

1. Add flags (updatingOWASPStatus, updatingComodoStatus) to prevent change
   event handlers from triggering when status check updates toggle state
2. Guard change event handlers to return early when flags are set
3. Set flags before updating toggle via prop('checked'), reset after 100ms
4. Use timeout delays (500ms) before status checks after install/uninstall
   to allow operations to complete and prevent race conditions

This ensures:
- Toggle responds correctly to user clicks
- Status updates don't trigger unwanted installations
- No recursive loops when updating toggle state
- Clean separation between user actions and status updates
2025-11-24 02:07:19 +05:00
usmannasir
ae020ece7b Fix OWASP CRS UI toggle state issues and improve installation reliability
This commit resolves issues where the OWASP CRS toggle in ModSecurity settings
would appear to flip back to OFF even when installation succeeded, and improves
detection of manually installed OWASP CRS rules.

Issues Fixed:
1. Toggle not updating immediately after installation/uninstallation
2. Manual OWASP installations to rules.conf not detected by toggle
3. Silent installation failures without detailed error logging

Changes:

firewall/static/firewall/firewall.js:
- Update toggle state immediately after successful installation (getOWASPAndComodoStatus(true))
- Update toggle state after failed installation to show correct OFF state
- Provides instant visual feedback instead of requiring page refresh

firewall/firewallManager.py (getOWASPAndComodoStatus):
- Expand detection logic to check both httpd_config.conf AND rules.conf
- Detect manual OWASP installations (Include/modsecurity_rules_file with owasp/crs-setup)
- Case-insensitive pattern matching for better compatibility

plogical/modSec.py (setupOWASPRules):
- Add specific error logging for each installation step failure
- Log detailed messages: directory creation, download, extraction, configuration
- Helps diagnose: network issues, missing tools (wget/unzip), permission problems

Impact:
- Toggle correctly reflects OWASP CRS state after enable/disable operations
- Manual installations following external tutorials now detected correctly
- Installation failures are logged with specific error messages for debugging
- Improves UX by eliminating perception that "toggle keeps flipping back"

Fixes: OWASP CRS toggle UI bug
Related: Community thread https://community.cyberpanel.net/t/4-mod-security-rules-packages/133/8
Related: Ticket #GTPDPO7EV
2025-11-24 01:53:36 +05:00
usmannasir
836a6e26a7 Fix custom installation email components bug: Skip email operations when services not installed
This commit resolves the issue where CyberPanel attempts to configure email/DKIM settings
even when email services were explicitly disabled during custom installation, causing
hostname SSL setup and website creation to fail with "No such file or directory: '/etc/postfix/main.cf'" errors.

Changes:
- Added emailServicesInstalled() utility function to check for /home/cyberpanel/postfix marker
- OnBoardingHostName(): Wrap email operations (issueSSLForMailServer, postfix commands) with checks
- OnBoardingHostName(): Allow hostname setup to complete without email services
- issueSSLForMailServer(): Add early return if email services not installed
- issueSSLForMailServer(): Verify /etc/postfix directory exists before operations
- issueSSLForMailServer(): Check /etc/postfix/main.cf exists before reading
- setupAutoDiscover(): Add early return if email services not installed
- setupAutoDiscover(): Check /etc/postfix/main.cf exists before accessing
- mailUtilities.configureOpenDKIM(): Verify main.cf exists before configuration

Impact:
- Hostname SSL setup now completes successfully without email components
- Website creation works correctly on custom installs without email
- No more file not found errors for /etc/postfix/main.cf
- Graceful degradation: operations skip email setup with log messages

Fixes: Custom installation hostname SSL 404 error
Fixes: Website creation DKIM failure on custom installs
Related: Ticket #RMKRFFGKC
2025-11-22 03:49:07 +05:00
usmannasir
bbd0c4e136 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
e1eefebbfb 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
4650fa2623 Add verification and retry logic for lssetup configuration
- Verify lscgctl works after running lssetup
- Retry with more slices (-c 10) if first attempt fails
- Add detailed logging to debug setup issues
- Add time.sleep() to give lssetup time to initialize
- Provide clear error messages if setup fails
2025-11-13 00:25:45 +05:00
usmannasir
f6bb5c1a02 Add resource limits display on website detail page
- Fetch actual resource limits from lscgctl command in loadDomainHome
- Parse JSON output and extract CPU, Memory, I/O, Tasks values
- Display resource limits in dedicated section on website detail page
- Only show limits if they actually exist on the site
- Use modern card design with gradients matching the rest of the UI
2025-11-12 23:53:53 +05:00
usmannasir
888a7e0552 Add I/O limit support to resource limits
- Pass --io parameter to lscgctl with bytes/sec value
- Convert ioLimitMBPS from MB/s to bytes/s for lscgctl
- Update log message to include I/O limit information
- Add note about systemd io controller delegation requirement
2025-11-12 23:43:59 +05:00
usmannasir
32b55993c5 Fix ProcessUtilities import error
- Change from 'from plogical import ProcessUtilities' to correct import
- Use 'from plogical.processUtilities import ProcessUtilities'
- Resolves ImportError during Django initialization
2025-11-11 23:30:51 +05:00
usmannasir
8143add41b Update addon purchase links to cyberpanel.net
- Change all addon purchase links to https://cyberpanel.net/cyberpanel-addons
- Update error messages in package creation and modification
- Update UI links in create and modify package templates
- Improve link text to 'Purchase CyberPanel Addons'
2025-11-11 23:08:49 +05:00
usmannasir
1135aa992b Restrict resource limits feature to addon users only
- Add addon access check via platform.cyberpersons.com API
- Validate addon access in package creation and modification
- Prevent enabling enforceDiskLimits without addons
- Reset resource limits to defaults if addons not available
- Hide resource limits UI for non-addon users
- Show informative message directing users to enable addons
- Apply same restrictions to both create and modify package flows
2025-11-11 23:05:12 +05:00
usmannasir
8b33f95feb Add comprehensive resource limits user guide
- Complete documentation for using resource limits in CyberPanel
- Prerequisites and system requirements
- Step-by-step setup instructions
- Verification and testing procedures
- Troubleshooting guide
- Package recommendations for different hosting tiers
- FAQ section
2025-11-11 22:58:42 +05:00
usmannasir
94969f4e97 Improve lssetup auto-detection for LiteSpeed Containers
- Add test to verify LiteSpeed Containers is actually configured
- Check for 'You must configure LiteSpeed' error in lscgctl output
- Run lssetup with proper flags when configuration is needed
- Fixes issue where lscgctl exists but LiteSpeed Containers not configured
2025-11-11 22:36:15 +05:00
usmannasir
6d66e5739a Add RHEL 8 family cgroups v2 detection and enablement instructions
Detect RHEL 8, AlmaLinux 8, Rocky Linux 8, and CloudLinux 8 systems and provide
clear instructions when cgroups v2 needs manual enablement.

These systems have cgroups v2 backported to kernel 4.18 but it's disabled by
default. When detected without cgroups v2 enabled, the system now:

1. Detects RHEL 8 family by checking /etc/redhat-release
2. Verifies if cgroups v2 is mounted (checks 'mount' output for 'cgroup2')
3. If not enabled, logs detailed instructions:
   - grubby command to add kernel parameter
   - Reboot instruction
   - Verification command
   - Clear step-by-step guide

Changes:
- _check_rhel8_cgroups_v2(): New method for RHEL 8 family detection
- _ensure_cgroups_enabled(): Calls RHEL 8 check before general checks
- check_cgroup_support(): Returns RHEL 8 status in support dict
  - rhel8_family: bool (detected RHEL 8 family)
  - rhel8_needs_enablement: bool (cgroups v2 not mounted)
  - os_name: str (full OS name from release file)

OS Support Status:
 Ubuntu 20.04+ - Native cgroups v2 (kernel 5.4+)
 RHEL/Alma/Rocky 9+ - Native cgroups v2 (kernel 5.14+)
⚠️ RHEL/Alma/Rocky/CloudLinux 8 - Needs manual enable (kernel 4.18 backported)
2025-11-11 17:27:11 +05:00
usmannasir
e61236c8a2 Add resource limits columns to upgrade script
Add database migrations for 7 new resource limit fields in packages_package table
to support users upgrading from older CyberPanel versions:
- memoryLimitMB (default: 1024)
- cpuCores (default: 1)
- ioLimitMBPS (default: 10)
- inodeLimit (default: 400000)
- maxConnections (default: 10)
- procSoftLimit (default: 400)
- procHardLimit (default: 500)

These columns are automatically added during upgrade via CLMigrations() function.
Uses try/except to safely handle cases where columns already exist.
2025-11-11 17:23:05 +05:00
usmannasir
87f0817482 Add documentation files to .gitignore
Prevent CHANGES_SUMMARY.md and RESOURCE_LIMITS_IMPLEMENTATION.md from being
accidentally committed. These are local reference files only.
2025-11-11 17:20:01 +05:00
usmannasir
c679d6ab10 Add comprehensive resource limits with automatic OpenLiteSpeed cgroups setup
This commit implements per-package resource limits for CyberPanel shared hosting
using OpenLiteSpeed's native cgroups v2 integration with automatic server configuration.

Features:
- 7 new package fields: memoryLimitMB, cpuCores, ioLimitMBPS, inodeLimit,
  maxConnections, procSoftLimit, procHardLimit
- Automatic OLS cgroups setup (no manual server configuration required)
- Multi-layer enforcement: OLS config + kernel cgroups v2 + filesystem quotas
- Per-user enforcement (subdomains/addon domains share parent's limits)
- Graceful degradation if cgroups unavailable
- Automatic backup of OLS config before modification

Backend Changes:
- packages/models.py: Added 7 resource limit fields with defaults
- packages/packagesManager.py: CRUD operations for resource limits
- plogical/resourceLimits.py: NEW - Resource manager with auto-setup
  * _ensure_cgroups_enabled(): Automatic OLS cgroups configuration
  * set_user_limits(): Apply limits via lscgctl
  * remove_user_limits(): Cleanup on deletion
  * set_inode_limit(): Filesystem quota management
- plogical/vhostConfs.py: Parameterized hardcoded resource limits
- plogical/vhost.py: Updated signatures to accept resource limits
- plogical/virtualHostUtilities.py: Extract and apply package limits


Frontend Changes:
- packages/templates/packages/createPackage.html: Resource limits UI
- packages/templates/packages/modifyPackage.html: Resource limits UI
- packages/static/packages/packages.js: AngularJS controller updates

Automatic Setup Flow:
When creating a website with enforceDiskLimits=True:
1. Check kernel cgroups v2 support
2. Run lssetup if lscgctl missing
3. Enable cgroups in OLS config if needed
4. Backup and modify /usr/local/lsws/conf/httpd_config.conf
5. Graceful restart of OpenLiteSpeed
6. Apply per-user limits via lscgctl
7. Set inode quotas via setquota

Requirements:
- Linux kernel 5.2+ (cgroups v2)
- OpenLiteSpeed 1.8+ (with lsns support)
- quota tools (optional, for inode limits)

Backward Compatibility:
- Existing packages receive default values via migration
- No manual setup required for new installations
- Graceful fallback if cgroups unavailable
2025-11-11 17:14:39 +05:00
usmannasir
5b7bcb462f Add appealing notification banner for .htaccess feature
- Add green gradient banner with modern design and animations
- Display text: Full .htaccess support • PHP configuration now works • Zero rule rewrites needed
- Link to https://cyberpanel.net/cyberpanel-htaccess-module
- Include ripple effect on button hover and rotation on close
- Add smart dismissal logic with localStorage persistence
- Show banner once per day with staggered delay for better UX
- Support mobile responsive design with flexible layout
- Position banner properly when multiple notifications are shown
2025-11-06 20:46:10 +05:00
usmannasir
ea0ee3f771 Add custom OLS binary installation to upgrade process
- Port custom binary installation methods from install to upgrade.py
- Automatically install/upgrade custom OLS binaries during CyberPanel upgrades
- Add architecture detection, download, installation, and module configuration
- Create automatic backups before upgrading binaries
- Enable .htaccess PHP config support for existing OpenLiteSpeed installations
- Make upgrade.py fully independent from installCyberPanel.py
2025-11-06 20:40:07 +05:00
usmannasir
2952791761 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
32a7442dba 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
73ec9950ec 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
e4a06a8aaf 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
f907351873 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
30249bb983 Add OpenLiteSpeed Module Developer Guide documentation
Downloaded from: https://github.com/litespeedtech/openlitespeed/blob/master/doc/ModuleDeveloperGuide.pdf
This guide provides documentation for developing modules for OpenLiteSpeed/LiteSpeed web server.
2025-10-28 12:39:27 +05:00