gam7 7.5.18__tar.gz → 7.5.19__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of gam7 might be problematic. Click here for more details.
- {gam7-7.5.18 → gam7-7.5.19}/PKG-INFO +1 -1
- {gam7-7.5.18 → gam7-7.5.19}/src/GamCommands.txt +66 -36
- {gam7-7.5.18 → gam7-7.5.19}/src/GamUpdate.txt +38 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/__init__.py +79 -31
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gamlib/glmsgs.py +1 -0
- {gam7-7.5.18 → gam7-7.5.19}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/.github/ISSUE_TEMPLATE.txt +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/.github/actions/creds.tar.xz.gpg +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/.github/actions/decrypt.sh +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/.github/actions/entitlements.plist +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/.github/actions/package_exclusions.txt +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/.github/stale.yml +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/.github/workflows/build.yml +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/.github/workflows/codeql-analysis.yml +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/.github/workflows/get-cacerts.yml +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/.github/workflows/pypi.yml +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/.pre-commit-config.yaml +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/LICENSE +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/README.md +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/pyproject.toml +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/.gitignore +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/LICENSE +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/cacerts.pem +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/callgam.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/__main__.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/atom/__init__.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/atom/auth.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/atom/client.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/atom/core.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/atom/data.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/atom/http.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/atom/http_core.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/atom/http_interface.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/atom/mock_http.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/atom/mock_http_core.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/atom/mock_service.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/atom/service.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/atom/token_store.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/atom/url.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/cacerts.pem +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/cbcm-v1.1beta1.json +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/contactdelegation-v1.json +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/datastudio-v1.json +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gamlib/__init__.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gamlib/glaction.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gamlib/glapi.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gamlib/glcfg.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gamlib/glclargs.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gamlib/glentity.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gamlib/glgapi.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gamlib/glgdata.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gamlib/glglobals.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gamlib/glindent.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gamlib/glskus.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gamlib/gluprop.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gamlib/glverlibs.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gamlib/yubikey.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gdata/__init__.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gdata/alt/__init__.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gdata/alt/app_engine.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gdata/alt/appengine.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gdata/apps/__init__.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gdata/apps/audit/__init__.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gdata/apps/audit/service.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gdata/apps/contacts/__init__.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gdata/apps/contacts/service.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gdata/apps/service.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gdata/service.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/gdata/urlfetch.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/googleapiclient/__init__.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/googleapiclient/_auth.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/googleapiclient/_helpers.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/googleapiclient/channel.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/googleapiclient/discovery.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/googleapiclient/errors.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/googleapiclient/http.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/googleapiclient/mimeparse.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/googleapiclient/model.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/googleapiclient/schema.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/googleapiclient/version.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/iso8601/__init__.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/iso8601/iso8601.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/meet-v2beta.json +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/serviceaccountlookup-v1.json +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam/six.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam-install.sh +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam-setup.bat +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam.exe.manifest +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam.spec +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/gam.wxs +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/license.rtf +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/requirements-dev.txt +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/requirements.txt +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/setup.cfg +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/setup.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/tools/a_atleast_b.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/tools/gen-wix-xml-filelist.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/tools/mkGamRef.py +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/tools/openssl.props +0 -0
- {gam7-7.5.18 → gam7-7.5.19}/src/version_info.txt.in +0 -0
|
@@ -1908,7 +1908,7 @@ gam calendar|calendars <CalendarEntity> modify <CalendarSettings>+
|
|
|
1908
1908
|
|
|
1909
1909
|
<ChatContent> ::=
|
|
1910
1910
|
((text <String>)|
|
|
1911
|
-
(textfile <FileName> [charset <
|
|
1911
|
+
(textfile <FileName> [charset <Charset>])|
|
|
1912
1912
|
(gdoc <UserGoogleDoc>)|
|
|
1913
1913
|
(gcsdoc <StorageBucketObjectName>))
|
|
1914
1914
|
|
|
@@ -4735,8 +4735,10 @@ gam sendemail [recipient|to] <RecipientEntity>
|
|
|
4735
4735
|
[from <EmailAddress>] [mailbox <EmailAddress>] [replyto <EmailAddress>]
|
|
4736
4736
|
[cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
|
4737
4737
|
[subject <String>]
|
|
4738
|
-
[<MessageContent>]
|
|
4739
|
-
|
|
4738
|
+
[<MessageContent>]
|
|
4739
|
+
(replace <Tag> <String>)*
|
|
4740
|
+
(replaceregex <RegularExpression> <String> <Tag> <String>)*
|
|
4741
|
+
[html [<Boolean>]] (attach <FileName> [charset <Charset>])*
|
|
4740
4742
|
(embedimage <FileName> <String>)*
|
|
4741
4743
|
[newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
|
4742
4744
|
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
|
@@ -4744,8 +4746,10 @@ gam <UserTypeEntity> sendemail recipient|to <RecipientEntity>
|
|
|
4744
4746
|
[replyto <EmailAddress>]
|
|
4745
4747
|
[cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
|
4746
4748
|
[subject <String>]
|
|
4747
|
-
[<MessageContent>]
|
|
4748
|
-
|
|
4749
|
+
[<MessageContent>]
|
|
4750
|
+
(replace <Tag> <String>)*
|
|
4751
|
+
(replaceregex <RegularExpression> <String> <Tag> <String>)*
|
|
4752
|
+
[html [<Boolean>]] (attach <FileName> [charset <Charset>])*
|
|
4749
4753
|
(embedimage <FileName> <String>)*
|
|
4750
4754
|
[newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
|
4751
4755
|
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
|
@@ -4753,8 +4757,10 @@ gam <UserTypeEntity> sendemail from <EmailAddress>
|
|
|
4753
4757
|
[replyto <EmailAddress>]
|
|
4754
4758
|
[cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
|
4755
4759
|
[subject <String>]
|
|
4756
|
-
[<MessageContent>]
|
|
4757
|
-
|
|
4760
|
+
[<MessageContent>]
|
|
4761
|
+
(replace <Tag> <String>)*
|
|
4762
|
+
(replaceregex <RegularExpression> <String> <Tag> <String>)*
|
|
4763
|
+
[html [<Boolean>]] (attach <FileName> [charset <Charset>])*
|
|
4758
4764
|
(embedimage <FileName> <String>)*
|
|
4759
4765
|
[newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
|
4760
4766
|
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
|
@@ -5560,7 +5566,9 @@ gam create|add user <EmailAddress> [ignorenullpassword] <UserAttribute>*
|
|
|
5560
5566
|
[mailbox <EmailAaddress>]
|
|
5561
5567
|
[replyto <EmailAaddress>]
|
|
5562
5568
|
[<NotifyMessageContent>]
|
|
5563
|
-
(replace <Tag> <UserReplacement>)*
|
|
5569
|
+
(replace <Tag> <UserReplacement>)*
|
|
5570
|
+
(replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
5571
|
+
]
|
|
5564
5572
|
[logpassword <FileName>]
|
|
5565
5573
|
[addnumericsuffixonduplicate <Number>]
|
|
5566
5574
|
|
|
@@ -5569,7 +5577,7 @@ gam <UserTypeEntity> waitformailbox [retries <Number>]
|
|
|
5569
5577
|
gam update user <UserItem> [ignorenullpassword] <UserAttribute>*
|
|
5570
5578
|
[verifynotinvitable|alwaysevict] [noactionifalias]
|
|
5571
5579
|
[updateprimaryemail <RegularExpression> <EmailReplacement>]
|
|
5572
|
-
[updateoufromgroup <FileName> [charset <
|
|
5580
|
+
[updateoufromgroup <FileName> [charset <Charset>]
|
|
5573
5581
|
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
|
5574
5582
|
[fields <FieldNameList>] [keyfield <FieldName>] [datafield <FieldName>]]
|
|
5575
5583
|
[immutableous <OrgUnitEntity>]|
|
|
@@ -5581,10 +5589,12 @@ gam update user <UserItem> [ignorenullpassword] <UserAttribute>*
|
|
|
5581
5589
|
[subject <String>]
|
|
5582
5590
|
[notifypassword <String>]
|
|
5583
5591
|
[from <EmailAaddress>]
|
|
5584
|
-
[mailbox <
|
|
5585
|
-
[replyto <
|
|
5592
|
+
[mailbox <EmailAddress>]
|
|
5593
|
+
[replyto <EmailAddress>]
|
|
5586
5594
|
[<NotifyMessageContent>]
|
|
5587
|
-
(replace <Tag> <UserReplacement>)*
|
|
5595
|
+
(replace <Tag> <UserReplacement>)*
|
|
5596
|
+
(replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
5597
|
+
]
|
|
5588
5598
|
[notifyonupdate [<Boolean>]] [setchangepasswordoncreate [<Boolean>]]
|
|
5589
5599
|
[logpassword <FileName>]
|
|
5590
5600
|
gam delete user <UserItem> [noactionifalias]
|
|
@@ -5603,9 +5613,9 @@ gam info user [<UserItem>]
|
|
|
5603
5613
|
[formatjson]
|
|
5604
5614
|
|
|
5605
5615
|
gam update users <UserTypeEntity> [ignorenullpassword] <UserAttribute>*
|
|
5606
|
-
[verifynotinvitable] [noactionifalias]
|
|
5616
|
+
[verifynotinvitable|alwaysevict] [noactionifalias]
|
|
5607
5617
|
[updateprimaryemail <RegularExpression> <EmailReplacement>]
|
|
5608
|
-
[updateoufromgroup <FileName> [charset <
|
|
5618
|
+
[updateoufromgroup <FileName> [charset <Charset>]
|
|
5609
5619
|
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
|
5610
5620
|
[fields <FieldNameList>] [keyfield <FieldName>] [datafield <FieldName>]]
|
|
5611
5621
|
[clearschema <SchemaName>|<SchemaNameField>]
|
|
@@ -5615,13 +5625,15 @@ gam update users <UserTypeEntity> [ignorenullpassword] <UserAttribute>*
|
|
|
5615
5625
|
[notify <EmailAddressList>
|
|
5616
5626
|
[subject <String>]
|
|
5617
5627
|
[notifypassword <String>]
|
|
5618
|
-
[from <
|
|
5619
|
-
[mailbox <
|
|
5628
|
+
[from <EmailAddress>]
|
|
5629
|
+
[mailbox <EmailAddress>]
|
|
5630
|
+
[replyto <EmailAaddress>]
|
|
5620
5631
|
[<NotifyMessageContent>]
|
|
5621
|
-
(replace <Tag> <UserReplacement>)*
|
|
5632
|
+
(replace <Tag> <UserReplacement>)*
|
|
5633
|
+
(replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
5634
|
+
]
|
|
5622
5635
|
[notifyonupdate [<Boolean>]] [setchangepasswordoncreate [<Boolean>]]
|
|
5623
5636
|
[logpassword <FileName>]
|
|
5624
|
-
[verifynotinvitable]
|
|
5625
5637
|
gam delete users <UserTypeEntity> [noactionifalias]
|
|
5626
5638
|
gam undelete users <UserEntity> [ou|org|orgunit <OrgUnitPath>]
|
|
5627
5639
|
gam suspend users <UserTypeEntity> [noactionifalias]
|
|
@@ -5638,9 +5650,11 @@ gam info users <UserTypeEntity>
|
|
|
5638
5650
|
[formatjson]
|
|
5639
5651
|
|
|
5640
5652
|
gam <UserTypeEntity> update users [ignorenullpassword] <UserAttribute>*
|
|
5641
|
-
[verifynotinvitable] [noactionifalias]
|
|
5653
|
+
[verifynotinvitable|alwaysevict] [noactionifalias]
|
|
5642
5654
|
[updateprimaryemail <RegularExpression> <EmailReplacement>]
|
|
5643
|
-
[updateoufromgroup <
|
|
5655
|
+
[updateoufromgroup <FileName> [charset <Charset>]
|
|
5656
|
+
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
|
5657
|
+
[fields <FieldNameList>] [keyfield <FieldName>] [datafield <FieldName>]]
|
|
5644
5658
|
[clearschema <SchemaName>|<SchemaNameField>]
|
|
5645
5659
|
[createifnotfound] [notfoundpassword (random [<Integer>])|blocklogin|<Password>]
|
|
5646
5660
|
(groups [<GroupRole>] [[delivery] <DeliverySetting>] <GroupEntity>)*
|
|
@@ -5649,12 +5663,14 @@ gam <UserTypeEntity> update users [ignorenullpassword] <UserAttribute>*
|
|
|
5649
5663
|
[subject <String>]
|
|
5650
5664
|
[notifypassword <String>]
|
|
5651
5665
|
[from <EmailAaddress>]
|
|
5652
|
-
[mailbox <
|
|
5666
|
+
[mailbox <EmailAddress>]
|
|
5667
|
+
[replyto <EmailAddress>]
|
|
5653
5668
|
[<NotifyMessageContent>]
|
|
5654
|
-
(replace <Tag> <UserReplacement>)*
|
|
5669
|
+
(replace <Tag> <UserReplacement>)*
|
|
5670
|
+
(replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
5671
|
+
]
|
|
5655
5672
|
[notifyonupdate [<Boolean>]] [setchangepasswordoncreate [<Boolean>]]
|
|
5656
5673
|
[logpassword <FileName>]
|
|
5657
|
-
[verifynotinvitable]
|
|
5658
5674
|
gam <UserTypeEntity> delete users [noactionifalias]
|
|
5659
5675
|
gam <UserEntity> undelete users [ou|org|orgunit <OrgUnitPath>]
|
|
5660
5676
|
gam <UserTypeEntity> suspend users [noactionifalias]
|
|
@@ -6165,7 +6181,7 @@ gam <UserTypeEntity> print focustime|outofoffice|workinglocation
|
|
|
6165
6181
|
|
|
6166
6182
|
<ChatContent> ::=
|
|
6167
6183
|
((text <String>)|
|
|
6168
|
-
(textfile <FileName> [charset <
|
|
6184
|
+
(textfile <FileName> [charset <Charset>])|
|
|
6169
6185
|
(gdoc <UserGoogleDoc>)|
|
|
6170
6186
|
(gcsdoc <StorageBucketObjectName>))
|
|
6171
6187
|
|
|
@@ -6527,7 +6543,7 @@ gam <UserTypeEntity> update drivefile <DriveFileEntity> [copy] [returnidonly|ret
|
|
|
6527
6543
|
[timestamp [<Boolean>]] [timeformat <String>]
|
|
6528
6544
|
<DriveFileUpdateAttribute>*
|
|
6529
6545
|
[(gsheet|csvsheet <SheetEntity> [clearfilter])|(addsheet <String>)]
|
|
6530
|
-
[charset <
|
|
6546
|
+
[charset <Charset>] [columndelimiter <Character>]
|
|
6531
6547
|
|
|
6532
6548
|
<DriveFileCopyAttribute> ::=
|
|
6533
6549
|
(contentrestrictions (readonly false)|(readonly true [reason <String>]) [ownerrestricted [<Boolean>]])|
|
|
@@ -7532,22 +7548,28 @@ gam <UserTypeEntity> print labels|label [todrive <ToDriveAttribute>*]
|
|
|
7532
7548
|
(emlfile <FileName> [charset <Charset>])
|
|
7533
7549
|
|
|
7534
7550
|
gam <UserTypeEntity> draft message
|
|
7535
|
-
<MessageContent>
|
|
7551
|
+
<MessageContent>
|
|
7552
|
+
(replace <Tag> <UserReplacement>)*
|
|
7553
|
+
(replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
7536
7554
|
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
|
7537
|
-
(attach <FileName> [charset <
|
|
7555
|
+
(attach <FileName> [charset <Charset>])*
|
|
7538
7556
|
(embedimage <FileName> <String>)*
|
|
7539
7557
|
gam <UserTypeEntity> import message
|
|
7540
|
-
<MessageContent>
|
|
7558
|
+
<MessageContent>
|
|
7559
|
+
(replace <Tag> <UserReplacement>)*
|
|
7560
|
+
(replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
7541
7561
|
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
|
7542
7562
|
(addlabel <LabelName>)* [labels <LabelNameList>]
|
|
7543
|
-
(attach <FileName> [charset <
|
|
7563
|
+
(attach <FileName> [charset <Charset>])*
|
|
7544
7564
|
(embedimage <FileName> <String>)*
|
|
7545
7565
|
[deleted [<Boolean>]] [checkspam|nevermarkspam [<Boolean>]] [processforcalendar [<Boolean>]]
|
|
7546
7566
|
gam <UserTypeEntity> insert message
|
|
7547
|
-
<MessageContent>
|
|
7567
|
+
<MessageContent>
|
|
7568
|
+
(replace <Tag> <UserReplacement>)*
|
|
7569
|
+
(replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
7548
7570
|
(<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
|
7549
7571
|
(addlabel <LabelName>)* [labels <LabelNameList>]
|
|
7550
|
-
(attach <FileName> [charset <
|
|
7572
|
+
(attach <FileName> [charset <Charset>])*
|
|
7551
7573
|
(embedimage <FileName> <String>)*
|
|
7552
7574
|
[deleted [<Boolean>]]
|
|
7553
7575
|
|
|
@@ -7626,13 +7648,17 @@ gam <UserTypeEntity> print gmailprofile [todrive <ToDriveAttribute>*]
|
|
|
7626
7648
|
# Users - Gmail - Send As/Signature/Vacation
|
|
7627
7649
|
|
|
7628
7650
|
gam <UserTypeEntity> [create|add] sendas <EmailAddress> [name] <String>
|
|
7629
|
-
[<SendAsContent>
|
|
7651
|
+
[<SendAsContent>
|
|
7652
|
+
(replace <Tag> <UserReplacement>)*
|
|
7653
|
+
(replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
7630
7654
|
[html [<Boolean>]] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
|
7631
7655
|
[smtpmsa.host <SMTPHostName> smtpmsa.port 25|465|587
|
|
7632
7656
|
smtpmsa.username <UserName> smtpmsa.password <Password>
|
|
7633
7657
|
[smtpmsa.securitymode none|ssl|starttls]]
|
|
7634
7658
|
gam <UserTypeEntity> update sendas <EmailAddress> [name <String>]
|
|
7635
|
-
[<SendAsContent>
|
|
7659
|
+
[<SendAsContent>
|
|
7660
|
+
(replace <Tag> <UserReplacement>)*
|
|
7661
|
+
(replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
7636
7662
|
[html [<Boolean>]] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
|
7637
7663
|
gam <UserTypeEntity> delete sendas <EmailAddressEntity>
|
|
7638
7664
|
gam <UserTypeEntity> info sendas <EmailAddressEntity> [compact|format|html]
|
|
@@ -7642,7 +7668,9 @@ gam <UserTypeEntity> print sendas [compact]
|
|
|
7642
7668
|
[primary|default] [verifyonly] [todrive <ToDriveAttribute>*]
|
|
7643
7669
|
|
|
7644
7670
|
gam <UserTypeEntity> signature|sig
|
|
7645
|
-
<SignatureContent>
|
|
7671
|
+
<SignatureContent>
|
|
7672
|
+
(replace <Tag> <UserReplacement>)*
|
|
7673
|
+
(replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
7646
7674
|
[html [<Boolean>]] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
|
7647
7675
|
[name <String>]
|
|
7648
7676
|
[primary]
|
|
@@ -7652,7 +7680,9 @@ gam <UserTypeEntity> print signature [compact]
|
|
|
7652
7680
|
[primary|default] [verifyonly] [todrive <ToDriveAttribute>*]
|
|
7653
7681
|
|
|
7654
7682
|
gam <UserTypeEntity> vacation [<Boolean>] [subject <String>]
|
|
7655
|
-
[<VacationMessageContent>
|
|
7683
|
+
[<VacationMessageContent>
|
|
7684
|
+
(replace <Tag> <UserReplacement>)*
|
|
7685
|
+
(replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
7656
7686
|
[html [<Boolean>]] [contactsonly [<Boolean>]] [domainonly [<Boolean>]]
|
|
7657
7687
|
[start|startdate <Date>|Started] [end|enddate <Date>|NotSpecified]
|
|
7658
7688
|
gam <UserTypeEntity> show vacation [compact|format|html] [enabledonly]
|
|
@@ -7779,7 +7809,7 @@ gam <UserTypeEntity> check isinvitable [todrive <ToDriveAttribute>*]
|
|
|
7779
7809
|
|
|
7780
7810
|
<NoteContent> ::=
|
|
7781
7811
|
((text <String>)|
|
|
7782
|
-
(textfile <FileName> [charset <
|
|
7812
|
+
(textfile <FileName> [charset <Charset>])|
|
|
7783
7813
|
(gdoc <UserGoogleDoc>)|
|
|
7784
7814
|
(gcsdoc <StorageBucketObjectName>)|
|
|
7785
7815
|
<JSONData>)
|
|
@@ -1,3 +1,41 @@
|
|
|
1
|
+
7.05.19
|
|
2
|
+
|
|
3
|
+
Added `replaceregex <RegularExpression> <ReplacementString> <Tag> <String>` to the following commands:
|
|
4
|
+
```
|
|
5
|
+
gam sendemail subject <String> <MessageContent>
|
|
6
|
+
gam <UserTypeEntity> sendemail subject <String> <MessageContent>
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
The `<RegularExpression>` is used as a match pattern against `<String>` to produce `<ReplacementString>`.
|
|
10
|
+
Instances of `{Tag}` will be replaced by `<ReplacementString>` in the message subject and body.
|
|
11
|
+
|
|
12
|
+
Added `replaceregex <RegularExpression> <ReplacementString> <Tag> <UserReplacement>` to the following commands:
|
|
13
|
+
```
|
|
14
|
+
gam create user <NotifyMessageContent>
|
|
15
|
+
gam update user <NotifyMessageContent>
|
|
16
|
+
gam update users <NotifyMessageContent>
|
|
17
|
+
gam <UserTypeEntity> update users <NotifyMessageContent>
|
|
18
|
+
gam <UserTypeEntity> draft message <MessageContent>
|
|
19
|
+
gam <UserTypeEntity> import message <MessageContent>
|
|
20
|
+
gam <UserTypeEntity> insert messageo <MessageContent>
|
|
21
|
+
gam <UserTypeEntity> create sendas <SendAsContent>
|
|
22
|
+
gam <UserTypeEntity> update sendas <SendAsContent>
|
|
23
|
+
gam <UserTypeEntity> signature <SignatureContent>
|
|
24
|
+
gam <UserTypeEntity> vacation subject <String> <VacationMessageContent>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The `<RegularExpression>` is used as a match pattern against `<UserReplacement>` to produce `<ReplacementString>`.
|
|
28
|
+
Instances of `{Tag}` will be replaced by `<ReplacementString>` in the indicated items.
|
|
29
|
+
|
|
30
|
+
For example, when adding a phone number to a signature, an unformatted number can be formatted:
|
|
31
|
+
```
|
|
32
|
+
replaceregex "(\d{3})(\d{3})(\d{4})" "(\1) \2-\3" Phone "9876543210"
|
|
33
|
+
replaces 9876543210 with (987) 654-3210
|
|
34
|
+
|
|
35
|
+
replaceregex "(\+\d{2})(\d{3})(\d{3})(\d{3})" "\1 \2 \3 \4" Phone "+61987654321"
|
|
36
|
+
replaces +61421221506 with +61 987 654 321
|
|
37
|
+
```
|
|
38
|
+
|
|
1
39
|
7.05.18
|
|
2
40
|
|
|
3
41
|
Updated `gam calendars <CalendarEntity> show events` and `gam <UserTypeEntity> show events`
|
|
@@ -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.05.
|
|
28
|
+
__version__ = '7.05.19'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -14517,7 +14517,13 @@ def _initTagReplacements():
|
|
|
14517
14517
|
'fieldsSet': set(), 'fields': '',
|
|
14518
14518
|
'schemasSet': set(), 'customFieldMask': None}
|
|
14519
14519
|
|
|
14520
|
-
def _getTagReplacement(tagReplacements, allowSubs):
|
|
14520
|
+
def _getTagReplacement(myarg, tagReplacements, allowSubs):
|
|
14521
|
+
if myarg == 'replace':
|
|
14522
|
+
trregex = None
|
|
14523
|
+
elif myarg == 'replaceregex':
|
|
14524
|
+
trregex = (getREPattern(re.IGNORECASE), getString(Cmd.OB_STRING, minLen=0))
|
|
14525
|
+
else:
|
|
14526
|
+
return False
|
|
14521
14527
|
matchTag = getString(Cmd.OB_TAG)
|
|
14522
14528
|
matchReplacement = getString(Cmd.OB_STRING, minLen=0)
|
|
14523
14529
|
if matchReplacement.startswith('field:'):
|
|
@@ -14562,7 +14568,8 @@ def _getTagReplacement(tagReplacements, allowSubs):
|
|
|
14562
14568
|
tagReplacements['fieldsSet'].add(field)
|
|
14563
14569
|
tagReplacements['fields'] = ','.join(tagReplacements['fieldsSet'])
|
|
14564
14570
|
tagReplacements['tags'][matchTag] = {'field': field, 'subfield': subfield,
|
|
14565
|
-
'matchfield': matchfield, 'matchvalue': matchvalue, 'value': ''
|
|
14571
|
+
'matchfield': matchfield, 'matchvalue': matchvalue, 'value': '',
|
|
14572
|
+
'trregex': trregex}
|
|
14566
14573
|
if field == 'locations' and subfield == 'buildingName':
|
|
14567
14574
|
_makeBuildingIdNameMap()
|
|
14568
14575
|
elif matchReplacement.startswith('schema:'):
|
|
@@ -14580,15 +14587,24 @@ def _getTagReplacement(tagReplacements, allowSubs):
|
|
|
14580
14587
|
tagReplacements['fields'] = ','.join(tagReplacements['fieldsSet'])
|
|
14581
14588
|
tagReplacements['schemasSet'].add(schemaName)
|
|
14582
14589
|
tagReplacements['customFieldMask'] = ','.join(tagReplacements['schemasSet'])
|
|
14583
|
-
tagReplacements['tags'][matchTag] = {'schema': schemaName, 'schemafield': schemaField, 'value': ''
|
|
14590
|
+
tagReplacements['tags'][matchTag] = {'schema': schemaName, 'schemafield': schemaField, 'value': '',
|
|
14591
|
+
'trregex': trregex}
|
|
14584
14592
|
elif ((matchReplacement.find('#') >= 0) and
|
|
14585
14593
|
(matchReplacement.find('#user#') >= 0) or (matchReplacement.find('#email#') >= 0) or (matchReplacement.find('#username#') >= 0)):
|
|
14586
14594
|
if not allowSubs:
|
|
14587
14595
|
usageErrorExit(Msg.USER_SUBS_NOT_ALLOWED_TAG_REPLACEMENT)
|
|
14588
14596
|
tagReplacements['subs'] = True
|
|
14589
|
-
tagReplacements['tags'][matchTag] = {'template': matchReplacement, 'value': ''
|
|
14597
|
+
tagReplacements['tags'][matchTag] = {'template': matchReplacement, 'value': '',
|
|
14598
|
+
'trregex': trregex}
|
|
14590
14599
|
else:
|
|
14591
|
-
|
|
14600
|
+
if trregex is None:
|
|
14601
|
+
tagReplacements['tags'][matchTag] = {'value': matchReplacement}
|
|
14602
|
+
else:
|
|
14603
|
+
try:
|
|
14604
|
+
tagReplacements['tags'][matchTag] = {'value': re.sub(trregex[0], trregex[1], matchReplacement)}
|
|
14605
|
+
except re.error as e:
|
|
14606
|
+
systemErrorExit(ACTION_FAILED_RC, Msg.REGEX_REPLACEMENT_ERROR.format(trregex[1], str(e)))
|
|
14607
|
+
return True
|
|
14592
14608
|
|
|
14593
14609
|
def _getTagReplacementFieldValues(user, i, count, tagReplacements, results=None):
|
|
14594
14610
|
if results is None:
|
|
@@ -14670,6 +14686,12 @@ def _getTagReplacementFieldValues(user, i, count, tagReplacements, results=None)
|
|
|
14670
14686
|
tag['value'] = str(results.get('customSchemas', {}).get(tag['schema'], {}).get(tag['schemafield'], ''))
|
|
14671
14687
|
elif tag.get('template'):
|
|
14672
14688
|
tag['value'] = _substituteForUser(tag['template'], user, userName)
|
|
14689
|
+
trregex = tag.get('trregex', None)
|
|
14690
|
+
if trregex is not None:
|
|
14691
|
+
try:
|
|
14692
|
+
tag['value'] = re.sub(trregex[0], trregex[1], tag['value'])
|
|
14693
|
+
except re.error as e:
|
|
14694
|
+
systemErrorExit(ACTION_FAILED_RC, Msg.REGEX_REPLACEMENT_ERROR.format(trregex[1], str(e)))
|
|
14673
14695
|
|
|
14674
14696
|
RTL_PATTERN = re.compile(r'(?s){RTL}.*?{/RTL}')
|
|
14675
14697
|
RT_PATTERN = re.compile(r'(?s){RT}.*?{/RT}')
|
|
@@ -14922,7 +14944,9 @@ def getRecipients():
|
|
|
14922
14944
|
# gam sendemail [recipient|to] <RecipientEntity> [from <EmailAddress>] [mailbox <EmailAddress>] [replyto <EmailAddress>]
|
|
14923
14945
|
# [cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
|
14924
14946
|
# [subject <String>]
|
|
14925
|
-
# [<MessageContent>]
|
|
14947
|
+
# [<MessageContent>]
|
|
14948
|
+
# (replace <Tag> <String>)*
|
|
14949
|
+
# (replaceregex <RegularExpression> <String> <Tag> <String>)*
|
|
14926
14950
|
# [html [<Boolean>]] (attach <FileName> [charset <CharSet>])*
|
|
14927
14951
|
# (embedimage <FileName> <String>)*
|
|
14928
14952
|
# [newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
|
@@ -14930,7 +14954,9 @@ def getRecipients():
|
|
|
14930
14954
|
# gam <UserTypeEntity> sendemail recipient <RecipientEntity> [replyto <EmailAddress>]
|
|
14931
14955
|
# [cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
|
14932
14956
|
# [subject <String>]
|
|
14933
|
-
# [<MessageContent>]
|
|
14957
|
+
# [<MessageContent>]
|
|
14958
|
+
# (replace <Tag> <String>)*
|
|
14959
|
+
# (replaceregex <RegularExpression> <String> <Tag> <String>)*
|
|
14934
14960
|
# [html [<Boolean>]] (attach <FileName> [charset <CharSet>])*
|
|
14935
14961
|
# (embedimage <FileName> <String>)*
|
|
14936
14962
|
# [newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
|
@@ -14938,7 +14964,9 @@ def getRecipients():
|
|
|
14938
14964
|
# gam <UserTypeEntity> sendemail from <EmailAddress> [replyto <EmailAddress>]
|
|
14939
14965
|
# [cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
|
14940
14966
|
# [subject <String>]
|
|
14941
|
-
# [<MessageContent>]
|
|
14967
|
+
# [<MessageContent>]
|
|
14968
|
+
# (replace <Tag> <String>)*
|
|
14969
|
+
# (replaceregex <RegularExpression> <String> <Tag> <String>)*
|
|
14942
14970
|
# [html [<Boolean>]] (attach <FileName> [charset <CharSet>])*
|
|
14943
14971
|
# (embedimage <FileName> <String>)*
|
|
14944
14972
|
# [newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
|
@@ -15001,8 +15029,8 @@ def doSendEmail(users=None):
|
|
|
15001
15029
|
body['name']['familyName'] = getString(Cmd.OB_STRING, minLen=0, maxLen=60)
|
|
15002
15030
|
elif myarg in {'password', 'notifypassword'}:
|
|
15003
15031
|
body['password'] = notify['password'] = getString(Cmd.OB_PASSWORD, maxLen=100)
|
|
15004
|
-
elif myarg
|
|
15005
|
-
|
|
15032
|
+
elif _getTagReplacement(myarg, tagReplacements, False):
|
|
15033
|
+
pass
|
|
15006
15034
|
elif myarg == 'attach':
|
|
15007
15035
|
attachments.append((getFilename(), getCharSet()))
|
|
15008
15036
|
elif myarg == 'embedimage':
|
|
@@ -39081,7 +39109,10 @@ def _updateCalendarEvents(origUser, user, origCal, calIds, count, calendarEventE
|
|
|
39081
39109
|
if 'description' in updateFieldList and 'description' in event:
|
|
39082
39110
|
body['description'] = event['description']
|
|
39083
39111
|
for replacement in parameters['replaceDescription']:
|
|
39084
|
-
|
|
39112
|
+
try:
|
|
39113
|
+
body['description'] = re.sub(replacement[0], replacement[1], body['description'])
|
|
39114
|
+
except re.error as e:
|
|
39115
|
+
systemErrorExit(ACTION_FAILED_RC, Msg.REGEX_REPLACEMENT_ERROR.format(replacement[1], str(e)))
|
|
39085
39116
|
if 'attendees' in updateFieldList:
|
|
39086
39117
|
if not parameters['clearAttendees']:
|
|
39087
39118
|
if 'attendees' in event:
|
|
@@ -42835,8 +42866,8 @@ def getUserAttributes(cd, updateCmd, noUid=False):
|
|
|
42835
42866
|
notify['mailbox'] = getString(Cmd.OB_EMAIL_ADDRESS)
|
|
42836
42867
|
elif PwdOpts.ProcessArgument(myarg, notify, notFoundBody):
|
|
42837
42868
|
pass
|
|
42838
|
-
elif myarg
|
|
42839
|
-
|
|
42869
|
+
elif _getTagReplacement(myarg, tagReplacements, True):
|
|
42870
|
+
pass
|
|
42840
42871
|
elif myarg == 'admin':
|
|
42841
42872
|
value = getBoolean()
|
|
42842
42873
|
if updateCmd or value:
|
|
@@ -43253,9 +43284,9 @@ def createUserAddAliases(cd, user, aliasList, i, count):
|
|
|
43253
43284
|
# [from <EmailAaddress>]
|
|
43254
43285
|
# [replyto <EmailAaddress>]
|
|
43255
43286
|
# [<NotifyMessageContent>]
|
|
43256
|
-
# (replace <Tag> <UserReplacement>)*
|
|
43287
|
+
# (replace <Tag> <UserReplacement>)*
|
|
43288
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
43257
43289
|
# [logpassword <FileName>] [ignorenullpassword]
|
|
43258
|
-
# [verifynotinvitable]
|
|
43259
43290
|
# [addnumericsuffixonduplicate <Number>]
|
|
43260
43291
|
def doCreateUser():
|
|
43261
43292
|
cd = buildGAPIObject(API.DIRECTORY)
|
|
@@ -43354,8 +43385,9 @@ def verifyUserPrimaryEmail(cd, user, createIfNotFound, i, count):
|
|
|
43354
43385
|
# [notifypassword <String>]
|
|
43355
43386
|
# [from <EmailAaddress>]
|
|
43356
43387
|
# [replyto <EmailAaddress>]
|
|
43357
|
-
# [<NotifyMessageContent>
|
|
43358
|
-
#
|
|
43388
|
+
# [<NotifyMessageContent>
|
|
43389
|
+
# (replace <Tag> <UserReplacement>)*
|
|
43390
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
43359
43391
|
# [notifyonupdate [<Boolean>]]
|
|
43360
43392
|
# [logpassword <FileName>] [ignorenullpassword]
|
|
43361
43393
|
def updateUsers(entityList):
|
|
@@ -57348,7 +57380,10 @@ def writeReturnIdLink(returnIdLink, mimeType, result):
|
|
|
57348
57380
|
|
|
57349
57381
|
def processFilenameReplacements(name, replacements):
|
|
57350
57382
|
for replacement in replacements:
|
|
57351
|
-
|
|
57383
|
+
try:
|
|
57384
|
+
name = re.sub(replacement[0], replacement[1], name)
|
|
57385
|
+
except re.error as e:
|
|
57386
|
+
systemErrorExit(ACTION_FAILED_RC, Msg.REGEX_REPLACEMENT_ERROR.format(replacement[1], str(e)))
|
|
57352
57387
|
return name
|
|
57353
57388
|
|
|
57354
57389
|
def addTimestampToFilename(parameters, body):
|
|
@@ -69991,8 +70026,8 @@ def _draftImportInsertMessage(users, operation):
|
|
|
69991
70026
|
internalDateSource = 'dateHeader'
|
|
69992
70027
|
if checkArgumentPresent('emlutf8'):
|
|
69993
70028
|
emlEncoding = UTF8
|
|
69994
|
-
elif myarg
|
|
69995
|
-
|
|
70029
|
+
elif _getTagReplacement(myarg, tagReplacements, True):
|
|
70030
|
+
pass
|
|
69996
70031
|
elif operation in IMPORT_INSERT and myarg == 'addlabel':
|
|
69997
70032
|
addLabelNames.append(getString(Cmd.OB_LABEL_NAME, minLen=1))
|
|
69998
70033
|
elif operation in IMPORT_INSERT and myarg == 'labels':
|
|
@@ -70127,7 +70162,9 @@ def _draftImportInsertMessage(users, operation):
|
|
|
70127
70162
|
userGmailServiceNotEnabledWarning(user, i, count)
|
|
70128
70163
|
|
|
70129
70164
|
# gam <UserTypeEntity> draft message
|
|
70130
|
-
# <MessageContent>
|
|
70165
|
+
# <MessageContent>
|
|
70166
|
+
# (replace <Tag> <UserReplacement>)*
|
|
70167
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
70131
70168
|
# (<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
|
70132
70169
|
# (attach <FileName> [charset <CharSet>])*
|
|
70133
70170
|
# (embedimage <FileName> <String>)*
|
|
@@ -70135,7 +70172,9 @@ def draftMessage(users):
|
|
|
70135
70172
|
_draftImportInsertMessage(users, 'draft')
|
|
70136
70173
|
|
|
70137
70174
|
# gam <UserTypeEntity> import message
|
|
70138
|
-
# <MessageContent>
|
|
70175
|
+
# <MessageContent>
|
|
70176
|
+
# (replace <Tag> <UserReplacement>)*
|
|
70177
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
70139
70178
|
# (<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
|
70140
70179
|
# (addlabel <LabelName>)* [labels <LabelNameList>]
|
|
70141
70180
|
# (attach <FileName> [charset <CharSet>])*
|
|
@@ -70145,7 +70184,9 @@ def importMessage(users):
|
|
|
70145
70184
|
_draftImportInsertMessage(users, 'import')
|
|
70146
70185
|
|
|
70147
70186
|
# gam <UserTypeEntity> insert message
|
|
70148
|
-
# <MessageContent>
|
|
70187
|
+
# <MessageContent>
|
|
70188
|
+
# (replace <Tag> <UserReplacement>)*
|
|
70189
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
70149
70190
|
# (<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
|
70150
70191
|
# (addlabel <LabelName>)* [labels <LabelNameList>]
|
|
70151
70192
|
# (attach <FileName> [charset <CharSet>])*
|
|
@@ -72432,8 +72473,8 @@ def _processSendAs(user, i, count, entityType, emailAddress, j, jcount, gmail, f
|
|
|
72432
72473
|
return userDefined
|
|
72433
72474
|
|
|
72434
72475
|
def getSendAsAttributes(myarg, body, tagReplacements):
|
|
72435
|
-
if myarg
|
|
72436
|
-
|
|
72476
|
+
if _getTagReplacement(myarg, tagReplacements, True):
|
|
72477
|
+
pass
|
|
72437
72478
|
elif myarg == 'name':
|
|
72438
72479
|
body['displayName'] = getString(Cmd.OB_NAME, minLen=0)
|
|
72439
72480
|
elif myarg == 'replyto':
|
|
@@ -72452,13 +72493,17 @@ SMTPMSA_SECURITY_MODES = ['none', 'ssl', 'starttls']
|
|
|
72452
72493
|
SMTPMSA_REQUIRED_FIELDS = ['host', 'port', 'username', 'password']
|
|
72453
72494
|
|
|
72454
72495
|
# gam <UserTypeEntity> [create] sendas <EmailAddress> [name] <String>
|
|
72455
|
-
# [<SendAsContent>
|
|
72496
|
+
# [<SendAsContent>
|
|
72497
|
+
# (replace <Tag> <UserReplacement>)*
|
|
72498
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
72456
72499
|
# [html [<Boolean>]] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
|
72457
72500
|
# [smtpmsa.host <SMTPHostName> smtpmsa.port 25|465|587
|
|
72458
72501
|
# smtpmsa.username <UserName> smtpmsa.password <Password>
|
|
72459
72502
|
# [smtpmsa.securitymode none|ssl|starttls]]
|
|
72460
72503
|
# gam <UserTypeEntity> update sendas <EmailAddress> [name <String>]
|
|
72461
|
-
# [<SendAsContent>
|
|
72504
|
+
# [<SendAsContent>
|
|
72505
|
+
# (replace <Tag> <UserReplacement>)*
|
|
72506
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
72462
72507
|
# [html [<Boolean>]] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
|
72463
72508
|
def createUpdateSendAs(users):
|
|
72464
72509
|
updateCmd = Act.Get() == Act.UPDATE
|
|
@@ -73295,6 +73340,7 @@ def printShowCSEKeyPairs(users):
|
|
|
73295
73340
|
# gam <UserTypeEntity> signature|sig
|
|
73296
73341
|
# <SignatureContent>
|
|
73297
73342
|
# (replace <Tag> <String>)*
|
|
73343
|
+
# (replaceregex <RegularExpression> <String> <Tag> <String>)*
|
|
73298
73344
|
# [html [<Boolean>]] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
|
73299
73345
|
# [name <String>]
|
|
73300
73346
|
# [primary]
|
|
@@ -73388,7 +73434,9 @@ def _showVacation(user, i, count, result, showDisabled, sigReplyFormat):
|
|
|
73388
73434
|
Ind.Decrement()
|
|
73389
73435
|
|
|
73390
73436
|
# gam <UserTypeEntity> vacation [<Boolean>] [subject <String>]
|
|
73391
|
-
# [<VacationMessageContent>
|
|
73437
|
+
# [<VacationMessageContent>
|
|
73438
|
+
# (replace <Tag> <UserReplacement>)*
|
|
73439
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
73392
73440
|
# [html [<Boolean>]] [contactsonly [<Boolean>]] [domainonly [<Boolean>]]
|
|
73393
73441
|
# [start|startdate <Date>|Started] [end|enddate <Date>|NotSpecified]
|
|
73394
73442
|
def setVacation(users):
|
|
@@ -73406,8 +73454,8 @@ def setVacation(users):
|
|
|
73406
73454
|
message, _, html = getStringOrFile(myarg)
|
|
73407
73455
|
if html:
|
|
73408
73456
|
responseBodyType = 'responseBodyHtml'
|
|
73409
|
-
elif myarg
|
|
73410
|
-
|
|
73457
|
+
elif _getTagReplacement(myarg, tagReplacements, True):
|
|
73458
|
+
pass
|
|
73411
73459
|
elif myarg == 'html':
|
|
73412
73460
|
if getBoolean():
|
|
73413
73461
|
responseBodyType = 'responseBodyHtml'
|
|
@@ -465,6 +465,7 @@ REASON_ONLY_VALID_WITH_CONTENTRESTRICTIONS_READONLY_TRUE = 'reason only valid wi
|
|
|
465
465
|
REAUTHENTICATION_IS_NEEDED = 'Reauthentication is needed, please run\n\ngam oauth create'
|
|
466
466
|
RECOMMEND_RUNNING_GAM_ROTATE_SAKEY = 'Recommend running "gam rotate sakey" to get a new key\n'
|
|
467
467
|
REFUSING_TO_DEPROVISION_DEVICES = 'Refusing to deprovision {0} devices because acknowledge_device_touch_requirement not specified.\nDeprovisioning a device means the device will have to be physically wiped and re-enrolled to be managed by your domain again.\nThis requires physical access to the device and is very time consuming to perform for each device.\nPlease add "acknowledge_device_touch_requirement" to the GAM command if you understand this and wish to proceed with the deprovision.\nPlease also be aware that deprovisioning can have an effect on your device license count.\nSee https://support.google.com/chrome/a/answer/3523633 for full details.'
|
|
468
|
+
REGEX_REPLACEMENT_ERROR = 'Regular expression replacement string "{0}" error: {1}'
|
|
468
469
|
REPLY_TO_CUSTOM_REQUIRES_EMAIL_ADDRESS = 'replyto REPLY_TO_CUSTOM requires customReplyTo <EmailAddress>'
|
|
469
470
|
REQUEST_COMPLETED_NO_FILES = 'Request completed but no results/files were returned, try requesting again'
|
|
470
471
|
REQUEST_NOT_COMPLETE = 'Request needs to be completed before downloading, current status is: {0}'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|