mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-03 20:31:35 +00:00
move asps, domainaliases functions to own file
This commit is contained in:
@@ -52,8 +52,10 @@ from gam import display
|
|||||||
from gam import fileutils
|
from gam import fileutils
|
||||||
from gam.gapi import calendar as gapi_calendar
|
from gam.gapi import calendar as gapi_calendar
|
||||||
from gam.gapi import directory as gapi_directory
|
from gam.gapi import directory as gapi_directory
|
||||||
|
from gam.gapi.directory import asps as gapi_directory_asps
|
||||||
from gam.gapi.directory import cros as gapi_directory_cros
|
from gam.gapi.directory import cros as gapi_directory_cros
|
||||||
from gam.gapi.directory import customer as gapi_directory_customer
|
from gam.gapi.directory import customer as gapi_directory_customer
|
||||||
|
from gam.gapi.directory import domainaliases as gapi_directory_domainaliases
|
||||||
from gam.gapi.directory import resource as gapi_directory_resource
|
from gam.gapi.directory import resource as gapi_directory_resource
|
||||||
from gam.gapi import errors as gapi_errors
|
from gam.gapi import errors as gapi_errors
|
||||||
from gam.gapi import reports as gapi_reports
|
from gam.gapi import reports as gapi_reports
|
||||||
@@ -1627,17 +1629,6 @@ def doCreateDomain():
|
|||||||
print(f'Added domain {domain_name}')
|
print(f'Added domain {domain_name}')
|
||||||
|
|
||||||
|
|
||||||
def doCreateDomainAlias():
|
|
||||||
cd = buildGAPIObject('directory')
|
|
||||||
body = {}
|
|
||||||
body['domainAliasName'] = sys.argv[3]
|
|
||||||
body['parentDomainName'] = sys.argv[4]
|
|
||||||
gapi.call(cd.domainAliases(),
|
|
||||||
'insert',
|
|
||||||
customer=GC_Values[GC_CUSTOMER_ID],
|
|
||||||
body=body)
|
|
||||||
|
|
||||||
|
|
||||||
def doUpdateDomain():
|
def doUpdateDomain():
|
||||||
cd = buildGAPIObject('directory')
|
cd = buildGAPIObject('directory')
|
||||||
domain_name = sys.argv[3]
|
domain_name = sys.argv[3]
|
||||||
@@ -1679,19 +1670,6 @@ def doGetDomainInfo():
|
|||||||
display.print_json(result)
|
display.print_json(result)
|
||||||
|
|
||||||
|
|
||||||
def doGetDomainAliasInfo():
|
|
||||||
cd = buildGAPIObject('directory')
|
|
||||||
alias = sys.argv[3]
|
|
||||||
result = gapi.call(cd.domainAliases(),
|
|
||||||
'get',
|
|
||||||
customer=GC_Values[GC_CUSTOMER_ID],
|
|
||||||
domainAliasName=alias)
|
|
||||||
if 'creationTime' in result:
|
|
||||||
result['creationTime'] = utils.formatTimestampYMDHMSF(
|
|
||||||
result['creationTime'])
|
|
||||||
display.print_json(result)
|
|
||||||
|
|
||||||
|
|
||||||
def doDelDomain():
|
def doDelDomain():
|
||||||
cd = buildGAPIObject('directory')
|
cd = buildGAPIObject('directory')
|
||||||
domainName = sys.argv[3]
|
domainName = sys.argv[3]
|
||||||
@@ -1701,15 +1679,6 @@ def doDelDomain():
|
|||||||
domainName=domainName)
|
domainName=domainName)
|
||||||
|
|
||||||
|
|
||||||
def doDelDomainAlias():
|
|
||||||
cd = buildGAPIObject('directory')
|
|
||||||
domainAliasName = sys.argv[3]
|
|
||||||
gapi.call(cd.domainAliases(),
|
|
||||||
'delete',
|
|
||||||
customer=GC_Values[GC_CUSTOMER_ID],
|
|
||||||
domainAliasName=domainAliasName)
|
|
||||||
|
|
||||||
|
|
||||||
def doPrintDomains():
|
def doPrintDomains():
|
||||||
cd = buildGAPIObject('directory')
|
cd = buildGAPIObject('directory')
|
||||||
todrive = False
|
todrive = False
|
||||||
@@ -1763,40 +1732,6 @@ def doPrintDomains():
|
|||||||
display.write_csv_file(csvRows, titles, 'Domains', todrive)
|
display.write_csv_file(csvRows, titles, 'Domains', todrive)
|
||||||
|
|
||||||
|
|
||||||
def doPrintDomainAliases():
|
|
||||||
cd = buildGAPIObject('directory')
|
|
||||||
todrive = False
|
|
||||||
titles = [
|
|
||||||
'domainAliasName',
|
|
||||||
]
|
|
||||||
csvRows = []
|
|
||||||
i = 3
|
|
||||||
while i < len(sys.argv):
|
|
||||||
myarg = sys.argv[i].lower()
|
|
||||||
if myarg == 'todrive':
|
|
||||||
todrive = True
|
|
||||||
i += 1
|
|
||||||
else:
|
|
||||||
controlflow.invalid_argument_exit(sys.argv[i],
|
|
||||||
'gam print domainaliases')
|
|
||||||
results = gapi.call(cd.domainAliases(),
|
|
||||||
'list',
|
|
||||||
customer=GC_Values[GC_CUSTOMER_ID])
|
|
||||||
for domainAlias in results['domainAliases']:
|
|
||||||
domainAlias_attributes = {}
|
|
||||||
for attr in domainAlias:
|
|
||||||
if attr in ['kind', 'etag']:
|
|
||||||
continue
|
|
||||||
if attr == 'creationTime':
|
|
||||||
domainAlias[attr] = utils.formatTimestampYMDHMSF(
|
|
||||||
domainAlias[attr])
|
|
||||||
if attr not in titles:
|
|
||||||
titles.append(attr)
|
|
||||||
domainAlias_attributes[attr] = domainAlias[attr]
|
|
||||||
csvRows.append(domainAlias_attributes)
|
|
||||||
display.write_csv_file(csvRows, titles, 'Domains', todrive)
|
|
||||||
|
|
||||||
|
|
||||||
def doDelAdmin():
|
def doDelAdmin():
|
||||||
cd = buildGAPIObject('directory')
|
cd = buildGAPIObject('directory')
|
||||||
roleAssignmentId = sys.argv[3]
|
roleAssignmentId = sys.argv[3]
|
||||||
@@ -10294,50 +10229,6 @@ def doGetOrgInfo(name=None, return_attrib=None):
|
|||||||
print('')
|
print('')
|
||||||
|
|
||||||
|
|
||||||
def doGetASPs(users):
|
|
||||||
cd = buildGAPIObject('directory')
|
|
||||||
for user in users:
|
|
||||||
asps = gapi.get_items(cd.asps(), 'list', 'items', userKey=user)
|
|
||||||
if asps:
|
|
||||||
print(f'Application-Specific Passwords for {user}')
|
|
||||||
for asp in asps:
|
|
||||||
if asp['creationTime'] == '0':
|
|
||||||
created_date = 'Unknown'
|
|
||||||
else:
|
|
||||||
created_date = utils.formatTimestampYMDHMS(
|
|
||||||
asp['creationTime'])
|
|
||||||
if asp['lastTimeUsed'] == '0':
|
|
||||||
used_date = 'Never'
|
|
||||||
else:
|
|
||||||
used_date = utils.formatTimestampYMDHMS(asp['lastTimeUsed'])
|
|
||||||
print(
|
|
||||||
f' ID: {asp["codeId"]}\n Name: {asp["name"]}\n Created: {created_date}\n Last Used: {used_date}\n'
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
print(f' no ASPs for {user}\n')
|
|
||||||
|
|
||||||
|
|
||||||
def doDelASP(users):
|
|
||||||
cd = buildGAPIObject('directory')
|
|
||||||
codeIdList = sys.argv[5].lower()
|
|
||||||
if codeIdList == 'all':
|
|
||||||
allCodeIds = True
|
|
||||||
else:
|
|
||||||
allCodeIds = False
|
|
||||||
codeIds = codeIdList.replace(',', ' ').split()
|
|
||||||
for user in users:
|
|
||||||
if allCodeIds:
|
|
||||||
asps = gapi.get_items(cd.asps(),
|
|
||||||
'list',
|
|
||||||
'items',
|
|
||||||
userKey=user,
|
|
||||||
fields='items/codeId')
|
|
||||||
codeIds = [asp['codeId'] for asp in asps]
|
|
||||||
for codeId in codeIds:
|
|
||||||
gapi.call(cd.asps(), 'delete', userKey=user, codeId=codeId)
|
|
||||||
print(f'deleted ASP {codeId} for {user}')
|
|
||||||
|
|
||||||
|
|
||||||
def printBackupCodes(user, codes):
|
def printBackupCodes(user, codes):
|
||||||
jcount = len(codes)
|
jcount = len(codes)
|
||||||
realcount = 0
|
realcount = 0
|
||||||
@@ -10540,24 +10431,7 @@ def printShowTokens(i, entityType, users, csvFormat):
|
|||||||
def doDeprovUser(users):
|
def doDeprovUser(users):
|
||||||
cd = buildGAPIObject('directory')
|
cd = buildGAPIObject('directory')
|
||||||
for user in users:
|
for user in users:
|
||||||
print(f'Getting Application Specific Passwords for {user}')
|
gapi_directory_asps.delete([user], cd=cd, codeIdList='all')
|
||||||
asps = gapi.get_items(cd.asps(),
|
|
||||||
'list',
|
|
||||||
'items',
|
|
||||||
userKey=user,
|
|
||||||
fields='items/codeId')
|
|
||||||
jcount = len(asps)
|
|
||||||
if jcount > 0:
|
|
||||||
j = 0
|
|
||||||
for asp in asps:
|
|
||||||
j += 1
|
|
||||||
print(f' deleting ASP {j} of {jcount}')
|
|
||||||
gapi.call(cd.asps(),
|
|
||||||
'delete',
|
|
||||||
userKey=user,
|
|
||||||
codeId=asp['codeId'])
|
|
||||||
else:
|
|
||||||
print('No ASPs')
|
|
||||||
print(f'Invalidating 2SV Backup Codes for {user}')
|
print(f'Invalidating 2SV Backup Codes for {user}')
|
||||||
try:
|
try:
|
||||||
gapi.call(cd.verificationCodes(),
|
gapi.call(cd.verificationCodes(),
|
||||||
@@ -13427,7 +13301,7 @@ def ProcessGAMCommand(args):
|
|||||||
elif argument == 'domain':
|
elif argument == 'domain':
|
||||||
doCreateDomain()
|
doCreateDomain()
|
||||||
elif argument in ['domainalias', 'aliasdomain']:
|
elif argument in ['domainalias', 'aliasdomain']:
|
||||||
doCreateDomainAlias()
|
gapi_directory_domainaliases.create()
|
||||||
elif argument == 'admin':
|
elif argument == 'admin':
|
||||||
doCreateAdmin()
|
doCreateAdmin()
|
||||||
elif argument in ['guardianinvite', 'inviteguardian', 'guardian']:
|
elif argument in ['guardianinvite', 'inviteguardian', 'guardian']:
|
||||||
@@ -13538,7 +13412,7 @@ def ProcessGAMCommand(args):
|
|||||||
elif argument == 'domain':
|
elif argument == 'domain':
|
||||||
doGetDomainInfo()
|
doGetDomainInfo()
|
||||||
elif argument in ['domainalias', 'aliasdomain']:
|
elif argument in ['domainalias', 'aliasdomain']:
|
||||||
doGetDomainAliasInfo()
|
gapi_directory_domainaliases.info()
|
||||||
elif argument in ['resoldcustomer', 'resellercustomer']:
|
elif argument in ['resoldcustomer', 'resellercustomer']:
|
||||||
doGetResoldCustomer()
|
doGetResoldCustomer()
|
||||||
elif argument in [
|
elif argument in [
|
||||||
@@ -13585,7 +13459,7 @@ def ProcessGAMCommand(args):
|
|||||||
elif argument == 'domain':
|
elif argument == 'domain':
|
||||||
doDelDomain()
|
doDelDomain()
|
||||||
elif argument in ['domainalias', 'aliasdomain']:
|
elif argument in ['domainalias', 'aliasdomain']:
|
||||||
doDelDomainAlias()
|
gapi_directory_domainaliases.delete()
|
||||||
elif argument == 'admin':
|
elif argument == 'admin':
|
||||||
doDelAdmin()
|
doDelAdmin()
|
||||||
elif argument in ['guardian', 'guardians']:
|
elif argument in ['guardian', 'guardians']:
|
||||||
@@ -13667,7 +13541,7 @@ def ProcessGAMCommand(args):
|
|||||||
elif argument == 'domains':
|
elif argument == 'domains':
|
||||||
doPrintDomains()
|
doPrintDomains()
|
||||||
elif argument in ['domainaliases', 'aliasdomains']:
|
elif argument in ['domainaliases', 'aliasdomains']:
|
||||||
doPrintDomainAliases()
|
gapi_directory_domainaliases.print_()
|
||||||
elif argument == 'admins':
|
elif argument == 'admins':
|
||||||
doPrintAdmins()
|
doPrintAdmins()
|
||||||
elif argument in ['roles', 'adminroles']:
|
elif argument in ['roles', 'adminroles']:
|
||||||
@@ -13855,7 +13729,7 @@ def ProcessGAMCommand(args):
|
|||||||
elif showWhat in ['backupcode', 'backupcodes', 'verificationcodes']:
|
elif showWhat in ['backupcode', 'backupcodes', 'verificationcodes']:
|
||||||
doGetBackupCodes(users)
|
doGetBackupCodes(users)
|
||||||
elif showWhat in ['asp', 'asps', 'applicationspecificpasswords']:
|
elif showWhat in ['asp', 'asps', 'applicationspecificpasswords']:
|
||||||
doGetASPs(users)
|
gapi_directory_asps.info(users)
|
||||||
elif showWhat in ['token', 'tokens', 'oauth', '3lo']:
|
elif showWhat in ['token', 'tokens', 'oauth', '3lo']:
|
||||||
printShowTokens(5, 'users', users, False)
|
printShowTokens(5, 'users', users, False)
|
||||||
elif showWhat == 'driveactivity':
|
elif showWhat == 'driveactivity':
|
||||||
@@ -13953,7 +13827,7 @@ def ProcessGAMCommand(args):
|
|||||||
elif delWhat in ['backupcode', 'backupcodes', 'verificationcodes']:
|
elif delWhat in ['backupcode', 'backupcodes', 'verificationcodes']:
|
||||||
doDelBackupCodes(users)
|
doDelBackupCodes(users)
|
||||||
elif delWhat in ['asp', 'asps', 'applicationspecificpasswords']:
|
elif delWhat in ['asp', 'asps', 'applicationspecificpasswords']:
|
||||||
doDelASP(users)
|
gapi_directory_asps.delete(users)
|
||||||
elif delWhat in ['token', 'tokens', 'oauth', '3lo']:
|
elif delWhat in ['token', 'tokens', 'oauth', '3lo']:
|
||||||
doDelTokens(users)
|
doDelTokens(users)
|
||||||
elif delWhat in ['group', 'groups']:
|
elif delWhat in ['group', 'groups']:
|
||||||
|
|||||||
58
src/gam/gapi/directory/asps.py
Normal file
58
src/gam/gapi/directory/asps.py
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
|
from gam.var import *
|
||||||
|
from gam import controlflow
|
||||||
|
from gam import gapi
|
||||||
|
from gam.gapi import directory as gapi_directory
|
||||||
|
from gam import utils
|
||||||
|
|
||||||
|
|
||||||
|
def get(users):
|
||||||
|
cd = gapi_directory.buildGAPIObject()
|
||||||
|
for user in users:
|
||||||
|
asps = gapi.get_items(cd.asps(), 'list', 'items', userKey=user)
|
||||||
|
if asps:
|
||||||
|
print(f'Application-Specific Passwords for {user}')
|
||||||
|
for asp in asps:
|
||||||
|
if asp['creationTime'] == '0':
|
||||||
|
created_date = 'Unknown'
|
||||||
|
else:
|
||||||
|
created_date = utils.formatTimestampYMDHMS(
|
||||||
|
asp['creationTime'])
|
||||||
|
if asp['lastTimeUsed'] == '0':
|
||||||
|
used_date = 'Never'
|
||||||
|
else:
|
||||||
|
last_used = asp['lastTimeUsed']
|
||||||
|
used_date = utils.formatTimestampYMDHMS(last_used)
|
||||||
|
print(f' ID: {asp["codeId"]}\n' \
|
||||||
|
f' Name: {asp["name"]}\n' \
|
||||||
|
f' Created: {created_date}\n' \
|
||||||
|
f' Last Used: {used_date}\n')
|
||||||
|
else:
|
||||||
|
print(f' no ASPs for {user}\n')
|
||||||
|
|
||||||
|
|
||||||
|
def delete(users, cd=None, codeIdList=None):
|
||||||
|
if not cd:
|
||||||
|
cd = gapi_directory.buildGAPIObject()
|
||||||
|
if not codeIdList:
|
||||||
|
codeIdList = sys.argv[5].lower()
|
||||||
|
if codeIdList == 'all':
|
||||||
|
allCodeIds = True
|
||||||
|
else:
|
||||||
|
allCodeIds = False
|
||||||
|
codeIds = codeIdList.replace(',', ' ').split()
|
||||||
|
for user in users:
|
||||||
|
if allCodeIds:
|
||||||
|
print(f'Getting Application Specific Passwords for {user}')
|
||||||
|
asps = gapi.get_items(cd.asps(),
|
||||||
|
'list',
|
||||||
|
'items',
|
||||||
|
userKey=user,
|
||||||
|
fields='items/codeId')
|
||||||
|
codeIds = [asp['codeId'] for asp in asps]
|
||||||
|
if not codeIds:
|
||||||
|
print('No ASPs')
|
||||||
|
for codeId in codeIds:
|
||||||
|
gapi.call(cd.asps(), 'delete', userKey=user, codeId=codeId)
|
||||||
|
print(f'deleted ASP {codeId} for {user}')
|
||||||
76
src/gam/gapi/directory/domainaliases.py
Normal file
76
src/gam/gapi/directory/domainaliases.py
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
|
from gam.var import *
|
||||||
|
from gam import controlflow
|
||||||
|
from gam import display
|
||||||
|
from gam import gapi
|
||||||
|
from gam.gapi import directory as gapi_directory
|
||||||
|
from gam import utils
|
||||||
|
|
||||||
|
|
||||||
|
def create():
|
||||||
|
cd = gapi_directory.buildGAPIObject()
|
||||||
|
body = {'domainAliasName': sys.argv[3], 'parentDomainName': sys.argv[4]}
|
||||||
|
print(f'Adding {body["domainAliasName"]} alias for ' \
|
||||||
|
f'{body["parentDomainName"]}')
|
||||||
|
gapi.call(cd.domainAliases(),
|
||||||
|
'insert',
|
||||||
|
customer=GC_Values[GC_CUSTOMER_ID],
|
||||||
|
body=body)
|
||||||
|
|
||||||
|
|
||||||
|
def delete():
|
||||||
|
cd = gapi_directory.buildGAPIObject()
|
||||||
|
domainAliasName = sys.argv[3]
|
||||||
|
print(f'Deleting domain alias {domainAliasName}')
|
||||||
|
gapi.call(cd.domainAliases(),
|
||||||
|
'delete',
|
||||||
|
customer=GC_Values[GC_CUSTOMER_ID],
|
||||||
|
domainAliasName=domainAliasName)
|
||||||
|
|
||||||
|
|
||||||
|
def info():
|
||||||
|
cd = gapi_directory.buildGAPIObject()
|
||||||
|
alias = sys.argv[3]
|
||||||
|
result = gapi.call(cd.domainAliases(),
|
||||||
|
'get',
|
||||||
|
customer=GC_Values[GC_CUSTOMER_ID],
|
||||||
|
domainAliasName=alias)
|
||||||
|
if 'creationTime' in result:
|
||||||
|
result['creationTime'] = utils.formatTimestampYMDHMSF(
|
||||||
|
result['creationTime'])
|
||||||
|
display.print_json(result)
|
||||||
|
|
||||||
|
|
||||||
|
def print_():
|
||||||
|
cd = gapi_directory.buildGAPIObject()
|
||||||
|
todrive = False
|
||||||
|
titles = [
|
||||||
|
'domainAliasName',
|
||||||
|
]
|
||||||
|
csvRows = []
|
||||||
|
i = 3
|
||||||
|
while i < len(sys.argv):
|
||||||
|
myarg = sys.argv[i].lower()
|
||||||
|
if myarg == 'todrive':
|
||||||
|
todrive = True
|
||||||
|
i += 1
|
||||||
|
else:
|
||||||
|
controlflow.invalid_argument_exit(sys.argv[i],
|
||||||
|
'gam print domainaliases')
|
||||||
|
results = gapi.call(cd.domainAliases(),
|
||||||
|
'list',
|
||||||
|
customer=GC_Values[GC_CUSTOMER_ID])
|
||||||
|
for domainAlias in results['domainAliases']:
|
||||||
|
domainAlias_attributes = {}
|
||||||
|
for attr in domainAlias:
|
||||||
|
if attr in ['kind', 'etag']:
|
||||||
|
continue
|
||||||
|
if attr == 'creationTime':
|
||||||
|
domainAlias[attr] = utils.formatTimestampYMDHMSF(
|
||||||
|
domainAlias[attr])
|
||||||
|
if attr not in titles:
|
||||||
|
titles.append(attr)
|
||||||
|
domainAlias_attributes[attr] = domainAlias[attr]
|
||||||
|
csvRows.append(domainAlias_attributes)
|
||||||
|
display.write_csv_file(csvRows, titles, 'Domains', todrive)
|
||||||
Reference in New Issue
Block a user