Merge remote-tracking branch 'origin/feat/93' into integ
This commit is contained in:
@@ -929,6 +929,21 @@ class ServerEditor(QFrame):
|
||||
self.sidecar_warn.setWordWrap(True)
|
||||
self.sidecar_warn.hide()
|
||||
v.addWidget(self.sidecar_warn)
|
||||
# Shown when the sidecar config is group/other-accessible (#93): ssh-mcp
|
||||
# refuses to start unless it's 0600 / its dir 0700. One-click chmod fix.
|
||||
# POSIX only — hidden on Windows where modes don't apply.
|
||||
self.perm_warn = QLabel("")
|
||||
self.perm_warn.setStyleSheet(f"color: {WARN};")
|
||||
self.perm_warn.setWordWrap(True)
|
||||
self.perm_warn.hide()
|
||||
self.perm_fix_btn = QPushButton("Fix permissions")
|
||||
self.perm_fix_btn.setToolTip("chmod the config file to 0600 and its directory to 0700")
|
||||
self.perm_fix_btn.clicked.connect(self._fix_permissions)
|
||||
self.perm_fix_btn.hide()
|
||||
perm_row = QHBoxLayout()
|
||||
perm_row.addWidget(self.perm_warn, 1)
|
||||
perm_row.addWidget(self.perm_fix_btn)
|
||||
v.addLayout(perm_row)
|
||||
v.addWidget(self._lbl("Environment variables"))
|
||||
self.env = KeyValueTable(
|
||||
"Variable", "Value", on_change=self._emit, before_change=self._before_change
|
||||
@@ -1031,6 +1046,8 @@ class ServerEditor(QFrame):
|
||||
self.removed_flag_warn.hide()
|
||||
self.removed_flag_fix_btn.hide()
|
||||
self.sidecar_warn.hide()
|
||||
self.perm_warn.hide()
|
||||
self.perm_fix_btn.hide()
|
||||
self._loading = False
|
||||
return
|
||||
self.setEnabled(True)
|
||||
@@ -1121,6 +1138,8 @@ class ServerEditor(QFrame):
|
||||
self.removed_flag_warn.hide()
|
||||
self.removed_flag_fix_btn.hide()
|
||||
self.sidecar_warn.hide()
|
||||
self.perm_warn.hide()
|
||||
self.perm_fix_btn.hide()
|
||||
return
|
||||
_, notes = core.split_suspicious_args(self._current_arg_lines())
|
||||
if notes:
|
||||
@@ -1161,6 +1180,15 @@ class ServerEditor(QFrame):
|
||||
self.sidecar_warn.show()
|
||||
else:
|
||||
self.sidecar_warn.hide()
|
||||
# Sidecar filesystem permissions (#93). Real platform/fs; no-op on Windows.
|
||||
perm_warnings = core.sidecar_permission_warnings(stdio)
|
||||
if perm_warnings:
|
||||
self.perm_warn.setText("⚠ " + "\n".join(perm_warnings))
|
||||
self.perm_warn.show()
|
||||
self.perm_fix_btn.show()
|
||||
else:
|
||||
self.perm_warn.hide()
|
||||
self.perm_fix_btn.hide()
|
||||
|
||||
def _fix_args(self):
|
||||
if self._before_change:
|
||||
@@ -1181,6 +1209,23 @@ class ServerEditor(QFrame):
|
||||
self.env.load(migrated.get("env", {}))
|
||||
self.args.setPlainText("\n".join(migrated.get("args", [])))
|
||||
|
||||
def _fix_permissions(self):
|
||||
"""chmod the sidecar config to 0600 / its dir to 0700 (#93)."""
|
||||
stdio = {
|
||||
"command": self.command.text().strip(),
|
||||
"args": self._current_arg_lines(),
|
||||
"env": self.env.dump(),
|
||||
}
|
||||
target = core.sidecar_permission_fix_target(stdio)
|
||||
if target is None:
|
||||
return
|
||||
changed, note = core.fix_permissions(target)
|
||||
if not changed:
|
||||
# Surface the failure in-place rather than silently doing nothing.
|
||||
self.perm_warn.setText("⚠ " + (note or "could not change permissions"))
|
||||
return
|
||||
self._check_args() # re-check; the warning clears when perms are now tight
|
||||
|
||||
# --- dependency ------------------------------------------------------ #
|
||||
def refresh_dependency(self, auto_open=False):
|
||||
if not self.isEnabled():
|
||||
|
||||
Reference in New Issue
Block a user