mirror of
https://github.com/GAM-team/GAM.git
synced 2025-07-08 13:43:35 +00:00
Add replace argument to gam signature/vacation to allow replacement in data read from file
This commit is contained in:
53
src/gam.py
53
src/gam.py
@ -379,6 +379,32 @@ def getCharSet(i):
|
||||
return (i, GC_Values.get(GC_CHARSET, GM_Globals[GM_SYS_ENCODING]))
|
||||
return (i+2, sys.argv[i+1])
|
||||
|
||||
def getREPattern(i):
|
||||
if i < len(sys.argv):
|
||||
patstr = sys.argv[i]
|
||||
if patstr:
|
||||
try:
|
||||
pattern = re.compile(patstr)
|
||||
return pattern
|
||||
except re.error as e:
|
||||
print u'ERROR: "{0}" is not a valid RE pattern: {1}'.format(patstr, e)
|
||||
sys.exit(2)
|
||||
print u'ERROR: expected an <REPattern>'
|
||||
sys.exit(2)
|
||||
|
||||
def getString(i, item, emptyOK=False, optional=False):
|
||||
if i < len(sys.argv):
|
||||
argstr = sys.argv[i]
|
||||
if argstr:
|
||||
return argstr
|
||||
if emptyOK or optional:
|
||||
return u''
|
||||
print u'ERROR: expected a Non-empty <{0}>'.format(item)
|
||||
sys.exit(2)
|
||||
elif optional:
|
||||
return u''
|
||||
print u'ERROR: expected a <{0}>'.format(item)
|
||||
sys.exit(2)
|
||||
#
|
||||
# Open a file
|
||||
#
|
||||
@ -5062,19 +5088,24 @@ def getForward(users):
|
||||
pass
|
||||
|
||||
def doSignature(users):
|
||||
import cgi
|
||||
i = 4
|
||||
if sys.argv[i].lower() == u'file':
|
||||
filename = sys.argv[i+1]
|
||||
i += 2
|
||||
i, encoding = getCharSet(i)
|
||||
signature = readFile(filename, encoding=encoding).replace(u'\\n', u'
').replace(u'\n', u'<br/>')
|
||||
signature = readFile(filename, encoding=encoding).replace(u'\\n', u'<br/>').replace(u'\n', u'<br/>')
|
||||
else:
|
||||
signature = cgi.escape(sys.argv[i]).replace(u'\\n', u'
').replace(u'"', u"'")
|
||||
xmlsig = u'''<?xml version="1.0" encoding="utf-8"?>
|
||||
<atom:entry xmlns:atom="http://www.w3.org/2005/Atom" xmlns:apps="http://schemas.google.com/apps/2006">
|
||||
<apps:property name="signature" value="%s" />
|
||||
</atom:entry>''' % signature
|
||||
signature = getString(i, u'String', emptyOK=True).replace(u'\\n', u'<br/>').replace(u'\n', u'<br/>')
|
||||
i += 1
|
||||
while i < len(sys.argv):
|
||||
if sys.argv[i].lower() == u'replace':
|
||||
matchPattern = getREPattern(i+1)
|
||||
matchReplacement = getString(i+2, u'String', emptyOK=True)
|
||||
signature = matchPattern.sub(matchReplacement, signature)
|
||||
i += 3
|
||||
else:
|
||||
print u'ERROR: %s is not a valid argument for "gam <users> signature"' % sys.argv[i]
|
||||
sys.exit(2)
|
||||
emailsettings = getEmailSettingsObject()
|
||||
count = len(users)
|
||||
i = 1
|
||||
@ -5085,9 +5116,8 @@ def doSignature(users):
|
||||
else:
|
||||
emailsettings.domain = GC_Values[GC_DOMAIN] #make sure it's back at default domain
|
||||
print u"Setting Signature for %s (%s of %s)" % (user+u'@'+emailsettings.domain, i, count)
|
||||
uri = u'https://apps-apis.google.com/a/feeds/emailsettings/2.0/%s/%s/signature' % (emailsettings.domain, user)
|
||||
i += 1
|
||||
callGData(emailsettings, u'Put', soft_errors=True, data=xmlsig, uri=uri)
|
||||
callGData(emailsettings, u'UpdateSignature', soft_errors=True, username=user, signature=signature)
|
||||
|
||||
def getSignature(users):
|
||||
emailsettings = getEmailSettingsObject()
|
||||
@ -5161,6 +5191,11 @@ def doVacation(users):
|
||||
i += 2
|
||||
i, encoding = getCharSet(i)
|
||||
message = readFile(filename, encoding=encoding)
|
||||
elif sys.argv[i].lower() == u'replace':
|
||||
matchPattern = getREPattern(i+1)
|
||||
matchReplacement = getString(i+2, u'String', emptyOK=True)
|
||||
message = matchPattern.sub(matchReplacement, message)
|
||||
i += 3
|
||||
else:
|
||||
print u'ERROR: %s is not a valid argument for "gam <users> vacation"' % sys.argv[i]
|
||||
sys.exit(2)
|
||||
|
Reference in New Issue
Block a user