portacode 0.2.5.dev0__tar.gz → 0.2.6.dev0__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.
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/PKG-INFO +1 -1
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/_version.py +2 -2
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/cli.py +37 -10
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/keypair.py +7 -1
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode.egg-info/PKG-INFO +1 -1
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/.gitignore +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/.gitmodules +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/MANIFEST.in +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/Makefile +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/README.md +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/docker-compose.yaml +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/README.md +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/__init__.py +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/__main__.py +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/README.md +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/__init__.py +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/client.py +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/README.md +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/__init__.py +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/base.py +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/file_handlers.py +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/registry.py +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/session.py +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/system_handlers.py +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/terminal_handlers.py +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/multiplex.py +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/terminal.py +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/data.py +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/service.py +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode.egg-info/SOURCES.txt +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode.egg-info/dependency_links.txt +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode.egg-info/entry_points.txt +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode.egg-info/requires.txt +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode.egg-info/top_level.txt +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/pyproject.toml +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/setup.cfg +0 -0
- {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/setup.py +0 -0
|
@@ -17,5 +17,5 @@ __version__: str
|
|
|
17
17
|
__version_tuple__: VERSION_TUPLE
|
|
18
18
|
version_tuple: VERSION_TUPLE
|
|
19
19
|
|
|
20
|
-
__version__ = version = '0.2.
|
|
21
|
-
__version_tuple__ = version_tuple = (0, 2,
|
|
20
|
+
__version__ = version = '0.2.6.dev'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 2, 6, 'dev0')
|
|
@@ -65,22 +65,49 @@ def connect(gateway: str | None, detach: bool, non_interactive: bool) -> None:
|
|
|
65
65
|
|
|
66
66
|
pubkey_b64 = keypair.public_key_der_b64()
|
|
67
67
|
if not non_interactive:
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
# Show key generation status
|
|
69
|
+
if getattr(keypair, '_is_new', False):
|
|
70
|
+
click.echo()
|
|
71
|
+
click.echo(click.style("✔ Generated new RSA keypair", fg="green"))
|
|
72
|
+
else:
|
|
73
|
+
click.echo()
|
|
74
|
+
click.echo(click.style("✔ Loaded existing RSA keypair", fg="green"))
|
|
75
|
+
|
|
76
|
+
# Show key location
|
|
77
|
+
key_dir = getattr(keypair, '_key_dir', None)
|
|
78
|
+
if key_dir:
|
|
79
|
+
click.echo(click.style(f" 📁 Key files: {key_dir}", fg="bright_black"))
|
|
70
80
|
|
|
71
81
|
click.echo()
|
|
72
|
-
click.echo(click.style("
|
|
73
|
-
click.echo(
|
|
74
|
-
click.echo(
|
|
75
|
-
click.echo("
|
|
82
|
+
click.echo(click.style("🚀 Welcome to Portacode!", fg="bright_blue", bold=True))
|
|
83
|
+
click.echo()
|
|
84
|
+
click.echo(click.style("📱 Next steps:", fg="bright_cyan", bold=True))
|
|
85
|
+
click.echo(click.style(" 1. Visit ", fg="white") + click.style("https://remote.portacode.com", fg="bright_blue", underline=True))
|
|
86
|
+
click.echo(click.style(" 2. Create your free account or sign in", fg="white"))
|
|
87
|
+
click.echo(click.style(" 3. Add this device using the key below", fg="white"))
|
|
88
|
+
click.echo()
|
|
89
|
+
|
|
90
|
+
click.echo(click.style("🔑 Device Key:", fg="bright_yellow", bold=True))
|
|
91
|
+
click.echo(click.style("┌" + "─" * 62 + "┐", fg="bright_black"))
|
|
92
|
+
click.echo(click.style("│ ", fg="bright_black") + click.style(pubkey_b64, fg="bright_white") + click.style(" │", fg="bright_black"))
|
|
93
|
+
click.echo(click.style("└" + "─" * 62 + "┘", fg="bright_black"))
|
|
94
|
+
|
|
76
95
|
try:
|
|
77
96
|
pyperclip.copy(pubkey_b64)
|
|
78
|
-
click.echo(click.style("
|
|
97
|
+
click.echo(click.style("✅ Copied to clipboard!", fg="bright_green"))
|
|
79
98
|
except Exception:
|
|
80
|
-
click.echo(click.style("
|
|
81
|
-
|
|
99
|
+
click.echo(click.style("⚠️ Copy the key manually", fg="bright_yellow"))
|
|
100
|
+
|
|
101
|
+
click.echo(click.style(f" Fingerprint: {fingerprint}", fg="bright_black"))
|
|
102
|
+
click.echo()
|
|
103
|
+
|
|
104
|
+
click.echo(click.style("💡 Connection info:", fg="bright_magenta", bold=True))
|
|
105
|
+
click.echo(click.style(" • This session: Connection active until terminal closes", fg="white"))
|
|
106
|
+
click.echo(click.style(" • Permanent: Run ", fg="white") + click.style("portacode service install", fg="bright_cyan") + click.style(" for auto-connect", fg="white"))
|
|
107
|
+
click.echo(click.style(" • More help: ", fg="white") + click.style("portacode service --help", fg="bright_cyan"))
|
|
82
108
|
click.echo()
|
|
83
|
-
|
|
109
|
+
|
|
110
|
+
click.prompt(click.style("Press Enter once device is added", fg="bright_green", bold=True), default="", show_default=False)
|
|
84
111
|
|
|
85
112
|
# 3. Start connection manager
|
|
86
113
|
if detach and not non_interactive:
|
|
@@ -82,10 +82,16 @@ def get_or_create_keypair() -> KeyPair:
|
|
|
82
82
|
private_pem, public_pem = _generate_keypair()
|
|
83
83
|
priv_path.write_bytes(private_pem)
|
|
84
84
|
pub_path.write_bytes(public_pem)
|
|
85
|
+
keypair = KeyPair(priv_path, pub_path)
|
|
86
|
+
keypair._is_new = True
|
|
87
|
+
keypair._key_dir = key_dir
|
|
85
88
|
else:
|
|
86
89
|
logging.info(f"Found existing keys at {key_dir}")
|
|
90
|
+
keypair = KeyPair(priv_path, pub_path)
|
|
91
|
+
keypair._is_new = False
|
|
92
|
+
keypair._key_dir = key_dir
|
|
87
93
|
|
|
88
|
-
return
|
|
94
|
+
return keypair
|
|
89
95
|
|
|
90
96
|
|
|
91
97
|
def fingerprint_public_key(pem: bytes) -> str:
|
|
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
|
|
File without changes
|
|
File without changes
|
{portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/file_handlers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/system_handlers.py
RENAMED
|
File without changes
|
{portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/terminal_handlers.py
RENAMED
|
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
|