Skip to content
Snippets Groups Projects
Commit da97a8f9 authored by Tobias Dussa's avatar Tobias Dussa
Browse files

Added multi-value argument possibility.

parent dd0ca358
No related branches found
No related tags found
No related merge requests found
...@@ -41,6 +41,17 @@ if sys.version_info < (3, 8): ...@@ -41,6 +41,17 @@ if sys.version_info < (3, 8):
setattr(namespace, self.dest, items) setattr(namespace, self.dest, items)
parser.register('action', 'extend', ExtendAction) parser.register('action', 'extend', ExtendAction)
class KeyValueAction(argparse.Action):
# Constructor calling
def __call__( self , parser, namespace,
values, option_string = None):
for value in values:
# split it into key and value
key, value = value.split('=')
# assign into dictionary
getattr(namespace, self.dest)[key] = value
parser.register('action', 'keyvalue', KeyValueAction)
# Parse args # Parse args
parser.add_argument('-a', '--attach', dest='attach', default=[], nargs=1, action='extend', help='add attachment(s) to mail (default: None)') parser.add_argument('-a', '--attach', dest='attach', default=[], nargs=1, action='extend', help='add attachment(s) to mail (default: None)')
parser.add_argument('-b', '--basedir', dest='basedir', default='Mails', help='base directory for all output (default: "Mails")') parser.add_argument('-b', '--basedir', dest='basedir', default='Mails', help='base directory for all output (default: "Mails")')
...@@ -56,7 +67,7 @@ parser.add_argument('-o', '--output', dest='output', default='{basedir}/ ...@@ -56,7 +67,7 @@ parser.add_argument('-o', '--output', dest='output', default='{basedir}/
parser.add_argument('-R', '--reply-to', dest='replyto', default=None, help='reply-to mail address (default: None)') parser.add_argument('-R', '--reply-to', dest='replyto', default=None, help='reply-to mail address (default: None)')
parser.add_argument( '--salt', dest='salt', default=None, help='salt to use for hashing (default: random 8-byte hex string)') parser.add_argument( '--salt', dest='salt', default=None, help='salt to use for hashing (default: random 8-byte hex string)')
parser.add_argument( '--sign', dest='sign', default='', choices=['', 'gpg'], help='signature method (default: ""); one of "", "gpg"') parser.add_argument( '--sign', dest='sign', default='', choices=['', 'gpg'], help='signature method (default: ""); one of "", "gpg"')
parser.add_argument( '--sign-as', dest='signas', default=None, help='signature key to use (default: None meaning autoselect)') parser.add_argument( '--sign-arg', dest='signarg', default={}, nargs=1, action='keyvalue', help='additional arguments to be passed to the signature call (default: None)')
parser.add_argument('-s', '--subject', dest='subject', default='Security Challenge for {site} -- {campaign}{infix}', help='mail subject (default: "Security Challenge Message -- {campaign}{infix}")') parser.add_argument('-s', '--subject', dest='subject', default='Security Challenge for {site} -- {campaign}{infix}', help='mail subject (default: "Security Challenge Message -- {campaign}{infix}")')
parser.add_argument('-S', '--smtpserver', dest='smtpserver', default='localhost', help='SMTP server to use (default: "localhost"); port can be specified with "<host>:<port>" notation and takes precedence over implied ports and port specification') parser.add_argument('-S', '--smtpserver', dest='smtpserver', default='localhost', help='SMTP server to use (default: "localhost"); port can be specified with "<host>:<port>" notation and takes precedence over implied ports and port specification')
parser.add_argument( '--smtpport', dest='smtpport', default=0, type=int, help='SMTP port to use (default: 25); takes precedence over implied ports') parser.add_argument( '--smtpport', dest='smtpport', default=0, type=int, help='SMTP port to use (default: 25); takes precedence over implied ports')
...@@ -73,6 +84,8 @@ parser.add_argument('-w', '--webserver', dest='webserver', default='https://ch ...@@ -73,6 +84,8 @@ parser.add_argument('-w', '--webserver', dest='webserver', default='https://ch
parser.add_argument('infix', default='', nargs='?', help='infix for ID purposes, default empty') parser.add_argument('infix', default='', nargs='?', help='infix for ID purposes, default empty')
args = parser.parse_args() args = parser.parse_args()
print(args)
class SafeDict(dict): class SafeDict(dict):
def __missing__(self, key): def __missing__(self, key):
return '{' + key + '}' return '{' + key + '}'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment