Add interactive configuration for sweep thresholds and frequency
Introduce a new command `bash ops.sh configure-sweep` to interactively set and update auto-sweep parameters, including cold address, on-chain thresholds, and sweep frequency, while also updating the cron schedule and providing user-friendly feedback in `ops.sh sweep`. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 418bf6f8-212b-4bb0-a7a5-8231a061da4e Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 3c6bbb97-1029-4402-bba7-d04e3f992bd6 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/9f85e954-647c-46a5-90a7-396e495a805a/418bf6f8-212b-4bb0-a7a5-8231a061da4e/sPDHkg8 Replit-Helium-Checkpoint-Created: true
This commit is contained in:
@@ -155,20 +155,17 @@ SWEEP_CONF="$INFRA_DIR/sweep.conf"
|
||||
if [[ -n "$COLD_ADDRESS" ]]; then
|
||||
cat > "$SWEEP_CONF" <<CONF
|
||||
# Timmy Node — Auto-sweep configuration
|
||||
# Edit these values then run: bash /opt/timmy-node/sweep.sh
|
||||
# Change any value then run: bash ops.sh configure-sweep
|
||||
|
||||
# Cold Bitcoin address — sweep destination (required)
|
||||
COLD_ADDRESS=$COLD_ADDRESS
|
||||
|
||||
# Keep this many sats on-chain for channel ops (default: 300,000)
|
||||
KEEP_SATS=300000
|
||||
|
||||
# Minimum amount to sweep — ignore smaller surpluses (default: 50,000)
|
||||
MIN_SWEEP=50000
|
||||
SWEEP_CRON="0 3 * * *"
|
||||
SWEEP_FREQ_LABEL="daily at 3am UTC"
|
||||
CONF
|
||||
chmod 600 "$SWEEP_CONF"
|
||||
ok "Cold address saved to $SWEEP_CONF"
|
||||
info "Test your sweep config anytime: bash $INFRA_DIR/sweep.sh"
|
||||
info "Change thresholds or frequency anytime: bash $INFRA_DIR/ops.sh configure-sweep"
|
||||
else
|
||||
warn "No cold address provided — sweep is disabled."
|
||||
warn "Configure later: echo 'COLD_ADDRESS=bc1q...' >> $INFRA_DIR/sweep.conf"
|
||||
|
||||
@@ -115,16 +115,22 @@ case "${1:-help}" in
|
||||
|
||||
echo -e "\n${CYAN}── Sweep config ──────────────────────────────${NC}"
|
||||
if [[ -f "$SWEEP_CONF" ]]; then
|
||||
grep -v '^#' "$SWEEP_CONF" | grep -v '^$' || echo "(empty)"
|
||||
COLD_ADDRESS=""; KEEP_SATS=300000; MIN_SWEEP=50000
|
||||
SWEEP_FREQ_LABEL="daily at 3am UTC"; SWEEP_CRON="0 3 * * *"
|
||||
source "$SWEEP_CONF"
|
||||
echo " Cold address : ${COLD_ADDRESS:-(not set — sweep disabled)}"
|
||||
echo " Keep on-chain: ${KEEP_SATS} sats"
|
||||
echo " Min to sweep : ${MIN_SWEEP} sats"
|
||||
echo " Frequency : ${SWEEP_FREQ_LABEL}"
|
||||
else
|
||||
echo -e "${YELLOW}No sweep.conf found — sweep is disabled${NC}"
|
||||
echo " To enable: run lnd-init.sh, or create $SWEEP_CONF manually"
|
||||
echo -e " ${YELLOW}No sweep.conf found — sweep is disabled${NC}"
|
||||
echo " To configure: bash ops.sh configure-sweep"
|
||||
fi
|
||||
|
||||
echo -e "\n${CYAN}── Current on-chain balance ──────────────────${NC}"
|
||||
docker exec lnd lncli --network=mainnet walletbalance 2>/dev/null \
|
||||
| jq '{confirmed_balance, unconfirmed_balance}' \
|
||||
|| echo "LND not ready"
|
||||
|| echo " LND not ready"
|
||||
|
||||
echo -e "\n${CYAN}── Last 5 sweep log entries ──────────────────${NC}"
|
||||
if [[ -f "$SWEEP_LOG" && -s "$SWEEP_LOG" ]]; then
|
||||
@@ -135,6 +141,76 @@ case "${1:-help}" in
|
||||
echo ""
|
||||
;;
|
||||
|
||||
configure-sweep)
|
||||
SWEEP_CONF="$INFRA_DIR/sweep.conf"
|
||||
|
||||
# Load current values as defaults
|
||||
COLD_ADDRESS=""; KEEP_SATS=300000; MIN_SWEEP=50000
|
||||
SWEEP_CRON="0 3 * * *"; SWEEP_FREQ_LABEL="daily at 3am UTC"
|
||||
[[ -f "$SWEEP_CONF" ]] && source "$SWEEP_CONF"
|
||||
|
||||
echo -e "\n${CYAN}══════════════════════════════════════════${NC}"
|
||||
echo -e "${CYAN} Configure Auto-Sweep (Enter = keep current)${NC}"
|
||||
echo -e "${CYAN}══════════════════════════════════════════${NC}\n"
|
||||
|
||||
# Cold address
|
||||
echo -e " Current cold address: ${YELLOW}${COLD_ADDRESS:-(none)}${NC}"
|
||||
read -rp " New cold address: " INPUT
|
||||
[[ -n "$INPUT" ]] && COLD_ADDRESS="$INPUT"
|
||||
|
||||
# Keep threshold
|
||||
echo -e "\n Current keep-on-chain threshold: ${YELLOW}${KEEP_SATS} sats${NC}"
|
||||
read -rp " New keep threshold (sats): " INPUT
|
||||
[[ "$INPUT" =~ ^[0-9]+$ ]] && KEEP_SATS="$INPUT"
|
||||
|
||||
# Min sweep floor
|
||||
echo -e "\n Current minimum sweep amount: ${YELLOW}${MIN_SWEEP} sats${NC}"
|
||||
read -rp " New minimum sweep (sats): " INPUT
|
||||
[[ "$INPUT" =~ ^[0-9]+$ ]] && MIN_SWEEP="$INPUT"
|
||||
|
||||
# Frequency
|
||||
echo -e "\n Current frequency: ${YELLOW}${SWEEP_FREQ_LABEL}${NC}"
|
||||
echo " Choose a new frequency (Enter to keep current):"
|
||||
echo " 1) Hourly"
|
||||
echo " 2) Every 6 hours"
|
||||
echo " 3) Daily at 3am UTC"
|
||||
echo " 4) Weekly (Sunday 3am UTC)"
|
||||
read -rp " Choice [1-4]: " FREQ_CHOICE
|
||||
case "$FREQ_CHOICE" in
|
||||
1) SWEEP_CRON="0 * * * *"; SWEEP_FREQ_LABEL="hourly" ;;
|
||||
2) SWEEP_CRON="0 */6 * * *"; SWEEP_FREQ_LABEL="every 6 hours" ;;
|
||||
3) SWEEP_CRON="0 3 * * *"; SWEEP_FREQ_LABEL="daily at 3am UTC" ;;
|
||||
4) SWEEP_CRON="0 3 * * 0"; SWEEP_FREQ_LABEL="weekly (Sunday 3am UTC)" ;;
|
||||
esac
|
||||
|
||||
# Write sweep.conf — quote values that may contain spaces
|
||||
cat > "$SWEEP_CONF" <<CONF
|
||||
# Timmy Node — Auto-sweep configuration
|
||||
# Edit manually or run: bash ops.sh configure-sweep
|
||||
|
||||
COLD_ADDRESS="$COLD_ADDRESS"
|
||||
KEEP_SATS=$KEEP_SATS
|
||||
MIN_SWEEP=$MIN_SWEEP
|
||||
SWEEP_CRON="$SWEEP_CRON"
|
||||
SWEEP_FREQ_LABEL="$SWEEP_FREQ_LABEL"
|
||||
CONF
|
||||
chmod 600 "$SWEEP_CONF"
|
||||
|
||||
# Reinstall sweep cron with updated schedule
|
||||
crontab -l 2>/dev/null | grep -v "timmy-node.*sweep" | crontab - || true
|
||||
(crontab -l 2>/dev/null; echo "# Timmy Node — auto-sweep ($SWEEP_FREQ_LABEL)") | crontab -
|
||||
(crontab -l 2>/dev/null; echo "$SWEEP_CRON bash $INFRA_DIR/sweep.sh > /dev/null 2>&1") | crontab -
|
||||
|
||||
echo -e "\n${GREEN}Sweep configured:${NC}"
|
||||
echo " Cold address : ${COLD_ADDRESS:-(not set — sweep disabled)}"
|
||||
echo " Keep on-chain: ${KEEP_SATS} sats"
|
||||
echo " Min to sweep : ${MIN_SWEEP} sats"
|
||||
echo " Frequency : ${SWEEP_FREQ_LABEL}"
|
||||
echo ""
|
||||
echo -e " Run now to test: ${CYAN}bash ops.sh run-sweep${NC}"
|
||||
echo ""
|
||||
;;
|
||||
|
||||
run-sweep)
|
||||
echo -e "${CYAN}Running sweep now...${NC}"
|
||||
bash "$INFRA_DIR/sweep.sh"
|
||||
@@ -154,6 +230,7 @@ case "${1:-help}" in
|
||||
echo " bash ops.sh update — pull latest Docker images"
|
||||
echo " bash ops.sh backup — backup LND channel state"
|
||||
echo " bash ops.sh sweep — show sweep config, balance, and last sweep log"
|
||||
echo " bash ops.sh configure-sweep — interactively set address, thresholds, frequency"
|
||||
echo " bash ops.sh run-sweep — run sweep immediately (outside of cron schedule)"
|
||||
echo ""
|
||||
;;
|
||||
|
||||
Reference in New Issue
Block a user