Initial commit

This commit is contained in:
Yaser
2026-08-13 20:20:47 +03:30
commit 78a0c832d7
33 changed files with 3399 additions and 0 deletions

72
README.md Normal file
View File

@@ -0,0 +1,72 @@
# Fibitex Rango
Fork of [OpenWare Rango](https://github.com/openware/rango) based on upstream release **3.1.3**, patched for the Fibitex / OpenDAX 2.6 stack (Barong RS256 JWT + incremental order book on market switch).
## Fibitex documentation
| Doc | Topic |
|-----|--------|
| [`Docs/Fibitex-staging-deploy.md`](../Docs/Fibitex-staging-deploy.md) | Staging deploy |
| [`Alvand-P/README.md`](../Alvand-P/README.md) | Compose & image `custom/rango:1` |
| [`Docs/README.md`](../Docs/README.md) | Central docs |
| [`Docs/06-setup-local.md`](../Docs/06-setup-local.md) | Local setup |
Upstream repository: https://github.com/openware/rango
Base version: **3.1.3** (Fibitex build: see `VERSION`)
## Fibitex patches
1. **RS256 JWT (Barong 2.6)** — upstream 3.1.2+ accepts EdDSA only; this fork validates Barong `JWT_PUBLIC_KEY` (RSA) via `pkg/auth/validator.go`.
2. **Order book on market switch** — replay `ob-snap` and buffered `ob-inc` before adding the client to the topic, so live increments cannot arrive before the snapshot (`pkg/routing/hub.go`).
## Docker image
Alvand-P uses: `custom/rango:1`
```powershell
cd Rango
docker build -t custom/rango:1 .
```
## Alvand-P configuration
In `Alvand-P/config/app.local.yml`:
```yaml
images:
rango: custom/rango:1
```
Restart:
```powershell
cd Alvand-P
docker compose up -d rango
```
## Environment
Same as upstream Rango — see upstream README sections for RabbitMQ, scopes, and WebSocket paths (`/public`, `/private`).
| Variable | Fibitex note |
| -------- | ------------ |
| `JWT_PUBLIC_KEY` | Base64 PEM of Barong RSA public key (from `rango.env`) |
| `LOG_LEVEL` | Use `info` temporarily to see `JWT validator mode: rsa` |
## Verify
After login on `www.app.local`:
- Order cancel / create updates in UI (private `order` stream)
- Switching markets loads order book without refresh
- No repeated `OrderBook increment received before snapshot` in browser console
---
## Upstream Rango (reference)
![Cryptocurrency Exchange Platform - OpenDAX](https://github.com/openware/meta/raw/main/images/github_opendax.png)
Rango is a general purpose websocket server which dispatches public and private messages from RabbitMQ. It is designed as a drop-in replacement of Ranger built in Ruby.
For full upstream documentation (metrics, scopes, RBAC, message format), see the [openware/rango README](https://github.com/openware/rango/blob/master/README.md).