mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-05 05:11:35 +00:00
move most imports to top to make sure libraries exist early
This commit is contained in:
27
src/gam.py
27
src/gam.py
@@ -27,7 +27,9 @@ import os
|
|||||||
import string
|
import string
|
||||||
import time
|
import time
|
||||||
import base64
|
import base64
|
||||||
|
import calendar
|
||||||
import codecs
|
import codecs
|
||||||
|
import ConfigParser
|
||||||
import csv
|
import csv
|
||||||
import datetime
|
import datetime
|
||||||
import hashlib
|
import hashlib
|
||||||
@@ -40,9 +42,17 @@ import re
|
|||||||
import signal
|
import signal
|
||||||
import socket
|
import socket
|
||||||
import StringIO
|
import StringIO
|
||||||
|
import struct
|
||||||
|
from urllib import urlencode
|
||||||
import uuid
|
import uuid
|
||||||
|
import webbrowser
|
||||||
import zipfile
|
import zipfile
|
||||||
|
from email.mime.text import MIMEText
|
||||||
|
import shlex
|
||||||
|
from multiprocessing import Pool
|
||||||
|
from multiprocessing import freeze_support
|
||||||
|
|
||||||
|
import dns.resolver
|
||||||
import googleapiclient
|
import googleapiclient
|
||||||
import googleapiclient.discovery
|
import googleapiclient.discovery
|
||||||
import googleapiclient.errors
|
import googleapiclient.errors
|
||||||
@@ -53,6 +63,8 @@ import google_auth_httplib2
|
|||||||
import oauth2client.client
|
import oauth2client.client
|
||||||
import oauth2client.file
|
import oauth2client.file
|
||||||
import oauth2client.tools
|
import oauth2client.tools
|
||||||
|
from passlib.handlers.sha2_crypt import sha512_crypt
|
||||||
|
from oauth2client.contrib.dictionary_storage import DictionaryStorage
|
||||||
|
|
||||||
import utils
|
import utils
|
||||||
from var import *
|
from var import *
|
||||||
@@ -571,7 +583,6 @@ def SetGlobalVariables():
|
|||||||
GM_Globals[GM_EXTRA_ARGS_DICT] = {u'prettyPrint': GC_Values[GC_DEBUG_LEVEL] > 0}
|
GM_Globals[GM_EXTRA_ARGS_DICT] = {u'prettyPrint': GC_Values[GC_DEBUG_LEVEL] > 0}
|
||||||
httplib2.debuglevel = GC_Values[GC_DEBUG_LEVEL]
|
httplib2.debuglevel = GC_Values[GC_DEBUG_LEVEL]
|
||||||
if os.path.isfile(os.path.join(GC_Values[GC_CONFIG_DIR], FN_EXTRA_ARGS_TXT)):
|
if os.path.isfile(os.path.join(GC_Values[GC_CONFIG_DIR], FN_EXTRA_ARGS_TXT)):
|
||||||
import ConfigParser
|
|
||||||
ea_config = ConfigParser.ConfigParser()
|
ea_config = ConfigParser.ConfigParser()
|
||||||
ea_config.optionxform = str
|
ea_config.optionxform = str
|
||||||
ea_config.read(os.path.join(GC_Values[GC_CONFIG_DIR], FN_EXTRA_ARGS_TXT))
|
ea_config.read(os.path.join(GC_Values[GC_CONFIG_DIR], FN_EXTRA_ARGS_TXT))
|
||||||
@@ -586,7 +597,6 @@ def SetGlobalVariables():
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def doGAMCheckForUpdates(forceCheck=False):
|
def doGAMCheckForUpdates(forceCheck=False):
|
||||||
import calendar
|
|
||||||
|
|
||||||
def _gamLatestVersionNotAvailable():
|
def _gamLatestVersionNotAvailable():
|
||||||
if forceCheck:
|
if forceCheck:
|
||||||
@@ -631,7 +641,6 @@ def doGAMCheckForUpdates(forceCheck=False):
|
|||||||
printLine(MESSAGE_HIT_CONTROL_C_TO_UPDATE)
|
printLine(MESSAGE_HIT_CONTROL_C_TO_UPDATE)
|
||||||
time.sleep(15)
|
time.sleep(15)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
import webbrowser
|
|
||||||
webbrowser.open(release_data[u'html_url'])
|
webbrowser.open(release_data[u'html_url'])
|
||||||
printLine(MESSAGE_GAM_EXITING_FOR_UPDATE)
|
printLine(MESSAGE_GAM_EXITING_FOR_UPDATE)
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
@@ -658,7 +667,6 @@ def doGAMVersion(checkForArgs=True):
|
|||||||
if simple:
|
if simple:
|
||||||
sys.stdout.write(gam_version)
|
sys.stdout.write(gam_version)
|
||||||
return
|
return
|
||||||
import struct
|
|
||||||
version_data = u'GAM {0} - {1}\n{2}\nPython {3}.{4}.{5} {6}-bit {7}\ngoogle-api-python-client {8}\noauth2client {9}\n{10} {11}\nPath: {12}'
|
version_data = u'GAM {0} - {1}\n{2}\nPython {3}.{4}.{5} {6}-bit {7}\ngoogle-api-python-client {8}\noauth2client {9}\n{10} {11}\nPath: {12}'
|
||||||
print version_data.format(gam_version, GAM_URL, gam_author, sys.version_info[0],
|
print version_data.format(gam_version, GAM_URL, gam_author, sys.version_info[0],
|
||||||
sys.version_info[1], sys.version_info[2], struct.calcsize(u'P')*8,
|
sys.version_info[1], sys.version_info[2], struct.calcsize(u'P')*8,
|
||||||
@@ -1537,7 +1545,6 @@ def addDelegates(users, i):
|
|||||||
callGAPI(gmail.users().settings().delegates(), u'create', soft_errors=True, userId=u'me', body={u'delegateEmail': delegate})
|
callGAPI(gmail.users().settings().delegates(), u'create', soft_errors=True, userId=u'me', body={u'delegateEmail': delegate})
|
||||||
|
|
||||||
def gen_sha512_hash(password):
|
def gen_sha512_hash(password):
|
||||||
from passlib.handlers.sha2_crypt import sha512_crypt
|
|
||||||
return sha512_crypt.encrypt(password, rounds=5000)
|
return sha512_crypt.encrypt(password, rounds=5000)
|
||||||
|
|
||||||
def printShowDelegates(users, csvFormat):
|
def printShowDelegates(users, csvFormat):
|
||||||
@@ -7104,7 +7111,6 @@ def getValidateLoginHint(login_hint):
|
|||||||
print u'Error: that is not a valid email address'
|
print u'Error: that is not a valid email address'
|
||||||
|
|
||||||
def getCRMService(login_hint):
|
def getCRMService(login_hint):
|
||||||
from oauth2client.contrib.dictionary_storage import DictionaryStorage
|
|
||||||
scope = u'https://www.googleapis.com/auth/cloud-platform'
|
scope = u'https://www.googleapis.com/auth/cloud-platform'
|
||||||
client_id = u'297408095146-fug707qsjv4ikron0hugpevbrjhkmsk7.apps.googleusercontent.com'
|
client_id = u'297408095146-fug707qsjv4ikron0hugpevbrjhkmsk7.apps.googleusercontent.com'
|
||||||
client_secret = u'qM3dP8f_4qedwzWQE1VR4zzU'
|
client_secret = u'qM3dP8f_4qedwzWQE1VR4zzU'
|
||||||
@@ -7190,7 +7196,6 @@ def doCreateProject(login_hint=None):
|
|||||||
u'code': u'ThisIsAnInvalidCodeOnlyBeingUsedToTestIfClientAndSecretAreValid',
|
u'code': u'ThisIsAnInvalidCodeOnlyBeingUsedToTestIfClientAndSecretAreValid',
|
||||||
u'redirect_uri': u'urn:ietf:wg:oauth:2.0:oob', u'grant_type': u'authorization_code'}
|
u'redirect_uri': u'urn:ietf:wg:oauth:2.0:oob', u'grant_type': u'authorization_code'}
|
||||||
headers = {'Content-type': 'application/x-www-form-urlencoded'}
|
headers = {'Content-type': 'application/x-www-form-urlencoded'}
|
||||||
from urllib import urlencode
|
|
||||||
_, content = simplehttp.request(url, u'POST', urlencode(post_data), headers=headers)
|
_, content = simplehttp.request(url, u'POST', urlencode(post_data), headers=headers)
|
||||||
try:
|
try:
|
||||||
content = json.loads(content)
|
content = json.loads(content)
|
||||||
@@ -9830,7 +9835,6 @@ def doSiteVerifyAttempt():
|
|||||||
print u'Token: %s' % verify_data[u'token']
|
print u'Token: %s' % verify_data[u'token']
|
||||||
if verify_data[u'method'] == u'DNS_CNAME':
|
if verify_data[u'method'] == u'DNS_CNAME':
|
||||||
try:
|
try:
|
||||||
import dns.resolver
|
|
||||||
resolver = dns.resolver.Resolver()
|
resolver = dns.resolver.Resolver()
|
||||||
resolver.nameservers = [u'8.8.8.8', u'8.8.4.4']
|
resolver.nameservers = [u'8.8.8.8', u'8.8.4.4']
|
||||||
cname_token = verify_data[u'token']
|
cname_token = verify_data[u'token']
|
||||||
@@ -9846,7 +9850,6 @@ def doSiteVerifyAttempt():
|
|||||||
pass
|
pass
|
||||||
elif verify_data[u'method'] == u'DNS_TXT':
|
elif verify_data[u'method'] == u'DNS_TXT':
|
||||||
try:
|
try:
|
||||||
import dns.resolver
|
|
||||||
resolver = dns.resolver.Resolver()
|
resolver = dns.resolver.Resolver()
|
||||||
resolver.nameservers = [u'8.8.8.8', u'8.8.4.4']
|
resolver.nameservers = [u'8.8.8.8', u'8.8.4.4']
|
||||||
try:
|
try:
|
||||||
@@ -10323,7 +10326,6 @@ def doDeleteOrg():
|
|||||||
|
|
||||||
# Send an email
|
# Send an email
|
||||||
def send_email(msg_subj, msg_txt, msg_rcpt=None):
|
def send_email(msg_subj, msg_txt, msg_rcpt=None):
|
||||||
from email.mime.text import MIMEText
|
|
||||||
userId, gmail = buildGmailGAPIObject(_getValueFromOAuth(u'email'))
|
userId, gmail = buildGmailGAPIObject(_getValueFromOAuth(u'email'))
|
||||||
if not msg_rcpt:
|
if not msg_rcpt:
|
||||||
msg_rcpt = userId
|
msg_rcpt = userId
|
||||||
@@ -10444,7 +10446,6 @@ and follow recommend steps to authorize GAM for Drive access.''' % (admin_email)
|
|||||||
send_email(msg_subj, msg_txt)
|
send_email(msg_subj, msg_txt)
|
||||||
print msg_txt
|
print msg_txt
|
||||||
else:
|
else:
|
||||||
import webbrowser
|
|
||||||
webbrowser.open(file_url)
|
webbrowser.open(file_url)
|
||||||
|
|
||||||
def flatten_json(structure, key=u'', path=u'', flattened=None, listLimit=None):
|
def flatten_json(structure, key=u'', path=u'', flattened=None, listLimit=None):
|
||||||
@@ -11965,7 +11966,6 @@ def doPrintResourceCalendars():
|
|||||||
writeCSVfile(csvRows, titles, u'Resources', todrive)
|
writeCSVfile(csvRows, titles, u'Resources', todrive)
|
||||||
|
|
||||||
def shlexSplitList(entity, dataDelimiter=u' ,'):
|
def shlexSplitList(entity, dataDelimiter=u' ,'):
|
||||||
import shlex
|
|
||||||
lexer = shlex.shlex(entity, posix=True)
|
lexer = shlex.shlex(entity, posix=True)
|
||||||
lexer.whitespace = dataDelimiter
|
lexer.whitespace = dataDelimiter
|
||||||
lexer.whitespace_split = True
|
lexer.whitespace_split = True
|
||||||
@@ -12487,7 +12487,6 @@ def init_gam_worker():
|
|||||||
signal.signal(signal.SIGINT, signal.SIG_IGN)
|
signal.signal(signal.SIGINT, signal.SIG_IGN)
|
||||||
|
|
||||||
def run_batch(items):
|
def run_batch(items):
|
||||||
from multiprocessing import Pool
|
|
||||||
if not items:
|
if not items:
|
||||||
return
|
return
|
||||||
num_worker_threads = min(len(items), GC_Values[GC_NUM_THREADS])
|
num_worker_threads = min(len(items), GC_Values[GC_NUM_THREADS])
|
||||||
@@ -12613,7 +12612,6 @@ def ProcessGAMCommand(args):
|
|||||||
SetGlobalVariables()
|
SetGlobalVariables()
|
||||||
command = sys.argv[1].lower()
|
command = sys.argv[1].lower()
|
||||||
if command == u'batch':
|
if command == u'batch':
|
||||||
import shlex
|
|
||||||
i = 2
|
i = 2
|
||||||
filename = sys.argv[i]
|
filename = sys.argv[i]
|
||||||
i, encoding = getCharSet(i+1)
|
i, encoding = getCharSet(i+1)
|
||||||
@@ -13372,7 +13370,6 @@ def ProcessGAMCommand(args):
|
|||||||
return GM_Globals[GM_SYSEXITRC]
|
return GM_Globals[GM_SYSEXITRC]
|
||||||
|
|
||||||
if sys.platform.startswith('win'):
|
if sys.platform.startswith('win'):
|
||||||
from multiprocessing import freeze_support
|
|
||||||
|
|
||||||
def win32_unicode_argv():
|
def win32_unicode_argv():
|
||||||
from ctypes import POINTER, byref, cdll, c_int, windll
|
from ctypes import POINTER, byref, cdll, c_int, windll
|
||||||
|
|||||||
Reference in New Issue
Block a user