ssh-server-manager 0.4.0__tar.gz → 0.4.1__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.
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/PKG-INFO +9 -2
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/README.md +8 -1
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/pyproject.toml +1 -1
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/__init__.py +1 -1
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/webapp.py +12 -3
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager.egg-info/PKG-INFO +9 -2
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/askpass.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/assets/ui/app.js +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/assets/ui/contexts.css +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/assets/ui/contexts.js +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/assets/ui/index.html +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/assets/ui/styles.css +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/auth.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/cli.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/db.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/importer.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/paths.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/service.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/ssh_config.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/ssh_runner.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/validation.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/vault.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager.egg-info/SOURCES.txt +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager.egg-info/dependency_links.txt +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager.egg-info/entry_points.txt +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager.egg-info/requires.txt +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager.egg-info/top_level.txt +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/setup.cfg +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/tests/test_askpass.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/tests/test_auth.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/tests/test_db.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/tests/test_importer.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/tests/test_runner.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/tests/test_service.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/tests/test_ssh_config.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/tests/test_ui_assets.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/tests/test_webapp.py +0 -0
- {ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/tests/test_website.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ssh-server-manager
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.1
|
|
4
4
|
Summary: Local-first SSH host and credential manager for humans and AI agents — OS-keychain vault, loopback web UI, agent-safe by design
|
|
5
5
|
License: MIT
|
|
6
6
|
Project-URL: Homepage, https://xiayh0107.github.io/servers-connect/
|
|
@@ -126,7 +126,8 @@ browser with a one-time tokenized URL.
|
|
|
126
126
|
system/light/dark themes, import config, browse remote directories read-only
|
|
127
127
|
over SFTP, copy file references for an agent, and reveal a stored secret
|
|
128
128
|
after passkey or master-password re-authentication. Connection status expires
|
|
129
|
-
instead of staying green.
|
|
129
|
+
instead of staying green. Inspect or shut down a background instance with
|
|
130
|
+
`serverctl ui --status` / `--stop` — no pid bookkeeping.
|
|
130
131
|
- **Diagnostics** — `serverctl doctor` checks ssh availability and version,
|
|
131
132
|
SFTP availability, vault backend safety, database and config paths, and
|
|
132
133
|
Python dependencies.
|
|
@@ -150,6 +151,12 @@ Codex, and other agents can manage servers safely: agents get structured
|
|
|
150
151
|
JSON output and connection error classification, while the AskPass
|
|
151
152
|
architecture keeps secrets out of the model's context by design.
|
|
152
153
|
|
|
154
|
+
The skill also encodes conversation UX, not just commands: agents answer
|
|
155
|
+
inventory questions from a single `--json` call, hand interactive shells to
|
|
156
|
+
*your* terminal and proxy follow-up commands through `exec` (`connect`
|
|
157
|
+
refuses to run without a TTY instead of hanging), and clean up a background
|
|
158
|
+
UI with `serverctl ui --stop`.
|
|
159
|
+
|
|
153
160
|
Deploy the skill with one line:
|
|
154
161
|
|
|
155
162
|
```bash
|
|
@@ -93,7 +93,8 @@ browser with a one-time tokenized URL.
|
|
|
93
93
|
system/light/dark themes, import config, browse remote directories read-only
|
|
94
94
|
over SFTP, copy file references for an agent, and reveal a stored secret
|
|
95
95
|
after passkey or master-password re-authentication. Connection status expires
|
|
96
|
-
instead of staying green.
|
|
96
|
+
instead of staying green. Inspect or shut down a background instance with
|
|
97
|
+
`serverctl ui --status` / `--stop` — no pid bookkeeping.
|
|
97
98
|
- **Diagnostics** — `serverctl doctor` checks ssh availability and version,
|
|
98
99
|
SFTP availability, vault backend safety, database and config paths, and
|
|
99
100
|
Python dependencies.
|
|
@@ -117,6 +118,12 @@ Codex, and other agents can manage servers safely: agents get structured
|
|
|
117
118
|
JSON output and connection error classification, while the AskPass
|
|
118
119
|
architecture keeps secrets out of the model's context by design.
|
|
119
120
|
|
|
121
|
+
The skill also encodes conversation UX, not just commands: agents answer
|
|
122
|
+
inventory questions from a single `--json` call, hand interactive shells to
|
|
123
|
+
*your* terminal and proxy follow-up commands through `exec` (`connect`
|
|
124
|
+
refuses to run without a TTY instead of hanging), and clean up a background
|
|
125
|
+
UI with `serverctl ui --stop`.
|
|
126
|
+
|
|
120
127
|
Deploy the skill with one line:
|
|
121
128
|
|
|
122
129
|
```bash
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "ssh-server-manager"
|
|
3
|
-
version = "0.4.
|
|
3
|
+
version = "0.4.1"
|
|
4
4
|
description = "Local-first SSH host and credential manager for humans and AI agents — OS-keychain vault, loopback web UI, agent-safe by design"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = {text = "MIT"}
|
|
@@ -429,12 +429,21 @@ def _pid_alive(pid: int) -> bool:
|
|
|
429
429
|
if os.name == "nt":
|
|
430
430
|
import ctypes
|
|
431
431
|
|
|
432
|
+
# OpenProcess succeeds on a terminated process while any handle to it
|
|
433
|
+
# is still held, so opening alone cannot distinguish alive from dead;
|
|
434
|
+
# ask whether the process object is signaled (i.e. has exited).
|
|
432
435
|
PROCESS_QUERY_LIMITED_INFORMATION = 0x1000
|
|
433
|
-
|
|
436
|
+
SYNCHRONIZE = 0x00100000
|
|
437
|
+
WAIT_TIMEOUT = 0x102
|
|
438
|
+
handle = ctypes.windll.kernel32.OpenProcess(
|
|
439
|
+
PROCESS_QUERY_LIMITED_INFORMATION | SYNCHRONIZE, False, pid
|
|
440
|
+
)
|
|
434
441
|
if not handle:
|
|
435
442
|
return False
|
|
436
|
-
|
|
437
|
-
|
|
443
|
+
try:
|
|
444
|
+
return ctypes.windll.kernel32.WaitForSingleObject(handle, 0) == WAIT_TIMEOUT
|
|
445
|
+
finally:
|
|
446
|
+
ctypes.windll.kernel32.CloseHandle(handle)
|
|
438
447
|
try:
|
|
439
448
|
os.kill(pid, 0)
|
|
440
449
|
except ProcessLookupError:
|
{ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ssh-server-manager
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.1
|
|
4
4
|
Summary: Local-first SSH host and credential manager for humans and AI agents — OS-keychain vault, loopback web UI, agent-safe by design
|
|
5
5
|
License: MIT
|
|
6
6
|
Project-URL: Homepage, https://xiayh0107.github.io/servers-connect/
|
|
@@ -126,7 +126,8 @@ browser with a one-time tokenized URL.
|
|
|
126
126
|
system/light/dark themes, import config, browse remote directories read-only
|
|
127
127
|
over SFTP, copy file references for an agent, and reveal a stored secret
|
|
128
128
|
after passkey or master-password re-authentication. Connection status expires
|
|
129
|
-
instead of staying green.
|
|
129
|
+
instead of staying green. Inspect or shut down a background instance with
|
|
130
|
+
`serverctl ui --status` / `--stop` — no pid bookkeeping.
|
|
130
131
|
- **Diagnostics** — `serverctl doctor` checks ssh availability and version,
|
|
131
132
|
SFTP availability, vault backend safety, database and config paths, and
|
|
132
133
|
Python dependencies.
|
|
@@ -150,6 +151,12 @@ Codex, and other agents can manage servers safely: agents get structured
|
|
|
150
151
|
JSON output and connection error classification, while the AskPass
|
|
151
152
|
architecture keeps secrets out of the model's context by design.
|
|
152
153
|
|
|
154
|
+
The skill also encodes conversation UX, not just commands: agents answer
|
|
155
|
+
inventory questions from a single `--json` call, hand interactive shells to
|
|
156
|
+
*your* terminal and proxy follow-up commands through `exec` (`connect`
|
|
157
|
+
refuses to run without a TTY instead of hanging), and clean up a background
|
|
158
|
+
UI with `serverctl ui --stop`.
|
|
159
|
+
|
|
153
160
|
Deploy the skill with one line:
|
|
154
161
|
|
|
155
162
|
```bash
|
|
File without changes
|
{ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/assets/ui/app.js
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
|
{ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/importer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/ssh_config.py
RENAMED
|
File without changes
|
{ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/ssh_runner.py
RENAMED
|
File without changes
|
{ssh_server_manager-0.4.0 → ssh_server_manager-0.4.1}/scripts/ssh_server_manager/validation.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|