gam7 7.21.1__tar.gz → 7.21.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of gam7 might be problematic. Click here for more details.
- {gam7-7.21.1 → gam7-7.21.3}/.github/workflows/build.yml +17 -20
- {gam7-7.21.1 → gam7-7.21.3}/PKG-INFO +1 -1
- {gam7-7.21.1 → gam7-7.21.3}/src/GamCommands.txt +4 -4
- {gam7-7.21.1 → gam7-7.21.3}/src/GamUpdate.txt +13 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/__init__.py +22 -11
- gam7-7.21.3/wiki/GAM-Release-Process.md +19 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/GamUpdates.md +9 -1
- {gam7-7.21.1 → gam7-7.21.3}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Version-and-Help.md +6 -6
- {gam7-7.21.1 → gam7-7.21.3}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/.github/ISSUE_TEMPLATE.txt +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/.github/actions/decrypt.sh +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/.github/actions/entitlements.plist +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/.github/actions/package_exclusions.txt +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/.github/stale.yml +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/.github/workflows/codeql-analysis.yml +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/.github/workflows/get-cacerts.yml +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/.github/workflows/pushwiki.yml +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/.github/workflows/pypi.yml +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/LICENSE +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/README.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/pyproject.toml +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/.gitignore +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/LICENSE +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/README.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/callgam.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/__main__.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/atom/__init__.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/atom/auth.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/atom/client.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/atom/core.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/atom/data.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/atom/http.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/atom/http_core.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/atom/http_interface.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/atom/mock_http.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/atom/mock_http_core.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/atom/mock_service.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/atom/service.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/atom/token_store.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/atom/url.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/cacerts.pem +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/cbcm-v1.1beta1.json +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/contactdelegation-v1.json +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/datastudio-v1.json +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gamlib/__init__.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gamlib/glaction.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gamlib/glapi.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gamlib/glcfg.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gamlib/glclargs.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gamlib/glentity.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gamlib/glgapi.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gamlib/glgdata.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gamlib/glglobals.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gamlib/glindent.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gamlib/glmsgs.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gamlib/glskus.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gamlib/gluprop.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gamlib/glverlibs.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gamlib/yubikey.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gdata/__init__.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gdata/alt/__init__.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gdata/alt/app_engine.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gdata/alt/appengine.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gdata/apps/__init__.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gdata/apps/audit/__init__.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gdata/apps/audit/service.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gdata/apps/contacts/__init__.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gdata/apps/contacts/service.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gdata/apps/service.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gdata/service.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/gdata/urlfetch.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/meet-v2beta.json +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam/serviceaccountlookup-v1.json +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam-install.sh +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam-setup.bat +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam.exe.manifest +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam.spec +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/gam.wxs +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/license.rtf +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/tools/a_atleast_b.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/tools/gen-wix-xml-filelist.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/tools/hooks/hook-googleapiclient.model.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/tools/hooks/hook-httplib2.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/tools/mkGamRef.py +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/tools/openssl.props +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/tools/ssd.mjs +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/src/version_info.txt.in +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/00scratch.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Addresses.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Administrators.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Alert-Center.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Aliases.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Authorization.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/BNF-Syntax.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Basic-Items.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Bulk-Processing.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Business-Account-Management.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/CSV-Input-Filtering.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/CSV-Output-Filtering.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/CSV-Special-Characters.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Calendars-Access.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Calendars-Events.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Calendars.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Chat-Bot-Setup-Use.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Chrome-AUE-Counts.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Chrome-Installed-Apps.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Chrome-Policies.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Chrome-Printers.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Chrome-Profile-Management.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Chrome-Version-Counts.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Chrome-Version-History.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/ChromeOS-Devices.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Classroom-Courses.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Classroom-Guardians.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Classroom-Invitations.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Classroom-Membership.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Classroom-StudentGroups.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Cloud-Channel.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Cloud-Identity-Devices.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Cloud-Identity-Groups.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Cloud-Identity-Policies.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Cloud-Storage.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Collections-of-Items.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Collections-of-Users.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Command-Line-Parsing.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Command-Logging-Progress.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Context-Aware-Access-Levels.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Customer.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Domain-People-Contacts-Profiles.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Domain-SharedContacts.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Domains-Verification.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Domains.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Downloads-Installs.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Drive-File-Selection.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Drive-Items.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Drive-REST-API-v3.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Email-Audit-Monitor.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Find-File-Owner.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/GAM-Public-Chat-Room.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/GAM-Return-Codes.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/GAM7-on-Android-Devices.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Global-Address-List.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Google-Data-Transfers.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Google-Network-Addresses.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Groups-Membership.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Groups.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/HTTPS-Proxy.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Home.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/How-to-Install-GAM7.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/How-to-Uninstall-GAM7.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/How-to-Update-GAM7.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Inbound-SSO.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Install-GAM-as-Python-Library.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Licenses.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/List-Items.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/List.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Mobile-Devices.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Organizational-Units.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Other-Resources.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Permission-Matches.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Python-Regular-Expressions.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/README.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Rclone.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Reports.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Reseller.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Resources.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/SSL-Root-CA-Certificates.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Schemas.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Scripts.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Send-Email.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Shared-Drives.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Sites.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Tag-Replace.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Todrive.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Unmanaged-Accounts.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Upgrade-Benefits.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Analytics-Admin.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Application-Specific-Passwords.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Backup-Verification-Codes.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Calendars-Access.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Calendars-Events.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Calendars.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Chat.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Classification-Labels.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Classroom-Profile.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Contacts-Delegates.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Contacts.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Deprovision.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Drive-Activity-Settings.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Drive-Cleanup.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Drive-Comments.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Drive-Copy-Move.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Drive-Files-Display.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Drive-Files-Manage.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Drive-Orphans.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Drive-Ownership.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Drive-Permissions.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Drive-Query.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Drive-Revisions.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Drive-Shortcuts.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Drive-Transfer.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Forms.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Gmail-CSE.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Gmail-Delegates.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Gmail-Filters.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Gmail-Forwarding.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Gmail-Labels.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Gmail-Messages-Threads.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Gmail-Profile.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Gmail-S-MIME.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Gmail-Settings.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Group-Membership.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Keep-Notes.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Looker-Studio.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Meet.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-People-Contacts-Profiles.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Photo.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Profile-Photo.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Profile-Sharing.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Shared-Drives.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Signout-Turnoff2SV.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Spreadsheets.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Tag-Manager.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Tasks.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Tokens.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-Web-Resources-and-Sites.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users-YouTube.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Users.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Vault-Takeout.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/_Sidebar.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/gam.cfg.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-AdminSettingsExamples.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Android-Installation.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-BulkOperations.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-CalendarExamples.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Chat-Bot.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Chrome-Browser-Management.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Chrome-OS-Installation.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Chrome-Policy-Settings.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Cloud-Identity-Groups.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Command-Reference-Calendars.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Command-Reference-Definitions.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Command-Reference-Drive.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Command-Reference-Email.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Command-Reference-Groups.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Command-Reference-Users.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Context-Aware-Access-Levels.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-CreatingClientSecretsFile.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Custom-Schemas.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Data-Transfers.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-DomainVerification.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-ExamplesAccountAuditing.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-ExamplesCSV.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-ExamplesEmailSettings.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-ExamplesOrganizations.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-GAM-Discussion-Group.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-GAM-options-files.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-GAM3CSVListings.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-GAM3DirectoryCommands.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-GAM3GroupSettings.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-GAM7-FAQ.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-GoogleDriveManagement.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Home.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Inbound-SSO-Settings.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-LicenseExamples.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Managing-Admins.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Managing-Devices.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Managing-Google-Classroom.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-OAuthKeyManagement.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Printers.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-ResellerCommands.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-SecurityExamples.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-UnmanagedUsersExamples.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Use-a-Yubikey.md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
- {gam7-7.21.1 → gam7-7.21.3}/wiki/l-_Footer.md +0 -0
|
@@ -77,34 +77,38 @@ jobs:
|
|
|
77
77
|
jid: 9
|
|
78
78
|
goal: build
|
|
79
79
|
name: Build Arm MacOS 15
|
|
80
|
-
- os:
|
|
80
|
+
- os: macos-26
|
|
81
81
|
jid: 10
|
|
82
82
|
goal: build
|
|
83
|
+
name: Build Arm MacOS 26
|
|
84
|
+
- os: windows-2025
|
|
85
|
+
jid: 11
|
|
86
|
+
goal: build
|
|
83
87
|
name: Build Intel Windows
|
|
84
88
|
- os: windows-11-arm
|
|
85
|
-
jid:
|
|
89
|
+
jid: 12
|
|
86
90
|
goal: build
|
|
87
91
|
name: Build Arm Windows
|
|
88
92
|
- os: ubuntu-24.04
|
|
89
93
|
goal: test
|
|
90
94
|
python: "3.10"
|
|
91
|
-
jid:
|
|
95
|
+
jid: 13
|
|
92
96
|
name: Test Python 3.10
|
|
93
97
|
- os: ubuntu-24.04
|
|
94
98
|
goal: test
|
|
95
99
|
python: "3.11"
|
|
96
|
-
jid:
|
|
100
|
+
jid: 14
|
|
97
101
|
name: Test Python 3.11
|
|
98
102
|
- os: ubuntu-24.04
|
|
99
103
|
goal: test
|
|
100
104
|
python: "3.12"
|
|
101
|
-
jid: 14
|
|
102
|
-
name: Test Python 3.12
|
|
103
|
-
- os: ubuntu-24.04
|
|
104
|
-
goal: test
|
|
105
|
-
python: "3.14-dev"
|
|
106
105
|
jid: 15
|
|
107
|
-
name: Test Python 3.
|
|
106
|
+
name: Test Python 3.12
|
|
107
|
+
#- os: ubuntu-24.04
|
|
108
|
+
# goal: test
|
|
109
|
+
# python: "3.14-dev"
|
|
110
|
+
# jid: 16
|
|
111
|
+
# name: Test Python 3.14-dev
|
|
108
112
|
|
|
109
113
|
steps:
|
|
110
114
|
|
|
@@ -127,7 +131,7 @@ jobs:
|
|
|
127
131
|
with:
|
|
128
132
|
path: |
|
|
129
133
|
cache.tar.xz
|
|
130
|
-
key: gam-${{ matrix.jid }}-
|
|
134
|
+
key: gam-${{ matrix.jid }}-20250916
|
|
131
135
|
|
|
132
136
|
- name: Untar Cache archive
|
|
133
137
|
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit == 'true'
|
|
@@ -454,21 +458,14 @@ jobs:
|
|
|
454
458
|
"$PYTHON" -m pip install --upgrade setuptools-scm
|
|
455
459
|
"$PYTHON" -m pip list
|
|
456
460
|
|
|
457
|
-
- name: Custom wheels for Win arm64
|
|
458
|
-
if: runner.os == 'Windows' && runner.arch == 'ARM64'
|
|
459
|
-
run: |
|
|
460
|
-
latest_crypt_whl=$(curl https://api.github.com/repos/jay0lee/cryptography/releases/latest -s | jq -r .assets.[0].browser_download_url)
|
|
461
|
-
echo "Downloading ${latest_crypt_whl}..."
|
|
462
|
-
curl -O -L "$latest_crypt_whl"
|
|
463
|
-
"$PYTHON" -m pip install cryptography*.whl
|
|
464
|
-
|
|
465
461
|
- name: Install pip requirements
|
|
466
462
|
run: |
|
|
467
463
|
echo "before anything..."
|
|
468
464
|
"$PYTHON" -m pip list
|
|
469
465
|
"$PYTHON" -m pip install --upgrade ..[yubikey]
|
|
466
|
+
# forcefully update all installed packages
|
|
467
|
+
"$PYTHON" -m pip --disable-pip-version-check list --outdated --format=json | "$PYTHON" -c "import json, sys; print('\n'.join([x['name'] for x in json.load(sys.stdin)]))" | xargs -n1 "$PYTHON" -m pip install -U
|
|
470
468
|
"$PYTHON" -m pip list
|
|
471
|
-
#"$PYTHON" -m pip install --force-reinstall --no-deps --upgrade cryptography
|
|
472
469
|
echo "after everything..."
|
|
473
470
|
"$PYTHON" -m pip list
|
|
474
471
|
|
|
@@ -5710,7 +5710,7 @@ gam create|add user <EmailAddress> [ignorenullpassword] <UserAttribute>*
|
|
|
5710
5710
|
(groups [<GroupRole>] [[delivery] <DeliverySetting>] <GroupEntity>)*
|
|
5711
5711
|
[alias|aliases <EmailAddressList>]
|
|
5712
5712
|
[license <SKUIDList> [product|productid <ProductID>]]
|
|
5713
|
-
[notify <EmailAddressList>
|
|
5713
|
+
[[notify <EmailAddressList>] [notifyrecoveryemail]
|
|
5714
5714
|
[subject <String>]
|
|
5715
5715
|
[notifypassword <String>]
|
|
5716
5716
|
[from <EmailAaddress>]
|
|
@@ -5736,7 +5736,7 @@ gam update user <UserItem> [ignorenullpassword] <UserAttribute>*
|
|
|
5736
5736
|
[createifnotfound] [notfoundpassword (random [<Integer>])|blocklogin|<Password>]
|
|
5737
5737
|
(groups [<GroupRole>] [[delivery] <DeliverySetting>] <GroupEntity>)*
|
|
5738
5738
|
[alias|aliases <EmailAddressList>]
|
|
5739
|
-
[notify <EmailAddressList>
|
|
5739
|
+
[[notify <EmailAddressList>] [notifyrecoveryemail]
|
|
5740
5740
|
[subject <String>]
|
|
5741
5741
|
[notifypassword <String>]
|
|
5742
5742
|
[from <EmailAaddress>]
|
|
@@ -5774,7 +5774,7 @@ gam update users <UserTypeEntity> [ignorenullpassword] <UserAttribute>*
|
|
|
5774
5774
|
[createifnotfound] [notfoundpassword (random [<Integer>])|blocklogin|<Password>]
|
|
5775
5775
|
(groups [<GroupRole>] [[delivery] <DeliverySetting>] <GroupEntity>)*
|
|
5776
5776
|
[alias|aliases <EmailAddressList>]
|
|
5777
|
-
[notify <EmailAddressList>
|
|
5777
|
+
[[notify <EmailAddressList>] [notifyrecoveryemail]
|
|
5778
5778
|
[subject <String>]
|
|
5779
5779
|
[notifypassword <String>]
|
|
5780
5780
|
[from <EmailAddress>]
|
|
@@ -5811,7 +5811,7 @@ gam <UserTypeEntity> update users [ignorenullpassword] <UserAttribute>*
|
|
|
5811
5811
|
[createifnotfound] [notfoundpassword (random [<Integer>])|blocklogin|<Password>]
|
|
5812
5812
|
(groups [<GroupRole>] [[delivery] <DeliverySetting>] <GroupEntity>)*
|
|
5813
5813
|
[alias|aliases <EmailAddressList>]
|
|
5814
|
-
[notify <EmailAddressList>
|
|
5814
|
+
[[notify <EmailAddressList>] [notifyrecoveryemail]
|
|
5815
5815
|
[subject <String>]
|
|
5816
5816
|
[notifypassword <String>]
|
|
5817
5817
|
[from <EmailAaddress>]
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
7.21.03
|
|
2
|
+
|
|
3
|
+
Added option `notifyrecoveryemail` to `gam create user` and `gam <UserTypeEntity> update user password <String>`
|
|
4
|
+
that sends the passsword notification email to the user's recovery email address (if defined).
|
|
5
|
+
|
|
6
|
+
7.21.02
|
|
7
|
+
|
|
8
|
+
GAM now builds on macOS 26 Tahoe and properly identifies the OS.
|
|
9
|
+
|
|
10
|
+
A custom build of the cryptography library is no longer needed for Windows arm64 builds as the project now releases their own build for the OS.
|
|
11
|
+
|
|
12
|
+
Upgrade to OpenSSL 3.5.3 latest
|
|
13
|
+
|
|
1
14
|
7.21.01
|
|
2
15
|
|
|
3
16
|
Replaced datetime, dateutil, calendar and iso8601 Python libraries with arrow library.
|
|
@@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki
|
|
|
25
25
|
"""
|
|
26
26
|
|
|
27
27
|
__author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
|
|
28
|
-
__version__ = '7.21.
|
|
28
|
+
__version__ = '7.21.03'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -9361,6 +9361,7 @@ MACOS_CODENAMES = {
|
|
|
9361
9361
|
13: 'Ventura',
|
|
9362
9362
|
14: 'Sonoma',
|
|
9363
9363
|
15: 'Sequoia',
|
|
9364
|
+
26: 'Tahoe',
|
|
9364
9365
|
}
|
|
9365
9366
|
|
|
9366
9367
|
def getOSPlatform():
|
|
@@ -9370,7 +9371,7 @@ def getOSPlatform():
|
|
|
9370
9371
|
elif myos == 'Windows':
|
|
9371
9372
|
pltfrm = ' '.join(platform.win32_ver())
|
|
9372
9373
|
elif myos == 'Darwin':
|
|
9373
|
-
myos = '
|
|
9374
|
+
myos = 'macOS'
|
|
9374
9375
|
mac_ver = platform.mac_ver()[0]
|
|
9375
9376
|
major_ver = int(mac_ver.split('.')[0]) # macver 10.14.6 == major_ver 10
|
|
9376
9377
|
minor_ver = int(mac_ver.split('.')[1]) # macver 10.14.6 == minor_ver 14
|
|
@@ -43946,6 +43947,7 @@ def getUserAttributes(cd, updateCmd, noUid=False):
|
|
|
43946
43947
|
invalidArgumentExit(Cmd.OB_SCHEMA_NAME_FIELD_NAME)
|
|
43947
43948
|
|
|
43948
43949
|
parameters = {
|
|
43950
|
+
'notifyRecoveryEmail': False,
|
|
43949
43951
|
'verifyNotInvitable': False,
|
|
43950
43952
|
'createIfNotFound': False,
|
|
43951
43953
|
'noActionIfAlias': False,
|
|
@@ -43962,7 +43964,7 @@ def getUserAttributes(cd, updateCmd, noUid=False):
|
|
|
43962
43964
|
body = {'name': {'givenName': UNKNOWN, 'familyName': UNKNOWN}}
|
|
43963
43965
|
body['primaryEmail'] = getEmailAddress(noUid=noUid)
|
|
43964
43966
|
notFoundBody = {}
|
|
43965
|
-
notify = {'subject': '', 'message': '', 'html': False, 'charset': UTF8, 'password': ''}
|
|
43967
|
+
notify = {'recipients': [], 'subject': '', 'message': '', 'html': False, 'charset': UTF8, 'password': ''}
|
|
43966
43968
|
primary = {}
|
|
43967
43969
|
updatePrimaryEmail = {}
|
|
43968
43970
|
groupOrgUnitMap = None
|
|
@@ -43974,7 +43976,9 @@ def getUserAttributes(cd, updateCmd, noUid=False):
|
|
|
43974
43976
|
while Cmd.ArgumentsRemaining():
|
|
43975
43977
|
myarg = getArgument()
|
|
43976
43978
|
if myarg == 'notify':
|
|
43977
|
-
notify['recipients']
|
|
43979
|
+
notify['recipients'].extend(getNormalizedEmailAddressEntity(shlexSplit=True, noLower=True))
|
|
43980
|
+
elif myarg == 'notifyrecoveryemail':
|
|
43981
|
+
parameters['notifyRecoveryEmail'] = True
|
|
43978
43982
|
elif myarg == 'subject':
|
|
43979
43983
|
notify['subject'] = getString(Cmd.OB_STRING)
|
|
43980
43984
|
elif myarg in SORF_MSG_FILE_ARGUMENTS:
|
|
@@ -44390,7 +44394,7 @@ def createUserAddAliases(cd, user, aliasList, i, count):
|
|
|
44390
44394
|
# (groups [<GroupRole>] [[delivery] <DeliverySetting>] <GroupEntity>)*
|
|
44391
44395
|
# [alias|aliases <EmailAddressList>]
|
|
44392
44396
|
# [license <SKUID> [product|productid <ProductID>]]
|
|
44393
|
-
# [notify <EmailAddressList>
|
|
44397
|
+
# [[notify <EmailAddressList>] [notifyrecoveryemail]
|
|
44394
44398
|
# [subject <String>]
|
|
44395
44399
|
# [notifypassword <String>]
|
|
44396
44400
|
# [from <EmailAaddress>]
|
|
@@ -44408,7 +44412,7 @@ def doCreateUser():
|
|
|
44408
44412
|
suffix = 0
|
|
44409
44413
|
originalEmail = body['primaryEmail']
|
|
44410
44414
|
atLoc = originalEmail.find('@')
|
|
44411
|
-
fields = '*' if tagReplacements['subs'] else 'primaryEmail,name'
|
|
44415
|
+
fields = '*' if tagReplacements['subs'] else 'primaryEmail,name,recoveryEmail'
|
|
44412
44416
|
while True:
|
|
44413
44417
|
user = body['primaryEmail']
|
|
44414
44418
|
if parameters['verifyNotInvitable']:
|
|
@@ -44449,7 +44453,9 @@ def doCreateUser():
|
|
|
44449
44453
|
createUserAddToGroups(cd, result['primaryEmail'], addGroups, 0, 0)
|
|
44450
44454
|
if addAliases:
|
|
44451
44455
|
createUserAddAliases(cd, result['primaryEmail'], addAliases, 0, 0)
|
|
44452
|
-
if notify.get('recipients'):
|
|
44456
|
+
if (notify.get('recipients') or (parameters['notifyRecoveryEmail'] and result.get('recoveryEmail'))):
|
|
44457
|
+
if parameters['notifyRecoveryEmail'] and result.get('recoveryEmail'):
|
|
44458
|
+
notify['recipients'].append(result['recoveryEmail'])
|
|
44453
44459
|
sendCreateUpdateUserNotification(result, notify, tagReplacements)
|
|
44454
44460
|
for productSku in parameters[LICENSE_PRODUCT_SKUIDS]:
|
|
44455
44461
|
productId = productSku[0]
|
|
@@ -44492,7 +44498,7 @@ def verifyUserPrimaryEmail(cd, user, createIfNotFound, i, count):
|
|
|
44492
44498
|
# [createifnotfound] [notfoundpassword (random [<Integer>])|blocklogin|<Password>]
|
|
44493
44499
|
# (groups [<GroupRole>] [[delivery] <DeliverySetting>] <GroupEntity>)*
|
|
44494
44500
|
# [alias|aliases <EmailAddressList>]
|
|
44495
|
-
# [notify <EmailAddressList>
|
|
44501
|
+
# [[notify <EmailAddressList>] [notifyrecoveryemail]
|
|
44496
44502
|
# [subject <String>]
|
|
44497
44503
|
# [notifypassword <String>]
|
|
44498
44504
|
# [from <EmailAaddress>]
|
|
@@ -44521,7 +44527,7 @@ def updateUsers(entityList):
|
|
|
44521
44527
|
else:
|
|
44522
44528
|
checkImmutableOUs = False
|
|
44523
44529
|
i, count, entityList = getEntityArgument(entityList)
|
|
44524
|
-
fields = '*' if tagReplacements['subs'] else 'primaryEmail,name'
|
|
44530
|
+
fields = '*' if tagReplacements['subs'] else 'primaryEmail,name,recoveryEmail'
|
|
44525
44531
|
for user in entityList:
|
|
44526
44532
|
i += 1
|
|
44527
44533
|
user = userKey = normalizeEmailAddressOrUID(user)
|
|
@@ -44597,7 +44603,10 @@ def updateUsers(entityList):
|
|
|
44597
44603
|
entityActionPerformed([Ent.USER, user], i, count)
|
|
44598
44604
|
if PwdOpts.filename and PwdOpts.password:
|
|
44599
44605
|
writeFile(PwdOpts.filename, f'{userKey},{PwdOpts.password}\n', mode='a', continueOnError=True)
|
|
44600
|
-
if parameters['notifyOnUpdate'] and notify
|
|
44606
|
+
if (parameters['notifyOnUpdate'] and notify['password'] and
|
|
44607
|
+
(notify.get('recipients') or (parameters['notifyRecoveryEmail'] and result.get('recoveryEmail')))):
|
|
44608
|
+
if parameters['notifyRecoveryEmail'] and result.get('recoveryEmail'):
|
|
44609
|
+
notify['recipients'].append(result['recoveryEmail'])
|
|
44601
44610
|
sendCreateUpdateUserNotification(result, notify, tagReplacements, i, count, createMessage=False)
|
|
44602
44611
|
break
|
|
44603
44612
|
except GAPI.conditionNotMet as e:
|
|
@@ -44631,8 +44640,10 @@ def updateUsers(entityList):
|
|
|
44631
44640
|
createUserAddToGroups(cd, result['primaryEmail'], addGroups, i, count)
|
|
44632
44641
|
if addAliases:
|
|
44633
44642
|
createUserAddAliases(cd, result['primaryEmail'], addAliases, i, count)
|
|
44634
|
-
if notify.get('recipients'):
|
|
44643
|
+
if (notify.get('recipients') or (parameters['notifyRecoveryEmail'] and result.get('recoveryEmail'))):
|
|
44635
44644
|
notify['password'] = notify['notFoundPassword']
|
|
44645
|
+
if parameters['notifyRecoveryEmail'] and result.get('recoveryEmail'):
|
|
44646
|
+
notify['recipients'].append(result['recoveryEmail'])
|
|
44636
44647
|
sendCreateUpdateUserNotification(result, notify, tagReplacements, i, count)
|
|
44637
44648
|
except GAPI.duplicate:
|
|
44638
44649
|
duplicateAliasGroupUserWarning(cd, [Ent.USER, body['primaryEmail']], i, count)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Steps to release a new GAM version
|
|
2
|
+
1. In a final commit before release:
|
|
3
|
+
- [src/gam/__init.py](https://github.com/GAM-team/GAM/blob/main/src/gam/__init__.py) `__version___` value should be updated to the new version.
|
|
4
|
+
- [src/GamUpdate.txt](https://github.com/GAM-team/GAM/blob/main/src/GamUpdate.txt) should be updated with a high-level changelog.
|
|
5
|
+
- [wiki/GamUpdates.md](https://github.com/GAM-team/GAM/blob/main/wiki/GamUpdates.md) should be updated with same high-level changelog.
|
|
6
|
+
2. The [build.yaml](https://github.com/GAM-team/GAM/blob/main/.github/workflows/build.yml) Github Action for final commit should complete successfully and creating a new dated Draft release.
|
|
7
|
+
- We should *NEVER* upload release files manually. Only release files automatically created and [attested](https://github.com/GAM-team/GAM/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official#github-attestation-linuxmacoswindows) as created by the Github Action should be used.
|
|
8
|
+
3. Edit the Draft release:
|
|
9
|
+
- Create a new tag with the format: `vN.NN.NN` where N.NN.NN is the GAM release version.
|
|
10
|
+
- name the release "GAM N.NN.NN" where N.NN.NN is the GAM release version.
|
|
11
|
+
- Include the changelog details for the new version in details.
|
|
12
|
+
- leave "Set as pre-release" unchecked and "Set as the latest release" checked.
|
|
13
|
+
- Publish the release.
|
|
14
|
+
|
|
15
|
+
# TODO: Release Process Improvements
|
|
16
|
+
- copying changelog between GamUpdate.txt, GamUpdates.md and release description is manual and tedious. Automate it.
|
|
17
|
+
- copying version string from gam/__init__.py, changelogs and release details and tag in manual and tedious. Automate it.
|
|
18
|
+
- See if we can block releases with binaries not uploaded by GitHub Actions to further secure release pipelines.
|
|
19
|
+
|
|
@@ -10,7 +10,15 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
|
|
|
10
10
|
|
|
11
11
|
See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation
|
|
12
12
|
|
|
13
|
-
### 7.21.
|
|
13
|
+
### 7.21.02
|
|
14
|
+
|
|
15
|
+
GAM now builds on macOS 26 Tahoe and properly identifies the OS.
|
|
16
|
+
|
|
17
|
+
A custom build of the cryptography library is no longer needed for Windows arm64 builds as the project now releases their own build for the OS.
|
|
18
|
+
|
|
19
|
+
Upgrade to OpenSSL 3.5.3 latest
|
|
20
|
+
|
|
21
|
+
### 7.21.01
|
|
14
22
|
|
|
15
23
|
Replaced datetime, dateutil, calendar and iso8601 Python libraries with arrow library.
|
|
16
24
|
This should have no performance impact; report any problems.
|
|
@@ -252,7 +252,7 @@ writes the credentials into the file oauth2.txt.
|
|
|
252
252
|
admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
|
253
253
|
admin@server:/Users/admin$ gam version
|
|
254
254
|
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
|
|
255
|
-
GAM 7.21.
|
|
255
|
+
GAM 7.21.01 - https://github.com/GAM-team/GAM - pyinstaller
|
|
256
256
|
GAM Team <google-apps-manager@googlegroups.com>
|
|
257
257
|
Python 3.13.7 64-bit final
|
|
258
258
|
MacOS Sequoia 15.6.1 x86_64
|
|
@@ -990,7 +990,7 @@ writes the credentials into the file oauth2.txt.
|
|
|
990
990
|
C:\>del C:\GAMConfig\oauth2.txt
|
|
991
991
|
C:\>gam version
|
|
992
992
|
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
|
|
993
|
-
GAM 7.21.
|
|
993
|
+
GAM 7.21.01 - https://github.com/GAM-team/GAM - pythonsource
|
|
994
994
|
GAM Team <google-apps-manager@googlegroups.com>
|
|
995
995
|
Python 3.13.7 64-bit final
|
|
996
996
|
Windows-10-10.0.17134 AMD64
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Print the current version of Gam with details
|
|
4
4
|
```
|
|
5
5
|
gam version
|
|
6
|
-
GAM 7.21.
|
|
6
|
+
GAM 7.21.01 - https://github.com/GAM-team/GAM - pyinstaller
|
|
7
7
|
GAM Team <google-apps-manager@googlegroups.com>
|
|
8
8
|
Python 3.13.7 64-bit final
|
|
9
9
|
MacOS Sequoia 15.6.1 x86_64
|
|
@@ -15,7 +15,7 @@ Time: 2023-06-02T21:10:00-07:00
|
|
|
15
15
|
Print the current version of Gam with details and time offset information
|
|
16
16
|
```
|
|
17
17
|
gam version timeoffset
|
|
18
|
-
GAM 7.21.
|
|
18
|
+
GAM 7.21.01 - https://github.com/GAM-team/GAM - pyinstaller
|
|
19
19
|
GAM Team <google-apps-manager@googlegroups.com>
|
|
20
20
|
Python 3.13.7 64-bit final
|
|
21
21
|
MacOS Sequoia 15.6.1 x86_64
|
|
@@ -27,7 +27,7 @@ Your system time differs from www.googleapis.com by less than 1 second
|
|
|
27
27
|
Print the current version of Gam with extended details and SSL information
|
|
28
28
|
```
|
|
29
29
|
gam version extended
|
|
30
|
-
GAM 7.21.
|
|
30
|
+
GAM 7.21.01 - https://github.com/GAM-team/GAM - pyinstaller
|
|
31
31
|
GAM Team <google-apps-manager@googlegroups.com>
|
|
32
32
|
Python 3.13.7 64-bit final
|
|
33
33
|
MacOS Sequoia 15.6.1 x86_64
|
|
@@ -64,7 +64,7 @@ MacOS High Sierra 10.13.6 x86_64
|
|
|
64
64
|
Path: /Users/Admin/bin/gam7
|
|
65
65
|
Version Check:
|
|
66
66
|
Current: 5.35.08
|
|
67
|
-
Latest: 7.21.
|
|
67
|
+
Latest: 7.21.01
|
|
68
68
|
echo $?
|
|
69
69
|
1
|
|
70
70
|
```
|
|
@@ -72,7 +72,7 @@ echo $?
|
|
|
72
72
|
Print the current version number without details
|
|
73
73
|
```
|
|
74
74
|
gam version simple
|
|
75
|
-
7.21.
|
|
75
|
+
7.21.01
|
|
76
76
|
```
|
|
77
77
|
In Linux/MacOS you can do:
|
|
78
78
|
```
|
|
@@ -82,7 +82,7 @@ echo $VER
|
|
|
82
82
|
Print the current version of Gam and address of this Wiki
|
|
83
83
|
```
|
|
84
84
|
gam help
|
|
85
|
-
GAM 7.21.
|
|
85
|
+
GAM 7.21.01 - https://github.com/GAM-team/GAM
|
|
86
86
|
GAM Team <google-apps-manager@googlegroups.com>
|
|
87
87
|
Python 3.13.7 64-bit final
|
|
88
88
|
MacOS Sequoia 15.6.1 x86_64
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|