mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-04 06:11:39 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7e97f68013 | ||
|
|
48ef2450fd | ||
|
|
ec769703d6 | ||
|
|
e2984ca10b | ||
|
|
7400bfab70 |
@@ -1894,136 +1894,6 @@ gam calendar|calendars <CalendarEntity> print settings [todrive <ToDriveAttribut
|
||||
[formatjson [quotechar <Character>]]
|
||||
gam calendar|calendars <CalendarEntity> modify <CalendarSettings>+
|
||||
|
||||
# Chrome Browser Cloud Management
|
||||
|
||||
<QueryBrowser> ::= <String>
|
||||
See: https://support.google.com/chrome/a/answer/9681204#retrieve_all_chrome_devices_for_an_account
|
||||
<QueryBrowserList> ::= "<QueryBrowser>(,<QueryBrowser>)*"
|
||||
|
||||
<BrowserEntity> ::=
|
||||
<DeviceIDList> |
|
||||
(query:<QueryBrowser>)|(query:orgunitpath:<OrgUnitPath>)|(query <QueryBrowser>) |
|
||||
(browserou <OrgUnitItem>) | (browserous <OrgUnitList>) |
|
||||
<FileSelector> | <CSVFileSelector>
|
||||
|
||||
<BrowserAttribute> ::=
|
||||
(annotatedassetid|asset|assetid <String>)|
|
||||
(annotatedlocation|location <String>)|
|
||||
(annotatednotes|notes <String>)|(updatenotes <String>)|
|
||||
(annotateduser|user <String>
|
||||
|
||||
<BrowserFieldName> ::=
|
||||
annotatedassetid|asset|assetid|
|
||||
annotatedlocation|location|
|
||||
annotatednotes|notes|
|
||||
annotateduser|user|
|
||||
browsers|
|
||||
browserversions|
|
||||
deviceid|
|
||||
extensioncount|
|
||||
installedbrowserversion|
|
||||
lastactivitytime|
|
||||
lastdeviceuser|
|
||||
lastdeviceusers|
|
||||
lastpolicyfetchtime|
|
||||
lastregistrationtime|
|
||||
laststatusreporttime|
|
||||
machineextensionpolicies|
|
||||
machinename|
|
||||
machinepolicies|
|
||||
orgunitpath|org|orgunit|
|
||||
osarchitecture|
|
||||
osplatform|
|
||||
osplatformversion|
|
||||
osversion|
|
||||
ou|
|
||||
policycount|
|
||||
safebrowsingclickthroughcount|
|
||||
serialnumber|
|
||||
virtualdeviceid
|
||||
<BrowserFieldNameList> ::= "<BrowseFieldName>(,<BrowserFieldName>)*"
|
||||
|
||||
<BrowserOrderByFieldName> ::=
|
||||
annotatedassetid|assetassetid|
|
||||
annotatedlocation|location|
|
||||
annotatednotes|notes|
|
||||
annotateduser|user|
|
||||
browserversionchannel|
|
||||
browserversionsortable|
|
||||
deviceid|id|
|
||||
enrollmentdate|
|
||||
extensioncount|
|
||||
lastactivity|
|
||||
lastsignedinuser|
|
||||
lastsync|
|
||||
machinename|
|
||||
orgunit|ou|org|
|
||||
osversion|
|
||||
osversionsortable|
|
||||
platformmajorversion|
|
||||
policycount
|
||||
|
||||
gam delete browser <DeviceID>
|
||||
gam update browser <BrowserEntity> <BrowserAttibute>+
|
||||
gam move browsers ou|org|orgunit <OrgUnitPath>
|
||||
((ids <DeviceIDList>) |
|
||||
(queries <QueryBrowserList> [querytime<String> <Time>]) |
|
||||
(browserou <OrgUnitItem>) | (browserous <OrgUnitList>) |
|
||||
<FileSelector> | <CSVFileSelector>)
|
||||
[batchsize <Integer>]
|
||||
|
||||
gam info browser <DeviceID>
|
||||
[basic|full|annotated] <BrowserFieldName>* [fields <BrowserFieldNameList>]
|
||||
[formatjson]
|
||||
gam show browsers
|
||||
([ou|org|orgunit|browserou <OrgUnitPath>] [(query <QueryBrowser>)|(queries <QueryBrowserList>))|(select <BrowserEntity>))
|
||||
[querytime<String> <Time>]
|
||||
[orderby <BrowserOrderByFieldName> [ascending|descending]]
|
||||
[basic|full|allfields|annotated] <BrowserFieldName>* [fields <BrowserFieldNameList>]
|
||||
[formatjson]
|
||||
gam print browsers [todrive <ToDriveAttribute>*]
|
||||
([ou|org|orgunit|browserou <OrgUnitPath>] [(query <QueryBrowser>)|(queries <QueryBrowserList>))|(select <BrowserEntity>))
|
||||
[querytime<String> <Time>]
|
||||
[orderby <BrowserOrderByFieldName> [ascending|descending]]
|
||||
[basic|full|allfields|annotated] <BrowserFieldName>* [fields <BrowserFieldNameList>]
|
||||
[sortheaders]
|
||||
[formatjson [quotechar <Character>]]
|
||||
|
||||
gam create browsertoken
|
||||
[ou|org|orgunit|browserou <OrgUnitPath>] [expire|expires <Time>]
|
||||
[formatjson]
|
||||
gam revoke browsertoken <BrowserTokenPermanentID>
|
||||
|
||||
<BrowserTokenFieldName> ::=
|
||||
createtime|
|
||||
creatorid|
|
||||
customerid|
|
||||
expiretime|
|
||||
org|
|
||||
orgunit|
|
||||
orgunitpath|
|
||||
ou|
|
||||
revoketime|
|
||||
revokerid|
|
||||
state|
|
||||
token|
|
||||
tokenpermanentid
|
||||
<BrowserTokenFieldNameList> ::= "<BrowserTokenFieldName>(,<BrowserTokenFieldName>)*"
|
||||
|
||||
gam show browsertokens
|
||||
([ou|org|orgunit|browserou <OrgUnitPath>] [(query <QueryBrowserToken>)|(queries <QueryBrowserTokenList>)))
|
||||
[querytime<String> <Time>]
|
||||
[orderby <BrowserTokenFieldName> [ascending|descending]]
|
||||
[allfields] <BrowserTokenFieldName>* [fields <BrowserTokenFieldNameList>]
|
||||
[formatjson]
|
||||
gam print browsertokens [todrive <ToDriveAttribute>*]
|
||||
([ou|org|orgunit|browserou <OrgUnitPath>] [(query <QueryBrowserToken>)|(queries <QueryBrowserTokenList>)))
|
||||
[querytime<String> <Time>]
|
||||
[orderby <BrowserTokenFieldName> [ascending|descending]]
|
||||
[allfields] <BrowserTokenFieldName>* [fields <BrowserTokenFieldNameList>]
|
||||
[sortheaders]
|
||||
[formatjson [quotechar <Character>]]
|
||||
|
||||
# Chat Bot
|
||||
|
||||
<ChatContent> ::=
|
||||
@@ -2136,6 +2006,136 @@ gam info chatmessage name <ChatMessage>
|
||||
gam info chatevent name <ChatEvent>
|
||||
[formatjson]
|
||||
|
||||
# Chrome Browser Cloud Management
|
||||
|
||||
<QueryBrowser> ::= <String>
|
||||
See: https://support.google.com/chrome/a/answer/9681204#retrieve_all_chrome_devices_for_an_account
|
||||
<QueryBrowserList> ::= "<QueryBrowser>(,<QueryBrowser>)*"
|
||||
|
||||
<BrowserEntity> ::=
|
||||
<DeviceIDList> |
|
||||
(query:<QueryBrowser>)|(query:orgunitpath:<OrgUnitPath>)|(query <QueryBrowser>) |
|
||||
(browserou <OrgUnitItem>) | (browserous <OrgUnitList>) |
|
||||
<FileSelector> | <CSVFileSelector>
|
||||
|
||||
<BrowserAttribute> ::=
|
||||
(annotatedassetid|asset|assetid <String>)|
|
||||
(annotatedlocation|location <String>)|
|
||||
(annotatednotes|notes <String>)|(updatenotes <String>)|
|
||||
(annotateduser|user <String>
|
||||
|
||||
<BrowserFieldName> ::=
|
||||
annotatedassetid|asset|assetid|
|
||||
annotatedlocation|location|
|
||||
annotatednotes|notes|
|
||||
annotateduser|user|
|
||||
browsers|
|
||||
browserversions|
|
||||
deviceid|
|
||||
extensioncount|
|
||||
installedbrowserversion|
|
||||
lastactivitytime|
|
||||
lastdeviceuser|
|
||||
lastdeviceusers|
|
||||
lastpolicyfetchtime|
|
||||
lastregistrationtime|
|
||||
laststatusreporttime|
|
||||
machineextensionpolicies|
|
||||
machinename|
|
||||
machinepolicies|
|
||||
orgunitpath|org|orgunit|
|
||||
osarchitecture|
|
||||
osplatform|
|
||||
osplatformversion|
|
||||
osversion|
|
||||
ou|
|
||||
policycount|
|
||||
safebrowsingclickthroughcount|
|
||||
serialnumber|
|
||||
virtualdeviceid
|
||||
<BrowserFieldNameList> ::= "<BrowserFieldName>(,<BrowserFieldName>)*"
|
||||
|
||||
<BrowserOrderByFieldName> ::=
|
||||
annotatedassetid|assetassetid|
|
||||
annotatedlocation|location|
|
||||
annotatednotes|notes|
|
||||
annotateduser|user|
|
||||
browserversionchannel|
|
||||
browserversionsortable|
|
||||
deviceid|id|
|
||||
enrollmentdate|
|
||||
extensioncount|
|
||||
lastactivity|
|
||||
lastsignedinuser|
|
||||
lastsync|
|
||||
machinename|
|
||||
orgunit|ou|org|
|
||||
osversion|
|
||||
osversionsortable|
|
||||
platformmajorversion|
|
||||
policycount
|
||||
|
||||
gam delete browser <DeviceID>
|
||||
gam update browser <BrowserEntity> <BrowserAttibute>+
|
||||
gam move browsers ou|org|orgunit <OrgUnitPath>
|
||||
((ids <DeviceIDList>) |
|
||||
(queries <QueryBrowserList> [querytime<String> <Time>]) |
|
||||
(browserou <OrgUnitItem>) | (browserous <OrgUnitList>) |
|
||||
<FileSelector> | <CSVFileSelector>)
|
||||
[batchsize <Integer>]
|
||||
|
||||
gam info browser <DeviceID>
|
||||
[basic|full|annotated] <BrowserFieldName>* [fields <BrowserFieldNameList>]
|
||||
[formatjson]
|
||||
gam show browsers
|
||||
([ou|org|orgunit|browserou <OrgUnitPath>] [(query <QueryBrowser>)|(queries <QueryBrowserList>))|(select <BrowserEntity>))
|
||||
[querytime<String> <Time>]
|
||||
[orderby <BrowserOrderByFieldName> [ascending|descending]]
|
||||
[basic|full|allfields|annotated] <BrowserFieldName>* [fields <BrowserFieldNameList>]
|
||||
[formatjson]
|
||||
gam print browsers [todrive <ToDriveAttribute>*]
|
||||
([ou|org|orgunit|browserou <OrgUnitPath>] [(query <QueryBrowser>)|(queries <QueryBrowserList>))|(select <BrowserEntity>))
|
||||
[querytime<String> <Time>]
|
||||
[orderby <BrowserOrderByFieldName> [ascending|descending]]
|
||||
[basic|full|allfields|annotated] <BrowserFieldName>* [fields <BrowserFieldNameList>]
|
||||
[sortheaders]
|
||||
[formatjson [quotechar <Character>]]
|
||||
|
||||
gam create browsertoken
|
||||
[ou|org|orgunit|browserou <OrgUnitPath>] [expire|expires <Time>]
|
||||
[formatjson]
|
||||
gam revoke browsertoken <BrowserTokenPermanentID>
|
||||
|
||||
<BrowserTokenFieldName> ::=
|
||||
createtime|
|
||||
creatorid|
|
||||
customerid|
|
||||
expiretime|
|
||||
org|
|
||||
orgunit|
|
||||
orgunitpath|
|
||||
ou|
|
||||
revoketime|
|
||||
revokerid|
|
||||
state|
|
||||
token|
|
||||
tokenpermanentid
|
||||
<BrowserTokenFieldNameList> ::= "<BrowserTokenFieldName>(,<BrowserTokenFieldName>)*"
|
||||
|
||||
gam show browsertokens
|
||||
([ou|org|orgunit|browserou <OrgUnitPath>] [(query <QueryBrowserToken>)|(queries <QueryBrowserTokenList>)))
|
||||
[querytime<String> <Time>]
|
||||
[orderby <BrowserTokenFieldName> [ascending|descending]]
|
||||
[allfields] <BrowserTokenFieldName>* [fields <BrowserTokenFieldNameList>]
|
||||
[formatjson]
|
||||
gam print browsertokens [todrive <ToDriveAttribute>*]
|
||||
([ou|org|orgunit|browserou <OrgUnitPath>] [(query <QueryBrowserToken>)|(queries <QueryBrowserTokenList>)))
|
||||
[querytime<String> <Time>]
|
||||
[orderby <BrowserTokenFieldName> [ascending|descending]]
|
||||
[allfields] <BrowserTokenFieldName>* [fields <BrowserTokenFieldNameList>]
|
||||
[sortheaders]
|
||||
[formatjson [quotechar <Character>]]
|
||||
|
||||
# Chrome Installed Apps Counts
|
||||
|
||||
gam show chromeapps
|
||||
@@ -2190,6 +2190,68 @@ gam show chromeneedsattn
|
||||
(ous <OrgUnitList>)|(ous_and_children <OrgUnitList>)]
|
||||
[formatjson]
|
||||
|
||||
# Chrome Profile Management
|
||||
|
||||
<ChromeProfileFieldName> ::=
|
||||
affiliationstate|
|
||||
annotatedlocation|
|
||||
annotateduser|
|
||||
attestationcredential|
|
||||
browserchannel|
|
||||
browserversion|
|
||||
deviceinfo|
|
||||
displayname|
|
||||
extensioncount|
|
||||
firstenrollmenttime|
|
||||
identityprovider|
|
||||
lastactivitytime|
|
||||
lastpolicyfetchtime|
|
||||
lastpolicysynctime|
|
||||
laststatusreporttime|
|
||||
name|
|
||||
osplatformtype|
|
||||
osplatformversion|
|
||||
osversion|
|
||||
policycount|
|
||||
profileid|
|
||||
profilepermanentid|
|
||||
reportingdata|
|
||||
useremail|
|
||||
userid
|
||||
<ChromeProfileFieldNameList> ::= "<ChromeProfileFieldName>(,<ChromeProfileFieldName>)*"
|
||||
|
||||
<ChromeProfileOrderByFieldName> ::=
|
||||
affiliationstate|
|
||||
browserchannel|
|
||||
browserversion|
|
||||
displayname|
|
||||
extensioncount|
|
||||
firstenrollmenttime|
|
||||
identityprovider|
|
||||
lastactivitytime|
|
||||
lastpolicysynctime|
|
||||
laststatusreporttime|
|
||||
osplatformtype|
|
||||
osversion|
|
||||
policycount|
|
||||
profileid|
|
||||
useremail
|
||||
|
||||
gam delete chromeprofile <ChromeProfileName>
|
||||
|
||||
gam info chromeprofile <ChromeProfileName>
|
||||
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
||||
gam show chromeprofiles
|
||||
[filtertime.* <Time>] [filter <String>]
|
||||
[orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
|
||||
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
||||
[formatjson]
|
||||
gam print chromeprofiles [todrive <ToDriveAttribute>*]
|
||||
[filtertime.* <Time>] [filter <String>]
|
||||
[orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
|
||||
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
||||
[[formatjson [quotechar <Character>]]
|
||||
|
||||
# Chrome Versions Counts
|
||||
|
||||
gam show chromeversions
|
||||
@@ -7518,7 +7580,7 @@ gam <UserTypeEntity> show messages|threads
|
||||
[labelmatchpattern <RegularExpression>] [sendermatchpattern <RegularExpression>]
|
||||
[countsonly|positivecountsonly] [useronly]
|
||||
[headers all|<SMTPHeaderList>] [dateheaderformat iso|rfc2822|<String>] [dateheaderconverttimezone [<Boolean>]]
|
||||
[showlabels] [delimiter <Character>] [showbody] [showdate] [showsize] [showsnippet]
|
||||
[showlabels] [delimiter <Character>] [showbody] [showhtml] [showdate] [showsize] [showsnippet]
|
||||
[[attachmentnamepattern <RegularExpression>]
|
||||
[showattachments [noshowtextplain]]
|
||||
[saveattachments [targetfolder <FilePath>] [overwrite [<Boolean>]]]
|
||||
@@ -7529,7 +7591,7 @@ gam <UserTypeEntity> print messages|threads [todrive <ToDriveAttribute>*]
|
||||
[labelmatchpattern <RegularExpression>] [sendermatchpattern <RegularExpression>]
|
||||
[countsonly|positivecountsonly] [useronly]
|
||||
[headers all|<SMTPHeaderList>] [dateheaderformat iso|rfc2822|<String> [dateheaderconverttimezone [<Boolean>]]]
|
||||
[showlabels] [delimiter <Character>] [showbody] [showdate] [showsize] [showsnippet]
|
||||
[showlabels] [delimiter <Character>] [showbody] [showhtml] [showdate] [showsize] [showsnippet]
|
||||
[convertcrnl] [delimiter <Character>]
|
||||
[[attachmentnamepattern <RegularExpression>]
|
||||
[showattachments [noshowtextplain]]]
|
||||
|
||||
@@ -1,3 +1,14 @@
|
||||
7.01.00
|
||||
|
||||
Fixed bug in `gam update chromepolicy` that caused some policy updates to fail.
|
||||
|
||||
Added option `showhtml` to `gam <UserTypeEntity> print|show messages` that, when used with `showbody`,
|
||||
will display message body content of type HTML.
|
||||
|
||||
Added support for manageing/displaying Chrome profiles.
|
||||
|
||||
* See: https://github.com/GAM-team/GAM/wiki/Chrome-Profile-Management
|
||||
|
||||
7.00.40
|
||||
|
||||
Updated `gam <UserTypeEntity> update serviceaccount` to properly set the readonly scope
|
||||
@@ -7,6 +18,8 @@ for `[R] 35) Meet API (supports readonly)` as it is a special case.
|
||||
|
||||
Supported MacOS versions are now in the download filename.
|
||||
|
||||
Minor code fixes.
|
||||
|
||||
7.00.38
|
||||
|
||||
Fixed logic flaw in `gam print|show policies` where non-matching policies were displayed.
|
||||
|
||||
@@ -11,12 +11,15 @@ from gam.gamlib.glverlibs import GAM_VER_LIBS
|
||||
with open("gam/__init__.py") as f:
|
||||
version_file = f.read()
|
||||
version = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", version_file, re.M).group(1)
|
||||
version_tuple = "(" + version.split("-")[0].replace(".", ", ") + ", 0)"
|
||||
|
||||
version_list = [int(i) for i in version.split('.')]
|
||||
while len(version_list) < 4:
|
||||
version_list.append(0)
|
||||
version_tuple = tuple(version_list)
|
||||
version_str = str(version_tuple)
|
||||
with open("version_info.txt.in") as f:
|
||||
version_info = f.read()
|
||||
version_info = version_info.replace("{VERSION}", version).replace(
|
||||
"{VERSION_TUPLE}", version_tuple
|
||||
"{VERSION_TUPLE}", version_str
|
||||
)
|
||||
with open("version_info.txt", "w") as f:
|
||||
f.write(version_info)
|
||||
|
||||
@@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki
|
||||
"""
|
||||
|
||||
__author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
|
||||
__version__ = '7.00.40'
|
||||
__version__ = '7.01.00'
|
||||
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
||||
|
||||
#pylint: disable=wrong-import-position
|
||||
@@ -25122,6 +25122,192 @@ def doUpdateBrowsers():
|
||||
except (GAPI.badRequest, GAPI.resourceNotFound, GAPI.forbidden):
|
||||
checkEntityAFDNEorAccessErrorExit(None, Ent.CHROME_BROWSER, deviceId, i, count)
|
||||
|
||||
def _getChromeProfileName():
|
||||
profileName = getString(Cmd.OB_CHROMEPROFILE_ID)
|
||||
if not profileName.startswith('customers'):
|
||||
customerId = _getCustomerId()
|
||||
profileName = f'customers/{customerId}/profiles/{profileName}'
|
||||
return profileName
|
||||
|
||||
# gam delete chromeprofile <ChromeProfileName>
|
||||
def doDeleteChromeProfile():
|
||||
cm = buildGAPIObject(API.CHROMEMANAGEMENT)
|
||||
profileName = _getChromeProfileName()
|
||||
checkForExtraneousArguments()
|
||||
try:
|
||||
callGAPI(cm.customers().profiles(), 'delete',
|
||||
throwReasons=[GAPI.INVALID_ARGUMENT, GAPI.NOT_FOUND, GAPI.PERMISSION_DENIED],
|
||||
name=profileName)
|
||||
entityActionPerformed([Ent.CHROME_PROFILE, profileName])
|
||||
except (GAPI.invalidArgument, GAPI.notFound, GAPI.permissionDenied) as e:
|
||||
entityActionFailedExit([Ent.CHROME_PROFILE, profileName], str(e))
|
||||
|
||||
CHROMEPROFILE_TIME_OBJECTS = {
|
||||
'firstEnrollmentTime',
|
||||
'lastActivityTime',
|
||||
'lastPolicyFetchTime',
|
||||
'lastPolicySyncTime',
|
||||
'lastStatusReportTime',
|
||||
}
|
||||
|
||||
def _showChromeProfile(profile, FJQC, i=0, count=0):
|
||||
if FJQC.formatJSON:
|
||||
printLine(json.dumps(cleanJSON(profile, timeObjects=CHROMEPROFILE_TIME_OBJECTS),
|
||||
ensure_ascii=False, sort_keys=True))
|
||||
return
|
||||
printEntity([Ent.CHROME_PROFILE, profile['name']], i, count)
|
||||
Ind.Increment()
|
||||
showJSON(None, profile, timeObjects=CHROMEPROFILE_TIME_OBJECTS)
|
||||
Ind.Decrement()
|
||||
|
||||
CHROMEPROFILE_FIELDS_CHOICE_MAP = {
|
||||
'affiliationstate': 'affiliationState',
|
||||
'annotatedlocation': 'annotatedLocation',
|
||||
'annotateduser': 'annotatedUser',
|
||||
'attestationcredential': 'attestationCredential',
|
||||
'browserchannel': 'browserChannel',
|
||||
'browserversion': 'browserVersion',
|
||||
'deviceinfo': 'deviceInfo',
|
||||
'displayname': 'displayName',
|
||||
'extensioncount': 'extensionCount',
|
||||
'firstenrollmenttime': 'firstEnrollmentTime',
|
||||
'identityprovider':'identityProvider',
|
||||
'lastactivitytime': 'lastActivityTime',
|
||||
'lastpolicyfetchtime': 'lastPolicyFetchTime',
|
||||
'lastpolicysynctime': 'lastPolicySyncTime',
|
||||
'laststatusreporttime': 'lastStatusReportTime',
|
||||
'name': 'name',
|
||||
'osplatformtype': 'osPlatformType',
|
||||
'osplatformversion':'osPlatformVersion',
|
||||
'osversion': 'osVersion',
|
||||
'policycount': 'policyCount',
|
||||
'profileid': 'profileId',
|
||||
'profilepermanentid': 'profilePermanentId',
|
||||
'reportingdata': 'reportingData',
|
||||
'useremail': 'userEmail',
|
||||
'userid': 'userId',
|
||||
}
|
||||
|
||||
# gam info chromeprofile <ChromeProfileName>
|
||||
# <ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
||||
# [formatjson]
|
||||
def doInfoChromeProfile():
|
||||
cm = buildGAPIObject(API.CHROMEMANAGEMENT)
|
||||
profileName = _getChromeProfileName()
|
||||
fieldsList = []
|
||||
FJQC = FormatJSONQuoteChar()
|
||||
while Cmd.ArgumentsRemaining():
|
||||
myarg = getArgument()
|
||||
if getFieldsList(myarg, CHROMEPROFILE_FIELDS_CHOICE_MAP, fieldsList, initialField='name'):
|
||||
pass
|
||||
else:
|
||||
FJQC.GetFormatJSON(myarg)
|
||||
fields = ','.join(set(fieldsList))
|
||||
try:
|
||||
profile = callGAPI(cm.customers().profiles(), 'get',
|
||||
throwReasons=[GAPI.INVALID_ARGUMENT, GAPI.NOT_FOUND, GAPI.PERMISSION_DENIED],
|
||||
name=profileName, fields=fields)
|
||||
_showChromeProfile(profile, FJQC)
|
||||
except (GAPI.invalidArgument, GAPI.notFound, GAPI.permissionDenied) as e:
|
||||
entityActionFailedExit([Ent.CHROME_PROFILE, profileName], str(e))
|
||||
|
||||
CHROMEPROFILE_ORDERBY_CHOICE_MAP = {
|
||||
'affiliationstate': 'affiliationState',
|
||||
'browserchannel': 'browserChannel',
|
||||
'browserversion': 'browserVersion',
|
||||
'displayname': 'displayName',
|
||||
'extensioncount': 'extensionCount',
|
||||
'firstenrollmenttime': 'firstEnrollmentTime',
|
||||
'identityprovider': 'identityProvider',
|
||||
'lastactivitytime': 'lastActivityTime',
|
||||
'lastpolicysynctime': 'lastPolicySyncTime',
|
||||
'laststatusreporttime': 'lastStatusReportTime',
|
||||
'osplatformtype': 'osPlatformType',
|
||||
'osversion': 'osVersion',
|
||||
'policycount': 'policyCount',
|
||||
'profileid': 'profileId',
|
||||
'useremail': 'userEmail',
|
||||
}
|
||||
|
||||
# gam show chromeprofiles
|
||||
# [filtertime.* <Time>] [filter <String>]
|
||||
# [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
|
||||
# <ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
||||
# [formatjson]
|
||||
# gam print chromeprofiles [todrive <ToDriveAttribute>*]
|
||||
# [filtertime.* <Time>] [filter <String>]
|
||||
# [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
|
||||
# <ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
||||
# [[formatjson [quotechar <Character>]]
|
||||
def doPrintShowChromeProfiles():
|
||||
def _printProfile(profile):
|
||||
row = flattenJSON(profile, timeObjects=CHROMEPROFILE_TIME_OBJECTS)
|
||||
if not FJQC.formatJSON:
|
||||
csvPF.WriteRowTitles(row)
|
||||
elif csvPF.CheckRowTitles(row):
|
||||
csvPF.WriteRowNoFilter({'name': profile['name'], 'profileId': profile['profileId'],
|
||||
'JSON': json.dumps(cleanJSON(profile, timeObjects=CHROMEPROFILE_TIME_OBJECTS),
|
||||
ensure_ascii=False, sort_keys=True)})
|
||||
|
||||
cm = buildGAPIObject(API.CHROMEMANAGEMENT)
|
||||
csvPF = CSVPrintFile(['name', 'profileId']) if Act.csvFormat() else None
|
||||
FJQC = FormatJSONQuoteChar(csvPF)
|
||||
OBY = OrderBy(CHROMEPROFILE_ORDERBY_CHOICE_MAP)
|
||||
sortHeaders = False
|
||||
fieldsList = []
|
||||
cbfilter = None
|
||||
filterTimes = {}
|
||||
while Cmd.ArgumentsRemaining():
|
||||
myarg = getArgument()
|
||||
if csvPF and myarg == 'todrive':
|
||||
csvPF.GetTodriveParameters()
|
||||
elif getFieldsList(myarg, CHROMEPROFILE_FIELDS_CHOICE_MAP, fieldsList, initialField=['name', 'profileId']):
|
||||
pass
|
||||
elif myarg == 'orderby':
|
||||
OBY.GetChoice()
|
||||
elif myarg.startswith('filtertime'):
|
||||
filterTimes[myarg] = getTimeOrDeltaFromNow()
|
||||
elif myarg in {'filter', 'filters'}:
|
||||
cbfilter = getString(Cmd.OB_STRING)
|
||||
elif myarg == 'sortheaders':
|
||||
sortHeaders = True
|
||||
else:
|
||||
FJQC.GetFormatJSONQuoteChar(myarg, True)
|
||||
if filterTimes and filter is not None:
|
||||
for filterTimeName, filterTimeValue in iter(filterTimes.items()):
|
||||
cbfilter = cbfilter.replace(f'#{filterTimeName}#', filterTimeValue)
|
||||
fields = getItemFieldsFromFieldsList('chromeBrowserProfiles', fieldsList)
|
||||
customerId = _getCustomerId()
|
||||
parent = f'customers/{customerId}'
|
||||
printGettingAllAccountEntities(Ent.CHROME_PROFILE, cbfilter)
|
||||
pageMessage = getPageMessage()
|
||||
try:
|
||||
feed = yieldGAPIpages(cm.customers().profiles(), 'list', 'chromeBrowserProfiles',
|
||||
pageMessage=pageMessage,
|
||||
throwReasons=[GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
|
||||
parent=parent, pageSize=200,
|
||||
filter=cbfilter, orderBy=OBY.orderBy, fields=fields)
|
||||
for profiles in feed:
|
||||
if not csvPF:
|
||||
jcount = len(profiles)
|
||||
if not FJQC.formatJSON:
|
||||
performActionNumItems(jcount, Ent.CHROME_PROFILE)
|
||||
Ind.Increment()
|
||||
j = 0
|
||||
for profile in profiles:
|
||||
j += 1
|
||||
_showChromeProfile(profile, FJQC, j, jcount)
|
||||
Ind.Decrement()
|
||||
else:
|
||||
for profile in profiles:
|
||||
_printProfile(profile)
|
||||
except (GAPI.invalidArgument, GAPI.permissionDenied) as e:
|
||||
entityActionFailedExit([Ent.CHROME_PROFILE, cbfilter], str(e))
|
||||
if csvPF:
|
||||
if sortHeaders:
|
||||
csvPF.SetSortTitles(['name', 'profileId'])
|
||||
csvPF.writeCSVfile('Chrome Profiles')
|
||||
|
||||
BROWSER_ORDERBY_CHOICE_MAP = {
|
||||
'annotatedassetid': 'annotated_asset_id', 'asset': 'annotated_asset_id', 'assetid': 'annotated_asset_id',
|
||||
'annotatedlocation': 'annotated_location', 'location': 'annotated_location',
|
||||
@@ -27769,7 +27955,9 @@ def doUpdateChromePolicy():
|
||||
elif vtype == 'TYPE_BOOL':
|
||||
pass
|
||||
elif vtype == 'TYPE_ENUM':
|
||||
value = f"{schema['settings'][lowerField]['enum_prefix']}{value}"
|
||||
prefix = schema['settings'][lowerField]['enum_prefix']
|
||||
if not value.startswith(prefix):
|
||||
value = "{prefix}{value}"
|
||||
elif vtype == 'TYPE_LIST':
|
||||
value = value.split(',') if value else []
|
||||
if myarg == 'chrome.users.chromebrowserupdates' and casedField == 'targetVersionPrefixSetting':
|
||||
@@ -70019,6 +70207,9 @@ def printShowMessagesThreads(users, entityType):
|
||||
if part['mimeType'] == 'text/plain':
|
||||
if 'data' in part['body']:
|
||||
data += base64.urlsafe_b64decode(str(part['body']['data'])).decode(UTF8)+'\n'
|
||||
elif show_html and part['mimeType'] == 'text/html':
|
||||
if 'data' in part['body']:
|
||||
data += base64.urlsafe_b64decode(str(part['body']['data'])).decode(UTF8)+'\n'
|
||||
elif part['mimeType'] == 'text/rfc822-headers':
|
||||
if 'data' in part['body']:
|
||||
data += _decodeHeader(base64.urlsafe_b64decode(str(part['body']['data'])).decode(UTF8)+'\n')
|
||||
@@ -70473,7 +70664,7 @@ def printShowMessagesThreads(users, entityType):
|
||||
convertCRNL = GC.Values[GC.CSV_OUTPUT_CONVERT_CR_NL]
|
||||
delimiter = GC.Values[GC.CSV_OUTPUT_FIELD_DELIMITER]
|
||||
countsOnly = positiveCountsOnly = includeSpamTrash = onlyUser = overwrite = save_attachments = upload_attachments = False
|
||||
show_all_headers = show_attachments = show_body = show_date = show_labels = show_size = show_snippet = False
|
||||
show_all_headers = show_attachments = show_body = show_date = show_html = show_labels = show_size = show_snippet = False
|
||||
noshow_text_plain = False
|
||||
attachmentNamePattern = None
|
||||
targetFolderPattern = GC.Values[GC.DRIVE_DIR]
|
||||
@@ -70503,6 +70694,8 @@ def printShowMessagesThreads(users, entityType):
|
||||
show_date = True
|
||||
elif myarg == 'showbody':
|
||||
show_body = True
|
||||
elif myarg == 'showhtml':
|
||||
show_html = True
|
||||
elif myarg == 'showlabels':
|
||||
show_labels = True
|
||||
elif myarg == 'showsize':
|
||||
@@ -70773,7 +70966,7 @@ def printShowMessagesThreads(users, entityType):
|
||||
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])* [quick|notquick] [max_to_print <Number>] [includespamtrash])|(ids <MessageIDEntity>)
|
||||
# [labelmatchpattern <RegularExpression>] [sendermatchpattern <RegularExpression>]
|
||||
# [headers all|<SMTPHeaderList>] [dateheaderformat iso|rfc2822|<String>] [dateheaderconverttimezone [<Boolean>]]
|
||||
# [showlabels] [showbody] [showdate] [showsize] [showsnippet]
|
||||
# [showlabels] [showbody] [showhtml] [showdate] [showsize] [showsnippet]
|
||||
# [convertcrnl] [delimiter <Character>]
|
||||
# [countsonly|positivecountsonly] [useronly]
|
||||
# [[attachmentnamepattern <RegularExpression>]
|
||||
@@ -70783,7 +70976,7 @@ def printShowMessagesThreads(users, entityType):
|
||||
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])* [quick|notquick] [max_to_show <Number>] [includespamtrash])|(ids <MessageIDEntity>)
|
||||
# [labelmatchpattern <RegularExpression>] [sendermatchpattern <RegularExpression>]
|
||||
# [headers all|<SMTPHeaderList>] [dateheaderformat iso|rfc2822|<String>] [dateheaderconverttimezone [<Boolean>]]
|
||||
# [showlabels] [showbody] [showdate] [showsize] [showsnippet]
|
||||
# [showlabels] [showbody] [showhtml] [showdate] [showsize] [showsnippet]
|
||||
# [countsonly|positivecountsonly] [useronly]
|
||||
# [[attachmentnamepattern <RegularExpression>]
|
||||
# [showattachments [noshowtextplain]]
|
||||
@@ -70796,7 +70989,7 @@ def printShowMessages(users):
|
||||
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])* [quick|notquick] [max_to_print <Number>] [includespamtrash])|(ids <ThreadIDEntity>)
|
||||
# [labelmatchpattern <RegularExpression>]
|
||||
# [headers all|<SMTPHeaderList>] [dateheaderformat iso|rfc2822|<String>] [dateheaderconverttimezone [<Boolean>]]
|
||||
# [showlabels] [showbody] [showdate] [showsize] [showsnippet]
|
||||
# [showlabels] [showbody] [showhtml] [showdate] [showsize] [showsnippet]
|
||||
# [convertcrnl] [delimiter <Character>]
|
||||
# [countsonly|positivecountsonly] [useronly]
|
||||
# [[attachmentnamepattern <RegularExpression>]
|
||||
@@ -70806,7 +70999,7 @@ def printShowMessages(users):
|
||||
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])* [quick|notquick] [max_to_show <Number>] [includespamtrash])|(ids <ThreadIDEntity>)
|
||||
# [labelmatchpattern <RegularExpression>]
|
||||
# [headers all|<SMTPHeaderList>] [dateheaderformat iso|rfc2822|<String>] [dateheaderconverttimezone [<Boolean>]]
|
||||
# [showlabels] [showbody] [showdate] [showsize] [showsnippet]
|
||||
# [showlabels] [showbody] [showhtml] [showdate] [showsize] [showsnippet]
|
||||
# [countsonly|positivecountsonly] [useronly]
|
||||
# [[attachmentnamepattern <RegularExpression>]
|
||||
# [showattachments [noshowtextplain]]
|
||||
@@ -75062,6 +75255,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
|
||||
Cmd.ARG_CHATMESSAGE: doDeleteChatMessage,
|
||||
Cmd.ARG_CHROMENETWORK: doDeleteChromeNetwork,
|
||||
Cmd.ARG_CHROMEPOLICY: doDeleteChromePolicy,
|
||||
Cmd.ARG_CHROMEPROFILE: doDeleteChromeProfile,
|
||||
Cmd.ARG_CIGROUP: doDeleteCIGroups,
|
||||
Cmd.ARG_CLASSROOMINVITATION: doDeleteClassroomInvitations,
|
||||
Cmd.ARG_CONTACT: doDeleteDomainContacts,
|
||||
@@ -75142,6 +75336,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
|
||||
Cmd.ARG_CHATMESSAGE: doInfoChatMessage,
|
||||
Cmd.ARG_CHATSPACE: doInfoChatSpace,
|
||||
Cmd.ARG_CHROMEAPP: doInfoChromeApp,
|
||||
Cmd.ARG_CHROMEPROFILE: doInfoChromeProfile,
|
||||
Cmd.ARG_CHROMESCHEMA: doInfoChromePolicySchemas,
|
||||
Cmd.ARG_CIGROUP: doInfoCIGroups,
|
||||
Cmd.ARG_CIGROUPMEMBERS: doInfoCIGroupMembers,
|
||||
@@ -75228,6 +75423,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
|
||||
Cmd.ARG_CHROMEHISTORY: doPrintShowChromeHistory,
|
||||
Cmd.ARG_CHROMENEEDSATTN: doPrintShowChromeNeedsAttn,
|
||||
Cmd.ARG_CHROMEPOLICY: doPrintShowChromePolicies,
|
||||
Cmd.ARG_CHROMEPROFILE: doPrintShowChromeProfiles,
|
||||
Cmd.ARG_CHROMESCHEMA: doPrintShowChromeSchemas,
|
||||
Cmd.ARG_CHROMESNVALIDITY: doPrintChromeSnValidity,
|
||||
Cmd.ARG_CHROMEVERSIONS: doPrintShowChromeVersions,
|
||||
@@ -75359,6 +75555,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
|
||||
Cmd.ARG_CHROMEHISTORY: doPrintShowChromeHistory,
|
||||
Cmd.ARG_CHROMENEEDSATTN: doPrintShowChromeNeedsAttn,
|
||||
Cmd.ARG_CHROMEPOLICY: doPrintShowChromePolicies,
|
||||
Cmd.ARG_CHROMEPROFILE: doPrintShowChromeProfiles,
|
||||
Cmd.ARG_CHROMESCHEMA: doPrintShowChromeSchemas,
|
||||
Cmd.ARG_CHROMEVERSIONS: doPrintShowChromeVersions,
|
||||
Cmd.ARG_CIGROUPMEMBERS: doShowCIGroupMembers,
|
||||
@@ -75541,6 +75738,7 @@ MAIN_COMMANDS_OBJ_ALIASES = {
|
||||
Cmd.ARG_CHROMEAPPS: Cmd.ARG_CHROMEAPP,
|
||||
Cmd.ARG_CHROMENETWORKS: Cmd.ARG_CHROMENETWORK,
|
||||
Cmd.ARG_CHROMEPOLICIES: Cmd.ARG_CHROMEPOLICY,
|
||||
Cmd.ARG_CHROMEPROFILES: Cmd.ARG_CHROMEPROFILE,
|
||||
Cmd.ARG_CHROMESCHEMAS: Cmd.ARG_CHROMESCHEMA,
|
||||
Cmd.ARG_CIGROUPS: Cmd.ARG_CIGROUP,
|
||||
Cmd.ARG_CIGROUPSMEMBERS: Cmd.ARG_CIGROUPMEMBERS,
|
||||
|
||||
@@ -37,6 +37,7 @@ CHAT_SPACES_DELETE = 'chatspacesdelete'
|
||||
CHAT_SPACES_DELETE_ADMIN = 'chatspacesdeleteadmin'
|
||||
CHROMEMANAGEMENT = 'chromemanagement'
|
||||
CHROMEMANAGEMENT_APPDETAILS = 'chromemanagementappdetails'
|
||||
CHROMEMANAGEMENT_CHROMEPROFILES = 'chromemanagementchromeprofiles'
|
||||
CHROMEMANAGEMENT_TELEMETRY = 'chromemanagementtelemetry'
|
||||
CHROMEPOLICY = 'chromepolicy'
|
||||
CHROMEVERSIONHISTORY = 'versionhistory'
|
||||
@@ -297,6 +298,10 @@ _CLIENT_SCOPES = [
|
||||
'api': CHROMEMANAGEMENT_APPDETAILS,
|
||||
'subscopes': [],
|
||||
'scope': 'https://www.googleapis.com/auth/chrome.management.appdetails.readonly'},
|
||||
{'name': 'Chrome Management API - Profiles',
|
||||
'api': CHROMEMANAGEMENT_CHROMEPROFILES,
|
||||
'subscopes': READONLY,
|
||||
'scope': 'https://www.googleapis.com/auth/chrome.management.profiles'},
|
||||
{'name': 'Chrome Management API - Telemetry read only',
|
||||
'api': CHROMEMANAGEMENT_TELEMETRY,
|
||||
'subscopes': [],
|
||||
|
||||
@@ -483,6 +483,8 @@ class GamCLArgs():
|
||||
ARG_CHROMEPOLICYIMAGE = 'chromepolicyimage'
|
||||
ARG_CHROMEPOLICY = 'chromepolicy'
|
||||
ARG_CHROMEPOLICIES = 'chromepolicies'
|
||||
ARG_CHROMEPROFILE = 'chromeprofile'
|
||||
ARG_CHROMEPROFILES = 'chromeprofiles'
|
||||
ARG_CHROMESCHEMA = 'chromeschema'
|
||||
ARG_CHROMESCHEMAS = 'chromeschemas'
|
||||
ARG_CHROMESNVALIDITY = 'chromesnvalidity'
|
||||
@@ -846,6 +848,7 @@ class GamCLArgs():
|
||||
OB_CHAT_MESSAGE_ID = 'ChatMessageID'
|
||||
OB_CHAT_SPACE = 'ChatSpace'
|
||||
OB_CHAT_THREAD = 'ChatThread'
|
||||
OB_CHROMEPROFILE_ID = 'ChromeProfileId'
|
||||
OB_CHROME_VERSION = 'ChromeVersion'
|
||||
OB_CIDR_NETMASK = 'CIDRnetmask'
|
||||
OB_CIGROUP_ALIAS_LIST = "CIGroupAliasList"
|
||||
|
||||
@@ -108,6 +108,7 @@ class GamEntity():
|
||||
CHROME_POLICY = 'cpol'
|
||||
CHROME_POLICY_IMAGE = 'cpim'
|
||||
CHROME_POLICY_SCHEMA = 'cpsc'
|
||||
CHROME_PROFILE = 'cpro'
|
||||
CHROME_RELEASE = 'crel'
|
||||
CHROME_VERSION = 'cver'
|
||||
CLASSIFICATION_LABEL = 'dlab'
|
||||
@@ -460,6 +461,7 @@ class GamEntity():
|
||||
CHROME_POLICY: ['Chrome Policies', 'Chrome Policy'],
|
||||
CHROME_POLICY_IMAGE: ['Chrome Policy Images', 'Chrome Policy Image'],
|
||||
CHROME_POLICY_SCHEMA: ['Chrome Policy Schemas', 'Chrome Policy Schema'],
|
||||
CHROME_PROFILE: ['Chrome Profiles', 'Chrome Profile'],
|
||||
CHROME_RELEASE: ['Chrome Releases', 'Chrome Release'],
|
||||
CHROME_VERSION: ['Chrome Versions', 'Chrome Version'],
|
||||
CLASSIFICATION_LABEL: ['Classification Labels', 'Classification Label'],
|
||||
|
||||
Reference in New Issue
Block a user