mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-04 12:51:36 +00:00
3600 lines
126 KiB
Python
Executable File
3600 lines
126 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
#
|
|
# GAM7
|
|
#
|
|
# Copyright 2026, All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
"""
|
|
GAM is a command line tool which allows Administrators to control their Google Workspace domain and accounts.
|
|
|
|
For more information, see:
|
|
https://github.com/GAM-team/GAM
|
|
https://github.com/GAM-team/GAM/wiki
|
|
"""
|
|
|
|
__author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
|
|
__version__ = '7.46.03'
|
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
|
|
# pylint: disable=wrong-import-position
|
|
import base64
|
|
import codecs
|
|
import collections
|
|
import configparser
|
|
import csv
|
|
from email.charset import add_charset, QP
|
|
from email.generator import Generator
|
|
from email.header import decode_header, Header
|
|
from email import message_from_string
|
|
from email.mime.application import MIMEApplication
|
|
from email.mime.audio import MIMEAudio
|
|
from email.mime.base import MIMEBase
|
|
from email.mime.image import MIMEImage
|
|
from email.mime.multipart import MIMEMultipart
|
|
from email.mime.text import MIMEText
|
|
from email.utils import formatdate
|
|
from email.policy import SMTP as policySMTP
|
|
import hashlib
|
|
from html.entities import name2codepoint
|
|
from html.parser import HTMLParser
|
|
import http.client
|
|
import importlib
|
|
from importlib.metadata import version as lib_version
|
|
import io
|
|
import ipaddress
|
|
import json
|
|
import logging
|
|
from logging.handlers import RotatingFileHandler
|
|
import mimetypes
|
|
import multiprocessing
|
|
import os
|
|
import platform
|
|
import queue
|
|
import random
|
|
import re
|
|
from secrets import SystemRandom
|
|
import shlex
|
|
import signal
|
|
import smtplib
|
|
import socket
|
|
import sqlite3
|
|
import ssl
|
|
import string
|
|
import struct
|
|
import subprocess
|
|
import sys
|
|
from tempfile import TemporaryFile
|
|
try:
|
|
import termios
|
|
except ImportError:
|
|
# termios does not exist for Windows
|
|
pass
|
|
import threading
|
|
import time
|
|
from traceback import print_exc
|
|
import types
|
|
from urllib.parse import quote, quote_plus, unquote, urlencode, urlparse, parse_qs
|
|
import uuid
|
|
import warnings
|
|
import webbrowser
|
|
import wsgiref.simple_server
|
|
import wsgiref.util
|
|
import zipfile
|
|
|
|
# disable legacy stuff we don't use and isn't secure
|
|
os.environ['CRYPTOGRAPHY_OPENSSL_NO_LEGACY'] = "1"
|
|
from cryptography import x509
|
|
from cryptography.hazmat.backends import default_backend
|
|
from cryptography.hazmat.primitives import hashes, serialization
|
|
from cryptography.hazmat.primitives.asymmetric import rsa
|
|
from cryptography.x509.oid import NameOID
|
|
|
|
# 10/2024 - I don't recall why we did this but PyInstaller
|
|
# 6.10.0+ does not like it. Only run this when we're not
|
|
# Frozen.
|
|
if not getattr(sys, 'frozen', False):
|
|
sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)))
|
|
|
|
import arrow
|
|
|
|
from pathvalidate import sanitize_filename, sanitize_filepath
|
|
|
|
import google.oauth2.credentials
|
|
import google.oauth2.id_token
|
|
import google.auth
|
|
import google.auth.transport.requests
|
|
from google.auth.compute_engine import _metadata as gce_metadata
|
|
from google.auth.jwt import Credentials as JWTCredentials
|
|
import google.oauth2.service_account
|
|
import google_auth_oauthlib.flow
|
|
import google_auth_httplib2
|
|
import googleapiclient
|
|
import googleapiclient.discovery
|
|
import googleapiclient.errors
|
|
import googleapiclient.http
|
|
import httplib2
|
|
|
|
httplib2.RETRIES = 5
|
|
|
|
from passlib.hash import sha512_crypt
|
|
from filelock import FileLock
|
|
|
|
if platform.system() == 'Linux':
|
|
import distro
|
|
|
|
from gamlib import glaction
|
|
from gamlib import glapi as API
|
|
from gamlib import glcfg as GC
|
|
from gamlib import glclargs
|
|
from gamlib import glentity
|
|
from gamlib import glgapi as GAPI
|
|
from gamlib import glgdata as GDATA
|
|
from gamlib import glglobals as GM
|
|
from gamlib import glindent
|
|
from gamlib import glmsgs as Msg
|
|
from gamlib import glskus as SKU
|
|
from gamlib import gluprop as UProp
|
|
from gamlib import glverlibs
|
|
|
|
import gdata.apps.service
|
|
import gdata.apps.audit
|
|
import gdata.apps.audit.service
|
|
import gdata.apps.contacts
|
|
import gdata.apps.contacts.service
|
|
|
|
from gam.util.html import _DeHTMLParser, dehtml # noqa: F401 # re-export
|
|
from gam.util.access import ( # noqa: F401 # re-export
|
|
accessErrorMessage, accessErrorExit, accessErrorExitNonDirectory,
|
|
ClientAPIAccessDeniedExit, SvcAcctAPIAccessDenied, SvcAcctAPIAccessDeniedExit,
|
|
SvcAcctAPIDisabledExit, APIAccessDeniedExit,
|
|
checkEntityDNEorAccessErrorExit, checkEntityAFDNEorAccessErrorExit,
|
|
checkEntityItemValueAFDNEorAccessErrorExit,
|
|
entityUnknownWarning, entityOrEntityUnknownWarning, duplicateAliasGroupUserWarning,
|
|
)
|
|
from gam.util.email import ( # noqa: F401 # re-export
|
|
_addAttachmentsToMessage, _addEmbeddedImagesToMessage, send_email,
|
|
)
|
|
|
|
IS08601_TIME_FORMAT = '%Y-%m-%dT%H:%M:%S%:z'
|
|
RFC2822_TIME_FORMAT = '%a, %d %b %Y %H:%M:%S %z'
|
|
|
|
def ISOformatTimeStamp(timestamp):
|
|
return timestamp.isoformat('T', 'seconds')
|
|
|
|
def currentISOformatTimeStamp(timespec='milliseconds'):
|
|
return arrow.now(GC.Values[GC.TIMEZONE]).isoformat('T', timespec)
|
|
|
|
Act = glaction.GamAction()
|
|
Cmd = glclargs.GamCLArgs()
|
|
Ent = glentity.GamEntity()
|
|
Ind = glindent.GamIndent()
|
|
|
|
# Finding path method varies between Python source, PyInstaller and StaticX
|
|
if os.environ.get('STATICX_PROG_PATH', False):
|
|
# StaticX static executable
|
|
GM.Globals[GM.GAM_PATH] = os.path.dirname(os.environ['STATICX_PROG_PATH'])
|
|
GM.Globals[GM.GAM_TYPE] = 'staticx'
|
|
elif getattr(sys, 'frozen', False):
|
|
# Pyinstaller executable
|
|
GM.Globals[GM.GAM_PATH] = os.path.dirname(sys.executable)
|
|
GM.Globals[GM.GAM_TYPE] = 'pyinstaller'
|
|
else:
|
|
# Source code
|
|
GM.Globals[GM.GAM_PATH] = os.path.dirname(os.path.realpath(__file__))
|
|
GM.Globals[GM.GAM_TYPE] = 'pythonsource'
|
|
|
|
GIT_USER = 'GAM-team'
|
|
GAM = 'GAM'
|
|
GAM_URL = f'https://github.com/{GIT_USER}/{GAM}'
|
|
GAM_USER_AGENT = (f'{GAM} {__version__} - {GAM_URL} / '
|
|
f'{__author__} / '
|
|
f'Python {sys.version_info[0]}.{sys.version_info[1]}.{sys.version_info[2]} {sys.version_info[3]} / '
|
|
f'{platform.platform()} {platform.machine()} /'
|
|
)
|
|
GAM_RELEASES = f'https://github.com/{GIT_USER}/{GAM}/releases'
|
|
GAM_WIKI = f'https://github.com/{GIT_USER}/{GAM}/wiki'
|
|
GAM_LATEST_RELEASE = f'https://api.github.com/repos/{GIT_USER}/{GAM}/releases/latest'
|
|
GAM_PROJECT_CREATION = 'GAM Project Creation'
|
|
GAM_PROJECT_CREATION_CLIENT_ID = '297408095146-fug707qsjv4ikron0hugpevbrjhkmsk7.apps.googleusercontent.com'
|
|
|
|
from gam.constants import *
|
|
|
|
def redactable_debug_print(*args):
|
|
processed_args = []
|
|
for arg in args:
|
|
if arg.startswith('b\''):
|
|
sbytes = arg[2:-1]
|
|
sbytes = bytes(sbytes, 'utf-8')
|
|
arg = sbytes.decode()
|
|
arg = arg.replace('\\r\\n', "\n ")
|
|
if GC.Values[GC.DEBUG_REDACTION]:
|
|
for pattern, replace in DEBUG_REDACTION_PATTERNS:
|
|
arg = re.sub(pattern, replace, arg)
|
|
processed_args.append(arg)
|
|
print(*processed_args)
|
|
|
|
# Multiprocessing lock
|
|
mplock = None
|
|
|
|
# stdin/stdout/stderr — extracted to gam.util.output
|
|
from util.output import readStdin # noqa: E402
|
|
from util.output import stdErrorExit # noqa: E402
|
|
from util.output import writeStdout # noqa: E402
|
|
from util.output import flushStdout # noqa: E402
|
|
from util.output import writeStderr # noqa: E402
|
|
from util.output import flushStderr # noqa: E402
|
|
from util.output import setSysExitRC # noqa: E402
|
|
from util.output import stderrErrorMsg # noqa: E402
|
|
from util.output import stderrWarningMsg # noqa: E402
|
|
from util.output import systemErrorExit # noqa: E402
|
|
from util.output import printErrorMessage # noqa: E402
|
|
from util.output import printWarningMessage # noqa: E402
|
|
from util.output import supportsColoredText # noqa: E402
|
|
from util.output import createColoredText # noqa: E402
|
|
from util.output import createRedText # noqa: E402
|
|
from util.output import createGreenText # noqa: E402
|
|
from util.output import createYellowText # noqa: E402
|
|
from util.output import executeBatch # noqa: E402
|
|
from util.output import _stripControlCharsFromName # noqa: E402
|
|
from util.output import currentCount # noqa: E402
|
|
from util.output import currentCountNL # noqa: E402
|
|
from util.output import formatKeyValueList # noqa: E402
|
|
|
|
# File I/O — extracted to gam.util.fileio
|
|
from util.fileio import cleanFilename # noqa: E402
|
|
from util.fileio import setFilePath # noqa: E402
|
|
from util.fileio import uniqueFilename # noqa: E402
|
|
from util.fileio import cleanFilepath # noqa: E402
|
|
from util.fileio import fileErrorMessage # noqa: E402
|
|
from util.fileio import fdErrorMessage # noqa: E402
|
|
from util.fileio import setEncoding # noqa: E402
|
|
from util.fileio import StringIOobject # noqa: E402
|
|
from util.fileio import openFile # noqa: E402
|
|
from util.fileio import closeFile # noqa: E402
|
|
from util.fileio import readFile # noqa: E402
|
|
from util.fileio import writeFile # noqa: E402
|
|
from util.fileio import writeFileReturnError # noqa: E402
|
|
from util.fileio import deleteFile # noqa: E402
|
|
from util.fileio import getGDocSheetDataRetryWarning # noqa: E402
|
|
from util.fileio import getGDocSheetDataFailedExit # noqa: E402
|
|
from util.fileio import incrAPICallsRetryData # noqa: E402
|
|
from util.fileio import initAPICallsRateCheck # noqa: E402
|
|
from util.fileio import checkAPICallsRate # noqa: E402
|
|
from util.fileio import openGAMCommandLog # noqa: E402
|
|
from util.fileio import writeGAMCommandLog # noqa: E402
|
|
from util.fileio import closeGAMCommandLog # noqa: E402
|
|
|
|
# Display / warning / action — extracted to gam.util.display
|
|
from util.display import badRequestWarning # noqa: E402
|
|
from util.display import emptyQuery # noqa: E402
|
|
from util.display import invalidQuery # noqa: E402
|
|
from util.display import invalidMember # noqa: E402
|
|
from util.display import invalidUserSchema # noqa: E402
|
|
from util.display import userServiceNotEnabledWarning # noqa: E402
|
|
from util.display import userAlertsServiceNotEnabledWarning # noqa: E402
|
|
from util.display import userAnalyticsServiceNotEnabledWarning # noqa: E402
|
|
from util.display import userCalServiceNotEnabledWarning # noqa: E402
|
|
from util.display import userChatServiceNotEnabledWarning # noqa: E402
|
|
from util.display import userContactDelegateServiceNotEnabledWarning # noqa: E402
|
|
from util.display import userDriveServiceNotEnabledWarning # noqa: E402
|
|
from util.display import userKeepServiceNotEnabledWarning # noqa: E402
|
|
from util.display import userGmailServiceNotEnabledWarning # noqa: E402
|
|
from util.display import userLookerStudioServiceNotEnabledWarning # noqa: E402
|
|
from util.display import userPeopleServiceNotEnabledWarning # noqa: E402
|
|
from util.display import userTasksServiceNotEnabledWarning # noqa: E402
|
|
from util.display import userYouTubeServiceNotEnabledWarning # noqa: E402
|
|
from util.display import entityServiceNotApplicableWarning # noqa: E402
|
|
from util.display import entityDoesNotExistWarning # noqa: E402
|
|
from util.display import entityListDoesNotExistWarning # noqa: E402
|
|
from util.display import entityDoesNotHaveItemWarning # noqa: E402
|
|
from util.display import entityDuplicateWarning # noqa: E402
|
|
from util.display import entityActionFailedWarning # noqa: E402
|
|
from util.display import entityModifierItemValueListActionFailedWarning # noqa: E402
|
|
from util.display import entityModifierActionFailedWarning # noqa: E402
|
|
from util.display import entityModifierNewValueActionFailedWarning # noqa: E402
|
|
from util.display import entityNumEntitiesActionFailedWarning # noqa: E402
|
|
from util.display import entityActionNotPerformedWarning # noqa: E402
|
|
from util.display import entityItemValueListActionNotPerformedWarning # noqa: E402
|
|
from util.display import entityModifierItemValueListActionNotPerformedWarning # noqa: E402
|
|
from util.display import entityNumEntitiesActionNotPerformedWarning # noqa: E402
|
|
from util.display import entityBadRequestWarning # noqa: E402
|
|
from util.display import printGettingAllAccountEntities # noqa: E402
|
|
from util.display import printGotAccountEntities # noqa: E402
|
|
from util.display import setGettingAllEntityItemsForWhom # noqa: E402
|
|
from util.display import printGettingAllEntityItemsForWhom # noqa: E402
|
|
from util.display import printGotEntityItemsForWhom # noqa: E402
|
|
from util.display import printGettingEntityItem # noqa: E402
|
|
from util.display import printGettingEntityItemForWhom # noqa: E402
|
|
from util.display import stderrEntityMessage # noqa: E402
|
|
from util.display import FIRST_ITEM_MARKER # noqa: E402
|
|
from util.display import LAST_ITEM_MARKER # noqa: E402
|
|
from util.display import TOTAL_ITEMS_MARKER # noqa: E402
|
|
from util.display import getPageMessage # noqa: E402
|
|
from util.display import getPageMessageForWhom # noqa: E402
|
|
from util.display import printLine # noqa: E402
|
|
from util.display import printBlankLine # noqa: E402
|
|
from util.display import printKeyValueList # noqa: E402
|
|
from util.display import printKeyValueListWithCount # noqa: E402
|
|
from util.display import printKeyValueDict # noqa: E402
|
|
from util.display import printKeyValueWithCRsNLs # noqa: E402
|
|
from util.display import printJSONKey # noqa: E402
|
|
from util.display import printJSONValue # noqa: E402
|
|
from util.display import printEntity # noqa: E402
|
|
from util.display import printEntityMessage # noqa: E402
|
|
from util.display import printEntitiesCount # noqa: E402
|
|
from util.display import printEntityKVList # noqa: E402
|
|
from util.display import performAction # noqa: E402
|
|
from util.display import performActionNumItems # noqa: E402
|
|
from util.display import performActionModifierNumItems # noqa: E402
|
|
from util.display import actionPerformedNumItems # noqa: E402
|
|
from util.display import actionFailedNumItems # noqa: E402
|
|
from util.display import actionNotPerformedNumItemsWarning # noqa: E402
|
|
from util.display import entityPerformAction # noqa: E402
|
|
from util.display import entityPerformActionNumItems # noqa: E402
|
|
from util.display import entityPerformActionModifierNumItems # noqa: E402
|
|
from util.display import entityPerformActionNumItemsModifier # noqa: E402
|
|
from util.display import entityPerformActionSubItemModifierNumItems # noqa: E402
|
|
from util.display import entityPerformActionSubItemModifierNumItemsModifierNewValue # noqa: E402
|
|
from util.display import entityPerformActionModifierNumItemsModifier # noqa: E402
|
|
from util.display import entityPerformActionModifierItemValueList # noqa: E402
|
|
from util.display import entityPerformActionModifierNewValue # noqa: E402
|
|
from util.display import entityPerformActionModifierNewValueItemValueList # noqa: E402
|
|
from util.display import entityPerformActionItemValue # noqa: E402
|
|
from util.display import entityPerformActionInfo # noqa: E402
|
|
from util.display import entityActionPerformed # noqa: E402
|
|
from util.display import entityActionPerformedMessage # noqa: E402
|
|
from util.display import entityNumItemsActionPerformed # noqa: E402
|
|
from util.display import entityModifierActionPerformed # noqa: E402
|
|
from util.display import entityModifierItemValueListActionPerformed # noqa: E402
|
|
from util.display import entityModifierNewValueActionPerformed # noqa: E402
|
|
from util.display import entityModifierNewValueItemValueListActionPerformed # noqa: E402
|
|
from util.display import entityModifierNewValueKeyValueActionPerformed # noqa: E402
|
|
|
|
from util.errors import invalidClientSecretsJsonExit # noqa: E402
|
|
from util.errors import invalidOauth2serviceJsonExit # noqa: E402
|
|
from util.errors import invalidOauth2TxtExit # noqa: E402
|
|
from util.errors import expiredRevokedOauth2TxtExit # noqa: E402
|
|
from util.errors import invalidDiscoveryJsonExit # noqa: E402
|
|
from util.errors import entityActionFailedExit # noqa: E402
|
|
from util.errors import entityDoesNotExistExit # noqa: E402
|
|
from util.errors import entityDoesNotHaveItemExit # noqa: E402
|
|
from util.errors import entityIsNotUniqueExit # noqa: E402
|
|
from util.errors import usageErrorExit # noqa: E402
|
|
from util.errors import csvFieldErrorExit # noqa: E402
|
|
from util.errors import csvDataAlreadySavedErrorExit # noqa: E402
|
|
from util.errors import unknownArgumentExit # noqa: E402
|
|
from util.errors import expectedArgumentExit # noqa: E402
|
|
from util.errors import blankArgumentExit # noqa: E402
|
|
from util.errors import emptyArgumentExit # noqa: E402
|
|
from util.errors import invalidArgumentExit # noqa: E402
|
|
from util.errors import missingArgumentExit # noqa: E402
|
|
from util.errors import deprecatedArgument # noqa: E402
|
|
from util.errors import deprecatedArgumentExit # noqa: E402
|
|
from util.errors import deprecatedCommandExit # noqa: E402
|
|
from util.errors import formatChoiceList # noqa: E402
|
|
from util.errors import invalidChoiceExit # noqa: E402
|
|
from util.errors import missingChoiceExit # noqa: E402
|
|
|
|
from util.args import * # noqa: E402,F403 - re-exports ~155 symbols
|
|
|
|
from util.connection import getLocalGoogleTimeOffset # noqa: E402
|
|
from util.connection import _getServerTLSUsed # noqa: E402
|
|
from util.connection import getOSPlatform # noqa: E402
|
|
from util.connection import inspect_untrusted_cert # noqa: E402
|
|
from util.connection import doCheckConnection # noqa: E402
|
|
from util.connection import doComment # noqa: E402
|
|
from util.connection import doVersion # noqa: E402
|
|
from util.connection import doUsage # noqa: E402
|
|
from util.connection import MACOS_CODENAMES # noqa: E402
|
|
|
|
# API transport, service builders, and call wrappers — extracted to gam.util.api
|
|
from util.api import handleServerError # noqa: E402
|
|
from util.api import getHttpObj # noqa: E402
|
|
from util.api import _force_user_agent # noqa: E402
|
|
from util.api import transportAgentRequest # noqa: E402
|
|
from util.api import transportAuthorizedHttp # noqa: E402
|
|
from util.api import transportCreateRequest # noqa: E402
|
|
from util.api import doGAMCheckForUpdates # noqa: E402
|
|
from util.api import signjwtJWTCredentials # noqa: E402
|
|
from util.api import signjwtCredentials # noqa: E402
|
|
from util.api import get_adc_request # noqa: E402
|
|
from util.api import signjwtSignJwt # noqa: E402
|
|
from util.api import handleOAuthTokenError # noqa: E402
|
|
from util.api import getOauth2TxtCredentials # noqa: E402
|
|
from util.api import _getValueFromOAuth # noqa: E402
|
|
from util.api import _getAdminEmail # noqa: E402
|
|
from util.api import writeClientCredentials # noqa: E402
|
|
from util.api import shortenURL # noqa: E402
|
|
from util.api import runSqliteQuery # noqa: E402
|
|
from util.api import refreshCredentialsWithReauth # noqa: E402
|
|
from util.api import getClientCredentials # noqa: E402
|
|
from util.api import waitOnFailure # noqa: E402
|
|
from util.api import clearServiceCache # noqa: E402
|
|
from util.api import getAPIService # noqa: E402
|
|
from util.api import getService # noqa: E402
|
|
from util.api import defaultSvcAcctScopes # noqa: E402
|
|
from util.api import _getSvcAcctData # noqa: E402
|
|
from util.api import getSvcAcctCredentials # noqa: E402
|
|
from util.api import getGDataOAuthToken # noqa: E402
|
|
from util.api import checkGDataError # noqa: E402
|
|
from util.api import callGData # noqa: E402
|
|
from util.api import callGDataPages # noqa: E402
|
|
from util.api import checkGAPIError # noqa: E402
|
|
from util.api import callGAPI # noqa: E402
|
|
from util.api import _showGAPIpagesResult # noqa: E402
|
|
from util.api import callGAPIpages # noqa: E402
|
|
from util.api import yieldGAPIpages # noqa: E402
|
|
from util.api import callGAPIitems # noqa: E402
|
|
from util.api import readDiscoveryFile # noqa: E402
|
|
from util.api import buildGAPIObject # noqa: E402
|
|
from util.api import buildGAPIServiceObject # noqa: E402
|
|
from util.api import buildGAPIObjectNoAuthentication # noqa: E402
|
|
from util.api import initGDataObject # noqa: E402
|
|
from util.api import getGDataUserCredentials # noqa: E402
|
|
from util.api import getContactsObject # noqa: E402
|
|
from util.api import getContactsQuery # noqa: E402
|
|
from util.api import getEmailAuditObject # noqa: E402
|
|
from util.api import _processGAPIpagesResult # noqa: E402
|
|
from util.api import _finalizeGAPIpagesResult # noqa: E402
|
|
from util.api import _setMaxArgResults # noqa: E402
|
|
from util.api import writeGotMessage # noqa: E402
|
|
from util.api import getSaUser # noqa: E402
|
|
from util.api import chooseSaAPI # noqa: E402
|
|
|
|
# Entity resolution — extracted to gam.util.entity
|
|
from util.entity import getUserEmailFromID # noqa: E402
|
|
from util.entity import getGroupEmailFromID # noqa: E402
|
|
from util.entity import getServiceAccountEmailFromID # noqa: E402
|
|
from util.entity import convertUIDtoEmailAddressWithType # noqa: E402
|
|
from util.entity import NON_EMAIL_MEMBER_PREFIXES # noqa: E402
|
|
from util.entity import convertUIDtoEmailAddress # noqa: E402
|
|
from util.entity import convertEmailAddressToUID # noqa: E402
|
|
from util.entity import convertUserIDtoEmail # noqa: E402
|
|
from util.entity import splitEmailAddressOrUID # noqa: E402
|
|
from util.entity import convertOrgUnitIDtoPath # noqa: E402
|
|
from util.entity import shlexSplitList # noqa: E402
|
|
from util.entity import shlexSplitListStatus # noqa: E402
|
|
from util.entity import getQueries # noqa: E402
|
|
from util.entity import _validateDeviceQuery # noqa: E402
|
|
from util.entity import getDeviceQueries # noqa: E402
|
|
from util.entity import convertEntityToList # noqa: E402
|
|
from util.entity import GROUP_ROLES_MAP # noqa: E402
|
|
from util.entity import ALL_GROUP_ROLES # noqa: E402
|
|
from util.entity import _getRoleVerification # noqa: E402
|
|
from util.entity import _getCIRoleVerification # noqa: E402
|
|
from util.entity import _checkMemberStatusIsSuspendedIsArchived # noqa: E402
|
|
from util.entity import _checkMemberIsSuspendedIsArchived # noqa: E402
|
|
from util.entity import _checkMemberRole # noqa: E402
|
|
from util.entity import _checkMemberRoleIsSuspendedIsArchived # noqa: E402
|
|
from util.entity import _checkMemberCategory # noqa: E402
|
|
from util.entity import _checkCIMemberCategory # noqa: E402
|
|
from util.entity import getCIGroupMemberRoleFixType # noqa: E402
|
|
from util.entity import getCIGroupTransitiveMemberRoleFixType # noqa: E402
|
|
from util.entity import convertGroupCloudIDToEmail # noqa: E402
|
|
from util.entity import convertGroupEmailToCloudID # noqa: E402
|
|
from util.entity import CIGROUP_DISCUSSION_FORUM_LABEL # noqa: E402
|
|
from util.entity import CIGROUP_DYNAMIC_LABEL # noqa: E402
|
|
from util.entity import CIGROUP_SECURITY_LABEL # noqa: E402
|
|
from util.entity import CIGROUP_LOCKED_LABEL # noqa: E402
|
|
from util.entity import getCIGroupMembershipGraph # noqa: E402
|
|
from util.entity import checkGroupExists # noqa: E402
|
|
from util.entity import getItemsToModify # noqa: E402
|
|
from util.entity import splitEntityList # noqa: E402
|
|
from util.entity import splitEntityListShlex # noqa: E402
|
|
from util.entity import fileDataErrorExit # noqa: E402
|
|
from util.entity import getEntitiesFromFile # noqa: E402
|
|
from util.entity import getEntitiesFromCSVFile # noqa: E402
|
|
from util.entity import getEntitiesFromCSVbyField # noqa: E402
|
|
from util.entity import mapEntityType # noqa: E402
|
|
from util.entity import getEntityArgument # noqa: E402
|
|
from util.entity import getEntityToModify # noqa: E402
|
|
from util.entity import getEntitySelector # noqa: E402
|
|
from util.entity import getEntitySelection # noqa: E402
|
|
from util.entity import getEntityList # noqa: E402
|
|
from util.entity import getNormalizedEmailAddressEntity # noqa: E402
|
|
from util.entity import getUserObjectEntity # noqa: E402
|
|
from util.entity import _validateUserGetObjectList # noqa: E402
|
|
from util.entity import _validateUserGetMessageIds # noqa: E402
|
|
from util.entity import checkUserExists # noqa: E402
|
|
from util.entity import checkUserSuspended # noqa: E402
|
|
|
|
# CSV Print Framework — extracted to gam.util.csv_pf
|
|
from util.csv_pf import addFieldToFieldsList # noqa: E402
|
|
from util.csv_pf import _getFieldsList # noqa: E402
|
|
from util.csv_pf import _getRawFields # noqa: E402
|
|
from util.csv_pf import CheckInputRowFilterHeaders # noqa: E402
|
|
from util.csv_pf import RowFilterMatch # noqa: E402
|
|
from util.csv_pf import getFieldsList # noqa: E402
|
|
from util.csv_pf import getFieldsFromFieldsList # noqa: E402
|
|
from util.csv_pf import getItemFieldsFromFieldsList # noqa: E402
|
|
from util.csv_pf import CSVPrintFile # noqa: E402
|
|
from util.csv_pf import writeEntityNoHeaderCSVFile # noqa: E402
|
|
from util.csv_pf import getTodriveOnly # noqa: E402
|
|
from util.csv_pf import DEFAULT_SKIP_OBJECTS # noqa: E402
|
|
from util.csv_pf import cleanJSON # noqa: E402
|
|
from util.csv_pf import flattenJSON # noqa: E402
|
|
from util.csv_pf import showJSON # noqa: E402
|
|
from util.csv_pf import FormatJSONQuoteChar # noqa: E402
|
|
from util.csv_pf import RI_ENTITY # noqa: E402
|
|
from util.csv_pf import RI_I # noqa: E402
|
|
from util.csv_pf import RI_COUNT # noqa: E402
|
|
from util.csv_pf import RI_J # noqa: E402
|
|
from util.csv_pf import RI_JCOUNT # noqa: E402
|
|
from util.csv_pf import RI_ITEM # noqa: E402
|
|
from util.csv_pf import RI_ROLE # noqa: E402
|
|
from util.csv_pf import RI_OPTION # noqa: E402
|
|
from util.csv_pf import batchRequestID # noqa: E402
|
|
# OrgUnit helpers — extracted to gam.util.orgunits
|
|
from util.orgunits import getOrgUnitItem # noqa: E402
|
|
from util.orgunits import getTopLevelOrgId # noqa: E402
|
|
from util.orgunits import getOrgUnitId # noqa: E402
|
|
from util.orgunits import getAllParentOrgUnitsForUser # noqa: E402
|
|
# GDoc/GSheet/Storage/CSV readers — extracted to gam.util.gdoc
|
|
from util.gdoc import GDOC_FORMAT_MIME_TYPES # noqa: E402
|
|
from util.gdoc import getGDocData # noqa: E402
|
|
from util.gdoc import HTML_TITLE_PATTERN # noqa: E402
|
|
from util.gdoc import getGSheetData # noqa: E402
|
|
from util.gdoc import BUCKET_OBJECT_PATTERNS # noqa: E402
|
|
from util.gdoc import getBucketObjectName # noqa: E402
|
|
from util.gdoc import GCS_FORMAT_MIME_TYPES # noqa: E402
|
|
from util.gdoc import getStorageFileData # noqa: E402
|
|
from util.gdoc import openCSVFileReader # noqa: E402
|
|
# Configuration — extracted to gam.util.config
|
|
from util.config import SetGlobalVariables # noqa: E402
|
|
# Batch/multiprocess infrastructure — extracted to gam.util.batch
|
|
from util.batch import NullHandler # noqa: E402
|
|
from util.batch import initializeLogging # noqa: E402
|
|
from util.batch import saveNonPickleableValues # noqa: E402
|
|
from util.batch import restoreNonPickleableValues # noqa: E402
|
|
from util.batch import CSVFileQueueHandler # noqa: E402
|
|
from util.batch import initializeCSVFileQueueHandler # noqa: E402
|
|
from util.batch import terminateCSVFileQueueHandler # noqa: E402
|
|
from util.batch import StdQueueHandler # noqa: E402
|
|
from util.batch import initializeStdQueueHandler # noqa: E402
|
|
from util.batch import batchWriteStderr # noqa: E402
|
|
from util.batch import writeStdQueueHandler # noqa: E402
|
|
from util.batch import terminateStdQueueHandler # noqa: E402
|
|
from util.batch import ProcessGAMCommandMulti # noqa: E402
|
|
from util.batch import checkChildProcessRC # noqa: E402
|
|
from util.batch import initGamWorker # noqa: E402
|
|
from util.batch import MultiprocessGAMCommands # noqa: E402
|
|
from util.batch import threadBatchWorker # noqa: E402
|
|
from util.batch import ThreadBatchGAMCommands # noqa: E402
|
|
from util.batch import _getShowCommands # noqa: E402
|
|
from util.batch import _getSkipRows # noqa: E402
|
|
from util.batch import _getMaxRows # noqa: E402
|
|
from util.batch import doBatch # noqa: E402
|
|
from util.batch import doThreadBatch # noqa: E402
|
|
from util.batch import doAutoBatch # noqa: E402
|
|
from util.batch import getSubFields # noqa: E402
|
|
from util.batch import processSubFields # noqa: E402
|
|
from util.batch import doCSV # noqa: E402
|
|
from util.batch import doCSVTest # noqa: E402
|
|
from util.batch import doLoop # noqa: E402
|
|
from util.batch import _doList # noqa: E402
|
|
from util.batch import doListType # noqa: E402
|
|
from util.batch import doListCrOS # noqa: E402
|
|
from util.batch import doListUser # noqa: E402
|
|
from util.batch import _showCount # noqa: E402
|
|
from util.batch import showCountCrOS # noqa: E402
|
|
from util.batch import showCountUser # noqa: E402
|
|
|
|
# Command module re-exports for routing tables
|
|
# Command function references (lazy-loaded at first call)
|
|
# These replace the old `from gam.cmd.X import func` re-exports
|
|
# gam.cmd.admin
|
|
|
|
# Command module imports
|
|
from gam.cmd.admin import (
|
|
doCreateAdmin,
|
|
doCreateUpdateAdminRoles,
|
|
doDeleteAdmin,
|
|
doDeleteAdminRole,
|
|
doInfoPrintShowAdminRoles,
|
|
doPrintShowAdmins,
|
|
doPrintShowPrivileges,
|
|
)
|
|
from gam.cmd.alerts import (
|
|
doClearAlertSettings,
|
|
doCreateAlertFeedback,
|
|
doDeleteOrUndeleteAlert,
|
|
doInfoAlert,
|
|
doPrintShowAlertFeedback,
|
|
doPrintShowAlerts,
|
|
doShowAlertSettings,
|
|
doUpdateAlertSettings,
|
|
)
|
|
from gam.cmd.aliases import (
|
|
deleteUsersAliases,
|
|
doCreateUpdateAliases,
|
|
doDeleteAliases,
|
|
doInfoAliases,
|
|
doPrintAddresses,
|
|
doPrintAliases,
|
|
doRemoveAliases,
|
|
)
|
|
from gam.cmd.analytics import (
|
|
printShowAnalyticAccountSummaries,
|
|
printShowAnalyticAccounts,
|
|
printShowAnalyticDatastreams,
|
|
printShowAnalyticProperties,
|
|
)
|
|
from gam.cmd.audit import doCreateMonitor, doDeleteMonitor, doShowMonitors
|
|
from gam.cmd.browsers import (
|
|
doCreateBrowserToken,
|
|
doCreateChromeProfileCommand,
|
|
doDeleteBrowsers,
|
|
doDeleteChromeProfile,
|
|
doInfoBrowsers,
|
|
doInfoChromeProfile,
|
|
doInfoChromeProfileCommand,
|
|
doMoveBrowsers,
|
|
doPrintShowBrowserTokens,
|
|
doPrintShowBrowsers,
|
|
doPrintShowChromeProfileCommands,
|
|
doPrintShowChromeProfiles,
|
|
doRevokeBrowserToken,
|
|
doUpdateBrowsers,
|
|
)
|
|
from gam.cmd.caa import (
|
|
doCreateCAALevel,
|
|
doDeleteCAALevel,
|
|
doPrintShowCAALevels,
|
|
doUpdateCAALevel,
|
|
)
|
|
from gam.cmd.calendar import (
|
|
doCalendarsCreateACL,
|
|
doCalendarsCreateACLs,
|
|
doCalendarsCreateEvent,
|
|
doCalendarsDeleteACL,
|
|
doCalendarsDeleteACLs,
|
|
doCalendarsDeleteEvents,
|
|
doCalendarsDeleteEventsOld,
|
|
doCalendarsEmptyTrash,
|
|
doCalendarsImportEvent,
|
|
doCalendarsInfoACLs,
|
|
doCalendarsInfoEvents,
|
|
doCalendarsModifySettings,
|
|
doCalendarsMoveEvents,
|
|
doCalendarsMoveEventsOld,
|
|
doCalendarsPrintShowACLs,
|
|
doCalendarsPrintShowEvents,
|
|
doCalendarsPrintShowSettings,
|
|
doCalendarsPurgeEvents,
|
|
doCalendarsUpdateACL,
|
|
doCalendarsUpdateACLs,
|
|
doCalendarsUpdateEvents,
|
|
doCalendarsUpdateEventsOld,
|
|
doCalendarsWipeEvents,
|
|
doResourceCreateCalendarACLs,
|
|
doResourceDeleteCalendarACLs,
|
|
doResourceInfoCalendarACLs,
|
|
doResourcePrintShowCalendarACLs,
|
|
doResourceUpdateCalendarACLs,
|
|
)
|
|
from gam.cmd.chat import (
|
|
createChatEmoji,
|
|
createChatMember,
|
|
createChatMessage,
|
|
createChatSpace,
|
|
createUpdateChatSection,
|
|
deleteChatEmoji,
|
|
deleteChatMessage,
|
|
deleteChatSection,
|
|
deleteChatSpace,
|
|
deleteUpdateChatMember,
|
|
doCreateChatMessage,
|
|
doDeleteChatMessage,
|
|
doInfoChatEvent,
|
|
doInfoChatMember,
|
|
doInfoChatMessage,
|
|
doInfoChatSpace,
|
|
doPrintShowChatMembers,
|
|
doPrintShowChatSpaces,
|
|
doSetupChat,
|
|
doUpdateChatMessage,
|
|
infoChatEmoji,
|
|
infoChatEvent,
|
|
infoChatMember,
|
|
infoChatMessage,
|
|
infoChatSpace,
|
|
infoChatSpaceDM,
|
|
moveShowChatSectionItem,
|
|
printShowChatEmojis,
|
|
printShowChatEvents,
|
|
printShowChatMembers,
|
|
printShowChatMessages,
|
|
printShowChatSearchMessages,
|
|
printShowChatSectionItems,
|
|
printShowChatSections,
|
|
printShowChatSpaces,
|
|
syncChatMembers,
|
|
updateChatMessage,
|
|
updateChatSpace,
|
|
)
|
|
from gam.cmd.chromeapps import (
|
|
doInfoChromeApp,
|
|
doPrintChromeSnValidity,
|
|
doPrintShowChromeAppDevices,
|
|
doPrintShowChromeApps,
|
|
doPrintShowChromeAues,
|
|
doPrintShowChromeDeviceCounts,
|
|
doPrintShowChromeHistory,
|
|
doPrintShowChromeNeedsAttn,
|
|
doPrintShowChromeVersions,
|
|
)
|
|
from gam.cmd.chromepolicies import (
|
|
doCreateChromeNetwork,
|
|
doCreateChromePolicyImage,
|
|
doDeleteChromeNetwork,
|
|
doDeleteChromePolicy,
|
|
doInfoChromePolicySchemas,
|
|
doPrintShowChromePolicies,
|
|
doPrintShowChromePolicySchemas,
|
|
doUpdateChromePolicy,
|
|
)
|
|
from gam.cmd.cidevices import (
|
|
doApproveCIDeviceUser,
|
|
doBlockCIDeviceUser,
|
|
doCancelWipeCIDevice,
|
|
doCancelWipeCIDeviceUser,
|
|
doCreateCIDevice,
|
|
doDeleteCIDevice,
|
|
doDeleteCIDeviceUser,
|
|
doInfoCIDevice,
|
|
doInfoCIDeviceUser,
|
|
doInfoCIDeviceUserState,
|
|
doPrintCIDeviceUsers,
|
|
doPrintCIDevices,
|
|
doSyncCIDevices,
|
|
doUpdateCIDevice,
|
|
doUpdateCIDeviceUser,
|
|
doUpdateCIDeviceUserState,
|
|
doWipeCIDevice,
|
|
doWipeCIDeviceUser,
|
|
)
|
|
from gam.cmd.cigroups import (
|
|
doCreateCIGroup,
|
|
doCreateUpdateCIPolicy,
|
|
doDeleteCIGroups,
|
|
doDeleteCIPolicies,
|
|
doInfoCIGroupMembers,
|
|
doInfoCIGroups,
|
|
doInfoCIPolicies,
|
|
doPrintCIGroupMembers,
|
|
doPrintCIGroups,
|
|
doPrintShowCIPolicies,
|
|
doShowCIGroupMembers,
|
|
doUpdateCIGroups,
|
|
infoCIGroupMembers,
|
|
)
|
|
from gam.cmd.ciuserinvitations import (
|
|
checkCIUserIsInvitable,
|
|
doCIUserInvitationsAction,
|
|
doCheckCIUserInvitations,
|
|
doInfoCIUserInvitations,
|
|
doPrintShowCIUserInvitations,
|
|
)
|
|
from gam.cmd.cloudstorage import doCopyCloudStorageBucket, doDownloadCloudStorageBucket, doDownloadCloudStorageFile
|
|
from gam.cmd.contacts import (
|
|
doClearDomainContacts,
|
|
doCreateDomainContact,
|
|
doDedupDomainContacts,
|
|
doDeleteDomainContacts,
|
|
doInfoDomainContacts,
|
|
doPrintShowDomainContacts,
|
|
doUpdateDomainContacts,
|
|
)
|
|
from gam.cmd.courses import (
|
|
acceptClassroomInvitations,
|
|
cancelGuardianInvitations,
|
|
clearGuardians,
|
|
createClassroomInvitations,
|
|
deleteClassroomInvitations,
|
|
deleteGuardians,
|
|
doCancelGuardianInvitation,
|
|
doClearCourseStudentGroups,
|
|
doCourseAddItems,
|
|
doCourseClearParticipants,
|
|
doCourseRemoveItems,
|
|
doCourseSyncParticipants,
|
|
doCourseUpdateItems,
|
|
doCreateCourse,
|
|
doCreateCourseStudentGroups,
|
|
doDeleteClassroomInvitations,
|
|
doDeleteCourse,
|
|
doDeleteCourseStudentGroups,
|
|
doDeleteCourses,
|
|
doDeleteGuardian,
|
|
doInfoCourse,
|
|
doInfoCourses,
|
|
doInviteGuardian,
|
|
doPrintCourseAnnouncements,
|
|
doPrintCourseCounts,
|
|
doPrintCourseMaterials,
|
|
doPrintCourseParticipants,
|
|
doPrintCourseStudentGroupMembers,
|
|
doPrintCourseStudentGroups,
|
|
doPrintCourseSubmissions,
|
|
doPrintCourseTopics,
|
|
doPrintCourseWork,
|
|
doPrintCourses,
|
|
doPrintShowClassroomInvitations,
|
|
doPrintShowGuardians,
|
|
doProcessCourseStudentGroupMembers,
|
|
doUpdateCourse,
|
|
doUpdateCourseStudentGroups,
|
|
doUpdateCourses,
|
|
inviteGuardians,
|
|
printShowClassroomInvitations,
|
|
printShowClassroomProfile,
|
|
printShowGuardians,
|
|
syncGuardians,
|
|
)
|
|
from gam.cmd.cros import (
|
|
doGetCommandResultCrOSDevices,
|
|
doGetCrOSDeviceFiles,
|
|
doInfoCrOSDevices,
|
|
doInfoPrintShowCrOSTelemetry,
|
|
doIssueCommandCrOSDevices,
|
|
doPrintCrOSActivity,
|
|
doPrintCrOSDevices,
|
|
doPrintCrOSEntity,
|
|
doUpdateCrOSDevices,
|
|
getCommandResultCrOSDevices,
|
|
getCrOSDeviceFiles,
|
|
infoCrOSDevices,
|
|
issueCommandCrOSDevices,
|
|
updateCrOSDevices,
|
|
)
|
|
from gam.cmd.customer import (
|
|
doInfoCustomer,
|
|
doInfoDomain,
|
|
doInfoInstance,
|
|
doPrintShowDomains,
|
|
doUpdateCustomer,
|
|
)
|
|
from gam.cmd.datatransfer import (
|
|
doCreateDataTransfer,
|
|
doInfoDataTransfer,
|
|
doPrintShowDataTransfers,
|
|
doShowTransferApps,
|
|
)
|
|
from gam.cmd.delegates import printShowContactDelegates, processContactDelegates
|
|
from gam.cmd.domains import (
|
|
doCreateDomain,
|
|
doCreateDomainAlias,
|
|
doDeleteDomain,
|
|
doDeleteDomainAlias,
|
|
doInfoDomainAlias,
|
|
doPrintShowDomainAliases,
|
|
doUpdateDomain,
|
|
)
|
|
from gam.cmd.drive import (
|
|
checkDriveFileShortcut,
|
|
claimOwnership,
|
|
collectOrphans,
|
|
copyDriveFile,
|
|
copySyncSharedDriveACLs,
|
|
createDriveFile,
|
|
createDriveFileACL,
|
|
createDriveFilePermissions,
|
|
createDriveFileShortcut,
|
|
createDriveFolderPath,
|
|
createDriveLabelPermissions,
|
|
createSharedDrive,
|
|
deleteDriveFile,
|
|
deleteDriveFileACLs,
|
|
deleteDriveLabelPermissions,
|
|
deleteEmptyDriveFolders,
|
|
deleteFileRevisions,
|
|
deletePermissions,
|
|
deleteSharedDrive,
|
|
doCopySyncSharedDriveACLs,
|
|
doCreateDriveFileACL,
|
|
doCreateDriveLabelPermissions,
|
|
doCreatePermissions,
|
|
doCreateSharedDrive,
|
|
doDeleteDriveFileACLs,
|
|
doDeleteDriveLabelPermissions,
|
|
doDeletePermissions,
|
|
doDeleteSharedDrive,
|
|
doHideUnhideSharedDrive,
|
|
doInfoDriveFileACLs,
|
|
doInfoDriveLabels,
|
|
doInfoSharedDrive,
|
|
doPrintSharedDriveOrganizers,
|
|
doPrintShowDriveFileACLs,
|
|
doPrintShowDriveLabelPermissions,
|
|
doPrintShowDriveLabels,
|
|
doPrintShowOrgunitSharedDrives,
|
|
doPrintShowOwnership,
|
|
doPrintShowSharedDriveACLs,
|
|
doPrintShowSharedDrives,
|
|
doShowSharedDriveThemes,
|
|
doUpdateDriveFileACLs,
|
|
doUpdateSharedDrive,
|
|
emptyDriveTrash,
|
|
getDriveFile,
|
|
getGoogleDocument,
|
|
hideUnhideSharedDrive,
|
|
infoDriveFileACLs,
|
|
infoDriveLabels,
|
|
infoSharedDrive,
|
|
moveDriveFile,
|
|
printDiskUsage,
|
|
printDriveActivity,
|
|
printEmptyDriveFolders,
|
|
printFileList,
|
|
printFileParentTree,
|
|
printSharedDriveOrganizers,
|
|
printShowDriveFileACLs,
|
|
printShowDriveLabelPermissions,
|
|
printShowDriveLabels,
|
|
printShowDriveSettings,
|
|
printShowDrivelastModifications,
|
|
printShowFileComments,
|
|
printShowFileCounts,
|
|
printShowFilePaths,
|
|
printShowFileRevisions,
|
|
printShowFileShareCounts,
|
|
printShowFileTree,
|
|
printShowLookerStudioAssets,
|
|
printShowSharedDriveACLs,
|
|
printShowSharedDrives,
|
|
processFileDriveLabels,
|
|
purgeDriveFile,
|
|
showFileInfo,
|
|
showSharedDriveThemes,
|
|
transferDrive,
|
|
transferOwnership,
|
|
trashDriveFile,
|
|
untrashDriveFile,
|
|
updateDriveFile,
|
|
updateDriveFileACLs,
|
|
updateFileRevisions,
|
|
updateGoogleDocument,
|
|
updateSharedDrive,
|
|
)
|
|
from gam.cmd.gmail import (
|
|
archiveMessages,
|
|
createCSEKeyPair,
|
|
createFilter,
|
|
createForm,
|
|
createForwardingAddresses,
|
|
createLabel,
|
|
createLabelList,
|
|
createSmime,
|
|
createUpdateCSEIdentity,
|
|
createUpdateSendAs,
|
|
delegateTo,
|
|
deleteFilters,
|
|
deleteForwardingAddresses,
|
|
deleteInfoSendAs,
|
|
deleteLabel,
|
|
deleteLabelId,
|
|
deleteLabelIdList,
|
|
deleteLabelList,
|
|
deleteSmime,
|
|
draftMessage,
|
|
exportMessages,
|
|
exportThreads,
|
|
importMessage,
|
|
infoFilters,
|
|
infoForwardingAddresses,
|
|
insertMessage,
|
|
printShowCSEIdentities,
|
|
printShowCSEKeyPairs,
|
|
printShowDelegates,
|
|
printShowFilters,
|
|
printShowFormResponses,
|
|
printShowForms,
|
|
printShowForward,
|
|
printShowForwardingAddresses,
|
|
printShowGmailProfile,
|
|
printShowImap,
|
|
printShowLabels,
|
|
printShowLanguage,
|
|
printShowMessages,
|
|
printShowPop,
|
|
printShowSendAs,
|
|
printShowSignature,
|
|
printShowSmimes,
|
|
printShowThreads,
|
|
printShowVacation,
|
|
processCSEIdentity,
|
|
processCSEKeyPair,
|
|
processDelegates,
|
|
processMessages,
|
|
processThreads,
|
|
setForward,
|
|
setImap,
|
|
setLanguage,
|
|
setPop,
|
|
setSignature,
|
|
setVacation,
|
|
updateDelegates,
|
|
updateForm,
|
|
updateLabelSettings,
|
|
updateLabelSettingsById,
|
|
updateLabels,
|
|
updateSmime,
|
|
watchGmail,
|
|
)
|
|
from gam.cmd.groups import (
|
|
doCreateGroup,
|
|
doDeleteGroups,
|
|
doInfoGroupMembers,
|
|
doInfoGroups,
|
|
doPrintGroupMembers,
|
|
doPrintGroups,
|
|
doPrintShowGroupTree,
|
|
doShowGroupMembers,
|
|
doUpdateGroups,
|
|
infoGroupMembers,
|
|
)
|
|
from gam.cmd.licenses import doPrintLicenses, doShowLicenses
|
|
from gam.cmd.meet import (
|
|
createMeetSpace,
|
|
endMeetConference,
|
|
infoMeetSpace,
|
|
printShowMeetConferences,
|
|
printShowMeetParticipants,
|
|
printShowMeetRecordings,
|
|
printShowMeetTranscripts,
|
|
updateMeetSpace,
|
|
)
|
|
from gam.cmd.mobile import (
|
|
doDeleteMobileDevices,
|
|
doInfoMobileDevices,
|
|
doPrintMobileDevices,
|
|
doUpdateMobileDevices,
|
|
)
|
|
from gam.cmd.notes import (
|
|
createNote,
|
|
createNotesACLs,
|
|
deleteInfoNotes,
|
|
deleteNotesACLs,
|
|
getNoteAttachments,
|
|
printShowNotes,
|
|
)
|
|
from gam.cmd.oauth import (
|
|
Credentials,
|
|
doOAuthCreate,
|
|
doOAuthDelete,
|
|
doOAuthExport,
|
|
doOAuthInfo,
|
|
doOAuthRefresh,
|
|
doOAuthUpdate,
|
|
)
|
|
from gam.cmd.orgunits import (
|
|
doCheckOrgUnit,
|
|
doCreateOrg,
|
|
doDeleteOrg,
|
|
doDeleteOrgs,
|
|
doInfoOrg,
|
|
doInfoOrgs,
|
|
doPrintOrgs,
|
|
doShowOrgTree,
|
|
doUpdateOrg,
|
|
doUpdateOrgs,
|
|
)
|
|
from gam.cmd.people import (
|
|
clearUserPeopleContacts,
|
|
copyUserPeopleOtherContacts,
|
|
createUserPeopleContact,
|
|
createUserPeopleContactGroup,
|
|
dedupReplaceDomainUserPeopleContacts,
|
|
deleteUserPeopleContactGroups,
|
|
deleteUserPeopleContactPhoto,
|
|
deleteUserPeopleContacts,
|
|
doDeleteDomainContactPhoto,
|
|
doGetDomainContactPhoto,
|
|
doInfoDomainPeopleContacts,
|
|
doInfoDomainPeopleProfile,
|
|
doPrintShowDomainPeopleContacts,
|
|
doPrintShowDomainPeopleProfiles,
|
|
doUpdateDomainContactPhoto,
|
|
getUserPeopleContactPhoto,
|
|
infoUserPeopleContactGroups,
|
|
infoUserPeopleContacts,
|
|
printShowUserPeopleContactGroups,
|
|
printShowUserPeopleContacts,
|
|
printShowUserPeopleOtherContacts,
|
|
printShowUserPeopleProfiles,
|
|
processUserPeopleOtherContacts,
|
|
updateUserPeopleContactGroup,
|
|
updateUserPeopleContactPhoto,
|
|
updateUserPeopleContacts,
|
|
)
|
|
from gam.cmd.printers import (
|
|
doCreatePrinter,
|
|
doDeletePrinter,
|
|
doInfoPrinter,
|
|
doPrintShowPrinterModels,
|
|
doPrintShowPrinters,
|
|
doUpdatePrinter,
|
|
)
|
|
from gam.cmd.project import (
|
|
checkServiceAccount,
|
|
doCheckUpdateSvcAcct,
|
|
doCreateGCPFolder,
|
|
doCreateGCPServiceAccount,
|
|
doCreateProject,
|
|
doCreateSvcAcct,
|
|
doCreateSvcAcctKeys,
|
|
doDeleteProject,
|
|
doDeleteSvcAcct,
|
|
doDeleteSvcAcctKeys,
|
|
doEnableAPIs,
|
|
doInfoCurrentProjectId,
|
|
doInfoCustomerId,
|
|
doInfoGCPOrgId,
|
|
doPrintShowProjects,
|
|
doPrintShowSvcAccts,
|
|
doProcessSvcAcctKeys,
|
|
doReplaceSvcAcctKeys,
|
|
doShowSvcAcctKeys,
|
|
doUpdateProject,
|
|
doUpdateSvcAcctKeys,
|
|
doUploadSvcAcctKeys,
|
|
doUseProject,
|
|
)
|
|
from gam.cmd.reports import doReport, doWhatIs
|
|
from gam.cmd.reseller import (
|
|
doCreateResoldCustomer,
|
|
doCreateResoldSubscription,
|
|
doDeleteResoldSubscription,
|
|
doInfoResoldCustomer,
|
|
doInfoResoldSubscription,
|
|
doPrintShowChannelCustomerEntitlements,
|
|
doPrintShowChannelCustomers,
|
|
doPrintShowChannelOffers,
|
|
doPrintShowChannelProducts,
|
|
doPrintShowChannelSKUs,
|
|
doPrintShowResoldSubscriptions,
|
|
doUpdateResoldCustomer,
|
|
doUpdateResoldSubscription,
|
|
)
|
|
from gam.cmd.resources import (
|
|
doCreateBuilding,
|
|
doCreateFeature,
|
|
doCreateResourceCalendar,
|
|
doDeleteBuilding,
|
|
doDeleteFeature,
|
|
doDeleteResourceCalendar,
|
|
doDeleteResourceCalendars,
|
|
doInfoBuilding,
|
|
doInfoResourceCalendar,
|
|
doInfoResourceCalendars,
|
|
doPrintShowBuildings,
|
|
doPrintShowFeatures,
|
|
doPrintShowResourceCalendars,
|
|
doUpdateBuilding,
|
|
doUpdateFeature,
|
|
doUpdateResourceCalendar,
|
|
doUpdateResourceCalendars,
|
|
)
|
|
from gam.cmd.schemas import (
|
|
doCreateUpdateUserSchemas,
|
|
doDeleteUserSchemas,
|
|
doInfoUserSchemas,
|
|
doPrintShowUserSchemas,
|
|
)
|
|
from gam.cmd.send_email import doSendEmail, doSendReply
|
|
from gam.cmd.sites import (
|
|
deprecatedDomainSites,
|
|
deprecatedUserSites,
|
|
doCreateSiteVerification,
|
|
doInfoSiteVerification,
|
|
doUpdateSiteVerification,
|
|
printShowBusinessProfileAccounts,
|
|
printShowWebMasterSites,
|
|
printShowWebResources,
|
|
)
|
|
from gam.cmd.sso import (
|
|
doCreateInboundSSOAssignment,
|
|
doCreateInboundSSOCredential,
|
|
doCreateInboundSSOProfile,
|
|
doDeleteInboundSSOAssignment,
|
|
doDeleteInboundSSOCredential,
|
|
doDeleteInboundSSOProfile,
|
|
doInfoInboundSSOAssignment,
|
|
doInfoInboundSSOCredential,
|
|
doInfoInboundSSOProfile,
|
|
doPrintShowInboundSSOAssignments,
|
|
doPrintShowInboundSSOCredentials,
|
|
doPrintShowInboundSSOProfiles,
|
|
doUpdateInboundSSOAssignment,
|
|
doUpdateInboundSSOProfile,
|
|
)
|
|
from gam.cmd.tasks import (
|
|
importTasklist,
|
|
printShowTagManagerAccounts,
|
|
printShowTagManagerContainers,
|
|
printShowTagManagerPermissions,
|
|
printShowTagManagerTags,
|
|
printShowTagManagerWorkspaces,
|
|
printShowTasklists,
|
|
printShowTasks,
|
|
processTasklists,
|
|
processTasks,
|
|
)
|
|
from gam.cmd.userop import (
|
|
addUserToGroups,
|
|
appendSheetRanges,
|
|
checkUserInGroups,
|
|
clearSheetRanges,
|
|
createLicense,
|
|
createSheet,
|
|
deleteLicense,
|
|
deletePhoto,
|
|
deleteTokens,
|
|
deleteUserFromGroups,
|
|
deprovisionUser,
|
|
doPrintShowTokens,
|
|
getProfilePhoto,
|
|
getUserPhoto,
|
|
infoPrintShowSheets,
|
|
printShowGroupTree,
|
|
printShowLookerStudioPermissions,
|
|
printShowSheetRanges,
|
|
printShowTokens,
|
|
printShowUserGroups,
|
|
printUserGroupsList,
|
|
processLookerStudioPermissions,
|
|
setProfile,
|
|
showProfile,
|
|
syncLicense,
|
|
syncUserWithGroups,
|
|
updateLicense,
|
|
updatePhoto,
|
|
updateSheetRanges,
|
|
updateSheets,
|
|
updateUserGroups,
|
|
)
|
|
from gam.cmd.users import (
|
|
deleteUsers,
|
|
doCheckUserSuspended,
|
|
doCreateGuestUser,
|
|
doCreateUser,
|
|
doDeleteUser,
|
|
doDeleteUsers,
|
|
doInfoUser,
|
|
doInfoUsers,
|
|
doPrintUserCountsByOrgUnit,
|
|
doPrintUserEntity,
|
|
doPrintUserList,
|
|
doPrintUsers,
|
|
doSuspendUnsuspendUser,
|
|
doSuspendUnsuspendUsers,
|
|
doUndeleteUser,
|
|
doUndeleteUsers,
|
|
doUpdateUser,
|
|
doUpdateUsers,
|
|
infoUsers,
|
|
signoutTurnoff2SVUsers,
|
|
suspendUnsuspendUsers,
|
|
undeleteUsers,
|
|
updateUsers,
|
|
waitForMailbox,
|
|
)
|
|
from gam.cmd.userservices import (
|
|
addCreateCalendars,
|
|
createCalendarACLs,
|
|
createCalendarEvent,
|
|
createFocusTime,
|
|
createOutOfOffice,
|
|
createWorkingLocation,
|
|
deleteASP,
|
|
deleteBackupCodes,
|
|
deleteCalendarACLs,
|
|
deleteCalendarEvents,
|
|
deleteCalendars,
|
|
deleteFocusTime,
|
|
deleteOutOfOffice,
|
|
deleteWorkingLocation,
|
|
doCalendarsTransferOwnership,
|
|
emptyCalendarTrash,
|
|
importCalendarEvent,
|
|
infoCalendarACLs,
|
|
infoCalendarEvents,
|
|
infoCalendars,
|
|
modifyCalendars,
|
|
moveCalendarEvents,
|
|
printShowASPs,
|
|
printShowBackupCodes,
|
|
printShowCalSettings,
|
|
printShowCalendarACLs,
|
|
printShowCalendarEvents,
|
|
printShowCalendars,
|
|
printShowFocusTime,
|
|
printShowOutOfOffice,
|
|
printShowWorkingLocation,
|
|
printShowYouTubeChannel,
|
|
purgeCalendarEvents,
|
|
removeCalendars,
|
|
updateBackupCodes,
|
|
updateCalendarACLs,
|
|
updateCalendarAttendees,
|
|
updateCalendarEvents,
|
|
updateCalendars,
|
|
wipeCalendarEvents,
|
|
)
|
|
from gam.cmd.vault import (
|
|
doCloseVaultMatter,
|
|
doCopyVaultExport,
|
|
doCopyVaultQuery,
|
|
doCreateVaultExport,
|
|
doCreateVaultHold,
|
|
doCreateVaultMatter,
|
|
doCreateVaultQuery,
|
|
doDeleteVaultExport,
|
|
doDeleteVaultHold,
|
|
doDeleteVaultMatter,
|
|
doDeleteVaultQuery,
|
|
doDownloadVaultExport,
|
|
doInfoVaultExport,
|
|
doInfoVaultHold,
|
|
doInfoVaultMatter,
|
|
doInfoVaultQuery,
|
|
doPrintShowVaultExports,
|
|
doPrintShowVaultHolds,
|
|
doPrintShowVaultMatters,
|
|
doPrintShowVaultQueries,
|
|
doPrintVaultCounts,
|
|
doReopenVaultMatter,
|
|
doUndeleteVaultMatter,
|
|
doUpdateVaultHold,
|
|
doUpdateVaultMatter,
|
|
printShowUserVaultHolds,
|
|
)
|
|
|
|
|
|
# gam.cmd.alerts
|
|
|
|
# gam.cmd.aliases
|
|
|
|
# gam.cmd.analytics
|
|
|
|
# gam.cmd.audit
|
|
|
|
# gam.cmd.browsers
|
|
|
|
# gam.cmd.caa
|
|
|
|
# gam.cmd.calendar
|
|
|
|
# gam.cmd.chat
|
|
|
|
# gam.cmd.chromeapps
|
|
|
|
# gam.cmd.chromepolicies
|
|
|
|
# gam.cmd.cidevices
|
|
|
|
# gam.cmd.cigroups
|
|
|
|
# gam.cmd.ciuserinvitations
|
|
|
|
# gam.cmd.cloudstorage
|
|
|
|
# gam.cmd.contacts
|
|
|
|
# gam.cmd.courses
|
|
|
|
# gam.cmd.cros
|
|
|
|
# gam.cmd.customer
|
|
|
|
# gam.cmd.datatransfer
|
|
|
|
# gam.cmd.delegates
|
|
|
|
# gam.cmd.domains
|
|
|
|
# gam.cmd.drive
|
|
|
|
# gam.cmd.gmail
|
|
|
|
# gam.cmd.groups
|
|
|
|
# gam.cmd.licenses
|
|
|
|
# gam.cmd.meet
|
|
|
|
# gam.cmd.mobile
|
|
|
|
# gam.cmd.notes
|
|
|
|
# gam.cmd.oauth
|
|
|
|
# gam.cmd.orgunits
|
|
|
|
# gam.cmd.people
|
|
|
|
# gam.cmd.printers
|
|
|
|
# gam.cmd.project
|
|
|
|
# gam.cmd.reports
|
|
|
|
# gam.cmd.reseller
|
|
|
|
# gam.cmd.resources
|
|
|
|
# gam.cmd.schemas
|
|
|
|
# gam.cmd.send_email
|
|
|
|
# gam.cmd.sites
|
|
|
|
# gam.cmd.sso
|
|
|
|
# gam.cmd.tasks
|
|
|
|
# gam.cmd.userop
|
|
|
|
# gam.cmd.users
|
|
|
|
# gam.cmd.userservices
|
|
|
|
# gam.cmd.vault
|
|
|
|
|
|
class LazyLoader(types.ModuleType):
|
|
"""Lazily import a module, mainly to avoid pulling in large dependencies.
|
|
|
|
`contrib`, and `ffmpeg` are examples of modules that are large and not always
|
|
needed, and this allows them to only be loaded when they are used.
|
|
"""
|
|
|
|
# The lint error here is incorrect.
|
|
def __init__(self, local_name, parent_module_globals, name):
|
|
self._local_name = local_name
|
|
self._parent_module_globals = parent_module_globals
|
|
|
|
super().__init__(name)
|
|
|
|
def _load(self):
|
|
# Import the target module and insert it into the parent's namespace
|
|
module = importlib.import_module(self.__name__)
|
|
self._parent_module_globals[self._local_name] = module
|
|
|
|
# Update this object's dict so that if someone keeps a reference to the
|
|
# LazyLoader, lookups are efficient (__getattr__ is only called on lookups
|
|
# that fail).
|
|
self.__dict__.update(module.__dict__)
|
|
|
|
return module
|
|
|
|
def __getattr__(self, item):
|
|
module = self._load()
|
|
return getattr(module, item)
|
|
|
|
def __dir__(self):
|
|
module = self._load()
|
|
return dir(module)
|
|
|
|
yubikey = LazyLoader('yubikey', globals(), 'gam.gamlib.yubikey')
|
|
|
|
# gam yubikey resetpvi [yubikey_serialnumber <String>]
|
|
def doResetYubiKeyPIV():
|
|
new_data = {}
|
|
while Cmd.ArgumentsRemaining():
|
|
myarg = getArgument()
|
|
if myarg == 'yubikeyserialnumber':
|
|
new_data['yubikey_serial_number'] = getInteger()
|
|
else:
|
|
unknownArgumentExit()
|
|
yk = yubikey.YubiKey(new_data)
|
|
yk.serial_number = yk.get_serial_number()
|
|
yk.reset_piv()
|
|
|
|
|
|
# Audit command utilities
|
|
def ACLRuleDict(rule):
|
|
if rule['scope']['type'] != 'default':
|
|
return {'Scope': f'{rule["scope"]["type"]}:{rule["scope"]["value"]}', 'Role': rule['role']}
|
|
return {'Scope': f'{rule["scope"]["type"]}', 'Role': rule['role']}
|
|
|
|
def ACLRuleKeyValueList(rule):
|
|
if rule['scope']['type'] != 'default':
|
|
return ['Scope', f'{rule["scope"]["type"]}:{rule["scope"]["value"]}', 'Role', rule['role']]
|
|
return ['Scope', f'{rule["scope"]["type"]}', 'Role', rule['role']]
|
|
|
|
def formatACLRule(rule):
|
|
return formatKeyValueList('(', ACLRuleKeyValueList(rule), ')')
|
|
|
|
def formatACLScopeRole(scope, role):
|
|
if role:
|
|
return formatKeyValueList('(', ['Scope', scope, 'Role', role], ')')
|
|
return formatKeyValueList('(', ['Scope', scope], ')')
|
|
|
|
def normalizeRuleId(ruleId):
|
|
ruleIdParts = ruleId.split(':', 1)
|
|
if (len(ruleIdParts) == 1) or not ruleIdParts[1]:
|
|
if ruleIdParts[0] == 'default':
|
|
return ruleId
|
|
if ruleIdParts[0] == 'domain':
|
|
return f'domain:{GC.Values[GC.DOMAIN]}'
|
|
return f'user:{normalizeEmailAddressOrUID(ruleIdParts[0], noUid=True)}'
|
|
if ruleIdParts[0] in {'user', 'group'}:
|
|
return f'{ruleIdParts[0]}:{normalizeEmailAddressOrUID(ruleIdParts[1], noUid=True)}'
|
|
return ruleId
|
|
|
|
def makeRoleRuleIdBody(role, ruleId):
|
|
ruleIdParts = ruleId.split(':', 1)
|
|
if len(ruleIdParts) == 1:
|
|
if ruleIdParts[0] == 'default':
|
|
return {'role': role, 'scope': {'type': ruleIdParts[0]}}
|
|
if ruleIdParts[0] == 'domain':
|
|
return {'role': role, 'scope': {'type': ruleIdParts[0], 'value': GC.Values[GC.DOMAIN]}}
|
|
return {'role': role, 'scope': {'type': 'user', 'value': ruleIdParts[0]}}
|
|
return {'role': role, 'scope': {'type': ruleIdParts[0], 'value': ruleIdParts[1]}}
|
|
|
|
BUILDING_ADDRESS_FIELD_MAP = {
|
|
'address': 'addressLines',
|
|
'addresslines': 'addressLines',
|
|
'administrativearea': 'administrativeArea',
|
|
'city': 'locality',
|
|
'country': 'regionCode',
|
|
'language': 'languageCode',
|
|
'languagecode': 'languageCode',
|
|
'locality': 'locality',
|
|
'postalcode': 'postalCode',
|
|
'regioncode': 'regionCode',
|
|
'state': 'administrativeArea',
|
|
'sublocality': 'sublocality',
|
|
'zipcode': 'postalCode',
|
|
}
|
|
|
|
CMD_ACTION = 0
|
|
CMD_FUNCTION = 1
|
|
|
|
# Batch commands
|
|
BATCH_CSV_COMMANDS = {
|
|
Cmd.BATCH_CMD: (Act.PERFORM, doBatch),
|
|
Cmd.CSV_CMD: (Act.PERFORM, doCSV),
|
|
Cmd.CSVTEST_CMD: (Act.PERFORM, doCSVTest),
|
|
Cmd.TBATCH_CMD: (Act.PERFORM, doThreadBatch),
|
|
}
|
|
|
|
# Main commands
|
|
MAIN_COMMANDS = {
|
|
'checkconn': (Act.CHECK, doCheckConnection),
|
|
'checkconnection': (Act.CHECK, doCheckConnection),
|
|
'comment': (Act.COMMENT, doComment),
|
|
'help': (Act.PERFORM, doUsage),
|
|
'list': (Act.LIST, doListType),
|
|
'report': (Act.REPORT, doReport),
|
|
'sendemail': (Act.SENDEMAIL, doSendEmail),
|
|
'version': (Act.PERFORM, doVersion),
|
|
'whatis': (Act.INFO, doWhatIs),
|
|
}
|
|
|
|
# Main commands with objects
|
|
MAIN_ADD_CREATE_FUNCTIONS = {
|
|
Cmd.ARG_ADMIN: doCreateAdmin,
|
|
Cmd.ARG_ADMINROLE: doCreateUpdateAdminRoles,
|
|
Cmd.ARG_ALERTFEEDBACK: doCreateAlertFeedback,
|
|
Cmd.ARG_ALIAS: doCreateUpdateAliases,
|
|
Cmd.ARG_BROWSERTOKEN: doCreateBrowserToken,
|
|
Cmd.ARG_BUILDING: doCreateBuilding,
|
|
Cmd.ARG_CAALEVEL: doCreateCAALevel,
|
|
Cmd.ARG_CHATMESSAGE: doCreateChatMessage,
|
|
Cmd.ARG_CHROMENETWORK: doCreateChromeNetwork,
|
|
Cmd.ARG_CHROMEPOLICYIMAGE: doCreateChromePolicyImage,
|
|
Cmd.ARG_CHROMEPROFILECOMMAND: doCreateChromeProfileCommand,
|
|
Cmd.ARG_CIGROUP: doCreateCIGroup,
|
|
Cmd.ARG_CIPOLICY: doCreateUpdateCIPolicy,
|
|
Cmd.ARG_CONTACT: doCreateDomainContact,
|
|
Cmd.ARG_COURSE: doCreateCourse,
|
|
Cmd.ARG_COURSESTUDENTGROUP: doCreateCourseStudentGroups,
|
|
Cmd.ARG_COURSESTUDENTGROUPMEMBERS: doProcessCourseStudentGroupMembers,
|
|
Cmd.ARG_DATATRANSFER: doCreateDataTransfer,
|
|
Cmd.ARG_DEVICE: doCreateCIDevice,
|
|
Cmd.ARG_DOMAIN: doCreateDomain,
|
|
Cmd.ARG_DOMAINALIAS: doCreateDomainAlias,
|
|
Cmd.ARG_DRIVEFILEACL: doCreateDriveFileACL,
|
|
Cmd.ARG_DRIVELABELPERMISSION: doCreateDriveLabelPermissions,
|
|
Cmd.ARG_FEATURE: doCreateFeature,
|
|
Cmd.ARG_GCPFOLDER: doCreateGCPFolder,
|
|
Cmd.ARG_GCPSERVICEACCOUNT: doCreateGCPServiceAccount,
|
|
Cmd.ARG_GROUP: doCreateGroup,
|
|
Cmd.ARG_GUARDIAN: doInviteGuardian,
|
|
Cmd.ARG_GUARDIANINVITATION: doInviteGuardian,
|
|
Cmd.ARG_GUESTUSER: doCreateGuestUser,
|
|
Cmd.ARG_INBOUNDSSOASSIGNMENT: doCreateInboundSSOAssignment,
|
|
Cmd.ARG_INBOUNDSSOCREDENTIAL: doCreateInboundSSOCredential,
|
|
Cmd.ARG_INBOUNDSSOPROFILE: doCreateInboundSSOProfile,
|
|
Cmd.ARG_ORG: doCreateOrg,
|
|
Cmd.ARG_PERMISSION: doCreatePermissions,
|
|
Cmd.ARG_PRINTER: doCreatePrinter,
|
|
Cmd.ARG_PROJECT: doCreateProject,
|
|
Cmd.ARG_RESOLDCUSTOMER: doCreateResoldCustomer,
|
|
Cmd.ARG_RESOLDSUBSCRIPTION: doCreateResoldSubscription,
|
|
Cmd.ARG_RESOURCE: doCreateResourceCalendar,
|
|
Cmd.ARG_SAKEY: doCreateSvcAcctKeys,
|
|
Cmd.ARG_SCHEMA: doCreateUpdateUserSchemas,
|
|
Cmd.ARG_SHAREDDRIVE: doCreateSharedDrive,
|
|
Cmd.ARG_SITE: deprecatedDomainSites,
|
|
Cmd.ARG_SITEACL: deprecatedDomainSites,
|
|
Cmd.ARG_SVCACCT: doCreateSvcAcct,
|
|
Cmd.ARG_USER: doCreateUser,
|
|
Cmd.ARG_VAULTEXPORT: doCreateVaultExport,
|
|
Cmd.ARG_VAULTHOLD: doCreateVaultHold,
|
|
Cmd.ARG_VAULTMATTER: doCreateVaultMatter,
|
|
Cmd.ARG_VAULTQUERY: doCreateVaultQuery,
|
|
Cmd.ARG_VERIFY: doCreateSiteVerification,
|
|
}
|
|
|
|
MAIN_COMMANDS_WITH_OBJECTS = {
|
|
'add':
|
|
(Act.ADD,
|
|
MAIN_ADD_CREATE_FUNCTIONS
|
|
),
|
|
'approve':
|
|
(Act.APPROVE,
|
|
{Cmd.ARG_DEVICEUSER: doApproveCIDeviceUser,
|
|
}
|
|
),
|
|
'block':
|
|
(Act.BLOCK,
|
|
{Cmd.ARG_DEVICEUSER: doBlockCIDeviceUser,
|
|
}
|
|
),
|
|
'cancel':
|
|
(Act.CANCEL,
|
|
{Cmd.ARG_GUARDIANINVITATION: doCancelGuardianInvitation,
|
|
Cmd.ARG_USERINVITATION: doCIUserInvitationsAction,
|
|
}
|
|
),
|
|
'cancelwipe':
|
|
(Act.CANCEL_WIPE,
|
|
{Cmd.ARG_DEVICE: doCancelWipeCIDevice,
|
|
Cmd.ARG_DEVICEUSER: doCancelWipeCIDeviceUser,
|
|
}
|
|
),
|
|
'check':
|
|
(Act.CHECK,
|
|
{Cmd.ARG_SVCACCT: doCheckUpdateSvcAcct,
|
|
Cmd.ARG_USERINVITATION: doCheckCIUserInvitations,
|
|
Cmd.ARG_ISINVITABLE: doCheckCIUserInvitations,
|
|
Cmd.ARG_ORG: doCheckOrgUnit,
|
|
Cmd.ARG_SUSPENDED: doCheckUserSuspended,
|
|
}
|
|
),
|
|
'clear':
|
|
(Act.CLEAR,
|
|
{Cmd.ARG_ALERTSETTINGS: doClearAlertSettings,
|
|
Cmd.ARG_CONTACT: doClearDomainContacts,
|
|
Cmd.ARG_COURSESTUDENTGROUP: doClearCourseStudentGroups,
|
|
Cmd.ARG_COURSESTUDENTGROUPMEMBERS: doProcessCourseStudentGroupMembers,
|
|
}
|
|
),
|
|
'close':
|
|
(Act.CLOSE,
|
|
{Cmd.ARG_VAULTMATTER: doCloseVaultMatter,
|
|
}
|
|
),
|
|
'copy':
|
|
(Act.COPY,
|
|
{Cmd.ARG_SHAREDDRIVEACLS: doCopySyncSharedDriveACLs,
|
|
Cmd.ARG_STORAGEBUCKET: doCopyCloudStorageBucket,
|
|
Cmd.ARG_VAULTEXPORT: doCopyVaultExport,
|
|
Cmd.ARG_VAULTQUERY: doCopyVaultQuery,
|
|
}
|
|
),
|
|
'create':
|
|
(Act.CREATE,
|
|
MAIN_ADD_CREATE_FUNCTIONS
|
|
),
|
|
'dedup':
|
|
(Act.DEDUP,
|
|
{Cmd.ARG_CONTACT: doDedupDomainContacts,
|
|
}
|
|
),
|
|
'delete':
|
|
(Act.DELETE,
|
|
{Cmd.ARG_ADMIN: doDeleteAdmin,
|
|
Cmd.ARG_ADMINROLE: doDeleteAdminRole,
|
|
Cmd.ARG_ALIAS: doDeleteAliases,
|
|
Cmd.ARG_ALERT: doDeleteOrUndeleteAlert,
|
|
Cmd.ARG_BROWSER: doDeleteBrowsers,
|
|
Cmd.ARG_BUILDING: doDeleteBuilding,
|
|
Cmd.ARG_CAALEVEL: doDeleteCAALevel,
|
|
Cmd.ARG_CHATMESSAGE: doDeleteChatMessage,
|
|
Cmd.ARG_CHROMENETWORK: doDeleteChromeNetwork,
|
|
Cmd.ARG_CHROMEPOLICY: doDeleteChromePolicy,
|
|
Cmd.ARG_CHROMEPROFILE: doDeleteChromeProfile,
|
|
Cmd.ARG_CIGROUP: doDeleteCIGroups,
|
|
Cmd.ARG_CIPOLICY: doDeleteCIPolicies,
|
|
Cmd.ARG_CLASSROOMINVITATION: doDeleteClassroomInvitations,
|
|
Cmd.ARG_CONTACT: doDeleteDomainContacts,
|
|
Cmd.ARG_CONTACTPHOTO: doDeleteDomainContactPhoto,
|
|
Cmd.ARG_COURSE: doDeleteCourse,
|
|
Cmd.ARG_COURSES: doDeleteCourses,
|
|
Cmd.ARG_COURSESTUDENTGROUP: doDeleteCourseStudentGroups,
|
|
Cmd.ARG_COURSESTUDENTGROUPMEMBERS: doProcessCourseStudentGroupMembers,
|
|
Cmd.ARG_DEVICE: doDeleteCIDevice,
|
|
Cmd.ARG_DEVICEUSER: doDeleteCIDeviceUser,
|
|
Cmd.ARG_DOMAIN: doDeleteDomain,
|
|
Cmd.ARG_DOMAINALIAS: doDeleteDomainAlias,
|
|
Cmd.ARG_DOMAINCONTACT: doDeleteDomainContacts,
|
|
Cmd.ARG_DRIVEFILEACL: doDeleteDriveFileACLs,
|
|
Cmd.ARG_DRIVELABELPERMISSION: doDeleteDriveLabelPermissions,
|
|
Cmd.ARG_FEATURE: doDeleteFeature,
|
|
Cmd.ARG_GROUP: doDeleteGroups,
|
|
Cmd.ARG_GUARDIAN: doDeleteGuardian,
|
|
Cmd.ARG_INBOUNDSSOASSIGNMENT: doDeleteInboundSSOAssignment,
|
|
Cmd.ARG_INBOUNDSSOCREDENTIAL: doDeleteInboundSSOCredential,
|
|
Cmd.ARG_INBOUNDSSOPROFILE: doDeleteInboundSSOProfile,
|
|
Cmd.ARG_MOBILE: doDeleteMobileDevices,
|
|
Cmd.ARG_ORG: doDeleteOrg,
|
|
Cmd.ARG_ORGS: doDeleteOrgs,
|
|
Cmd.ARG_PERMISSION: doDeletePermissions,
|
|
Cmd.ARG_PRINTER: doDeletePrinter,
|
|
Cmd.ARG_PROJECT: doDeleteProject,
|
|
Cmd.ARG_RESOLDSUBSCRIPTION: doDeleteResoldSubscription,
|
|
Cmd.ARG_RESOURCE: doDeleteResourceCalendar,
|
|
Cmd.ARG_RESOURCES: doDeleteResourceCalendars,
|
|
Cmd.ARG_SAKEY: doDeleteSvcAcctKeys,
|
|
Cmd.ARG_SCHEMA: doDeleteUserSchemas,
|
|
Cmd.ARG_SHAREDDRIVE: doDeleteSharedDrive,
|
|
Cmd.ARG_SITEACL: deprecatedDomainSites,
|
|
Cmd.ARG_SVCACCT: doDeleteSvcAcct,
|
|
Cmd.ARG_USER: doDeleteUser,
|
|
Cmd.ARG_USERS: doDeleteUsers,
|
|
Cmd.ARG_VAULTEXPORT: doDeleteVaultExport,
|
|
Cmd.ARG_VAULTHOLD: doDeleteVaultHold,
|
|
Cmd.ARG_VAULTMATTER: doDeleteVaultMatter,
|
|
Cmd.ARG_VAULTQUERY: doDeleteVaultQuery,
|
|
}
|
|
),
|
|
'download':
|
|
(Act.DOWNLOAD,
|
|
{Cmd.ARG_STORAGEBUCKET: doDownloadCloudStorageBucket,
|
|
Cmd.ARG_STORAGEFILE: doDownloadCloudStorageFile,
|
|
Cmd.ARG_VAULTEXPORT: doDownloadVaultExport,
|
|
}
|
|
),
|
|
'enable':
|
|
(Act.ENABLE,
|
|
{Cmd.ARG_API: doEnableAPIs,
|
|
}
|
|
),
|
|
'get':
|
|
(Act.DOWNLOAD,
|
|
{Cmd.ARG_CONTACTPHOTO: doGetDomainContactPhoto,
|
|
Cmd.ARG_DEVICEFILE: doGetCrOSDeviceFiles,
|
|
}
|
|
),
|
|
'getcommand':
|
|
(Act.GET_COMMAND_RESULT,
|
|
{Cmd.ARG_CROS: doGetCommandResultCrOSDevices,
|
|
}
|
|
),
|
|
'hide':
|
|
(Act.HIDE,
|
|
{Cmd.ARG_SHAREDDRIVE: doHideUnhideSharedDrive,
|
|
}
|
|
),
|
|
'info':
|
|
(Act.INFO,
|
|
{Cmd.ARG_ADMINROLE: doInfoPrintShowAdminRoles,
|
|
Cmd.ARG_ALERT: doInfoAlert,
|
|
Cmd.ARG_ALIAS: doInfoAliases,
|
|
Cmd.ARG_BUILDING: doInfoBuilding,
|
|
Cmd.ARG_BROWSER: doInfoBrowsers,
|
|
Cmd.ARG_CHATEVENT: doInfoChatEvent,
|
|
Cmd.ARG_CHATMEMBER: doInfoChatMember,
|
|
Cmd.ARG_CHATMESSAGE: doInfoChatMessage,
|
|
Cmd.ARG_CHATSPACE: doInfoChatSpace,
|
|
Cmd.ARG_CHROMEAPP: doInfoChromeApp,
|
|
Cmd.ARG_CHROMEPROFILE: doInfoChromeProfile,
|
|
Cmd.ARG_CHROMEPROFILECOMMAND: doInfoChromeProfileCommand,
|
|
Cmd.ARG_CHROMESCHEMA: doInfoChromePolicySchemas,
|
|
Cmd.ARG_CIGROUP: doInfoCIGroups,
|
|
Cmd.ARG_CIGROUPMEMBERS: doInfoCIGroupMembers,
|
|
Cmd.ARG_CIPOLICY: doInfoCIPolicies,
|
|
Cmd.ARG_CONTACT: doInfoDomainContacts,
|
|
Cmd.ARG_COURSE: doInfoCourse,
|
|
Cmd.ARG_COURSES: doInfoCourses,
|
|
Cmd.ARG_CROS: doInfoCrOSDevices,
|
|
Cmd.ARG_CROSTELEMETRY: doInfoPrintShowCrOSTelemetry,
|
|
Cmd.ARG_CURRENTPROJECTID: doInfoCurrentProjectId,
|
|
Cmd.ARG_CUSTOMER: doInfoCustomer,
|
|
Cmd.ARG_CUSTOMERID: doInfoCustomerId,
|
|
Cmd.ARG_DATATRANSFER: doInfoDataTransfer,
|
|
Cmd.ARG_DEVICE: doInfoCIDevice,
|
|
Cmd.ARG_DEVICEUSER: doInfoCIDeviceUser,
|
|
Cmd.ARG_DEVICEUSERSTATE: doInfoCIDeviceUserState,
|
|
Cmd.ARG_DOMAIN: doInfoDomain,
|
|
Cmd.ARG_DOMAINALIAS: doInfoDomainAlias,
|
|
Cmd.ARG_DOMAINCONTACT: doInfoDomainContacts,
|
|
Cmd.ARG_DRIVEFILEACL: doInfoDriveFileACLs,
|
|
Cmd.ARG_DRIVELABEL: doInfoDriveLabels,
|
|
Cmd.ARG_INSTANCE: doInfoInstance,
|
|
Cmd.ARG_GCPORGID: doInfoGCPOrgId,
|
|
Cmd.ARG_GROUP: doInfoGroups,
|
|
Cmd.ARG_GROUPMEMBERS: doInfoGroupMembers,
|
|
Cmd.ARG_INBOUNDSSOASSIGNMENT: doInfoInboundSSOAssignment,
|
|
Cmd.ARG_INBOUNDSSOCREDENTIAL: doInfoInboundSSOCredential,
|
|
Cmd.ARG_INBOUNDSSOPROFILE: doInfoInboundSSOProfile,
|
|
Cmd.ARG_MOBILE: doInfoMobileDevices,
|
|
Cmd.ARG_ORG: doInfoOrg,
|
|
Cmd.ARG_ORGS: doInfoOrgs,
|
|
Cmd.ARG_PEOPLEPROFILE: doInfoDomainPeopleProfile,
|
|
Cmd.ARG_PEOPLECONTACT: doInfoDomainPeopleContacts,
|
|
Cmd.ARG_PRINTER: doInfoPrinter,
|
|
Cmd.ARG_RESOLDCUSTOMER: doInfoResoldCustomer,
|
|
Cmd.ARG_RESOLDSUBSCRIPTION: doInfoResoldSubscription,
|
|
Cmd.ARG_RESOURCE: doInfoResourceCalendar,
|
|
Cmd.ARG_RESOURCES: doInfoResourceCalendars,
|
|
Cmd.ARG_SCHEMA: doInfoUserSchemas,
|
|
Cmd.ARG_SHAREDDRIVE: doInfoSharedDrive,
|
|
Cmd.ARG_SITE: deprecatedDomainSites,
|
|
Cmd.ARG_SITEACL: deprecatedDomainSites,
|
|
Cmd.ARG_USER: doInfoUser,
|
|
Cmd.ARG_USERS: doInfoUsers,
|
|
Cmd.ARG_USERINVITATION: doInfoCIUserInvitations,
|
|
Cmd.ARG_VAULTEXPORT: doInfoVaultExport,
|
|
Cmd.ARG_VAULTHOLD: doInfoVaultHold,
|
|
Cmd.ARG_VAULTMATTER: doInfoVaultMatter,
|
|
Cmd.ARG_VAULTQUERY: doInfoVaultQuery,
|
|
Cmd.ARG_VERIFY: doInfoSiteVerification,
|
|
}
|
|
),
|
|
'issuecommand':
|
|
(Act.ISSUE_COMMAND,
|
|
{Cmd.ARG_CROS: doIssueCommandCrOSDevices,
|
|
}
|
|
),
|
|
'move':
|
|
(Act.MOVE,
|
|
{Cmd.ARG_BROWSER: doMoveBrowsers,
|
|
}
|
|
),
|
|
'print':
|
|
(Act.PRINT,
|
|
{Cmd.ARG_ADDRESSES: doPrintAddresses,
|
|
Cmd.ARG_ADMINROLE: doInfoPrintShowAdminRoles,
|
|
Cmd.ARG_ADMIN: doPrintShowAdmins,
|
|
Cmd.ARG_ALERT: doPrintShowAlerts,
|
|
Cmd.ARG_ALERTFEEDBACK: doPrintShowAlertFeedback,
|
|
Cmd.ARG_ALIAS: doPrintAliases,
|
|
Cmd.ARG_BROWSER: doPrintShowBrowsers,
|
|
Cmd.ARG_BROWSERTOKEN: doPrintShowBrowserTokens,
|
|
Cmd.ARG_BUILDING: doPrintShowBuildings,
|
|
Cmd.ARG_CAALEVEL: doPrintShowCAALevels,
|
|
Cmd.ARG_CHANNELCUSTOMER: doPrintShowChannelCustomers,
|
|
Cmd.ARG_CHANNELCUSTOMERENTITLEMENT: doPrintShowChannelCustomerEntitlements,
|
|
Cmd.ARG_CHANNELOFFER: doPrintShowChannelOffers,
|
|
Cmd.ARG_CHANNELPRODUCT: doPrintShowChannelProducts,
|
|
Cmd.ARG_CHANNELSKU: doPrintShowChannelSKUs,
|
|
Cmd.ARG_CHATMEMBER: doPrintShowChatMembers,
|
|
Cmd.ARG_CHATSPACE: doPrintShowChatSpaces,
|
|
Cmd.ARG_CHROMEAPP: doPrintShowChromeApps,
|
|
Cmd.ARG_CHROMEAPPDEVICES: doPrintShowChromeAppDevices,
|
|
Cmd.ARG_CHROMEAUES: doPrintShowChromeAues,
|
|
Cmd.ARG_CHROMEDEVICECOUNTS: doPrintShowChromeDeviceCounts,
|
|
Cmd.ARG_CHROMEHISTORY: doPrintShowChromeHistory,
|
|
Cmd.ARG_CHROMENEEDSATTN: doPrintShowChromeNeedsAttn,
|
|
Cmd.ARG_CHROMEPOLICY: doPrintShowChromePolicies,
|
|
Cmd.ARG_CHROMEPROFILE: doPrintShowChromeProfiles,
|
|
Cmd.ARG_CHROMEPROFILECOMMAND: doPrintShowChromeProfileCommands,
|
|
Cmd.ARG_CHROMESCHEMA: doPrintShowChromePolicySchemas,
|
|
Cmd.ARG_CHROMESNVALIDITY: doPrintChromeSnValidity,
|
|
Cmd.ARG_CHROMEVERSIONS: doPrintShowChromeVersions,
|
|
Cmd.ARG_CIGROUP: doPrintCIGroups,
|
|
Cmd.ARG_CIGROUPMEMBERS: doPrintCIGroupMembers,
|
|
Cmd.ARG_CIPOLICY: doPrintShowCIPolicies,
|
|
Cmd.ARG_CLASSROOMINVITATION: doPrintShowClassroomInvitations,
|
|
Cmd.ARG_CONTACT: doPrintShowDomainContacts,
|
|
Cmd.ARG_COURSE: doPrintCourses,
|
|
Cmd.ARG_COURSES: doPrintCourses,
|
|
Cmd.ARG_COURSEANNOUNCEMENTS: doPrintCourseAnnouncements,
|
|
Cmd.ARG_COURSECOUNTS: doPrintCourseCounts,
|
|
Cmd.ARG_COURSEMATERIALS: doPrintCourseMaterials,
|
|
Cmd.ARG_COURSEPARTICIPANTS: doPrintCourseParticipants,
|
|
Cmd.ARG_COURSESTUDENTGROUP: doPrintCourseStudentGroups,
|
|
Cmd.ARG_COURSESTUDENTGROUPMEMBERS: doPrintCourseStudentGroupMembers,
|
|
Cmd.ARG_COURSESUBMISSIONS: doPrintCourseSubmissions,
|
|
Cmd.ARG_COURSETOPICS: doPrintCourseTopics,
|
|
Cmd.ARG_COURSEWORK: doPrintCourseWork,
|
|
Cmd.ARG_CROS: doPrintCrOSDevices,
|
|
Cmd.ARG_CROSACTIVITY: doPrintCrOSActivity,
|
|
Cmd.ARG_CROSTELEMETRY: doInfoPrintShowCrOSTelemetry,
|
|
Cmd.ARG_DATATRANSFER: doPrintShowDataTransfers,
|
|
Cmd.ARG_DEVICE: doPrintCIDevices,
|
|
Cmd.ARG_DEVICEUSER: doPrintCIDeviceUsers,
|
|
Cmd.ARG_DOMAIN: doPrintShowDomains,
|
|
Cmd.ARG_DOMAINALIAS: doPrintShowDomainAliases,
|
|
Cmd.ARG_DOMAINCONTACT: doPrintShowDomainContacts,
|
|
Cmd.ARG_DRIVEFILEACL: doPrintShowDriveFileACLs,
|
|
Cmd.ARG_DRIVELABEL: doPrintShowDriveLabels,
|
|
Cmd.ARG_DRIVELABELPERMISSION: doPrintShowDriveLabelPermissions,
|
|
Cmd.ARG_FEATURE: doPrintShowFeatures,
|
|
Cmd.ARG_GROUP: doPrintGroups,
|
|
Cmd.ARG_GROUPMEMBERS: doPrintGroupMembers,
|
|
Cmd.ARG_GROUPTREE: doPrintShowGroupTree,
|
|
Cmd.ARG_GUARDIAN: doPrintShowGuardians,
|
|
Cmd.ARG_INBOUNDSSOASSIGNMENT: doPrintShowInboundSSOAssignments,
|
|
Cmd.ARG_INBOUNDSSOCREDENTIAL: doPrintShowInboundSSOCredentials,
|
|
Cmd.ARG_INBOUNDSSOPROFILE: doPrintShowInboundSSOProfiles,
|
|
Cmd.ARG_LICENSE: doPrintLicenses,
|
|
Cmd.ARG_MOBILE: doPrintMobileDevices,
|
|
Cmd.ARG_ORG: doPrintOrgs,
|
|
Cmd.ARG_ORGS: doPrintOrgs,
|
|
Cmd.ARG_ORGUNITSHAREDDRIVE: doPrintShowOrgunitSharedDrives,
|
|
Cmd.ARG_OWNERSHIP: doPrintShowOwnership,
|
|
Cmd.ARG_PEOPLECONTACT: doPrintShowDomainPeopleContacts,
|
|
Cmd.ARG_PEOPLEPROFILE: doPrintShowDomainPeopleProfiles,
|
|
Cmd.ARG_PRINTER: doPrintShowPrinters,
|
|
Cmd.ARG_PRINTERMODEL: doPrintShowPrinterModels,
|
|
Cmd.ARG_PRIVILEGES: doPrintShowPrivileges,
|
|
Cmd.ARG_PROJECT: doPrintShowProjects,
|
|
Cmd.ARG_RESOLDSUBSCRIPTION: doPrintShowResoldSubscriptions,
|
|
Cmd.ARG_RESOURCE: doPrintShowResourceCalendars,
|
|
Cmd.ARG_RESOURCES: doPrintShowResourceCalendars,
|
|
Cmd.ARG_SCHEMA: doPrintShowUserSchemas,
|
|
Cmd.ARG_SHAREDDRIVE: doPrintShowSharedDrives,
|
|
Cmd.ARG_SHAREDDRIVEACLS: doPrintShowSharedDriveACLs,
|
|
Cmd.ARG_SHAREDDRIVEORGANIZERS: doPrintSharedDriveOrganizers,
|
|
Cmd.ARG_SITE: deprecatedDomainSites,
|
|
Cmd.ARG_SITEACL: deprecatedDomainSites,
|
|
Cmd.ARG_SITEACTIVITY: deprecatedDomainSites,
|
|
Cmd.ARG_SVCACCT: doPrintShowSvcAccts,
|
|
Cmd.ARG_TOKEN: doPrintShowTokens,
|
|
Cmd.ARG_TRANSFERAPPS: doShowTransferApps,
|
|
Cmd.ARG_USER: doPrintUsers,
|
|
Cmd.ARG_USERS: doPrintUsers,
|
|
Cmd.ARG_USERCOUNTSBYORGUNIT: doPrintUserCountsByOrgUnit,
|
|
Cmd.ARG_USERINVITATION: doPrintShowCIUserInvitations,
|
|
Cmd.ARG_VAULTCOUNT: doPrintVaultCounts,
|
|
Cmd.ARG_VAULTEXPORT: doPrintShowVaultExports,
|
|
Cmd.ARG_VAULTHOLD: doPrintShowVaultHolds,
|
|
Cmd.ARG_VAULTMATTER: doPrintShowVaultMatters,
|
|
Cmd.ARG_VAULTQUERY: doPrintShowVaultQueries,
|
|
}
|
|
),
|
|
'remove':
|
|
(Act.REMOVE,
|
|
{Cmd.ARG_ALIAS: doRemoveAliases,
|
|
Cmd.ARG_DRIVELABELPERMISSION: doDeleteDriveLabelPermissions,
|
|
}
|
|
),
|
|
'reopen':
|
|
(Act.REOPEN,
|
|
{Cmd.ARG_VAULTMATTER: doReopenVaultMatter,
|
|
}
|
|
),
|
|
'replace':
|
|
(Act.UPDATE,
|
|
{Cmd.ARG_SAKEY: doReplaceSvcAcctKeys,
|
|
}
|
|
),
|
|
'rotate':
|
|
(Act.UPDATE,
|
|
{Cmd.ARG_SAKEY: doProcessSvcAcctKeys,
|
|
}
|
|
),
|
|
'revoke':
|
|
(Act.REVOKE,
|
|
{Cmd.ARG_BROWSERTOKEN: doRevokeBrowserToken,
|
|
}
|
|
),
|
|
'send':
|
|
(Act.SEND,
|
|
{Cmd.ARG_USERINVITATION: doCIUserInvitationsAction,
|
|
}
|
|
),
|
|
'setup':
|
|
(Act.SETUP,
|
|
{Cmd.ARG_CHAT: doSetupChat,
|
|
}
|
|
),
|
|
'show':
|
|
(Act.SHOW,
|
|
{Cmd.ARG_ADMINROLE: doInfoPrintShowAdminRoles,
|
|
Cmd.ARG_ADMIN: doPrintShowAdmins,
|
|
Cmd.ARG_ALERT: doPrintShowAlerts,
|
|
Cmd.ARG_ALERTFEEDBACK: doPrintShowAlertFeedback,
|
|
Cmd.ARG_ALERTSETTINGS: doShowAlertSettings,
|
|
Cmd.ARG_BROWSER: doPrintShowBrowsers,
|
|
Cmd.ARG_BROWSERTOKEN: doPrintShowBrowserTokens,
|
|
Cmd.ARG_BUILDING: doPrintShowBuildings,
|
|
Cmd.ARG_CAALEVEL: doPrintShowCAALevels,
|
|
Cmd.ARG_CHANNELCUSTOMER: doPrintShowChannelCustomers,
|
|
Cmd.ARG_CHANNELCUSTOMERENTITLEMENT: doPrintShowChannelCustomerEntitlements,
|
|
Cmd.ARG_CHANNELOFFER: doPrintShowChannelOffers,
|
|
Cmd.ARG_CHANNELPRODUCT: doPrintShowChannelProducts,
|
|
Cmd.ARG_CHANNELSKU: doPrintShowChannelSKUs,
|
|
Cmd.ARG_CHATMEMBER: doPrintShowChatMembers,
|
|
Cmd.ARG_CHATSPACE: doPrintShowChatSpaces,
|
|
Cmd.ARG_CHROMEAPP: doPrintShowChromeApps,
|
|
Cmd.ARG_CHROMEAPPDEVICES: doPrintShowChromeAppDevices,
|
|
Cmd.ARG_CHROMEAUES: doPrintShowChromeAues,
|
|
Cmd.ARG_CHROMEDEVICECOUNTS: doPrintShowChromeDeviceCounts,
|
|
Cmd.ARG_CHROMEHISTORY: doPrintShowChromeHistory,
|
|
Cmd.ARG_CHROMENEEDSATTN: doPrintShowChromeNeedsAttn,
|
|
Cmd.ARG_CHROMEPOLICY: doPrintShowChromePolicies,
|
|
Cmd.ARG_CHROMEPROFILE: doPrintShowChromeProfiles,
|
|
Cmd.ARG_CHROMEPROFILECOMMAND: doPrintShowChromeProfileCommands,
|
|
Cmd.ARG_CHROMESCHEMA: doPrintShowChromePolicySchemas,
|
|
Cmd.ARG_CHROMEVERSIONS: doPrintShowChromeVersions,
|
|
Cmd.ARG_CIGROUPMEMBERS: doShowCIGroupMembers,
|
|
Cmd.ARG_CIPOLICY: doPrintShowCIPolicies,
|
|
Cmd.ARG_CLASSROOMINVITATION: doPrintShowClassroomInvitations,
|
|
Cmd.ARG_CONTACT: doPrintShowDomainContacts,
|
|
Cmd.ARG_CROSTELEMETRY: doInfoPrintShowCrOSTelemetry,
|
|
Cmd.ARG_DATATRANSFER: doPrintShowDataTransfers,
|
|
Cmd.ARG_DOMAIN: doPrintShowDomains,
|
|
Cmd.ARG_DOMAINALIAS: doPrintShowDomainAliases,
|
|
Cmd.ARG_DOMAINCONTACT: doPrintShowDomainContacts,
|
|
Cmd.ARG_DRIVEFILEACL: doPrintShowDriveFileACLs,
|
|
Cmd.ARG_DRIVELABEL: doPrintShowDriveLabels,
|
|
Cmd.ARG_DRIVELABELPERMISSION: doPrintShowDriveLabelPermissions,
|
|
Cmd.ARG_FEATURE: doPrintShowFeatures,
|
|
Cmd.ARG_GROUPMEMBERS: doShowGroupMembers,
|
|
Cmd.ARG_GROUPTREE: doPrintShowGroupTree,
|
|
Cmd.ARG_GUARDIAN: doPrintShowGuardians,
|
|
Cmd.ARG_INBOUNDSSOASSIGNMENT: doPrintShowInboundSSOAssignments,
|
|
Cmd.ARG_INBOUNDSSOCREDENTIAL: doPrintShowInboundSSOCredentials,
|
|
Cmd.ARG_INBOUNDSSOPROFILE: doPrintShowInboundSSOProfiles,
|
|
Cmd.ARG_ORGUNITSHAREDDRIVE: doPrintShowOrgunitSharedDrives,
|
|
Cmd.ARG_LICENSE: doShowLicenses,
|
|
Cmd.ARG_ORGTREE: doShowOrgTree,
|
|
Cmd.ARG_OWNERSHIP: doPrintShowOwnership,
|
|
Cmd.ARG_PEOPLECONTACT: doPrintShowDomainPeopleContacts,
|
|
Cmd.ARG_PEOPLEPROFILE: doPrintShowDomainPeopleProfiles,
|
|
Cmd.ARG_PRINTER: doPrintShowPrinters,
|
|
Cmd.ARG_PRINTERMODEL: doPrintShowPrinterModels,
|
|
Cmd.ARG_PRIVILEGES: doPrintShowPrivileges,
|
|
Cmd.ARG_PROJECT: doPrintShowProjects,
|
|
Cmd.ARG_RESOLDSUBSCRIPTION: doPrintShowResoldSubscriptions,
|
|
Cmd.ARG_RESOURCE: doPrintShowResourceCalendars,
|
|
Cmd.ARG_RESOURCES: doPrintShowResourceCalendars,
|
|
Cmd.ARG_SAKEY: doShowSvcAcctKeys,
|
|
Cmd.ARG_SCHEMA: doPrintShowUserSchemas,
|
|
Cmd.ARG_SHAREDDRIVE: doPrintShowSharedDrives,
|
|
Cmd.ARG_SHAREDDRIVEACLS: doPrintShowSharedDriveACLs,
|
|
Cmd.ARG_SHAREDDRIVEINFO: doInfoSharedDrive,
|
|
Cmd.ARG_SHAREDDRIVETHEMES: doShowSharedDriveThemes,
|
|
Cmd.ARG_SITE: deprecatedDomainSites,
|
|
Cmd.ARG_SITEACL: deprecatedDomainSites,
|
|
Cmd.ARG_SVCACCT: doPrintShowSvcAccts,
|
|
Cmd.ARG_TOKEN: doPrintShowTokens,
|
|
Cmd.ARG_TRANSFERAPPS: doShowTransferApps,
|
|
Cmd.ARG_USERINVITATION: doPrintShowCIUserInvitations,
|
|
Cmd.ARG_VAULTEXPORT: doPrintShowVaultExports,
|
|
Cmd.ARG_VAULTHOLD: doPrintShowVaultHolds,
|
|
Cmd.ARG_VAULTMATTER: doPrintShowVaultMatters,
|
|
Cmd.ARG_VAULTQUERY: doPrintShowVaultQueries,
|
|
}
|
|
),
|
|
'suspend':
|
|
(Act.SUSPEND,
|
|
{Cmd.ARG_USER: doSuspendUnsuspendUser,
|
|
Cmd.ARG_USERS: doSuspendUnsuspendUsers,
|
|
}
|
|
),
|
|
'sync':
|
|
(Act.SYNC,
|
|
{Cmd.ARG_DEVICE: doSyncCIDevices,
|
|
Cmd.ARG_SHAREDDRIVEACLS: copySyncSharedDriveACLs,
|
|
Cmd.ARG_COURSESTUDENTGROUPMEMBERS: doProcessCourseStudentGroupMembers,
|
|
}
|
|
),
|
|
'unhide':
|
|
(Act.UNHIDE,
|
|
{Cmd.ARG_SHAREDDRIVE: doHideUnhideSharedDrive,
|
|
}
|
|
),
|
|
'update':
|
|
(Act.UPDATE,
|
|
{Cmd.ARG_ADMINROLE: doCreateUpdateAdminRoles,
|
|
Cmd.ARG_ALERTSETTINGS: doUpdateAlertSettings,
|
|
Cmd.ARG_ALIAS: doCreateUpdateAliases,
|
|
Cmd.ARG_BROWSER: doUpdateBrowsers,
|
|
Cmd.ARG_BUILDING: doUpdateBuilding,
|
|
Cmd.ARG_CAALEVEL: doUpdateCAALevel,
|
|
Cmd.ARG_CHATMESSAGE: doUpdateChatMessage,
|
|
Cmd.ARG_CHROMEPOLICY: doUpdateChromePolicy,
|
|
Cmd.ARG_CIGROUP: doUpdateCIGroups,
|
|
Cmd.ARG_CIPOLICY: doCreateUpdateCIPolicy,
|
|
Cmd.ARG_CONTACT: doUpdateDomainContacts,
|
|
Cmd.ARG_CONTACTPHOTO: doUpdateDomainContactPhoto,
|
|
Cmd.ARG_COURSE: doUpdateCourse,
|
|
Cmd.ARG_COURSES: doUpdateCourses,
|
|
Cmd.ARG_COURSESTUDENTGROUP: doUpdateCourseStudentGroups,
|
|
Cmd.ARG_CROS: doUpdateCrOSDevices,
|
|
Cmd.ARG_CUSTOMER: doUpdateCustomer,
|
|
Cmd.ARG_DEVICE: doUpdateCIDevice,
|
|
Cmd.ARG_DEVICEUSER: doUpdateCIDeviceUser,
|
|
Cmd.ARG_DEVICEUSERSTATE: doUpdateCIDeviceUserState,
|
|
Cmd.ARG_DOMAIN: doUpdateDomain,
|
|
Cmd.ARG_DRIVEFILEACL: doUpdateDriveFileACLs,
|
|
Cmd.ARG_FEATURE: doUpdateFeature,
|
|
Cmd.ARG_GROUP: doUpdateGroups,
|
|
Cmd.ARG_INBOUNDSSOASSIGNMENT: doUpdateInboundSSOAssignment,
|
|
Cmd.ARG_INBOUNDSSOPROFILE: doUpdateInboundSSOProfile,
|
|
Cmd.ARG_MOBILE: doUpdateMobileDevices,
|
|
Cmd.ARG_ORG: doUpdateOrg,
|
|
Cmd.ARG_ORGS: doUpdateOrgs,
|
|
Cmd.ARG_PRINTER: doUpdatePrinter,
|
|
Cmd.ARG_PROJECT: doUpdateProject,
|
|
Cmd.ARG_RESOLDCUSTOMER: doUpdateResoldCustomer,
|
|
Cmd.ARG_RESOLDSUBSCRIPTION: doUpdateResoldSubscription,
|
|
Cmd.ARG_RESOURCE: doUpdateResourceCalendar,
|
|
Cmd.ARG_RESOURCES: doUpdateResourceCalendars,
|
|
Cmd.ARG_SAKEY: doUpdateSvcAcctKeys,
|
|
Cmd.ARG_SCHEMA: doCreateUpdateUserSchemas,
|
|
Cmd.ARG_SHAREDDRIVE: doUpdateSharedDrive,
|
|
Cmd.ARG_SITE: deprecatedDomainSites,
|
|
Cmd.ARG_SITEACL: deprecatedDomainSites,
|
|
Cmd.ARG_SVCACCT: doCheckUpdateSvcAcct,
|
|
Cmd.ARG_USER: doUpdateUser,
|
|
Cmd.ARG_USERS: doUpdateUsers,
|
|
Cmd.ARG_VAULTHOLD: doUpdateVaultHold,
|
|
Cmd.ARG_VAULTMATTER: doUpdateVaultMatter,
|
|
Cmd.ARG_VERIFY: doUpdateSiteVerification,
|
|
}
|
|
),
|
|
'undelete':
|
|
(Act.UNDELETE,
|
|
{Cmd.ARG_ALERT: doDeleteOrUndeleteAlert,
|
|
Cmd.ARG_USER: doUndeleteUser,
|
|
Cmd.ARG_USERS: doUndeleteUsers,
|
|
Cmd.ARG_VAULTMATTER: doUndeleteVaultMatter,
|
|
}
|
|
),
|
|
'unsuspend':
|
|
(Act.UNSUSPEND,
|
|
{Cmd.ARG_USER: doSuspendUnsuspendUser,
|
|
Cmd.ARG_USERS: doSuspendUnsuspendUsers,
|
|
}
|
|
),
|
|
'upload':
|
|
(Act.USE,
|
|
{Cmd.ARG_SAKEY: doUploadSvcAcctKeys,
|
|
}
|
|
),
|
|
'use':
|
|
(Act.USE,
|
|
{Cmd.ARG_PROJECT: doUseProject,
|
|
}
|
|
),
|
|
'wipe':
|
|
(Act.WIPE,
|
|
{Cmd.ARG_DEVICE: doWipeCIDevice,
|
|
Cmd.ARG_DEVICEUSER: doWipeCIDeviceUser,
|
|
}
|
|
),
|
|
'yubikey':
|
|
(Act.RESET_YUBIKEY_PIV,
|
|
{Cmd.ARG_RESETPIV: doResetYubiKeyPIV,
|
|
}
|
|
),
|
|
}
|
|
|
|
MAIN_COMMANDS_OBJ_ALIASES = {
|
|
Cmd.ARG_ADMINS: Cmd.ARG_ADMIN,
|
|
Cmd.ARG_ADMINROLES: Cmd.ARG_ADMINROLE,
|
|
Cmd.ARG_ALERTFEEDBACKS: Cmd.ARG_ALERTFEEDBACK,
|
|
Cmd.ARG_ALERTS: Cmd.ARG_ALERT,
|
|
Cmd.ARG_ALERTSFEEDBACK: Cmd.ARG_ALERTFEEDBACK,
|
|
Cmd.ARG_ALIASDOMAIN: Cmd.ARG_DOMAINALIAS,
|
|
Cmd.ARG_ALIASDOMAINS: Cmd.ARG_DOMAINALIAS,
|
|
Cmd.ARG_ALIASES: Cmd.ARG_ALIAS,
|
|
Cmd.ARG_APIS: Cmd.ARG_API,
|
|
Cmd.ARG_APIPROJECT: Cmd.ARG_PROJECT,
|
|
Cmd.ARG_APPDETAILS: Cmd.ARG_CHROMEAPP,
|
|
Cmd.ARG_BROWSERS: Cmd.ARG_BROWSER,
|
|
Cmd.ARG_BROWSERTOKENS: Cmd.ARG_BROWSERTOKEN,
|
|
Cmd.ARG_BUCKET: Cmd.ARG_STORAGEBUCKET,
|
|
Cmd.ARG_BUCKETS: Cmd.ARG_STORAGEBUCKET,
|
|
Cmd.ARG_BUILDINGS: Cmd.ARG_BUILDING,
|
|
Cmd.ARG_CAALEVELS: Cmd.ARG_CAALEVEL,
|
|
Cmd.ARG_CHATMEMBERS: Cmd.ARG_CHATMEMBER,
|
|
Cmd.ARG_CHANNELCUSTOMERS: Cmd.ARG_CHANNELCUSTOMER,
|
|
Cmd.ARG_CHANNELCUSTOMERENTITLEMENTS: Cmd.ARG_CHANNELCUSTOMERENTITLEMENT,
|
|
Cmd.ARG_CHANNELOFFERS: Cmd.ARG_CHANNELOFFER,
|
|
Cmd.ARG_CHANNELPRODUCTS: Cmd.ARG_CHANNELPRODUCT,
|
|
Cmd.ARG_CHANNELSKUS: Cmd.ARG_CHANNELSKU,
|
|
Cmd.ARG_CHATSPACES: Cmd.ARG_CHATSPACE,
|
|
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_CHROMEPROFILECOMMANDS: Cmd.ARG_CHROMEPROFILECOMMAND,
|
|
Cmd.ARG_CHROMESCHEMAS: Cmd.ARG_CHROMESCHEMA,
|
|
Cmd.ARG_CIGROUPS: Cmd.ARG_CIGROUP,
|
|
Cmd.ARG_CIGROUPSMEMBERS: Cmd.ARG_CIGROUPMEMBERS,
|
|
Cmd.ARG_CIMEMBER: Cmd.ARG_CIGROUPMEMBERS,
|
|
Cmd.ARG_CIMEMBERS: Cmd.ARG_CIGROUPMEMBERS,
|
|
Cmd.ARG_CIPOLICIES: Cmd.ARG_CIPOLICY,
|
|
Cmd.ARG_CLASSIFICATIONLABEL: Cmd.ARG_DRIVELABEL,
|
|
Cmd.ARG_CLASSIFICATIONLABELS: Cmd.ARG_DRIVELABEL,
|
|
Cmd.ARG_CLASSIFICATIONLABELPERMISSION: Cmd.ARG_DRIVELABELPERMISSION,
|
|
Cmd.ARG_CLASSIFICATIONLABELPERMISSIONS: Cmd.ARG_DRIVELABELPERMISSION,
|
|
Cmd.ARG_CLASS: Cmd.ARG_COURSE,
|
|
Cmd.ARG_CLASSES: Cmd.ARG_COURSES,
|
|
Cmd.ARG_CLASSCOUNTS: Cmd.ARG_COURSECOUNTS,
|
|
Cmd.ARG_CLASSPARTICIPANTS: Cmd.ARG_COURSEPARTICIPANTS,
|
|
Cmd.ARG_CLASSROOMINVITATIONS: Cmd.ARG_CLASSROOMINVITATION,
|
|
Cmd.ARG_CONTACTS: Cmd.ARG_CONTACT,
|
|
Cmd.ARG_CONTACTPHOTOS: Cmd.ARG_CONTACTPHOTO,
|
|
Cmd.ARG_COURSESTUDENTGROUPS: Cmd.ARG_COURSESTUDENTGROUP,
|
|
Cmd.ARG_CROSES: Cmd.ARG_CROS,
|
|
Cmd.ARG_DATATRANSFERS: Cmd.ARG_DATATRANSFER,
|
|
Cmd.ARG_DEVICES: Cmd.ARG_DEVICE,
|
|
Cmd.ARG_DEVICEFILES: Cmd.ARG_DEVICEFILE,
|
|
Cmd.ARG_DEVICEUSERS: Cmd.ARG_DEVICEUSER,
|
|
Cmd.ARG_DOMAINS: Cmd.ARG_DOMAIN,
|
|
Cmd.ARG_DOMAINALIASES: Cmd.ARG_DOMAINALIAS,
|
|
Cmd.ARG_DOMAINCONTACT: Cmd.ARG_PEOPLECONTACT,
|
|
Cmd.ARG_DOMAINCONTACTS: Cmd.ARG_PEOPLECONTACT,
|
|
Cmd.ARG_DOMAINPROFILES: Cmd.ARG_PEOPLEPROFILE,
|
|
Cmd.ARG_DRIVEFILEACLS: Cmd.ARG_DRIVEFILEACL,
|
|
Cmd.ARG_DRIVELABELS: Cmd.ARG_DRIVELABEL,
|
|
Cmd.ARG_DRIVELABELPERMISSIONS: Cmd.ARG_DRIVELABELPERMISSION,
|
|
Cmd.ARG_EXPORT: Cmd.ARG_VAULTEXPORT,
|
|
Cmd.ARG_EXPORTS: Cmd.ARG_VAULTEXPORT,
|
|
Cmd.ARG_FEATURES: Cmd.ARG_FEATURE,
|
|
Cmd.ARG_FORMS: Cmd.ARG_FORM,
|
|
Cmd.ARG_GROUPS: Cmd.ARG_GROUP,
|
|
Cmd.ARG_GROUPSMEMBERS: Cmd.ARG_GROUPMEMBERS,
|
|
Cmd.ARG_GUARDIANINVITATIONS: Cmd.ARG_GUARDIANINVITATION,
|
|
Cmd.ARG_GUARDIANINVITE: Cmd.ARG_GUARDIANINVITATION,
|
|
Cmd.ARG_GUARDIANS: Cmd.ARG_GUARDIAN,
|
|
Cmd.ARG_HOLD: Cmd.ARG_VAULTHOLD,
|
|
Cmd.ARG_HOLDS: Cmd.ARG_VAULTHOLD,
|
|
Cmd.ARG_INBOUNDSSOASSIGNMENTS: Cmd.ARG_INBOUNDSSOASSIGNMENT,
|
|
Cmd.ARG_INBOUNDSSOCREDENTIALS: Cmd.ARG_INBOUNDSSOCREDENTIAL,
|
|
Cmd.ARG_INBOUNDSSOPROFILES: Cmd.ARG_INBOUNDSSOPROFILE,
|
|
Cmd.ARG_INVITEGUARDIAN: Cmd.ARG_GUARDIANINVITATION,
|
|
Cmd.ARG_LICENCE: Cmd.ARG_LICENSE,
|
|
Cmd.ARG_LICENCES: Cmd.ARG_LICENSE,
|
|
Cmd.ARG_LICENSES: Cmd.ARG_LICENSE,
|
|
Cmd.ARG_MATTER: Cmd.ARG_VAULTMATTER,
|
|
Cmd.ARG_MATTERS: Cmd.ARG_VAULTMATTER,
|
|
Cmd.ARG_MEMBER: Cmd.ARG_GROUPMEMBERS,
|
|
Cmd.ARG_MEMBERS: Cmd.ARG_GROUPMEMBERS,
|
|
Cmd.ARG_MOBILES: Cmd.ARG_MOBILE,
|
|
Cmd.ARG_NICKNAME: Cmd.ARG_ALIAS,
|
|
Cmd.ARG_NICKNAMES: Cmd.ARG_ALIAS,
|
|
Cmd.ARG_ORGUNIT: Cmd.ARG_ORG,
|
|
Cmd.ARG_ORGUNITS: Cmd.ARG_ORGS,
|
|
Cmd.ARG_ORGUNITSHAREDDRIVES: Cmd.ARG_ORGUNITSHAREDDRIVE,
|
|
Cmd.ARG_OU: Cmd.ARG_ORG,
|
|
Cmd.ARG_OUS: Cmd.ARG_ORGS,
|
|
Cmd.ARG_OUSHAREDDRIVE: Cmd.ARG_ORGUNITSHAREDDRIVE,
|
|
Cmd.ARG_OUSHAREDDRIVES: Cmd.ARG_ORGUNITSHAREDDRIVE,
|
|
Cmd.ARG_OUTREE: Cmd.ARG_ORGTREE,
|
|
Cmd.ARG_PARTICIPANTS: Cmd.ARG_COURSEPARTICIPANTS,
|
|
Cmd.ARG_PEOPLE: Cmd.ARG_PEOPLEPROFILE,
|
|
Cmd.ARG_PEOPLECONTACTS: Cmd.ARG_PEOPLECONTACT,
|
|
Cmd.ARG_PEOPLEPROFILES: Cmd.ARG_PEOPLEPROFILE,
|
|
Cmd.ARG_PERMISSIONS: Cmd.ARG_PERMISSION,
|
|
Cmd.ARG_PRINTERS: Cmd.ARG_PRINTER,
|
|
Cmd.ARG_PRINTERMODELS: Cmd.ARG_PRINTERMODEL,
|
|
Cmd.ARG_PROJECTS: Cmd.ARG_PROJECT,
|
|
Cmd.ARG_RESELLERCUSTOMERS: Cmd.ARG_RESOLDCUSTOMER,
|
|
Cmd.ARG_RESELLERSUBSCRIPTIONS: Cmd.ARG_RESOLDSUBSCRIPTION,
|
|
Cmd.ARG_RESOLDCUSTOMERS: Cmd.ARG_RESOLDCUSTOMER,
|
|
Cmd.ARG_RESOLDSUBSCRIPTIONS: Cmd.ARG_RESOLDSUBSCRIPTION,
|
|
Cmd.ARG_ROLE: Cmd.ARG_ADMINROLE,
|
|
Cmd.ARG_ROLES: Cmd.ARG_ADMINROLE,
|
|
Cmd.ARG_SAKEYS: Cmd.ARG_SAKEY,
|
|
Cmd.ARG_SCHEMAS: Cmd.ARG_SCHEMA,
|
|
Cmd.ARG_SHAREDDRIVES: Cmd.ARG_SHAREDDRIVE,
|
|
Cmd.ARG_SIGNJWTSERVICEACCOUNT: Cmd.ARG_GCPSERVICEACCOUNT,
|
|
Cmd.ARG_SITEACLS: Cmd.ARG_SITEACL,
|
|
Cmd.ARG_SITES: Cmd.ARG_SITE,
|
|
Cmd.ARG_STORAGEBUCKETS: Cmd.ARG_STORAGEBUCKET,
|
|
Cmd.ARG_STORAGEFILES: Cmd.ARG_STORAGEFILE,
|
|
Cmd.ARG_SVCACCTS: Cmd.ARG_SVCACCT,
|
|
Cmd.ARG_TEAMDRIVE: Cmd.ARG_SHAREDDRIVE,
|
|
Cmd.ARG_TEAMDRIVES: Cmd.ARG_SHAREDDRIVE,
|
|
Cmd.ARG_TEAMDRIVEACLS: Cmd.ARG_SHAREDDRIVEACLS,
|
|
Cmd.ARG_TEAMDRIVEINFO: Cmd.ARG_SHAREDDRIVEINFO,
|
|
Cmd.ARG_TEAMDRIVEORGANIZERS: Cmd.ARG_SHAREDDRIVEORGANIZERS,
|
|
Cmd.ARG_TEAMDRIVETHEMES: Cmd.ARG_SHAREDDRIVETHEMES,
|
|
Cmd.ARG_TOKENS: Cmd.ARG_TOKEN,
|
|
Cmd.ARG_TRANSFER: Cmd.ARG_DATATRANSFER,
|
|
Cmd.ARG_TRANSFERS: Cmd.ARG_DATATRANSFER,
|
|
Cmd.ARG_USERINVITATIONS: Cmd.ARG_USERINVITATION,
|
|
Cmd.ARG_VAULTCOUNTS: Cmd.ARG_VAULTCOUNT,
|
|
Cmd.ARG_VAULTEXPORTS: Cmd.ARG_VAULTEXPORT,
|
|
Cmd.ARG_VAULTHOLDS: Cmd.ARG_VAULTHOLD,
|
|
Cmd.ARG_VAULTQUERIES: Cmd.ARG_VAULTQUERY,
|
|
Cmd.ARG_VAULTMATTERS: Cmd.ARG_VAULTMATTER,
|
|
Cmd.ARG_VERIFICATION: Cmd.ARG_VERIFY,
|
|
}
|
|
|
|
# Audit command sub-commands with objects
|
|
AUDIT_SUBCOMMANDS_WITH_OBJECTS = {
|
|
'monitor':
|
|
{'create': (Act.CREATE, doCreateMonitor),
|
|
'delete': (Act.DELETE, doDeleteMonitor),
|
|
'list': (Act.LIST, doShowMonitors),
|
|
},
|
|
}
|
|
|
|
def processAuditCommands():
|
|
CL_subCommand = getChoice(list(AUDIT_SUBCOMMANDS_WITH_OBJECTS))
|
|
CL_objectName = getChoice(AUDIT_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand])
|
|
Act.Set(AUDIT_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CL_objectName][CMD_ACTION])
|
|
AUDIT_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CL_objectName][CMD_FUNCTION]()
|
|
|
|
# Oauth command sub-commands
|
|
OAUTH2_SUBCOMMANDS = {
|
|
'create': (Act.CREATE, doOAuthCreate),
|
|
'delete': (Act.DELETE, doOAuthDelete),
|
|
'export': (Act.EXPORT, doOAuthExport),
|
|
'info': (Act.INFO, doOAuthInfo),
|
|
'refresh': (Act.REFRESH, doOAuthRefresh),
|
|
'update': (Act.UPDATE, doOAuthUpdate),
|
|
}
|
|
|
|
# Oauth sub-command aliases
|
|
OAUTH2_SUBCOMMAND_ALIASES = {
|
|
'request': 'create',
|
|
'revoke': 'delete',
|
|
'verify': 'info',
|
|
}
|
|
|
|
def processOauthCommands():
|
|
CL_subCommand = getChoice(OAUTH2_SUBCOMMANDS, choiceAliases=OAUTH2_SUBCOMMAND_ALIASES)
|
|
Act.Set(OAUTH2_SUBCOMMANDS[CL_subCommand][CMD_ACTION])
|
|
if GC.Values[GC.ENABLE_DASA]:
|
|
systemErrorExit(USAGE_ERROR_RC, Msg.COMMAND_NOT_COMPATIBLE_WITH_ENABLE_DASA.format('oauth', CL_subCommand))
|
|
OAUTH2_SUBCOMMANDS[CL_subCommand][CMD_FUNCTION]()
|
|
|
|
# Calendar command sub-commands
|
|
CALENDAR_SUBCOMMANDS = {
|
|
'showacl': (Act.SHOW, doCalendarsPrintShowACLs),
|
|
'printacl': (Act.PRINT, doCalendarsPrintShowACLs),
|
|
'addevent': (Act.ADD, doCalendarsCreateEvent),
|
|
'deleteevent': (Act.DELETE, doCalendarsDeleteEventsOld),
|
|
'moveevent': (Act.MOVE, doCalendarsMoveEventsOld),
|
|
'updateevent': (Act.UPDATE, doCalendarsUpdateEventsOld),
|
|
'printevents': (Act.PRINT, doCalendarsPrintShowEvents),
|
|
'wipe': (Act.WIPE, doCalendarsWipeEvents),
|
|
'modify': (Act.MODIFY, doCalendarsModifySettings),
|
|
}
|
|
|
|
CALENDAR_OLDACL_SUBCOMMANDS = {
|
|
'add': (Act.ADD, doCalendarsCreateACL),
|
|
'create': (Act.CREATE, doCalendarsCreateACL),
|
|
'delete': (Act.DELETE, doCalendarsDeleteACL),
|
|
'update': (Act.UPDATE, doCalendarsUpdateACL),
|
|
}
|
|
|
|
# Calendar sub-command aliases
|
|
CALENDAR_OLDACL_SUBCOMMAND_ALIASES = {
|
|
'del': 'delete',
|
|
}
|
|
|
|
# Calendars command sub-commands with objects
|
|
CALENDARS_SUBCOMMANDS_WITH_OBJECTS = {
|
|
'add':
|
|
(Act.ADD,
|
|
{Cmd.ARG_CALENDARACL: doCalendarsCreateACLs,
|
|
Cmd.ARG_EVENT: doCalendarsCreateEvent,
|
|
}
|
|
),
|
|
'create':
|
|
(Act.CREATE,
|
|
{Cmd.ARG_CALENDARACL: doCalendarsCreateACLs,
|
|
Cmd.ARG_EVENT: doCalendarsCreateEvent,
|
|
}
|
|
),
|
|
'delete':
|
|
(Act.DELETE,
|
|
{Cmd.ARG_CALENDARACL: doCalendarsDeleteACLs,
|
|
Cmd.ARG_EVENT: doCalendarsDeleteEvents,
|
|
}
|
|
),
|
|
'empty':
|
|
(Act.EMPTY,
|
|
{Cmd.ARG_CALENDARTRASH: doCalendarsEmptyTrash,
|
|
}
|
|
),
|
|
'import':
|
|
(Act.IMPORT,
|
|
{Cmd.ARG_EVENT: doCalendarsImportEvent,
|
|
}
|
|
),
|
|
'info':
|
|
(Act.INFO,
|
|
{Cmd.ARG_CALENDARACL: doCalendarsInfoACLs,
|
|
Cmd.ARG_EVENT: doCalendarsInfoEvents,
|
|
}
|
|
),
|
|
'move':
|
|
(Act.MOVE,
|
|
{Cmd.ARG_EVENT: doCalendarsMoveEvents,
|
|
}
|
|
),
|
|
'print':
|
|
(Act.PRINT,
|
|
{Cmd.ARG_CALENDARACL: doCalendarsPrintShowACLs,
|
|
Cmd.ARG_EVENT: doCalendarsPrintShowEvents,
|
|
Cmd.ARG_SETTINGS: doCalendarsPrintShowSettings,
|
|
}
|
|
),
|
|
'purge':
|
|
(Act.PURGE,
|
|
{Cmd.ARG_EVENT: doCalendarsPurgeEvents,
|
|
}
|
|
),
|
|
'show':
|
|
(Act.SHOW,
|
|
{Cmd.ARG_CALENDARACL: doCalendarsPrintShowACLs,
|
|
Cmd.ARG_EVENT: doCalendarsPrintShowEvents,
|
|
Cmd.ARG_SETTINGS: doCalendarsPrintShowSettings,
|
|
}
|
|
),
|
|
'transfer':
|
|
(Act.TRANSFER,
|
|
{Cmd.ARG_OWNERSHIP: doCalendarsTransferOwnership,
|
|
}
|
|
),
|
|
'update':
|
|
(Act.UPDATE,
|
|
{Cmd.ARG_CALENDARACL: doCalendarsUpdateACLs,
|
|
Cmd.ARG_EVENT: doCalendarsUpdateEvents,
|
|
}
|
|
),
|
|
'wipe':
|
|
(Act.WIPE,
|
|
{Cmd.ARG_EVENT: doCalendarsWipeEvents,
|
|
}
|
|
),
|
|
}
|
|
|
|
CALENDARS_SUBCOMMANDS_OBJECT_ALIASES = {
|
|
Cmd.ARG_ACL: Cmd.ARG_CALENDARACL,
|
|
Cmd.ARG_ACLS: Cmd.ARG_CALENDARACL,
|
|
Cmd.ARG_CALENDARACLS: Cmd.ARG_CALENDARACL,
|
|
Cmd.ARG_EVENTS: Cmd.ARG_EVENT,
|
|
}
|
|
|
|
def processCalendarsCommands():
|
|
calendarList = getEntityList(Cmd.OB_EMAIL_ADDRESS_ENTITY)
|
|
CL_subCommand = getChoice(CALENDAR_SUBCOMMANDS, defaultChoice=None)
|
|
if CL_subCommand:
|
|
Act.Set(CALENDAR_SUBCOMMANDS[CL_subCommand][CMD_ACTION])
|
|
CALENDAR_SUBCOMMANDS[CL_subCommand][CMD_FUNCTION](calendarList)
|
|
return
|
|
CL_subCommand = getChoice(CALENDAR_OLDACL_SUBCOMMANDS, choiceAliases=CALENDAR_OLDACL_SUBCOMMAND_ALIASES, defaultChoice=None)
|
|
if CL_subCommand:
|
|
Act.Set(CALENDAR_OLDACL_SUBCOMMANDS[CL_subCommand][CMD_ACTION])
|
|
CL_objectName = getChoice([Cmd.ARG_CALENDARACL, Cmd.ARG_EVENT], choiceAliases=CALENDARS_SUBCOMMANDS_OBJECT_ALIASES, defaultChoice=None)
|
|
if not CL_objectName:
|
|
CALENDAR_OLDACL_SUBCOMMANDS[CL_subCommand][CMD_FUNCTION](calendarList)
|
|
else:
|
|
CALENDARS_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CMD_FUNCTION][CL_objectName](calendarList)
|
|
return
|
|
CL_subCommand = getChoice(CALENDARS_SUBCOMMANDS_WITH_OBJECTS)
|
|
Act.Set(CALENDARS_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CMD_ACTION])
|
|
CL_objectName = getChoice(CALENDARS_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CMD_FUNCTION], choiceAliases=CALENDARS_SUBCOMMANDS_OBJECT_ALIASES)
|
|
CALENDARS_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CMD_FUNCTION][CL_objectName](calendarList)
|
|
|
|
# Course command sub-commands
|
|
COURSE_SUBCOMMANDS = {
|
|
'add': (Act.ADD, doCourseAddItems),
|
|
'clear': (Act.REMOVE, doCourseClearParticipants),
|
|
'remove': (Act.REMOVE, doCourseRemoveItems),
|
|
'update': (Act.UPDATE, doCourseUpdateItems),
|
|
'sync': (Act.SYNC, doCourseSyncParticipants),
|
|
}
|
|
|
|
# Course sub-command aliases
|
|
COURSE_SUBCOMMAND_ALIASES = {
|
|
'create': 'add',
|
|
'del': 'remove',
|
|
'delete': 'remove',
|
|
}
|
|
|
|
def executeCourseCommands(courseIdList, getEntityListArg):
|
|
CL_subCommand = getChoice(COURSE_SUBCOMMANDS, choiceAliases=COURSE_SUBCOMMAND_ALIASES)
|
|
Act.Set(COURSE_SUBCOMMANDS[CL_subCommand][CMD_ACTION])
|
|
COURSE_SUBCOMMANDS[CL_subCommand][CMD_FUNCTION](courseIdList, getEntityListArg)
|
|
|
|
def processCourseCommands():
|
|
executeCourseCommands(getStringReturnInList(Cmd.OB_COURSE_ID), False)
|
|
|
|
def processCoursesCommands():
|
|
executeCourseCommands(getEntityList(Cmd.OB_COURSE_ENTITY, shlexSplit=True), True)
|
|
|
|
# Resource command sub-commands
|
|
RESOURCE_SUBCOMMANDS_WITH_OBJECTS = {
|
|
'add':
|
|
(Act.ADD,
|
|
{Cmd.ARG_CALENDARACL: doResourceCreateCalendarACLs,
|
|
}
|
|
),
|
|
'create':
|
|
(Act.CREATE,
|
|
{Cmd.ARG_CALENDARACL: doResourceCreateCalendarACLs,
|
|
}
|
|
),
|
|
'update':
|
|
(Act.UPDATE,
|
|
{Cmd.ARG_CALENDARACL: doResourceUpdateCalendarACLs,
|
|
}
|
|
),
|
|
'delete':
|
|
(Act.DELETE,
|
|
{Cmd.ARG_CALENDARACL: doResourceDeleteCalendarACLs,
|
|
}
|
|
),
|
|
'info':
|
|
(Act.INFO,
|
|
{Cmd.ARG_CALENDARACL: doResourceInfoCalendarACLs,
|
|
}
|
|
),
|
|
'print':
|
|
(Act.PRINT,
|
|
{Cmd.ARG_CALENDARACL: doResourcePrintShowCalendarACLs,
|
|
}
|
|
),
|
|
'show':
|
|
(Act.SHOW,
|
|
{Cmd.ARG_CALENDARACL: doResourcePrintShowCalendarACLs,
|
|
}
|
|
),
|
|
}
|
|
|
|
# Resource sub-command aliases
|
|
RESOURCE_SUBCOMMAND_ALIASES = {
|
|
'del': 'delete',
|
|
}
|
|
|
|
RESOURCE_SUBCOMMANDS_OBJECT_ALIASES = {
|
|
Cmd.ARG_ACL: Cmd.ARG_CALENDARACL,
|
|
Cmd.ARG_ACLS: Cmd.ARG_CALENDARACL,
|
|
Cmd.ARG_CALENDARACLS: Cmd.ARG_CALENDARACL,
|
|
}
|
|
|
|
def executeResourceCommands(resourceEntity):
|
|
CL_subCommand = getChoice(RESOURCE_SUBCOMMANDS_WITH_OBJECTS, choiceAliases=RESOURCE_SUBCOMMAND_ALIASES)
|
|
Act.Set(RESOURCE_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CMD_ACTION])
|
|
CL_objectName = getChoice(RESOURCE_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CMD_FUNCTION], choiceAliases=RESOURCE_SUBCOMMANDS_OBJECT_ALIASES)
|
|
RESOURCE_SUBCOMMANDS_WITH_OBJECTS[CL_subCommand][CMD_FUNCTION][CL_objectName](resourceEntity)
|
|
|
|
def processResourceCommands():
|
|
executeResourceCommands(getStringReturnInList(Cmd.OB_RESOURCE_ID))
|
|
|
|
def processResourcesCommands():
|
|
executeResourceCommands(getEntityList(Cmd.OB_RESOURCE_ENTITY))
|
|
|
|
# Commands
|
|
COMMANDS_MAP = {
|
|
'oauth': processOauthCommands,
|
|
'audit': processAuditCommands,
|
|
'calendars': processCalendarsCommands,
|
|
'course': processCourseCommands,
|
|
'courses': processCoursesCommands,
|
|
'resource': processResourceCommands,
|
|
'resources': processResourcesCommands,
|
|
}
|
|
|
|
# Commands aliases
|
|
COMMANDS_ALIASES = {
|
|
'oauth2': 'oauth',
|
|
'calendar': 'calendars',
|
|
}
|
|
|
|
# <CrOSTypeEntity> commands
|
|
CROS_COMMANDS = {
|
|
'getcommand': (Act.GET_COMMAND_RESULT, getCommandResultCrOSDevices),
|
|
'info': (Act.INFO, infoCrOSDevices),
|
|
'issuecommand': (Act.ISSUE_COMMAND, issueCommandCrOSDevices),
|
|
'list': (Act.LIST, doListCrOS),
|
|
'print': (Act.PRINT, doPrintCrOSEntity),
|
|
'update': (Act.UPDATE, updateCrOSDevices),
|
|
}
|
|
|
|
CROS_COMMANDS_WITH_OBJECTS = {
|
|
'get':
|
|
(Act.DOWNLOAD,
|
|
{Cmd.ARG_DEVICEFILE: getCrOSDeviceFiles,
|
|
}
|
|
),
|
|
'show':
|
|
(Act.SHOW,
|
|
{Cmd.ARG_COUNT: showCountCrOS,
|
|
}
|
|
),
|
|
}
|
|
|
|
CROS_COMMANDS_OBJ_ALIASES = {
|
|
Cmd.ARG_DEVICEFILES: Cmd.ARG_DEVICEFILE,
|
|
Cmd.ARG_COUNTS: Cmd.ARG_COUNT,
|
|
}
|
|
|
|
# <UserTypeEntity> commands
|
|
USER_COMMANDS = {
|
|
'delegate': (Act.ADD, delegateTo),
|
|
'deprovision': (Act.DEPROVISION, deprovisionUser),
|
|
'draftemail': (Act.DRAFT, draftMessage),
|
|
'filter': (Act.ADD, createFilter),
|
|
'forward': (Act.SET, setForward),
|
|
'imap': (Act.SET, setImap),
|
|
'importemail': (Act.IMPORT, importMessage),
|
|
'insertemail': (Act.INSERT, insertMessage),
|
|
'label': (Act.ADD, createLabel),
|
|
'list': (Act.LIST, doListUser),
|
|
'language': (Act.SET, setLanguage),
|
|
'pop': (Act.SET, setPop),
|
|
'profile': (Act.SET, setProfile),
|
|
'sendas': (Act.ADD, createUpdateSendAs),
|
|
'sendemail': (Act.SENDEMAIL, doSendEmail),
|
|
'sendreply': (Act.SENDREPLY, doSendReply),
|
|
'signature': (Act.SET, setSignature),
|
|
'signout': (Act.SIGNOUT, signoutTurnoff2SVUsers),
|
|
'turnoff2sv': (Act.TURNOFF2SV, signoutTurnoff2SVUsers),
|
|
'vacation': (Act.SET, setVacation),
|
|
'waitformailbox': (Act.WAITFORMAILBOX, waitForMailbox),
|
|
}
|
|
|
|
# User commands with objects
|
|
#
|
|
USER_ADD_CREATE_FUNCTIONS = {
|
|
Cmd.ARG_CALENDAR: addCreateCalendars,
|
|
Cmd.ARG_GROUP: addUserToGroups,
|
|
Cmd.ARG_CALENDARACL: createCalendarACLs,
|
|
Cmd.ARG_CHATEMOJI: createChatEmoji,
|
|
Cmd.ARG_CHATMEMBER: createChatMember,
|
|
Cmd.ARG_CHATMESSAGE: createChatMessage,
|
|
Cmd.ARG_CHATSECTION: createUpdateChatSection,
|
|
Cmd.ARG_CHATSPACE: createChatSpace,
|
|
Cmd.ARG_CLASSROOMINVITATION: createClassroomInvitations,
|
|
Cmd.ARG_CONTACTDELEGATE: processContactDelegates,
|
|
Cmd.ARG_CSEIDENTITY: createUpdateCSEIdentity,
|
|
Cmd.ARG_CSEKEYPAIR: createCSEKeyPair,
|
|
Cmd.ARG_LOOKERSTUDIOPERMISSION: processLookerStudioPermissions,
|
|
Cmd.ARG_DELEGATE: processDelegates,
|
|
Cmd.ARG_DRIVEFILE: createDriveFile,
|
|
Cmd.ARG_DRIVEFILEACL: createDriveFileACL,
|
|
Cmd.ARG_DRIVEFILESHORTCUT: createDriveFileShortcut,
|
|
Cmd.ARG_DRIVEFOLDERPATH: createDriveFolderPath,
|
|
Cmd.ARG_DRIVELABELPERMISSION: createDriveLabelPermissions,
|
|
Cmd.ARG_EVENT: createCalendarEvent,
|
|
Cmd.ARG_FILTER: createFilter,
|
|
Cmd.ARG_FOCUSTIME: createFocusTime,
|
|
Cmd.ARG_FORM: createForm,
|
|
Cmd.ARG_FORWARDINGADDRESS: createForwardingAddresses,
|
|
Cmd.ARG_GUARDIAN: inviteGuardians,
|
|
Cmd.ARG_GUARDIANINVITATION: inviteGuardians,
|
|
Cmd.ARG_LABEL: createLabel,
|
|
Cmd.ARG_LABELLIST: createLabelList,
|
|
Cmd.ARG_LICENSE: createLicense,
|
|
Cmd.ARG_MEETSPACE: createMeetSpace,
|
|
Cmd.ARG_NOTE: createNote,
|
|
Cmd.ARG_NOTEACL: createNotesACLs,
|
|
Cmd.ARG_OUTOFOFFICE: createOutOfOffice,
|
|
Cmd.ARG_PEOPLECONTACT: createUserPeopleContact,
|
|
Cmd.ARG_PEOPLECONTACTGROUP: createUserPeopleContactGroup,
|
|
Cmd.ARG_PERMISSION: createDriveFilePermissions,
|
|
Cmd.ARG_SENDAS: createUpdateSendAs,
|
|
Cmd.ARG_SHAREDDRIVE: createSharedDrive,
|
|
Cmd.ARG_SHEET: createSheet,
|
|
Cmd.ARG_SITE: deprecatedUserSites,
|
|
Cmd.ARG_SITEACL: deprecatedUserSites,
|
|
Cmd.ARG_SMIME: createSmime,
|
|
Cmd.ARG_TASK: processTasks,
|
|
Cmd.ARG_TASKLIST: processTasklists,
|
|
Cmd.ARG_WORKINGLOCATION: createWorkingLocation,
|
|
}
|
|
|
|
USER_COMMANDS_WITH_OBJECTS = {
|
|
'accept':
|
|
(Act.ACCEPT,
|
|
{Cmd.ARG_CLASSROOMINVITATION: acceptClassroomInvitations,
|
|
}
|
|
),
|
|
'add':
|
|
(Act.ADD,
|
|
USER_ADD_CREATE_FUNCTIONS
|
|
),
|
|
'append':
|
|
(Act.APPEND,
|
|
{Cmd.ARG_SHEETRANGE: appendSheetRanges,
|
|
}
|
|
),
|
|
'archive':
|
|
(Act.ARCHIVE,
|
|
{Cmd.ARG_MESSAGE: archiveMessages,
|
|
}
|
|
),
|
|
'cancel':
|
|
(Act.CANCEL,
|
|
{Cmd.ARG_GUARDIANINVITATION: cancelGuardianInvitations,
|
|
}
|
|
),
|
|
'check':
|
|
(Act.CHECK,
|
|
{Cmd.ARG_DRIVEFILESHORTCUT: checkDriveFileShortcut,
|
|
Cmd.ARG_GROUP: checkUserInGroups,
|
|
Cmd.ARG_ISINVITABLE: checkCIUserIsInvitable,
|
|
Cmd.ARG_SERVICEACCOUNT: checkServiceAccount,
|
|
}
|
|
),
|
|
'claim':
|
|
(Act.CLAIM,
|
|
{Cmd.ARG_OWNERSHIP: claimOwnership,
|
|
}
|
|
),
|
|
'clear':
|
|
(Act.CLEAR,
|
|
{Cmd.ARG_GUARDIAN: clearGuardians,
|
|
Cmd.ARG_PEOPLECONTACT: clearUserPeopleContacts,
|
|
Cmd.ARG_SHEETRANGE: clearSheetRanges,
|
|
Cmd.ARG_TASKLIST: processTasklists,
|
|
}
|
|
),
|
|
'collect':
|
|
(Act.COLLECT,
|
|
{Cmd.ARG_ORPHANS: collectOrphans,
|
|
}
|
|
),
|
|
'copy':
|
|
(Act.COPY,
|
|
{Cmd.ARG_DRIVEFILE: copyDriveFile,
|
|
Cmd.ARG_OTHERCONTACT: copyUserPeopleOtherContacts,
|
|
Cmd.ARG_SHAREDDRIVEACLS: copySyncSharedDriveACLs,
|
|
}
|
|
),
|
|
'create':
|
|
(Act.CREATE,
|
|
USER_ADD_CREATE_FUNCTIONS
|
|
),
|
|
'dedup':
|
|
(Act.DEDUP,
|
|
{Cmd.ARG_PEOPLECONTACT: dedupReplaceDomainUserPeopleContacts,
|
|
}
|
|
),
|
|
'delete':
|
|
(Act.DELETE,
|
|
{Cmd.ARG_ALIAS: deleteUsersAliases,
|
|
Cmd.ARG_ASP: deleteASP,
|
|
Cmd.ARG_BACKUPCODE: deleteBackupCodes,
|
|
Cmd.ARG_CALENDAR: deleteCalendars,
|
|
Cmd.ARG_CALENDARACL: deleteCalendarACLs,
|
|
Cmd.ARG_CHATEMOJI: deleteChatEmoji,
|
|
Cmd.ARG_CHATMEMBER: deleteUpdateChatMember,
|
|
Cmd.ARG_CHATMESSAGE: deleteChatMessage,
|
|
Cmd.ARG_CHATSECTION: deleteChatSection,
|
|
Cmd.ARG_CHATSPACE: deleteChatSpace,
|
|
Cmd.ARG_CLASSROOMINVITATION: deleteClassroomInvitations,
|
|
Cmd.ARG_CONTACTDELEGATE: processContactDelegates,
|
|
Cmd.ARG_CSEIDENTITY: processCSEIdentity,
|
|
Cmd.ARG_LOOKERSTUDIOPERMISSION: processLookerStudioPermissions,
|
|
Cmd.ARG_DELEGATE: processDelegates,
|
|
Cmd.ARG_DRIVEFILE: deleteDriveFile,
|
|
Cmd.ARG_DRIVEFILEACL: deleteDriveFileACLs,
|
|
Cmd.ARG_DRIVELABELPERMISSION: deleteDriveLabelPermissions,
|
|
Cmd.ARG_EMPTYDRIVEFOLDERS: deleteEmptyDriveFolders,
|
|
Cmd.ARG_EVENT: deleteCalendarEvents,
|
|
Cmd.ARG_FILEREVISION: deleteFileRevisions,
|
|
Cmd.ARG_FILTER: deleteFilters,
|
|
Cmd.ARG_FOCUSTIME: deleteFocusTime,
|
|
Cmd.ARG_FORWARDINGADDRESS: deleteForwardingAddresses,
|
|
Cmd.ARG_GROUP: deleteUserFromGroups,
|
|
Cmd.ARG_GUARDIAN: deleteGuardians,
|
|
Cmd.ARG_LABEL: deleteLabel,
|
|
Cmd.ARG_LABELLIST: deleteLabelList,
|
|
Cmd.ARG_LABELID: deleteLabelId,
|
|
Cmd.ARG_LABELIDLIST: deleteLabelIdList,
|
|
Cmd.ARG_LICENSE: deleteLicense,
|
|
Cmd.ARG_MESSAGE: processMessages,
|
|
Cmd.ARG_NOTE: deleteInfoNotes,
|
|
Cmd.ARG_NOTEACL: deleteNotesACLs,
|
|
Cmd.ARG_OUTOFOFFICE: deleteOutOfOffice,
|
|
Cmd.ARG_OTHERCONTACT: processUserPeopleOtherContacts,
|
|
Cmd.ARG_PEOPLECONTACT: deleteUserPeopleContacts,
|
|
Cmd.ARG_PEOPLECONTACTGROUP: deleteUserPeopleContactGroups,
|
|
Cmd.ARG_PEOPLECONTACTPHOTO: deleteUserPeopleContactPhoto,
|
|
Cmd.ARG_PERMISSION: deletePermissions,
|
|
Cmd.ARG_PHOTO: deletePhoto,
|
|
Cmd.ARG_SENDAS: deleteInfoSendAs,
|
|
Cmd.ARG_SMIME: deleteSmime,
|
|
Cmd.ARG_SHAREDDRIVE: deleteSharedDrive,
|
|
Cmd.ARG_SITEACL: deprecatedUserSites,
|
|
Cmd.ARG_TASK: processTasks,
|
|
Cmd.ARG_TASKLIST: processTasklists,
|
|
Cmd.ARG_THREAD: processThreads,
|
|
Cmd.ARG_TOKEN: deleteTokens,
|
|
Cmd.ARG_USER: deleteUsers,
|
|
Cmd.ARG_WORKINGLOCATION: deleteWorkingLocation,
|
|
}
|
|
),
|
|
'disable':
|
|
(Act.DISABLE,
|
|
{Cmd.ARG_CSEKEYPAIR: processCSEKeyPair,
|
|
}
|
|
),
|
|
'draft':
|
|
(Act.DRAFT,
|
|
{Cmd.ARG_MESSAGE: draftMessage,
|
|
}
|
|
),
|
|
'empty':
|
|
(Act.EMPTY,
|
|
{Cmd.ARG_CALENDARTRASH: emptyCalendarTrash,
|
|
Cmd.ARG_DRIVETRASH: emptyDriveTrash,
|
|
}
|
|
),
|
|
'enable':
|
|
(Act.ENABLE,
|
|
{Cmd.ARG_CSEKEYPAIR: processCSEKeyPair,
|
|
}
|
|
),
|
|
'end':
|
|
(Act.END,
|
|
{Cmd.ARG_MEETCONFERENCE: endMeetConference,
|
|
}
|
|
),
|
|
'export':
|
|
(Act.EXPORT,
|
|
{Cmd.ARG_MESSAGE: exportMessages,
|
|
Cmd.ARG_THREAD: exportThreads,
|
|
}
|
|
),
|
|
'get':
|
|
(Act.DOWNLOAD,
|
|
{Cmd.ARG_DOCUMENT: getGoogleDocument,
|
|
Cmd.ARG_DRIVEFILE: getDriveFile,
|
|
Cmd.ARG_NOTEATTACHMENT: getNoteAttachments,
|
|
Cmd.ARG_PEOPLECONTACTPHOTO: getUserPeopleContactPhoto,
|
|
Cmd.ARG_PHOTO: getUserPhoto,
|
|
Cmd.ARG_PROFILE_PHOTO: getProfilePhoto,
|
|
}
|
|
),
|
|
'hide':
|
|
(Act.HIDE,
|
|
{Cmd.ARG_SHAREDDRIVE: hideUnhideSharedDrive,
|
|
}
|
|
),
|
|
'import':
|
|
(Act.IMPORT,
|
|
{Cmd.ARG_EVENT: importCalendarEvent,
|
|
Cmd.ARG_MESSAGE: importMessage,
|
|
Cmd.ARG_TASKLIST: importTasklist,
|
|
}
|
|
),
|
|
'info':
|
|
(Act.INFO,
|
|
{Cmd.ARG_CALENDAR: infoCalendars,
|
|
Cmd.ARG_CALENDARACL: infoCalendarACLs,
|
|
Cmd.ARG_CHATEMOJI: infoChatEmoji,
|
|
Cmd.ARG_CHATEVENT: infoChatEvent,
|
|
Cmd.ARG_CHATMEMBER: infoChatMember,
|
|
Cmd.ARG_CHATMESSAGE: infoChatMessage,
|
|
Cmd.ARG_CHATSPACE: infoChatSpace,
|
|
Cmd.ARG_CHATSPACEDM: infoChatSpaceDM,
|
|
Cmd.ARG_CIGROUPMEMBERS: infoCIGroupMembers,
|
|
Cmd.ARG_CSEIDENTITY: processCSEIdentity,
|
|
Cmd.ARG_CSEKEYPAIR: processCSEKeyPair,
|
|
Cmd.ARG_DRIVEFILE: showFileInfo,
|
|
Cmd.ARG_DRIVEFILEACL: infoDriveFileACLs,
|
|
Cmd.ARG_DRIVELABEL: infoDriveLabels,
|
|
Cmd.ARG_EVENT: infoCalendarEvents,
|
|
Cmd.ARG_FILTER: infoFilters,
|
|
Cmd.ARG_FORWARDINGADDRESS: infoForwardingAddresses,
|
|
Cmd.ARG_GROUPMEMBERS: infoGroupMembers,
|
|
Cmd.ARG_MEETSPACE: infoMeetSpace,
|
|
Cmd.ARG_NOTE: deleteInfoNotes,
|
|
Cmd.ARG_PEOPLECONTACT: infoUserPeopleContacts,
|
|
Cmd.ARG_PEOPLECONTACTGROUP: infoUserPeopleContactGroups,
|
|
Cmd.ARG_SENDAS: deleteInfoSendAs,
|
|
Cmd.ARG_SHAREDDRIVE: infoSharedDrive,
|
|
Cmd.ARG_SHEET: infoPrintShowSheets,
|
|
Cmd.ARG_SITE: deprecatedUserSites,
|
|
Cmd.ARG_SITEACL: deprecatedUserSites,
|
|
Cmd.ARG_TASK: processTasks,
|
|
Cmd.ARG_TASKLIST: processTasklists,
|
|
Cmd.ARG_USER: infoUsers,
|
|
}
|
|
),
|
|
'insert':
|
|
(Act.INSERT,
|
|
{Cmd.ARG_MESSAGE: insertMessage,
|
|
}
|
|
),
|
|
'modify':
|
|
(Act.MODIFY,
|
|
{Cmd.ARG_CALENDAR: modifyCalendars,
|
|
Cmd.ARG_CHATMEMBER: deleteUpdateChatMember,
|
|
Cmd.ARG_MESSAGE: processMessages,
|
|
Cmd.ARG_THREAD: processThreads,
|
|
}
|
|
),
|
|
'move':
|
|
(Act.MOVE,
|
|
{Cmd.ARG_DRIVEFILE: moveDriveFile,
|
|
Cmd.ARG_EVENT: moveCalendarEvents,
|
|
Cmd.ARG_CHATSECTIONITEM: moveShowChatSectionItem,
|
|
Cmd.ARG_OTHERCONTACT: processUserPeopleOtherContacts,
|
|
Cmd.ARG_TASK: processTasks,
|
|
}
|
|
),
|
|
'obliterate':
|
|
(Act.OBLITERATE,
|
|
{Cmd.ARG_CSEKEYPAIR: processCSEKeyPair,
|
|
}
|
|
),
|
|
'purge':
|
|
(Act.PURGE,
|
|
{Cmd.ARG_DRIVEFILE: purgeDriveFile,
|
|
Cmd.ARG_EVENT: purgeCalendarEvents,
|
|
}
|
|
),
|
|
'print':
|
|
(Act.PRINT,
|
|
{Cmd.ARG_ANALYTICACCOUNT: printShowAnalyticAccounts,
|
|
Cmd.ARG_ANALYTICACCOUNTSUMMARY: printShowAnalyticAccountSummaries,
|
|
Cmd.ARG_ANALYTICDATASTREAM: printShowAnalyticDatastreams,
|
|
Cmd.ARG_ANALYTICPROPERTY: printShowAnalyticProperties,
|
|
Cmd.ARG_ASP: printShowASPs,
|
|
Cmd.ARG_BACKUPCODE: printShowBackupCodes,
|
|
Cmd.ARG_BUSINESSPROFILEACCOUNT: printShowBusinessProfileAccounts,
|
|
Cmd.ARG_CALENDAR: printShowCalendars,
|
|
Cmd.ARG_CALENDARACL: printShowCalendarACLs,
|
|
Cmd.ARG_CALSETTINGS: printShowCalSettings,
|
|
Cmd.ARG_CHATEMOJI: printShowChatEmojis,
|
|
Cmd.ARG_CHATEVENT: printShowChatEvents,
|
|
Cmd.ARG_CHATMEMBER: printShowChatMembers,
|
|
Cmd.ARG_CHATMESSAGE: printShowChatMessages,
|
|
Cmd.ARG_CHATSEARCHMESSAGE: printShowChatSearchMessages,
|
|
Cmd.ARG_CHATSECTION: printShowChatSections,
|
|
Cmd.ARG_CHATSECTIONITEM: printShowChatSectionItems,
|
|
Cmd.ARG_CHATSPACE: printShowChatSpaces,
|
|
Cmd.ARG_CLASSROOMINVITATION: printShowClassroomInvitations,
|
|
Cmd.ARG_CLASSROOMPROFILE: printShowClassroomProfile,
|
|
Cmd.ARG_CONTACTDELEGATE: printShowContactDelegates,
|
|
Cmd.ARG_CSEIDENTITY: printShowCSEIdentities,
|
|
Cmd.ARG_CSEKEYPAIR: printShowCSEKeyPairs,
|
|
Cmd.ARG_LOOKERSTUDIOASSET: printShowLookerStudioAssets,
|
|
Cmd.ARG_LOOKERSTUDIOPERMISSION: printShowLookerStudioPermissions,
|
|
Cmd.ARG_DELEGATE: printShowDelegates,
|
|
Cmd.ARG_DISKUSAGE: printDiskUsage,
|
|
Cmd.ARG_DRIVEACTIVITY: printDriveActivity,
|
|
Cmd.ARG_DRIVEFILEACL: printShowDriveFileACLs,
|
|
Cmd.ARG_DRIVELABEL: printShowDriveLabels,
|
|
Cmd.ARG_DRIVELABELPERMISSION: printShowDriveLabelPermissions,
|
|
Cmd.ARG_DRIVELASTMODIFICATION: printShowDrivelastModifications,
|
|
Cmd.ARG_DRIVESETTINGS: printShowDriveSettings,
|
|
Cmd.ARG_EMPTYDRIVEFOLDERS: printEmptyDriveFolders,
|
|
Cmd.ARG_EVENT: printShowCalendarEvents,
|
|
Cmd.ARG_FILECOMMENT: printShowFileComments,
|
|
Cmd.ARG_FILECOUNT: printShowFileCounts,
|
|
Cmd.ARG_FILEINFO: showFileInfo,
|
|
Cmd.ARG_FILELIST: printFileList,
|
|
Cmd.ARG_FILEPATH: printShowFilePaths,
|
|
Cmd.ARG_FILEREVISION: printShowFileRevisions,
|
|
Cmd.ARG_FILESHARECOUNT: printShowFileShareCounts,
|
|
Cmd.ARG_FILETREE: printShowFileTree,
|
|
Cmd.ARG_FILTER: printShowFilters,
|
|
Cmd.ARG_FOCUSTIME: printShowFocusTime,
|
|
Cmd.ARG_FORM: printShowForms,
|
|
Cmd.ARG_FORMRESPONSE: printShowFormResponses,
|
|
Cmd.ARG_FORWARD: printShowForward,
|
|
Cmd.ARG_FORWARDINGADDRESS: printShowForwardingAddresses,
|
|
Cmd.ARG_GMAILPROFILE: printShowGmailProfile,
|
|
Cmd.ARG_GROUP: printShowUserGroups,
|
|
Cmd.ARG_GROUPSLIST: printUserGroupsList,
|
|
Cmd.ARG_GROUPTREE: printShowGroupTree,
|
|
Cmd.ARG_GUARDIAN: printShowGuardians,
|
|
Cmd.ARG_IMAP: printShowImap,
|
|
Cmd.ARG_LABEL: printShowLabels,
|
|
Cmd.ARG_LANGUAGE: printShowLanguage,
|
|
Cmd.ARG_MEETCONFERENCE: printShowMeetConferences,
|
|
Cmd.ARG_MEETPARTICIPANT: printShowMeetParticipants,
|
|
Cmd.ARG_MEETRECORDING: printShowMeetRecordings,
|
|
Cmd.ARG_MEETTRANSCRIPT: printShowMeetTranscripts,
|
|
Cmd.ARG_MESSAGE: printShowMessages,
|
|
Cmd.ARG_NOTE: printShowNotes,
|
|
Cmd.ARG_OTHERCONTACT: printShowUserPeopleOtherContacts,
|
|
Cmd.ARG_OUTOFOFFICE: printShowOutOfOffice,
|
|
Cmd.ARG_FILEPARENTTREE: printFileParentTree,
|
|
Cmd.ARG_PEOPLECONTACT: printShowUserPeopleContacts,
|
|
Cmd.ARG_PEOPLECONTACTGROUP: printShowUserPeopleContactGroups,
|
|
Cmd.ARG_PEOPLEPROFILE: printShowUserPeopleProfiles,
|
|
Cmd.ARG_POP: printShowPop,
|
|
Cmd.ARG_SENDAS: printShowSendAs,
|
|
Cmd.ARG_SHAREDDRIVE: printShowSharedDrives,
|
|
Cmd.ARG_SHAREDDRIVEACLS: printShowSharedDriveACLs,
|
|
Cmd.ARG_SHAREDDRIVEORGANIZERS: printSharedDriveOrganizers,
|
|
Cmd.ARG_SHEET: infoPrintShowSheets,
|
|
Cmd.ARG_SHEETRANGE: printShowSheetRanges,
|
|
Cmd.ARG_SIGNATURE: printShowSignature,
|
|
Cmd.ARG_SMIME: printShowSmimes,
|
|
Cmd.ARG_SITE: deprecatedUserSites,
|
|
Cmd.ARG_SITEACL: deprecatedUserSites,
|
|
Cmd.ARG_SITEACTIVITY: deprecatedUserSites,
|
|
Cmd.ARG_TAGMANAGERACCOUNT: printShowTagManagerAccounts,
|
|
Cmd.ARG_TAGMANAGERCONTAINER: printShowTagManagerContainers,
|
|
Cmd.ARG_TAGMANAGERPERMISSION: printShowTagManagerPermissions,
|
|
Cmd.ARG_TAGMANAGERTAG: printShowTagManagerTags,
|
|
Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces,
|
|
Cmd.ARG_TASK: printShowTasks,
|
|
Cmd.ARG_TASKLIST: printShowTasklists,
|
|
Cmd.ARG_THREAD: printShowThreads,
|
|
Cmd.ARG_TOKEN: printShowTokens,
|
|
Cmd.ARG_USER: doPrintUserEntity,
|
|
Cmd.ARG_USERLIST: doPrintUserList,
|
|
Cmd.ARG_VACATION: printShowVacation,
|
|
Cmd.ARG_VAULTHOLD: printShowUserVaultHolds,
|
|
Cmd.ARG_WEBMASTERSITE: printShowWebMasterSites,
|
|
Cmd.ARG_WEBRESOURCE: printShowWebResources,
|
|
Cmd.ARG_WORKINGLOCATION: printShowWorkingLocation,
|
|
Cmd.ARG_YOUTUBECHANNEL: printShowYouTubeChannel,
|
|
}
|
|
),
|
|
'process':
|
|
(Act.PROCESS,
|
|
{Cmd.ARG_FILEDRIVELABEL: processFileDriveLabels,
|
|
}
|
|
),
|
|
'remove':
|
|
(Act.REMOVE,
|
|
{Cmd.ARG_CALENDAR: removeCalendars,
|
|
Cmd.ARG_CHATMEMBER: deleteUpdateChatMember,
|
|
Cmd.ARG_DRIVELABELPERMISSION: deleteDriveLabelPermissions,
|
|
}
|
|
),
|
|
'replacedomain':
|
|
(Act.REPLACE_DOMAIN,
|
|
{Cmd.ARG_PEOPLECONTACT: dedupReplaceDomainUserPeopleContacts,
|
|
}
|
|
),
|
|
'show':
|
|
(Act.SHOW,
|
|
{Cmd.ARG_ANALYTICACCOUNT: printShowAnalyticAccounts,
|
|
Cmd.ARG_ANALYTICACCOUNTSUMMARY: printShowAnalyticAccountSummaries,
|
|
Cmd.ARG_ANALYTICDATASTREAM: printShowAnalyticDatastreams,
|
|
Cmd.ARG_ANALYTICPROPERTY: printShowAnalyticProperties,
|
|
Cmd.ARG_ASP: printShowASPs,
|
|
Cmd.ARG_BACKUPCODE: printShowBackupCodes,
|
|
Cmd.ARG_BUSINESSPROFILEACCOUNT: printShowBusinessProfileAccounts,
|
|
Cmd.ARG_CALENDAR: printShowCalendars,
|
|
Cmd.ARG_CALENDARACL: printShowCalendarACLs,
|
|
Cmd.ARG_CALSETTINGS: printShowCalSettings,
|
|
Cmd.ARG_CHATEMOJI: printShowChatEmojis,
|
|
Cmd.ARG_CHATEVENT: printShowChatEvents,
|
|
Cmd.ARG_CHATMEMBER: printShowChatMembers,
|
|
Cmd.ARG_CHATMESSAGE: printShowChatMessages,
|
|
Cmd.ARG_CHATSEARCHMESSAGE: printShowChatSearchMessages,
|
|
Cmd.ARG_CHATSECTION: printShowChatSections,
|
|
Cmd.ARG_CHATSECTIONITEM: printShowChatSectionItems,
|
|
Cmd.ARG_CHATSPACE: printShowChatSpaces,
|
|
Cmd.ARG_CLASSROOMINVITATION: printShowClassroomInvitations,
|
|
Cmd.ARG_CLASSROOMPROFILE: printShowClassroomProfile,
|
|
Cmd.ARG_CONTACTDELEGATE: printShowContactDelegates,
|
|
Cmd.ARG_COUNT: showCountUser,
|
|
Cmd.ARG_CSEIDENTITY: printShowCSEIdentities,
|
|
Cmd.ARG_CSEKEYPAIR: printShowCSEKeyPairs,
|
|
Cmd.ARG_LOOKERSTUDIOASSET: printShowLookerStudioAssets,
|
|
Cmd.ARG_LOOKERSTUDIOPERMISSION: printShowLookerStudioPermissions,
|
|
Cmd.ARG_DELEGATE: printShowDelegates,
|
|
Cmd.ARG_DISKUSAGE: printDiskUsage,
|
|
Cmd.ARG_DRIVEACTIVITY: printDriveActivity,
|
|
Cmd.ARG_DRIVEFILEACL: printShowDriveFileACLs,
|
|
Cmd.ARG_DRIVELABEL: printShowDriveLabels,
|
|
Cmd.ARG_DRIVELABELPERMISSION: printShowDriveLabelPermissions,
|
|
Cmd.ARG_DRIVELASTMODIFICATION: printShowDrivelastModifications,
|
|
Cmd.ARG_DRIVESETTINGS: printShowDriveSettings,
|
|
Cmd.ARG_EVENT: printShowCalendarEvents,
|
|
Cmd.ARG_FILECOMMENT: printShowFileComments,
|
|
Cmd.ARG_FILECOUNT: printShowFileCounts,
|
|
Cmd.ARG_FILEINFO: showFileInfo,
|
|
Cmd.ARG_FILELIST: printFileList,
|
|
Cmd.ARG_FILEPATH: printShowFilePaths,
|
|
Cmd.ARG_FILEREVISION: printShowFileRevisions,
|
|
Cmd.ARG_FILESHARECOUNT: printShowFileShareCounts,
|
|
Cmd.ARG_FILETREE: printShowFileTree,
|
|
Cmd.ARG_FILTER: printShowFilters,
|
|
Cmd.ARG_FOCUSTIME: printShowFocusTime,
|
|
Cmd.ARG_FORM: printShowForms,
|
|
Cmd.ARG_FORMRESPONSE: printShowFormResponses,
|
|
Cmd.ARG_FORWARD: printShowForward,
|
|
Cmd.ARG_FORWARDINGADDRESS: printShowForwardingAddresses,
|
|
Cmd.ARG_GMAILPROFILE: printShowGmailProfile,
|
|
Cmd.ARG_GROUP: printShowUserGroups,
|
|
Cmd.ARG_GROUPTREE: printShowGroupTree,
|
|
Cmd.ARG_GUARDIAN: printShowGuardians,
|
|
Cmd.ARG_IMAP: printShowImap,
|
|
Cmd.ARG_LABEL: printShowLabels,
|
|
Cmd.ARG_LANGUAGE: printShowLanguage,
|
|
Cmd.ARG_MEETCONFERENCE: printShowMeetConferences,
|
|
Cmd.ARG_MEETPARTICIPANT: printShowMeetParticipants,
|
|
Cmd.ARG_MEETRECORDING: printShowMeetRecordings,
|
|
Cmd.ARG_MEETTRANSCRIPT: printShowMeetTranscripts,
|
|
Cmd.ARG_MESSAGE: printShowMessages,
|
|
Cmd.ARG_NOTE: printShowNotes,
|
|
Cmd.ARG_OTHERCONTACT: printShowUserPeopleOtherContacts,
|
|
Cmd.ARG_OUTOFOFFICE: printShowOutOfOffice,
|
|
Cmd.ARG_PEOPLECONTACT: printShowUserPeopleContacts,
|
|
Cmd.ARG_PEOPLECONTACTGROUP: printShowUserPeopleContactGroups,
|
|
Cmd.ARG_PEOPLEPROFILE: printShowUserPeopleProfiles,
|
|
Cmd.ARG_POP: printShowPop,
|
|
Cmd.ARG_PROFILE: showProfile,
|
|
Cmd.ARG_SENDAS: printShowSendAs,
|
|
Cmd.ARG_SHAREDDRIVE: printShowSharedDrives,
|
|
Cmd.ARG_SHAREDDRIVEACLS: printShowSharedDriveACLs,
|
|
Cmd.ARG_SHAREDDRIVEINFO: infoSharedDrive,
|
|
Cmd.ARG_SHAREDDRIVETHEMES: showSharedDriveThemes,
|
|
Cmd.ARG_SHEET: infoPrintShowSheets,
|
|
Cmd.ARG_SHEETRANGE: printShowSheetRanges,
|
|
Cmd.ARG_SIGNATURE: printShowSignature,
|
|
Cmd.ARG_SITE: deprecatedUserSites,
|
|
Cmd.ARG_SITEACL: deprecatedUserSites,
|
|
Cmd.ARG_SMIME: printShowSmimes,
|
|
Cmd.ARG_TAGMANAGERACCOUNT: printShowTagManagerAccounts,
|
|
Cmd.ARG_TAGMANAGERCONTAINER: printShowTagManagerContainers,
|
|
Cmd.ARG_TAGMANAGERPERMISSION: printShowTagManagerPermissions,
|
|
Cmd.ARG_TAGMANAGERTAG: printShowTagManagerTags,
|
|
Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces,
|
|
Cmd.ARG_TASK: printShowTasks,
|
|
Cmd.ARG_TASKLIST: printShowTasklists,
|
|
Cmd.ARG_THREAD: printShowThreads,
|
|
Cmd.ARG_TOKEN: printShowTokens,
|
|
Cmd.ARG_VAULTHOLD: printShowUserVaultHolds,
|
|
Cmd.ARG_VACATION: printShowVacation,
|
|
Cmd.ARG_WEBMASTERSITE: printShowWebMasterSites,
|
|
Cmd.ARG_WEBRESOURCE: printShowWebResources,
|
|
Cmd.ARG_WORKINGLOCATION: printShowWorkingLocation,
|
|
Cmd.ARG_YOUTUBECHANNEL: printShowYouTubeChannel,
|
|
}
|
|
),
|
|
'spam':
|
|
(Act.SPAM,
|
|
{Cmd.ARG_MESSAGE: processMessages,
|
|
Cmd.ARG_THREAD: processThreads,
|
|
}
|
|
),
|
|
'suspend':
|
|
(Act.SUSPEND,
|
|
{Cmd.ARG_USER: suspendUnsuspendUsers,
|
|
}
|
|
),
|
|
'sync':
|
|
(Act.SYNC,
|
|
{Cmd.ARG_CHATMEMBER: syncChatMembers,
|
|
Cmd.ARG_GROUP: syncUserWithGroups,
|
|
Cmd.ARG_GUARDIAN: syncGuardians,
|
|
Cmd.ARG_LICENSE: syncLicense,
|
|
Cmd.ARG_SHAREDDRIVEACLS: copySyncSharedDriveACLs,
|
|
}
|
|
),
|
|
'transfer':
|
|
(Act.TRANSFER,
|
|
{Cmd.ARG_DRIVE: transferDrive,
|
|
Cmd.ARG_OWNERSHIP: transferOwnership,
|
|
}
|
|
),
|
|
'trash':
|
|
(Act.TRASH,
|
|
{Cmd.ARG_DRIVEFILE: trashDriveFile,
|
|
Cmd.ARG_MESSAGE: processMessages,
|
|
Cmd.ARG_THREAD: processThreads,
|
|
}
|
|
),
|
|
'undelete':
|
|
(Act.UNDELETE,
|
|
{Cmd.ARG_USER: undeleteUsers,
|
|
}
|
|
),
|
|
'unhide':
|
|
(Act.UNHIDE,
|
|
{Cmd.ARG_SHAREDDRIVE: hideUnhideSharedDrive,
|
|
}
|
|
),
|
|
'unsuspend':
|
|
(Act.UNSUSPEND,
|
|
{Cmd.ARG_USER: suspendUnsuspendUsers,
|
|
}
|
|
),
|
|
'untrash':
|
|
(Act.UNTRASH,
|
|
{Cmd.ARG_DRIVEFILE: untrashDriveFile,
|
|
Cmd.ARG_MESSAGE: processMessages,
|
|
Cmd.ARG_THREAD: processThreads,
|
|
}
|
|
),
|
|
'update':
|
|
(Act.UPDATE,
|
|
{Cmd.ARG_BACKUPCODE: updateBackupCodes,
|
|
Cmd.ARG_CALATTENDEES: updateCalendarAttendees,
|
|
Cmd.ARG_CALENDAR: updateCalendars,
|
|
Cmd.ARG_CALENDARACL: updateCalendarACLs,
|
|
Cmd.ARG_CHATMEMBER: deleteUpdateChatMember,
|
|
Cmd.ARG_CHATMESSAGE: updateChatMessage,
|
|
Cmd.ARG_CHATSECTION: createUpdateChatSection,
|
|
Cmd.ARG_CHATSPACE: updateChatSpace,
|
|
Cmd.ARG_CSEIDENTITY: createUpdateCSEIdentity,
|
|
Cmd.ARG_LOOKERSTUDIOPERMISSION: processLookerStudioPermissions,
|
|
Cmd.ARG_DELEGATE: updateDelegates,
|
|
Cmd.ARG_DOCUMENT: updateGoogleDocument,
|
|
Cmd.ARG_DRIVEFILE: updateDriveFile,
|
|
Cmd.ARG_DRIVEFILEACL: updateDriveFileACLs,
|
|
Cmd.ARG_EVENT: updateCalendarEvents,
|
|
Cmd.ARG_FILEREVISION: updateFileRevisions,
|
|
Cmd.ARG_FORM: updateForm,
|
|
Cmd.ARG_GROUP: updateUserGroups,
|
|
Cmd.ARG_LABEL: updateLabels,
|
|
Cmd.ARG_LABELID: updateLabelSettingsById,
|
|
Cmd.ARG_LABELSETTINGS: updateLabelSettings,
|
|
Cmd.ARG_LICENSE: updateLicense,
|
|
Cmd.ARG_MEETSPACE: updateMeetSpace,
|
|
Cmd.ARG_OTHERCONTACT: processUserPeopleOtherContacts,
|
|
Cmd.ARG_PEOPLECONTACT: updateUserPeopleContacts,
|
|
Cmd.ARG_PEOPLECONTACTGROUP: updateUserPeopleContactGroup,
|
|
Cmd.ARG_PEOPLECONTACTPHOTO: updateUserPeopleContactPhoto,
|
|
Cmd.ARG_PHOTO: updatePhoto,
|
|
Cmd.ARG_SENDAS: createUpdateSendAs,
|
|
Cmd.ARG_SERVICEACCOUNT: checkServiceAccount,
|
|
Cmd.ARG_SHAREDDRIVE: updateSharedDrive,
|
|
Cmd.ARG_SHEET: updateSheets,
|
|
Cmd.ARG_SHEETRANGE: updateSheetRanges,
|
|
Cmd.ARG_SMIME: updateSmime,
|
|
Cmd.ARG_SITE: deprecatedUserSites,
|
|
Cmd.ARG_SITEACL: deprecatedUserSites,
|
|
Cmd.ARG_TASK: processTasks,
|
|
Cmd.ARG_TASKLIST: processTasklists,
|
|
Cmd.ARG_USER: updateUsers,
|
|
}
|
|
),
|
|
'watch':
|
|
(Act.WATCH,
|
|
{Cmd.ARG_GMAIL: watchGmail,
|
|
}
|
|
),
|
|
'wipe':
|
|
(Act.WIPE,
|
|
{Cmd.ARG_EVENT: wipeCalendarEvents,
|
|
}
|
|
),
|
|
}
|
|
|
|
# User commands aliases
|
|
USER_COMMANDS_ALIASES = {
|
|
'del': 'delete',
|
|
'delegates': 'delegate',
|
|
'deprov': 'deprovision',
|
|
'imap4': 'imap',
|
|
'pop3': 'pop',
|
|
'sig': 'signature',
|
|
'utf': 'unicode',
|
|
'utf-8': 'unicode',
|
|
'utf8': 'unicode',
|
|
}
|
|
|
|
USER_COMMANDS_OBJ_ALIASES = {
|
|
Cmd.ARG_3LO: Cmd.ARG_TOKEN,
|
|
Cmd.ARG_ALIASES: Cmd.ARG_ALIAS,
|
|
Cmd.ARG_APPLICATIONSPECIFICPASSWORDS: Cmd.ARG_ASP,
|
|
Cmd.ARG_ANALYTICACCOUNTS: Cmd.ARG_ANALYTICACCOUNT,
|
|
Cmd.ARG_ANALYTICACCOUNTSUMMARIES: Cmd.ARG_ANALYTICACCOUNTSUMMARY,
|
|
Cmd.ARG_ANALYTICDATASTREAMS: Cmd.ARG_ANALYTICDATASTREAM,
|
|
Cmd.ARG_ANALYTICPROPERTIES: Cmd.ARG_ANALYTICPROPERTY,
|
|
Cmd.ARG_ASPS: Cmd.ARG_ASP,
|
|
Cmd.ARG_BACKUPCODES: Cmd.ARG_BACKUPCODE,
|
|
Cmd.ARG_BUSINESSPROFILEACCOUNTS: Cmd.ARG_BUSINESSPROFILEACCOUNT,
|
|
Cmd.ARG_CALENDARS: Cmd.ARG_CALENDAR,
|
|
Cmd.ARG_CALENDARACLS: Cmd.ARG_CALENDARACL,
|
|
Cmd.ARG_CLASSIFICATIONLABEL: Cmd.ARG_DRIVELABEL,
|
|
Cmd.ARG_CLASSIFICATIONLABELS: Cmd.ARG_DRIVELABEL,
|
|
Cmd.ARG_CLASSIFICATIONLABELPERMISSION: Cmd.ARG_DRIVELABELPERMISSION,
|
|
Cmd.ARG_CLASSIFICATIONLABELPERMISSIONS: Cmd.ARG_DRIVELABELPERMISSION,
|
|
Cmd.ARG_CLASSROOMINVITATIONS: Cmd.ARG_CLASSROOMINVITATION,
|
|
Cmd.ARG_CHATEMOJIS: Cmd.ARG_CHATEMOJI,
|
|
Cmd.ARG_CHATEVENTS: Cmd.ARG_CHATEVENT,
|
|
Cmd.ARG_CHATMEMBERS: Cmd.ARG_CHATMEMBER,
|
|
Cmd.ARG_CHATMESSAGES: Cmd.ARG_CHATMESSAGE,
|
|
Cmd.ARG_CHATSEARCHMESSAGES: Cmd.ARG_CHATSEARCHMESSAGE,
|
|
Cmd.ARG_CHATSECTIONS: Cmd.ARG_CHATSECTION,
|
|
Cmd.ARG_CHATSECTIONITEMS: Cmd.ARG_CHATSECTIONITEM,
|
|
Cmd.ARG_CHATSPACES: Cmd.ARG_CHATSPACE,
|
|
Cmd.ARG_CIMEMBER: Cmd.ARG_CIGROUPMEMBERS,
|
|
Cmd.ARG_CIMEMBERS: Cmd.ARG_CIGROUPMEMBERS,
|
|
Cmd.ARG_CONTACT: Cmd.ARG_PEOPLECONTACT,
|
|
Cmd.ARG_CONTACTS: Cmd.ARG_PEOPLECONTACT,
|
|
Cmd.ARG_CONTACTDELEGATES: Cmd.ARG_CONTACTDELEGATE,
|
|
Cmd.ARG_CONTACTGROUP: Cmd.ARG_PEOPLECONTACTGROUP,
|
|
Cmd.ARG_CONTACTGROUPS: Cmd.ARG_PEOPLECONTACTGROUP,
|
|
Cmd.ARG_CONTACTPHOTO: Cmd.ARG_PEOPLECONTACTPHOTO,
|
|
Cmd.ARG_CONTACTPHOTOS: Cmd.ARG_PEOPLECONTACTPHOTO,
|
|
Cmd.ARG_CSEIDENTITIES: Cmd.ARG_CSEIDENTITY,
|
|
Cmd.ARG_CSEKEYPAIRS: Cmd.ARG_CSEKEYPAIR,
|
|
Cmd.ARG_COUNTS: Cmd.ARG_COUNT,
|
|
Cmd.ARG_DATASTUDIOASSET: Cmd.ARG_LOOKERSTUDIOASSET,
|
|
Cmd.ARG_DATASTUDIOPERMISSION: Cmd.ARG_LOOKERSTUDIOPERMISSION,
|
|
Cmd.ARG_DATASTUDIOASSETS: Cmd.ARG_LOOKERSTUDIOASSET,
|
|
Cmd.ARG_DATASTUDIOPERMISSIONS: Cmd.ARG_LOOKERSTUDIOPERMISSION,
|
|
Cmd.ARG_LOOKERSTUDIOASSETS: Cmd.ARG_LOOKERSTUDIOASSET,
|
|
Cmd.ARG_LOOKERSTUDIOPERMISSIONS: Cmd.ARG_LOOKERSTUDIOPERMISSION,
|
|
Cmd.ARG_DELEGATES: Cmd.ARG_DELEGATE,
|
|
Cmd.ARG_DOMAINCONTACT: Cmd.ARG_PEOPLECONTACT,
|
|
Cmd.ARG_DOMAINCONTACTS: Cmd.ARG_PEOPLECONTACT,
|
|
Cmd.ARG_DRIVEFILEACLS: Cmd.ARG_DRIVEFILEACL,
|
|
Cmd.ARG_DRIVEFILESHORTCUTS: Cmd.ARG_DRIVEFILESHORTCUT,
|
|
Cmd.ARG_DRIVELABELS: Cmd.ARG_DRIVELABEL,
|
|
Cmd.ARG_DRIVELABELPERMISSIONS: Cmd.ARG_DRIVELABELPERMISSION,
|
|
Cmd.ARG_DRIVELASTMODIFICATIONS: Cmd.ARG_DRIVELASTMODIFICATION,
|
|
Cmd.ARG_EVENTS: Cmd.ARG_EVENT,
|
|
Cmd.ARG_FILECOMMENTS: Cmd.ARG_FILECOMMENT,
|
|
Cmd.ARG_FILECOUNTS: Cmd.ARG_FILECOUNT,
|
|
Cmd.ARG_FILEDRIVELABELS: Cmd.ARG_FILEDRIVELABEL,
|
|
Cmd.ARG_FILEPATHS: Cmd.ARG_FILEPATH,
|
|
Cmd.ARG_FILEREVISIONS: Cmd.ARG_FILEREVISION,
|
|
Cmd.ARG_FILESHARECOUNTS: Cmd.ARG_FILESHARECOUNT,
|
|
Cmd.ARG_FILTERS: Cmd.ARG_FILTER,
|
|
Cmd.ARG_FOCUSTIMES: Cmd.ARG_FOCUSTIME,
|
|
Cmd.ARG_FORMS: Cmd.ARG_FORM,
|
|
Cmd.ARG_FORMRESPONSES: Cmd.ARG_FORMRESPONSE,
|
|
Cmd.ARG_FORWARDS: Cmd.ARG_FORWARD,
|
|
Cmd.ARG_FORWARDINGADDRESSES: Cmd.ARG_FORWARDINGADDRESS,
|
|
Cmd.ARG_GROUPS: Cmd.ARG_GROUP,
|
|
Cmd.ARG_GROUPLIST: Cmd.ARG_GROUPSLIST,
|
|
Cmd.ARG_GROUPSMEMBERS: Cmd.ARG_GROUPMEMBERS,
|
|
Cmd.ARG_GUARDIANINVITATIONS: Cmd.ARG_GUARDIANINVITATION,
|
|
Cmd.ARG_GUARDIANINVITE: Cmd.ARG_GUARDIANINVITATION,
|
|
Cmd.ARG_GUARDIANS: Cmd.ARG_GUARDIAN,
|
|
Cmd.ARG_GUESTUSERS: Cmd.ARG_GUESTUSER,
|
|
Cmd.ARG_HOLD: Cmd.ARG_VAULTHOLD,
|
|
Cmd.ARG_HOLDS: Cmd.ARG_VAULTHOLD,
|
|
Cmd.ARG_IMAP4: Cmd.ARG_IMAP,
|
|
Cmd.ARG_INVITEGUARDIAN: Cmd.ARG_GUARDIANINVITATION,
|
|
Cmd.ARG_LABELS: Cmd.ARG_LABEL,
|
|
Cmd.ARG_LICENCE: Cmd.ARG_LICENSE,
|
|
Cmd.ARG_LICENCES: Cmd.ARG_LICENSE,
|
|
Cmd.ARG_LICENSES: Cmd.ARG_LICENSE,
|
|
Cmd.ARG_MEETCONFERENCES: Cmd.ARG_MEETCONFERENCE,
|
|
Cmd.ARG_MEETPARTICIPANTS: Cmd.ARG_MEETPARTICIPANT,
|
|
Cmd.ARG_MEETRECORDINGS: Cmd.ARG_MEETRECORDING,
|
|
Cmd.ARG_MEETTRANSCRIPTS: Cmd.ARG_MEETTRANSCRIPT,
|
|
Cmd.ARG_MEETSPACES: Cmd.ARG_MEETSPACE,
|
|
Cmd.ARG_MEMBER: Cmd.ARG_GROUPMEMBERS,
|
|
Cmd.ARG_MEMBERS: Cmd.ARG_GROUPMEMBERS,
|
|
Cmd.ARG_MESSAGES: Cmd.ARG_MESSAGE,
|
|
Cmd.ARG_NOTES: Cmd.ARG_NOTE,
|
|
Cmd.ARG_NOTEACLS: Cmd.ARG_NOTEACL,
|
|
Cmd.ARG_NOTESACL: Cmd.ARG_NOTEACL,
|
|
Cmd.ARG_NOTESACLS: Cmd.ARG_NOTEACL,
|
|
Cmd.ARG_NOTEATTACHMENTS: Cmd.ARG_NOTEATTACHMENT,
|
|
Cmd.ARG_OAUTH: Cmd.ARG_TOKEN,
|
|
Cmd.ARG_OTHERCONTACTS: Cmd.ARG_OTHERCONTACT,
|
|
Cmd.ARG_OUTOFOFFICES: Cmd.ARG_OUTOFOFFICE,
|
|
Cmd.ARG_PEOPLECONTACTS: Cmd.ARG_PEOPLECONTACT,
|
|
Cmd.ARG_PEOPLECONTACTGROUPS: Cmd.ARG_PEOPLECONTACTGROUP,
|
|
Cmd.ARG_PEOPLECONTACTPHOTOS: Cmd.ARG_PEOPLECONTACTPHOTO,
|
|
Cmd.ARG_PEOPLE: Cmd.ARG_PEOPLEPROFILE,
|
|
Cmd.ARG_PEOPLEPROFILES: Cmd.ARG_PEOPLEPROFILE,
|
|
Cmd.ARG_PERMISSIONS: Cmd.ARG_PERMISSION,
|
|
Cmd.ARG_POP3: Cmd.ARG_POP,
|
|
Cmd.ARG_SECCALS: Cmd.ARG_CALENDAR,
|
|
Cmd.ARG_SHAREDDRIVES: Cmd.ARG_SHAREDDRIVE,
|
|
Cmd.ARG_SHEETS: Cmd.ARG_SHEET,
|
|
Cmd.ARG_SHEETRANGES: Cmd.ARG_SHEETRANGE,
|
|
Cmd.ARG_SIG: Cmd.ARG_SIGNATURE,
|
|
Cmd.ARG_SITES: Cmd.ARG_SITE,
|
|
Cmd.ARG_SITEACLS: Cmd.ARG_SITEACL,
|
|
Cmd.ARG_SMIMES: Cmd.ARG_SMIME,
|
|
Cmd.ARG_TAGMANAGERACCOUNTS: Cmd.ARG_TAGMANAGERACCOUNT,
|
|
Cmd.ARG_TAGMANAGERCONTAINERS: Cmd.ARG_TAGMANAGERCONTAINER,
|
|
Cmd.ARG_TAGMANAGERPERMISSIONS: Cmd.ARG_TAGMANAGERPERMISSION,
|
|
Cmd.ARG_TAGMANAGERTAGS: Cmd.ARG_TAGMANAGERTAG,
|
|
Cmd.ARG_TAGMANAGERWORKSPACES: Cmd.ARG_TAGMANAGERWORKSPACE,
|
|
Cmd.ARG_TASKS: Cmd.ARG_TASK,
|
|
Cmd.ARG_TASKLISTS: Cmd.ARG_TASKLIST,
|
|
Cmd.ARG_TEAMDRIVE: Cmd.ARG_SHAREDDRIVE,
|
|
Cmd.ARG_TEAMDRIVES: Cmd.ARG_SHAREDDRIVE,
|
|
Cmd.ARG_TEAMDRIVEACLS: Cmd.ARG_SHAREDDRIVEACLS,
|
|
Cmd.ARG_TEAMDRIVEINFO: Cmd.ARG_SHAREDDRIVEINFO,
|
|
Cmd.ARG_TEAMDRIVEORGANIZERS: Cmd.ARG_SHAREDDRIVEORGANIZERS,
|
|
Cmd.ARG_TEAMDRIVETHEMES: Cmd.ARG_SHAREDDRIVETHEMES,
|
|
Cmd.ARG_THREADS: Cmd.ARG_THREAD,
|
|
Cmd.ARG_TOKENS: Cmd.ARG_TOKEN,
|
|
Cmd.ARG_USERS: Cmd.ARG_USER,
|
|
Cmd.ARG_VAULTHOLDS: Cmd.ARG_VAULTHOLD,
|
|
Cmd.ARG_VERIFICATIONCODES: Cmd.ARG_BACKUPCODE,
|
|
Cmd.ARG_WEBMASTERSITES: Cmd.ARG_WEBMASTERSITE,
|
|
Cmd.ARG_WEBRESOURCES: Cmd.ARG_WEBRESOURCE,
|
|
Cmd.ARG_WORKINGLOCATIONS: Cmd.ARG_WORKINGLOCATION,
|
|
Cmd.ARG_YOUTUBECHANNELS: Cmd.ARG_YOUTUBECHANNEL,
|
|
}
|
|
|
|
def showAPICallsRetryData():
|
|
if GC.Values.get(GC.SHOW_API_CALLS_RETRY_DATA) and GM.Globals[GM.API_CALLS_RETRY_DATA]:
|
|
Ind.Reset()
|
|
writeStderr(Msg.API_CALLS_RETRY_DATA)
|
|
Ind.Increment()
|
|
for k, v in sorted(GM.Globals[GM.API_CALLS_RETRY_DATA].items()):
|
|
m, s = divmod(int(v[1]), 60)
|
|
h, m = divmod(m, 60)
|
|
writeStderr(formatKeyValueList(Ind.Spaces(), [k, f'{v[0]}/{h}:{m:02d}:{s:02d}'], '\n'))
|
|
Ind.Decrement()
|
|
|
|
def adjustRedirectedSTDFilesIfNotMultiprocessing():
|
|
def adjustRedirectedSTDFile(stdtype):
|
|
rdFd = GM.Globals[stdtype].get(GM.REDIRECT_FD)
|
|
rdMultiFd = GM.Globals[stdtype].get(GM.REDIRECT_MULTI_FD)
|
|
if rdFd and rdMultiFd and rdFd != rdMultiFd:
|
|
try:
|
|
rdFd.write(rdMultiFd.getvalue())
|
|
rdMultiFd.close()
|
|
GM.Globals[stdtype][GM.REDIRECT_MULTI_FD] = rdFd
|
|
if (stdtype == GM.STDOUT) and (GM.Globals.get(GM.SAVED_STDOUT) is not None):
|
|
sys.stdout = rdFd
|
|
except IOError as e:
|
|
systemErrorExit(FILE_ERROR_RC, e)
|
|
|
|
adjustRedirectedSTDFile(GM.STDOUT)
|
|
if GM.Globals[GM.STDERR].get(GM.REDIRECT_NAME) != 'stdout':
|
|
adjustRedirectedSTDFile(GM.STDERR)
|
|
else:
|
|
GM.Globals[GM.STDERR][GM.REDIRECT_MULTI_FD] = GM.Globals[GM.STDOUT][GM.REDIRECT_MULTI_FD]
|
|
|
|
def closeSTDFilesIfNotMultiprocessing(closeSTD):
|
|
def closeSTDFile(stdtype, stdfile):
|
|
rdFd = GM.Globals[stdtype].get(GM.REDIRECT_FD)
|
|
rdMultiFd = GM.Globals[stdtype].get(GM.REDIRECT_MULTI_FD)
|
|
if rdFd and rdMultiFd and (rdFd == rdMultiFd) and (rdFd != stdfile):
|
|
try:
|
|
rdFd.flush()
|
|
if closeSTD:
|
|
rdFd.close()
|
|
except BrokenPipeError:
|
|
pass
|
|
|
|
closeSTDFile(GM.STDOUT, sys.stdout)
|
|
if GM.Globals[GM.STDERR].get(GM.REDIRECT_NAME) != 'stdout':
|
|
closeSTDFile(GM.STDERR, sys.stderr)
|
|
|
|
# Process GAM command
|
|
def ProcessGAMCommand(args, processGamCfg=True, inLoop=False, closeSTD=True):
|
|
setSysExitRC(0)
|
|
Cmd.InitializeArguments(args)
|
|
Ind.Reset()
|
|
try:
|
|
logCmd = Cmd.QuotedArgumentList(args)
|
|
if checkArgumentPresent(Cmd.LOOP_CMD):
|
|
if processGamCfg and (not SetGlobalVariables()):
|
|
sys.exit(GM.Globals[GM.SYSEXITRC])
|
|
doLoop(logCmd)
|
|
sys.exit(GM.Globals[GM.SYSEXITRC])
|
|
if processGamCfg and (not SetGlobalVariables()):
|
|
sys.exit(GM.Globals[GM.SYSEXITRC])
|
|
if checkArgumentPresent(Cmd.LOOP_CMD):
|
|
doLoop(logCmd)
|
|
sys.exit(GM.Globals[GM.SYSEXITRC])
|
|
if not Cmd.ArgumentsRemaining():
|
|
doUsage()
|
|
sys.exit(GM.Globals[GM.SYSEXITRC])
|
|
CL_command = getChoice(BATCH_CSV_COMMANDS, defaultChoice=None)
|
|
if CL_command:
|
|
Act.Set(BATCH_CSV_COMMANDS[CL_command][CMD_ACTION])
|
|
if GM.Globals[GM.CMDLOG_LOGGER]:
|
|
writeGAMCommandLog(GM.Globals, logCmd, '*')
|
|
BATCH_CSV_COMMANDS[CL_command][CMD_FUNCTION]()
|
|
sys.exit(GM.Globals[GM.SYSEXITRC])
|
|
CL_command = getChoice(MAIN_COMMANDS, defaultChoice=None)
|
|
if CL_command:
|
|
adjustRedirectedSTDFilesIfNotMultiprocessing()
|
|
Act.Set(MAIN_COMMANDS[CL_command][CMD_ACTION])
|
|
MAIN_COMMANDS[CL_command][CMD_FUNCTION]()
|
|
sys.exit(GM.Globals[GM.SYSEXITRC])
|
|
CL_command = getChoice(MAIN_COMMANDS_WITH_OBJECTS, defaultChoice=None)
|
|
if CL_command:
|
|
adjustRedirectedSTDFilesIfNotMultiprocessing()
|
|
Act.Set(MAIN_COMMANDS_WITH_OBJECTS[CL_command][CMD_ACTION])
|
|
CL_objectName = getChoice(MAIN_COMMANDS_WITH_OBJECTS[CL_command][CMD_FUNCTION], choiceAliases=MAIN_COMMANDS_OBJ_ALIASES)
|
|
MAIN_COMMANDS_WITH_OBJECTS[CL_command][CMD_FUNCTION][CL_objectName]()
|
|
sys.exit(GM.Globals[GM.SYSEXITRC])
|
|
CL_command = getChoice(COMMANDS_MAP, choiceAliases=COMMANDS_ALIASES, defaultChoice=None)
|
|
if CL_command:
|
|
adjustRedirectedSTDFilesIfNotMultiprocessing()
|
|
COMMANDS_MAP[CL_command]()
|
|
sys.exit(GM.Globals[GM.SYSEXITRC])
|
|
GM.Globals[GM.ENTITY_CL_START] = Cmd.Location()
|
|
entityType, entityList = getEntityToModify(crosAllowed=True, delayGet=True)
|
|
if entityType == Cmd.ENTITY_USERS:
|
|
CL_command = getChoice(list(USER_COMMANDS)+list(USER_COMMANDS_WITH_OBJECTS), choiceAliases=USER_COMMANDS_ALIASES)
|
|
if (CL_command != 'list') and (GC.Values[GC.AUTO_BATCH_MIN] > 0):
|
|
_, count, entityList = getEntityArgument(entityList)
|
|
if count > GC.Values[GC.AUTO_BATCH_MIN]:
|
|
if GM.Globals[GM.CMDLOG_LOGGER]:
|
|
writeGAMCommandLog(GM.Globals, logCmd, '*')
|
|
doAutoBatch(Cmd.ENTITY_USER, entityList, CL_command)
|
|
sys.exit(GM.Globals[GM.SYSEXITRC])
|
|
adjustRedirectedSTDFilesIfNotMultiprocessing()
|
|
if CL_command in USER_COMMANDS:
|
|
Act.Set(USER_COMMANDS[CL_command][CMD_ACTION])
|
|
USER_COMMANDS[CL_command][CMD_FUNCTION](entityList)
|
|
else:
|
|
Act.Set(USER_COMMANDS_WITH_OBJECTS[CL_command][CMD_ACTION])
|
|
CL_objectName = getChoice(USER_COMMANDS_WITH_OBJECTS[CL_command][CMD_FUNCTION], choiceAliases=USER_COMMANDS_OBJ_ALIASES,
|
|
defaultChoice=[Cmd.ARG_USER, NO_DEFAULT][CL_command != 'print'])
|
|
USER_COMMANDS_WITH_OBJECTS[CL_command][CMD_FUNCTION][CL_objectName](entityList)
|
|
else:
|
|
CL_command = getChoice(list(CROS_COMMANDS)+list(CROS_COMMANDS_WITH_OBJECTS))
|
|
if (CL_command != 'list') and (GC.Values[GC.AUTO_BATCH_MIN] > 0):
|
|
_, count, entityList = getEntityArgument(entityList)
|
|
if count > GC.Values[GC.AUTO_BATCH_MIN]:
|
|
if GM.Globals[GM.CMDLOG_LOGGER]:
|
|
writeGAMCommandLog(GM.Globals, logCmd, '*')
|
|
doAutoBatch(Cmd.ENTITY_CROS, entityList, CL_command)
|
|
sys.exit(GM.Globals[GM.SYSEXITRC])
|
|
adjustRedirectedSTDFilesIfNotMultiprocessing()
|
|
if CL_command in CROS_COMMANDS:
|
|
Act.Set(CROS_COMMANDS[CL_command][CMD_ACTION])
|
|
CROS_COMMANDS[CL_command][CMD_FUNCTION](entityList)
|
|
else:
|
|
Act.Set(CROS_COMMANDS_WITH_OBJECTS[CL_command][CMD_ACTION])
|
|
CL_objectName = getChoice(CROS_COMMANDS_WITH_OBJECTS[CL_command][CMD_FUNCTION], choiceAliases=CROS_COMMANDS_OBJ_ALIASES,
|
|
defaultChoice=NO_DEFAULT)
|
|
CROS_COMMANDS_WITH_OBJECTS[CL_command][CMD_FUNCTION][CL_objectName](entityList)
|
|
sys.exit(GM.Globals[GM.SYSEXITRC])
|
|
except KeyboardInterrupt:
|
|
batchWriteStderr('\nControl-C\n')
|
|
setSysExitRC(KEYBOARD_INTERRUPT_RC)
|
|
showAPICallsRetryData()
|
|
adjustRedirectedSTDFilesIfNotMultiprocessing()
|
|
except OSError as e:
|
|
printErrorMessage(SOCKET_ERROR_RC, str(e))
|
|
showAPICallsRetryData()
|
|
adjustRedirectedSTDFilesIfNotMultiprocessing()
|
|
except MemoryError:
|
|
printErrorMessage(MEMORY_ERROR_RC, Msg.GAM_OUT_OF_MEMORY)
|
|
showAPICallsRetryData()
|
|
adjustRedirectedSTDFilesIfNotMultiprocessing()
|
|
except (GAPI.permissionDenied, GAPI.accessNotConfigured):
|
|
SvcAcctAPIDisabledExit()
|
|
except SystemExit as e:
|
|
GM.Globals[GM.SYSEXITRC] = e.code
|
|
if GM.Globals[GM.SYSEXITRC] != STDOUT_STDERR_ERROR_RC and not inLoop:
|
|
showAPICallsRetryData()
|
|
try:
|
|
adjustRedirectedSTDFilesIfNotMultiprocessing()
|
|
except SystemExit:
|
|
pass
|
|
except Exception:
|
|
print_exc(file=sys.stderr)
|
|
setSysExitRC(UNKNOWN_ERROR_RC)
|
|
showAPICallsRetryData()
|
|
adjustRedirectedSTDFilesIfNotMultiprocessing()
|
|
if processGamCfg:
|
|
if not inLoop:
|
|
if GM.Globals.get(GM.SAVED_STDOUT) is not None:
|
|
sys.stdout = GM.Globals[GM.SAVED_STDOUT]
|
|
closeSTDFilesIfNotMultiprocessing(closeSTD)
|
|
if GM.Globals[GM.PID] == 0 and GM.Globals[GM.CMDLOG_LOGGER]:
|
|
writeGAMCommandLog(GM.Globals, logCmd, GM.Globals[GM.SYSEXITRC])
|
|
if not inLoop:
|
|
closeGAMCommandLog(GM.Globals)
|
|
return GM.Globals[GM.SYSEXITRC]
|
|
|
|
# Process GAM command
|
|
def CallGAMCommand(args, processGamCfg=True, inLoop=False, closeSTD=False):
|
|
return ProcessGAMCommand(args, processGamCfg=processGamCfg, inLoop=inLoop, closeSTD=closeSTD)
|