gam7 7.9.4__tar.gz → 7.9.5__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.9.4 → gam7-7.9.5}/PKG-INFO +1 -1
- {gam7-7.9.4 → gam7-7.9.5}/src/GamUpdate.txt +6 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/__init__.py +127 -68
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Chrome-Policies.md +119 -238
- {gam7-7.9.4 → gam7-7.9.5}/wiki/GamUpdates.md +8 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +4 -4
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Version-and-Help.md +10 -10
- {gam7-7.9.4 → gam7-7.9.5}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/.github/ISSUE_TEMPLATE.txt +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/.github/actions/decrypt.sh +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/.github/actions/entitlements.plist +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/.github/actions/package_exclusions.txt +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/.github/stale.yml +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/.github/workflows/build.yml +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/.github/workflows/codeql-analysis.yml +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/.github/workflows/get-cacerts.yml +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/.github/workflows/pushwiki.yml +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/.github/workflows/pypi.yml +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/.pre-commit-config.yaml +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/LICENSE +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/README.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/pyproject.toml +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/.gitignore +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/GamCommands.txt +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/LICENSE +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/cacerts.pem +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/callgam.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/__main__.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/atom/__init__.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/atom/auth.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/atom/client.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/atom/core.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/atom/data.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/atom/http.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/atom/http_core.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/atom/http_interface.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/atom/mock_http.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/atom/mock_http_core.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/atom/mock_service.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/atom/service.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/atom/token_store.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/atom/url.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/cacerts.pem +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/cbcm-v1.1beta1.json +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/contactdelegation-v1.json +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/datastudio-v1.json +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gamlib/__init__.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gamlib/glaction.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gamlib/glapi.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gamlib/glcfg.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gamlib/glclargs.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gamlib/glentity.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gamlib/glgapi.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gamlib/glgdata.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gamlib/glglobals.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gamlib/glindent.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gamlib/glmsgs.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gamlib/glskus.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gamlib/gluprop.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gamlib/glverlibs.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gamlib/yubikey.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gdata/__init__.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gdata/alt/__init__.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gdata/alt/app_engine.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gdata/alt/appengine.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gdata/apps/__init__.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gdata/apps/audit/__init__.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gdata/apps/audit/service.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gdata/apps/contacts/__init__.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gdata/apps/contacts/service.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gdata/apps/service.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gdata/service.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/gdata/urlfetch.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/googleapiclient/__init__.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/googleapiclient/_auth.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/googleapiclient/_helpers.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/googleapiclient/channel.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/googleapiclient/discovery.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/googleapiclient/errors.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/googleapiclient/http.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/googleapiclient/mimeparse.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/googleapiclient/model.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/googleapiclient/schema.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/googleapiclient/version.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/iso8601/__init__.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/iso8601/iso8601.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/meet-v2beta.json +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/serviceaccountlookup-v1.json +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam/six.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam-install.sh +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam-setup.bat +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam.exe.manifest +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam.spec +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/gam.wxs +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/license.rtf +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/requirements-dev.txt +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/requirements.txt +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/setup.cfg +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/setup.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/tools/a_atleast_b.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/tools/gen-wix-xml-filelist.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/tools/mkGamRef.py +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/tools/openssl.props +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/src/version_info.txt.in +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/00scratch.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Addresses.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Administrators.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Alert-Center.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Aliases.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Authorization.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/BNF-Syntax.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Basic-Items.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Bulk-Processing.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/CSV-Input-Filtering.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/CSV-Output-Filtering.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/CSV-Special-Characters.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Calendars-Access.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Calendars-Events.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Calendars.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Chat-Bot.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Chrome-AUE-Counts.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Chrome-Installed-Apps.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Chrome-Printers.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Chrome-Profile-Management.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Chrome-Version-Counts.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Chrome-Version-History.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/ChromeOS-Devices.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Classroom-Courses.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Classroom-Guardians.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Classroom-Invitations.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Classroom-Membership.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Cloud-Channel.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Cloud-Identity-Devices.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Cloud-Identity-Groups.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Cloud-Identity-Policies.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Cloud-Storage.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Collections-of-Items.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Collections-of-Users.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Command-Line-Parsing.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Command-Logging-Progress.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Context-Aware-Access-Levels.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Customer.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Domain-People-Contacts-Profiles.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Domain-SharedContacts.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Domains-Verification.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Domains.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Downloads-Installs.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Drive-File-Selection.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Drive-Items.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Drive-REST-API-v3.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Email-Audit-Monitor.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Find-File-Owner.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/GAM-Public-Chat-Room.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/GAM-Return-Codes.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/GAM7-on-Android-Devices.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Google-Data-Transfers.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Google-Network-Addresses.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Groups-Membership.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Groups.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/HTTPS-Proxy.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Home.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/How-to-Install-GAM7.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/How-to-Uninstall-GAM7.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/How-to-Update-GAM7.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Inbound-SSO.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Install-GAM-as-Python-Library.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Licenses.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/List-Items.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/List.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Mobile-Devices.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Organizational-Units.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Other-Resources.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Permission-Matches.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Python-Regular-Expressions.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/README.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Rclone.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Reports.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Reseller.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Resources.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/SSL-Root-CA-Certificates.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Schemas.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Scripts.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Send-Email.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Shared-Drives.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Sites.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Tag-Replace.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Todrive.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Unmanaged-Accounts.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Upgrade-Benefits.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Analytics-Admin.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Application-Specific-Passwords.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Backup-Verification-Codes.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Calendars-Access.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Calendars-Events.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Calendars.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Chat.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Classification-Labels.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Classroom-Profile.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Contacts-Delegates.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Contacts.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Deprovision.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Drive-Activity-Settings.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Drive-Cleanup.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Drive-Comments.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Drive-Copy-Move.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Drive-Files-Display.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Drive-Files-Manage.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Drive-Orphans.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Drive-Ownership.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Drive-Permissions.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Drive-Query.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Drive-Revisions.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Drive-Shortcuts.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Drive-Transfer.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Forms.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Gmail-CSE.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Gmail-Delegates.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Gmail-Filters.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Gmail-Forwarding.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Gmail-Labels.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Gmail-Messages-Threads.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Gmail-Profile.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Gmail-S-MIME.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Gmail-Settings.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Group-Membership.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Keep-Notes.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Looker-Studio.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Meet.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-People-Contacts-Profiles.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Photo.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Profile-Photo.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Profile-Sharing.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Shared-Drives.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Signout-Turnoff2SV.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Spreadsheets.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Tasks.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-Tokens.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users-YouTube.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Users.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Vault-Takeout.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/_Sidebar.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/gam.cfg.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-AdminSettingsExamples.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Android-Installation.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-BulkOperations.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-CalendarExamples.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Chat-Bot.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Chrome-Browser-Management.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Chrome-OS-Installation.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Chrome-Policy-Settings.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Cloud-Identity-Groups.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Command-Reference-Calendars.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Command-Reference-Definitions.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Command-Reference-Drive.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Command-Reference-Email.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Command-Reference-Groups.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Command-Reference-Users.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Context-Aware-Access-Levels.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-CreatingClientSecretsFile.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Custom-Schemas.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Data-Transfers.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-DomainVerification.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-ExamplesAccountAuditing.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-ExamplesCSV.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-ExamplesEmailSettings.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-ExamplesOrganizations.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-GAM-Discussion-Group.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-GAM-options-files.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-GAM3CSVListings.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-GAM3DirectoryCommands.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-GAM3GroupSettings.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-GAM7-FAQ.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-GoogleDriveManagement.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Home.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Inbound-SSO-Settings.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-LicenseExamples.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Managing-Admins.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Managing-Devices.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Managing-Google-Classroom.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-OAuthKeyManagement.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Printers.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-ResellerCommands.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-SecurityExamples.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-UnmanagedUsersExamples.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Use-a-Yubikey.md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
- {gam7-7.9.4 → gam7-7.9.5}/wiki/l-_Footer.md +0 -0
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
7.09.05
|
|
2
|
+
|
|
3
|
+
Improved output of `gam info|show chromeschemas [std]` to more accurately display the schemas.
|
|
4
|
+
|
|
5
|
+
Fixed bugs in `gam update chromepolicy` that caused invalid error messaages.
|
|
6
|
+
|
|
1
7
|
7.09.04
|
|
2
8
|
|
|
3
9
|
Fixed bug in `gam whatis <EmailItem>` where the check for an invitable user always failed.
|
|
@@ -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.09.
|
|
28
|
+
__version__ = '7.09.05'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -12353,7 +12353,8 @@ def checkServiceAccount(users):
|
|
|
12353
12353
|
Ind.Increment()
|
|
12354
12354
|
try:
|
|
12355
12355
|
key = callGAPI(iam.projects().serviceAccounts().keys(), 'get',
|
|
12356
|
-
throwReasons=[GAPI.BAD_REQUEST, GAPI.INVALID, GAPI.NOT_FOUND,
|
|
12356
|
+
throwReasons=[GAPI.BAD_REQUEST, GAPI.INVALID, GAPI.NOT_FOUND,
|
|
12357
|
+
GAPI.PERMISSION_DENIED, GAPI.SERVICE_NOT_AVAILABLE],
|
|
12357
12358
|
name=name, fields='validAfterTime')
|
|
12358
12359
|
key_created, _ = iso8601.parse_date(key['validAfterTime'])
|
|
12359
12360
|
key_age = todaysTime()-key_created
|
|
@@ -12366,6 +12367,10 @@ def checkServiceAccount(users):
|
|
|
12366
12367
|
Ent.SVCACCT, GM.Globals[GM.OAUTH2SERVICE_JSON_DATA]['client_email']],
|
|
12367
12368
|
str(e))
|
|
12368
12369
|
printPassFail(Msg.SERVICE_ACCOUNT_PRIVATE_KEY_AGE.format('UNKNOWN'), testWarn)
|
|
12370
|
+
except GAPI.serviceNotAvailable as e:
|
|
12371
|
+
entityActionFailedExit([Ent.PROJECT, GM.Globals[GM.OAUTH2SERVICE_JSON_DATA]['project_id'],
|
|
12372
|
+
Ent.SVCACCT, GM.Globals[GM.OAUTH2SERVICE_JSON_DATA]['client_email']],
|
|
12373
|
+
str(e))
|
|
12369
12374
|
else:
|
|
12370
12375
|
printPassFail(Msg.SERVICE_ACCOUNT_SKIPPING_KEY_AGE_CHECK.format(key_type), testPass)
|
|
12371
12376
|
Ind.Decrement()
|
|
@@ -28111,27 +28116,21 @@ def commonprefix(m):
|
|
|
28111
28116
|
return s1[:i]
|
|
28112
28117
|
return s1
|
|
28113
28118
|
|
|
28114
|
-
|
|
28119
|
+
SCHEMA_TYPE_MESSAGE_MAP = {
|
|
28120
|
+
'NullableDuration': {'type': 'TYPE_INT64', 'namedType': 'duration'},
|
|
28121
|
+
'NullableLong': {'type': 'TYPE_INT64', 'namedType': 'value'},
|
|
28122
|
+
'SystemTimezone': {'type': 'TYPE_STRING', 'namedType': 'value'}
|
|
28123
|
+
}
|
|
28124
|
+
|
|
28125
|
+
def simplifyChromeSchemaUpdate(schema):
|
|
28115
28126
|
schema_name = schema['name'].split('/')[-1]
|
|
28116
|
-
schema_dict = {'name': schema_name,
|
|
28117
|
-
'description': schema.get('policyDescription', ''),
|
|
28118
|
-
'settings': {}
|
|
28119
|
-
}
|
|
28120
|
-
fieldDescriptions = schema['fieldDescriptions']
|
|
28121
|
-
savedSettingName = ''
|
|
28122
|
-
savedTypeName = ''
|
|
28127
|
+
schema_dict = {'name': schema_name, 'settings': {}}
|
|
28123
28128
|
for mtype in schema['definition']['messageType']:
|
|
28124
|
-
|
|
28129
|
+
if mtype['name'] in SCHEMA_TYPE_MESSAGE_MAP:
|
|
28130
|
+
continue
|
|
28125
28131
|
for setting in mtype['field']:
|
|
28126
28132
|
setting_name = setting['name']
|
|
28127
|
-
setting_dict = {'name': setting_name,
|
|
28128
|
-
'constraints': None,
|
|
28129
|
-
'descriptions': [],
|
|
28130
|
-
'type': setting['type'],
|
|
28131
|
-
}
|
|
28132
|
-
if mtype['name'] == savedTypeName and numSettings == 1:
|
|
28133
|
-
setting_dict['name'] = savedSettingName
|
|
28134
|
-
savedTypeName = ''
|
|
28133
|
+
setting_dict = {'name': setting_name, 'type': setting['type'], 'namedType': ''}
|
|
28135
28134
|
if setting_dict['type'] == 'TYPE_STRING' and setting.get('label') == 'LABEL_REPEATED':
|
|
28136
28135
|
setting_dict['type'] = 'TYPE_LIST'
|
|
28137
28136
|
if setting_dict['type'] == 'TYPE_ENUM':
|
|
@@ -28142,29 +28141,83 @@ def simplifyChromeSchema(schema):
|
|
|
28142
28141
|
setting_dict['enum_prefix'] = commonprefix(setting_dict['enums'])
|
|
28143
28142
|
prefix_len = len(setting_dict['enum_prefix'])
|
|
28144
28143
|
setting_dict['enums'] = [enum[prefix_len:] for enum in setting_dict['enums'] if not enum.endswith('UNSPECIFIED')]
|
|
28145
|
-
|
|
28146
|
-
|
|
28144
|
+
elif setting_dict['type'] == 'TYPE_MESSAGE':
|
|
28145
|
+
type_name = setting['typeName']
|
|
28146
|
+
if type_name not in SCHEMA_TYPE_MESSAGE_MAP:
|
|
28147
|
+
continue
|
|
28148
|
+
setting_dict['type'] = SCHEMA_TYPE_MESSAGE_MAP[type_name]['type']
|
|
28149
|
+
setting_dict['namedType'] = SCHEMA_TYPE_MESSAGE_MAP[type_name]['namedType']
|
|
28150
|
+
schema_dict['settings'][setting_name.lower()] = setting_dict
|
|
28151
|
+
return(schema_name, schema_dict)
|
|
28152
|
+
|
|
28153
|
+
def simplifyChromeSchemaDisplay(schema):
|
|
28154
|
+
schema_name = schema['name'].split('/')[-1]
|
|
28155
|
+
schema_dict = {'name': schema_name, 'description': schema.get('policyDescription', '')}
|
|
28156
|
+
fieldDescriptions = schema['fieldDescriptions']
|
|
28157
|
+
enumDict = {}
|
|
28158
|
+
for enumType in schema['definition'].get('enumType', []):
|
|
28159
|
+
enumEntry = {}
|
|
28160
|
+
enumEntry['enums'] = [enum['name'] for enum in enumType['value']]
|
|
28161
|
+
enumEntry['enum_prefix'] = commonprefix(enumEntry['enums'])
|
|
28162
|
+
enumEntry['enum_prefix_len'] = prefix_len = len(enumEntry['enum_prefix'])
|
|
28163
|
+
enumEntry['enums'] = [enum[prefix_len:] for enum in enumEntry['enums'] if not enum.endswith('UNSPECIFIED')]
|
|
28164
|
+
enumDict[enumType['name']] = enumEntry.copy()
|
|
28165
|
+
mesgDict = {}
|
|
28166
|
+
mesgPops = set()
|
|
28167
|
+
for mesgType in schema['definition']['messageType']:
|
|
28168
|
+
mtypeEntry = {'field': {}, 'subfield': False}
|
|
28169
|
+
for mfield in mesgType['field']:
|
|
28170
|
+
mfield.pop('number')
|
|
28171
|
+
mtypeEntry['field'][mfield.pop('name')] = mfield
|
|
28172
|
+
mesgDict[mesgType['name']] = mtypeEntry.copy()
|
|
28173
|
+
for _, mtypeEntry in mesgDict.items():
|
|
28174
|
+
for mfieldName, mfield in mtypeEntry['field'].items():
|
|
28175
|
+
mfield['descriptions'] = []
|
|
28176
|
+
if mfield['type'] == 'TYPE_STRING' and mfield.get('label') == 'LABEL_REPEATED':
|
|
28177
|
+
mfield['type'] = 'TYPE_LIST'
|
|
28178
|
+
if mfield['type'] == 'TYPE_ENUM':
|
|
28179
|
+
mfield['subtype'] = enumDict[mfield['typeName']]
|
|
28180
|
+
for an_enum in schema['definition']['enumType']:
|
|
28181
|
+
if an_enum['name'] == mfield['typeName']:
|
|
28182
|
+
mfield['descriptions'] = ['']*len(mfield['subtype']['enums'])
|
|
28183
|
+
for i, an in enumerate(mfield['subtype']['enums']):
|
|
28147
28184
|
for fdesc in fieldDescriptions:
|
|
28148
|
-
if fdesc.get('field') ==
|
|
28185
|
+
if fdesc.get('field') == mfieldName:
|
|
28149
28186
|
for d in fdesc.get('knownValueDescriptions', []):
|
|
28150
|
-
if d['value'][
|
|
28151
|
-
|
|
28187
|
+
if d['value'][mfield['subtype']['enum_prefix_len']:] == an:
|
|
28188
|
+
mfield['descriptions'][i] = d.get('description', '')
|
|
28152
28189
|
break
|
|
28153
28190
|
break
|
|
28154
28191
|
break
|
|
28155
|
-
elif
|
|
28156
|
-
|
|
28157
|
-
|
|
28192
|
+
elif mfield['type'] == 'TYPE_MESSAGE':
|
|
28193
|
+
subfield = mfield['typeName']
|
|
28194
|
+
if subfield not in SCHEMA_TYPE_MESSAGE_MAP:
|
|
28195
|
+
mesgDict[subfield]['subfield'] = True
|
|
28196
|
+
mfield['subtype'] = mesgDict[subfield]
|
|
28197
|
+
else:
|
|
28198
|
+
mfield['type'] = SCHEMA_TYPE_MESSAGE_MAP[subfield]['type']
|
|
28199
|
+
mesgPops.add(subfield)
|
|
28158
28200
|
continue
|
|
28159
28201
|
else:
|
|
28160
|
-
|
|
28161
|
-
|
|
28162
|
-
if fdesc['field'] == setting_name:
|
|
28202
|
+
for fdesc in fieldDescriptions:
|
|
28203
|
+
if fdesc['field'] == mfieldName:
|
|
28163
28204
|
if 'knownValueDescriptions' in fdesc:
|
|
28164
|
-
|
|
28205
|
+
if isinstance(fdesc['knownValueDescriptions'], list):
|
|
28206
|
+
for kvd in fdesc['knownValueDescriptions']:
|
|
28207
|
+
if isinstance(kvd, dict):
|
|
28208
|
+
if 'description' in kvd:
|
|
28209
|
+
mfield['descriptions'].append(f"{kvd['value']}: {kvd['description']}")
|
|
28210
|
+
else:
|
|
28211
|
+
mfield['descriptions'].append(f"{kvd['value']}")
|
|
28212
|
+
else:
|
|
28213
|
+
mfield['descriptions'].extend(kvd)
|
|
28214
|
+
else:
|
|
28215
|
+
mfield['descriptions'].append(kvd)
|
|
28165
28216
|
elif 'description' in fdesc:
|
|
28166
|
-
|
|
28167
|
-
|
|
28217
|
+
mfield['descriptions'].append(fdesc['description'])
|
|
28218
|
+
for pfield in mesgPops:
|
|
28219
|
+
mesgDict.pop(pfield)
|
|
28220
|
+
schema_dict['settings'] = mesgDict
|
|
28168
28221
|
return(schema_name, schema_dict)
|
|
28169
28222
|
|
|
28170
28223
|
def _getPolicyOrgUnitTarget(cd, cp, myarg, groupEmail):
|
|
@@ -28507,7 +28560,7 @@ def doUpdateChromePolicy():
|
|
|
28507
28560
|
elif myarg == 'convertcrnl':
|
|
28508
28561
|
convertCRsNLs = True
|
|
28509
28562
|
else:
|
|
28510
|
-
schemaName, schema =
|
|
28563
|
+
schemaName, schema = simplifyChromeSchemaUpdate(_getChromePolicySchema(cp, Cmd.Previous(), '*'))
|
|
28511
28564
|
body['requests'].append({'policyValue': {'policySchema': schemaName, 'value': {}},
|
|
28512
28565
|
'updateMask': ''})
|
|
28513
28566
|
schemaNameList.append(schemaName)
|
|
@@ -28593,8 +28646,9 @@ def doUpdateChromePolicy():
|
|
|
28593
28646
|
if field not in schema['settings']:
|
|
28594
28647
|
Cmd.Backup()
|
|
28595
28648
|
missingChoiceExit(schema['settings'])
|
|
28596
|
-
|
|
28597
|
-
|
|
28649
|
+
field_settings = schema['settings'][field]
|
|
28650
|
+
casedField = field_settings['name']
|
|
28651
|
+
vtype = field_settings['type']
|
|
28598
28652
|
value = getString(Cmd.OB_STRING, minLen=0 if vtype in {'TYPE_STRING', 'TYPE_LIST'} else 1)
|
|
28599
28653
|
if vtype in ['TYPE_INT64', 'TYPE_INT32', 'TYPE_UINT64']:
|
|
28600
28654
|
if not value.isnumeric():
|
|
@@ -28611,8 +28665,8 @@ def doUpdateChromePolicy():
|
|
|
28611
28665
|
invalidChoiceExit(value, TRUE_FALSE, True)
|
|
28612
28666
|
elif vtype == 'TYPE_ENUM':
|
|
28613
28667
|
value = value.upper()
|
|
28614
|
-
prefix =
|
|
28615
|
-
enum_values =
|
|
28668
|
+
prefix = field_settings['enum_prefix']
|
|
28669
|
+
enum_values = field_settings['enums']
|
|
28616
28670
|
if value in enum_values:
|
|
28617
28671
|
value = f'{prefix}{value}'
|
|
28618
28672
|
elif value.replace(prefix, '') in enum_values:
|
|
@@ -28639,7 +28693,10 @@ def doUpdateChromePolicy():
|
|
|
28639
28693
|
elif value and not CHROME_TARGET_VERSION_PATTERN.match(value):
|
|
28640
28694
|
Cmd.Backup()
|
|
28641
28695
|
invalidArgumentExit(Msg.CHROME_TARGET_VERSION_FORMAT)
|
|
28642
|
-
|
|
28696
|
+
if field_settings['namedType']:
|
|
28697
|
+
body['requests'][-1]['policyValue']['value'][casedField] = {field_settings['namedType']: value}
|
|
28698
|
+
else:
|
|
28699
|
+
body['requests'][-1]['policyValue']['value'][casedField] = value
|
|
28643
28700
|
body['requests'][-1]['updateMask'] += f'{casedField},'
|
|
28644
28701
|
checkPolicyArgs(targetResource, printer_id, app_id)
|
|
28645
28702
|
count = len(body['requests'])
|
|
@@ -28940,7 +28997,9 @@ def _showChromePolicySchema(schema, FJQC, i=0, count=0):
|
|
|
28940
28997
|
return
|
|
28941
28998
|
printEntity([Ent.CHROME_POLICY_SCHEMA, schema['name']], i, count)
|
|
28942
28999
|
Ind.Increment()
|
|
28943
|
-
showJSON(None, schema,
|
|
29000
|
+
showJSON(None, schema,
|
|
29001
|
+
dictObjectsKey={'messageType': 'name', 'field': 'name',
|
|
29002
|
+
'fieldDescriptions': 'field', 'knownValueDescriptions': 'value'})
|
|
28944
29003
|
Ind.Decrement()
|
|
28945
29004
|
|
|
28946
29005
|
CHROME_POLICY_SCHEMA_FIELDS_CHOICE_MAP = {
|
|
@@ -29074,31 +29133,35 @@ def doPrintShowChromePolicySchemas():
|
|
|
29074
29133
|
csvPF.writeCSVfile('Chrome Policy Schemas')
|
|
29075
29134
|
|
|
29076
29135
|
def _showChromePolicySchemaStd(schema):
|
|
29077
|
-
|
|
29078
|
-
|
|
29079
|
-
|
|
29080
|
-
|
|
29081
|
-
|
|
29136
|
+
def _printEntry(mtypeName, mtypeEntry):
|
|
29137
|
+
vtype = mtypeEntry['type']
|
|
29138
|
+
if vtype != 'TYPE_MESSAGE':
|
|
29139
|
+
printKeyValueList([f'{mtypeName}', f'{vtype}'])
|
|
29140
|
+
else:
|
|
29141
|
+
printKeyValueList([f'{mtypeName}'])
|
|
29082
29142
|
Ind.Increment()
|
|
29083
29143
|
if vtype == 'TYPE_ENUM':
|
|
29084
|
-
enums =
|
|
29085
|
-
descriptions =
|
|
29086
|
-
for i in range(len(
|
|
29144
|
+
enums = mtypeEntry['subtype']['enums']
|
|
29145
|
+
descriptions = mtypeEntry['descriptions']
|
|
29146
|
+
for i in range(len(enums)):
|
|
29087
29147
|
printKeyValueList([f'{enums[i]}', f'{descriptions[i]}'])
|
|
29088
|
-
elif vtype == '
|
|
29089
|
-
|
|
29090
|
-
|
|
29091
|
-
if
|
|
29092
|
-
|
|
29093
|
-
|
|
29094
|
-
|
|
29095
|
-
|
|
29096
|
-
printKeyValueList([f'{pvi[0]}'])
|
|
29097
|
-
else:
|
|
29098
|
-
description = val.get('descriptions')
|
|
29099
|
-
if len(description) > 0:
|
|
29100
|
-
printKeyValueList([f'{description[0]}'])
|
|
29148
|
+
elif vtype == 'TYPE_MESSAGE':
|
|
29149
|
+
for mfieldName, mfield in mtypeEntry['subtype']['field'].items():
|
|
29150
|
+
# managedBookmarks is recursive
|
|
29151
|
+
if mtypeName != 'entries':
|
|
29152
|
+
_printEntry(mfieldName, mfield)
|
|
29153
|
+
else:
|
|
29154
|
+
for description in mtypeEntry.get('descriptions', []):
|
|
29155
|
+
printKeyValueList([description])
|
|
29101
29156
|
Ind.Decrement()
|
|
29157
|
+
|
|
29158
|
+
printKeyValueList([f'{schema.get("name")}', f'{schema.get("description")}'])
|
|
29159
|
+
Ind.Increment()
|
|
29160
|
+
for _, mtypeEntry in schema['settings'].items():
|
|
29161
|
+
if mtypeEntry['subfield']:
|
|
29162
|
+
continue
|
|
29163
|
+
for mfieldName, mfield in mtypeEntry['field'].items():
|
|
29164
|
+
_printEntry(mfieldName, mfield)
|
|
29102
29165
|
Ind.Decrement()
|
|
29103
29166
|
|
|
29104
29167
|
# gam info chromeschema std <SchemaName>
|
|
@@ -29109,7 +29172,7 @@ def doInfoChromePolicySchemasStd(cp):
|
|
|
29109
29172
|
schema = callGAPI(cp.customers().policySchemas(), 'get',
|
|
29110
29173
|
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN],
|
|
29111
29174
|
name=name)
|
|
29112
|
-
_, schema_dict =
|
|
29175
|
+
_, schema_dict = simplifyChromeSchemaDisplay(schema)
|
|
29113
29176
|
_showChromePolicySchemaStd(schema_dict)
|
|
29114
29177
|
except GAPI.notFound:
|
|
29115
29178
|
entityUnknownWarning(Ent.CHROME_POLICY_SCHEMA, name)
|
|
@@ -29131,7 +29194,7 @@ def doShowChromePolicySchemasStd(cp):
|
|
|
29131
29194
|
parent=parent, filter=sfilter)
|
|
29132
29195
|
schemas = {}
|
|
29133
29196
|
for schema in result:
|
|
29134
|
-
schema_name, schema_dict =
|
|
29197
|
+
schema_name, schema_dict = simplifyChromeSchemaDisplay(schema)
|
|
29135
29198
|
schemas[schema_name.lower()] = schema_dict
|
|
29136
29199
|
for _, schema in sorted(iter(schemas.items())):
|
|
29137
29200
|
_showChromePolicySchemaStd(schema)
|
|
@@ -66178,11 +66241,7 @@ def printSharedDriveOrganizers(users, useDomainAdminAccess=False):
|
|
|
66178
66241
|
showNoOrganizerDrives = SHOW_NO_PERMISSIONS_DRIVES_CHOICE_MAP['false']
|
|
66179
66242
|
fieldsList = ['role', 'type', 'emailAddress']
|
|
66180
66243
|
cd = entityList = orgUnitId = query = matchPattern = None
|
|
66181
|
-
domainList = set()
|
|
66182
|
-
if GC.Values[GC.DOMAIN]:
|
|
66183
|
-
domainList.add(GC.Values[GC.DOMAIN])
|
|
66184
|
-
else:
|
|
66185
|
-
domainList.add(GM.Globals[GM.DECODED_ID_TOKEN].get('hd', 'UNKNOWN').lower())
|
|
66244
|
+
domainList = set([(GC.Values[GC.DOMAIN] if GC.Values[GC.DOMAIN] else _getValueFromOAuth('hd'))])
|
|
66186
66245
|
oneOrganizer = True
|
|
66187
66246
|
while Cmd.ArgumentsRemaining():
|
|
66188
66247
|
myarg = getArgument()
|