Welcome to CyberPanel plugin development! Here’s a detailed guide to enable debugging and troubleshoot your plugins effectively.
- Enable Debug Mode
Create a debug flag file to enable detailed logging:
touch /usr/local/CyberCP/debug
This activates debug logging throughout CyberPanel, including detailed request/response logging.
- Django Debug Configuration
Edit /usr/local/CyberCP/CyberCP/settings.py:
Change DEBUG from False to True
DEBUG = True
Add your development domain to ALLOWED_HOSTS
ALLOWED_HOSTS = [‘*’] # For development only!
Important: Remember to set DEBUG = False in production!
- Error Log Locations
CyberPanel logs are stored in multiple locations:
Main CyberPanel log
/home/cyberpanel/error-logs.txt
Django/LSCPD logs
/usr/local/lscp/logs/error.log
/usr/local/lscp/logs/stderr.log
Custom plugin logs (if using CyberCPLogFileWriter)
/home/cyberpanel/error-logs.txt
- Real-time Log Monitoring
Monitor logs in real-time while testing:
Watch all relevant logs simultaneously
tail -f /home/cyberpanel/error-logs.txt /usr/local/lscp/logs/error.log
- Plugin Development Best Practices
A. Logging in Your Plugin
Use CyberPanel’s logging system:
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging
In your plugin code
logging.writeToFile(“Debug: Entering my_function”)
logging.writeToFile(f"Variable value: {my_variable}")
B. Exception Handling
Always wrap your code with proper exception handling:
try:
# Your plugin logic here
result = perform_operation()
logging.writeToFile(f"Operation successful: {result}“)
except Exception as e:
# Log the full traceback
import traceback
error_msg = str(traceback.format_exc())
logging.writeToFile(f"Plugin Error: {error_msg}”)
# Return proper error response
return HttpResponse(json.dumps({
'status': 0,
'error_message': str(e)
}))
C. Debug-Specific Code
Add debug-only code blocks:
from plogical.processUtilities import ProcessUtilities
import os
if os.path.exists(ProcessUtilities.debugPath):
logging.writeToFile(“=== DEBUG MODE ACTIVE ===”)
logging.writeToFile(f"Request method: {request.method}“)
logging.writeToFile(f"Request body: {request.body}”)
logging.writeToFile(f"Request path: {request.path}")
- Common 500 Error Causes & Solutions
A. Import Errors
Always use absolute imports
from websiteFunctions.models import Websites # Good
from models import Websites # Bad - may cause import errors
B. Permission Issues
Ensure your plugin files have correct permissions:
chown -R cyberpanel:cyberpanel /usr/local/CyberCP/your_plugin/
chmod -R 755 /usr/local/CyberCP/your_plugin/
C. URL Pattern Issues
Register your URLs properly in your plugin’s urls.py:
from django.urls import path
from . import views
urlpatterns = [
path(‘your_endpoint/’, views.your_view, name=‘your_view_name’),
]
-
Development Workflow
-
Enable debugging:
touch /usr/local/CyberCP/debug
systemctl restart lscpd
-
Make changes to your plugin
-
Restart CyberPanel:
systemctl restart lscpd
-
Test and monitor logs:
tail -f /home/cyberpanel/error-logs.txt
-
Check browser console for JavaScript errors (F12)
-
Advanced Debugging Techniques
A. Print SQL Queries
from django.db import connection
print(connection.queries) # Shows all SQL queries
B. Interactive Debugging
Use Django shell for testing:
cd /usr/local/CyberCP
python manage.py shell
Then test your models and functions:
from your_plugin.models import YourModel
YourModel.objects.all()
C. Custom Middleware Debugging
If your plugin uses middleware, ensure it doesn’t interfere with secMiddleware.py.
- Frontend Debugging
For AngularJS-based interfaces:
// Add to your controller
console.log(‘Debug: Controller loaded’);
console.log(‘Response:’, response.data);
// Use $scope for debugging
$scope.debugMode = true; // Show debug info in template
- Testing Checklist
Before deploying:
- Remove all print() statements
- Set DEBUG = False
- Test with debug mode OFF
- Check all error handling
- Verify logging works correctly
- Test on fresh CyberPanel installation
Quick Debug Commands Reference
Enable debug mode
touch /usr/local/CyberCP/debug
Disable debug mode
rm -f /usr/local/CyberCP/debug
Restart CyberPanel
systemctl restart lscpd
View recent errors
tail -n 100 /home/cyberpanel/error-logs.txt
Clear log file (for testing)
/home/cyberpanel/error-logs.txt
Pro Tips:
- Use ACL Manager for permission checks in your views
- Follow CyberPanel’s coding patterns - study existing plugins
- Test with different user roles (admin, reseller, user)
- Use CyberPanel’s built-in utilities (ProcessUtilities, ACLManager, etc.)
- Always validate and sanitize input - check secMiddleware.py for examples
Good luck with your plugin development! The CyberPanel community is here to help if you encounter specific issues.