- Changed from incorrect URI splitting to proper request.GET.get() method
- Added proper URL decoding with unquote()
- Fixed both downloadFile and RootDownloadFile functions
- Added path normalization for additional security
- Added file existence validation
- Improved error messages to match reported error format
This fixes the 'Unauthorized access: Not a valid file' error when downloading files from the file manager.
- Added a new fixed position banner in the index.html to announce .htaccess support, including styling and functionality for showing and dismissing the notification.
- Enhanced file manager to support extraction of 7z and rar file formats, with appropriate command handling in filemanager.py.
- Updated JavaScript files to determine extraction types based on file extensions, ensuring compatibility with new formats.
- Modified HTML templates to include options for 7z and rar compression types in the user interface.
https://github.com/usmannasir/cyberpanel/issues/1617#issue-3727006951
These changes improve user experience by providing clear notifications and expanding file management capabilities within CyberPanel.
This commit implements an improved version of PRs #1575 and #1576 from @bdgreenweb
with critical performance optimizations.
## Background
The original PRs (#1575, #1576) proposed real-time disk usage tracking for file
manager operations. While the feature was valuable for improving user awareness of
disk quotas, there were several concerns:
1. **Performance Impact**: Original implementation used synchronous `executioner()`
calls that would block file operations until disk calculation completed
2. **Target Branch Issues**: PRs were submitted to the stable branch instead of
development branch, which could introduce instability
3. **Blocking Operations**: Each file operation would wait for disk usage
recalculation, potentially causing noticeable delays
## Implementation Changes
### filemanager/filemanager.py
- Added disk usage updates to 9 file operation methods:
- createNewFile() - After file creation
- createNewFolder() - After folder creation
- deleteFolderOrFile() - After deletion (both permanent and trash)
- restore() - After restoring from trash
- copy() - After copying files/folders
- move() - After moving files/folders
- upload() - After file uploads
- extract() - After extracting archives
- compress() - After creating archives
### plogical/IncScheduler.py
- Added CalculateAndUpdateDiskUsageDomain() function for domain-specific updates
- Added command-line argument handler for UpdateDiskUsageForceDomain
- Calculates disk usage for websites, email accounts, and bandwidth
## Key Improvements Over Original PRs
1. **Asynchronous Execution**: Uses `popenExecutioner()` instead of `executioner()`
- File operations return immediately without waiting
- Disk usage updates happen in background threads
- Zero performance impact on user operations
2. **Selective Updates**: Only updates the specific domain affected by the operation
rather than all domains system-wide
3. **Proper Branch Targeting**: Applied to development branch (v2.5.5-dev) for
proper testing before stable release
## Benefits
- Real-time disk usage tracking as requested
- No performance degradation
- Users immediately aware of quota usage
- Prevents accidental quota violations
- Better than competitors (cPanel/DirectAdmin) in responsiveness
## Acknowledgments
Thank you @bdgreenweb for the original implementation idea and PRs #1575/#1576.
While we couldn't merge them directly due to the performance and stability concerns
mentioned above, your contribution highlighted an important feature gap. This
implementation preserves your core functionality while addressing the performance
concerns through asynchronous execution.
This will definitely help organizations track disk usage more effectively without
sacrificing file manager performance.
- Updated multiple HTML templates to include rel="noopener" on links that open in a new tab, improving security by preventing potential reverse tabnabbing attacks.
- This change affects various templates across the backup, base, file manager, mail server, and website functions sections.