Merge branch 'main' into pr-958
This commit is contained in:
@@ -13,8 +13,11 @@ def _resolve_path(path: str, workspace: Path | None = None, allowed_dir: Path |
|
|||||||
if not p.is_absolute() and workspace:
|
if not p.is_absolute() and workspace:
|
||||||
p = workspace / p
|
p = workspace / p
|
||||||
resolved = p.resolve()
|
resolved = p.resolve()
|
||||||
if allowed_dir and not str(resolved).startswith(str(allowed_dir.resolve())):
|
if allowed_dir:
|
||||||
raise PermissionError(f"Path {path} is outside allowed directory {allowed_dir}")
|
try:
|
||||||
|
resolved.relative_to(allowed_dir.resolve())
|
||||||
|
except ValueError:
|
||||||
|
raise PermissionError(f"Path {path} is outside allowed directory {allowed_dir}")
|
||||||
return resolved
|
return resolved
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -179,18 +179,21 @@ class SlackChannel(BaseChannel):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.debug("Slack reactions_add failed: {}", e)
|
logger.debug("Slack reactions_add failed: {}", e)
|
||||||
|
|
||||||
await self._handle_message(
|
try:
|
||||||
sender_id=sender_id,
|
await self._handle_message(
|
||||||
chat_id=chat_id,
|
sender_id=sender_id,
|
||||||
content=text,
|
chat_id=chat_id,
|
||||||
metadata={
|
content=text,
|
||||||
"slack": {
|
metadata={
|
||||||
"event": event,
|
"slack": {
|
||||||
"thread_ts": thread_ts,
|
"event": event,
|
||||||
"channel_type": channel_type,
|
"thread_ts": thread_ts,
|
||||||
}
|
"channel_type": channel_type,
|
||||||
},
|
}
|
||||||
)
|
},
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
logger.exception("Error handling Slack message from {}", sender_id)
|
||||||
|
|
||||||
def _is_allowed(self, sender_id: str, chat_id: str, channel_type: str) -> bool:
|
def _is_allowed(self, sender_id: str, chat_id: str, channel_type: str) -> bool:
|
||||||
if channel_type == "im":
|
if channel_type == "im":
|
||||||
|
|||||||
@@ -668,6 +668,33 @@ def channels_status():
|
|||||||
slack_config
|
slack_config
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# DingTalk
|
||||||
|
dt = config.channels.dingtalk
|
||||||
|
dt_config = f"client_id: {dt.client_id[:10]}..." if dt.client_id else "[dim]not configured[/dim]"
|
||||||
|
table.add_row(
|
||||||
|
"DingTalk",
|
||||||
|
"✓" if dt.enabled else "✗",
|
||||||
|
dt_config
|
||||||
|
)
|
||||||
|
|
||||||
|
# QQ
|
||||||
|
qq = config.channels.qq
|
||||||
|
qq_config = f"app_id: {qq.app_id[:10]}..." if qq.app_id else "[dim]not configured[/dim]"
|
||||||
|
table.add_row(
|
||||||
|
"QQ",
|
||||||
|
"✓" if qq.enabled else "✗",
|
||||||
|
qq_config
|
||||||
|
)
|
||||||
|
|
||||||
|
# Email
|
||||||
|
em = config.channels.email
|
||||||
|
em_config = em.imap_host if em.imap_host else "[dim]not configured[/dim]"
|
||||||
|
table.add_row(
|
||||||
|
"Email",
|
||||||
|
"✓" if em.enabled else "✗",
|
||||||
|
em_config
|
||||||
|
)
|
||||||
|
|
||||||
console.print(table)
|
console.print(table)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user