-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcli.py
More file actions
83 lines (80 loc) · 2.68 KB
/
cli.py
File metadata and controls
83 lines (80 loc) · 2.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
"""
CLI argument parsing for the S/MIME decryption tool.
"""
import argparse
def parse_args():
"""Parse and return command-line arguments."""
parser = argparse.ArgumentParser(
description="Decrypt S/MIME encrypted messages on an IMAP server."
)
parser.add_argument(
"--host", default="localhost",
help="IMAP server hostname (default: localhost)",
)
parser.add_argument(
"--port", type=int, default=8143,
help="IMAP server port (default: 8143)",
)
parser.add_argument(
"--user", default="dc",
help="Username for authentication (default: dc)",
)
parser.add_argument(
"--password", default="password",
help="Password for authentication (prompted if empty)",
)
parser.add_argument(
"--privatekey", default=None,
help="Path to PEM private key file (required unless --count)",
)
parser.add_argument(
"--passphrase", default="",
help="Passphrase for private key (prompted if empty)",
)
parser.add_argument(
"--additional-privatekey",
action="append",
default=[],
dest="additional_privatekeys",
help="Additional PEM private key file to try if primary fails (repeatable)",
)
parser.add_argument(
"--additional-passphrase",
action="append",
default=[],
dest="additional_passphrases",
help="Passphrase for corresponding additional key (repeatable)",
)
parser.add_argument(
"--folder", default=None,
help="Limit to a single folder by name",
)
parser.add_argument(
"--count", action="store_true",
help="Show message counts and encrypted counts per folder",
)
parser.add_argument(
"--dryrun", action="store_true",
help="Attempt decryption but do not modify mailbox",
)
parser.add_argument(
"--ignore-failures", action="store_true", dest="ignore_failures",
help="Continue processing even if decryption fails",
)
parser.add_argument(
"--move-failures", action="store_true", dest="move_failures",
help="Move failed messages to a .failed sibling folder instead of stopping",
)
parser.add_argument(
"--debug", action="store_true",
help="Print detailed debug/timing info for each IMAP operation",
)
parser.add_argument(
"--workers", type=int, default=1,
help="Number of parallel workers for message decryption (default: 1)",
)
parser.add_argument(
"--connections", type=int, default=1,
help="Number of parallel IMAP connections for folder-level parallelism (default: 1)",
)
return parser.parse_args()