80 lines
3.2 KiB
Markdown
80 lines
3.2 KiB
Markdown
# taler-bank scripts
|
||
|
||
Container: **`taler-hacktivism-bank`** (libeufin-bank, GOA, **no IBAN**).
|
||
|
||
| File | Container path | User |
|
||
|------|----------------|------|
|
||
| `start_base_services_for_taler_bank.sh` | `/root/` | **root** |
|
||
| `start_bank.sh` | `/usr/local/bin/` | **libeufin-bank** |
|
||
| `check_bank-health.sh` | `/usr/local/bin/` | libeufin-bank / any |
|
||
| `landing-stats.sh` | `/usr/local/bin/` | root (in container) — writes `/var/www/bank-landing/stats.json` |
|
||
| `landing-stats-install.sh` | host only | root/podman — copies + runs + optional cron |
|
||
| `demo-withdraw-api.py` | `/usr/local/bin/` | root — loopback **:19096** |
|
||
| `install-demo-withdraw-api.sh` | host only | installs API + nginx + auto-confirm |
|
||
| `maintenance/raise-debit-limits.sh` | host or bank ctr | raise all accounts’ `debit_threshold` (dry-run; `--no-dry`) |
|
||
| `auto-confirm-withdrawals.sh` | `/usr/local/bin/` | root — **explorer-only** confirm loop |
|
||
| `refresh-demo-withdraw.sh` | `/usr/local/bin/` | refresh static `withdraw.uri` |
|
||
| `credit-account.sh` | host/ops | admin → user credit |
|
||
|
||
## Usage
|
||
|
||
```bash
|
||
# root in container
|
||
./start_base_services_for_taler_bank.sh
|
||
# then as libeufin-bank in /usr/local/bin:
|
||
./start_bank.sh --restart
|
||
```
|
||
|
||
## Landing stats (inside container)
|
||
|
||
```bash
|
||
# on koopa host — copy + run (writes /var/www/bank-landing/stats.json)
|
||
./landing-stats-install.sh
|
||
./landing-stats-install.sh --cron # every minute inside container (* * * * *)
|
||
./landing-stats-install.sh --run-only
|
||
```
|
||
|
||
Details + JSON schema: `configs/bank-landing/README.md`.
|
||
|
||
## Demo withdraw + auto-account API
|
||
|
||
`demo-withdraw-api.py` listens on **127.0.0.1:19096** (proxied by nginx on the landing):
|
||
|
||
| Path | Behaviour |
|
||
|------|-----------|
|
||
| `GET /demo-withdraw.json` | Mint one-shot withdraw from shared **`explorer`** pool; write `withdraw.uri` + watch ids |
|
||
| `GET /auto-account.json` | Public `POST /accounts` with generated **`goa-account-<random>`** user + password containing **pleasechangeme**; **balance GOA:0**; return credentials once |
|
||
|
||
Install / restart:
|
||
|
||
```bash
|
||
./install-demo-withdraw-api.sh
|
||
# Public checks:
|
||
curl -sS https://bank.hacktivism.ch/intro/demo-withdraw.json | head
|
||
curl -sS https://bank.hacktivism.ch/intro/auto-account.json | head # creates a real account
|
||
```
|
||
|
||
Requires **python3** in the bank container. Env: `BANK_URL`, `BANK_USER`/`BANK_PASS`
|
||
(or `/root/bank-explorer-password.txt`), `AMOUNT` (default `GOA:10` for shared withdraws).
|
||
|
||
### Auto-confirm (explorer only)
|
||
|
||
```bash
|
||
# loop inside container — refuses non-explorer unless ALLOW_NON_EXPLORER=1
|
||
auto-confirm-withdrawals.sh --loop 2
|
||
```
|
||
|
||
Only confirms withdrawals owned by **`explorer`** when status is `selected`
|
||
(community demo path). Does not confirm arbitrary customer withdraws.
|
||
|
||
**Stable ops (via `koopa-external` if LAN `koopa` is down):**
|
||
|
||
- One process only (`flock` on `/var/run/auto-confirm-withdrawals.lock`)
|
||
- `QUIET=1` + summary `tick checked=… selected=…` each loop
|
||
- Watch list capped (`WATCH_MAX=80`, prune of bloated `withdraw-watch.ids`)
|
||
- Status via `taler-integration/withdrawal-operation/{id}`
|
||
- Reinstall: `./install-demo-withdraw-api.sh` on host with podman access to `taler-hacktivism-bank`
|
||
|
||
## Config
|
||
|
||
See `configs/taler-hacktivism-bank/` and `configs/bank-landing/`.
|