mirror of
https://github.com/lightninglabs/lightning-terminal.git
synced 2026-08-19 13:18:38 +02:00
This commit introduces a comprehensive Starlark scripting system that enables custom automation with access to all subdaemon RPCs (lnd, loop, pool, faraday, taproot-assets). Scripts use native LND macaroons for permission enforcement. Key features: - Starlark execution engine with sandboxed resource limits - Standard builtins: print, log, sleep, now, json_encode/decode - HTTP GET requests with URL allowlisting - Persistent KV store with bucket-based permissions - LND event subscriptions for long-running daemon scripts - Script CRUD operations with macaroon baking - Execution history and running script tracking - Complete CLI commands (litcli scripts ...) Database schema: - scripts: Store script definitions with macaroon permissions - script_executions: Audit trail for script runs - script_kv_store: Persistent key-value storage for scripts - running_scripts: Track currently running scripts Security model: - Each script has an LND macaroon baked with specific permissions - RPC calls from scripts include this macaroon in the header - LND/subdaemons validate permissions natively - URL and bucket allowlists validated at runtime
45 lines
1.3 KiB
YAML
45 lines
1.3 KiB
YAML
type: google.api.Service
|
|
config_version: 3
|
|
|
|
http:
|
|
rules:
|
|
|
|
# Scripts CRUD
|
|
- selector: litrpc.Scripts.CreateScript
|
|
post: "/v1/scripts"
|
|
body: "*"
|
|
- selector: litrpc.Scripts.UpdateScript
|
|
put: "/v1/scripts/{name}"
|
|
body: "*"
|
|
- selector: litrpc.Scripts.DeleteScript
|
|
delete: "/v1/scripts/{name}"
|
|
- selector: litrpc.Scripts.GetScript
|
|
get: "/v1/scripts/{name}"
|
|
- selector: litrpc.Scripts.ListScripts
|
|
get: "/v1/scripts"
|
|
|
|
# Script execution
|
|
- selector: litrpc.Scripts.StartScript
|
|
post: "/v1/scripts/{name}/start"
|
|
body: "*"
|
|
- selector: litrpc.Scripts.StopScript
|
|
post: "/v1/scripts/{name}/stop"
|
|
body: "*"
|
|
- selector: litrpc.Scripts.ListRunningScripts
|
|
get: "/v1/scripts/running"
|
|
- selector: litrpc.Scripts.ValidateScript
|
|
post: "/v1/scripts/validate"
|
|
body: "*"
|
|
- selector: litrpc.Scripts.GetExecutionHistory
|
|
get: "/v1/scripts/history"
|
|
|
|
# KV Store
|
|
- selector: litrpc.Scripts.KVGet
|
|
get: "/v1/scripts/kv/{bucket}/{key}"
|
|
- selector: litrpc.Scripts.KVPut
|
|
put: "/v1/scripts/kv/{bucket}/{key}"
|
|
body: "*"
|
|
- selector: litrpc.Scripts.KVDelete
|
|
delete: "/v1/scripts/kv/{bucket}/{key}"
|
|
- selector: litrpc.Scripts.KVList
|
|
get: "/v1/scripts/kv/{bucket}"
|