Commit Graph

9 Commits

Author SHA1 Message Date
master3395
197f355cf7 Plugins: fix 404 - add plugin roots to sys.path before loading URLs
- pluginHolder/urls: insert /usr/local/CyberCP and source paths at top of module
  so __import__(plugin_name + '.urls') finds plugin packages (fixes No module
  named 'X.urls'). Register plugin routes before catch-all help route.
- pluginHolder/views: add debug_loaded_plugins API and log full traceback on
  plugin import failure. panelAccess/emailMarketing settings/ routes added
  earlier; cspManager resilient to missing DB table.
Author: master3395
2026-02-15 23:24:04 +01:00
master3395
48ebfc79b2 pluginHolder/urls: register plugin routes before catch-all so /plugins/<name>/settings/ match 2026-02-15 23:06:03 +01:00
master3395
8fc7446d95 Plugins: fix installed/active counts, 404s, metadata sync, install fallback
- pluginHolder/views: use dir+meta.xml for installed count; exclude core apps;
  repair pass to restore meta.xml from source or GitHub; ensure_plugin_meta_xml
  falls back to GitHub when source missing; cap active <= installed
- pluginHolder/urls: include plugin routes for all on-disk plugins (not only
  INSTALLED_APPS) so /plugins/<name>/settings/ works after install
- pluginHolder/plugins.html: Install button tries local then store (GitHub)
- CyberCP/settings: sync INSTALLED_APPS with plugin dirs on disk (meta.xml+urls.py)
Author: master3395
2026-02-15 23:03:01 +01:00
master3395
df7c5ba234 Only include plugin URLs when app is in INSTALLED_APPS
Skip dynamic plugin URL inclusion for plugins that are on disk but not
in Django INSTALLED_APPS to avoid RuntimeError when loading models.
Plugin installer adds apps to INSTALLED_APPS on install; this prevents
breakage when that step was missed or reverted.
2026-02-03 19:09:46 +01:00
master3395
0225f2f95a Fix plugin settings 404: dynamic URL inclusion for all installed plugins
- pluginHolder/urls.py: Discover plugins from /usr/local/CyberCP and source
  paths (/home/cyberpanel/plugins, /home/cyberpanel-plugins); dynamically
  include each plugin's urls so /plugins/<name>/settings/ works without
  hardcoding. Add source path to sys.path when loading from source.
- CyberCP/urls.py: Remove hardcoded _plugin_routes; all plugin routes now
  served via pluginHolder dynamic inclusion.

Fixes 404 on /plugins/contaboAutoSnapshot/settings/ and any installed plugin
settings page. No per-plugin core changes required.
2026-02-03 18:46:05 +01:00
master3395
2bde2624f0 Enhance plugin store: Add upgrade button, auto-backup, revert functionality, cache randomization, and local time display
- Add upgrade button in plugin store when updates are available
- Implement automatic plugin backup before upgrades
- Add revert version functionality with backup selection
- Randomize cache duration (±10 minutes) to prevent simultaneous GitHub API requests
- Display cache expiry time in user's local timezone and locale format
- Fix revert plugin function to work without event object
- Improve error handling in plugin store operations
2026-01-27 00:32:45 +01:00
master3395
82d68ab5a3 Add Modify Date column, GitHub commit date fetching, and plugin store caching
- Added Modify Date column to both Table View and Plugin Store
- Implemented GitHub API integration to fetch last commit dates
- Added caching system for plugin store to prevent rate limit errors
- Enhanced plugin store with installed/enabled status enrichment
- Added comprehensive plugin development guide
- Updated testPlugin meta.xml author to usmannasir
2026-01-19 22:55:59 +01:00
master3395
ba262bdcb1 Refactor: replace url() with path() for Django routes in plugin Installer
- Updated pluginHolder/urls.py to use path() instead of url()
- Added new API routes for plugin installation, uninstallation, enable, and disable
- Compatible with Django 4.x (url() was removed in Django 4.0)

Ref: PR 1644
2026-01-06 19:23:04 +01:00
usmannasir
6dd7114f6d Initial commit for v2.4.3 2025-08-01 14:56:30 +05:00