From 2bb0088ade112bef490f167e06586b74f3792647 Mon Sep 17 00:00:00 2001 From: Ross Scroggs Date: Tue, 12 Dec 2023 10:25:59 -0800 Subject: [PATCH] Updated all drive commands to handle the following error: ``` ERROR: 401: Active session is invalid. Error code: 4 - authError ``` --- docs/GamUpdates.md | 11 +++++++++++ docs/How-to-Upgrade-from-Standard-GAM.md | 4 ++-- docs/Users-Drive-Files-Display.md | 1 + docs/Users-Drive-Files-Manage.md | 1 + docs/Version-and-Help.md | 12 ++++++------ src/GamUpdate.txt | 11 +++++++++++ src/gam/__init__.py | 14 ++++++++++---- src/gam/gamlib/glaction.py | 2 -- 8 files changed, 42 insertions(+), 14 deletions(-) diff --git a/docs/GamUpdates.md b/docs/GamUpdates.md index ecb8ee6f..4abd8e0f 100644 --- a/docs/GamUpdates.md +++ b/docs/GamUpdates.md @@ -10,6 +10,17 @@ Add the `-s` option to the end of the above commands to suppress creating the `g See [Downloads](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads) for Windows or other options, including manual installation +### 6.66.12 + +Upgraded to Python 3.12.1 where possible. + +Updated all drive commands to handle the following error: +``` +ERROR: 401: Active session is invalid. Error code: 4 - authError +``` +This is due to the Drive SDK API being disabled in the user's OU. +* See: https://support.google.com/a/answer/6105699 + ### 6.66.11 Fixed/improved handling of shortcuts in `gam transfer drive`. diff --git a/docs/How-to-Upgrade-from-Standard-GAM.md b/docs/How-to-Upgrade-from-Standard-GAM.md index 41f4fce8..6313ee9c 100644 --- a/docs/How-to-Upgrade-from-Standard-GAM.md +++ b/docs/How-to-Upgrade-from-Standard-GAM.md @@ -334,7 +334,7 @@ writes the credentials into the file oauth2.txt. admin@server:/Users/admin/bin/gamadv-xtd3$ rm -f /Users/admin/GAMConfig/oauth2.txt admin@server:/Users/admin/bin/gamadv-xtd3$ ./gam version WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found -GAMADV-XTD3 6.66.11 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.66.12 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.10.8 64-bit final MacOS High Sierra 10.13.6 x86_64 @@ -1002,7 +1002,7 @@ writes the credentials into the file oauth2.txt. C:\GAMADV-XTD3>del C:\GAMConfig\oauth2.txt C:\GAMADV-XTD3>gam version WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found -GAMADV-XTD3 6.66.11 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.66.12 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.0 64-bit final Windows-10-10.0.17134 AMD64 diff --git a/docs/Users-Drive-Files-Display.md b/docs/Users-Drive-Files-Display.md index dd028883..217e815e 100644 --- a/docs/Users-Drive-Files-Display.md +++ b/docs/Users-Drive-Files-Display.md @@ -34,6 +34,7 @@ ## API documentation * https://developers.google.com/drive/api/v3/reference/files +* https://support.google.com/a/answer/6105699 ## Definitions * [``](Drive-File-Selection) diff --git a/docs/Users-Drive-Files-Manage.md b/docs/Users-Drive-Files-Manage.md index 493cc379..dab4b92d 100644 --- a/docs/Users-Drive-Files-Manage.md +++ b/docs/Users-Drive-Files-Manage.md @@ -25,6 +25,7 @@ * https://developers.google.com/drive/api/v3/ref-single-parent * https://developers.google.com/drive/api/v3/shared-drives-diffs * https://developers.google.com/drive/api/v3/shortcuts +* https://support.google.com/a/answer/6105699 * https://support.google.com/a/answer/7374057 * https://developers.google.com/docs/api/reference/rest diff --git a/docs/Version-and-Help.md b/docs/Version-and-Help.md index 6208cdcf..a49b3c11 100644 --- a/docs/Version-and-Help.md +++ b/docs/Version-and-Help.md @@ -4,7 +4,7 @@ Print the current version of Gam with details ``` gam version -GAMADV-XTD3 6.66.11 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.66.12 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.0 64-bit final MacOS Monterey 12.7 x86_64 @@ -16,7 +16,7 @@ Time: 2023-06-02T21:10:00-07:00 Print the current version of Gam with details and time offset information ``` gam version timeoffset -GAMADV-XTD3 6.66.11 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.66.12 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.0 64-bit final MacOS Monterey 12.7 x86_64 @@ -28,7 +28,7 @@ Your system time differs from www.googleapis.com by less than 1 second Print the current version of Gam with extended details and SSL information ``` gam version extended -GAMADV-XTD3 6.66.11 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.66.12 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.0 64-bit final MacOS Monterey 12.7 x86_64 @@ -65,7 +65,7 @@ MacOS High Sierra 10.13.6 x86_64 Path: /Users/Admin/bin/gamadv-xtd3 Version Check: Current: 5.35.08 - Latest: 6.66.11 + Latest: 6.66.12 echo $? 1 ``` @@ -73,7 +73,7 @@ echo $? Print the current version number without details ``` gam version simple -6.66.11 +6.66.12 ``` In Linux/MacOS you can do: ``` @@ -83,7 +83,7 @@ echo $VER Print the current version of Gam and address of this Wiki ``` gam help -GAM 6.66.11 - https://github.com/taers232c/GAMADV-XTD3 +GAM 6.66.12 - https://github.com/taers232c/GAMADV-XTD3 Ross Scroggs Python 3.12.0 64-bit final MacOS Monterey 12.7 x86_64 diff --git a/src/GamUpdate.txt b/src/GamUpdate.txt index 122384ea..05edc7d2 100644 --- a/src/GamUpdate.txt +++ b/src/GamUpdate.txt @@ -2,6 +2,17 @@ Merged GAM-Team version +6.66.12 + +Upgraded to Python 3.12.1 where possible. + +Updated all drive commands to handle the following error: +``` +ERROR: 401: Active session is invalid. Error code: 4 - authError +``` +This is due to the Drive SDK API being disabled in the user's OU. +* See: https://support.google.com/a/answer/6105699 + 6.66.11 Fixed/improved handling of shortcuts in `gam transfer drive`. diff --git a/src/gam/__init__.py b/src/gam/__init__.py index 326c27ee..0e9a221a 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -2521,7 +2521,7 @@ def entityBadRequestWarning(entityValueList, errMessage, i=0, count=0): currentCountNL(i, count))) def userSvcNotApplicableOrDriveDisabled(user, errMessage, i=0, count=0): - if errMessage.find('Drive apps') == -1: + if errMessage.find('Drive apps') == -1 and errMessage.find('Active session is invalid') == -1: entityServiceNotApplicableWarning(Ent.USER, user, i, count) else: entityActionNotPerformedWarning([Ent.USER, user], errMessage, i, count) @@ -5082,8 +5082,11 @@ def checkGAPIError(e, softErrors=False, retryOnHttpError=False, mapNotFound=True systemErrorExit(HTTP_ERROR_RC, eContent) if 'error' in error: http_status = error['error']['code'] + reason = '' if 'errors' in error['error'] and 'message' in error['error']['errors'][0]: message = error['error']['errors'][0]['message'] + if 'reason' in error['error']['errors'][0]: + reason = error['error']['errors'][0]['reason'] elif 'errors' in error['error'] and 'Unknown Error' in error['error']['message'] and 'reason' in error['error']['errors'][0]: message = error['error']['errors'][0]['reason'] else: @@ -5132,7 +5135,10 @@ def checkGAPIError(e, softErrors=False, retryOnHttpError=False, mapNotFound=True elif status == 'INVALID_ARGUMENT': error = makeErrorDict(http_status, GAPI.INVALID_ARGUMENT, message) elif http_status == 401: - if status == 'PERMISSION_DENIED': + if 'active session is invalid' in lmessage and reason == 'authError': + message += ' Drive SDK API access disabled' + error = makeErrorDict(http_status, GAPI.AUTH_ERROR, message) + elif status == 'PERMISSION_DENIED': error = makeErrorDict(http_status, GAPI.PERMISSION_DENIED, message) elif http_status == 403: if 'quota exceeded for quota metric' in lmessage: @@ -16343,9 +16349,9 @@ def doCreateDataTransfer(): _assignAppParameter(Cmd.Previous().upper(), getString(Cmd.OB_PARAMETER_VALUE).upper().split(','), True) try: result = callGAPI(dt.transfers(), 'insert', - throwReasons=[GAPI.UNKNOWN_ERROR, GAPI.FORBIDDEN, GAPI.PERMISSION_DENIED], + throwReasons=[GAPI.UNKNOWN_ERROR, GAPI.FORBIDDEN], body=body, fields='id') - except (GAPI.unknownError, GAPI.forbidden, GAPI.permissionDenied) as e: + except (GAPI.unknownError, GAPI.forbidden) as e: entityActionFailedExit([Ent.USER, old_owner], str(e)) entityActionPerformed([Ent.TRANSFER_REQUEST, None]) Ind.Increment() diff --git a/src/gam/gamlib/glaction.py b/src/gam/gamlib/glaction.py index 4e6dc192..d2d6804c 100644 --- a/src/gam/gamlib/glaction.py +++ b/src/gam/gamlib/glaction.py @@ -166,9 +166,7 @@ class GamAction(): DELETE: ['Deleted', 'Delete'], DELETE_EMPTY: ['Deleted', 'Delete Empty'], DELETE_PREVIEW: ['Deleted (Preview)', 'Delete (Preview)'], - DEPROVISION: ['Deprovisioned', 'Deprovision'], DELETE_SHORTCUT: ['Deleted Shortcut', 'Delete Shortcut'], - DISABLE: ['Disabled', 'Disable'], DEPROVISION: ['Deprovisioned', 'Deprovision'], DISABLE: ['Disabled', 'Disable'], DOWNLOAD: ['Downloaded', 'Download'],