The Problem
When you try to connect Google Drive, you get:
Scope has changed from "xxxx" to "xxxx xxxx xxxx"
This happens because the code stores scopes like "scope1 scope2" (string) but Google needs ["scope1", "scope2"] (list).
The Fix
You need to modify two files:
File 1: /usr/local/CyberCP/backup/backupManager.py
Around line 121, change this:
gDriveData['scopes'] = request.GET.get('s')
To this:
scopes_string = request.GET.get('s')
if isinstance(scopes_string, str):
gDriveData['scopes'] = scopes_string.split()
else:
gDriveData['scopes'] = scopes_string if scopes_string else []
File 2: /usr/local/CyberCP/plogical/IncScheduler.py
Find all three places where google.oauth2.credentials.Credentials is created (around lines 259, 275, and 367).
Before each credential creation, add this scope conversion:
scopes = gDriveData.get('scopes', [])
if isinstance(scopes, str):
scopes = scopes.split() if scopes else []
elif not isinstance(scopes, list):
scopes = []
Then use scopes instead of gDriveData['scopes'] in the Credentials call.
How to Apply
- Backup the files first:
sudo cp /usr/local/CyberCP/backup/backupManager.py /usr/local/CyberCP/public/backup/backupManager.py.backup
sudo cp /usr/local/CyberCP/plogical/IncScheduler.py /usr/local/CyberCP/plogical/IncScheduler.py.backup
-
Edit the files with nano or your preferred editor
-
Restart CyberPanel:
sudo systemctl restart lscpd
-
Delete your old Google Drive account in CyberPanel and revoke access at https:// myaccount. google. com/ permissions
-
Set up a fresh Google Drive account - it should work now!
-
here is working backup and incscheduler github . com /Dynamicearner/cyberpanelrelatedissues/tree/main
Note: The file locations mentioned are based on my configuration. Please edit them according to your own setup if needed.