forked from Cleanskiier27/datacentral-cloud-llc
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtoken_cli.py
More file actions
130 lines (112 loc) · 3.52 KB
/
Copy pathtoken_cli.py
File metadata and controls
130 lines (112 loc) · 3.52 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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/env python3
"""
Command-line interface for managing personal access tokens.
"""
import argparse
import sys
from token_manager import TokenManager
def main():
"""Main CLI entry point."""
parser = argparse.ArgumentParser(
description="Personal Access Token Manager for networkbuster"
)
subparsers = parser.add_subparsers(dest="command", help="Available commands")
# Generate token command
generate_parser = subparsers.add_parser(
"generate",
help="Generate a new personal access token"
)
generate_parser.add_argument(
"name",
help="Name for the token"
)
generate_parser.add_argument(
"--scopes",
nargs="+",
help="Permission scopes for the token"
)
generate_parser.add_argument(
"--expiry-days",
type=int,
help="Number of days until token expires"
)
# Validate token command
validate_parser = subparsers.add_parser(
"validate",
help="Validate a token"
)
validate_parser.add_argument(
"token",
help="Token to validate"
)
# Revoke token command
revoke_parser = subparsers.add_parser(
"revoke",
help="Revoke a token by name"
)
revoke_parser.add_argument(
"name",
help="Name of the token to revoke"
)
# List tokens command
subparsers.add_parser(
"list",
help="List all tokens"
)
args = parser.parse_args()
if not args.command:
parser.print_help()
return 1
# Initialize token manager
manager = TokenManager()
# Handle commands
if args.command == "generate":
try:
token = manager.generate_token(
name=args.name,
scopes=args.scopes,
expiry_days=args.expiry_days
)
print(f"Generated token: {token}")
print("\nIMPORTANT: Save this token securely. It will not be shown again.")
return 0
except ValueError as e:
print(f"[ERROR] {e}")
return 1
elif args.command == "validate":
# Get scopes without updating last_used first
scopes = manager.get_token_scopes(args.token)
if scopes is not None:
# Now validate and update last_used
manager.validate_token(args.token)
print("[OK] Token is valid")
print(f"Scopes: {', '.join(scopes) if scopes else 'none'}")
return 0
else:
print("[FAIL] Token is invalid or expired")
return 1
elif args.command == "revoke":
success = manager.revoke_token(args.name)
if success:
print(f"[OK] Token '{args.name}' has been revoked")
return 0
else:
print(f"[FAIL] Token '{args.name}' not found")
return 1
elif args.command == "list":
tokens = manager.list_tokens()
if not tokens:
print("No tokens found")
return 0
print(f"Found {len(tokens)} token(s):\n")
for token in tokens:
print(f"Name: {token['name']}")
print(f" Created: {token['created_at']}")
print(f" Scopes: {', '.join(token['scopes']) if token['scopes'] else 'none'}")
print(f" Expiry: {token['expiry'] or 'never'}")
print(f" Last used: {token['last_used'] or 'never'}")
print()
return 0
return 0
if __name__ == "__main__":
sys.exit(main())