π Quick Start
π§ Advanced Usage
Note
hide-dotpaths Plugin instantly hides dot-prefixed files and directories from all ruTorrent path dropdowns and file browsers. It uses advanced DOM interception technology to remove dot-prefixed items before they become visible to users.
- π Instant Filtering - Items removed before they become visible
- β‘ Real-time Interception - Uses MutationObserver for immediate response
- π‘οΈ Dual Protection - Client-side filtering + server-side filemanager patch
- π Multi-Language - Support for 7 languages
- π§ Configurable - Flexible settings for different environments
- π Advanced Debug - Intelligent logging with deduplication
Important
Server Admin Problem: ruTorrent users can see and navigate into hidden directories (.config
, .cache
, .ssh
, etc.) that contain sensitive system files, configuration data, and application settings. This creates security risks and cluttered navigation.
Server administrators face a real challenge: When users browse directories in ruTorrent's file manager, they can see and access hidden dot-prefixed files and directories like:
.config/
- Application configuration files.cache/
- System cache directories.ssh/
- SSH keys and configuration.bashrc
,.profile
- User shell configurations.git/
- Git repositories.htaccess
- Web server configuration.env
- Environment variables and secrets
This creates several issues:
- π Security Risk: Users can access sensitive system files
- ποΈ Cluttered Navigation: Hidden files pollute the browsing experience
- β User Confusion: Non-technical users see system files they shouldn't access
- π οΈ Support Burden: Admins deal with users accidentally modifying system files
Note
Important Clarification: This plugin does not block legitimate access to hidden files. Users can still access their own hidden directories via CLI, SFTP, or other file access methods. This plugin simply reduces the accidental exposure and clutter in the ruTorrent web interface, providing a cleaner user experience while maintaining full file access capabilities.
hide-dotpaths Plugin provides a server admin solution that:
- π Instantly Hides dot-prefixed files and directories from all ruTorrent interfaces
- π‘οΈ Dual Protection - Combines client-side filtering with server-side enforcement
- π Advanced Monitoring - Detailed logging for server admins to audit what's being filtered
- π― Clean User Experience - Users see only relevant files and directories
- π§ Configurable - Admins can fine-tune what gets hidden and what doesn't
This plugin is designed for server admins who want to:
- Protect sensitive system files from accidental access via web interface
- Clean up the user experience by hiding irrelevant system files
- Monitor filtering activity with detailed debug logging
- Maintain control over what users can see and access in the web interface
- Reduce support tickets from users confused by system files
The advanced debug system allows admins to:
- Review exactly what files/directories are being filtered
- Catch any errors in detail should they occur
- Monitor filtering performance and effectiveness
- Troubleshoot issues with comprehensive logging
- Audit security by seeing what hidden files exist
- π Shared Hosting: Reduce accidental exposure of system files in web interface
- π’ Enterprise Environments: Protect sensitive configuration files from web access
- π₯ Multi-User Servers: Clean up navigation for non-technical users
- π‘οΈ Security-Conscious Admins: Reduce margin for unintentional errors
- π Monitoring: Track what hidden files exist and are being filtered (Debug Logging)
- Real-time Removal: Dot-prefixed items removed immediately
- Comprehensive Coverage: All ruTorrent browse dialogs, dropdowns, and menus
- Generic Filtering: Works with any dot-prefixed path (
.anything
,.whatever
, etc.) - Preserves Navigation: Keeps
..
parent directory references intact
- Client-Side: Advanced DOM interception using MutationObserver
- Server-Side: Programmatic override of filemanager settings
- Runtime Enforcement: Forces hidden files to stay hidden
- Intelligent Deduplication: Prevents duplicate log entries
- Scoped Debugging: Enable specific scopes (general, filter, patch, cache, performance)
- Rate Limiting: Configurable rate limiting to prevent spam
- Memory Management: Automatic cleanup prevents memory leaks
Important
Requirements:
- β ruTorrent v5.2+ installed and configured
- β Modern web browser with ES6+ support
- β Access to ruTorrent plugins directory
- β Proper file permissions for web server
# Clone to QuickBox ruTorrent plugins directory
git clone "https://github.com/QuickBox/rutorrent_hide-dotpaths.git" "/srv/rutorrent/plugins/hide-dotpaths"
# Set permissions
chown www-data:www-data -R "/srv/rutorrent/plugins/hide-dotpaths"
chmod 755 "/srv/rutorrent/plugins/hide-dotpaths/"
chmod 644 "/srv/rutorrent/plugins/hide-dotpaths/"*.js
chmod 644 "/srv/rutorrent/plugins/hide-dotpaths/"*.php
chmod 644 "/srv/rutorrent/plugins/hide-dotpaths/"*.info
# Restart services
sudo systemctl restart php8.1-fpm nginx
source /opt/quickbox/config/system/mflibs/quickbox >/dev/null 2>&1
read -d '' -ra users_all <<<"$(quickbox::database "SELECT username FROM user_information")"
for user in "${users_all[@]:-}"; do
sudo systemctl restart rtorrent@"${user}"
done
# Clone and copy to plugins directory
git clone https://github.com/QuickBox/rutorrent_hide-dotpaths.git
cp -r rutorrent_hide-dotpaths /path/to/rutorrent/plugins/hide-dotpaths
# Set permissions
chmod 755 /path/to/rutorrent/plugins/hide-dotpaths/
chmod 644 /path/to/rutorrent/plugins/hide-dotpaths/*.js
chmod 644 /path/to/rutorrent/plugins/hide-dotpaths/*.php
chmod 644 /path/to/rutorrent/plugins/hide-dotpaths/*.info
- Download from GitHub Releases
- Extract and copy to ruTorrent plugins directory
- Set permissions as shown above
Edit conf.php
to customize behavior:
<?php
// Main settings
$hide_dotpaths = true; // Enable/disable plugin
$filter_selects = true; // Filter <select> dropdowns
$filter_modals = true; // Filter modal file browsers
$filter_autocomplete = true; // Filter autocomplete dropdowns
$filter_ajax = true; // Filter AJAX responses
$filter_filemanager = true; // Filter filemanager plugin table rows
$preserve_parent_dirs = true; // Keep ".." parent directory references
$debug_mode = false; // Enable debug logging
$apply_filemanager_patch = true; // Apply server-side filemanager patch
// Advanced debug settings
$debug_scopes = 'general,filter'; // Debug scopes: general,filter,patch,cache,performance,all
$debug_rate_limit = 2000; // Rate limit in milliseconds
$debug_deduplication_window = 5000; // Deduplication window in milliseconds
$debug_enable_internal = false; // Enable internal cache debugging
?>
Option | Default | Description |
---|---|---|
$hide_dotpaths |
true |
Main enable/disable switch |
$filter_selects |
true |
Filter <select> dropdowns |
$filter_modals |
true |
Filter modal file browsers |
$filter_autocomplete |
true |
Filter autocomplete dropdowns |
$filter_ajax |
true |
Filter AJAX responses |
$filter_filemanager |
true |
Filter filemanager plugin table rows |
$preserve_parent_dirs |
true |
Keep .. parent directory references |
$debug_mode |
false |
Enable debug logging |
$apply_filemanager_patch |
true |
Apply server-side filemanager patch |
$debug_scopes |
'general,filter' |
Comma-separated debug scopes |
$debug_rate_limit |
2000 |
Rate limit in milliseconds |
$debug_deduplication_window |
5000 |
Deduplication window in milliseconds |
$debug_enable_internal |
false |
Enable internal cache debugging |
general
: Default scope for general messagesfilter
: Filtering-related messagespatch
: Filemanager patch messagescache
: Cache operation messagesperformance
: Performance and timing messagesall
: Enable all scopes
// Get debug statistics
const stats = window.getDebugStats();
console.log('Deduplication rate:', stats.skippedDuplicates / stats.totalCalls);
// Test the deduplication system
window.testAdvancedDebug();
// Clear debug cache manually
window.clearDebugCache();
// Enable specific scopes
$debug_scopes = 'general,filter,performance';
// Set custom rate limit (2 seconds)
$debug_rate_limit = 2000;
// Set deduplication window (5 seconds)
$debug_deduplication_window = 5000;
// Enable internal cache debugging
$debug_enable_internal = true;
$debug_mode = true;
// Test client-side filtering
testHideDotpaths();
// Check if filemanager patch is applied
console.log('Filemanager patch applied:', window.flm?.settings?.getSettingValue('showhidden') === false);
Open browser console and run:
testHideDotpaths();
- ruTorrent v5.2+ - Full support with enhanced features (tested:confirmed)
- All browsers - Modern browser support (ES6+)
- QuickBox Pro v3 - Full integration support
- Filemanager Plugin - Compatible with filemanager plugin
- Problem: Plugin doesn't filter dot-prefixed directories
- Solution: Check if plugin is enabled in ruTorrent Settings β Plugins
- Check: Verify file permissions and browser console for errors
- Problem: Dot-prefixed directories still visible after installation
- Solution: Refresh the page and clear browser cache
- Check: Verify configuration in
conf.php
and enable debug mode
- Problem: Plugin causes performance issues or slow loading
- Solution: Reduce cleanup frequency or disable unused filters
- Check: Monitor browser performance and check for conflicts
$debug_mode = true;
$debug_enable_internal = true; // For detailed cache debugging
// Reduce debug output
$debug_rate_limit = 5000; // 5 seconds between logs
$debug_deduplication_window = 10000; // 10 seconds deduplication
// Disable unused filters
$filter_ajax = false; // If not using AJAX dropdowns
$filter_autocomplete = false; // If not using autocomplete
Plugin Structure
βββ init.js # Main plugin logic (623 lines)
βββ conf.php # Configuration (58 lines)
βββ debug-utils.js # Advanced debug utilities (330 lines)
βββ debug-cache.js # Smart debug logging cache (119 lines)
βββ plugin.info # Plugin metadata
βββ lang/ # Multi-language support (7 languages)
βββ LICENSE # GPL v3 license
βββ README.md # This documentation
- MutationObserver - Real-time element interception
- Event Listeners - Real-time DOM monitoring
- Advanced Debug System - Intelligent logging with deduplication
- Configuration System - Flexible settings management
- Multi-Language Support - Internationalization for 7 languages
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the GNU General Public License v3.0.
Parent Software:
- ruTorrent - Copyright (C) 2009 [email protected]
- License: GNU General Public License v3.0
Made with β€οΈ by the QuickBox Team
- ποΈ QuickBox Team: For the amazing QuickBox Pro v3 framework
- π ruTorrent Team: For the excellent plugin system
- π₯ Community: For feedback, testing, and contributions
- π¬ Community: Join the QuickBox Community
- π Issues: Report bugs on GitHub Issues
- π Documentation: This README and inline code comments
Version: 2.5.210