gam7 7.6.4__tar.gz → 7.6.6__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.6/.github/actions/decrypt.sh +19 -0
  2. {gam7-7.6.4 → gam7-7.6.6}/.github/workflows/build.yml +126 -180
  3. {gam7-7.6.4 → gam7-7.6.6}/PKG-INFO +1 -1
  4. {gam7-7.6.4 → gam7-7.6.6}/src/GamUpdate.txt +9 -0
  5. {gam7-7.6.4 → gam7-7.6.6}/src/gam/__init__.py +11 -9
  6. {gam7-7.6.4 → gam7-7.6.6}/src/gam-install.sh +11 -12
  7. {gam7-7.6.4 → gam7-7.6.6}/wiki/Authorization.md +5 -4
  8. {gam7-7.6.4 → gam7-7.6.6}/wiki/GamUpdates.md +5 -0
  9. {gam7-7.6.4 → gam7-7.6.6}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +3 -3
  10. {gam7-7.6.4 → gam7-7.6.6}/wiki/Meta-Commands-and-File-Redirection.md +1 -1
  11. {gam7-7.6.4 → gam7-7.6.6}/wiki/Shared-Drives.md +7 -0
  12. {gam7-7.6.4 → gam7-7.6.6}/wiki/Version-and-Help.md +10 -10
  13. gam7-7.6.4/.github/actions/creds.tar.xz.gpg +0 -0
  14. gam7-7.6.4/.github/actions/decrypt.sh +0 -38
  15. {gam7-7.6.4 → gam7-7.6.6}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  16. {gam7-7.6.4 → gam7-7.6.6}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  17. {gam7-7.6.4 → gam7-7.6.6}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  18. {gam7-7.6.4 → gam7-7.6.6}/.github/ISSUE_TEMPLATE.txt +0 -0
  19. {gam7-7.6.4 → gam7-7.6.6}/.github/actions/entitlements.plist +0 -0
  20. {gam7-7.6.4 → gam7-7.6.6}/.github/actions/package_exclusions.txt +0 -0
  21. {gam7-7.6.4 → gam7-7.6.6}/.github/stale.yml +0 -0
  22. {gam7-7.6.4 → gam7-7.6.6}/.github/workflows/codeql-analysis.yml +0 -0
  23. {gam7-7.6.4 → gam7-7.6.6}/.github/workflows/get-cacerts.yml +0 -0
  24. {gam7-7.6.4 → gam7-7.6.6}/.github/workflows/pushwiki.yml +0 -0
  25. {gam7-7.6.4 → gam7-7.6.6}/.github/workflows/pypi.yml +0 -0
  26. {gam7-7.6.4 → gam7-7.6.6}/.pre-commit-config.yaml +0 -0
  27. {gam7-7.6.4 → gam7-7.6.6}/LICENSE +0 -0
  28. {gam7-7.6.4 → gam7-7.6.6}/README.md +0 -0
  29. {gam7-7.6.4 → gam7-7.6.6}/pyproject.toml +0 -0
  30. {gam7-7.6.4 → gam7-7.6.6}/src/.gitignore +0 -0
  31. {gam7-7.6.4 → gam7-7.6.6}/src/GamCommands.txt +0 -0
  32. {gam7-7.6.4 → gam7-7.6.6}/src/LICENSE +0 -0
  33. {gam7-7.6.4 → gam7-7.6.6}/src/cacerts.pem +0 -0
  34. {gam7-7.6.4 → gam7-7.6.6}/src/callgam.py +0 -0
  35. {gam7-7.6.4 → gam7-7.6.6}/src/gam/__main__.py +0 -0
  36. {gam7-7.6.4 → gam7-7.6.6}/src/gam/atom/__init__.py +0 -0
  37. {gam7-7.6.4 → gam7-7.6.6}/src/gam/atom/auth.py +0 -0
  38. {gam7-7.6.4 → gam7-7.6.6}/src/gam/atom/client.py +0 -0
  39. {gam7-7.6.4 → gam7-7.6.6}/src/gam/atom/core.py +0 -0
  40. {gam7-7.6.4 → gam7-7.6.6}/src/gam/atom/data.py +0 -0
  41. {gam7-7.6.4 → gam7-7.6.6}/src/gam/atom/http.py +0 -0
  42. {gam7-7.6.4 → gam7-7.6.6}/src/gam/atom/http_core.py +0 -0
  43. {gam7-7.6.4 → gam7-7.6.6}/src/gam/atom/http_interface.py +0 -0
  44. {gam7-7.6.4 → gam7-7.6.6}/src/gam/atom/mock_http.py +0 -0
  45. {gam7-7.6.4 → gam7-7.6.6}/src/gam/atom/mock_http_core.py +0 -0
  46. {gam7-7.6.4 → gam7-7.6.6}/src/gam/atom/mock_service.py +0 -0
  47. {gam7-7.6.4 → gam7-7.6.6}/src/gam/atom/service.py +0 -0
  48. {gam7-7.6.4 → gam7-7.6.6}/src/gam/atom/token_store.py +0 -0
  49. {gam7-7.6.4 → gam7-7.6.6}/src/gam/atom/url.py +0 -0
  50. {gam7-7.6.4 → gam7-7.6.6}/src/gam/cacerts.pem +0 -0
  51. {gam7-7.6.4 → gam7-7.6.6}/src/gam/cbcm-v1.1beta1.json +0 -0
  52. {gam7-7.6.4 → gam7-7.6.6}/src/gam/contactdelegation-v1.json +0 -0
  53. {gam7-7.6.4 → gam7-7.6.6}/src/gam/datastudio-v1.json +0 -0
  54. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gamlib/__init__.py +0 -0
  55. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gamlib/glaction.py +0 -0
  56. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gamlib/glapi.py +0 -0
  57. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gamlib/glcfg.py +0 -0
  58. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gamlib/glclargs.py +0 -0
  59. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gamlib/glentity.py +0 -0
  60. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gamlib/glgapi.py +0 -0
  61. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gamlib/glgdata.py +0 -0
  62. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gamlib/glglobals.py +0 -0
  63. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gamlib/glindent.py +0 -0
  64. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gamlib/glmsgs.py +0 -0
  65. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gamlib/glskus.py +0 -0
  66. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gamlib/gluprop.py +0 -0
  67. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gamlib/glverlibs.py +0 -0
  68. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gamlib/yubikey.py +0 -0
  69. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gdata/__init__.py +0 -0
  70. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gdata/alt/__init__.py +0 -0
  71. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gdata/alt/app_engine.py +0 -0
  72. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gdata/alt/appengine.py +0 -0
  73. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gdata/apps/__init__.py +0 -0
  74. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gdata/apps/audit/__init__.py +0 -0
  75. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gdata/apps/audit/service.py +0 -0
  76. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  77. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gdata/apps/contacts/service.py +0 -0
  78. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gdata/apps/service.py +0 -0
  79. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gdata/service.py +0 -0
  80. {gam7-7.6.4 → gam7-7.6.6}/src/gam/gdata/urlfetch.py +0 -0
  81. {gam7-7.6.4 → gam7-7.6.6}/src/gam/googleapiclient/__init__.py +0 -0
  82. {gam7-7.6.4 → gam7-7.6.6}/src/gam/googleapiclient/_auth.py +0 -0
  83. {gam7-7.6.4 → gam7-7.6.6}/src/gam/googleapiclient/_helpers.py +0 -0
  84. {gam7-7.6.4 → gam7-7.6.6}/src/gam/googleapiclient/channel.py +0 -0
  85. {gam7-7.6.4 → gam7-7.6.6}/src/gam/googleapiclient/discovery.py +0 -0
  86. {gam7-7.6.4 → gam7-7.6.6}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
  87. {gam7-7.6.4 → gam7-7.6.6}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
  88. {gam7-7.6.4 → gam7-7.6.6}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
  89. {gam7-7.6.4 → gam7-7.6.6}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
  90. {gam7-7.6.4 → gam7-7.6.6}/src/gam/googleapiclient/errors.py +0 -0
  91. {gam7-7.6.4 → gam7-7.6.6}/src/gam/googleapiclient/http.py +0 -0
  92. {gam7-7.6.4 → gam7-7.6.6}/src/gam/googleapiclient/mimeparse.py +0 -0
  93. {gam7-7.6.4 → gam7-7.6.6}/src/gam/googleapiclient/model.py +0 -0
  94. {gam7-7.6.4 → gam7-7.6.6}/src/gam/googleapiclient/schema.py +0 -0
  95. {gam7-7.6.4 → gam7-7.6.6}/src/gam/googleapiclient/version.py +0 -0
  96. {gam7-7.6.4 → gam7-7.6.6}/src/gam/iso8601/__init__.py +0 -0
  97. {gam7-7.6.4 → gam7-7.6.6}/src/gam/iso8601/iso8601.py +0 -0
  98. {gam7-7.6.4 → gam7-7.6.6}/src/gam/meet-v2beta.json +0 -0
  99. {gam7-7.6.4 → gam7-7.6.6}/src/gam/serviceaccountlookup-v1.json +0 -0
  100. {gam7-7.6.4 → gam7-7.6.6}/src/gam/six.py +0 -0
  101. {gam7-7.6.4 → gam7-7.6.6}/src/gam-setup.bat +0 -0
  102. {gam7-7.6.4 → gam7-7.6.6}/src/gam.exe.manifest +0 -0
  103. {gam7-7.6.4 → gam7-7.6.6}/src/gam.py +0 -0
  104. {gam7-7.6.4 → gam7-7.6.6}/src/gam.spec +0 -0
  105. {gam7-7.6.4 → gam7-7.6.6}/src/gam.wxs +0 -0
  106. {gam7-7.6.4 → gam7-7.6.6}/src/license.rtf +0 -0
  107. {gam7-7.6.4 → gam7-7.6.6}/src/requirements-dev.txt +0 -0
  108. {gam7-7.6.4 → gam7-7.6.6}/src/requirements.txt +0 -0
  109. {gam7-7.6.4 → gam7-7.6.6}/src/setup.cfg +0 -0
  110. {gam7-7.6.4 → gam7-7.6.6}/src/setup.py +0 -0
  111. {gam7-7.6.4 → gam7-7.6.6}/src/tools/a_atleast_b.py +0 -0
  112. {gam7-7.6.4 → gam7-7.6.6}/src/tools/gen-wix-xml-filelist.py +0 -0
  113. {gam7-7.6.4 → gam7-7.6.6}/src/tools/mkGamRef.py +0 -0
  114. {gam7-7.6.4 → gam7-7.6.6}/src/tools/openssl.props +0 -0
  115. {gam7-7.6.4 → gam7-7.6.6}/src/version_info.txt.in +0 -0
  116. {gam7-7.6.4 → gam7-7.6.6}/wiki/00scratch.md +0 -0
  117. {gam7-7.6.4 → gam7-7.6.6}/wiki/Addresses.md +0 -0
  118. {gam7-7.6.4 → gam7-7.6.6}/wiki/Administrators.md +0 -0
  119. {gam7-7.6.4 → gam7-7.6.6}/wiki/Alert-Center.md +0 -0
  120. {gam7-7.6.4 → gam7-7.6.6}/wiki/Aliases.md +0 -0
  121. {gam7-7.6.4 → gam7-7.6.6}/wiki/BNF-Syntax.md +0 -0
  122. {gam7-7.6.4 → gam7-7.6.6}/wiki/Basic-Items.md +0 -0
  123. {gam7-7.6.4 → gam7-7.6.6}/wiki/Bulk-Processing.md +0 -0
  124. {gam7-7.6.4 → gam7-7.6.6}/wiki/CSV-Input-Filtering.md +0 -0
  125. {gam7-7.6.4 → gam7-7.6.6}/wiki/CSV-Output-Filtering.md +0 -0
  126. {gam7-7.6.4 → gam7-7.6.6}/wiki/CSV-Special-Characters.md +0 -0
  127. {gam7-7.6.4 → gam7-7.6.6}/wiki/Calendars-Access.md +0 -0
  128. {gam7-7.6.4 → gam7-7.6.6}/wiki/Calendars-Events.md +0 -0
  129. {gam7-7.6.4 → gam7-7.6.6}/wiki/Calendars.md +0 -0
  130. {gam7-7.6.4 → gam7-7.6.6}/wiki/Chat-Bot.md +0 -0
  131. {gam7-7.6.4 → gam7-7.6.6}/wiki/Chrome-AUE-Counts.md +0 -0
  132. {gam7-7.6.4 → gam7-7.6.6}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
  133. {gam7-7.6.4 → gam7-7.6.6}/wiki/Chrome-Installed-Apps.md +0 -0
  134. {gam7-7.6.4 → gam7-7.6.6}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
  135. {gam7-7.6.4 → gam7-7.6.6}/wiki/Chrome-Policies.md +0 -0
  136. {gam7-7.6.4 → gam7-7.6.6}/wiki/Chrome-Printers.md +0 -0
  137. {gam7-7.6.4 → gam7-7.6.6}/wiki/Chrome-Profile-Management.md +0 -0
  138. {gam7-7.6.4 → gam7-7.6.6}/wiki/Chrome-Version-Counts.md +0 -0
  139. {gam7-7.6.4 → gam7-7.6.6}/wiki/Chrome-Version-History.md +0 -0
  140. {gam7-7.6.4 → gam7-7.6.6}/wiki/ChromeOS-Devices.md +0 -0
  141. {gam7-7.6.4 → gam7-7.6.6}/wiki/Classroom-Courses.md +0 -0
  142. {gam7-7.6.4 → gam7-7.6.6}/wiki/Classroom-Guardians.md +0 -0
  143. {gam7-7.6.4 → gam7-7.6.6}/wiki/Classroom-Invitations.md +0 -0
  144. {gam7-7.6.4 → gam7-7.6.6}/wiki/Classroom-Membership.md +0 -0
  145. {gam7-7.6.4 → gam7-7.6.6}/wiki/Cloud-Channel.md +0 -0
  146. {gam7-7.6.4 → gam7-7.6.6}/wiki/Cloud-Identity-Devices.md +0 -0
  147. {gam7-7.6.4 → gam7-7.6.6}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
  148. {gam7-7.6.4 → gam7-7.6.6}/wiki/Cloud-Identity-Groups.md +0 -0
  149. {gam7-7.6.4 → gam7-7.6.6}/wiki/Cloud-Identity-Policies.md +0 -0
  150. {gam7-7.6.4 → gam7-7.6.6}/wiki/Cloud-Storage.md +0 -0
  151. {gam7-7.6.4 → gam7-7.6.6}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
  152. {gam7-7.6.4 → gam7-7.6.6}/wiki/Collections-of-Items.md +0 -0
  153. {gam7-7.6.4 → gam7-7.6.6}/wiki/Collections-of-Users.md +0 -0
  154. {gam7-7.6.4 → gam7-7.6.6}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
  155. {gam7-7.6.4 → gam7-7.6.6}/wiki/Command-Line-Parsing.md +0 -0
  156. {gam7-7.6.4 → gam7-7.6.6}/wiki/Command-Logging-Progress.md +0 -0
  157. {gam7-7.6.4 → gam7-7.6.6}/wiki/Context-Aware-Access-Levels.md +0 -0
  158. {gam7-7.6.4 → gam7-7.6.6}/wiki/Customer.md +0 -0
  159. {gam7-7.6.4 → gam7-7.6.6}/wiki/Domain-People-Contacts-Profiles.md +0 -0
  160. {gam7-7.6.4 → gam7-7.6.6}/wiki/Domain-SharedContacts-GAL.md +0 -0
  161. {gam7-7.6.4 → gam7-7.6.6}/wiki/Domains-Verification.md +0 -0
  162. {gam7-7.6.4 → gam7-7.6.6}/wiki/Domains.md +0 -0
  163. {gam7-7.6.4 → gam7-7.6.6}/wiki/Downloads-Installs.md +0 -0
  164. {gam7-7.6.4 → gam7-7.6.6}/wiki/Drive-File-Selection.md +0 -0
  165. {gam7-7.6.4 → gam7-7.6.6}/wiki/Drive-Items.md +0 -0
  166. {gam7-7.6.4 → gam7-7.6.6}/wiki/Drive-REST-API-v3.md +0 -0
  167. {gam7-7.6.4 → gam7-7.6.6}/wiki/Email-Audit-Monitor.md +0 -0
  168. {gam7-7.6.4 → gam7-7.6.6}/wiki/Find-File-Owner.md +0 -0
  169. {gam7-7.6.4 → gam7-7.6.6}/wiki/GAM-Public-Chat-Room.md +0 -0
  170. {gam7-7.6.4 → gam7-7.6.6}/wiki/GAM-Return-Codes.md +0 -0
  171. {gam7-7.6.4 → gam7-7.6.6}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
  172. {gam7-7.6.4 → gam7-7.6.6}/wiki/GAM7-on-Android-Devices.md +0 -0
  173. {gam7-7.6.4 → gam7-7.6.6}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
  174. {gam7-7.6.4 → gam7-7.6.6}/wiki/Google-Data-Transfers.md +0 -0
  175. {gam7-7.6.4 → gam7-7.6.6}/wiki/Google-Network-Addresses.md +0 -0
  176. {gam7-7.6.4 → gam7-7.6.6}/wiki/Groups-Membership.md +0 -0
  177. {gam7-7.6.4 → gam7-7.6.6}/wiki/Groups.md +0 -0
  178. {gam7-7.6.4 → gam7-7.6.6}/wiki/HTTPS-Proxy.md +0 -0
  179. {gam7-7.6.4 → gam7-7.6.6}/wiki/Home.md +0 -0
  180. {gam7-7.6.4 → gam7-7.6.6}/wiki/How-to-Install-GAM7.md +0 -0
  181. {gam7-7.6.4 → gam7-7.6.6}/wiki/How-to-Uninstall-GAM7.md +0 -0
  182. {gam7-7.6.4 → gam7-7.6.6}/wiki/How-to-Update-GAM7.md +0 -0
  183. {gam7-7.6.4 → gam7-7.6.6}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
  184. {gam7-7.6.4 → gam7-7.6.6}/wiki/Inbound-SSO.md +0 -0
  185. {gam7-7.6.4 → gam7-7.6.6}/wiki/Install-GAM-as-Python-Library.md +0 -0
  186. {gam7-7.6.4 → gam7-7.6.6}/wiki/Licenses.md +0 -0
  187. {gam7-7.6.4 → gam7-7.6.6}/wiki/List-Items.md +0 -0
  188. {gam7-7.6.4 → gam7-7.6.6}/wiki/List.md +0 -0
  189. {gam7-7.6.4 → gam7-7.6.6}/wiki/Mobile-Devices.md +0 -0
  190. {gam7-7.6.4 → gam7-7.6.6}/wiki/Organizational-Units.md +0 -0
  191. {gam7-7.6.4 → gam7-7.6.6}/wiki/Other-Resources.md +0 -0
  192. {gam7-7.6.4 → gam7-7.6.6}/wiki/Permission-Matches.md +0 -0
  193. {gam7-7.6.4 → gam7-7.6.6}/wiki/Python-Regular-Expressions.md +0 -0
  194. {gam7-7.6.4 → gam7-7.6.6}/wiki/README.md +0 -0
  195. {gam7-7.6.4 → gam7-7.6.6}/wiki/Rclone.md +0 -0
  196. {gam7-7.6.4 → gam7-7.6.6}/wiki/Reports.md +0 -0
  197. {gam7-7.6.4 → gam7-7.6.6}/wiki/Reseller.md +0 -0
  198. {gam7-7.6.4 → gam7-7.6.6}/wiki/Resources.md +0 -0
  199. {gam7-7.6.4 → gam7-7.6.6}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
  200. {gam7-7.6.4 → gam7-7.6.6}/wiki/SSL-Root-CA-Certificates.md +0 -0
  201. {gam7-7.6.4 → gam7-7.6.6}/wiki/Schemas.md +0 -0
  202. {gam7-7.6.4 → gam7-7.6.6}/wiki/Scripts.md +0 -0
  203. {gam7-7.6.4 → gam7-7.6.6}/wiki/Send-Email.md +0 -0
  204. {gam7-7.6.4 → gam7-7.6.6}/wiki/Sites.md +0 -0
  205. {gam7-7.6.4 → gam7-7.6.6}/wiki/Tag-Replace.md +0 -0
  206. {gam7-7.6.4 → gam7-7.6.6}/wiki/Todrive.md +0 -0
  207. {gam7-7.6.4 → gam7-7.6.6}/wiki/Unmanaged-Accounts.md +0 -0
  208. {gam7-7.6.4 → gam7-7.6.6}/wiki/Upgrade-Benefits.md +0 -0
  209. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Analytics-Admin.md +0 -0
  210. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Application-Specific-Passwords.md +0 -0
  211. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Backup-Verification-Codes.md +0 -0
  212. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Calendars-Access.md +0 -0
  213. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Calendars-Events.md +0 -0
  214. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Calendars.md +0 -0
  215. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Chat.md +0 -0
  216. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Classification-Labels.md +0 -0
  217. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Classroom-Profile.md +0 -0
  218. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Contacts-Delegates.md +0 -0
  219. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Contacts.md +0 -0
  220. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Deprovision.md +0 -0
  221. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Drive-Activity-Settings.md +0 -0
  222. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Drive-Cleanup.md +0 -0
  223. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Drive-Comments.md +0 -0
  224. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Drive-Copy-Move.md +0 -0
  225. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Drive-Files-Display.md +0 -0
  226. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Drive-Files-Manage.md +0 -0
  227. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Drive-Orphans.md +0 -0
  228. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Drive-Ownership.md +0 -0
  229. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Drive-Permissions.md +0 -0
  230. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Drive-Query.md +0 -0
  231. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Drive-Revisions.md +0 -0
  232. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Drive-Shortcuts.md +0 -0
  233. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Drive-Transfer.md +0 -0
  234. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Forms.md +0 -0
  235. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Gmail-CSE.md +0 -0
  236. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Gmail-Delegates.md +0 -0
  237. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Gmail-Filters.md +0 -0
  238. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Gmail-Forwarding.md +0 -0
  239. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Gmail-Labels.md +0 -0
  240. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Gmail-Messages-Threads.md +0 -0
  241. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Gmail-Profile.md +0 -0
  242. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Gmail-S-MIME.md +0 -0
  243. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
  244. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Gmail-Settings.md +0 -0
  245. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Group-Membership.md +0 -0
  246. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Keep-Notes.md +0 -0
  247. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Looker-Studio.md +0 -0
  248. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Meet.md +0 -0
  249. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-People-Contacts-Profiles.md +0 -0
  250. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Photo.md +0 -0
  251. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Profile-Photo.md +0 -0
  252. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Profile-Sharing.md +0 -0
  253. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Shared-Drives.md +0 -0
  254. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Signout-Turnoff2SV.md +0 -0
  255. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Spreadsheets.md +0 -0
  256. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Tasks.md +0 -0
  257. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-Tokens.md +0 -0
  258. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users-YouTube.md +0 -0
  259. {gam7-7.6.4 → gam7-7.6.6}/wiki/Users.md +0 -0
  260. {gam7-7.6.4 → gam7-7.6.6}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
  261. {gam7-7.6.4 → gam7-7.6.6}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
  262. {gam7-7.6.4 → gam7-7.6.6}/wiki/Vault-Takeout.md +0 -0
  263. {gam7-7.6.4 → gam7-7.6.6}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
  264. {gam7-7.6.4 → gam7-7.6.6}/wiki/_Sidebar.md +0 -0
  265. {gam7-7.6.4 → gam7-7.6.6}/wiki/gam.cfg.md +0 -0
  266. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-AdminSettingsExamples.md +0 -0
  267. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Android-Installation.md +0 -0
  268. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-BulkOperations.md +0 -0
  269. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-CalendarExamples.md +0 -0
  270. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Chat-Bot.md +0 -0
  271. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Chrome-Browser-Management.md +0 -0
  272. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Chrome-OS-Installation.md +0 -0
  273. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Chrome-Policy-Settings.md +0 -0
  274. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Cloud-Identity-Groups.md +0 -0
  275. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
  276. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Command-Reference-Calendars.md +0 -0
  277. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Command-Reference-Definitions.md +0 -0
  278. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Command-Reference-Drive.md +0 -0
  279. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Command-Reference-Email.md +0 -0
  280. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
  281. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Command-Reference-Groups.md +0 -0
  282. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Command-Reference-Users.md +0 -0
  283. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Context-Aware-Access-Levels.md +0 -0
  284. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
  285. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-CreatingClientSecretsFile.md +0 -0
  286. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Custom-Schemas.md +0 -0
  287. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Data-Transfers.md +0 -0
  288. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-DomainVerification.md +0 -0
  289. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-ExamplesAccountAuditing.md +0 -0
  290. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-ExamplesCSV.md +0 -0
  291. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-ExamplesEmailSettings.md +0 -0
  292. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-ExamplesOrganizations.md +0 -0
  293. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-GAM-Discussion-Group.md +0 -0
  294. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
  295. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-GAM-options-files.md +0 -0
  296. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
  297. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-GAM3CSVListings.md +0 -0
  298. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-GAM3DirectoryCommands.md +0 -0
  299. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-GAM3GroupSettings.md +0 -0
  300. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-GAM7-FAQ.md +0 -0
  301. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
  302. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-GoogleDriveManagement.md +0 -0
  303. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
  304. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Home.md +0 -0
  305. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
  306. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Inbound-SSO-Settings.md +0 -0
  307. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-LicenseExamples.md +0 -0
  308. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Managing-Admins.md +0 -0
  309. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
  310. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Managing-Devices.md +0 -0
  311. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Managing-Google-Classroom.md +0 -0
  312. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-OAuthKeyManagement.md +0 -0
  313. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Printers.md +0 -0
  314. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-ResellerCommands.md +0 -0
  315. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
  316. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-SecurityExamples.md +0 -0
  317. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-UnmanagedUsersExamples.md +0 -0
  318. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Use-a-Yubikey.md +0 -0
  319. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
  320. {gam7-7.6.4 → gam7-7.6.6}/wiki/l-_Footer.md +0 -0
@@ -0,0 +1,19 @@
1
+ #!/bin/sh
2
+ credspath="$1"
3
+ if [ ! -d "$credspath" ]; then
4
+ echo "creating ${credspath}"
5
+ mkdir -p "$credspath"
6
+ fi
7
+ credsfile="${credspath}/oauth2.txt"
8
+ echo "$oa2" > "$credsfile"
9
+ echo "File size:"
10
+ wc -c "$credsfile"
11
+ echo "File type:"
12
+ file "$credsfile"
13
+ echo "Validation:"
14
+ jq -e . "$credsfile" > /dev/null
15
+ if [ $? -eq 0 ]; then
16
+ echo "Valid JSON"
17
+ else
18
+ echo "Invalid JSON"
19
+ fi
@@ -39,76 +39,69 @@ jobs:
39
39
  - os: ubuntu-22.04
40
40
  jid: 1
41
41
  goal: build
42
- arch: x86_64
43
- openssl_archs: linux-x86_64
42
+ name: Build Intel Ubuntu Jammy
44
43
  - os: ubuntu-24.04
45
44
  jid: 2
46
45
  goal: build
47
- arch: x86_64
48
- openssl_archs: linux-x86_64
46
+ name: Build Intel Ubuntu Noble
49
47
  - os: ubuntu-24.04-arm
50
48
  jid: 3
51
49
  goal: build
52
- arch: aarch64
53
- openssl_archs: linux-aarch64
50
+ name: Build Arm Ubuntu Noble
54
51
  - os: ubuntu-22.04-arm
55
52
  jid: 4
56
53
  goal: build
57
- arch: aarch64
58
- openssl_archs: linux-aarch64
54
+ name: Build Arm Ubuntu Jammy
59
55
  - os: ubuntu-22.04
60
56
  jid: 5
61
57
  goal: build
62
- arch: x86_64
63
- openssl_archs: linux-x86_64
64
58
  staticx: yes
59
+ name: Build Intel StaticX Legacy
65
60
  - os: ubuntu-22.04-arm
66
61
  jid: 6
67
62
  goal: build
68
- arch: aarch64
69
- openssl_archs: linux-aarch64
70
63
  staticx: yes
64
+ name: Build Arm StaticX Legacy
71
65
  - os: macos-13
72
66
  jid: 7
73
67
  goal: build
74
- arch: x86_64
75
- openssl_archs: darwin64-x86_64
68
+ name: Build Intel MacOS
76
69
  - os: macos-14
77
70
  jid: 8
78
71
  goal: build
79
- arch: aarch64
80
- openssl_archs: darwin64-arm64
72
+ name: Build Arm MacOS 14
81
73
  - os: macos-15
82
74
  jid: 9
83
75
  goal: build
84
- arch: aarch64
85
- openssl_archs: darwin64-arm64
76
+ name: Build Arm MacOS 15
86
77
  - os: windows-2022
87
78
  jid: 10
88
79
  goal: build
89
- arch: Win64
90
- openssl_archs: VC-WIN64A
91
- #- os: windows-11-arm
92
- # jid: 14
93
- # goal: build
94
- # arch: arm64
95
- # openssl_archs: VC-CLANG-WIN64-CLANGASM-ARM
96
- # continue-on-error: true
80
+ name: Build Intel Windows
81
+ - os: windows-11-arm
82
+ jid: 11
83
+ goal: build
84
+ name: Build Arm Windows
97
85
  - os: ubuntu-24.04
98
86
  goal: test
99
87
  python: "3.10"
100
- jid: 11
101
- arch: x86_64
88
+ jid: 12
89
+ name: Test Python 3.10
102
90
  - os: ubuntu-24.04
103
91
  goal: test
104
92
  python: "3.11"
105
- jid: 12
106
- arch: x86_64
93
+ jid: 13
94
+ name: Test Python 3.11
107
95
  - os: ubuntu-24.04
108
96
  goal: test
109
97
  python: "3.12"
110
- jid: 13
111
- arch: x86_64
98
+ jid: 14
99
+ name: Test Python 3.12
100
+ - os: ubuntu-24.04
101
+ goal: test
102
+ python: "3.14-dev"
103
+ jid: 15
104
+ name: Test Python 3.14-dev
112
105
 
113
106
  steps:
114
107
 
@@ -145,15 +138,25 @@ jobs:
145
138
  with:
146
139
  python-version: ${{ matrix.python }}
147
140
  allow-prereleases: true
141
+ check-latest: true
148
142
 
149
143
  - name: common variables for all runs
150
144
  env:
151
- arch: ${{ matrix.arch }}
152
145
  JID: ${{ matrix.jid }}
153
146
  ACTIONS_CACHE: ${{ steps.cache-python-ssl.outputs.cache-hit }}
154
147
  ACTIONS_GOAL: ${{ matrix.goal }}
155
148
  run: |
156
- echo "arch=${arch}" >> $GITHUB_ENV
149
+ case $RUNNER_ARCH in
150
+ X64)
151
+ echo "arch=x86_64" >> $GITHUB_ENV
152
+ ;;
153
+ ARM64)
154
+ echo "arch=arm64" >> $GITHUB_ENV
155
+ ;;
156
+ *)
157
+ echo "arch=${RUNNER_ARCH}" >> $GITHUB_ENV
158
+ ;;
159
+ esac
157
160
  echo "JID=${JID}" >> $GITHUB_ENV
158
161
  echo "ACTIONS_CACHE=${ACTIONS_CACHE}" >> $GITHUB_ENV
159
162
  echo "ACTIONS_GOAL=${ACTIONS_GOAL}" >> $GITHUB_ENV
@@ -167,20 +170,12 @@ jobs:
167
170
  echo "curl_retry=${curl_retry}" >> $GITHUB_ENV
168
171
  # GAMCFGDIR should be recreated on every run
169
172
  GAMCFGDIR="${RUNNER_TEMP}/.gam"
170
- if [ "$arch" == "Win64" ]; then
173
+ if [ "$RUNNER_OS" == "Windows" ]; then
171
174
  GAMCFGDIR=$(cygpath -u "$GAMCFGDIR")
172
175
  fi
173
176
  echo "GAMCFGDIR=${GAMCFGDIR}" >> $GITHUB_ENV
174
177
  echo "GAMCFGDIR is: ${GAMCFGDIR}"
175
- if [[ "${RUNNER_OS}" == "macOS" ]]; then
176
- GAMOS="macos"
177
- elif [[ "${RUNNER_OS}" == "Linux" ]]; then
178
- GAMOS="linux"
179
- elif [[ "${RUNNER_OS}" == "Windows" ]]; then
180
- GAMOS="windows"
181
- else
182
- GAMOS='unknown'
183
- fi
178
+ export GAMOS=$(echo "$RUNNER_OS" | tr '[:upper:]' '[:lower:]')
184
179
  echo "GAMOS=${GAMOS}" >> $GITHUB_ENV
185
180
  echo "GAMOS is: ${GAMOS}"
186
181
 
@@ -229,23 +224,15 @@ jobs:
229
224
  uses: ilammy/msvc-dev-cmd@v1
230
225
  if: runner.os == 'Windows' && steps.cache-python-ssl.outputs.cache-hit != 'true'
231
226
  with:
232
- arch: ${{ matrix.arch }}
227
+ arch: ${{ runner.arch }}
233
228
 
234
229
  - name: Set Env Variables for build
235
230
  if: matrix.goal == 'build'
236
231
  env:
237
- openssl_archs: ${{ matrix.openssl_archs }}
238
232
  staticx: ${{ matrix.staticx }}
239
233
  run: |
240
234
  echo "We are running on ${RUNNER_OS}"
241
235
  LD_LIBRARY_PATH="${OPENSSL_INSTALL_PATH}/lib:${PYTHON_INSTALL_PATH}/lib:/usr/local/lib"
242
- if [[ "${arch}" == "Win64" ]]; then
243
- PYEXTERNALS_PATH="amd64"
244
- PYBUILDRELEASE_ARCH="x64"
245
- GAM_ARCHIVE_ARCH="x86_64"
246
- WIX_ARCH="x64"
247
- CHOC_OPS=""
248
- fi
249
236
  if [[ "${RUNNER_OS}" == "macOS" ]]; then
250
237
  MAKE=make
251
238
  MAKEOPT="-j$(sysctl -n hw.logicalcpu)"
@@ -263,16 +250,18 @@ jobs:
263
250
  MAKE=nmake
264
251
  MAKEOPT=""
265
252
  PERL="c:\strawberry\perl\bin\perl.exe"
253
+ if [[ "$RUNNER_ARCH" == "ARM64" ]]; then
254
+ PYEXTERNALS_PATH="arm64"
255
+ WIX_ARCH="arm64"
256
+ CHOC_OPS=""
257
+ elif [[ "$RUNNER_ARCH" == "X64" ]]; then
258
+ PYEXTERNALS_PATH="amd64"
259
+ WIX_ARCH="x64"
260
+ CHOC_OPS=""
261
+ fi
266
262
  LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${PYTHON_SOURCE_PATH}/PCbuild/${PYEXTERNALS_PATH}"
267
263
  echo "PYTHON=${PYTHON_SOURCE_PATH}/PCbuild/${PYEXTERNALS_PATH}/python.exe" >> $GITHUB_ENV
268
- echo "GAM_ARCHIVE_ARCH=${GAM_ARCHIVE_ARCH}" >> $GITHUB_ENV
269
264
  echo "WIX_ARCH=${WIX_ARCH}" >> $GITHUB_ENV
270
- if [[ "$arch" == "arm64" ]]; then
271
- MAKE=make
272
- MAKEOPT="-j$(nproc)"
273
- echo "VSCMD_DEBUG=3" >> $GITHUB_ENV
274
- echo "PATH=${PATH}:${VCINSTALLDIR}\Tools\Llvm\ARM64\bin" >> $GITHUB_ENV
275
- fi
276
265
  fi
277
266
  echo "We'll run make with: ${MAKEOPT}"
278
267
  echo "staticx=${staticx}" >> $GITHUB_ENV
@@ -281,8 +270,6 @@ jobs:
281
270
  echo "MAKEOPT=${MAKEOPT}" >> $GITHUB_ENV
282
271
  echo "PERL=${PERL}" >> $GITHUB_ENV
283
272
  echo "PYEXTERNALS_PATH=${PYEXTERNALS_PATH}" >> $GITHUB_ENV
284
- echo "PYBUILDRELEASE_ARCH=${PYBUILDRELEASE_ARCH}" >> $GITHUB_ENV
285
- echo "openssl_archs=${openssl_archs}" >> $GITHUB_ENV
286
273
 
287
274
  - name: Get latest stable OpenSSL source
288
275
  if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
@@ -296,29 +283,21 @@ jobs:
296
283
  git checkout "${LATEST_STABLE_TAG}"
297
284
  export COMPILED_OPENSSL_VERSION=${LATEST_STABLE_TAG:8} # Trim the openssl- prefix
298
285
  echo "COMPILED_OPENSSL_VERSION=${COMPILED_OPENSSL_VERSION}" >> $GITHUB_ENV
299
- if ([ "${RUNNER_OS}" == "macOS" ] && [ "$arch" == "universal2" ]); then
300
- for openssl_arch in $openssl_archs; do
301
- ssldir="${OPENSSL_SOURCE_PATH}-${openssl_arch}"
302
- mkdir -v "${ssldir}"
303
- cp -vrf ${OPENSSL_SOURCE_PATH}/* "${ssldir}/"
304
- done
305
- rm -vrf "${OPENSSL_SOURCE_PATH}"
306
- else
307
- mv -v "${OPENSSL_SOURCE_PATH}" "${OPENSSL_SOURCE_PATH}-${openssl_archs}"
308
- fi
309
286
 
310
287
  - name: Windows NASM Install
311
288
  uses: ilammy/setup-nasm@v1
312
- if: matrix.goal == 'build' && runner.os == 'Windows' && steps.cache-python-ssl.outputs.cache-hit != 'true'
289
+ if: matrix.goal == 'build' && runner.os == 'Windows' && runner.arch == 'X64' && steps.cache-python-ssl.outputs.cache-hit != 'true'
313
290
 
314
291
  - name: Config OpenSSL
315
292
  if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
316
293
  run: |
317
- for openssl_arch in $openssl_archs; do
318
- cd "${GITHUB_WORKSPACE}/src/openssl-${openssl_arch}"
319
- # --libdir=lib is needed so Python can find OpenSSL libraries
320
- "${PERL}" ./Configure "${openssl_arch}" --libdir=lib --prefix="${OPENSSL_INSTALL_PATH}" $OPENSSL_CONFIG_OPTS
321
- done
294
+ cd "${OPENSSL_SOURCE_PATH}"
295
+ # TODO: remove this once https://github.com/openssl/openssl/issues/26239 is fixed.
296
+ if ([ "$RUNNER_OS" == "Windows" ] && [ "$RUNNER_ARCH" == "ARM64" ]); then
297
+ export CFLAGS=-DNO_INTERLOCKEDOR64
298
+ fi
299
+ # --libdir=lib is needed so Python can find OpenSSL libraries
300
+ "${PERL}" ./Configure --libdir=lib --prefix="${OPENSSL_INSTALL_PATH}" $OPENSSL_CONFIG_OPTS
322
301
 
323
302
  - name: Rename GNU link on Windows
324
303
  if: matrix.goal == 'build' && runner.os == 'Windows' && steps.cache-python-ssl.outputs.cache-hit != 'true'
@@ -329,53 +308,29 @@ jobs:
329
308
  - name: Make OpenSSL
330
309
  if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
331
310
  run: |
332
- for openssl_arch in $openssl_archs; do
333
- cd "${GITHUB_WORKSPACE}/src/openssl-${openssl_arch}"
334
- $MAKE "${MAKEOPT}"
335
- done
311
+ cd "${OPENSSL_SOURCE_PATH}"
312
+ # TODO: remove this once https://github.com/openssl/openssl/issues/26239 is fixed.
313
+ if ([ "$RUNNER_OS" == "Windows" ] && [ "$RUNNER_ARCH" == "ARM64" ]); then
314
+ export CFLAGS=-DNO_INTERLOCKEDOR64
315
+ fi
316
+ $MAKE "$MAKEOPT"
336
317
 
337
318
  - name: Install OpenSSL
338
319
  if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
339
320
  run: |
340
- if ([ "${RUNNER_OS}" == "macOS" ] && [ "$arch" == "universal2" ]); then
341
- for openssl_arch in $openssl_archs; do
342
- cd "${GITHUB_WORKSPACE}/src/openssl-${openssl_arch}"
343
- # install_sw saves us ages processing man pages :-)
344
- $MAKE install_sw
345
- mv -v "${OPENSSL_INSTALL_PATH}" "${GITHUB_WORKSPACE}/bin/ssl-${openssl_arch}"
346
- done
347
- mkdir -vp "${OPENSSL_INSTALL_PATH}/lib"
348
- mkdir -vp "${OPENSSL_INSTALL_PATH}/bin"
349
- for archlib in libcrypto.3.dylib libssl.3.dylib libcrypto.a libssl.a; do
350
- lipo -create "${GITHUB_WORKSPACE}/bin/ssl-darwin64-x86_64/lib/${archlib}" \
351
- "${GITHUB_WORKSPACE}/bin/ssl-darwin64-arm64/lib/${archlib}" \
352
- -output "${GITHUB_WORKSPACE}/bin/ssl/lib/${archlib}"
353
- done
354
- mv ${GITHUB_WORKSPACE}/bin/ssl-darwin64-x86_64/include ${GITHUB_WORKSPACE}/bin/ssl/
355
- lipo -create "${GITHUB_WORKSPACE}/bin/ssl-darwin64-x86_64/bin/openssl" \
356
- "${GITHUB_WORKSPACE}/bin/ssl-darwin64-arm64/bin/openssl" \
357
- -output "${GITHUB_WORKSPACE}/bin/ssl/bin/openssl"
358
- rm -rf ${GITHUB_WORKSPACE}/bin/ssl-darwin64-x86_64
359
- rm -rf ${GITHUB_WORKSPACE}/bin/ssl-darwin64-arm64
360
- else
361
- cd "${GITHUB_WORKSPACE}/src/openssl-${openssl_archs}"
362
- # install_sw saves us ages processing man pages :-)
363
- $MAKE install_sw
364
- fi
321
+ cd "${OPENSSL_SOURCE_PATH}"
322
+ # install_sw saves us ages processing man pages :-)
323
+ $MAKE install_sw
365
324
  if [[ "${RUNNER_OS}" != "Windows" ]]; then
366
325
  echo "LDFLAGS=-L${OPENSSL_INSTALL_PATH}/lib" >> $GITHUB_ENV
367
326
  fi
368
327
  echo "CRYPTOGRAPHY_SUPPRESS_LINK_FLAGS=1" >> $GITHUB_ENV
369
- case $arch in
370
- universal2)
371
- echo "CFLAGS=-I${OPENSSL_INSTALL_PATH}/include -arch arm64 -arch x86_64 ${CFLAGS}" >> $GITHUB_ENV
372
- echo "ARCHFLAGS=-arch x86_64 -arch arm64" >> $GITHUB_ENV
373
- ;;
374
- x86_64)
328
+ case $RUNNER_ARCH in
329
+ X64)
375
330
  echo "CFLAGS=-I${OPENSSL_INSTALL_PATH}/include ${CFLAGS}" >> $GITHUB_ENV
376
331
  echo "ARCHFLAGS=-arch x86_64" >> $GITHUB_ENV
377
332
  ;;
378
- aarch64)
333
+ ARM64)
379
334
  echo "CFLAGS=-I${OPENSSL_INSTALL_PATH}/include ${CFLAGS}" >> $GITHUB_ENV
380
335
  echo "ARCHFLAGS=-arch arm64" >> $GITHUB_ENV
381
336
  ;;
@@ -402,18 +357,12 @@ jobs:
402
357
  if: matrix.goal == 'build' && runner.os != 'Windows' && steps.cache-python-ssl.outputs.cache-hit != 'true'
403
358
  run: |
404
359
  cd "${PYTHON_SOURCE_PATH}"
405
- if ([ "${RUNNER_OS}" == "macOS" ] && [ "$arch" == "universal2" ]); then
406
- extra_args=( "--enable-universalsdk" "--with-universal-archs=universal2" )
407
- else
408
- extra_args=( )
409
- fi
410
360
  ./configure --with-openssl="${OPENSSL_INSTALL_PATH}" \
411
361
  --prefix="${PYTHON_INSTALL_PATH}" \
412
362
  --enable-shared \
413
363
  --with-ensurepip=upgrade \
414
364
  --enable-optimizations \
415
- --with-lto \
416
- "${extra_args[@]}" || : # exit 0
365
+ --with-lto || : # exit 0
417
366
  cat config.log
418
367
 
419
368
  - name: Windows Get External Python deps
@@ -433,10 +382,15 @@ jobs:
433
382
  Remove-Item -recurse -force "${env:OPENSSL_EXT_PATH}*"
434
383
  # Emulate what this script does:
435
384
  # https://github.com/python/cpython/blob/main/PCbuild/openssl.vcxproj
436
- $env:OPENSSL_EXT_TARGET_PATH = "${env:OPENSSL_EXT_PATH}${env:PYEXTERNALS_PATH}"
385
+ if (${env:RUNNER_ARCH} -eq "X64") {
386
+ $env:ossl_path = "amd64"
387
+ } elseif (${env:RUNNER_ARCH} -eq "ARM64") {
388
+ $env:ossl_path = "arm64"
389
+ }
390
+ $env:OPENSSL_EXT_TARGET_PATH = "${env:OPENSSL_EXT_PATH}${env:ossl_path}"
437
391
  echo "Copying our OpenSSL to ${env:OPENSSL_EXT_TARGET_PATH}"
438
392
  mkdir "${env:OPENSSL_EXT_TARGET_PATH}\include\openssl\"
439
- Copy-Item -Path "${env:GITHUB_WORKSPACE}/src/openssl-${env:openssl_archs}\LICENSE.txt" -Destination "${env:OPENSSL_EXT_TARGET_PATH}\LICENSE" -Verbose
393
+ Copy-Item -Path "${env:OPENSSL_SOURCE_PATH}\LICENSE.txt" -Destination "${env:OPENSSL_EXT_TARGET_PATH}\LICENSE"
440
394
  cp -v "$env:OPENSSL_INSTALL_PATH\lib\*" "${env:OPENSSL_EXT_TARGET_PATH}"
441
395
  cp -v "$env:OPENSSL_INSTALL_PATH\bin\*" "${env:OPENSSL_EXT_TARGET_PATH}"
442
396
  cp -v "$env:OPENSSL_INSTALL_PATH\include\openssl\*" "${env:OPENSSL_EXT_TARGET_PATH}\include\openssl\"
@@ -457,8 +411,15 @@ jobs:
457
411
  cd "${env:PYTHON_SOURCE_PATH}"
458
412
  # We need out custom openssl.props which uses OpenSSL 3 DLL names
459
413
  Copy-Item -Path "${env:GITHUB_WORKSPACE}\src\tools\openssl.props" -Destination PCBuild\ -Verbose
460
- echo "Building for ${env:PYBUILDRELEASE_ARCH}..."
461
- PCBuild\build.bat -m --pgo -c Release -p "${env:PYBUILDRELEASE_ARCH}"
414
+ if (${env:RUNNER_ARCH} -eq "X64") {
415
+ $env:arch = "x64"
416
+ PCBuild\build.bat -c Release -p $env:arch --pgo
417
+ } elseif (${env:RUNNER_ARCH} -eq "ARM64") {
418
+ $env:arch = "ARM64"
419
+ # TODO: figure out why Windows ARM64 isn't compat with PGO optimiazation
420
+ # causes 10-20% slowdown in Python
421
+ PCBuild\build.bat -c Release -p $env:arch
422
+ }
462
423
 
463
424
  - name: Mac/Linux Build Python
464
425
  if: matrix.goal == 'build' && runner.os != 'Windows' && steps.cache-python-ssl.outputs.cache-hit != 'true'
@@ -485,46 +446,33 @@ jobs:
485
446
  - name: Upgrade pip, wheel, etc
486
447
  run: |
487
448
  curl $curl_retry -O https://bootstrap.pypa.io/get-pip.py
488
- "${PYTHON}" get-pip.py
489
- "${PYTHON}" -m pip install --upgrade pip
490
- "${PYTHON}" -m pip install --upgrade wheel
491
- "${PYTHON}" -m pip install --upgrade setuptools
492
-
449
+ "$PYTHON" get-pip.py
450
+ "$PYTHON" -m pip install --upgrade pip
451
+ "$PYTHON" -m pip install --upgrade wheel
452
+ "$PYTHON" -m pip install --upgrade setuptools
453
+
454
+ - name: Custom wheels for Win arm64
455
+ if: runner.os == 'Windows' && runner.arch == 'ARM64'
456
+ run: |
457
+ latest_lxml_whl=$(curl https://api.github.com/repos/GAM-team/lxml-wheel/releases/latest -s | jq -r .assets.[0].browser_download_url)
458
+ echo "Downloading ${latest_lxml_whl}..."
459
+ curl -O -L "$latest_lxml_whl"
460
+ "$PYTHON" -m pip install lxml*.whl
461
+ latest_crypt_whl=$(curl https://api.github.com/repos/jay0lee/cryptography/releases/latest -s | jq -r .assets.[0].browser_download_url)
462
+ echo "Downloading ${latest_crypt_whl}..."
463
+ curl -O -L "$latest_crypt_whl"
464
+ "$PYTHON" -m pip install cryptography*.whl
465
+
493
466
  - name: Install pip requirements
494
467
  run: |
495
468
  echo "before anything..."
496
- "${PYTHON}" -m pip list
497
- if ([ "${RUNNER_OS}" == "macOS" ] && [ "$arch" == "universal2" ]); then
498
- # cffi is a dep of cryptography and doesn't ship
499
- # a universal2 wheel so we must build one ourself :-/
500
- export CFLAGS="-arch x86_64 -arch arm64"
501
- export ARCHFLAGS="-arch x86_64 -arch arm64"
502
- "${PYTHON}" -m pip install --upgrade --force-reinstall --no-binary :all: \
503
- --no-cache-dir --no-deps --use-pep517 \
504
- --use-feature=no-binary-enable-wheel-cache \
505
- cffi
506
- echo "before cryptography..."
507
- "${PYTHON}" -m pip list
508
- # cryptography has a universal2 wheel but getting it installed
509
- # on x86-64 MacOS is a royal pain in the keester.
510
- "${PYTHON}" -m pip download --only-binary :all: \
511
- --dest . \
512
- --no-cache \
513
- --no-deps \
514
- --platform macosx_10_15_universal2 \
515
- cryptography
516
- "${PYTHON}" -m pip install --force-reinstall --no-deps cryptography*.whl
517
- echo "after cryptography..."
518
- "${PYTHON}" -m pip list
519
- "${PYTHON}" -m pip install --upgrade --no-binary :all: -r requirements.txt
520
- else
521
- "${PYTHON}" -m pip install --upgrade -r requirements.txt
522
- echo "after requirements..."
523
- "${PYTHON}" -m pip list
524
- "${PYTHON}" -m pip install --force-reinstall --no-deps --upgrade cryptography
525
- fi
469
+ "$PYTHON" -m pip list
470
+ "$PYTHON" -m pip install --upgrade -r requirements.txt
471
+ echo "after requirements..."
472
+ "$PYTHON" -m pip list
473
+ #"$PYTHON" -m pip install --force-reinstall --no-deps --upgrade cryptography
526
474
  echo "after everything..."
527
- "${PYTHON}" -m pip list
475
+ "$PYTHON" -m pip list
528
476
 
529
477
  - name: Install PyInstaller
530
478
  if: matrix.goal == 'build'
@@ -537,14 +485,7 @@ jobs:
537
485
  # remove pre-compiled bootloaders so we fail if bootloader compile fails
538
486
  rm -rvf PyInstaller/bootloader/*-*/*
539
487
  cd bootloader
540
- export PYINSTALLER_BUILD_ARGS=""
541
- case "${arch}" in
542
- "Win64")
543
- export PYINSTALLER_BUILD_ARGS="--target-arch=64bit"
544
- ;;
545
- esac
546
- echo "PyInstaller build arguments: ${PYINSTALLER_BUILD_ARGS}"
547
- "${PYTHON}" ./waf all $PYINSTALLER_BUILD_ARGS
488
+ "${PYTHON}" ./waf all
548
489
  cd ..
549
490
  echo "---- Installing PyInstaller ----"
550
491
  "${PYTHON}" -m pip install .
@@ -655,14 +596,12 @@ jobs:
655
596
  echo "GAM Version ${GAMVERSION}"
656
597
  echo "GAMVERSION=${GAMVERSION}" >> $GITHUB_ENV
657
598
 
658
- - name: Configure service account auth
599
+ - name: Configure user and service account auth
659
600
  id: configserviceaccount
660
601
  env:
661
- PASSCODE: ${{ secrets.PASSCODE }}
602
+ oa2: ${{ secrets[format('GAM_GHA_{0}', matrix.jid)] }}
662
603
  run: |
663
- source ../.github/actions/decrypt.sh ../.github/actions/creds.tar.xz.gpg creds.tar.xz "${GAMCFGDIR}"
664
- mv -v "${GAMCFGDIR}/oauth2.txt-gam-gha-${JID}" "${GAMCFGDIR}/oauth2.txt"
665
- rm -v $GAMCFGDIR/oauth2.txt-gam*
604
+ ../.github/actions/decrypt.sh "${GAMCFGDIR}"
666
605
  $gam create signjwtserviceaccount
667
606
 
668
607
  - name: Upload gam.exe Windows for signing
@@ -710,22 +649,29 @@ jobs:
710
649
  else
711
650
  libver="glibc$(ldd --version | awk '/ldd/{print $NF}')"
712
651
  fi
713
- GAM_ARCHIVE="${GITHUB_WORKSPACE}/gam-${GAMVERSION}-linux-$(arch)-${libver}.tar.xz"
652
+ GAM_ARCHIVE="${GITHUB_WORKSPACE}/gam-${GAMVERSION}-linux-${arch}-${libver}.tar.xz"
714
653
  fi
715
654
  echo "GAM Archive ${GAM_ARCHIVE}"
716
655
  tar -C "${gampath}/.." --create --verbose --exclude-from "${GITHUB_WORKSPACE}/.github/actions/package_exclusions.txt" --file $GAM_ARCHIVE --xz gam7
717
656
 
718
- - name: Windows package
657
+ - name: Install Wix on Win ARM64
658
+ if: runner.os == 'Windows' && runner.arch == 'ARM64'
659
+ run: |
660
+ choco install wixtoolset
661
+
662
+ - name: Windows package zip
719
663
  if: runner.os == 'Windows' && matrix.goal != 'test'
720
664
  run: |
721
665
  echo "started in $(pwd)"
722
666
  cd "${gampath}/.."
723
667
  echo "moved to $(pwd)"
724
- GAM_ARCHIVE="${GITHUB_WORKSPACE}/gam-${GAMVERSION}-windows-${GAM_ARCHIVE_ARCH}.zip"
668
+ GAM_ARCHIVE="${GITHUB_WORKSPACE}/gam-${GAMVERSION}-windows-${arch}.zip"
725
669
  /c/Program\ Files/7-Zip/7z.exe a -tzip "$GAM_ARCHIVE" gam7 "-xr@${GITHUB_WORKSPACE}/.github/actions/package_exclusions.txt" -bb3
726
- cd ../..
727
- echo "moved to $(pwd)"
728
- export MSI_FILENAME="${GITHUB_WORKSPACE}/gam-${GAMVERSION}-windows-${GAM_ARCHIVE_ARCH}.msi"
670
+
671
+ - name: Windows package MSI
672
+ if: runner.os == 'Windows' && matrix.goal != 'test'
673
+ run: |
674
+ export MSI_FILENAME="${GITHUB_WORKSPACE}/gam-${GAMVERSION}-windows-${arch}.msi"
729
675
  # auto-generate a lib.wxs based on the files PyInstaller created for the lib/ directory
730
676
  /c/Program\ Files\ \(x86\)/WiX\ Toolset\ v3.14/bin/heat.exe dir "${gampath}/lib" -ke -srd -cg Lib -gg -dr lib -directoryid lib -out lib.wxs
731
677
  $PYTHON tools/gen-wix-xml-filelist.py lib.wxs
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.6.4
3
+ Version: 7.6.6
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
@@ -1,3 +1,12 @@
1
+ 7.06.06
2
+
3
+ Native support for Windows 11 Arm-based devices.
4
+
5
+ 7.06.05
6
+
7
+ Updated code in `gam delete|update chromepolicy` to handle the `policyTargetKey[additionalTargetKeys]`
8
+ field in a more general manner for future use.
9
+
1
10
  7.06.04
2
11
 
3
12
  Fixed bug in `gam report <ActivityApplictionName>` where a report with no activities
@@ -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.04'
28
+ __version__ = '7.06.06'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -28090,10 +28090,12 @@ def updatePolicyRequests(body, targetResource, printer_id, app_id):
28090
28090
  for request in body['requests']:
28091
28091
  request.setdefault('policyTargetKey', {})
28092
28092
  request['policyTargetKey']['targetResource'] = targetResource
28093
- if app_id:
28094
- request['policyTargetKey']['additionalTargetKeys'] = {'app_id': app_id}
28095
- elif printer_id:
28096
- request['policyTargetKey']['additionalTargetKeys'] = {'printer_id': printer_id}
28093
+ if app_id or printer_id:
28094
+ request['policyTargetKey'].setdefault('additionalTargetKeys', {})
28095
+ if app_id:
28096
+ request['policyTargetKey']['additionalTargetKeys']['app_id'] = app_id
28097
+ elif printer_id:
28098
+ request['policyTargetKey']['additionalTargetKeys']['printer_id'] = printer_id
28097
28099
 
28098
28100
  # gam delete chromepolicy
28099
28101
  # (<SchemaName> [<JSONData>])+
@@ -28126,9 +28128,9 @@ def doDeleteChromePolicy():
28126
28128
  if checkArgumentPresent('json'):
28127
28129
  jsonData = getJSON(['direct', 'name', 'orgUnitPath', 'parentOrgUnitPath', 'group'])
28128
28130
  if 'additionalTargetKeys' in jsonData:
28129
- body['requests'][-1].setdefault('policyTargetKey', {})
28131
+ body['requests'][-1].setdefault('policyTargetKey', {'additionalTargetKeys': {}})
28130
28132
  for atk in jsonData['additionalTargetKeys']:
28131
- body['requests'][-1]['policyTargetKey']['additionalTargetKeys'] = {atk['name']: atk['value']}
28133
+ body['requests'][-1]['policyTargetKey']['additionalTargetKeys'][atk['name']] = atk['value']
28132
28134
  checkPolicyArgs(targetResource, printer_id, app_id)
28133
28135
  count = len(body['requests'])
28134
28136
  if count != 1:
@@ -28281,9 +28283,9 @@ def doUpdateChromePolicy():
28281
28283
  jsonData = getJSON(['direct', 'name', 'orgUnitPath', 'parentOrgUnitPath', 'group'])
28282
28284
  schemaNameAppId = schemaName
28283
28285
  if 'additionalTargetKeys' in jsonData:
28284
- body['requests'][-1].setdefault('policyTargetKey', {})
28286
+ body['requests'][-1].setdefault('policyTargetKey', {'additionalTargetKeys': {}})
28285
28287
  for atk in jsonData['additionalTargetKeys']:
28286
- body['requests'][-1]['policyTargetKey']['additionalTargetKeys'] = {atk['name']: atk['value']}
28288
+ body['requests'][-1]['policyTargetKey']['additionalTargetKeys'][atk['name']] = atk['value']
28287
28289
  if atk['name'] == 'app_id':
28288
28290
  schemaNameAppId += f"({atk['value']})"
28289
28291
  schemaNameList[-1] = schemaNameAppId