gam7 7.6.6__tar.gz → 7.6.9__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 (318) hide show
  1. {gam7-7.6.6 → gam7-7.6.9}/.github/workflows/build.yml +1 -1
  2. {gam7-7.6.6 → gam7-7.6.9}/PKG-INFO +2 -1
  3. {gam7-7.6.6 → gam7-7.6.9}/pyproject.toml +1 -0
  4. {gam7-7.6.6 → gam7-7.6.9}/src/GamUpdate.txt +17 -0
  5. {gam7-7.6.6 → gam7-7.6.9}/src/gam/__init__.py +28 -13
  6. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gamlib/glmsgs.py +7 -3
  7. {gam7-7.6.6 → gam7-7.6.9}/src/gam-install.sh +1 -1
  8. {gam7-7.6.6 → gam7-7.6.9}/src/requirements.txt +1 -0
  9. {gam7-7.6.6 → gam7-7.6.9}/src/setup.cfg +1 -0
  10. {gam7-7.6.6 → gam7-7.6.9}/wiki/Downloads-Installs.md +15 -4
  11. {gam7-7.6.6 → gam7-7.6.9}/wiki/GamUpdates.md +21 -0
  12. {gam7-7.6.6 → gam7-7.6.9}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
  13. {gam7-7.6.6 → gam7-7.6.9}/wiki/Version-and-Help.md +6 -6
  14. {gam7-7.6.6 → gam7-7.6.9}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  15. {gam7-7.6.6 → gam7-7.6.9}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  16. {gam7-7.6.6 → gam7-7.6.9}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  17. {gam7-7.6.6 → gam7-7.6.9}/.github/ISSUE_TEMPLATE.txt +0 -0
  18. {gam7-7.6.6 → gam7-7.6.9}/.github/actions/decrypt.sh +0 -0
  19. {gam7-7.6.6 → gam7-7.6.9}/.github/actions/entitlements.plist +0 -0
  20. {gam7-7.6.6 → gam7-7.6.9}/.github/actions/package_exclusions.txt +0 -0
  21. {gam7-7.6.6 → gam7-7.6.9}/.github/stale.yml +0 -0
  22. {gam7-7.6.6 → gam7-7.6.9}/.github/workflows/codeql-analysis.yml +0 -0
  23. {gam7-7.6.6 → gam7-7.6.9}/.github/workflows/get-cacerts.yml +0 -0
  24. {gam7-7.6.6 → gam7-7.6.9}/.github/workflows/pushwiki.yml +0 -0
  25. {gam7-7.6.6 → gam7-7.6.9}/.github/workflows/pypi.yml +0 -0
  26. {gam7-7.6.6 → gam7-7.6.9}/.pre-commit-config.yaml +0 -0
  27. {gam7-7.6.6 → gam7-7.6.9}/LICENSE +0 -0
  28. {gam7-7.6.6 → gam7-7.6.9}/README.md +0 -0
  29. {gam7-7.6.6 → gam7-7.6.9}/src/.gitignore +0 -0
  30. {gam7-7.6.6 → gam7-7.6.9}/src/GamCommands.txt +0 -0
  31. {gam7-7.6.6 → gam7-7.6.9}/src/LICENSE +0 -0
  32. {gam7-7.6.6 → gam7-7.6.9}/src/cacerts.pem +0 -0
  33. {gam7-7.6.6 → gam7-7.6.9}/src/callgam.py +0 -0
  34. {gam7-7.6.6 → gam7-7.6.9}/src/gam/__main__.py +0 -0
  35. {gam7-7.6.6 → gam7-7.6.9}/src/gam/atom/__init__.py +0 -0
  36. {gam7-7.6.6 → gam7-7.6.9}/src/gam/atom/auth.py +0 -0
  37. {gam7-7.6.6 → gam7-7.6.9}/src/gam/atom/client.py +0 -0
  38. {gam7-7.6.6 → gam7-7.6.9}/src/gam/atom/core.py +0 -0
  39. {gam7-7.6.6 → gam7-7.6.9}/src/gam/atom/data.py +0 -0
  40. {gam7-7.6.6 → gam7-7.6.9}/src/gam/atom/http.py +0 -0
  41. {gam7-7.6.6 → gam7-7.6.9}/src/gam/atom/http_core.py +0 -0
  42. {gam7-7.6.6 → gam7-7.6.9}/src/gam/atom/http_interface.py +0 -0
  43. {gam7-7.6.6 → gam7-7.6.9}/src/gam/atom/mock_http.py +0 -0
  44. {gam7-7.6.6 → gam7-7.6.9}/src/gam/atom/mock_http_core.py +0 -0
  45. {gam7-7.6.6 → gam7-7.6.9}/src/gam/atom/mock_service.py +0 -0
  46. {gam7-7.6.6 → gam7-7.6.9}/src/gam/atom/service.py +0 -0
  47. {gam7-7.6.6 → gam7-7.6.9}/src/gam/atom/token_store.py +0 -0
  48. {gam7-7.6.6 → gam7-7.6.9}/src/gam/atom/url.py +0 -0
  49. {gam7-7.6.6 → gam7-7.6.9}/src/gam/cacerts.pem +0 -0
  50. {gam7-7.6.6 → gam7-7.6.9}/src/gam/cbcm-v1.1beta1.json +0 -0
  51. {gam7-7.6.6 → gam7-7.6.9}/src/gam/contactdelegation-v1.json +0 -0
  52. {gam7-7.6.6 → gam7-7.6.9}/src/gam/datastudio-v1.json +0 -0
  53. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gamlib/__init__.py +0 -0
  54. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gamlib/glaction.py +0 -0
  55. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gamlib/glapi.py +0 -0
  56. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gamlib/glcfg.py +0 -0
  57. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gamlib/glclargs.py +0 -0
  58. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gamlib/glentity.py +0 -0
  59. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gamlib/glgapi.py +0 -0
  60. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gamlib/glgdata.py +0 -0
  61. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gamlib/glglobals.py +0 -0
  62. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gamlib/glindent.py +0 -0
  63. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gamlib/glskus.py +0 -0
  64. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gamlib/gluprop.py +0 -0
  65. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gamlib/glverlibs.py +0 -0
  66. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gamlib/yubikey.py +0 -0
  67. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gdata/__init__.py +0 -0
  68. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gdata/alt/__init__.py +0 -0
  69. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gdata/alt/app_engine.py +0 -0
  70. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gdata/alt/appengine.py +0 -0
  71. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gdata/apps/__init__.py +0 -0
  72. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gdata/apps/audit/__init__.py +0 -0
  73. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gdata/apps/audit/service.py +0 -0
  74. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  75. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gdata/apps/contacts/service.py +0 -0
  76. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gdata/apps/service.py +0 -0
  77. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gdata/service.py +0 -0
  78. {gam7-7.6.6 → gam7-7.6.9}/src/gam/gdata/urlfetch.py +0 -0
  79. {gam7-7.6.6 → gam7-7.6.9}/src/gam/googleapiclient/__init__.py +0 -0
  80. {gam7-7.6.6 → gam7-7.6.9}/src/gam/googleapiclient/_auth.py +0 -0
  81. {gam7-7.6.6 → gam7-7.6.9}/src/gam/googleapiclient/_helpers.py +0 -0
  82. {gam7-7.6.6 → gam7-7.6.9}/src/gam/googleapiclient/channel.py +0 -0
  83. {gam7-7.6.6 → gam7-7.6.9}/src/gam/googleapiclient/discovery.py +0 -0
  84. {gam7-7.6.6 → gam7-7.6.9}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
  85. {gam7-7.6.6 → gam7-7.6.9}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
  86. {gam7-7.6.6 → gam7-7.6.9}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
  87. {gam7-7.6.6 → gam7-7.6.9}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
  88. {gam7-7.6.6 → gam7-7.6.9}/src/gam/googleapiclient/errors.py +0 -0
  89. {gam7-7.6.6 → gam7-7.6.9}/src/gam/googleapiclient/http.py +0 -0
  90. {gam7-7.6.6 → gam7-7.6.9}/src/gam/googleapiclient/mimeparse.py +0 -0
  91. {gam7-7.6.6 → gam7-7.6.9}/src/gam/googleapiclient/model.py +0 -0
  92. {gam7-7.6.6 → gam7-7.6.9}/src/gam/googleapiclient/schema.py +0 -0
  93. {gam7-7.6.6 → gam7-7.6.9}/src/gam/googleapiclient/version.py +0 -0
  94. {gam7-7.6.6 → gam7-7.6.9}/src/gam/iso8601/__init__.py +0 -0
  95. {gam7-7.6.6 → gam7-7.6.9}/src/gam/iso8601/iso8601.py +0 -0
  96. {gam7-7.6.6 → gam7-7.6.9}/src/gam/meet-v2beta.json +0 -0
  97. {gam7-7.6.6 → gam7-7.6.9}/src/gam/serviceaccountlookup-v1.json +0 -0
  98. {gam7-7.6.6 → gam7-7.6.9}/src/gam/six.py +0 -0
  99. {gam7-7.6.6 → gam7-7.6.9}/src/gam-setup.bat +0 -0
  100. {gam7-7.6.6 → gam7-7.6.9}/src/gam.exe.manifest +0 -0
  101. {gam7-7.6.6 → gam7-7.6.9}/src/gam.py +0 -0
  102. {gam7-7.6.6 → gam7-7.6.9}/src/gam.spec +0 -0
  103. {gam7-7.6.6 → gam7-7.6.9}/src/gam.wxs +0 -0
  104. {gam7-7.6.6 → gam7-7.6.9}/src/license.rtf +0 -0
  105. {gam7-7.6.6 → gam7-7.6.9}/src/requirements-dev.txt +0 -0
  106. {gam7-7.6.6 → gam7-7.6.9}/src/setup.py +0 -0
  107. {gam7-7.6.6 → gam7-7.6.9}/src/tools/a_atleast_b.py +0 -0
  108. {gam7-7.6.6 → gam7-7.6.9}/src/tools/gen-wix-xml-filelist.py +0 -0
  109. {gam7-7.6.6 → gam7-7.6.9}/src/tools/mkGamRef.py +0 -0
  110. {gam7-7.6.6 → gam7-7.6.9}/src/tools/openssl.props +0 -0
  111. {gam7-7.6.6 → gam7-7.6.9}/src/version_info.txt.in +0 -0
  112. {gam7-7.6.6 → gam7-7.6.9}/wiki/00scratch.md +0 -0
  113. {gam7-7.6.6 → gam7-7.6.9}/wiki/Addresses.md +0 -0
  114. {gam7-7.6.6 → gam7-7.6.9}/wiki/Administrators.md +0 -0
  115. {gam7-7.6.6 → gam7-7.6.9}/wiki/Alert-Center.md +0 -0
  116. {gam7-7.6.6 → gam7-7.6.9}/wiki/Aliases.md +0 -0
  117. {gam7-7.6.6 → gam7-7.6.9}/wiki/Authorization.md +0 -0
  118. {gam7-7.6.6 → gam7-7.6.9}/wiki/BNF-Syntax.md +0 -0
  119. {gam7-7.6.6 → gam7-7.6.9}/wiki/Basic-Items.md +0 -0
  120. {gam7-7.6.6 → gam7-7.6.9}/wiki/Bulk-Processing.md +0 -0
  121. {gam7-7.6.6 → gam7-7.6.9}/wiki/CSV-Input-Filtering.md +0 -0
  122. {gam7-7.6.6 → gam7-7.6.9}/wiki/CSV-Output-Filtering.md +0 -0
  123. {gam7-7.6.6 → gam7-7.6.9}/wiki/CSV-Special-Characters.md +0 -0
  124. {gam7-7.6.6 → gam7-7.6.9}/wiki/Calendars-Access.md +0 -0
  125. {gam7-7.6.6 → gam7-7.6.9}/wiki/Calendars-Events.md +0 -0
  126. {gam7-7.6.6 → gam7-7.6.9}/wiki/Calendars.md +0 -0
  127. {gam7-7.6.6 → gam7-7.6.9}/wiki/Chat-Bot.md +0 -0
  128. {gam7-7.6.6 → gam7-7.6.9}/wiki/Chrome-AUE-Counts.md +0 -0
  129. {gam7-7.6.6 → gam7-7.6.9}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
  130. {gam7-7.6.6 → gam7-7.6.9}/wiki/Chrome-Installed-Apps.md +0 -0
  131. {gam7-7.6.6 → gam7-7.6.9}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
  132. {gam7-7.6.6 → gam7-7.6.9}/wiki/Chrome-Policies.md +0 -0
  133. {gam7-7.6.6 → gam7-7.6.9}/wiki/Chrome-Printers.md +0 -0
  134. {gam7-7.6.6 → gam7-7.6.9}/wiki/Chrome-Profile-Management.md +0 -0
  135. {gam7-7.6.6 → gam7-7.6.9}/wiki/Chrome-Version-Counts.md +0 -0
  136. {gam7-7.6.6 → gam7-7.6.9}/wiki/Chrome-Version-History.md +0 -0
  137. {gam7-7.6.6 → gam7-7.6.9}/wiki/ChromeOS-Devices.md +0 -0
  138. {gam7-7.6.6 → gam7-7.6.9}/wiki/Classroom-Courses.md +0 -0
  139. {gam7-7.6.6 → gam7-7.6.9}/wiki/Classroom-Guardians.md +0 -0
  140. {gam7-7.6.6 → gam7-7.6.9}/wiki/Classroom-Invitations.md +0 -0
  141. {gam7-7.6.6 → gam7-7.6.9}/wiki/Classroom-Membership.md +0 -0
  142. {gam7-7.6.6 → gam7-7.6.9}/wiki/Cloud-Channel.md +0 -0
  143. {gam7-7.6.6 → gam7-7.6.9}/wiki/Cloud-Identity-Devices.md +0 -0
  144. {gam7-7.6.6 → gam7-7.6.9}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
  145. {gam7-7.6.6 → gam7-7.6.9}/wiki/Cloud-Identity-Groups.md +0 -0
  146. {gam7-7.6.6 → gam7-7.6.9}/wiki/Cloud-Identity-Policies.md +0 -0
  147. {gam7-7.6.6 → gam7-7.6.9}/wiki/Cloud-Storage.md +0 -0
  148. {gam7-7.6.6 → gam7-7.6.9}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
  149. {gam7-7.6.6 → gam7-7.6.9}/wiki/Collections-of-Items.md +0 -0
  150. {gam7-7.6.6 → gam7-7.6.9}/wiki/Collections-of-Users.md +0 -0
  151. {gam7-7.6.6 → gam7-7.6.9}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
  152. {gam7-7.6.6 → gam7-7.6.9}/wiki/Command-Line-Parsing.md +0 -0
  153. {gam7-7.6.6 → gam7-7.6.9}/wiki/Command-Logging-Progress.md +0 -0
  154. {gam7-7.6.6 → gam7-7.6.9}/wiki/Context-Aware-Access-Levels.md +0 -0
  155. {gam7-7.6.6 → gam7-7.6.9}/wiki/Customer.md +0 -0
  156. {gam7-7.6.6 → gam7-7.6.9}/wiki/Domain-People-Contacts-Profiles.md +0 -0
  157. {gam7-7.6.6 → gam7-7.6.9}/wiki/Domain-SharedContacts-GAL.md +0 -0
  158. {gam7-7.6.6 → gam7-7.6.9}/wiki/Domains-Verification.md +0 -0
  159. {gam7-7.6.6 → gam7-7.6.9}/wiki/Domains.md +0 -0
  160. {gam7-7.6.6 → gam7-7.6.9}/wiki/Drive-File-Selection.md +0 -0
  161. {gam7-7.6.6 → gam7-7.6.9}/wiki/Drive-Items.md +0 -0
  162. {gam7-7.6.6 → gam7-7.6.9}/wiki/Drive-REST-API-v3.md +0 -0
  163. {gam7-7.6.6 → gam7-7.6.9}/wiki/Email-Audit-Monitor.md +0 -0
  164. {gam7-7.6.6 → gam7-7.6.9}/wiki/Find-File-Owner.md +0 -0
  165. {gam7-7.6.6 → gam7-7.6.9}/wiki/GAM-Public-Chat-Room.md +0 -0
  166. {gam7-7.6.6 → gam7-7.6.9}/wiki/GAM-Return-Codes.md +0 -0
  167. {gam7-7.6.6 → gam7-7.6.9}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
  168. {gam7-7.6.6 → gam7-7.6.9}/wiki/GAM7-on-Android-Devices.md +0 -0
  169. {gam7-7.6.6 → gam7-7.6.9}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
  170. {gam7-7.6.6 → gam7-7.6.9}/wiki/Google-Data-Transfers.md +0 -0
  171. {gam7-7.6.6 → gam7-7.6.9}/wiki/Google-Network-Addresses.md +0 -0
  172. {gam7-7.6.6 → gam7-7.6.9}/wiki/Groups-Membership.md +0 -0
  173. {gam7-7.6.6 → gam7-7.6.9}/wiki/Groups.md +0 -0
  174. {gam7-7.6.6 → gam7-7.6.9}/wiki/HTTPS-Proxy.md +0 -0
  175. {gam7-7.6.6 → gam7-7.6.9}/wiki/Home.md +0 -0
  176. {gam7-7.6.6 → gam7-7.6.9}/wiki/How-to-Install-GAM7.md +0 -0
  177. {gam7-7.6.6 → gam7-7.6.9}/wiki/How-to-Uninstall-GAM7.md +0 -0
  178. {gam7-7.6.6 → gam7-7.6.9}/wiki/How-to-Update-GAM7.md +0 -0
  179. {gam7-7.6.6 → gam7-7.6.9}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
  180. {gam7-7.6.6 → gam7-7.6.9}/wiki/Inbound-SSO.md +0 -0
  181. {gam7-7.6.6 → gam7-7.6.9}/wiki/Install-GAM-as-Python-Library.md +0 -0
  182. {gam7-7.6.6 → gam7-7.6.9}/wiki/Licenses.md +0 -0
  183. {gam7-7.6.6 → gam7-7.6.9}/wiki/List-Items.md +0 -0
  184. {gam7-7.6.6 → gam7-7.6.9}/wiki/List.md +0 -0
  185. {gam7-7.6.6 → gam7-7.6.9}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
  186. {gam7-7.6.6 → gam7-7.6.9}/wiki/Mobile-Devices.md +0 -0
  187. {gam7-7.6.6 → gam7-7.6.9}/wiki/Organizational-Units.md +0 -0
  188. {gam7-7.6.6 → gam7-7.6.9}/wiki/Other-Resources.md +0 -0
  189. {gam7-7.6.6 → gam7-7.6.9}/wiki/Permission-Matches.md +0 -0
  190. {gam7-7.6.6 → gam7-7.6.9}/wiki/Python-Regular-Expressions.md +0 -0
  191. {gam7-7.6.6 → gam7-7.6.9}/wiki/README.md +0 -0
  192. {gam7-7.6.6 → gam7-7.6.9}/wiki/Rclone.md +0 -0
  193. {gam7-7.6.6 → gam7-7.6.9}/wiki/Reports.md +0 -0
  194. {gam7-7.6.6 → gam7-7.6.9}/wiki/Reseller.md +0 -0
  195. {gam7-7.6.6 → gam7-7.6.9}/wiki/Resources.md +0 -0
  196. {gam7-7.6.6 → gam7-7.6.9}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
  197. {gam7-7.6.6 → gam7-7.6.9}/wiki/SSL-Root-CA-Certificates.md +0 -0
  198. {gam7-7.6.6 → gam7-7.6.9}/wiki/Schemas.md +0 -0
  199. {gam7-7.6.6 → gam7-7.6.9}/wiki/Scripts.md +0 -0
  200. {gam7-7.6.6 → gam7-7.6.9}/wiki/Send-Email.md +0 -0
  201. {gam7-7.6.6 → gam7-7.6.9}/wiki/Shared-Drives.md +0 -0
  202. {gam7-7.6.6 → gam7-7.6.9}/wiki/Sites.md +0 -0
  203. {gam7-7.6.6 → gam7-7.6.9}/wiki/Tag-Replace.md +0 -0
  204. {gam7-7.6.6 → gam7-7.6.9}/wiki/Todrive.md +0 -0
  205. {gam7-7.6.6 → gam7-7.6.9}/wiki/Unmanaged-Accounts.md +0 -0
  206. {gam7-7.6.6 → gam7-7.6.9}/wiki/Upgrade-Benefits.md +0 -0
  207. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Analytics-Admin.md +0 -0
  208. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Application-Specific-Passwords.md +0 -0
  209. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Backup-Verification-Codes.md +0 -0
  210. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Calendars-Access.md +0 -0
  211. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Calendars-Events.md +0 -0
  212. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Calendars.md +0 -0
  213. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Chat.md +0 -0
  214. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Classification-Labels.md +0 -0
  215. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Classroom-Profile.md +0 -0
  216. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Contacts-Delegates.md +0 -0
  217. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Contacts.md +0 -0
  218. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Deprovision.md +0 -0
  219. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Drive-Activity-Settings.md +0 -0
  220. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Drive-Cleanup.md +0 -0
  221. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Drive-Comments.md +0 -0
  222. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Drive-Copy-Move.md +0 -0
  223. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Drive-Files-Display.md +0 -0
  224. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Drive-Files-Manage.md +0 -0
  225. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Drive-Orphans.md +0 -0
  226. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Drive-Ownership.md +0 -0
  227. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Drive-Permissions.md +0 -0
  228. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Drive-Query.md +0 -0
  229. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Drive-Revisions.md +0 -0
  230. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Drive-Shortcuts.md +0 -0
  231. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Drive-Transfer.md +0 -0
  232. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Forms.md +0 -0
  233. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Gmail-CSE.md +0 -0
  234. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Gmail-Delegates.md +0 -0
  235. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Gmail-Filters.md +0 -0
  236. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Gmail-Forwarding.md +0 -0
  237. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Gmail-Labels.md +0 -0
  238. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Gmail-Messages-Threads.md +0 -0
  239. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Gmail-Profile.md +0 -0
  240. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Gmail-S-MIME.md +0 -0
  241. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
  242. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Gmail-Settings.md +0 -0
  243. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Group-Membership.md +0 -0
  244. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Keep-Notes.md +0 -0
  245. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Looker-Studio.md +0 -0
  246. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Meet.md +0 -0
  247. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-People-Contacts-Profiles.md +0 -0
  248. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Photo.md +0 -0
  249. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Profile-Photo.md +0 -0
  250. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Profile-Sharing.md +0 -0
  251. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Shared-Drives.md +0 -0
  252. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Signout-Turnoff2SV.md +0 -0
  253. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Spreadsheets.md +0 -0
  254. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Tasks.md +0 -0
  255. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-Tokens.md +0 -0
  256. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users-YouTube.md +0 -0
  257. {gam7-7.6.6 → gam7-7.6.9}/wiki/Users.md +0 -0
  258. {gam7-7.6.6 → gam7-7.6.9}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
  259. {gam7-7.6.6 → gam7-7.6.9}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
  260. {gam7-7.6.6 → gam7-7.6.9}/wiki/Vault-Takeout.md +0 -0
  261. {gam7-7.6.6 → gam7-7.6.9}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
  262. {gam7-7.6.6 → gam7-7.6.9}/wiki/_Sidebar.md +0 -0
  263. {gam7-7.6.6 → gam7-7.6.9}/wiki/gam.cfg.md +0 -0
  264. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-AdminSettingsExamples.md +0 -0
  265. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Android-Installation.md +0 -0
  266. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-BulkOperations.md +0 -0
  267. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-CalendarExamples.md +0 -0
  268. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Chat-Bot.md +0 -0
  269. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Chrome-Browser-Management.md +0 -0
  270. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Chrome-OS-Installation.md +0 -0
  271. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Chrome-Policy-Settings.md +0 -0
  272. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Cloud-Identity-Groups.md +0 -0
  273. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
  274. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Command-Reference-Calendars.md +0 -0
  275. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Command-Reference-Definitions.md +0 -0
  276. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Command-Reference-Drive.md +0 -0
  277. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Command-Reference-Email.md +0 -0
  278. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
  279. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Command-Reference-Groups.md +0 -0
  280. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Command-Reference-Users.md +0 -0
  281. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Context-Aware-Access-Levels.md +0 -0
  282. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
  283. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-CreatingClientSecretsFile.md +0 -0
  284. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Custom-Schemas.md +0 -0
  285. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Data-Transfers.md +0 -0
  286. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-DomainVerification.md +0 -0
  287. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-ExamplesAccountAuditing.md +0 -0
  288. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-ExamplesCSV.md +0 -0
  289. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-ExamplesEmailSettings.md +0 -0
  290. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-ExamplesOrganizations.md +0 -0
  291. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-GAM-Discussion-Group.md +0 -0
  292. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
  293. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-GAM-options-files.md +0 -0
  294. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
  295. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-GAM3CSVListings.md +0 -0
  296. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-GAM3DirectoryCommands.md +0 -0
  297. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-GAM3GroupSettings.md +0 -0
  298. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-GAM7-FAQ.md +0 -0
  299. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
  300. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-GoogleDriveManagement.md +0 -0
  301. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
  302. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Home.md +0 -0
  303. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
  304. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Inbound-SSO-Settings.md +0 -0
  305. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-LicenseExamples.md +0 -0
  306. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Managing-Admins.md +0 -0
  307. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
  308. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Managing-Devices.md +0 -0
  309. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Managing-Google-Classroom.md +0 -0
  310. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-OAuthKeyManagement.md +0 -0
  311. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Printers.md +0 -0
  312. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-ResellerCommands.md +0 -0
  313. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
  314. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-SecurityExamples.md +0 -0
  315. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-UnmanagedUsersExamples.md +0 -0
  316. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Use-a-Yubikey.md +0 -0
  317. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
  318. {gam7-7.6.6 → gam7-7.6.9}/wiki/l-_Footer.md +0 -0
@@ -124,7 +124,7 @@ jobs:
124
124
  with:
125
125
  path: |
126
126
  cache.tar.xz
127
- key: gam-${{ matrix.jid }}-20250408-01
127
+ key: gam-${{ matrix.jid }}-20250422
128
128
 
129
129
  - name: Untar Cache archive
130
130
  if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit == 'true'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.6.6
3
+ Version: 7.6.9
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
@@ -30,6 +30,7 @@ Requires-Dist: httplib2>=0.17.0
30
30
  Requires-Dist: lxml
31
31
  Requires-Dist: passlib>=1.7.2
32
32
  Requires-Dist: pathvalidate
33
+ Requires-Dist: pyscard==2.2.1
33
34
  Requires-Dist: python-dateutil
34
35
  Provides-Extra: yubikey
35
36
  Requires-Dist: yubikey-manager>=5.0; extra == 'yubikey'
@@ -20,6 +20,7 @@ dependencies = [
20
20
  "lxml",
21
21
  "passlib>=1.7.2",
22
22
  "pathvalidate",
23
+ "pyscard==2.2.1",
23
24
  "python-dateutil",
24
25
  ]
25
26
  description = "CLI tool to manage Google Workspace"
@@ -1,7 +1,24 @@
1
+ 7.06.08
2
+
3
+ Fixed problem where Yubikeys caused a trap.
4
+
5
+ 7.06.07
6
+
7
+ Updated private key rotation progress messages in `gam create|use|update project`
8
+ and `gam upload sakey`.
9
+
10
+ Updated `gam use project` to display the following error message when the specifed project
11
+ already has a service account.
12
+ ```
13
+ Re-run the command specify a new service account name with: saname <ServiceAccountName>'
14
+ ```
15
+
1
16
  7.06.06
2
17
 
3
18
  Native support for Windows 11 Arm-based devices.
4
19
 
20
+ Renamed some MacOS and Linux binary installer files to align on terminology. Everything is "arm64" now, no "aarch64".
21
+
5
22
  7.06.05
6
23
 
7
24
  Updated code in `gam delete|update chromepolicy` to handle the `policyTargetKey[additionalTargetKeys]`
@@ -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.06'
28
+ __version__ = '7.06.09'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -11384,25 +11384,26 @@ def _waitForSvcAcctCompletion(i):
11384
11384
  sys.stdout.write(Msg.WAITING_FOR_ITEM_CREATION_TO_COMPLETE_SLEEPING.format(Ent.Singular(Ent.SVCACCT), sleep_time))
11385
11385
  time.sleep(sleep_time)
11386
11386
 
11387
- def _grantRotateRights(iam, projectId, service_account, email, account_type='serviceAccount'):
11387
+ def _grantRotateRights(iam, projectId, service_account, account_type='serviceAccount'):
11388
11388
  body = {'policy': {'bindings': [{'role': 'roles/iam.serviceAccountKeyAdmin',
11389
- 'members': [f'{account_type}:{email}']}]}}
11389
+ 'members': [f'{account_type}:{service_account}']}]}}
11390
11390
  maxRetries = 10
11391
- printEntityMessage([Ent.PROJECT, projectId, Ent.SVCACCT, email],
11392
- Msg.HAS_RIGHTS_TO_ROTATE_OWN_PRIVATE_KEY.format(email, service_account))
11391
+ kvList = [Ent.PROJECT, projectId, Ent.SVCACCT, service_account]
11392
+ printEntityMessage(kvList, Msg.GRANTING_RIGHTS_TO_ROTATE_ITS_OWN_PRIVATE_KEY.format('Granting'))
11393
11393
  for retry in range(1, maxRetries+1):
11394
11394
  try:
11395
11395
  callGAPI(iam.projects().serviceAccounts(), 'setIamPolicy',
11396
11396
  throwReasons=[GAPI.INVALID_ARGUMENT],
11397
11397
  resource=f'projects/{projectId}/serviceAccounts/{service_account}', body=body)
11398
+ printEntityMessage(kvList, Msg.GRANTING_RIGHTS_TO_ROTATE_ITS_OWN_PRIVATE_KEY.format('Granted'))
11398
11399
  return True
11399
11400
  except GAPI.invalidArgument as e:
11400
- entityActionFailedWarning([Ent.PROJECT, projectId, Ent.SVCACCT, service_account], str(e))
11401
+ entityActionFailedWarning(kvList, str(e))
11401
11402
  if 'does not exist' not in str(e) or retry == maxRetries:
11402
11403
  return False
11403
11404
  _waitForSvcAcctCompletion(retry)
11404
11405
  except Exception as e:
11405
- entityActionFailedWarning([Ent.PROJECT, projectId, Ent.SVCACCT, service_account], str(e))
11406
+ entityActionFailedWarning(kvList, str(e))
11406
11407
  return False
11407
11408
 
11408
11409
  def _createOauth2serviceJSON(httpObj, projectInfo, svcAcctInfo, create_key=True):
@@ -11420,6 +11421,7 @@ def _createOauth2serviceJSON(httpObj, projectInfo, svcAcctInfo, create_key=True)
11420
11421
  return False
11421
11422
  except GAPI.alreadyExists as e:
11422
11423
  entityActionFailedWarning([Ent.PROJECT, projectInfo['projectId'], Ent.SVCACCT, svcAcctInfo['name']], str(e))
11424
+ writeStderr(Msg.RERUN_THE_COMMAND_AND_SPECIFY_A_NEW_SANAME)
11423
11425
  return False
11424
11426
  GM.Globals[GM.SVCACCT_SCOPES_DEFINED] = False
11425
11427
  if create_key and not doProcessSvcAcctKeys(mode='retainexisting', iam=iam,
@@ -11428,7 +11430,7 @@ def _createOauth2serviceJSON(httpObj, projectInfo, svcAcctInfo, create_key=True)
11428
11430
  clientId=service_account['uniqueId']):
11429
11431
  return False
11430
11432
  sa_email = service_account['name'].rsplit('/', 1)[-1]
11431
- return _grantRotateRights(iam, projectInfo['projectId'], sa_email, sa_email)
11433
+ return _grantRotateRights(iam, projectInfo['projectId'], sa_email)
11432
11434
 
11433
11435
  def _createClientSecretsOauth2service(httpObj, login_hint, appInfo, projectInfo, svcAcctInfo, create_key=True):
11434
11436
  def _checkClientAndSecret(csHttpObj, client_id, client_secret):
@@ -11921,9 +11923,7 @@ def doUpdateProject():
11921
11923
  continue
11922
11924
  iam = getAPIService(API.IAM, httpObj)
11923
11925
  _getSvcAcctData() # needed to read in GM.OAUTH2SERVICE_JSON_DATA
11924
- _grantRotateRights(iam, projectId,
11925
- GM.Globals[GM.OAUTH2SERVICE_JSON_DATA]['client_email'],
11926
- GM.Globals[GM.OAUTH2SERVICE_JSON_DATA]['client_email'])
11926
+ _grantRotateRights(iam, projectId, GM.Globals[GM.OAUTH2SERVICE_JSON_DATA]['client_email'])
11927
11927
  Ind.Decrement()
11928
11928
 
11929
11929
  # gam delete project [[admin] <EmailAddress>] [<ProjectIDEntity>]
@@ -12786,7 +12786,7 @@ def doUploadSvcAcctKeys():
12786
12786
  iam = getAPIService(API.IAM, httpObj)
12787
12787
  if doProcessSvcAcctKeys(mode='upload', iam=iam):
12788
12788
  sa_email = GM.Globals[GM.OAUTH2SERVICE_JSON_DATA]['client_email']
12789
- _grantRotateRights(iam, GM.Globals[GM.OAUTH2SERVICE_JSON_DATA]['project_id'], sa_email, sa_email)
12789
+ _grantRotateRights(iam, GM.Globals[GM.OAUTH2SERVICE_JSON_DATA]['project_id'], sa_email)
12790
12790
  sys.stdout.write(Msg.YOUR_GAM_PROJECT_IS_CREATED_AND_READY_TO_USE)
12791
12791
 
12792
12792
  # gam delete sakeys <ServiceAccountKeyList>
@@ -13491,6 +13491,8 @@ REPORT_CHOICE_MAP = {
13491
13491
  'drive': 'drive',
13492
13492
  'enterprisegroups': 'groups_enterprise',
13493
13493
  'gcp': 'gcp',
13494
+ 'gemini': 'gemini_for_workspace',
13495
+ 'geminiforworkspace': 'gemini_for_workspace',
13494
13496
  'gplus': 'gplus',
13495
13497
  'google+': 'gplus',
13496
13498
  'group': 'groups',
@@ -13788,6 +13790,20 @@ def doReport():
13788
13790
  csvPF.WriteRow(row)
13789
13791
  return (True, lastDate)
13790
13792
 
13793
+ # dynamically extend our choices with other reports Google dynamically adds
13794
+ rep = buildGAPIObject(API.REPORTS)
13795
+ dyn_choices = rep._rootDesc \
13796
+ .get('resources', {}) \
13797
+ .get('activities', {}) \
13798
+ .get('methods', {}) \
13799
+ .get('list', {}) \
13800
+ .get('parameters', {}) \
13801
+ .get('applicationName', {}) \
13802
+ .get('enum', [])
13803
+ for dyn_choice in dyn_choices:
13804
+ if dyn_choice.replace('_', '') not in REPORT_CHOICE_MAP and \
13805
+ dyn_choice not in REPORT_CHOICE_MAP.values():
13806
+ REPORT_CHOICE_MAP[dyn_choice.replace('_', '')] = dyn_choice
13791
13807
  report = getChoice(REPORT_CHOICE_MAP, mapChoice=True)
13792
13808
  if report == 'usage':
13793
13809
  doReportUsage()
@@ -13795,7 +13811,6 @@ def doReport():
13795
13811
  if report == 'usageparameters':
13796
13812
  doReportUsageParameters()
13797
13813
  return
13798
- rep = buildGAPIObject(API.REPORTS)
13799
13814
  customerId = GC.Values[GC.CUSTOMER_ID]
13800
13815
  if customerId == GC.MY_CUSTOMER:
13801
13816
  customerId = None
@@ -72,7 +72,7 @@ Please go to:
72
72
  24. Paste it at the "Enter your Client Secret: " prompt in your terminal
73
73
  25. Press return/enter in your terminal
74
74
  26. Switch back to the browser
75
- 27. Click "CANCEL"
75
+ 27. Click "OK"
76
76
  28. These steps are complete
77
77
  '''
78
78
  ENTER_YOUR_CLIENT_ID = '\nEnter your Client ID: '
@@ -287,6 +287,7 @@ GAM_OUT_OF_MEMORY = 'GAM has run out of memory. If this is a large Google Worksp
287
287
  GENERATING_NEW_PRIVATE_KEY = 'Generating new private key'
288
288
  GETTING = 'Getting'
289
289
  GETTING_ALL = 'Getting all'
290
+ GRANTING_RIGHTS_TO_ROTATE_ITS_OWN_PRIVATE_KEY = '{0} rights to rotate its own private key'
290
291
  GOOGLE_DELEGATION_ERROR = 'Google delegation error, delegator and delegate both exist and are valid for delegation'
291
292
  GOT = 'Got'
292
293
  GROUP_MAPS_TO_MULTIPLE_OUS = 'File: {0}, Group: {1} references multiple OUs: {2}'
@@ -294,13 +295,12 @@ GROUP_MAPS_TO_OU_INVALID_ROW = 'File: {0}, Invalid row, must contain non-blank <
294
295
  GUARDIAN_INVITATION_STATUS_NOT_PENDING = 'Guardian invitation status is not PENDING'
295
296
  HAS_CHILD_ORGS = 'Has child {0}'
296
297
  HAS_INVALID_FORMAT = '{0}: {1}, Has invalid format'
297
- HAS_RIGHTS_TO_ROTATE_OWN_PRIVATE_KEY = 'Giving account {0} rights to rotate {1} private key'
298
298
  HEADER_NOT_FOUND_IN_CSV_HEADERS = 'Header "{0}" not found in CSV headers of "{1}".'
299
299
  HELP_SYNTAX = 'Help: Syntax in file {0}\n'
300
300
  HELP_WIKI = 'Help: Documentation is at {0}\n'
301
301
  IGNORED = 'Ignored'
302
302
  INSTRUCTIONS_CLIENT_SECRETS_JSON = 'Please run\n\ngam create|use project\ngam oauth create\n\nto create and authorize a Client account.\n'
303
- INSTRUCTIONS_OAUTH2SERVICE_JSON = 'Please run\n\ngam create|use project\ngam user <user> check serviceaccount\n\nto create and authorize a Service account.\n'
303
+ INSTRUCTIONS_OAUTH2SERVICE_JSON = 'Please run\n\ngam create|use project\ngam user <user> update serviceaccount\n\nto create and authorize a Service account.\n'
304
304
  INSUFFICIENT_PERMISSIONS_TO_PERFORM_TASK = 'Insufficient permissions to perform this task'
305
305
  INTER_BATCH_WAIT_INCREASED = 'inter_batch_wait increased to {0:.2f}'
306
306
  INVALID = 'Invalid'
@@ -468,6 +468,10 @@ REFUSING_TO_DEPROVISION_DEVICES = 'Refusing to deprovision {0} devices because a
468
468
  REPLY_TO_CUSTOM_REQUIRES_EMAIL_ADDRESS = 'replyto REPLY_TO_CUSTOM requires customReplyTo <EmailAddress>'
469
469
  REQUEST_COMPLETED_NO_FILES = 'Request completed but no results/files were returned, try requesting again'
470
470
  REQUEST_NOT_COMPLETE = 'Request needs to be completed before downloading, current status is: {0}'
471
+ RERUN_THE_COMMAND_AND_SPECIFY_A_NEW_SANAME = """
472
+ Re-run the command specify a new service account name with: saname <ServiceAccountName>
473
+ See: https://github.com/GAM-team/GAM/wiki/Authorization#advanced-use
474
+ """
471
475
  RESOURCE_CAPACITY_FLOOR_REQUIRED = 'Options "capacity <Number>" (<Number> > 0) and "floor <String>" required'
472
476
  RESOURCE_FLOOR_REQUIRED = 'Option "floor <String>" required'
473
477
  RESULTS_TOO_LARGE_FOR_GOOGLE_SPREADSHEET = 'Results are too large for Google Spreadsheets. Uploading as a regular CSV file.'
@@ -8,7 +8,7 @@ GAM installation script.
8
8
  OPTIONS:
9
9
  -h show help.
10
10
  -d Directory where gam folder will be installed. Default is \$HOME/bin/
11
- -a Architecture to install (i386, x86_64, x86_64_legacy, arm, arm64). Default is to detect your arch with "uname -m".
11
+ -a Architecture to install (x86_64, arm64). Default is to detect your arch with "uname -m".
12
12
  -o OS we are running (linux, macos). Default is to detect your OS with "uname -s".
13
13
  -b OS version. Default is to detect on MacOS and Linux.
14
14
  -l Just upgrade GAM to latest version. Skips project creation and auth.
@@ -10,5 +10,6 @@ httplib2>=0.22.0
10
10
  lxml
11
11
  passlib>=1.7.4
12
12
  pathvalidate
13
+ pyscard==2.2.1
13
14
  python-dateutil
14
15
  yubikey-manager[yubikey]>=5.6.1
@@ -35,6 +35,7 @@ install_requires =
35
35
  lxml
36
36
  passlib >= 1.7.4
37
37
  pathvalidate
38
+ pyscard==2.2.1
38
39
  python-dateutil
39
40
  yubikey-manager >= 5.0
40
41
 
@@ -24,18 +24,19 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
24
24
  - Start a terminal session.
25
25
 
26
26
  * Executable Archive, Manual, Raspberry Pi/ChromeOS ARM devices
27
- - `gam-7.wx.yz-linux-aarch64-glibc2.35.tar.xz`
28
- - `gam-7.wx.yz-linux-aarch64-legacy.tar.xz`
27
+ - `gam-7.wx.yz-linux-arm64-glibc2.35.tar.xz`
28
+ - `gam-7.wx.yz-linux-arm64-glibc2.39.tar.xz`
29
+ - `gam-7.wx.yz-linux-arm64-legacy.tar.xz`
29
30
  - Download the archive, extract the contents into some directory.
30
31
  - Start a terminal session.
31
32
 
32
33
  * Executable Archive, Manual, Mac OS versions Sonoma, Sequoia - M1/M2
33
- - `gam-7.wx.yz-macos14.7-aarch64.tar.xz`
34
+ - `gam-7.wx.yz-macos14.7-arm64.tar.xz`
34
35
  - Download the archive, extract the contents into some directory.
35
36
  - Start a terminal session.
36
37
 
37
38
  * Executable Archive, Manual, Mac OS versions Sequoia - M3
38
- - `gam-7.wx.yz-macos15.2-aarch64.tar.xz`
39
+ - `gam-7.wx.yz-macos15.4-arm64.tar.xz`
39
40
  - Download the archive, extract the contents into some directory.
40
41
  - Start a terminal session.
41
42
 
@@ -54,6 +55,16 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
54
55
  - Download the installer and run it.
55
56
  - Start a Command Prompt/PowerShell session.
56
57
 
58
+ * Executable Archive, Manual, Windows 11 ARM
59
+ - `gam-7.wx.yz-windows-arm64.zip`
60
+ - Download the archive, extract the contents into some directory.
61
+ - Start a Command Prompt/PowerShell session.
62
+
63
+ * Executable Installer, Manual, Windows 11 ARM
64
+ - `gam-7.wx.yz-windows-arm64.msi`
65
+ - Download the installer and run it.
66
+ - Start a Command Prompt/PowerShell session.
67
+
57
68
  * Source, all platforms
58
69
  - `Source code(zip)`
59
70
  - `Source code(tar.gz)`
@@ -10,6 +10,27 @@ 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.08
14
+
15
+ Fixed problem where Yubikeys caused a trap.
16
+
17
+ ### 7.06.07
18
+
19
+ Updated private key rotation progress messages in `gam create|use|update project`
20
+ and `gam upload sakey`.
21
+
22
+ Updated `gam use project` to display the following error message when the specifed project
23
+ already has a service account.
24
+ ```
25
+ Re-run the command specify a new service account name with: saname <ServiceAccountName>'
26
+ ```
27
+
28
+ ### 7.06.06
29
+
30
+ Native support for Windows 11 Arm-based devices.
31
+
32
+ Renamed some MacOS and Linux binary installer files to align on terminology. Everything is "arm64" now, no "aarch64".
33
+
13
34
  ### 7.06.05
14
35
 
15
36
  Updated code in `gam delete|update chromepolicy` to handle the `policyTargetKey[additionalTargetKeys]`
@@ -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.05 - https://github.com/GAM-team/GAM - pyinstaller
254
+ GAM 7.06.08 - 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.05 - https://github.com/GAM-team/GAM - pythonsource
992
+ GAM 7.06.08 - 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
@@ -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.05 - https://github.com/GAM-team/GAM - pyinstaller
7
+ GAM 7.06.08 - 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.05 - https://github.com/GAM-team/GAM - pyinstaller
19
+ GAM 7.06.08 - 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.05 - https://github.com/GAM-team/GAM - pyinstaller
31
+ GAM 7.06.08 - 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.05
68
+ Latest: 7.06.08
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.05
76
+ 7.06.08
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.05 - https://github.com/GAM-team/GAM
86
+ GAM 7.06.08 - 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
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