mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-07 16:10:43 +00:00
Merged via squash.
Prepared head SHA: 63f6e416a9
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
41 lines
1.9 KiB
TypeScript
41 lines
1.9 KiB
TypeScript
import { createScopedDmSecurityResolver } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
import type { ChannelPlugin } from "openclaw/plugin-sdk/channel-core";
|
|
import { createAllowlistProviderRouteAllowlistWarningCollector } from "openclaw/plugin-sdk/channel-policy";
|
|
import type { ResolvedTelegramAccount } from "./accounts.js";
|
|
import { collectTelegramSecurityAuditFindings } from "./security-audit.js";
|
|
|
|
const resolveTelegramDmPolicy = createScopedDmSecurityResolver<ResolvedTelegramAccount>({
|
|
channelKey: "telegram",
|
|
resolvePolicy: (account) => account.config.dmPolicy,
|
|
resolveAllowFrom: (account) => account.config.allowFrom,
|
|
policyPathSuffix: "dmPolicy",
|
|
normalizeEntry: (raw) => raw.replace(/^(telegram|tg):/i, ""),
|
|
});
|
|
|
|
const collectTelegramSecurityWarnings =
|
|
createAllowlistProviderRouteAllowlistWarningCollector<ResolvedTelegramAccount>({
|
|
providerConfigPresent: (cfg) => cfg.channels?.telegram !== undefined,
|
|
resolveGroupPolicy: (account) => account.config.groupPolicy,
|
|
resolveRouteAllowlistConfigured: (account) =>
|
|
Boolean(account.config.groups) && Object.keys(account.config.groups ?? {}).length > 0,
|
|
restrictSenders: {
|
|
surface: "Telegram groups",
|
|
openScope: "any member in allowed groups",
|
|
groupPolicyPath: "channels.telegram.groupPolicy",
|
|
groupAllowFromPath: "channels.telegram.groupAllowFrom",
|
|
},
|
|
noRouteAllowlist: {
|
|
surface: "Telegram groups",
|
|
routeAllowlistPath: "channels.telegram.groups",
|
|
routeScope: "group",
|
|
groupPolicyPath: "channels.telegram.groupPolicy",
|
|
groupAllowFromPath: "channels.telegram.groupAllowFrom",
|
|
},
|
|
});
|
|
|
|
export const telegramSecurityAdapter = {
|
|
resolveDmPolicy: resolveTelegramDmPolicy,
|
|
collectWarnings: collectTelegramSecurityWarnings,
|
|
collectAuditFindings: collectTelegramSecurityAuditFindings,
|
|
} satisfies NonNullable<ChannelPlugin<ResolvedTelegramAccount>["security"]>;
|