gam7 7.6.9__tar.gz → 7.6.11__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.

Files changed (320) hide show
  1. {gam7-7.6.9 → gam7-7.6.11}/.github/workflows/build.yml +14 -2
  2. {gam7-7.6.9 → gam7-7.6.11}/.github/workflows/pypi.yml +2 -0
  3. {gam7-7.6.9 → gam7-7.6.11}/PKG-INFO +13 -13
  4. {gam7-7.6.9 → gam7-7.6.11}/pyproject.toml +13 -12
  5. {gam7-7.6.9 → gam7-7.6.11}/src/GamCommands.txt +5 -3
  6. {gam7-7.6.9 → gam7-7.6.11}/src/GamUpdate.txt +20 -0
  7. {gam7-7.6.9 → gam7-7.6.11}/src/gam/__init__.py +64 -34
  8. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gamlib/glapi.py +1 -1
  9. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gamlib/glskus.py +2 -0
  10. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gamlib/glverlibs.py +16 -11
  11. gam7-7.6.11/src/license.rtf +25 -0
  12. gam7-7.6.11/src/requirements.txt +15 -0
  13. {gam7-7.6.9 → gam7-7.6.11}/src/setup.cfg +15 -13
  14. {gam7-7.6.9 → gam7-7.6.11}/wiki/GamUpdates.md +20 -0
  15. {gam7-7.6.9 → gam7-7.6.11}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
  16. {gam7-7.6.9 → gam7-7.6.11}/wiki/Licenses.md +1 -0
  17. {gam7-7.6.9 → gam7-7.6.11}/wiki/Reports.md +1 -0
  18. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Chat.md +3 -3
  19. {gam7-7.6.9 → gam7-7.6.11}/wiki/Version-and-Help.md +6 -6
  20. gam7-7.6.9/src/license.rtf +0 -0
  21. gam7-7.6.9/src/requirements.txt +0 -15
  22. {gam7-7.6.9 → gam7-7.6.11}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  23. {gam7-7.6.9 → gam7-7.6.11}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  24. {gam7-7.6.9 → gam7-7.6.11}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  25. {gam7-7.6.9 → gam7-7.6.11}/.github/ISSUE_TEMPLATE.txt +0 -0
  26. {gam7-7.6.9 → gam7-7.6.11}/.github/actions/decrypt.sh +0 -0
  27. {gam7-7.6.9 → gam7-7.6.11}/.github/actions/entitlements.plist +0 -0
  28. {gam7-7.6.9 → gam7-7.6.11}/.github/actions/package_exclusions.txt +0 -0
  29. {gam7-7.6.9 → gam7-7.6.11}/.github/stale.yml +0 -0
  30. {gam7-7.6.9 → gam7-7.6.11}/.github/workflows/codeql-analysis.yml +0 -0
  31. {gam7-7.6.9 → gam7-7.6.11}/.github/workflows/get-cacerts.yml +0 -0
  32. {gam7-7.6.9 → gam7-7.6.11}/.github/workflows/pushwiki.yml +0 -0
  33. {gam7-7.6.9 → gam7-7.6.11}/.pre-commit-config.yaml +0 -0
  34. {gam7-7.6.9 → gam7-7.6.11}/LICENSE +0 -0
  35. {gam7-7.6.9 → gam7-7.6.11}/README.md +0 -0
  36. {gam7-7.6.9 → gam7-7.6.11}/src/.gitignore +0 -0
  37. {gam7-7.6.9 → gam7-7.6.11}/src/LICENSE +0 -0
  38. {gam7-7.6.9 → gam7-7.6.11}/src/cacerts.pem +0 -0
  39. {gam7-7.6.9 → gam7-7.6.11}/src/callgam.py +0 -0
  40. {gam7-7.6.9 → gam7-7.6.11}/src/gam/__main__.py +0 -0
  41. {gam7-7.6.9 → gam7-7.6.11}/src/gam/atom/__init__.py +0 -0
  42. {gam7-7.6.9 → gam7-7.6.11}/src/gam/atom/auth.py +0 -0
  43. {gam7-7.6.9 → gam7-7.6.11}/src/gam/atom/client.py +0 -0
  44. {gam7-7.6.9 → gam7-7.6.11}/src/gam/atom/core.py +0 -0
  45. {gam7-7.6.9 → gam7-7.6.11}/src/gam/atom/data.py +0 -0
  46. {gam7-7.6.9 → gam7-7.6.11}/src/gam/atom/http.py +0 -0
  47. {gam7-7.6.9 → gam7-7.6.11}/src/gam/atom/http_core.py +0 -0
  48. {gam7-7.6.9 → gam7-7.6.11}/src/gam/atom/http_interface.py +0 -0
  49. {gam7-7.6.9 → gam7-7.6.11}/src/gam/atom/mock_http.py +0 -0
  50. {gam7-7.6.9 → gam7-7.6.11}/src/gam/atom/mock_http_core.py +0 -0
  51. {gam7-7.6.9 → gam7-7.6.11}/src/gam/atom/mock_service.py +0 -0
  52. {gam7-7.6.9 → gam7-7.6.11}/src/gam/atom/service.py +0 -0
  53. {gam7-7.6.9 → gam7-7.6.11}/src/gam/atom/token_store.py +0 -0
  54. {gam7-7.6.9 → gam7-7.6.11}/src/gam/atom/url.py +0 -0
  55. {gam7-7.6.9 → gam7-7.6.11}/src/gam/cacerts.pem +0 -0
  56. {gam7-7.6.9 → gam7-7.6.11}/src/gam/cbcm-v1.1beta1.json +0 -0
  57. {gam7-7.6.9 → gam7-7.6.11}/src/gam/contactdelegation-v1.json +0 -0
  58. {gam7-7.6.9 → gam7-7.6.11}/src/gam/datastudio-v1.json +0 -0
  59. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gamlib/__init__.py +0 -0
  60. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gamlib/glaction.py +0 -0
  61. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gamlib/glcfg.py +0 -0
  62. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gamlib/glclargs.py +0 -0
  63. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gamlib/glentity.py +0 -0
  64. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gamlib/glgapi.py +0 -0
  65. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gamlib/glgdata.py +0 -0
  66. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gamlib/glglobals.py +0 -0
  67. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gamlib/glindent.py +0 -0
  68. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gamlib/glmsgs.py +0 -0
  69. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gamlib/gluprop.py +0 -0
  70. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gamlib/yubikey.py +0 -0
  71. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gdata/__init__.py +0 -0
  72. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gdata/alt/__init__.py +0 -0
  73. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gdata/alt/app_engine.py +0 -0
  74. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gdata/alt/appengine.py +0 -0
  75. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gdata/apps/__init__.py +0 -0
  76. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gdata/apps/audit/__init__.py +0 -0
  77. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gdata/apps/audit/service.py +0 -0
  78. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  79. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gdata/apps/contacts/service.py +0 -0
  80. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gdata/apps/service.py +0 -0
  81. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gdata/service.py +0 -0
  82. {gam7-7.6.9 → gam7-7.6.11}/src/gam/gdata/urlfetch.py +0 -0
  83. {gam7-7.6.9 → gam7-7.6.11}/src/gam/googleapiclient/__init__.py +0 -0
  84. {gam7-7.6.9 → gam7-7.6.11}/src/gam/googleapiclient/_auth.py +0 -0
  85. {gam7-7.6.9 → gam7-7.6.11}/src/gam/googleapiclient/_helpers.py +0 -0
  86. {gam7-7.6.9 → gam7-7.6.11}/src/gam/googleapiclient/channel.py +0 -0
  87. {gam7-7.6.9 → gam7-7.6.11}/src/gam/googleapiclient/discovery.py +0 -0
  88. {gam7-7.6.9 → gam7-7.6.11}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
  89. {gam7-7.6.9 → gam7-7.6.11}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
  90. {gam7-7.6.9 → gam7-7.6.11}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
  91. {gam7-7.6.9 → gam7-7.6.11}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
  92. {gam7-7.6.9 → gam7-7.6.11}/src/gam/googleapiclient/errors.py +0 -0
  93. {gam7-7.6.9 → gam7-7.6.11}/src/gam/googleapiclient/http.py +0 -0
  94. {gam7-7.6.9 → gam7-7.6.11}/src/gam/googleapiclient/mimeparse.py +0 -0
  95. {gam7-7.6.9 → gam7-7.6.11}/src/gam/googleapiclient/model.py +0 -0
  96. {gam7-7.6.9 → gam7-7.6.11}/src/gam/googleapiclient/schema.py +0 -0
  97. {gam7-7.6.9 → gam7-7.6.11}/src/gam/googleapiclient/version.py +0 -0
  98. {gam7-7.6.9 → gam7-7.6.11}/src/gam/iso8601/__init__.py +0 -0
  99. {gam7-7.6.9 → gam7-7.6.11}/src/gam/iso8601/iso8601.py +0 -0
  100. {gam7-7.6.9 → gam7-7.6.11}/src/gam/meet-v2beta.json +0 -0
  101. {gam7-7.6.9 → gam7-7.6.11}/src/gam/serviceaccountlookup-v1.json +0 -0
  102. {gam7-7.6.9 → gam7-7.6.11}/src/gam/six.py +0 -0
  103. {gam7-7.6.9 → gam7-7.6.11}/src/gam-install.sh +0 -0
  104. {gam7-7.6.9 → gam7-7.6.11}/src/gam-setup.bat +0 -0
  105. {gam7-7.6.9 → gam7-7.6.11}/src/gam.exe.manifest +0 -0
  106. {gam7-7.6.9 → gam7-7.6.11}/src/gam.py +0 -0
  107. {gam7-7.6.9 → gam7-7.6.11}/src/gam.spec +0 -0
  108. {gam7-7.6.9 → gam7-7.6.11}/src/gam.wxs +0 -0
  109. {gam7-7.6.9 → gam7-7.6.11}/src/requirements-dev.txt +0 -0
  110. {gam7-7.6.9 → gam7-7.6.11}/src/setup.py +0 -0
  111. {gam7-7.6.9 → gam7-7.6.11}/src/tools/a_atleast_b.py +0 -0
  112. {gam7-7.6.9 → gam7-7.6.11}/src/tools/gen-wix-xml-filelist.py +0 -0
  113. {gam7-7.6.9 → gam7-7.6.11}/src/tools/mkGamRef.py +0 -0
  114. {gam7-7.6.9 → gam7-7.6.11}/src/tools/openssl.props +0 -0
  115. {gam7-7.6.9 → gam7-7.6.11}/src/version_info.txt.in +0 -0
  116. {gam7-7.6.9 → gam7-7.6.11}/wiki/00scratch.md +0 -0
  117. {gam7-7.6.9 → gam7-7.6.11}/wiki/Addresses.md +0 -0
  118. {gam7-7.6.9 → gam7-7.6.11}/wiki/Administrators.md +0 -0
  119. {gam7-7.6.9 → gam7-7.6.11}/wiki/Alert-Center.md +0 -0
  120. {gam7-7.6.9 → gam7-7.6.11}/wiki/Aliases.md +0 -0
  121. {gam7-7.6.9 → gam7-7.6.11}/wiki/Authorization.md +0 -0
  122. {gam7-7.6.9 → gam7-7.6.11}/wiki/BNF-Syntax.md +0 -0
  123. {gam7-7.6.9 → gam7-7.6.11}/wiki/Basic-Items.md +0 -0
  124. {gam7-7.6.9 → gam7-7.6.11}/wiki/Bulk-Processing.md +0 -0
  125. {gam7-7.6.9 → gam7-7.6.11}/wiki/CSV-Input-Filtering.md +0 -0
  126. {gam7-7.6.9 → gam7-7.6.11}/wiki/CSV-Output-Filtering.md +0 -0
  127. {gam7-7.6.9 → gam7-7.6.11}/wiki/CSV-Special-Characters.md +0 -0
  128. {gam7-7.6.9 → gam7-7.6.11}/wiki/Calendars-Access.md +0 -0
  129. {gam7-7.6.9 → gam7-7.6.11}/wiki/Calendars-Events.md +0 -0
  130. {gam7-7.6.9 → gam7-7.6.11}/wiki/Calendars.md +0 -0
  131. {gam7-7.6.9 → gam7-7.6.11}/wiki/Chat-Bot.md +0 -0
  132. {gam7-7.6.9 → gam7-7.6.11}/wiki/Chrome-AUE-Counts.md +0 -0
  133. {gam7-7.6.9 → gam7-7.6.11}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
  134. {gam7-7.6.9 → gam7-7.6.11}/wiki/Chrome-Installed-Apps.md +0 -0
  135. {gam7-7.6.9 → gam7-7.6.11}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
  136. {gam7-7.6.9 → gam7-7.6.11}/wiki/Chrome-Policies.md +0 -0
  137. {gam7-7.6.9 → gam7-7.6.11}/wiki/Chrome-Printers.md +0 -0
  138. {gam7-7.6.9 → gam7-7.6.11}/wiki/Chrome-Profile-Management.md +0 -0
  139. {gam7-7.6.9 → gam7-7.6.11}/wiki/Chrome-Version-Counts.md +0 -0
  140. {gam7-7.6.9 → gam7-7.6.11}/wiki/Chrome-Version-History.md +0 -0
  141. {gam7-7.6.9 → gam7-7.6.11}/wiki/ChromeOS-Devices.md +0 -0
  142. {gam7-7.6.9 → gam7-7.6.11}/wiki/Classroom-Courses.md +0 -0
  143. {gam7-7.6.9 → gam7-7.6.11}/wiki/Classroom-Guardians.md +0 -0
  144. {gam7-7.6.9 → gam7-7.6.11}/wiki/Classroom-Invitations.md +0 -0
  145. {gam7-7.6.9 → gam7-7.6.11}/wiki/Classroom-Membership.md +0 -0
  146. {gam7-7.6.9 → gam7-7.6.11}/wiki/Cloud-Channel.md +0 -0
  147. {gam7-7.6.9 → gam7-7.6.11}/wiki/Cloud-Identity-Devices.md +0 -0
  148. {gam7-7.6.9 → gam7-7.6.11}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
  149. {gam7-7.6.9 → gam7-7.6.11}/wiki/Cloud-Identity-Groups.md +0 -0
  150. {gam7-7.6.9 → gam7-7.6.11}/wiki/Cloud-Identity-Policies.md +0 -0
  151. {gam7-7.6.9 → gam7-7.6.11}/wiki/Cloud-Storage.md +0 -0
  152. {gam7-7.6.9 → gam7-7.6.11}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
  153. {gam7-7.6.9 → gam7-7.6.11}/wiki/Collections-of-Items.md +0 -0
  154. {gam7-7.6.9 → gam7-7.6.11}/wiki/Collections-of-Users.md +0 -0
  155. {gam7-7.6.9 → gam7-7.6.11}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
  156. {gam7-7.6.9 → gam7-7.6.11}/wiki/Command-Line-Parsing.md +0 -0
  157. {gam7-7.6.9 → gam7-7.6.11}/wiki/Command-Logging-Progress.md +0 -0
  158. {gam7-7.6.9 → gam7-7.6.11}/wiki/Context-Aware-Access-Levels.md +0 -0
  159. {gam7-7.6.9 → gam7-7.6.11}/wiki/Customer.md +0 -0
  160. {gam7-7.6.9 → gam7-7.6.11}/wiki/Domain-People-Contacts-Profiles.md +0 -0
  161. {gam7-7.6.9 → gam7-7.6.11}/wiki/Domain-SharedContacts-GAL.md +0 -0
  162. {gam7-7.6.9 → gam7-7.6.11}/wiki/Domains-Verification.md +0 -0
  163. {gam7-7.6.9 → gam7-7.6.11}/wiki/Domains.md +0 -0
  164. {gam7-7.6.9 → gam7-7.6.11}/wiki/Downloads-Installs.md +0 -0
  165. {gam7-7.6.9 → gam7-7.6.11}/wiki/Drive-File-Selection.md +0 -0
  166. {gam7-7.6.9 → gam7-7.6.11}/wiki/Drive-Items.md +0 -0
  167. {gam7-7.6.9 → gam7-7.6.11}/wiki/Drive-REST-API-v3.md +0 -0
  168. {gam7-7.6.9 → gam7-7.6.11}/wiki/Email-Audit-Monitor.md +0 -0
  169. {gam7-7.6.9 → gam7-7.6.11}/wiki/Find-File-Owner.md +0 -0
  170. {gam7-7.6.9 → gam7-7.6.11}/wiki/GAM-Public-Chat-Room.md +0 -0
  171. {gam7-7.6.9 → gam7-7.6.11}/wiki/GAM-Return-Codes.md +0 -0
  172. {gam7-7.6.9 → gam7-7.6.11}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
  173. {gam7-7.6.9 → gam7-7.6.11}/wiki/GAM7-on-Android-Devices.md +0 -0
  174. {gam7-7.6.9 → gam7-7.6.11}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
  175. {gam7-7.6.9 → gam7-7.6.11}/wiki/Google-Data-Transfers.md +0 -0
  176. {gam7-7.6.9 → gam7-7.6.11}/wiki/Google-Network-Addresses.md +0 -0
  177. {gam7-7.6.9 → gam7-7.6.11}/wiki/Groups-Membership.md +0 -0
  178. {gam7-7.6.9 → gam7-7.6.11}/wiki/Groups.md +0 -0
  179. {gam7-7.6.9 → gam7-7.6.11}/wiki/HTTPS-Proxy.md +0 -0
  180. {gam7-7.6.9 → gam7-7.6.11}/wiki/Home.md +0 -0
  181. {gam7-7.6.9 → gam7-7.6.11}/wiki/How-to-Install-GAM7.md +0 -0
  182. {gam7-7.6.9 → gam7-7.6.11}/wiki/How-to-Uninstall-GAM7.md +0 -0
  183. {gam7-7.6.9 → gam7-7.6.11}/wiki/How-to-Update-GAM7.md +0 -0
  184. {gam7-7.6.9 → gam7-7.6.11}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
  185. {gam7-7.6.9 → gam7-7.6.11}/wiki/Inbound-SSO.md +0 -0
  186. {gam7-7.6.9 → gam7-7.6.11}/wiki/Install-GAM-as-Python-Library.md +0 -0
  187. {gam7-7.6.9 → gam7-7.6.11}/wiki/List-Items.md +0 -0
  188. {gam7-7.6.9 → gam7-7.6.11}/wiki/List.md +0 -0
  189. {gam7-7.6.9 → gam7-7.6.11}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
  190. {gam7-7.6.9 → gam7-7.6.11}/wiki/Mobile-Devices.md +0 -0
  191. {gam7-7.6.9 → gam7-7.6.11}/wiki/Organizational-Units.md +0 -0
  192. {gam7-7.6.9 → gam7-7.6.11}/wiki/Other-Resources.md +0 -0
  193. {gam7-7.6.9 → gam7-7.6.11}/wiki/Permission-Matches.md +0 -0
  194. {gam7-7.6.9 → gam7-7.6.11}/wiki/Python-Regular-Expressions.md +0 -0
  195. {gam7-7.6.9 → gam7-7.6.11}/wiki/README.md +0 -0
  196. {gam7-7.6.9 → gam7-7.6.11}/wiki/Rclone.md +0 -0
  197. {gam7-7.6.9 → gam7-7.6.11}/wiki/Reseller.md +0 -0
  198. {gam7-7.6.9 → gam7-7.6.11}/wiki/Resources.md +0 -0
  199. {gam7-7.6.9 → gam7-7.6.11}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
  200. {gam7-7.6.9 → gam7-7.6.11}/wiki/SSL-Root-CA-Certificates.md +0 -0
  201. {gam7-7.6.9 → gam7-7.6.11}/wiki/Schemas.md +0 -0
  202. {gam7-7.6.9 → gam7-7.6.11}/wiki/Scripts.md +0 -0
  203. {gam7-7.6.9 → gam7-7.6.11}/wiki/Send-Email.md +0 -0
  204. {gam7-7.6.9 → gam7-7.6.11}/wiki/Shared-Drives.md +0 -0
  205. {gam7-7.6.9 → gam7-7.6.11}/wiki/Sites.md +0 -0
  206. {gam7-7.6.9 → gam7-7.6.11}/wiki/Tag-Replace.md +0 -0
  207. {gam7-7.6.9 → gam7-7.6.11}/wiki/Todrive.md +0 -0
  208. {gam7-7.6.9 → gam7-7.6.11}/wiki/Unmanaged-Accounts.md +0 -0
  209. {gam7-7.6.9 → gam7-7.6.11}/wiki/Upgrade-Benefits.md +0 -0
  210. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Analytics-Admin.md +0 -0
  211. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Application-Specific-Passwords.md +0 -0
  212. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Backup-Verification-Codes.md +0 -0
  213. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Calendars-Access.md +0 -0
  214. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Calendars-Events.md +0 -0
  215. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Calendars.md +0 -0
  216. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Classification-Labels.md +0 -0
  217. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Classroom-Profile.md +0 -0
  218. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Contacts-Delegates.md +0 -0
  219. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Contacts.md +0 -0
  220. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Deprovision.md +0 -0
  221. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Drive-Activity-Settings.md +0 -0
  222. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Drive-Cleanup.md +0 -0
  223. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Drive-Comments.md +0 -0
  224. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Drive-Copy-Move.md +0 -0
  225. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Drive-Files-Display.md +0 -0
  226. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Drive-Files-Manage.md +0 -0
  227. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Drive-Orphans.md +0 -0
  228. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Drive-Ownership.md +0 -0
  229. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Drive-Permissions.md +0 -0
  230. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Drive-Query.md +0 -0
  231. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Drive-Revisions.md +0 -0
  232. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Drive-Shortcuts.md +0 -0
  233. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Drive-Transfer.md +0 -0
  234. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Forms.md +0 -0
  235. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Gmail-CSE.md +0 -0
  236. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Gmail-Delegates.md +0 -0
  237. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Gmail-Filters.md +0 -0
  238. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Gmail-Forwarding.md +0 -0
  239. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Gmail-Labels.md +0 -0
  240. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Gmail-Messages-Threads.md +0 -0
  241. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Gmail-Profile.md +0 -0
  242. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Gmail-S-MIME.md +0 -0
  243. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
  244. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Gmail-Settings.md +0 -0
  245. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Group-Membership.md +0 -0
  246. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Keep-Notes.md +0 -0
  247. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Looker-Studio.md +0 -0
  248. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Meet.md +0 -0
  249. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-People-Contacts-Profiles.md +0 -0
  250. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Photo.md +0 -0
  251. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Profile-Photo.md +0 -0
  252. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Profile-Sharing.md +0 -0
  253. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Shared-Drives.md +0 -0
  254. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Signout-Turnoff2SV.md +0 -0
  255. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Spreadsheets.md +0 -0
  256. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Tasks.md +0 -0
  257. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-Tokens.md +0 -0
  258. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users-YouTube.md +0 -0
  259. {gam7-7.6.9 → gam7-7.6.11}/wiki/Users.md +0 -0
  260. {gam7-7.6.9 → gam7-7.6.11}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
  261. {gam7-7.6.9 → gam7-7.6.11}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
  262. {gam7-7.6.9 → gam7-7.6.11}/wiki/Vault-Takeout.md +0 -0
  263. {gam7-7.6.9 → gam7-7.6.11}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
  264. {gam7-7.6.9 → gam7-7.6.11}/wiki/_Sidebar.md +0 -0
  265. {gam7-7.6.9 → gam7-7.6.11}/wiki/gam.cfg.md +0 -0
  266. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-AdminSettingsExamples.md +0 -0
  267. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Android-Installation.md +0 -0
  268. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-BulkOperations.md +0 -0
  269. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-CalendarExamples.md +0 -0
  270. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Chat-Bot.md +0 -0
  271. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Chrome-Browser-Management.md +0 -0
  272. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Chrome-OS-Installation.md +0 -0
  273. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Chrome-Policy-Settings.md +0 -0
  274. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Cloud-Identity-Groups.md +0 -0
  275. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
  276. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Command-Reference-Calendars.md +0 -0
  277. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Command-Reference-Definitions.md +0 -0
  278. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Command-Reference-Drive.md +0 -0
  279. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Command-Reference-Email.md +0 -0
  280. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
  281. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Command-Reference-Groups.md +0 -0
  282. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Command-Reference-Users.md +0 -0
  283. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Context-Aware-Access-Levels.md +0 -0
  284. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
  285. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-CreatingClientSecretsFile.md +0 -0
  286. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Custom-Schemas.md +0 -0
  287. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Data-Transfers.md +0 -0
  288. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-DomainVerification.md +0 -0
  289. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-ExamplesAccountAuditing.md +0 -0
  290. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-ExamplesCSV.md +0 -0
  291. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-ExamplesEmailSettings.md +0 -0
  292. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-ExamplesOrganizations.md +0 -0
  293. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-GAM-Discussion-Group.md +0 -0
  294. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
  295. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-GAM-options-files.md +0 -0
  296. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
  297. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-GAM3CSVListings.md +0 -0
  298. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-GAM3DirectoryCommands.md +0 -0
  299. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-GAM3GroupSettings.md +0 -0
  300. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-GAM7-FAQ.md +0 -0
  301. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
  302. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-GoogleDriveManagement.md +0 -0
  303. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
  304. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Home.md +0 -0
  305. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
  306. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Inbound-SSO-Settings.md +0 -0
  307. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-LicenseExamples.md +0 -0
  308. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Managing-Admins.md +0 -0
  309. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
  310. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Managing-Devices.md +0 -0
  311. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Managing-Google-Classroom.md +0 -0
  312. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-OAuthKeyManagement.md +0 -0
  313. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Printers.md +0 -0
  314. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-ResellerCommands.md +0 -0
  315. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
  316. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-SecurityExamples.md +0 -0
  317. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-UnmanagedUsersExamples.md +0 -0
  318. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Use-a-Yubikey.md +0 -0
  319. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
  320. {gam7-7.6.9 → gam7-7.6.11}/wiki/l-_Footer.md +0 -0
@@ -28,6 +28,8 @@ env:
28
28
  OPENSSL_SOURCE_PATH: ${{ github.workspace }}/src/openssl
29
29
  PYTHON_INSTALL_PATH: ${{ github.workspace }}/bin/python
30
30
  PYTHON_SOURCE_PATH: ${{ github.workspace }}/src/cpython
31
+ CRYPTOGRAPHY_BUILD_OPENSSL_NO_LEGACY: 1
32
+ CRYPTOGRAPHY_OPENSSL_NO_LEGACY: 1
31
33
 
32
34
  jobs:
33
35
  build:
@@ -197,7 +199,7 @@ jobs:
197
199
  run: |
198
200
  echo "RUNNING: apt update..."
199
201
  sudo apt-get -qq --yes update
200
- sudo apt-get -qq --yes install swig libpcsclite-dev libxslt1-dev libsqlite3-dev
202
+ sudo apt-get -qq --yes install swig libpcsclite-dev libxslt1-dev libsqlite3-dev libffi-dev pkg-config
201
203
 
202
204
  - name: MacOS install tools
203
205
  if: runner.os == 'macOS'
@@ -450,6 +452,9 @@ jobs:
450
452
  "$PYTHON" -m pip install --upgrade pip
451
453
  "$PYTHON" -m pip install --upgrade wheel
452
454
  "$PYTHON" -m pip install --upgrade setuptools
455
+ "$PYTHON" -m pip install --upgrade importlib-metadata
456
+ "$PYTHON" -m pip install --upgrade setuptools-scm
457
+ "$PYTHON" -m pip list
453
458
 
454
459
  - name: Custom wheels for Win arm64
455
460
  if: runner.os == 'Windows' && runner.arch == 'ARM64'
@@ -462,7 +467,14 @@ jobs:
462
467
  echo "Downloading ${latest_crypt_whl}..."
463
468
  curl -O -L "$latest_crypt_whl"
464
469
  "$PYTHON" -m pip install cryptography*.whl
465
-
470
+
471
+ - uses: actions-rust-lang/setup-rust-toolchain@v1
472
+
473
+ # - name: Compile cryptography from source (no legacy)
474
+ # if: runner.os != 'Windows' || runner.arch != 'ARM64'
475
+ # run: |
476
+ # pip install --no-binary ":all:" --force cryptography
477
+
466
478
  - name: Install pip requirements
467
479
  run: |
468
480
  echo "before anything..."
@@ -31,3 +31,5 @@ jobs:
31
31
 
32
32
  - name: Publish package distributions to PyPI
33
33
  uses: pypa/gh-action-pypi-publish@release/v1
34
+ with:
35
+ attestation: true
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.6.9
3
+ Version: 7.6.11
4
4
  Summary: CLI tool to manage Google Workspace
5
5
  Project-URL: Homepage, https://github.com/GAM-team/GAM
6
6
  Project-URL: Issues, https://github.com/GAM-team/GAM/issues
@@ -18,22 +18,22 @@ Classifier: Programming Language :: Python :: 3.11
18
18
  Classifier: Programming Language :: Python :: 3.12
19
19
  Classifier: Programming Language :: Python :: 3.13
20
20
  Requires-Python: >=3.9
21
- Requires-Dist: chardet
22
- Requires-Dist: cryptography
21
+ Requires-Dist: chardet>=5.2.0
22
+ Requires-Dist: cryptography>=44.0.2
23
23
  Requires-Dist: distro; sys_platform == 'linux'
24
- Requires-Dist: filelock
25
- Requires-Dist: google-api-python-client>=2.1
26
- Requires-Dist: google-auth-httplib2
27
- Requires-Dist: google-auth-oauthlib>=0.4.1
28
- Requires-Dist: google-auth>=2.3.2
29
- Requires-Dist: httplib2>=0.17.0
30
- Requires-Dist: lxml
31
- Requires-Dist: passlib>=1.7.2
32
- Requires-Dist: pathvalidate
24
+ Requires-Dist: filelock>=3.18.0
25
+ Requires-Dist: google-api-python-client>=2.167.0
26
+ Requires-Dist: google-auth-httplib2>=0.2.0
27
+ Requires-Dist: google-auth-oauthlib>=1.2.2
28
+ Requires-Dist: google-auth>=2.39.0
29
+ Requires-Dist: httplib2>=0.22.0
30
+ Requires-Dist: lxml>=5.4.0
31
+ Requires-Dist: passlib>=1.7.4
32
+ Requires-Dist: pathvalidate>=3.2.3
33
33
  Requires-Dist: pyscard==2.2.1
34
34
  Requires-Dist: python-dateutil
35
35
  Provides-Extra: yubikey
36
- Requires-Dist: yubikey-manager>=5.0; extra == 'yubikey'
36
+ Requires-Dist: yubikey-manager>=5.6.1; extra == 'yubikey'
37
37
  Description-Content-Type: text/markdown
38
38
 
39
39
  GAM is a command line tool for Google Workspace admins to manage domain and user settings quickly and easily.
@@ -7,19 +7,20 @@ authors = [
7
7
  { name="Jay Lee", email="jay0lee@gmail.com" },
8
8
  { name="Ross Scroggs", email="Ross.Scroggs@gmail.com" },
9
9
  ]
10
+ # # The following files should be edited to match: setup.cfg, requirements.txt
10
11
  dependencies = [
11
- "chardet",
12
- "cryptography",
12
+ "chardet>=5.2.0",
13
+ "cryptography>=44.0.2",
13
14
  "distro; sys_platform=='linux'",
14
- "filelock",
15
- "google-api-python-client>=2.1",
16
- "google-auth-httplib2",
17
- "google-auth-oauthlib>=0.4.1",
18
- "google-auth>=2.3.2",
19
- "httplib2>=0.17.0",
20
- "lxml",
21
- "passlib>=1.7.2",
22
- "pathvalidate",
15
+ "filelock>=3.18.0",
16
+ "google-api-python-client>=2.167.0",
17
+ "google-auth-httplib2>=0.2.0",
18
+ "google-auth-oauthlib>=1.2.2",
19
+ "google-auth>=2.39.0",
20
+ "httplib2>=0.22.0",
21
+ "lxml>=5.4.0",
22
+ "passlib>=1.7.4",
23
+ "pathvalidate>=3.2.3",
23
24
  "pyscard==2.2.1",
24
25
  "python-dateutil",
25
26
  ]
@@ -40,7 +41,7 @@ license = {text = "Apache License (2.0)"}
40
41
  license-files = ["LICEN[CS]E*"]
41
42
 
42
43
  [project.optional-dependencies]
43
- yubikey = ["yubikey-manager>=5.0"]
44
+ yubikey = ["yubikey-manager>=5.6.1"]
44
45
 
45
46
  [project.scripts]
46
47
  gam = "gam.__main__:main"
@@ -322,7 +322,8 @@ If an item contains spaces, it should be surrounded by ".
322
322
  wsess | workspaceesentials | gsuiteessentials | essentials | d4e | driveenterprise | drive4enterprise | 1010060001 | Google Workspace Essentials |
323
323
  wsessplus | workspaceessentialsplus | 1010060005 | Google Workspace Essentials Plus |
324
324
  wsflw | workspacefrontline | workspacefrontlineworker | 1010020030 | Google Workspace Frontline Starter |
325
- wsflwstan | workspacefrontlinestan | workspacefrontlineworkerstan | 1010020031 | Google Workspace Frontline Standard
325
+ wsflwstan | workspacefrontlinestan | workspacefrontlineworkerstan | 1010020031 | Google Workspace Frontline Standard |
326
+ wsflwplus | workspacefrontlineplus | workspacefrontlineworkerplus | 1010020034 | Google Workspace Frontline Plus
326
327
 
327
328
  ## Items built from primitives
328
329
 
@@ -782,7 +783,7 @@ Items, separated by spaces, with spaces, commas or single quotes in the items th
782
783
 
783
784
  ## Collections of ChromeOS Devices
784
785
 
785
- Specify a collection of ChromeOS devices by directly specifying them or by specifiying items that will yield a list of ChromeOS devices.
786
+ Specify a collection of ChromeOS devices by directly specifying them or by specifying items that will yield a list of ChromeOS devices.
786
787
 
787
788
  <CrOSTypeEntity> ::=
788
789
  (all cros)|
@@ -865,7 +866,7 @@ Specify a collection of ChromeOS devices by directly specifying them or by speci
865
866
 
866
867
  ## Collections of Users
867
868
 
868
- Specify a collection of Users by directly specifying them or by specifiying items that will yield a list of users.
869
+ Specify a collection of Users by directly specifying them or by specifying items that will yield a list of users.
869
870
 
870
871
  <UserTypeEntity> ::=
871
872
  (all users|users_ns|users_susp|users_ns_susp)|
@@ -4458,6 +4459,7 @@ gam report usage customer [todrive <ToDriveAttribute>*]
4458
4459
  domain|
4459
4460
  drive|doc|docs|
4460
4461
  gcp|
4462
+ gemini|geminiforworkspace|
4461
4463
  groups|group|
4462
4464
  groupsenterprise|enterprisegroups|
4463
4465
  jamboard|
@@ -1,3 +1,23 @@
1
+ 7.06.11
2
+
3
+ Improved `gam checkconn`.
4
+
5
+ Updated `gam print group-members` and `gam print cigroup-members` to recognize members
6
+ that are groups representing chat spaces. For now, these groups are not expanded when
7
+ `recursive` is specified.
8
+
9
+ 7.06.10
10
+
11
+ Added the following license SKU.
12
+ ```
13
+ 1010020034 - Google Workspace Frontline Plus
14
+ ```
15
+
16
+ 7.06.09
17
+
18
+ Added `gemini` and `geminiforworkspace` to `<ActivityApplicationName>` for use in
19
+ `gam report <ActivityApplicationName>`.
20
+
1
21
  7.06.08
2
22
 
3
23
  Fixed problem where Yubikeys caused a trap.
@@ -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.06.09'
28
+ __version__ = '7.06.11'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -95,6 +95,8 @@ import wsgiref.simple_server
95
95
  import wsgiref.util
96
96
  import zipfile
97
97
 
98
+ # disable legacy stuff we don't use and isn't secure
99
+ os.environ['CRYPTOGRAPHY_OPENSSL_NO_LEGACY'] = "1"
98
100
  from cryptography import x509
99
101
  from cryptography.hazmat.backends import default_backend
100
102
  from cryptography.hazmat.primitives import hashes, serialization
@@ -9358,32 +9360,9 @@ def getOSPlatform():
9358
9360
 
9359
9361
  # gam checkconnection
9360
9362
  def doCheckConnection():
9361
- hosts = ['api.github.com',
9362
- 'raw.githubusercontent.com',
9363
- 'accounts.google.com',
9364
- 'workspace.google.com',
9365
- 'oauth2.googleapis.com',
9366
- 'www.googleapis.com']
9367
- fix_hosts = {'calendar-json.googleapis.com': 'www.googleapis.com',
9368
- 'storage-api.googleapis.com': 'storage.googleapis.com'}
9369
- api_hosts = ['apps-apis.google.com',
9370
- 'sites.google.com',
9371
- 'versionhistory.googleapis.com',
9372
- 'www.google.com']
9373
- for host in API.PROJECT_APIS:
9374
- host = fix_hosts.get(host, host)
9375
- if host not in api_hosts and host not in hosts:
9376
- api_hosts.append(host)
9377
- hosts.extend(sorted(api_hosts))
9378
- host_count = len(hosts)
9379
- httpObj = getHttpObj(timeout=30)
9380
- httpObj.follow_redirects = False
9381
- headers = {'user-agent': GAM_USER_AGENT}
9382
- okay = createGreenText('OK')
9383
- not_okay = createRedText('ERROR')
9384
- try_count = 0
9385
- success_count = 0
9386
- for host in hosts:
9363
+
9364
+ def check_host(host):
9365
+ nonlocal try_count, okay, not_okay, success_count
9387
9366
  try_count += 1
9388
9367
  dns_err = None
9389
9368
  ip = 'unknown'
@@ -9393,12 +9372,12 @@ def doCheckConnection():
9393
9372
  dns_err = f'{not_okay}\n DNS failure: {str(e)}\n'
9394
9373
  except Exception as e:
9395
9374
  dns_err = f'{not_okay}\n Unknown DNS failure: {str(e)}\n'
9396
- check_line = f'Checking {host} ({ip}) ({try_count}/{host_count})...'
9375
+ check_line = f'Checking {host} ({ip}) ({try_count})...'
9397
9376
  writeStdout(f'{check_line:<100}')
9398
9377
  flushStdout()
9399
9378
  if dns_err:
9400
9379
  writeStdout(dns_err)
9401
- continue
9380
+ return
9402
9381
  gen_firewall = 'You probably have security software or a firewall on your machine or network that is preventing GAM from making Internet connections. Check your network configuration or try running GAM on a hotspot or home network to see if the problem exists only on your organization\'s network.'
9403
9382
  try:
9404
9383
  if host.startswith('http'):
@@ -9427,7 +9406,54 @@ def doCheckConnection():
9427
9406
  writeStdout(f'{not_okay}\n Timed out trying to connect to host\n')
9428
9407
  except Exception as e:
9429
9408
  writeStdout(f'{not_okay}\n {str(e)}\n')
9430
- if success_count == host_count:
9409
+
9410
+ try_count = 0
9411
+ httpObj = getHttpObj(timeout=30)
9412
+ httpObj.follow_redirects = False
9413
+ headers = {'user-agent': GAM_USER_AGENT}
9414
+ okay = createGreenText('OK')
9415
+ not_okay = createRedText('ERROR')
9416
+ success_count = 0
9417
+ initial_hosts = ['api.github.com',
9418
+ 'raw.githubusercontent.com',
9419
+ 'accounts.google.com',
9420
+ 'oauth2.googleapis.com',
9421
+ 'www.googleapis.com']
9422
+ for host in initial_hosts:
9423
+ check_host(host)
9424
+ api_hosts = ['apps-apis.google.com',
9425
+ 'www.google.com']
9426
+ for host in api_hosts:
9427
+ check_host(host)
9428
+ # For v2 discovery APIs, GAM gets discovery file from <api>.googleapis.com so
9429
+ # add those domains.
9430
+ disc_hosts = []
9431
+ for api, config in API._INFO.items():
9432
+ if config.get('v2discovery') and not config.get('localdiscovery'):
9433
+ if mapped_api := config.get('mappedAPI'):
9434
+ api = mapped_api
9435
+ host = f'{api}.googleapis.com'
9436
+ if host not in disc_hosts:
9437
+ disc_hosts.append(host)
9438
+ for host in disc_hosts:
9439
+ check_host(host)
9440
+ checked_hosts = initial_hosts + api_hosts + disc_hosts
9441
+ # now we need to "build" each API and check it's base URL host
9442
+ # if we haven't already. This may not be any hosts at all but
9443
+ # to ensure we are checking all hosts GAM may use we should
9444
+ # keep this.
9445
+ for api in API._INFO:
9446
+ if api in [API.CONTACTS, API.EMAIL_AUDIT]:
9447
+ continue
9448
+ svc = getService(api, httpObj)
9449
+ base_url = svc._rootDesc.get('baseUrl')
9450
+ parsed_base_url = urlparse(base_url)
9451
+ base_host = parsed_base_url.netloc
9452
+ if base_host not in checked_hosts:
9453
+ print(f'checking {base_host} for {api}')
9454
+ check_host(base_host)
9455
+ checked_hosts.append(base_host)
9456
+ if success_count == try_count:
9431
9457
  writeStdout(createGreenText('All hosts passed!\n'))
9432
9458
  else:
9433
9459
  systemErrorExit(3, createYellowText('Some hosts failed to connect! Please follow the recommendations for those hosts to correct any issues and try again.'))
@@ -34179,7 +34205,8 @@ def getGroupMembers(cd, groupEmail, memberRoles, membersList, membersSet, i, cou
34179
34205
  elif memberOptions[MEMBEROPTION_NODUPLICATES]:
34180
34206
  groupMemberList = []
34181
34207
  for member in groupMembers:
34182
- if member['type'] != Ent.TYPE_GROUP:
34208
+ namespace = member['email'].find('@') == -1
34209
+ if member['type'] != Ent.TYPE_GROUP or namespace:
34183
34210
  if ((member['type'] in typesSet and
34184
34211
  checkMemberMatch(member, memberOptions) and
34185
34212
  _checkMemberRoleIsSuspendedIsArchived(member, validRoles, memberOptions[MEMBEROPTION_ISSUSPENDED], memberOptions[MEMBEROPTION_ISARCHIVED]) and
@@ -34208,7 +34235,8 @@ def getGroupMembers(cd, groupEmail, memberRoles, membersList, membersSet, i, cou
34208
34235
  memberOptions, memberDisplayOptions, level+1, typesSet)
34209
34236
  else:
34210
34237
  for member in groupMembers:
34211
- if member['type'] != Ent.TYPE_GROUP:
34238
+ namespace = member['email'].find('@') == -1
34239
+ if member['type'] != Ent.TYPE_GROUP or namespace:
34212
34240
  if ((member['type'] in typesSet) and
34213
34241
  checkMemberMatch(member, memberOptions) and
34214
34242
  _checkMemberRoleIsSuspendedIsArchived(member, validRoles,
@@ -36307,7 +36335,8 @@ def getCIGroupMembers(ci, groupName, memberRoles, membersList, membersSet, i, co
36307
36335
  for member in groupMembers:
36308
36336
  getCIGroupMemberRoleFixType(member)
36309
36337
  memberName = member.get('preferredMemberKey', {}).get('id', '')
36310
- if member['type'] != Ent.TYPE_GROUP:
36338
+ namespace = member.get('preferredMemberKey', {}).get('namespace', '')
36339
+ if member['type'] != Ent.TYPE_GROUP or namespace:
36311
36340
  if (member['type'] in typesSet and
36312
36341
  checkCIMemberMatch(member, memberOptions) and
36313
36342
  _checkMemberRole(member, validRoles) and
@@ -36335,7 +36364,8 @@ def getCIGroupMembers(ci, groupName, memberRoles, membersList, membersSet, i, co
36335
36364
  for member in groupMembers:
36336
36365
  getCIGroupMemberRoleFixType(member)
36337
36366
  memberName = member.get('preferredMemberKey', {}).get('id', '')
36338
- if member['type'] != Ent.TYPE_GROUP:
36367
+ namespace = member.get('preferredMemberKey', {}).get('namespace', '')
36368
+ if member['type'] != Ent.TYPE_GROUP or namespace:
36339
36369
  if (member['type'] in typesSet and
36340
36370
  checkCIMemberMatch(member, memberOptions) and
36341
36371
  _checkMemberRole(member, validRoles) and
@@ -244,7 +244,7 @@ _INFO = {
244
244
  EMAIL_AUDIT: {'name': 'Email Audit API', 'version': 'v1', 'v2discovery': False},
245
245
  FORMS: {'name': 'Forms API', 'version': 'v1', 'v2discovery': True},
246
246
  GMAIL: {'name': 'Gmail API', 'version': 'v1', 'v2discovery': True},
247
- GROUPSMIGRATION: {'name': 'Groups Migration API', 'version': 'v1', 'v2discovery': False},
247
+ GROUPSMIGRATION: {'name': 'Groups Migration API', 'version': 'v1', 'v2discovery': True},
248
248
  GROUPSSETTINGS: {'name': 'Groups Settings API', 'version': 'v1', 'v2discovery': True},
249
249
  IAM: {'name': 'Identity and Access Management API', 'version': 'v1', 'v2discovery': True},
250
250
  IAM_CREDENTIALS: {'name': 'Identity and Access Management Credentials API', 'version': 'v1', 'v2discovery': True},
@@ -144,6 +144,8 @@ _SKUS = {
144
144
  'product': 'Google-Apps', 'aliases': ['wsflw', 'workspacefrontline', 'workspacefrontlineworker'], 'displayName': 'Google Workspace Frontline Starter'},
145
145
  '1010020031': {
146
146
  'product': 'Google-Apps', 'aliases': ['wsflwstan', 'workspacefrontlinestan', 'workspacefrontlineworkerstan'], 'displayName': 'Google Workspace Frontline Standard'},
147
+ '1010020034': {
148
+ 'product': 'Google-Apps', 'aliases': ['wsflwplus', 'workspacefrontlineplus', 'workspacefrontlineworkerplus'], 'displayName': 'Google Workspace Frontline Plus'},
147
149
  '1010340001': {
148
150
  'product': '101034', 'aliases': ['gseau', 'enterprisearchived', 'gsuiteenterprisearchived'], 'displayName': 'Google Workspace Enterprise Plus - Archived User'},
149
151
  '1010340002': {
@@ -20,14 +20,19 @@
20
20
 
21
21
  """
22
22
 
23
- GAM_VER_LIBS = ['cryptography',
24
- 'filelock',
25
- 'google-api-python-client',
26
- 'google-auth-httplib2',
27
- 'google-auth-oauthlib',
28
- 'google-auth',
29
- 'httplib2',
30
- 'passlib',
31
- 'python-dateutil',
32
- 'yubikey-manager',
33
- ]
23
+ GAM_VER_LIBS = [
24
+ 'chardet',
25
+ 'cryptography',
26
+ 'filelock',
27
+ 'google-api-python-client',
28
+ 'google-auth-httplib2',
29
+ 'google-auth-oauthlib',
30
+ 'google-auth',
31
+ 'lxml',
32
+ 'httplib2',
33
+ 'passlib',
34
+ 'pathvalidate',
35
+ 'pyscard',
36
+ 'python-dateutil',
37
+ 'yubikey-manager',
38
+ ]
@@ -0,0 +1,25 @@
1
+ {\rtf1\ansi\ansicpg1252\cocoartf2822
2
+ \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fswiss\fcharset0 Helvetica-Bold;}
3
+ {\colortbl;\red255\green255\blue255;}
4
+ {\*\expandedcolortbl;;}
5
+ \vieww12000\viewh15840\viewkind0
6
+ \deftab720
7
+ \pard\pardeftab720\sl276\slmult1\sa200\qc\partightenfactor0
8
+
9
+ \f0\fs22 \cf0 Copyright 2025 Jay Lee\
10
+ \pard\pardeftab720\sa200\qc\partightenfactor0
11
+
12
+ \f1\b \cf0 Licensed under the Apache License, Version 2.0 (the "License");\
13
+ \pard\pardeftab720\sl276\slmult1\sa200\qc\partightenfactor0
14
+
15
+ \f0\b0 \cf0 you may not use this file except in compliance with the License.\
16
+ You may obtain a copy of the License at\
17
+ \
18
+ {\field{\*\fldinst{HYPERLINK "http://www.apache.org/licenses/LICENSE-2.0"}}{\fldrslt http://www.apache.org/licenses/LICENSE-2.0}}\
19
+ \
20
+ Unless required by applicable law or agreed to in writing, software\
21
+ distributed under the License is distributed on an "AS IS" BASIS,\
22
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\
23
+ See the License for the specific language governing permissions and\
24
+ limitations under the License.\
25
+ }
@@ -0,0 +1,15 @@
1
+ chardet>=5.2.0
2
+ cryptography>=44.0.2
3
+ distro; sys_platform=='linux'
4
+ filelock>=3.18.0
5
+ google-api-python-client>=2.167.0
6
+ google-auth-httplib2>=0.2.0
7
+ google-auth-oauthlib>=1.2.2
8
+ google-auth>=2.39.0
9
+ httplib2>=0.22.0
10
+ lxml>=5.4.0
11
+ passlib>=1.7.4
12
+ pathvalidate>=3.2.3
13
+ pyscard==2.2.1
14
+ python-dateutil
15
+ yubikey-manager>=5.6.1
@@ -17,27 +17,29 @@ classifiers =
17
17
  Programming Language :: Python :: 3.10
18
18
  Programming Language :: Python :: 3.11
19
19
  Programming Language :: Python :: 3.12
20
+ Programming Language :: Python :: 3.13
20
21
  License :: OSI Approved :: Apache License
21
22
 
22
23
  [options]
23
24
  packages = find:
24
- python_requires = >= 3.8
25
+ python_requires = >= 3.9
26
+ # The following files should be edited to match: pyproject.toml, requirements.txt
25
27
  install_requires =
26
- chardet
27
- cryptography
28
+ chardet >= 5.2.0
29
+ cryptography >= 44.0.2
28
30
  distro; sys_platform == 'linux'
29
- filelock
30
- google-api-python-client >= 2.36
31
- google-auth-httplib2
32
- google-auth-oauthlib >= 0.4.6
33
- google-auth >= 2.3.3
34
- httplib2 >= 0.20.2
35
- lxml
31
+ filelock >= 3.18.0
32
+ google-api-python-client >= 2.167.0
33
+ google-auth-httplib2 >= 0.2.0
34
+ google-auth-oauthlib >= 1.2.2
35
+ google-auth >= 2.39.0
36
+ httplib2 >= 0.22.0
37
+ lxml >= 5.4.0
36
38
  passlib >= 1.7.4
37
- pathvalidate
38
- pyscard==2.2.1
39
+ pathvalidate >= 3.2.3
40
+ pyscard == 2.2.1
39
41
  python-dateutil
40
- yubikey-manager >= 5.0
42
+ yubikey-manager >= 5.6.1
41
43
 
42
44
  [options.package_data]
43
45
  * = *.pem
@@ -10,6 +10,26 @@ 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.06.11
14
+
15
+ Improved `gam checkconn`.
16
+
17
+ Updated `gam print group-members` and `gam print cigroup-members` to recognize members
18
+ that are groups representing chat spaces. For now, these groups are not expanded when
19
+ `recursive` is specified.
20
+
21
+ ### 7.06.10
22
+
23
+ Added the following license SKU.
24
+ ```
25
+ 1010020034 - Google Workspace Frontline Plus
26
+ ```
27
+
28
+ ### 7.06.09
29
+
30
+ Added `gemini` and `geminiforworkspace` to `<ActivityApplicationName>` for use in
31
+ `gam report <ActivityApplicationName>`.
32
+
13
33
  ### 7.06.08
14
34
 
15
35
  Fixed problem where Yubikeys caused a trap.
@@ -251,7 +251,7 @@ writes the credentials into the file oauth2.txt.
251
251
  admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
252
252
  admin@server:/Users/admin$ gam version
253
253
  WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
254
- GAM 7.06.08 - https://github.com/GAM-team/GAM - pyinstaller
254
+ GAM 7.06.11 - https://github.com/GAM-team/GAM - pyinstaller
255
255
  GAM Team <google-apps-manager@googlegroups.com>
256
256
  Python 3.13.3 64-bit final
257
257
  MacOS Sequoia 15.4.1 x86_64
@@ -989,7 +989,7 @@ writes the credentials into the file oauth2.txt.
989
989
  C:\>del C:\GAMConfig\oauth2.txt
990
990
  C:\>gam version
991
991
  WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
992
- GAM 7.06.08 - https://github.com/GAM-team/GAM - pythonsource
992
+ GAM 7.06.11 - https://github.com/GAM-team/GAM - pythonsource
993
993
  GAM Team <google-apps-manager@googlegroups.com>
994
994
  Python 3.13.3 64-bit final
995
995
  Windows-10-10.0.17134 AMD64
@@ -110,6 +110,7 @@
110
110
  | Google Workspace for Education: Teaching and Learning Upgrade | 1010370001 | gwetlu |
111
111
  | Google Workspace Frontline Starter | 1010020030 | wsflw |
112
112
  | Google Workspace Frontline Standard | 1010020031 | wsflwstan |
113
+ | Google Workspace Frontline Plus | 1010020034 | wsflwplus |
113
114
  | Google Workspace Government | Google-Apps-For-Government | gsuitegov |
114
115
  | Google Workspace Labs | 1010470002 | gwlabs | workspacelabs |
115
116
 
@@ -51,6 +51,7 @@ config csv_output_row_filter "'\"accounts:used_quota_in_mb\":count>15000'"
51
51
  domain|
52
52
  drive|doc|docs|
53
53
  gcp|
54
+ gemini|geminiforworkspace|
54
55
  groups|group|
55
56
  groupsenterprise|enterprisegroups|
56
57
  jamboard|
@@ -42,12 +42,12 @@ Google requires that you have a Chat Bot configured in order to use the Chat API
42
42
 
43
43
  ## Set up a Chat Bot
44
44
 
45
- * Run the command `gam setup chat`; it will point you to a URL to configure your Chat Bot; this is required to use the Chat API.
45
+ * Run the command `gam setup chat`; it will point you to a URL to configure your Chat Bot.
46
46
  * Enter an App name and Description of your choosing.
47
47
  * For the Avatar URL you can use `https://dummyimage.com/384x256/4d4d4d/0011ff.png&text=+GAM` or a public URL to an image of your own choosing.
48
48
  * In Functionality, uncheck both "Receive 1:1 messages" and "Join spaces and group conversations"
49
- * In Connection settings, choose "Cloud Pub/Sub" and enter "no-topic" for the topic name. GAM doesn't yet listen to pub/sub so this option is not used.
50
- * In Visibility, uncheck "Make this Chat app available to specific people and groups in Domain Workspace".
49
+ * In Connection settings, choose "Cloud Pub/Sub" and enter `projects/<ProjectID>/topics/no-topic` for the topic name. Replace `<ProjectID>` with your GAM project ID. GAM doesn't yet listen to pub/sub so this option is not used.
50
+ * In Visibility, uncheck "Make this Chat app available to specific people and groups in Domain Workspace".
51
51
  * Click Save.
52
52
 
53
53
  ## API documentation
@@ -4,7 +4,7 @@ k
4
4
  Print the current version of Gam with details
5
5
  ```
6
6
  gam version
7
- GAM 7.06.08 - https://github.com/GAM-team/GAM - pyinstaller
7
+ GAM 7.06.11 - https://github.com/GAM-team/GAM - pyinstaller
8
8
  GAM Team <google-apps-manager@googlegroups.com>
9
9
  Python 3.13.3 64-bit final
10
10
  MacOS Sequoia 15.4.1 x86_64
@@ -16,7 +16,7 @@ Time: 2023-06-02T21:10:00-07:00
16
16
  Print the current version of Gam with details and time offset information
17
17
  ```
18
18
  gam version timeoffset
19
- GAM 7.06.08 - https://github.com/GAM-team/GAM - pyinstaller
19
+ GAM 7.06.11 - https://github.com/GAM-team/GAM - pyinstaller
20
20
  GAM Team <google-apps-manager@googlegroups.com>
21
21
  Python 3.13.3 64-bit final
22
22
  MacOS Sequoia 15.4.1 x86_64
@@ -28,7 +28,7 @@ Your system time differs from www.googleapis.com by less than 1 second
28
28
  Print the current version of Gam with extended details and SSL information
29
29
  ```
30
30
  gam version extended
31
- GAM 7.06.08 - https://github.com/GAM-team/GAM - pyinstaller
31
+ GAM 7.06.11 - https://github.com/GAM-team/GAM - pyinstaller
32
32
  GAM Team <google-apps-manager@googlegroups.com>
33
33
  Python 3.13.3 64-bit final
34
34
  MacOS Sequoia 15.4.1 x86_64
@@ -65,7 +65,7 @@ MacOS High Sierra 10.13.6 x86_64
65
65
  Path: /Users/Admin/bin/gam7
66
66
  Version Check:
67
67
  Current: 5.35.08
68
- Latest: 7.06.08
68
+ Latest: 7.06.11
69
69
  echo $?
70
70
  1
71
71
  ```
@@ -73,7 +73,7 @@ echo $?
73
73
  Print the current version number without details
74
74
  ```
75
75
  gam version simple
76
- 7.06.08
76
+ 7.06.11
77
77
  ```
78
78
  In Linux/MacOS you can do:
79
79
  ```
@@ -83,7 +83,7 @@ echo $VER
83
83
  Print the current version of Gam and address of this Wiki
84
84
  ```
85
85
  gam help
86
- GAM 7.06.08 - https://github.com/GAM-team/GAM
86
+ GAM 7.06.11 - https://github.com/GAM-team/GAM
87
87
  GAM Team <google-apps-manager@googlegroups.com>
88
88
  Python 3.13.3 64-bit final
89
89
  MacOS Sequoia 15.4.1 x86_64
Binary file
@@ -1,15 +0,0 @@
1
- chardet
2
- cryptography
3
- distro; sys_platform=='linux'
4
- filelock
5
- google-api-python-client>=2.166.0
6
- google-auth-httplib2>=0.2.0
7
- google-auth-oauthlib>=1.2.1
8
- google-auth>=2.38.0
9
- httplib2>=0.22.0
10
- lxml
11
- passlib>=1.7.4
12
- pathvalidate
13
- pyscard==2.2.1
14
- python-dateutil
15
- yubikey-manager[yubikey]>=5.6.1