feat(channels): allow setting config dir for signal
Create a clawdbot configuration that sets the Signal config directory. This allows the config dir to be on a volume when clawdbot is running in docker
This commit is contained in:
parent
481bd333eb
commit
e34a8c39f8
@ -31,6 +31,8 @@ export type SignalAccountConfig = {
|
||||
httpPort?: number;
|
||||
/** signal-cli binary path (default: signal-cli). */
|
||||
cliPath?: string;
|
||||
/** Custom config/data directory for signal-cli (default: ~/.local/share/signal-cli). */
|
||||
configDir?: string;
|
||||
/** Auto-start signal-cli daemon (default: true if httpUrl not set). */
|
||||
autoStart?: boolean;
|
||||
/** Max time to wait for signal-cli daemon startup (ms, cap 120000). */
|
||||
|
||||
@ -499,6 +499,7 @@ export const SignalAccountSchemaBase = z
|
||||
httpHost: z.string().optional(),
|
||||
httpPort: z.number().int().positive().optional(),
|
||||
cliPath: ExecutableTokenSchema.optional(),
|
||||
configDir: z.string().optional(),
|
||||
autoStart: z.boolean().optional(),
|
||||
startupTimeoutMs: z.number().int().min(1000).max(120000).optional(),
|
||||
receiveMode: z.union([z.literal("on-start"), z.literal("manual")]).optional(),
|
||||
|
||||
@ -10,6 +10,8 @@ export type SignalDaemonOpts = {
|
||||
ignoreAttachments?: boolean;
|
||||
ignoreStories?: boolean;
|
||||
sendReadReceipts?: boolean;
|
||||
/** Custom config/data directory for signal-cli. */
|
||||
configDir?: string;
|
||||
runtime?: RuntimeEnv;
|
||||
};
|
||||
|
||||
@ -30,6 +32,9 @@ export function classifySignalCliLogLine(line: string): "log" | "error" | null {
|
||||
|
||||
function buildDaemonArgs(opts: SignalDaemonOpts): string[] {
|
||||
const args: string[] = [];
|
||||
if (opts.configDir) {
|
||||
args.push("-c", opts.configDir);
|
||||
}
|
||||
if (opts.account) {
|
||||
args.push("-a", opts.account);
|
||||
}
|
||||
|
||||
@ -45,6 +45,8 @@ export type MonitorSignalOpts = {
|
||||
autoStart?: boolean;
|
||||
startupTimeoutMs?: number;
|
||||
cliPath?: string;
|
||||
/** Custom config/data directory for signal-cli. */
|
||||
configDir?: string;
|
||||
httpHost?: string;
|
||||
httpPort?: number;
|
||||
receiveMode?: "on-start" | "manual";
|
||||
@ -295,10 +297,12 @@ export async function monitorSignalProvider(opts: MonitorSignalOpts = {}): Promi
|
||||
|
||||
if (autoStart) {
|
||||
const cliPath = opts.cliPath ?? accountInfo.config.cliPath ?? "signal-cli";
|
||||
const configDir = opts.configDir ?? accountInfo.config.configDir;
|
||||
const httpHost = opts.httpHost ?? accountInfo.config.httpHost ?? "127.0.0.1";
|
||||
const httpPort = opts.httpPort ?? accountInfo.config.httpPort ?? 8080;
|
||||
daemonHandle = spawnSignalDaemon({
|
||||
cliPath,
|
||||
configDir,
|
||||
account,
|
||||
httpHost,
|
||||
httpPort,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user