lockedpass-cli 0.1.0__tar.gz → 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/PKG-INFO +1 -2
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/lockedpass_cli.egg-info/PKG-INFO +1 -2
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/lp/cli.py +50 -6
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/pyproject.toml +1 -2
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/LICENSE +0 -0
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/README.md +0 -0
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/lockedpass_cli.egg-info/SOURCES.txt +0 -0
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/lockedpass_cli.egg-info/dependency_links.txt +0 -0
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/lockedpass_cli.egg-info/entry_points.txt +0 -0
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/lockedpass_cli.egg-info/requires.txt +0 -0
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/lockedpass_cli.egg-info/top_level.txt +0 -0
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/lp/__init__.py +0 -0
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/lp/__main__.py +0 -0
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/lp/api.py +0 -0
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/lp/crypto.py +0 -0
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/lp/session.py +0 -0
- {lockedpass_cli-0.1.0 → lockedpass_cli-0.1.2}/setup.cfg +0 -0
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lockedpass-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Official CLI for LockedPass — zero-knowledge password manager
|
|
5
5
|
Author-email: Nextcoders <hello@lockedpass.com>
|
|
6
6
|
License-Expression: LicenseRef-Proprietary
|
|
7
7
|
Project-URL: Homepage, https://lockedpass.com
|
|
8
8
|
Project-URL: Documentation, https://account.lockedpass.com/api-docs
|
|
9
|
-
Project-URL: Repository, https://github.com/nextcoders/lockedpass-cli
|
|
10
9
|
Keywords: password,manager,cli,zero-knowledge,vault,encryption
|
|
11
10
|
Classifier: Development Status :: 4 - Beta
|
|
12
11
|
Classifier: Environment :: Console
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lockedpass-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Official CLI for LockedPass — zero-knowledge password manager
|
|
5
5
|
Author-email: Nextcoders <hello@lockedpass.com>
|
|
6
6
|
License-Expression: LicenseRef-Proprietary
|
|
7
7
|
Project-URL: Homepage, https://lockedpass.com
|
|
8
8
|
Project-URL: Documentation, https://account.lockedpass.com/api-docs
|
|
9
|
-
Project-URL: Repository, https://github.com/nextcoders/lockedpass-cli
|
|
10
9
|
Keywords: password,manager,cli,zero-knowledge,vault,encryption
|
|
11
10
|
Classifier: Development Status :: 4 - Beta
|
|
12
11
|
Classifier: Environment :: Console
|
|
@@ -373,7 +373,7 @@ def ls(vault_name, cred_type):
|
|
|
373
373
|
@click.argument("name_or_num")
|
|
374
374
|
@click.option("--vault", "vault_name", default=None)
|
|
375
375
|
@click.option("--field", default=None,
|
|
376
|
-
help="Show only this field (password, username, url,
|
|
376
|
+
help="Show only this field (e.g. password, username, url, host, port, server_host, server_username, server_password, ssh_key, db_name...)")
|
|
377
377
|
def get_cred(name_or_num, vault_name, field):
|
|
378
378
|
"""Show a credential (decrypted)."""
|
|
379
379
|
sess = require_session()
|
|
@@ -391,7 +391,20 @@ def get_cred(name_or_num, vault_name, field):
|
|
|
391
391
|
client.log_action(vault_obj["id"], cred_raw["id"], "viewed")
|
|
392
392
|
|
|
393
393
|
if field:
|
|
394
|
+
# Try exact key first, then type-prefixed aliases for convenience
|
|
394
395
|
val = data.get(field)
|
|
396
|
+
if val is None:
|
|
397
|
+
ctype = cred_raw.get("type", "")
|
|
398
|
+
aliases = {
|
|
399
|
+
"host": [f"{ctype}_host", "host", "smtp_host"],
|
|
400
|
+
"port": [f"{ctype}_port", "port", "smtp_port"],
|
|
401
|
+
"username": [f"{ctype}_username", "username", "smtp_username"],
|
|
402
|
+
"password": [f"{ctype}_password", "password", "smtp_password"],
|
|
403
|
+
}
|
|
404
|
+
for candidate in aliases.get(field, []):
|
|
405
|
+
val = data.get(candidate)
|
|
406
|
+
if val is not None:
|
|
407
|
+
break
|
|
395
408
|
if val is None:
|
|
396
409
|
raise click.ClickException(f"Field '{field}' not found")
|
|
397
410
|
click.echo(val)
|
|
@@ -428,11 +441,42 @@ def _print_credential(data: dict, cred_type: str) -> None:
|
|
|
428
441
|
click.echo(f" {click.style(label+':', fg='bright_black', bold=True):<18} {value}")
|
|
429
442
|
|
|
430
443
|
row("Name", data.get("name"))
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
444
|
+
|
|
445
|
+
if cred_type == "server":
|
|
446
|
+
row("Protocol", data.get("protocol"))
|
|
447
|
+
row("Host", data.get("server_host"))
|
|
448
|
+
row("Port", data.get("server_port"))
|
|
449
|
+
row("Username", data.get("server_username"))
|
|
450
|
+
row("Password", data.get("server_password"), secret=True)
|
|
451
|
+
row("SSH Key", data.get("ssh_key"), secret=True)
|
|
452
|
+
elif cred_type == "database":
|
|
453
|
+
row("Type", data.get("db_type"))
|
|
454
|
+
row("Host", data.get("host"))
|
|
455
|
+
row("Port", data.get("port"))
|
|
456
|
+
row("Database", data.get("db_name"))
|
|
457
|
+
row("Username", data.get("db_username"))
|
|
458
|
+
row("Password", data.get("db_password"), secret=True)
|
|
459
|
+
row("Conn. String", data.get("connection_string"), secret=True)
|
|
460
|
+
elif cred_type == "smtp":
|
|
461
|
+
row("Host", data.get("smtp_host"))
|
|
462
|
+
row("Port", data.get("smtp_port"))
|
|
463
|
+
row("Username", data.get("smtp_username"))
|
|
464
|
+
row("Password", data.get("smtp_password"), secret=True)
|
|
465
|
+
elif cred_type == "otp":
|
|
466
|
+
row("Issuer", data.get("issuer"))
|
|
467
|
+
row("Secret", data.get("secret"), secret=True)
|
|
468
|
+
elif cred_type == "card":
|
|
469
|
+
row("Cardholder", data.get("cardholder"))
|
|
470
|
+
row("Number", data.get("card_number"), secret=True)
|
|
471
|
+
row("Expiry", data.get("expiry"))
|
|
472
|
+
row("CVV", data.get("cvv"), secret=True)
|
|
473
|
+
else:
|
|
474
|
+
row("Username", data.get("username"))
|
|
475
|
+
row("Password", data.get("password"), secret=True)
|
|
476
|
+
row("URL", data.get("url"))
|
|
477
|
+
row("Secret", data.get("secret"), secret=True)
|
|
478
|
+
row("Issuer", data.get("issuer"))
|
|
479
|
+
|
|
436
480
|
row("Notes", data.get("notes"))
|
|
437
481
|
for f in data.get("custom_fields") or []:
|
|
438
482
|
row(f.get("label", "Field"), f.get("value"))
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "lockedpass-cli"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.2"
|
|
8
8
|
description = "Official CLI for LockedPass — zero-knowledge password manager"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "LicenseRef-Proprietary"
|
|
@@ -36,7 +36,6 @@ dependencies = [
|
|
|
36
36
|
[project.urls]
|
|
37
37
|
Homepage = "https://lockedpass.com"
|
|
38
38
|
Documentation = "https://account.lockedpass.com/api-docs"
|
|
39
|
-
Repository = "https://github.com/nextcoders/lockedpass-cli"
|
|
40
39
|
|
|
41
40
|
[project.scripts]
|
|
42
41
|
lp = "lp.cli:cli"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|